@@ -14,6 +14,7 @@ class DynamicInputFrames:
1414 arb_fees : Optional [Any ] = None
1515 lp_supply : Optional [Any ] = None
1616 reclamm_price_ratio_updates : Optional [Any ] = None
17+ oracle_prices : Optional [Any ] = None
1718
1819
1920class DynamicInputArrays (NamedTuple ):
@@ -25,6 +26,7 @@ class DynamicInputArrays(NamedTuple):
2526 arb_fees : jnp .ndarray
2627 lp_supply : jnp .ndarray
2728 reclamm_price_ratio_updates : jnp .ndarray
29+ oracle_prices : jnp .ndarray = jnp .ones ((1 , 1 ))
2830
2931
3032def default_dynamic_input_flags () -> dict :
@@ -37,6 +39,7 @@ def default_dynamic_input_flags() -> dict:
3739 "has_dynamic_arb_fees" : False ,
3840 "has_lp_supply" : False ,
3941 "has_reclamm_price_ratio_updates" : False ,
42+ "has_oracle_prices" : False ,
4043 }
4144
4245
@@ -55,6 +58,7 @@ def dynamic_input_flags_from_frames(dynamic_input_frames: Optional[DynamicInputF
5558 "has_reclamm_price_ratio_updates" : (
5659 dynamic_input_frames .reclamm_price_ratio_updates is not None
5760 ),
61+ "has_oracle_prices" : dynamic_input_frames .oracle_prices is not None ,
5862 }
5963 flags ["use_dynamic_inputs" ] = any (flags .values ())
6064 return flags
@@ -83,6 +87,7 @@ def empty_dynamic_input_arrays() -> DynamicInputArrays:
8387 lp_supply = jnp .ones ((1 ,)),
8488 # Columns: has_event, target_price_ratio, end_step, start_price_ratio_override
8589 reclamm_price_ratio_updates = jnp .array ([[0.0 , 0.0 , 0.0 , jnp .nan ]]),
90+ oracle_prices = jnp .ones ((1 , 1 )),
8691 )
8792
8893
@@ -117,9 +122,14 @@ def resolve_dynamic_input_components(
117122 ),
118123 "reclamm_price_ratio_updates" : (
119124 arrays .reclamm_price_ratio_updates
120- if dynamic_input_flags [ "has_reclamm_price_ratio_updates" ]
125+ if dynamic_input_flags . get ( "has_reclamm_price_ratio_updates" , False )
121126 else empty_dynamic_input_arrays ().reclamm_price_ratio_updates
122127 ),
128+ "oracle_prices" : (
129+ arrays .oracle_prices
130+ if dynamic_input_flags .get ("has_oracle_prices" , False )
131+ else empty_dynamic_input_arrays ().oracle_prices
132+ ),
123133 }
124134
125135
@@ -160,6 +170,7 @@ def materialize_dynamic_inputs(
160170 "has_dynamic_arb_fees" : True ,
161171 "has_lp_supply" : True ,
162172 "has_reclamm_price_ratio_updates" : True ,
173+ "has_oracle_prices" : True ,
163174 }
164175 else :
165176 flags = resolve_dynamic_input_flags (dynamic_inputs , dynamic_input_flags )
@@ -192,4 +203,10 @@ def materialize_dynamic_inputs(
192203 scan_len ,
193204 dtype ,
194205 ),
206+ oracle_prices = _broadcast_dynamic_input_leaf (
207+ "oracle_prices" ,
208+ resolved ["oracle_prices" ],
209+ scan_len ,
210+ dtype ,
211+ ),
195212 )
0 commit comments