@domfi/sdk 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/LICENSE +16 -0
  2. package/README.md +786 -0
  3. package/dist/actions.cjs +1 -0
  4. package/dist/actions.d.cts +17 -0
  5. package/dist/actions.d.ts +17 -0
  6. package/dist/actions.js +1 -0
  7. package/dist/api.cjs +1 -0
  8. package/dist/api.d.cts +664 -0
  9. package/dist/api.d.ts +664 -0
  10. package/dist/api.js +0 -0
  11. package/dist/chunk-2VSPOLVO.js +1 -0
  12. package/dist/chunk-5YZVCHRU.js +0 -0
  13. package/dist/chunk-77XMXAXE.js +1 -0
  14. package/dist/chunk-7OVWNPZQ.js +1 -0
  15. package/dist/chunk-BMYMNNJK.js +1 -0
  16. package/dist/chunk-C5Y2WM7C.js +1 -0
  17. package/dist/chunk-C64LJM7D.js +2 -0
  18. package/dist/chunk-CLOFJTBP.js +1 -0
  19. package/dist/chunk-CMREWGOI.js +1 -0
  20. package/dist/chunk-D5VE2O4F.js +1 -0
  21. package/dist/chunk-LDE3JHVE.js +1 -0
  22. package/dist/chunk-N4Q67DTE.js +1 -0
  23. package/dist/chunk-SZE5DE54.js +1 -0
  24. package/dist/chunk-XHQVWI2J.js +1 -0
  25. package/dist/chunk-YU5DN3PI.js +1 -0
  26. package/dist/config.cjs +2 -0
  27. package/dist/config.d.cts +132 -0
  28. package/dist/config.d.ts +132 -0
  29. package/dist/config.js +1 -0
  30. package/dist/contracts.cjs +1 -0
  31. package/dist/contracts.d.cts +13073 -0
  32. package/dist/contracts.d.ts +13073 -0
  33. package/dist/contracts.js +1 -0
  34. package/dist/delegation.cjs +1 -0
  35. package/dist/delegation.d.cts +7 -0
  36. package/dist/delegation.d.ts +7 -0
  37. package/dist/delegation.js +0 -0
  38. package/dist/errors.cjs +3 -0
  39. package/dist/errors.d.cts +155 -0
  40. package/dist/errors.d.ts +155 -0
  41. package/dist/errors.js +3 -0
  42. package/dist/index.cjs +2 -0
  43. package/dist/index.d.cts +216 -0
  44. package/dist/index.d.ts +216 -0
  45. package/dist/index.js +1 -0
  46. package/dist/math.cjs +1 -0
  47. package/dist/math.d.cts +273 -0
  48. package/dist/math.d.ts +273 -0
  49. package/dist/math.js +1 -0
  50. package/dist/position-BnhSFyGe.d.cts +56 -0
  51. package/dist/position-BnhSFyGe.d.ts +56 -0
  52. package/dist/rawSchemas-MAT7EZCV.js +1 -0
  53. package/dist/referrals.cjs +1 -0
  54. package/dist/referrals.d.cts +66 -0
  55. package/dist/referrals.d.ts +66 -0
  56. package/dist/referrals.js +1 -0
  57. package/dist/serde.cjs +1 -0
  58. package/dist/serde.d.cts +24 -0
  59. package/dist/serde.d.ts +24 -0
  60. package/dist/serde.js +1 -0
  61. package/dist/token.cjs +1 -0
  62. package/dist/token.d.cts +32 -0
  63. package/dist/token.d.ts +32 -0
  64. package/dist/token.js +0 -0
  65. package/dist/trading.cjs +1 -0
  66. package/dist/trading.d.cts +20 -0
  67. package/dist/trading.d.ts +20 -0
  68. package/dist/trading.js +1 -0
  69. package/dist/types-7s13ZSql.d.ts +533 -0
  70. package/dist/types-BK6dYOXr.d.cts +118 -0
  71. package/dist/types-CMtixBIP.d.cts +464 -0
  72. package/dist/types-DB1r_Ppi.d.ts +464 -0
  73. package/dist/types-DDgJiEFg.d.ts +780 -0
  74. package/dist/types-DJBX-p4X.d.cts +780 -0
  75. package/dist/types-DQft82W7.d.cts +533 -0
  76. package/dist/types-DhCzEwnS.d.ts +118 -0
  77. package/dist/types-veTDfbhq.d.ts +436 -0
  78. package/dist/types-x1MvxSdy.d.cts +436 -0
  79. package/dist/units-BYd75H7U.d.cts +22 -0
  80. package/dist/units-BYd75H7U.d.ts +22 -0
  81. package/dist/units.cjs +1 -0
  82. package/dist/units.d.cts +248 -0
  83. package/dist/units.d.ts +248 -0
  84. package/dist/units.js +1 -0
  85. package/dist/valuation.cjs +1 -0
  86. package/dist/valuation.d.cts +5 -0
  87. package/dist/valuation.d.ts +5 -0
  88. package/dist/valuation.js +1 -0
  89. package/dist/vault.cjs +1 -0
  90. package/dist/vault.d.cts +34 -0
  91. package/dist/vault.d.ts +34 -0
  92. package/dist/vault.js +1 -0
  93. package/package.json +181 -0
package/dist/index.cjs ADDED
@@ -0,0 +1,2 @@
1
+ 'use strict';var s=require('valibot'),mt=require('@domfi/sdk/errors'),viem=require('viem'),units=require('@domfi/sdk/units');function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var s__namespace=/*#__PURE__*/_interopNamespace(s);var mt__namespace=/*#__PURE__*/_interopNamespace(mt);var My=Object.defineProperty;var _y=(e,n)=>()=>(e&&(n=e(e=0)),n);var Vy=(e,n)=>{for(var t in n)My(e,t,{get:n[t],enumerable:true});};var im={};Vy(im,{rawSchemas:()=>wP});function un(e){return s__namespace.looseObject({data:e,freshness:tu,readiness:iu})}function Xa(e){return s__namespace.looseObject({data:s__namespace.array(e),pagination:Za,freshness:tu,readiness:iu})}var tu,Za,eP,nP,Zp,tP,Jp,iP,rP,aP,oP,sP,nm,tm,uP,dP,lP,cP,pP,Qp,mP,fP,yP,em,Di,gP,bP,TP,hP,iu,wP,rm=_y(()=>{tu=s__namespace.looseObject({source:s__namespace.string(),generated_at:s__namespace.string(),indexed_block:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))),chain_head_block:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))),lag_blocks:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))),cache_status:s__namespace.optional(s__namespace.nullable(s__namespace.string())),cache_age_seconds:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())))}),Za=s__namespace.looseObject({cursor:s__namespace.nullable(s__namespace.string()),next_cursor:s__namespace.nullable(s__namespace.string()),has_next:s__namespace.boolean(),limit:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),eP=s__namespace.looseObject({trading:s__namespace.string(),trading_storage:s__namespace.string(),pairs_storage:s__namespace.string(),pair_infos:s__namespace.string()}),nP=s__namespace.looseObject({min_leverage:s__namespace.string(),max_leverage:s__namespace.string(),maker_max_leverage:s__namespace.string(),min_lev_position:s__namespace.string(),group_max_collateral:s__namespace.string(),max_allowed_collateral:s__namespace.optional(s__namespace.nullable(s__namespace.string())),max_negative_pnl_on_open_p:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(100)))),max_sl_p:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(100)))),liq_margin_threshold_p:s__namespace.optional(s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(100)))),market_orders_timeout:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),max_trades_per_pair:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),max_pending_market_orders:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),Zp=s__namespace.looseObject({maker_fee_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),taker_fee_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),usage_fee_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),utilization_threshold_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),maker_max_leverage:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),vault_fee_percent:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),tP=s__namespace.looseObject({opening:Zp,closing:Zp}),Jp=s__namespace.looseObject({pair_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),group_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),fee_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),symbol:s__namespace.string(),price_asset:s__namespace.string(),base_symbol:s__namespace.string(),quote_symbol:s__namespace.string(),feed_id:s__namespace.string(),price_feed:s__namespace.string(),contracts:eP,is_listed:s__namespace.boolean(),is_paused:s__namespace.boolean(),is_done:s__namespace.boolean(),oracle_fee_wei:s__namespace.string(),constraints:nP,fees:tP}),iP=s__namespace.looseObject({acc_per_oi_long:s__namespace.string(),acc_per_oi_short:s__namespace.string(),last_funding_rate:s__namespace.string(),max_funding_fee_per_block:s__namespace.string(),spring_factor:s__namespace.string(),hill_inflection_point:s__namespace.string(),hill_pos_scale:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(65535)),hill_neg_scale:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(65535)),s_factor_up_scale_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(65535)),s_factor_down_scale_p:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(65535)),last_oi_delta:s__namespace.string(),last_update_block:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0),s__namespace.maxValue(4294967295)),as_of_block:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0)),last_trade_price:s__namespace.string(),oi_long:s__namespace.string(),oi_short:s__namespace.string(),oi_cap:s__namespace.string(),group_collateral_long:s__namespace.optional(s__namespace.string()),group_collateral_short:s__namespace.optional(s__namespace.string())}),rP=s__namespace.looseObject({pair_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),oi_long:s__namespace.string(),oi_short:s__namespace.string(),oi_max:s__namespace.string(),oi_delta:s__namespace.string(),last_funding_1h:s__namespace.string(),last_funding_8h:s__namespace.string(),last_funding_24h:s__namespace.string(),last_funding_1y:s__namespace.string(),funding_fee_long:s__namespace.string(),funding_fee_short:s__namespace.string(),funding_fee_rate:s__namespace.string(),funding_rate_1h:s__namespace.string(),funding_rate_8h:s__namespace.string(),funding_rate_24h:s__namespace.string(),funding_rate_1y:s__namespace.string(),cumulative_volume:s__namespace.string(),volume_24h:s__namespace.string(),raw_state:s__namespace.optional(s__namespace.nullable(iP))}),aP=s__namespace.looseObject({asset:s__namespace.string(),product_id:s__namespace.string(),price:s__namespace.string(),block_timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),oP=s__namespace.looseObject({asset:s__namespace.string(),pair_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),open:s__namespace.string(),high:s__namespace.string(),low:s__namespace.string(),close:s__namespace.nullable(s__namespace.string()),head_price:s__namespace.nullable(s__namespace.string()),head_time:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),open_time:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),close_time:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))}),sP=s__namespace.looseObject({asset:s__namespace.string(),product_id:s__namespace.string(),pair_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),price:s__namespace.string(),publish_id:s__namespace.nullable(s__namespace.string()),block_number:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),tx_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),log_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),block_timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),nm=s__namespace.looseObject({wallet:s__namespace.string(),pair_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),trade_id:s__namespace.string()}),tm=s__namespace.looseObject({kind:s__namespace.string(),trade_id:s__namespace.nullable(s__namespace.string()),order_id:s__namespace.string(),event_type:s__namespace.string(),pair_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),buy_side:s__namespace.nullable(s__namespace.boolean()),open_price:s__namespace.nullable(s__namespace.string()),wanted_price:s__namespace.nullable(s__namespace.string()),collateral:s__namespace.nullable(s__namespace.string()),initial_collateral:s__namespace.nullable(s__namespace.string()),leverage:s__namespace.nullable(s__namespace.string()),trade_notional:s__namespace.nullable(s__namespace.string()),tp:s__namespace.nullable(s__namespace.string()),sl:s__namespace.nullable(s__namespace.string()),init_funding_fee:s__namespace.optional(s__namespace.nullable(s__namespace.string())),target_trade_id:s__namespace.nullable(s__namespace.string()),close_percentage:s__namespace.nullable(s__namespace.string()),remove_amount:s__namespace.nullable(s__namespace.string()),timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),limit_index:s__namespace.nullable(s__namespace.string()),transaction_hash:s__namespace.nullable(s__namespace.string())}),uP=s__namespace.looseObject({lifecycle_key:s__namespace.string(),order_id:s__namespace.string(),status:s__namespace.string(),wallet:s__namespace.string(),pair_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),action:s__namespace.string(),order_type:s__namespace.string(),trigger_order_type:s__namespace.nullable(s__namespace.string()),trade_id:s__namespace.nullable(s__namespace.string()),position_ref:s__namespace.nullable(nm),limit_index:s__namespace.nullable(s__namespace.string()),initiated_event_type:s__namespace.nullable(s__namespace.string()),terminal_event_type:s__namespace.nullable(s__namespace.string()),latest_event_type:s__namespace.nullable(s__namespace.string()),initiated_tx_hash:s__namespace.nullable(s__namespace.string()),executed_tx_hash:s__namespace.nullable(s__namespace.string()),initiated_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),executed_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),timeout_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),is_pending:s__namespace.boolean(),is_cancelled:s__namespace.boolean(),cancel_reason:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),dP=s__namespace.looseObject({trade_id:s__namespace.string(),pair_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),buy_side:s__namespace.boolean(),open_price:s__namespace.string(),close_price:s__namespace.nullable(s__namespace.string()),initial_collateral:s__namespace.string(),collateral:s__namespace.string(),closing_collateral:s__namespace.nullable(s__namespace.string()),leverage:s__namespace.string(),trade_notional:s__namespace.string(),open_event_type:s__namespace.string(),close_reason:s__namespace.nullable(s__namespace.string()),percent_profit:s__namespace.nullable(s__namespace.string()),realized_pnl_usdc:s__namespace.nullable(s__namespace.string()),usdc_sent_to_trader:s__namespace.nullable(s__namespace.string()),open_timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),close_timestamp:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),trade_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),limit_index:s__namespace.nullable(s__namespace.string()),funding_fee:s__namespace.nullable(s__namespace.string()),status:s__namespace.string(),open_tx_hash:s__namespace.nullable(s__namespace.string()),close_tx_hash:s__namespace.nullable(s__namespace.string()),timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())}),lP=s__namespace.looseObject({order_id:s__namespace.string(),status:s__namespace.string(),wallet:s__namespace.string(),pair_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),action:s__namespace.string(),order_type:s__namespace.string(),trade_id:s__namespace.nullable(s__namespace.string()),initiated_trade_id:s__namespace.nullable(s__namespace.string()),terminal_trade_id:s__namespace.nullable(s__namespace.string()),position_ref:s__namespace.nullable(nm),limit_index:s__namespace.nullable(s__namespace.string()),initiated_event_type:s__namespace.nullable(s__namespace.string()),terminal_event_type:s__namespace.nullable(s__namespace.string()),latest_event_type:s__namespace.nullable(s__namespace.string()),initiated_tx_hash:s__namespace.nullable(s__namespace.string()),executed_tx_hash:s__namespace.nullable(s__namespace.string()),initiated_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),executed_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),timeout_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),initiated_tx_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),initiated_log_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),executed_tx_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),executed_log_index:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),requested_remove_amount:s__namespace.nullable(s__namespace.string()),executed_remove_amount:s__namespace.nullable(s__namespace.string()),is_pending:s__namespace.boolean(),is_cancelled:s__namespace.boolean(),cancel_reason:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),timestamp:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),timeout_available:s__namespace.boolean()}),cP=s__namespace.looseObject({id:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),time:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),block_number:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),tx_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),log_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),event_type:s__namespace.string(),order_id:s__namespace.nullable(s__namespace.string()),transaction_hash:s__namespace.nullable(s__namespace.string()),collateral:s__namespace.nullable(s__namespace.string()),leverage:s__namespace.nullable(s__namespace.string()),open_price:s__namespace.nullable(s__namespace.string()),close_price:s__namespace.nullable(s__namespace.string()),tp:s__namespace.nullable(s__namespace.string()),sl:s__namespace.nullable(s__namespace.string()),percentage_closed:s__namespace.nullable(s__namespace.string()),percent_profit:s__namespace.nullable(s__namespace.string()),usdc_sent_to_trader:s__namespace.nullable(s__namespace.string()),pnl_delta_usdc:s__namespace.nullable(s__namespace.string()),top_up_amount:s__namespace.nullable(s__namespace.string()),remove_amount:s__namespace.nullable(s__namespace.string()),new_leverage:s__namespace.nullable(s__namespace.string()),wanted_price:s__namespace.nullable(s__namespace.string()),cancel_reason:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))}),pP=s__namespace.looseObject({trade_id:s__namespace.string(),events:s__namespace.array(cP)}),Qp=s__namespace.looseObject({code_id:s__namespace.union([s__namespace.pipe(s__namespace.string(),s__namespace.regex(/^(?:0|[1-9]\d*)$/)),s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger(),s__namespace.minValue(0))]),code:s__namespace.string(),created_at:s__namespace.string()}),mP=s__namespace.looseObject({referee:s__namespace.string(),code:s__namespace.string(),bound_at:s__namespace.string()}),fP=s__namespace.looseObject({network:s__namespace.string(),api_time:s__namespace.string(),chain_head_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),indexed_block:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),lag_blocks:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),rpc_available:s__namespace.boolean(),postgres_available:s__namespace.boolean(),cache_available:s__namespace.boolean(),degraded:s__namespace.boolean(),degraded_reasons:s__namespace.array(s__namespace.string()),api_schema_hash:s__namespace.string()}),yP=s__namespace.looseObject({pair_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),trade_id:s__namespace.string()}),em=s__namespace.looseObject({ref:yP,status:s__namespace.picklist(["found","missing","pending"]),position:s__namespace.nullable(tm),pending_reasons:s__namespace.array(s__namespace.string())}),Di=s__namespace.looseObject({time:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),block_number:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),tx_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),log_index:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),tx_hash:s__namespace.nullable(s__namespace.string()),id:s__namespace.nullable(s__namespace.string()),op_type:s__namespace.nullable(s__namespace.string()),assets:s__namespace.nullable(s__namespace.string()),shares:s__namespace.nullable(s__namespace.string()),current_epoch:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),unlock_epoch:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger())),lock_duration_seconds:s__namespace.nullable(s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()))}),gP=s__namespace.looseObject({acc_pnl_per_token:s__namespace.string(),current_epoch:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),current_value_locked:s__namespace.string(),epoch_start:s__namespace.pipe(s__namespace.number(),s__namespace.safeInteger()),total_shares:s__namespace.string(),apr:s__namespace.string(),share_price:s__namespace.string(),collateralization_ratio:s__namespace.string(),over_collateralization:s__namespace.string()}),bP=s__namespace.looseObject({total_assets:s__namespace.string(),total_shares:s__namespace.string(),total_locked_shares:s__namespace.string(),locked_deposits:s__namespace.array(Di),unlocked_deposits:s__namespace.array(Di),pending_withdraws:s__namespace.array(Di),history:s__namespace.array(Di),history_pagination:Za}),TP=s__namespace.looseObject({history:s__namespace.array(Di),pagination:Za}),hP=s__namespace.looseObject({tx_hash:s__namespace.string(),events:s__namespace.array(Di)}),iu=s__namespace.looseObject({status:s__namespace.picklist(["ready","degraded","unsafe"]),unsafe_reasons:s__namespace.array(s__namespace.string()),degraded_reasons:s__namespace.array(s__namespace.string())});wP={"account.orders":Xa(uP),"account.position":un(em),"account.positions":Xa(tm),"account.positionsBatch":un(s__namespace.array(em)),"account.trades":Xa(dP),"markets.get":un(Jp),"markets.list":un(s__namespace.array(Jp)),"markets.state":un(rP),"orders.get":un(lP),"prices.candles":un(s__namespace.array(oP)),"prices.head":un(s__namespace.array(aP)),"prices.ticks":Xa(sP),"referrals.getBinding":mP,"referrals.getCode":Qp,"referrals.lookup":Qp,"status.get":un(fP),"trades.events":s__namespace.looseObject({data:pP,pagination:Za,freshness:tu,readiness:iu}),"vault.account":un(bP),"vault.accountHistory":un(TP),"vault.stats":un(gP),"vault.transactionEvents":un(hP)};});var Hi={id:"base",chainId:8453,name:"Base",registryAddress:"0xe438360464EaDa40b7921C993322bD4dA8881103",contracts:{DomfiTrading:"0x7447cb5350a096364A13bEAf77916dfB35db9445",DomfiTradingStorage:"0x608ff95777F419040a3b1E42ed73dD3EFf42Cc24",DomfiPairsStorage:"0x444079DDCaFd4feE3812E2fF79c5F74a1F4f9Be1",DomfiPairInfos:"0x256fD248cDc91A6B098eEE2580f313fdCaFa2059",DomfiOracle:"0x1aB9c3A2E1A09f2D06bf4A75d1721c7e113B8D4D",DomfiVault:"0xA194082Aabb75Dd1Ca9Dc1BA573A5528BeB8c2Fb",DomfiLockedDepositNft:"0x11765119eC66fb434447fd56e9041746c8eCbF85"},collateral:{symbol:"USDC",decimals:6,tokenAddress:"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",tradingStorageSpender:"0x608ff95777F419040a3b1E42ed73dD3EFf42Cc24",vaultSpender:"0xA194082Aabb75Dd1Ca9Dc1BA573A5528BeB8c2Fb"},oracleStaleThresholdMs:6e4,blockTimeMs:2e3,apiBaseUrl:"https://api.domination.finance"},$i={id:"base-sepolia",chainId:84532,name:"Base Sepolia",registryAddress:"0xa518Cb338f71E9BB2EB9bBb6E02b2B0cC5C29840",contracts:{DomfiTrading:"0x40478F0B348837EFdd07dac83073016da409ea93",DomfiTradingStorage:"0xd62c446636e49C70acf7E47b2907381C829BC412",DomfiPairsStorage:"0x3D5EE28985F8C382cCB112B9054f89d054b6f23E",DomfiPairInfos:"0xAB619663B87ddAD53f4c23A34cfb79AFA06A1EcA",DomfiOracle:"0x47959A2f92335587cf2956dA450b956dA6ca3A84",DomfiVault:"0x0f6171b19f02989485c168536aDE0d9CE5e804fb",DomfiLockedDepositNft:"0x5F78d9A47fdcd0A2c1a23cdB08544f4577c6DFde"},collateral:{symbol:"MockCollateral",decimals:6,tokenAddress:"0xE0843F149471c2e90E995BaEFA5EF94DC82bF809",tradingStorageSpender:"0xd62c446636e49C70acf7E47b2907381C829BC412",vaultSpender:"0x0f6171b19f02989485c168536aDE0d9CE5e804fb"},oracleStaleThresholdMs:6e4,blockTimeMs:2e3,apiBaseUrl:"https://testnet-api.domination.finance"},$r={mainnet:Hi,testnet:$i};var sd=[{type:"constructor",inputs:[{name:"name",type:"string",internalType:"string"},{name:"symbol",type:"string",internalType:"string"},{name:"registryAddress",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"nonpayable"},{type:"function",name:"approve",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"balanceOf",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"burn",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getApproved",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"isApprovedForAll",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"operator",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"mint",inputs:[{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"ownerOf",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"safeTransferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"data",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setApprovalForAll",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"approved",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"supportsInterface",inputs:[{name:"interfaceId",type:"bytes4",internalType:"bytes4"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"tokenByIndex",inputs:[{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"tokenOfOwnerByIndex",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"tokenURI",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"approved",type:"address",indexed:true,internalType:"address"},{name:"tokenId",type:"uint256",indexed:true,internalType:"uint256"}],anonymous:false},{type:"event",name:"ApprovalForAll",inputs:[{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"operator",type:"address",indexed:true,internalType:"address"},{name:"approved",type:"bool",indexed:false,internalType:"bool"}],anonymous:false},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:true,internalType:"address"},{name:"to",type:"address",indexed:true,internalType:"address"},{name:"tokenId",type:"uint256",indexed:true,internalType:"uint256"}],anonymous:false},{type:"error",name:"ERC721EnumerableForbiddenBatchMint",inputs:[]},{type:"error",name:"ERC721IncorrectOwner",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InsufficientApproval",inputs:[{name:"operator",type:"address",internalType:"address"},{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOperator",inputs:[{name:"operator",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC721InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC721NonexistentToken",inputs:[{name:"tokenId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC721OutOfBoundsIndex",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"index",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotVault",inputs:[{name:"caller",type:"address",internalType:"address"}]}];var ud=[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"accPnlPerTokenUsed",inputs:[],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"accRewardsPerToken",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"allowance",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"approve",inputs:[{name:"spender",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"asset",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"availableAssets",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"balanceOf",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"cancelWithdrawRequest",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"},{name:"unlockEpoch",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"collateralizationP",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"convertToAssets",inputs:[{name:"shares",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"convertToShares",inputs:[{name:"assets",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"currentBalance",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"currentEpoch",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"currentEpochOpenPnl",inputs:[],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"currentEpochStart",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"currentMaxSupply",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"dailyAccPnlDeltaPerToken",inputs:[],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"decimals",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"pure"},{type:"function",name:"deposit",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"depositWithDiscountAndLock",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"lockDuration",type:"uint32",internalType:"uint32"},{name:"receiver",type:"address",internalType:"address"},{name:"minShares",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"depositWithSlippage",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"minShares",type:"uint256",internalType:"uint256"}],outputs:[{name:"shares",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"distributeReward",inputs:[{name:"assets",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getLockedDeposit",inputs:[{name:"depositId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiVault.LockedDeposit",components:[{name:"owner",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"assetsDeposited",type:"uint256",internalType:"uint256"},{name:"assetsDiscount",type:"uint256",internalType:"uint256"},{name:"atTimestamp",type:"uint32",internalType:"uint32"},{name:"lockDuration",type:"uint32",internalType:"uint32"}]}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"assetAddress",type:"address",internalType:"address"},{name:"registryAddress",type:"address",internalType:"address"},{name:"tokenName",type:"string",internalType:"string"},{name:"tokenSymbol",type:"string",internalType:"string"},{name:"initialMaxAccOpenPnlDeltaPerToken",type:"uint256",internalType:"uint256"},{name:"initialMaxDailyAccPnlDeltaPerToken",type:"uint256",internalType:"uint256"},{name:"initialMaxSupplyIncreaseDailyP",type:"uint16",internalType:"uint16"},{name:"initialMaxDiscountP",type:"uint16",internalType:"uint16"},{name:"initialMaxDiscountThresholdP",type:"uint16",internalType:"uint16"},{name:"initialWithdrawLockThresholdsP",type:"uint16[2]",internalType:"uint16[2]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"lastDailyAccPnlDeltaResetTs",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"lastMaxSupplyUpdateTs",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"lockDiscountP",inputs:[{name:"collatP",type:"uint256",internalType:"uint256"},{name:"lockDuration",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"lockedDeposits",inputs:[{name:"depositId",type:"uint256",internalType:"uint256"}],outputs:[{name:"owner",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"assetsDeposited",type:"uint256",internalType:"uint256"},{name:"assetsDiscount",type:"uint256",internalType:"uint256"},{name:"atTimestamp",type:"uint32",internalType:"uint32"},{name:"lockDuration",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"lockedDepositsCount",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"makeWithdrawRequest",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"owner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"marketCap",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxAccOpenPnlDeltaPerToken",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxAccPnlPerToken",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxDailyAccPnlDeltaPerToken",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxDeposit",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxDiscountP",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"maxDiscountThresholdP",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"maxMint",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxRedeem",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"maxSupplyIncreaseDailyP",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"maxWithdraw",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"mint",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"mintWithDiscountAndLock",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"lockDuration",type:"uint32",internalType:"uint32"},{name:"receiver",type:"address",internalType:"address"},{name:"maxAssetsDeposited",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"mintWithSlippage",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"maxAssets",type:"uint256",internalType:"uint256"}],outputs:[{name:"assets",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"name",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"previewDeposit",inputs:[{name:"assets",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"previewMint",inputs:[{name:"shares",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"previewRedeem",inputs:[{name:"shares",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"previewWithdraw",inputs:[{name:"assets",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"receiveAssets",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"user",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"redeem",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"redeemWithSlippage",inputs:[{name:"shares",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"},{name:"minAssets",type:"uint256",internalType:"uint256"}],outputs:[{name:"assets",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"view"},{type:"function",name:"sendAssets",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"shareToAssetsPrice",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"symbol",inputs:[],outputs:[{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"totalAccPnl",inputs:[],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"totalAssets",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalClosedPnl",inputs:[],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"totalDiscounts",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalLockedDiscounts",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalSharesBeingWithdrawn",inputs:[{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"shares",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"to",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"tryNewOpenPnlRequestOrEpoch",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"tryResetDailyAccPnlDelta",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"tryUpdateCurrentMaxSupply",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"tvl",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"unlockDeposit",inputs:[{name:"depositId",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateAccPnlPerTokenUsed",inputs:[{name:"prevOpenPnl",type:"int256",internalType:"int256"},{name:"newOpenPnl",type:"int256",internalType:"int256"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"nonpayable"},{type:"function",name:"updateMaxAccOpenPnlDeltaPerToken",inputs:[{name:"newMaxAccOpenPnlDeltaPerToken",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateMaxDailyAccPnlDeltaPerToken",inputs:[{name:"newMaxDailyAccPnlDeltaPerToken",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateMaxDiscountP",inputs:[{name:"newMaxDiscountP",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateMaxDiscountThresholdP",inputs:[{name:"newMaxDiscountThresholdP",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateMaxSupplyIncreaseDailyP",inputs:[{name:"newMaxSupplyIncreaseDailyP",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateWithdrawLockThresholdsP",inputs:[{name:"newWithdrawLockThresholdsP",type:"uint16[2]",internalType:"uint16[2]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"withdraw",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"withdrawEpochsTimelock",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"withdrawLockThresholdsP",inputs:[{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"withdrawPrices",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"withdrawEpoch",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"withdrawRequests",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"withdrawEpoch",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"withdrawWithSlippage",inputs:[{name:"assets",type:"uint256",internalType:"uint256"},{name:"receiver",type:"address",internalType:"address"},{name:"owner",type:"address",internalType:"address"},{name:"maxShares",type:"uint256",internalType:"uint256"}],outputs:[{name:"shares",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"event",name:"AccPnlPerTokenUsedUpdated",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"newEpoch",type:"uint256",indexed:true,internalType:"uint256"},{name:"prevOpenPnl",type:"int256",indexed:false,internalType:"int256"},{name:"newOpenPnl",type:"int256",indexed:false,internalType:"int256"},{name:"newEpochOpenPnl",type:"int256",indexed:false,internalType:"int256"},{name:"newAccPnlPerTokenUsed",type:"int256",indexed:false,internalType:"int256"}],anonymous:false},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"spender",type:"address",indexed:true,internalType:"address"},{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"AssetsReceived",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"user",type:"address",indexed:true,internalType:"address"},{name:"assets",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"AssetsSent",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"receiver",type:"address",indexed:true,internalType:"address"},{name:"assets",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"CurrentMaxSupplyUpdated",inputs:[{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"DailyAccPnlDeltaReset",inputs:[{name:"prevDailyAccPnlDeltaPerToken",type:"int256",indexed:false,internalType:"int256"}],anonymous:false},{type:"event",name:"Deposit",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"assets",type:"uint256",indexed:false,internalType:"uint256"},{name:"shares",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"DepositLocked",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"depositId",type:"uint256",indexed:false,internalType:"uint256"},{name:"d",type:"tuple",indexed:false,internalType:"struct IDomfiVault.LockedDeposit",components:[{name:"owner",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"assetsDeposited",type:"uint256",internalType:"uint256"},{name:"assetsDiscount",type:"uint256",internalType:"uint256"},{name:"atTimestamp",type:"uint32",internalType:"uint32"},{name:"lockDuration",type:"uint32",internalType:"uint32"}]}],anonymous:false},{type:"event",name:"DepositUnlocked",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"receiver",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"depositId",type:"uint256",indexed:false,internalType:"uint256"},{name:"d",type:"tuple",indexed:false,internalType:"struct IDomfiVault.LockedDeposit",components:[{name:"owner",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"assetsDeposited",type:"uint256",internalType:"uint256"},{name:"assetsDiscount",type:"uint256",internalType:"uint256"},{name:"atTimestamp",type:"uint32",internalType:"uint32"},{name:"lockDuration",type:"uint32",internalType:"uint32"}]}],anonymous:false},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"MaxAccOpenPnlDeltaPerTokenUpdated",inputs:[{name:"newMaxAccOpenPnlDeltaPerToken",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"MaxDailyAccPnlDeltaPerTokenUpdated",inputs:[{name:"newMaxDailyAccPnlDeltaPerToken",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"MaxDiscountPUpdated",inputs:[{name:"newMaxDiscountP",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"MaxDiscountThresholdPUpdated",inputs:[{name:"newMaxDiscountThresholdP",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"MaxSupplyIncreaseDailyPUpdated",inputs:[{name:"newMaxSupplyIncreaseDailyP",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"OpenPnlCallFailed",inputs:[],anonymous:false},{type:"event",name:"RewardDistributed",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"assets",type:"uint256",indexed:false,internalType:"uint256"},{name:"accRewardsPerToken",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"ShareToAssetsPriceUpdated",inputs:[{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:true,internalType:"address"},{name:"to",type:"address",indexed:true,internalType:"address"},{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"Withdraw",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"receiver",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"assets",type:"uint256",indexed:false,internalType:"uint256"},{name:"shares",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"WithdrawCanceled",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"shares",type:"uint256",indexed:false,internalType:"uint256"},{name:"currEpoch",type:"uint16",indexed:false,internalType:"uint16"},{name:"unlockEpoch",type:"uint16",indexed:true,internalType:"uint16"}],anonymous:false},{type:"event",name:"WithdrawLockThresholdsPUpdated",inputs:[{name:"value",type:"uint16[2]",indexed:false,internalType:"uint16[2]"}],anonymous:false},{type:"event",name:"WithdrawRequested",inputs:[{name:"sender",type:"address",indexed:true,internalType:"address"},{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"shares",type:"uint256",indexed:false,internalType:"uint256"},{name:"currEpoch",type:"uint16",indexed:false,internalType:"uint16"},{name:"unlockEpoch",type:"uint16",indexed:true,internalType:"uint16"}],anonymous:false},{type:"error",name:"AboveBalance",inputs:[]},{type:"error",name:"AboveMaxDeposit",inputs:[]},{type:"error",name:"AboveMaxMint",inputs:[]},{type:"error",name:"AboveWithdrawAmount",inputs:[]},{type:"error",name:"DepositNotUnlocked",inputs:[{name:"id",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC20InsufficientAllowance",inputs:[{name:"spender",type:"address",internalType:"address"},{name:"allowance",type:"uint256",internalType:"uint256"},{name:"needed",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC20InsufficientBalance",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"balance",type:"uint256",internalType:"uint256"},{name:"needed",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC20InvalidApprover",inputs:[{name:"approver",type:"address",internalType:"address"}]},{type:"error",name:"ERC20InvalidReceiver",inputs:[{name:"receiver",type:"address",internalType:"address"}]},{type:"error",name:"ERC20InvalidSender",inputs:[{name:"sender",type:"address",internalType:"address"}]},{type:"error",name:"ERC20InvalidSpender",inputs:[{name:"spender",type:"address",internalType:"address"}]},{type:"error",name:"ERC4626ExceededMaxDeposit",inputs:[{name:"receiver",type:"address",internalType:"address"},{name:"assets",type:"uint256",internalType:"uint256"},{name:"max",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC4626ExceededMaxMint",inputs:[{name:"receiver",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"max",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC4626ExceededMaxRedeem",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"shares",type:"uint256",internalType:"uint256"},{name:"max",type:"uint256",internalType:"uint256"}]},{type:"error",name:"ERC4626ExceededMaxWithdraw",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"assets",type:"uint256",internalType:"uint256"},{name:"max",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"MaxDailyPnlReached",inputs:[]},{type:"error",name:"NoActiveDiscount",inputs:[]},{type:"error",name:"NoDiscount",inputs:[]},{type:"error",name:"NotAllowed",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotCallbacks",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotEnoughAssets",inputs:[]},{type:"error",name:"NotGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotOpenPnl",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NullAmount",inputs:[]},{type:"error",name:"NullPrice",inputs:[]},{type:"error",name:"PendingWithdrawal",inputs:[{name:"from",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeCastOverflowedUintDowncast",inputs:[{name:"bits",type:"uint8",internalType:"uint8"},{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeCastOverflowedUintToInt",inputs:[{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeERC20FailedOperation",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"WaitNextEpochStart",inputs:[]},{type:"error",name:"WrongLockDuration",inputs:[{name:"duration",type:"uint256",internalType:"uint256"},{name:"minLock",type:"uint256",internalType:"uint256"},{name:"maxLock",type:"uint256",internalType:"uint256"}]},{type:"error",name:"WrongParams",inputs:[]}];var dd=[{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call[]",name:"calls",type:"tuple[]"}],name:"aggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes[]",name:"returnData",type:"bytes[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call3[]",name:"calls",type:"tuple[]"}],name:"aggregate3",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall3.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bool",name:"allowFailure",type:"bool"},{internalType:"uint256",name:"value",type:"uint256"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call3Value[]",name:"calls",type:"tuple[]"}],name:"aggregate3Value",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall3.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call[]",name:"calls",type:"tuple[]"}],name:"blockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall3.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[],name:"getBasefee",outputs:[{internalType:"uint256",name:"basefee",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],name:"getBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"getBlockNumber",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getChainId",outputs:[{internalType:"uint256",name:"chainid",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockCoinbase",outputs:[{internalType:"address",name:"coinbase",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockDifficulty",outputs:[{internalType:"uint256",name:"difficulty",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockGasLimit",outputs:[{internalType:"uint256",name:"gaslimit",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentBlockTimestamp",outputs:[{internalType:"uint256",name:"timestamp",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"addr",type:"address"}],name:"getEthBalance",outputs:[{internalType:"uint256",name:"balance",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getLastBlockHash",outputs:[{internalType:"bytes32",name:"blockHash",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call[]",name:"calls",type:"tuple[]"}],name:"tryAggregate",outputs:[{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall3.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"bool",name:"requireSuccess",type:"bool"},{components:[{internalType:"address",name:"target",type:"address"},{internalType:"bytes",name:"callData",type:"bytes"}],internalType:"struct Multicall3.Call[]",name:"calls",type:"tuple[]"}],name:"tryBlockAndAggregate",outputs:[{internalType:"uint256",name:"blockNumber",type:"uint256"},{internalType:"bytes32",name:"blockHash",type:"bytes32"},{components:[{internalType:"bool",name:"success",type:"bool"},{internalType:"bytes",name:"returnData",type:"bytes"}],internalType:"struct Multicall3.Result[]",name:"returnData",type:"tuple[]"}],stateMutability:"payable",type:"function"}];var D={DomfiLockedDepositNft:sd,Multicall3:dd,DomfiTrading:[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"DELEGATION_TYPEHASH",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"DOMAIN_SEPARATOR",inputs:[],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"cancelOpenLimitOrder",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"checkNoPendingTrigger",inputs:[{name:"tradingStorage",type:"address",internalType:"contract IDomfiTradingStorage"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"checkNoPendingTriggers",inputs:[{name:"tradingStorage",type:"address",internalType:"contract IDomfiTradingStorage"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"closeTradeMarket",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"closeP",type:"uint16",internalType:"uint16"},{name:"slippageP",type:"uint256",internalType:"uint256"},{name:"wantedPrice",type:"uint192",internalType:"uint192"}],outputs:[],stateMutability:"payable"},{type:"function",name:"delegatableNonces",inputs:[{name:"",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"delegatedAction",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"callData",type:"bytes",internalType:"bytes"}],outputs:[{name:"",type:"bytes",internalType:"bytes"}],stateMutability:"payable"},{type:"function",name:"delegations",inputs:[{name:"delegator",type:"address",internalType:"address"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"done",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"handleTradeMarketTimeout",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"initialize",inputs:[{name:"registryAddress",type:"address",internalType:"contract IDomfiRegistry"},{name:"initialMaxAllowedCollateral",type:"uint256",internalType:"uint256"},{name:"initialMarketOrdersTimeout",type:"uint16",internalType:"uint16"},{name:"initialTriggerTimeout",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isDone",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPaused",inputs:[],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"marketOrdersTimeout",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"maxAllowedCollateral",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"msgSender",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"openTrade",inputs:[{name:"t",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"},{name:"slippageP",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"payable"},{type:"function",name:"pause",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"view"},{type:"function",name:"removeCollateral",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"removeAmount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"payable"},{type:"function",name:"removeDelegate",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setDelegate",inputs:[{name:"newDelegate",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setDelegateWithSignature",inputs:[{name:"delegator",type:"address",internalType:"address"},{name:"delegate",type:"address",internalType:"address"},{name:"nonce",type:"uint256",internalType:"uint256"},{name:"expiry",type:"uint256",internalType:"uint256"},{name:"v",type:"uint8",internalType:"uint8"},{name:"r",type:"bytes32",internalType:"bytes32"},{name:"s",type:"bytes32",internalType:"bytes32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMarketOrdersTimeout",inputs:[{name:"newMarketOrdersTimeout",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxAllowedCollateral",inputs:[{name:"newMaxAllowedCollateral",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTriggerTimeout",inputs:[{name:"newTriggerTimeout",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"topUpCollateral",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"topUpAmount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"triggerTimeout",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"updateOpenLimitOrder",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"price",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateSl",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"newSl",type:"uint192",internalType:"uint192"}],outputs:[],stateMutability:"payable"},{type:"function",name:"updateTp",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"newTp",type:"uint192",internalType:"uint192"}],outputs:[],stateMutability:"payable"},{type:"event",name:"DelegateAdded",inputs:[{name:"delegator",type:"address",indexed:true,internalType:"address"},{name:"newDelegate",type:"address",indexed:true,internalType:"address"}],anonymous:false},{type:"event",name:"DelegateRemoved",inputs:[{name:"delegator",type:"address",indexed:true,internalType:"address"},{name:"oldDelegate",type:"address",indexed:true,internalType:"address"}],anonymous:false},{type:"event",name:"Done",inputs:[{name:"done",type:"bool",indexed:false,internalType:"bool"}],anonymous:false},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"MarketCloseFailed",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"}],anonymous:false},{type:"event",name:"MarketCloseOrderInitiated",inputs:[{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:false,internalType:"uint16"},{name:"closePercentage",type:"uint16",indexed:false,internalType:"uint16"}],anonymous:false},{type:"event",name:"MarketCloseTimeoutExecuted",inputs:[{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"order",type:"tuple",indexed:false,internalType:"struct IDomfiTradingStorage.PendingMarketOrder",components:[{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"wantedPrice",type:"uint192",internalType:"uint192"},{name:"slippageP",type:"uint32",internalType:"uint32"},{name:"trade",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"percentage",type:"uint16",internalType:"uint16"}]}],anonymous:false},{type:"event",name:"MarketOpenOrderInitiated",inputs:[{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"}],anonymous:false},{type:"event",name:"MarketOpenTimeoutExecuted",inputs:[{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"order",type:"tuple",indexed:false,internalType:"struct IDomfiTradingStorage.PendingMarketOrder",components:[{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"wantedPrice",type:"uint192",internalType:"uint192"},{name:"slippageP",type:"uint32",internalType:"uint32"},{name:"trade",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"percentage",type:"uint16",internalType:"uint16"}]}],anonymous:false},{type:"event",name:"MarketOrdersTimeoutUpdated",inputs:[{name:"newMarketOrdersTimeout",type:"uint16",indexed:false,internalType:"uint16"}],anonymous:false},{type:"event",name:"MaxAllowedCollateralUpdated",inputs:[{name:"newMaxAllowedCollateral",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"OpenLimitCanceled",inputs:[{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"event",name:"OpenLimitPlaced",inputs:[{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"wantedPrice",type:"uint192",indexed:false,internalType:"uint192"}],anonymous:false},{type:"event",name:"OpenLimitPlaced",inputs:[{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"order",type:"tuple",indexed:false,internalType:"struct IDomfiTradingStorage.OpenLimitOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],anonymous:false},{type:"event",name:"OpenLimitUpdated",inputs:[{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"newPrice",type:"uint192",indexed:false,internalType:"uint192"},{name:"newTp",type:"uint192",indexed:false,internalType:"uint192"},{name:"newSl",type:"uint192",indexed:false,internalType:"uint192"}],anonymous:false},{type:"event",name:"OracleFeeCharged",inputs:[{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:false,internalType:"uint16"},{name:"oracleFee",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"Paused",inputs:[{name:"paused",type:"bool",indexed:false,internalType:"bool"}],anonymous:false},{type:"event",name:"RemoveCollateralInitiated",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:false,internalType:"uint16"},{name:"removeAmount",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"RemoveCollateralRejected",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:false,internalType:"uint16"},{name:"removeAmount",type:"uint256",indexed:false,internalType:"uint256"},{name:"reason",type:"string",indexed:false,internalType:"string"}],anonymous:false},{type:"event",name:"SlUpdated",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"newSl",type:"uint192",indexed:false,internalType:"uint192"}],anonymous:false},{type:"event",name:"TopUpCollateralExecuted",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"topUpAmount",type:"uint256",indexed:false,internalType:"uint256"},{name:"newLeverage",type:"uint32",indexed:false,internalType:"uint32"}],anonymous:false},{type:"event",name:"TpUpdated",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"newTp",type:"uint192",indexed:false,internalType:"uint192"}],anonymous:false},{type:"event",name:"TriggerTimeoutUpdated",inputs:[{name:"newTriggerTimeout",type:"uint16",indexed:false,internalType:"uint16"}],anonymous:false},{type:"error",name:"AboveMaxAllowedCollateral",inputs:[]},{type:"error",name:"AlreadyMarketClosed",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{type:"error",name:"BelowMinLevPos",inputs:[]},{type:"error",name:"DelegateForbidden",inputs:[]},{type:"error",name:"DelegateReentrant",inputs:[]},{type:"error",name:"DelegatedActionFailed",inputs:[]},{type:"error",name:"ExposureLimits",inputs:[]},{type:"error",name:"InsufficientOracleFee",inputs:[]},{type:"error",name:"InvalidCallData",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidNonce",inputs:[]},{type:"error",name:"InvalidOracleFee",inputs:[]},{type:"error",name:"InvalidSignature",inputs:[]},{type:"error",name:"IsDone",inputs:[]},{type:"error",name:"IsPaused",inputs:[]},{type:"error",name:"MaxPendingMarketOrdersReached",inputs:[{name:"trader",type:"address",internalType:"address"}]},{type:"error",name:"MaxTradesPerPairReached",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}]},{type:"error",name:"NoDelegate",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NoLimitFound",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{type:"error",name:"NoTradeFound",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{type:"error",name:"NoTradeToTimeoutFound",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"NotDelegate",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotYourOrder",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"},{name:"trader",type:"address",internalType:"address"}]},{type:"error",name:"NullAddr",inputs:[]},{type:"error",name:"PairNotListed",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}]},{type:"error",name:"SafeCastOverflowedUintDowncast",inputs:[{name:"bits",type:"uint8",internalType:"uint8"},{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SignatureExpired",inputs:[]},{type:"error",name:"TriggerPending",inputs:[{name:"sender",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{type:"error",name:"WaitTimeout",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}]},{type:"error",name:"WrongLeverage",inputs:[{name:"leverage",type:"uint32",internalType:"uint32"}]},{type:"error",name:"WrongParams",inputs:[]},{type:"error",name:"WrongSL",inputs:[]},{type:"error",name:"WrongTP",inputs:[]}],DomfiTradingStorage:[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"claimFees",inputs:[{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"claimOracleFees",inputs:[{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"devFees",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"firstEmptyOpenLimitIndex",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"firstEmptyTradeIndex",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getOpenLimitOrder",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiTradingStorage.OpenLimitOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],stateMutability:"view"},{type:"function",name:"getOpenLimitOrderByIndex",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiTradingStorage.OpenLimitOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],stateMutability:"view"},{type:"function",name:"getOpenLimitOrders",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple[]",internalType:"struct IDomfiTradingStorage.OpenLimitOrder[]",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],stateMutability:"view"},{type:"function",name:"getOpenTrade",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]}],stateMutability:"view"},{type:"function",name:"getOpenTradeInfo",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiTradingStorage.TradeInfo",components:[{name:"tradeId",type:"uint256",internalType:"uint256"},{name:"oiNotional",type:"uint256",internalType:"uint256"},{name:"tpLastUpdated",type:"uint256",internalType:"uint256"},{name:"slLastUpdated",type:"uint256",internalType:"uint256"},{name:"initialLeverage",type:"uint32",internalType:"uint32"},{name:"createdAt",type:"uint32",internalType:"uint32"},{name:"beingMarketClosed",type:"bool",internalType:"bool"}]}],stateMutability:"view"},{type:"function",name:"getPairOpenInterestInfo",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"uint256",internalType:"uint256"},{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getPendingOrderIds",inputs:[{name:"trader",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256[]",internalType:"uint256[]"}],stateMutability:"view"},{type:"function",name:"getPendingRemoveCollateral",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiTradingStorage.PendingRemoveCollateral",components:[{name:"removeAmount",type:"uint256",internalType:"uint256"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]}],stateMutability:"view"},{type:"function",name:"handleClosingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"latestPrice",type:"uint256",internalType:"uint256"},{name:"leveragedPositionSize",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"isBuy",type:"bool",internalType:"bool"}],outputs:[{name:"devFee",type:"uint256",internalType:"uint256"},{name:"vaultFee",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"handleOpeningFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"latestPrice",type:"uint256",internalType:"uint256"},{name:"leveragedPositionSize",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"isBuy",type:"bool",internalType:"bool"}],outputs:[{name:"devFee",type:"uint256",internalType:"uint256"},{name:"vaultFee",type:"uint256",internalType:"uint256"}],stateMutability:"nonpayable"},{type:"function",name:"handleOracleFee",inputs:[{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"payable"},{type:"function",name:"hasOpenLimitOrder",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"registryAddress",type:"address",internalType:"contract IDomfiRegistry"},{name:"usdcAddress",type:"address",internalType:"address"},{name:"initialMaxTradesPerPair",type:"uint8",internalType:"uint8"},{name:"initialMaxPendingMarketOrders",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"maxPendingMarketOrders",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"maxTradesPerPair",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"openInterest",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"openLimitOrderIds",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"orderIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"openLimitOrdersCount",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"openTrades",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"tradeIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"openTradesCount",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"openTradesInfo",inputs:[{name:"",type:"address",internalType:"address"},{name:"",type:"uint16",internalType:"uint16"},{name:"",type:"uint8",internalType:"uint8"}],outputs:[{name:"tradeId",type:"uint256",internalType:"uint256"},{name:"oiNotional",type:"uint256",internalType:"uint256"},{name:"tpLastUpdated",type:"uint256",internalType:"uint256"},{name:"slLastUpdated",type:"uint256",internalType:"uint256"},{name:"initialLeverage",type:"uint32",internalType:"uint32"},{name:"createdAt",type:"uint32",internalType:"uint32"},{name:"beingMarketClosed",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"oracleFees",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"orderTriggerBlock",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pairLimitOrders",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}],stateMutability:"view"},{type:"function",name:"pairTraders",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pairTradersArray",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"address[]",internalType:"address[]"}],stateMutability:"view"},{type:"function",name:"pairTradersCount",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pairTradersId",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingAutomationOrders",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}],stateMutability:"view"},{type:"function",name:"pendingMarketCloseCount",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"pendingMarketOpenCount",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"pendingMarketOrders",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"wantedPrice",type:"uint192",internalType:"uint192"},{name:"slippageP",type:"uint32",internalType:"uint32"},{name:"trade",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"percentage",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"pendingOrderIds",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingOrderIdsCount",inputs:[{name:"trader",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pendingRemoveCollaterals",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[{name:"removeAmount",type:"uint256",internalType:"uint256"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"view"},{type:"function",name:"setMaxOpenInterest",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newMaxOpenInterest",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxOpenInterestArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newMaxOpenInterests",type:"uint256[]",internalType:"uint256[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxPendingMarketOrders",inputs:[{name:"newMaxPendingMarketOrders",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxTradesPerPair",inputs:[{name:"newMaxTradesPerPair",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setTrigger",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storeOpenLimitOrder",inputs:[{name:"o",type:"tuple",internalType:"struct IDomfiTradingStorage.OpenLimitOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storePendingAutomationOrder",inputs:[{name:"automationOrder",type:"tuple",internalType:"struct IDomfiTradingStorage.PendingAutomationOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}]},{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storePendingMarketOrder",inputs:[{name:"order",type:"tuple",internalType:"struct IDomfiTradingStorage.PendingMarketOrder",components:[{name:"blockNumber",type:"uint256",internalType:"uint256"},{name:"wantedPrice",type:"uint192",internalType:"uint192"},{name:"slippageP",type:"uint32",internalType:"uint32"},{name:"trade",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"percentage",type:"uint16",internalType:"uint16"}]},{name:"id",type:"uint256",internalType:"uint256"},{name:"open",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storePendingRemoveCollateral",inputs:[{name:"request",type:"tuple",internalType:"struct IDomfiTradingStorage.PendingRemoveCollateral",components:[{name:"removeAmount",type:"uint256",internalType:"uint256"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storeTrade",inputs:[{name:"trade",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]},{name:"tradeInfo",type:"tuple",internalType:"struct IDomfiTradingStorage.TradeInfo",components:[{name:"tradeId",type:"uint256",internalType:"uint256"},{name:"oiNotional",type:"uint256",internalType:"uint256"},{name:"tpLastUpdated",type:"uint256",internalType:"uint256"},{name:"slLastUpdated",type:"uint256",internalType:"uint256"},{name:"initialLeverage",type:"uint32",internalType:"uint32"},{name:"createdAt",type:"uint32",internalType:"uint32"},{name:"beingMarketClosed",type:"bool",internalType:"bool"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"totalOpenLimitOrders",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalOpenTradesCount",inputs:[],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"transferUsdc",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"amount",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterOpenLimitOrder",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterPendingAutomationOrder",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterPendingMarketOrder",inputs:[{name:"id",type:"uint256",internalType:"uint256"},{name:"open",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterPendingRemoveCollateral",inputs:[{name:"orderId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterTrade",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"collateralToClose",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"unregisterTrigger",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.LimitOrder"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateOpenLimitOrder",inputs:[{name:"newLimit",type:"tuple",internalType:"struct IDomfiTradingStorage.OpenLimitOrder",components:[{name:"trader",type:"address",internalType:"address"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"lastUpdated",type:"uint256",internalType:"uint256"},{name:"blockNum",type:"uint256",internalType:"uint256"},{name:"targetPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"},{name:"orderType",type:"uint8",internalType:"enum IDomfiTradingStorage.OpenOrderType"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateSl",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"newSl",type:"uint192",internalType:"uint192"},{name:"latestPublishId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTp",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"newTp",type:"uint192",internalType:"uint192"},{name:"latestPublishId",type:"uint256",internalType:"uint256"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateTrade",inputs:[{name:"newT",type:"tuple",internalType:"struct IDomfiTradingStorage.Trade",components:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"openPrice",type:"uint192",internalType:"uint192"},{name:"tp",type:"uint192",internalType:"uint192"},{name:"sl",type:"uint192",internalType:"uint192"},{name:"trader",type:"address",internalType:"address"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"buy",type:"bool",internalType:"bool"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"usdc",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"event",name:"DevFeeClaimed",inputs:[{name:"amount",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"MaxOpenInterestUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newMaxOpenInterest",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"MaxPendingMarketOrdersUpdated",inputs:[{name:"newMaxPendingMarketOrders",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"event",name:"MaxTradesPerPairUpdated",inputs:[{name:"newMaxTradesPerPair",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"event",name:"OpenInterestUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint256",indexed:false,internalType:"uint256"},{name:"newOi",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"OracleFeeClaimed",inputs:[{name:"amount",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"error",name:"InsufficientOracleFeeBalance",inputs:[]},{type:"error",name:"InvalidDevFeeClaimAmount",inputs:[]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"InvalidOracleFeeClaimAmount",inputs:[]},{type:"error",name:"NoOpenLimitOrder",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}]},{type:"error",name:"NotCallbacks",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotCallbacksOrTradesUpKeep",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotCallbacksOrTradesUpKeepOrTrading",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotEmptyIndex",inputs:[]},{type:"error",name:"NotGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotRegistryOrGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotTradesUpKeep",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotTradesUpKeepOrTrading",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotTrading",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotTradingOrCallbacks",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NullAddr",inputs:[]},{type:"error",name:"SafeCastOverflowedUintToInt",inputs:[{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeERC20FailedOperation",inputs:[{name:"token",type:"address",internalType:"address"}]},{type:"error",name:"WrongParams",inputs:[]}],DomfiPairsStorage:[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"addFee",inputs:[{name:"newFee",type:"tuple",internalType:"struct IDomfiPairsStorage.Fee",components:[{name:"minLevPos",type:"uint64",internalType:"uint64"},{name:"name",type:"bytes32",internalType:"bytes32"},{name:"oracleFee",type:"uint256",internalType:"uint256"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"addGroup",inputs:[{name:"newGroup",type:"tuple",internalType:"struct IDomfiPairsStorage.Group",components:[{name:"name",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"minLeverage",type:"uint16",internalType:"uint16"},{name:"maxCollateralP",type:"uint16",internalType:"uint16"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"addPair",inputs:[{name:"newPair",type:"tuple",internalType:"struct IDomfiPairsStorage.Pair",components:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"},{name:"feed",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"feeIndex",type:"uint8",internalType:"uint8"},{name:"priceFeed",type:"string",internalType:"string"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"addPairs",inputs:[{name:"newPairs",type:"tuple[]",internalType:"struct IDomfiPairsStorage.Pair[]",components:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"},{name:"feed",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"feeIndex",type:"uint8",internalType:"uint8"},{name:"priceFeed",type:"string",internalType:"string"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"fees",inputs:[{name:"feeIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"minLevPos",type:"uint64",internalType:"uint64"},{name:"name",type:"bytes32",internalType:"bytes32"},{name:"oracleFee",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"feesCount",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"getAllPairsMaxLeverage",inputs:[],outputs:[{name:"",type:"uint32[]",internalType:"uint32[]"}],stateMutability:"view"},{type:"function",name:"getFeedInfo",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"},{name:"",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"getPairsMaxLeverage",inputs:[{name:"startId",type:"uint256",internalType:"uint256"},{name:"finalId",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint32[]",internalType:"uint32[]"}],stateMutability:"view"},{type:"function",name:"groupCollateral",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"long",type:"bool",internalType:"bool"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"groupMaxCollateral",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"groups",inputs:[{name:"groupIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"name",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"minLeverage",type:"uint16",internalType:"uint16"},{name:"maxCollateralP",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"groupsCollaterals",inputs:[{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"groupsCount",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"initialize",inputs:[{name:"registryAddress",type:"address",internalType:"contract IDomfiRegistry"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"isPairIndexListed",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"isPairListed",inputs:[{name:"fromPair",type:"bytes32",internalType:"bytes32"},{name:"toPair",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"pairFeed",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bytes32",internalType:"bytes32"}],stateMutability:"view"},{type:"function",name:"pairHasNativeOracleFeed",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"pairMaxLeverage",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint32",internalType:"uint32"}],stateMutability:"view"},{type:"function",name:"pairMinLevPos",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"pairMinLeverage",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"pairOracleFee",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"pairs",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"},{name:"feed",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"feeIndex",type:"uint8",internalType:"uint8"},{name:"priceFeed",type:"string",internalType:"string"}],stateMutability:"view"},{type:"function",name:"pairsBackend",inputs:[{name:"index",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"tuple",internalType:"struct IDomfiPairsStorage.Pair",components:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"},{name:"feed",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"feeIndex",type:"uint8",internalType:"uint8"},{name:"priceFeed",type:"string",internalType:"string"}]},{name:"",type:"tuple",internalType:"struct IDomfiPairsStorage.Group",components:[{name:"name",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"minLeverage",type:"uint16",internalType:"uint16"},{name:"maxCollateralP",type:"uint16",internalType:"uint16"}]},{name:"",type:"tuple",internalType:"struct IDomfiPairsStorage.Fee",components:[{name:"minLevPos",type:"uint64",internalType:"uint64"},{name:"name",type:"bytes32",internalType:"bytes32"},{name:"oracleFee",type:"uint256",internalType:"uint256"}]}],stateMutability:"view"},{type:"function",name:"pairsCount",inputs:[],outputs:[{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"view"},{type:"function",name:"removePair",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairMaxLeverage",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newMaxLeverage",type:"uint32",internalType:"uint32"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairMaxLeverageArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"uint32[]",internalType:"uint32[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateFee",inputs:[{name:"id",type:"uint8",internalType:"uint8"},{name:"newFee",type:"tuple",internalType:"struct IDomfiPairsStorage.Fee",components:[{name:"minLevPos",type:"uint64",internalType:"uint64"},{name:"name",type:"bytes32",internalType:"bytes32"},{name:"oracleFee",type:"uint256",internalType:"uint256"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateGroup",inputs:[{name:"id",type:"uint8",internalType:"uint8"},{name:"newGroup",type:"tuple",internalType:"struct IDomfiPairsStorage.Group",components:[{name:"name",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"minLeverage",type:"uint16",internalType:"uint16"},{name:"maxCollateralP",type:"uint16",internalType:"uint16"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updateGroupCollateral",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newAmount",type:"uint256",internalType:"uint256"},{name:"long",type:"bool",internalType:"bool"},{name:"increase",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"updatePair",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newPair",type:"tuple",internalType:"struct IDomfiPairsStorage.Pair",components:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"},{name:"feed",type:"bytes32",internalType:"bytes32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"},{name:"groupIndex",type:"uint8",internalType:"uint8"},{name:"feeIndex",type:"uint8",internalType:"uint8"},{name:"priceFeed",type:"string",internalType:"string"}]}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"FeeAdded",inputs:[{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"name",type:"bytes32",indexed:false,internalType:"bytes32"}],anonymous:false},{type:"event",name:"FeeUpdated",inputs:[{name:"index",type:"uint8",indexed:true,internalType:"uint8"}],anonymous:false},{type:"event",name:"GroupAdded",inputs:[{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"name",type:"bytes32",indexed:false,internalType:"bytes32"}],anonymous:false},{type:"event",name:"GroupCollateralUpdated",inputs:[{name:"groupIndex",type:"uint8",indexed:false,internalType:"uint8"},{name:"collateral",type:"uint256",indexed:false,internalType:"uint256"},{name:"newAmount",type:"uint256",indexed:false,internalType:"uint256"},{name:"long",type:"bool",indexed:false,internalType:"bool"},{name:"increase",type:"bool",indexed:false,internalType:"bool"}],anonymous:false},{type:"event",name:"GroupUpdated",inputs:[{name:"index",type:"uint8",indexed:true,internalType:"uint8"}],anonymous:false},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"PairAdded",inputs:[{name:"index",type:"uint16",indexed:false,internalType:"uint16"},{name:"from",type:"bytes32",indexed:false,internalType:"bytes32"},{name:"to",type:"bytes32",indexed:false,internalType:"bytes32"}],anonymous:false},{type:"event",name:"PairMaxLeverageUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newMaxLeverage",type:"uint32",indexed:false,internalType:"uint32"}],anonymous:false},{type:"event",name:"PairRemoved",inputs:[{name:"index",type:"uint16",indexed:false,internalType:"uint16"},{name:"from",type:"bytes32",indexed:false,internalType:"bytes32"},{name:"to",type:"bytes32",indexed:false,internalType:"bytes32"}],anonymous:false},{type:"event",name:"PairUpdated",inputs:[{name:"index",type:"uint16",indexed:true,internalType:"uint16"}],anonymous:false},{type:"error",name:"FeeNotListed",inputs:[{name:"index",type:"uint256",internalType:"uint256"}]},{type:"error",name:"GroupNotListed",inputs:[{name:"index",type:"uint256",internalType:"uint256"}]},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"MaxReached",inputs:[]},{type:"error",name:"NotAuthorized",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"PairAlreadyListed",inputs:[{name:"from",type:"bytes32",internalType:"bytes32"},{name:"to",type:"bytes32",internalType:"bytes32"}]},{type:"error",name:"PairNotEmpty",inputs:[]},{type:"error",name:"PairNotListed",inputs:[{name:"index",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeCastOverflowedUintDowncast",inputs:[{name:"bits",type:"uint8",internalType:"uint8"},{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"WrongParams",inputs:[]}],DomfiPairInfos:[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"getAccFundingFeesLong",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getAccFundingFeesShort",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getAccFundingFeesUpdateBlock",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getClosingFee",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"leveragedPositionSize",type:"int256",internalType:"int256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"oiDelta",type:"int256",internalType:"int256"}],outputs:[{name:"devFee",type:"uint256",internalType:"uint256"},{name:"vaultFee",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getFrSpringFactor",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"uint64",internalType:"uint64"}],stateMutability:"view"},{type:"function",name:"getHillFunctionParams",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"int256",internalType:"int256"},{name:"",type:"uint16",internalType:"uint16"},{name:"",type:"uint16",internalType:"uint16"}],stateMutability:"view"},{type:"function",name:"getOpeningFee",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"leveragedPositionSize",type:"int256",internalType:"int256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"oiDelta",type:"int256",internalType:"int256"}],outputs:[{name:"devFee",type:"uint256",internalType:"uint256"},{name:"vaultFee",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getPendingAccFundingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"",type:"int256",internalType:"int256"},{name:"",type:"int256",internalType:"int256"},{name:"",type:"int64",internalType:"int64"},{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getTradeFundingFee",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"long",type:"bool",internalType:"bool"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"int256",internalType:"int256"},{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getTradeFundingFeePure",inputs:[{name:"accFundingFeesPerOi",type:"int256",internalType:"int256"},{name:"endAccFundingFeesPerOi",type:"int256",internalType:"int256"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"pure"},{type:"function",name:"getTradeInitialAccFundingFeesPerOi",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"}],outputs:[{name:"",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"getTradeLiquidationMargin",inputs:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getTradeLiquidationPrice",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"openPrice",type:"uint256",internalType:"uint256"},{name:"long",type:"bool",internalType:"bool"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"maxLeverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getTradeLiquidationPricePure",inputs:[{name:"openPrice",type:"uint256",internalType:"uint256"},{name:"long",type:"bool",internalType:"bool"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"fundingFee",type:"int256",internalType:"int256"},{name:"maxLeverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getTradeValue",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"long",type:"bool",internalType:"bool"},{name:"collateral",type:"uint256",internalType:"uint256"},{name:"leverage",type:"uint32",internalType:"uint32"},{name:"percentProfit",type:"int256",internalType:"int256"},{name:"maxLeverage",type:"uint32",internalType:"uint32"}],outputs:[{name:"tradeValue",type:"uint256",internalType:"uint256"},{name:"liqMarginValue",type:"uint256",internalType:"uint256"},{name:"f",type:"int256",internalType:"int256"}],stateMutability:"nonpayable"},{type:"function",name:"getTradeValuePure",inputs:[{name:"collateral",type:"uint256",internalType:"uint256"},{name:"percentProfit",type:"int256",internalType:"int256"},{name:"fundingFee",type:"int256",internalType:"int256"},{name:"liqMarginValue",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"pure"},{type:"function",name:"initialize",inputs:[{name:"registryAddress",type:"address",internalType:"contract IDomfiRegistry"},{name:"managerAddress",type:"address",internalType:"address"},{name:"initialLiqMarginThresholdP",type:"uint8",internalType:"uint8"},{name:"initialMaxNegativePnlOnOpenP",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"liqMarginThresholdP",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"manager",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"maxNegativePnlOnOpenP",inputs:[],outputs:[{name:"",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"pairClosingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"pairFundingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"accPerOiLong",type:"int256",internalType:"int256"},{name:"accPerOiShort",type:"int256",internalType:"int256"},{name:"lastFundingRate",type:"int64",internalType:"int64"},{name:"hillInflectionPoint",type:"int64",internalType:"int64"},{name:"maxFundingFeePerBlock",type:"uint64",internalType:"uint64"},{name:"springFactor",type:"uint64",internalType:"uint64"},{name:"lastUpdateBlock",type:"uint32",internalType:"uint32"},{name:"hillPosScale",type:"uint16",internalType:"uint16"},{name:"hillNegScale",type:"uint16",internalType:"uint16"},{name:"sFactorUpScaleP",type:"uint16",internalType:"uint16"},{name:"sFactorDownScaleP",type:"uint16",internalType:"uint16"},{name:"lastOiDelta",type:"int256",internalType:"int256"}],stateMutability:"view"},{type:"function",name:"pairOpeningFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"}],outputs:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}],stateMutability:"view"},{type:"function",name:"registry",inputs:[],outputs:[{name:"",type:"address",internalType:"contract IDomfiRegistry"}],stateMutability:"view"},{type:"function",name:"setHillFunctionParams",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newHillInflectionPoint",type:"int64",internalType:"int64"},{name:"newHillPosScale",type:"uint16",internalType:"uint16"},{name:"newHillNegScale",type:"uint16",internalType:"uint16"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setHillFunctionParamsArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newHillInflectionPoints",type:"int64[]",internalType:"int64[]"},{name:"newHillPosScales",type:"uint16[]",internalType:"uint16[]"},{name:"newHillNegScales",type:"uint16[]",internalType:"uint16[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setLiqMarginThresholdP",inputs:[{name:"newLiqMarginThresholdP",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setManager",inputs:[{name:"newManager",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxFundingFeePerBlock",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newMaxFundingFeePerBlock",type:"uint64",internalType:"uint64"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxFundingFeePerBlockArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"uint64[]",internalType:"uint64[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setMaxNegativePnlOnOpenP",inputs:[{name:"newMaxNegativePnlOnOpenP",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairClosingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newClosingFees",type:"tuple",internalType:"struct IDomfiPairInfos.PairClosingFees",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairClosingFeesArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"tuple[]",internalType:"struct IDomfiPairInfos.PairClosingFees[]",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairClosingVaultFeePercent",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newVaultFeePercent",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairClosingVaultFeePercentArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"uint8[]",internalType:"uint8[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairFundingFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newFundingFees",type:"tuple",internalType:"struct IDomfiPairInfos.PairFundingFees",components:[{name:"accPerOiLong",type:"int256",internalType:"int256"},{name:"accPerOiShort",type:"int256",internalType:"int256"},{name:"lastFundingRate",type:"int64",internalType:"int64"},{name:"hillInflectionPoint",type:"int64",internalType:"int64"},{name:"maxFundingFeePerBlock",type:"uint64",internalType:"uint64"},{name:"springFactor",type:"uint64",internalType:"uint64"},{name:"lastUpdateBlock",type:"uint32",internalType:"uint32"},{name:"hillPosScale",type:"uint16",internalType:"uint16"},{name:"hillNegScale",type:"uint16",internalType:"uint16"},{name:"sFactorUpScaleP",type:"uint16",internalType:"uint16"},{name:"sFactorDownScaleP",type:"uint16",internalType:"uint16"},{name:"lastOiDelta",type:"int256",internalType:"int256"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairFundingFeesArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"tuple[]",internalType:"struct IDomfiPairInfos.PairFundingFees[]",components:[{name:"accPerOiLong",type:"int256",internalType:"int256"},{name:"accPerOiShort",type:"int256",internalType:"int256"},{name:"lastFundingRate",type:"int64",internalType:"int64"},{name:"hillInflectionPoint",type:"int64",internalType:"int64"},{name:"maxFundingFeePerBlock",type:"uint64",internalType:"uint64"},{name:"springFactor",type:"uint64",internalType:"uint64"},{name:"lastUpdateBlock",type:"uint32",internalType:"uint32"},{name:"hillPosScale",type:"uint16",internalType:"uint16"},{name:"hillNegScale",type:"uint16",internalType:"uint16"},{name:"sFactorUpScaleP",type:"uint16",internalType:"uint16"},{name:"sFactorDownScaleP",type:"uint16",internalType:"uint16"},{name:"lastOiDelta",type:"int256",internalType:"int256"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairOpeningFees",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newOpeningFees",type:"tuple",internalType:"struct IDomfiPairInfos.PairOpeningFees",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairOpeningFeesArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"tuple[]",internalType:"struct IDomfiPairInfos.PairOpeningFees[]",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairOpeningVaultFeePercent",inputs:[{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"newVaultFeePercent",type:"uint8",internalType:"uint8"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setPairOpeningVaultFeePercentArray",inputs:[{name:"indices",type:"uint16[]",internalType:"uint16[]"},{name:"newValues",type:"uint8[]",internalType:"uint8[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"storeTradeInitialAccFees",inputs:[{name:"tradeId",type:"uint256",internalType:"uint256"},{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"index",type:"uint8",internalType:"uint8"},{name:"long",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"tradeInitialAccFees",inputs:[{name:"trader",type:"address",internalType:"address"},{name:"pairIndex",type:"uint16",internalType:"uint16"},{name:"tradeIndex",type:"uint8",internalType:"uint8"}],outputs:[{name:"funding",type:"int256",internalType:"int256"},{name:"openedAfterUpdate",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"event",name:"AccFundingFeesStored",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"valueLong",type:"int256",indexed:false,internalType:"int256"},{name:"valueShort",type:"int256",indexed:false,internalType:"int256"},{name:"lastOiDelta",type:"int256",indexed:false,internalType:"int256"},{name:"lastFundingRate",type:"int64",indexed:false,internalType:"int64"}],anonymous:false},{type:"event",name:"FeesCharged",inputs:[{name:"orderId",type:"uint256",indexed:true,internalType:"uint256"},{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"fundingFees",type:"int256",indexed:false,internalType:"int256"}],anonymous:false},{type:"event",name:"HillParamsUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newHillInflectionPoint",type:"int64",indexed:false,internalType:"int64"},{name:"newHillPosScale",type:"uint16",indexed:false,internalType:"uint16"},{name:"newHillNegScale",type:"uint16",indexed:false,internalType:"uint16"}],anonymous:false},{type:"event",name:"Initialized",inputs:[{name:"version",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"LiqMarginThresholdPUpdated",inputs:[{name:"newLiqMarginThresholdP",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"event",name:"ManagerUpdated",inputs:[{name:"newManager",type:"address",indexed:true,internalType:"address"}],anonymous:false},{type:"event",name:"MaxFundingFeePerBlockUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newMaxFundingFeePerBlock",type:"uint64",indexed:false,internalType:"uint64"}],anonymous:false},{type:"event",name:"MaxNegativePnlOnOpenPUpdated",inputs:[{name:"newMaxNegativePnlOnOpenP",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"event",name:"PairClosingFeesUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newClosingFees",type:"tuple",indexed:false,internalType:"struct IDomfiPairInfos.PairClosingFees",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],anonymous:false},{type:"event",name:"PairFundingFeesUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newFundingFees",type:"tuple",indexed:false,internalType:"struct IDomfiPairInfos.PairFundingFees",components:[{name:"accPerOiLong",type:"int256",internalType:"int256"},{name:"accPerOiShort",type:"int256",internalType:"int256"},{name:"lastFundingRate",type:"int64",internalType:"int64"},{name:"hillInflectionPoint",type:"int64",internalType:"int64"},{name:"maxFundingFeePerBlock",type:"uint64",internalType:"uint64"},{name:"springFactor",type:"uint64",internalType:"uint64"},{name:"lastUpdateBlock",type:"uint32",internalType:"uint32"},{name:"hillPosScale",type:"uint16",internalType:"uint16"},{name:"hillNegScale",type:"uint16",internalType:"uint16"},{name:"sFactorUpScaleP",type:"uint16",internalType:"uint16"},{name:"sFactorDownScaleP",type:"uint16",internalType:"uint16"},{name:"lastOiDelta",type:"int256",internalType:"int256"}]}],anonymous:false},{type:"event",name:"PairOpeningFeesUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newOpeningFees",type:"tuple",indexed:false,internalType:"struct IDomfiPairInfos.PairOpeningFees",components:[{name:"makerFeeP",type:"uint32",internalType:"uint32"},{name:"takerFeeP",type:"uint32",internalType:"uint32"},{name:"usageFeeP",type:"uint32",internalType:"uint32"},{name:"utilizationThresholdP",type:"uint16",internalType:"uint16"},{name:"makerMaxLeverage",type:"uint16",internalType:"uint16"},{name:"vaultFeePercent",type:"uint8",internalType:"uint8"}]}],anonymous:false},{type:"event",name:"TradeInitialAccFeesStored",inputs:[{name:"tradeId",type:"uint256",indexed:true,internalType:"uint256"},{name:"trader",type:"address",indexed:true,internalType:"address"},{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"index",type:"uint8",indexed:false,internalType:"uint8"},{name:"funding",type:"int256",indexed:false,internalType:"int256"}],anonymous:false},{type:"event",name:"VaultFeePercentUpdated",inputs:[{name:"pairIndex",type:"uint16",indexed:true,internalType:"uint16"},{name:"newVaultFeePercent",type:"uint8",indexed:false,internalType:"uint8"}],anonymous:false},{type:"error",name:"InvalidInitialization",inputs:[]},{type:"error",name:"NotCallbacks",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotGov",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"NotInitializing",inputs:[]},{type:"error",name:"NotManager",inputs:[{name:"caller",type:"address",internalType:"address"}]},{type:"error",name:"SafeCastOverflowedIntDowncast",inputs:[{name:"bits",type:"uint8",internalType:"uint8"},{name:"value",type:"int256",internalType:"int256"}]},{type:"error",name:"SafeCastOverflowedIntToUint",inputs:[{name:"value",type:"int256",internalType:"int256"}]},{type:"error",name:"SafeCastOverflowedUintDowncast",inputs:[{name:"bits",type:"uint8",internalType:"uint8"},{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"SafeCastOverflowedUintToInt",inputs:[{name:"value",type:"uint256",internalType:"uint256"}]},{type:"error",name:"WrongParams",inputs:[]}],DomfiOracle:[{type:"constructor",inputs:[],stateMutability:"nonpayable"},{type:"function",name:"acceptOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"getPublishId",inputs:[{name:"productId",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"publishId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"getValue",inputs:[{name:"productId",type:"bytes32",internalType:"bytes32"}],outputs:[{name:"value",type:"int192",internalType:"int192"},{name:"timestamp",type:"uint64",internalType:"uint64"},{name:"publishId",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"isOracle",inputs:[{name:"oracle",type:"address",internalType:"address"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"view"},{type:"function",name:"owner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"pendingOwner",inputs:[],outputs:[{name:"",type:"address",internalType:"address"}],stateMutability:"view"},{type:"function",name:"renounceOwnership",inputs:[],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setOracle",inputs:[{name:"oracle",type:"address",internalType:"address"},{name:"newStatus",type:"bool",internalType:"bool"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setValue",inputs:[{name:"productId",type:"bytes32",internalType:"bytes32"},{name:"value",type:"int192",internalType:"int192"},{name:"timestamp",type:"uint64",internalType:"uint64"},{name:"signedMetadata",type:"bytes",internalType:"bytes"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"setValues",inputs:[{name:"productIds",type:"bytes32[]",internalType:"bytes32[]"},{name:"values",type:"int192[]",internalType:"int192[]"},{name:"timestamps",type:"uint64[]",internalType:"uint64[]"},{name:"signedMetadatas",type:"bytes[]",internalType:"bytes[]"}],outputs:[],stateMutability:"nonpayable"},{type:"function",name:"transferOwnership",inputs:[{name:"newOwner",type:"address",internalType:"address"}],outputs:[],stateMutability:"nonpayable"},{type:"event",name:"OracleSet",inputs:[{name:"oracle",type:"address",indexed:true,internalType:"address"},{name:"oldStatus",type:"bool",indexed:false,internalType:"bool"},{name:"newStatus",type:"bool",indexed:false,internalType:"bool"}],anonymous:false},{type:"event",name:"OwnershipTransferStarted",inputs:[{name:"previousOwner",type:"address",indexed:true,internalType:"address"},{name:"newOwner",type:"address",indexed:true,internalType:"address"}],anonymous:false},{type:"event",name:"OwnershipTransferred",inputs:[{name:"previousOwner",type:"address",indexed:true,internalType:"address"},{name:"newOwner",type:"address",indexed:true,internalType:"address"}],anonymous:false},{type:"event",name:"PriceFeedUpdated",inputs:[{name:"productId",type:"bytes32",indexed:true,internalType:"bytes32"},{name:"value",type:"int192",indexed:false,internalType:"int192"},{name:"timestamp",type:"uint64",indexed:false,internalType:"uint64"},{name:"publishId",type:"uint256",indexed:false,internalType:"uint256"},{name:"signedMetadata",type:"bytes",indexed:false,internalType:"bytes"}],anonymous:false},{type:"error",name:"InvalidOracle",inputs:[]},{type:"error",name:"InvalidOracleStatus",inputs:[]},{type:"error",name:"InvalidTimestamp",inputs:[{name:"timestampIndex",type:"uint256",internalType:"uint256"}]},{type:"error",name:"OracleOnly",inputs:[]},{type:"error",name:"OracleValueUnset",inputs:[]},{type:"error",name:"OwnableInvalidOwner",inputs:[{name:"owner",type:"address",internalType:"address"}]},{type:"error",name:"OwnableUnauthorizedAccount",inputs:[{name:"account",type:"address",internalType:"address"}]}],DomfiVault:ud,IERC20:[{type:"function",name:"allowance",inputs:[{name:"owner",type:"address",internalType:"address"},{name:"spender",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"approve",inputs:[{name:"spender",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"balanceOf",inputs:[{name:"account",type:"address",internalType:"address"}],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"totalSupply",inputs:[],outputs:[{name:"",type:"uint256",internalType:"uint256"}],stateMutability:"view"},{type:"function",name:"transfer",inputs:[{name:"to",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"function",name:"transferFrom",inputs:[{name:"from",type:"address",internalType:"address"},{name:"to",type:"address",internalType:"address"},{name:"value",type:"uint256",internalType:"uint256"}],outputs:[{name:"",type:"bool",internalType:"bool"}],stateMutability:"nonpayable"},{type:"event",name:"Approval",inputs:[{name:"owner",type:"address",indexed:true,internalType:"address"},{name:"spender",type:"address",indexed:true,internalType:"address"},{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false},{type:"event",name:"Transfer",inputs:[{name:"from",type:"address",indexed:true,internalType:"address"},{name:"to",type:"address",indexed:true,internalType:"address"},{name:"value",type:"uint256",indexed:false,internalType:"uint256"}],anonymous:false}]};var Ny=/^0x[0-9a-fA-F]{40}$/,Wy=/^0x(?:[0-9a-fA-F]{2})*$/;function kt(e){return typeof e=="string"&&Ny.test(e)}function Oo(e,n){return typeof e!="string"||!Wy.test(e)||n?.allowEmpty===false&&e==="0x"?false:n?.bytes===void 0||e.length===2+n.bytes*2}function ve(e,n,t){return kt(e)?e:t(`${n} must be a 20-byte hex address`)}function ti(e,n,t,i){if(Oo(e,i))return e;let r=i?.bytes===void 0?"hex string":`${i.bytes}-byte hex string`;return t(`${n} must be a ${r}`)}function nn(e,n,t){return ti(e,n,t,{bytes:32,allowEmpty:false})}function jr(e,n,t){return ti(e,n,t,{bytes:32,allowEmpty:false})}var I="0.1.0";var Co=Symbol("domfi.internalReceiptWaiterOptions"),By=1e3;function cd(e){return {sdkVersion:I,sourceTag:"internal-receipt-polling",chainId:e?.chainId??0}}function pd(e,n,t,i){return new mt.ValidationError({message:`${e} must be ${n}`,diagnostics:cd(i),cause:t})}function zr(e,n){if(e!==void 0&&(!Number.isFinite(e)||e<=0))throw new mt.ValidationError({message:"pollingIntervalMs must be a finite positive number",diagnostics:cd(n),hint:"Omit pollingIntervalMs to use the chain default, or pass a value greater than 0.",cause:e})}function Do(e,n){if(e!==void 0&&!(Number.isInteger(e)&&e>0))throw pd("confirmations","a finite positive integer",e,n)}function md(e,n){if(e!==void 0&&!(Number.isFinite(e)&&e>0))throw pd("timeoutMs","a finite positive number",e,n)}function Gr(e,n){if(e!==void 0)return md(e,n),Math.max(1,Math.floor(e))}function At(e,n){Do(e?.confirmations,n),e?.[Co]===true&&e.timeoutMs===0||md(e?.timeoutMs,n),zr(e?.pollingIntervalMs,n);}function cn(e,n){if(n!==void 0)return zr(n,e),Math.max(1,Math.floor(n));let t=e?.blockTimeMs;return t!==void 0&&Number.isFinite(t)&&t>0?Math.max(1,Math.floor(t/2)):By}var Kr=new Map,fd=new WeakMap;function Uy(e){let n=e.uid;return typeof n=="string"?n:void 0}function So(){if(typeof DOMException=="function")return new DOMException("The operation was aborted","AbortError");let e=new Error("The operation was aborted");return e.name="AbortError",e}function qy(e,n){if(n!==void 0){let i=Kr.get(n);return i===void 0&&(i=new Map,Kr.set(n,i)),i}let t=fd.get(e);return t===void 0&&(t=new Map,fd.set(e,t)),t}function Hy(e,n){return new Promise((t,i)=>{let r=()=>i(So());n.addEventListener("abort",r,{once:true}),e.then(t,i).finally(()=>{n.removeEventListener("abort",r);});})}function Cn(e,n,t,i){if(i?.aborted===true)return Promise.reject(So());let r=Uy(e),a=qy(e,r),o=n.toLowerCase(),d=a.get(o),u;if(d===void 0)try{u=t({queued:!1});}catch(c){u=Promise.reject(c);}else u=d.then(()=>{if(i?.aborted===true)throw So();return t({queued:true})});let l=u.then(()=>{},()=>{});return a.set(o,l),l.then(()=>{a.get(o)===l&&(a.delete(o),r!==void 0&&a.size===0&&Kr.get(r)===a&&Kr.delete(r));}),i===void 0?u:Hy(u,i)}var $y=/^(?:0|[1-9]\d*)(?:\.\d+)?$/,yd=/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/,gd=/^(?:0|[1-9]\d*)$/,jy=/^-?(?:0|[1-9]\d*)$/;function ii(e){return Mo(e,true),e}function Mo(e,n){if(!(n?yd:$y).test(e))throw new Error(`invalid decimal string: ${e}`);let i=e.startsWith("-"),r=i?e.slice(1):e,[a="0",o=""]=r.split(".");return {negative:i,whole:a,fraction:o}}function zy(e,n){if(!(n?jy:gd).test(e))throw new Error(`invalid raw integer: ${e}`);return BigInt(e)}function Gy(e,n){return n===void 0?e.toString():new Intl.NumberFormat(n).format(e)}function Ky(e){return e===void 0?".":new Intl.NumberFormat(e).formatToParts(1.1).find(n=>n.type==="decimal")?.value??"."}function Yy(e,n,t,i){let r=i?.decimals??t;if(!Number.isInteger(r)||r<0)throw new Error("decimals must be a non-negative integer");let a=e<0n,o=a?-e:e,d=o/n,u=t===0?"":(o%n).toString().padStart(t,"0"),l=r<=t?u.slice(0,r):u.padEnd(r,"0");i?.trimTrailingZeros!==false&&(l=l.replace(/0+$/,""));let c=Gy(d,i?.locale),p=l.length===0?c:`${c}${Ky(i?.locale)}${l}`;return `${a?"-":""}${i?.symbol??""}${p}`}function _o(e,n,t){return {from(i){if(!Number.isInteger(i)||i<n||i>t)throw new Error(`${e} out of range`);return i},toNumber(i){return i}}}function bd(e){return {parse(n){if(n.length===0)throw new Error(`${e} cannot be empty`);return n},toString(n){return n}}}function Pe(e,n,t=0n,i){let r=a=>{let o=typeof a=="bigint"?a:zy(a,t<0n);if(o<t)throw new Error("value below minimum");if(i!==void 0&&o>i)throw new Error("value above maximum");return o};return {fromDecimal(a){let{negative:o,whole:d,fraction:u}=Mo(a,t<0n);if(u.length>n)throw new Error(`too many fractional digits: expected ${n}`);let l=BigInt(d)*e+BigInt(u.padEnd(n,"0")||"0");return r(o?-l:l)},fromRaw:r,toRaw(a){return a},toRawString(a){return a.toString()},format(a,o){return Yy(a,e,n,o)}}}var Td=2n**32n-1n,Xy=2n**192n-1n,ji=2n**256n-1n,Vo=-(2n**255n),Eo=2n**255n-1n,P=_o("PairIndex",0,65535),G=_o("TradeIndex",0,255),Fe=Object.assign(_o("TriggerOrderIndex",0,255),{parseApi(e){if(!gd.test(e))throw new Error("TriggerOrderIndex out of range");return Fe.from(Number(e))}}),$=bd("TradeId"),Ke=bd("OrderId"),M=Pe(1000000n,6,0n,ji),ut=Pe(1000000n,6,Vo,Eo),_=Pe(1000000000000000000n,18,0n,Xy),Dn=Pe(1000000000000000000n,18),U=Pe(100n,2,0n,Td),Sn=Pe(1000000000000000000n,18,Vo,Eo),Mn=Pe(1000000000000000000n,18,0n,ji),_n=Pe(1000000n,6,Vo,Eo),zi=Pe(100n,2,0n,Td),pn=Object.assign(Pe(1000000n,6,0n,ji),{fromDollar(e){return pn.fromDecimal(e.startsWith("$")?e.slice(1):e)}}),mn=Object.assign(Pe(100n,2,1n,9999n),{fromBps(e){return mn.fromRaw(e)}}),Ye=Object.assign(Pe(100n,2,1n,10000n),{full(){return Ye.fromRaw(10000n)}}),It=Pe(1000000n,6),Vn=Pe(1n,0,0n,100n),hd=Pe(100n,2),he=Pe(1000000n,6,0n,ji),se=Pe(1000000n,6,0n,ji),wd=Pe(1000000000000000000n,18),He={fromDecimal(e){return Mo(e,true),e},fromRaw(e){if(!yd.test(e))throw new Error("invalid ratio");return e},toRawString(e){return e},format(e){return e}};function Zy(e){return Object.assign(new Error("receipt wait was aborted"),{cause:e})}function Jy(e){return Object.assign(new Error("receipt wait timed out"),{cause:e})}function Qy(){if(typeof DOMException=="function")return new DOMException("The operation was aborted","AbortError");let e=new Error("The operation was aborted");return e.name="AbortError",e}function vd(e){let n=e?.confirmations;return n===void 0||n<=1?1:n}function eg(e,n){return {...e?.confirmations!==void 0?{confirmations:e.confirmations}:{},...e?.pollingIntervalMs!==void 0?{pollingIntervalMs:e.pollingIntervalMs}:{},...n!==void 0?{signal:n}:{},timeoutMs:0,[Co]:true}}function ng(e){return Gr(e)}function tg(e,n,t,i,r){let a=u=>u.finally(r),o=n?.signal,d=ng(n?.timeoutMs);return o?.aborted===true?a(Promise.reject(t(o.reason))):a(o===void 0&&d===void 0?e:new Promise((u,l)=>{let c,p=()=>{c!==void 0&&clearTimeout(c),o?.removeEventListener("abort",m);},m=()=>{p(),l(t(o?.reason));};o?.addEventListener("abort",m,{once:true}),d!==void 0&&(c=setTimeout(()=>{p(),l(i(new Error("receipt wait timed out")));},d)),e.then(f=>{p(),u(f);},f=>{p(),l(f);});}))}function Pd(e,n){let t,i;for(let[r,a]of e)!a.settled||r<n||(t===void 0||r<t)&&(t=r,i=a);return i}function En(e){let n=new Map,t=Promise.resolve(),i=e.mapAbort??Zy,r=e.mapTimeout??Jy;return e.initialReceipt!==void 0&&n.set(vd(e.initialReceiptConfirmations===void 0?void 0:{confirmations:e.initialReceiptConfirmations}),{controller:new AbortController,promise:Promise.resolve(e.initialReceipt),settled:true,subscribers:0}),a=>{try{At(a);}catch(l){return Promise.reject(l)}if(a?.signal?.aborted===true)return Promise.reject(i(a.signal.reason));let o=vd(a),d=Pd(n,o)??n.get(o);if(d===void 0){let l=new AbortController,c={controller:l,promise:void 0,settled:false,subscribers:0},p=t.catch(()=>{}).then(()=>{if(l.signal.aborted)throw Qy();let m=Pd(n,o);return m!==void 0&&m!==c?m.promise:e.wait(eg(a,l.signal))}).catch(m=>{throw n.get(o)===c&&n.delete(o),m});c.promise=p,p.then(()=>{c.settled=true;},()=>{c.settled=true;}),t=p.catch(()=>{}),p.catch(()=>{}),n.set(o,c),d=c;}let u=d;return u.subscribers+=1,tg(u.promise,a,i,r,()=>{u.subscribers-=1,u.subscribers===0&&!u.settled&&(u.controller.abort(),n.get(o)===u&&n.delete(o));})}}var ig=1e3,kd={sdkVersion:I,sourceTag:"internal-polling",chainId:0};function Ad(e,n,t,i){return new mt.ValidationError({message:`${e} must be ${n}`,diagnostics:i??kd,cause:t})}function xe(e,n,t){if(e!==void 0&&!(Number.isFinite(e)&&e>0))throw Ad(n,"a finite positive number",e,t)}function ri(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>=0))throw Ad(n,"a finite non-negative integer",e,t)}function rg(e,n){if(e!==void 0)return xe(e,n),Math.max(1,Math.floor(e))}function ag(e,n){return new mt.ValidationError({message:"intervalMs must be a finite positive number",diagnostics:n??kd,hint:"Omit intervalMs to use the default polling interval, or pass a value greater than 0.",cause:e})}function Xn(e,n){return dt(e,n),e===void 0?ig:Math.max(1,Math.floor(e))}function dt(e,n){if(e!==void 0&&(!Number.isFinite(e)||e<=0))throw ag(e,n)}function Fo(e){return e?.reason}function xd(e){return e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function og(e,n,t,i){try{return e(n).catch(r=>{throw t?.aborted===!0||xd(r)?i(r):r})}catch(r){return t?.aborted===true||xd(r)?Promise.reject(i(r)):Promise.reject(r)}}function sg(e){return e.catch(()=>{}),e}function Ie(e={}){let n=e.signal,t=rg(e.timeoutMs,"timeoutMs"),i=Xn(e.intervalMs,e.diagnostics),r={...n!==void 0?{signal:n}:{},...t!==void 0?{timeoutMs:t}:{},intervalMs:i,throwIfAborted(a){if(n?.aborted===true)throw a(Fo(n))},async waitInterval(a){if(r.throwIfAborted(a),i<=0)return;let o;await new Promise((d,u)=>{let l=setTimeout(d,i);o=()=>{clearTimeout(l),u(a(Fo(n)));},n?.addEventListener("abort",o,{once:true});}).finally(()=>{o!==void 0&&n?.removeEventListener("abort",o);});},runAttempt(a,o,d){return sg((async()=>{r.throwIfAborted(o);let u=t===void 0?void 0:new AbortController,l=u?.signal??n,c,p=new Promise((g,T)=>{c=T;}),m=()=>{let g=Fo(n);c?.(o(g)),u?.abort(g);},f;try{n?.addEventListener("abort",m,{once:!0});let g=[og(a,l,n,o),p];return t!==void 0&&u!==void 0&&g.push(new Promise((T,v)=>{f=setTimeout(()=>{let x=new Error("attempt timed out");v(d(x)),u.abort(x);},t);})),await Promise.race(g)}finally{f!==void 0&&clearTimeout(f),n?.removeEventListener("abort",m);}})())}};return r}var lg="trading-execution",cg="0x0000000000000000000000000000000000000000";function pg(e){return {sdkVersion:I,sourceTag:lg,chainId:e.chain.chainId}}function Gi(e,n,t){return {message:n,diagnostics:pg(e),...t!==void 0?{hint:t}:{}}}function Fn(e,n){return e.toLowerCase()===n.toLowerCase()}function Xr(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&n!==null&&"address"in n){let t=n.address;if(typeof t=="string")return t}}}function Yr(e,n,t){if(Fn(n,cg))throw new mt.ValidationError(Gi(e,`${t} cannot be the zero address`))}function Id(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function lt(e,n,t){if(!(typeof n!="object"||n===null)&&Id(n,"trader"))throw new mt.ValidationError(Gi(e,`${t} options cannot include trader`,"Use delegation: { trader } instead."))}function Zr(e,n,t){if(!(typeof n!="object"||n===null)&&Id(n,"delegation"))throw new mt.ValidationError(Gi(e,`${t} options cannot include delegation`,"Pass delegation: { trader } when preparing the transaction or initiating the action."))}function Jr(e,n){lt(e,n,"trading prepare");let t=n?.account??e.account??Xr(e.walletClient);if(t!==void 0&&Yr(e,t,"sender"),n?.delegation===void 0)return t===void 0?{mode:"direct"}:{mode:"direct",trader:t,sender:t};let i=n.delegation.trader;return Yr(e,i,"trader"),{mode:"delegated",trader:i,...t!==void 0?{sender:t}:{}}}function Od(e,n,t,i,r,a){lt(e,i,a),Zr(e,i,a);let o=t??n?.sender;if(o!==void 0&&i?.account!==void 0&&!Fn(i.account,o))throw new mt.WalletAccountMismatchError(Gi(e,`requested account ${i.account} does not match prepared sender ${o}`,"Send with the same account used to prepare the transaction."));let d=o??i?.account??e.account??Xr(r);if(d===void 0)throw new mt.MissingAccountError(Gi(e,`${a} requires an account`));Yr(e,d,"sender");let u=n?.trader??d;return Yr(e,u,"trader"),n?.mode==="delegated"?{mode:"delegated",trader:u,sender:d}:{mode:"direct",trader:u,sender:d}}var gg=1e3,bg=new Set(["executed","canceled","timed_out","identity_mismatch"]);function Bo(e){return bg.has(e.status)}function Qr(e){return Bo(e)?true:e.status==="timeout_available"&&e.canHandleTimeout===true}async function Vd(e,n){for await(let t of e.watch(n))if(t.phase==="terminal"||"result"in t&&t.result!==void 0&&Qr(t.result))return t.result;return e.waitTerminal(n)}function ct(e,n){return new mt.AbortError({message:"trading lifecycle was aborted",diagnostics:e.diagnostics(),...n!==void 0?{cause:n}:{}})}function Zn(e){return new mt.TimeoutError({message:"trading lifecycle timed out",diagnostics:e.diagnostics()})}function Cd(e,n,t){return new mt.ValidationError({message:n,hint:t,diagnostics:e.diagnostics()})}function Ki(e,n,t,i){let r=n;if(r?.account!==void 0&&r.delegation!==void 0)throw Cd(e,"tracking options cannot include both account and delegation","Use account for direct tracking or delegation: { trader } for delegated tracking.");let a=r?.delegation?.trader??r?.account;if(i!==void 0&&a!==void 0&&!Fn(i,a))throw Cd(e,"tracking identity conflicts with the recovered transaction identity","Use the same trader identity as the recovered or delegated transaction.");let o=i??a;if(n===void 0&&t===void 0&&o===void 0)return;if(o===void 0)return {...n??{},...t!==void 0?{timeoutMs:t}:{}};let{account:d,delegation:u,...l}=n??{};return {...l,account:o,...t!==void 0?{timeoutMs:t}:{}}}function Dd(e){return e?.maxAttempts===void 0?Number.POSITIVE_INFINITY:Math.max(0,e.maxAttempts)}function Ed(e){let n=e.filter(t=>typeof t=="number"&&Number.isFinite(t)&&t>0);if(n.length!==0)return Date.now()+Math.min(...n)}function Sd(e){return Ed([e?.maxDurationMs])}function Tg(e){return Ed([e?.timeoutMs,e?.maxDurationMs])}function No(e,n){let t=e.diagnostics();dt(n?.intervalMs,t),xe(n?.timeoutMs,"timeoutMs",t),xe(n?.maxDurationMs,"maxDurationMs",t),ri(n?.maxAttempts,"maxAttempts",t),Do(n?.confirmations,{chainId:t.chainId}),zr(n?.pollingIntervalMs,{chainId:t.chainId});}function ai(e){if(e!==void 0)return e-Date.now()}function ea(e,n){let t=[];e?.timeoutMs!==void 0&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0&&t.push(e.timeoutMs);let i=ai(n);if(i!==void 0&&i>0&&t.push(i),t.length!==0)return Math.max(1,Math.floor(Math.min(...t)))}function hg(e,n){let t=e?.intervalMs??gg,i=ai(n);return i===void 0?t:i<=0?0:Math.min(t,i)}function wg(e){return Bo(e)?"terminal":e.status==="unknown"?"unknown":"tracking"}async function Fd(e,n,t){if(n?.aborted===true)throw ct(e,n.reason);return n===void 0?t:new Promise((i,r)=>{let a=()=>n.removeEventListener("abort",o),o=()=>{a(),r(ct(e,n.reason));};n.addEventListener("abort",o,{once:true}),t.then(d=>{a(),i(d);},d=>{a(),r(d);});})}async function vg(e,n,t,i){let r=ea(t,i);return Fd(n,t?.signal,e.waitReceipt({...t?.signal!==void 0?{signal:t.signal}:{},...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...t?.pollingIntervalMs!==void 0?{pollingIntervalMs:t.pollingIntervalMs}:{},...r!==void 0?{timeoutMs:r}:{}}))}async function Wo(e,n,t,i){let r=ea(t,i);return Fd(n,t?.signal,e.orderId({...t?.signal!==void 0?{signal:t.signal}:{},...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...t?.pollingIntervalMs!==void 0?{pollingIntervalMs:t.pollingIntervalMs}:{},...r!==void 0?{timeoutMs:r}:{}}))}async function Md(e,n,t){let i=ai(t);if(i!==void 0&&i<=0)throw Zn(e);let r=hg(n,t);await Ie({...n?.signal!==void 0?{signal:n.signal}:{},diagnostics:e.diagnostics(),...r!==void 0?{intervalMs:r}:{}}).waitInterval(o=>ct(e,o));}async function _d(e,n,t,i){let r=ea(t,i);return Ie({...t?.signal!==void 0?{signal:t.signal}:{},...r!==void 0?{timeoutMs:r}:{},diagnostics:e.diagnostics(),...t?.intervalMs!==void 0?{intervalMs:t.intervalMs}:{}}).runAttempt(()=>e.trackOnce(n,Ki(e,t,r,e.expectedTrader)),o=>ct(e,o),()=>Zn(e))}function Ld(e,n){return {...e,track:async i=>{No(n,i);let r=Ki(n,i,void 0,n.expectedTrader),a=Tg(r),o=await Wo(e,n,r,a),d=ai(a);if(d!==void 0&&d<=0)throw Zn(n);let u=ea(r,a);return n.track(o,Ki(n,r,u,n.expectedTrader))},async waitTerminal(i){No(n,i);let r=Ki(n,i,void 0,n.expectedTrader),a=Dd(r);if(a<=0)throw Zn(n);let o=Sd(r),d=Ie({...r,diagnostics:n.diagnostics()});d.throwIfAborted(c=>ct(n,c));let u=await Wo(e,n,r,o),l=0;for(;;){d.throwIfAborted(m=>ct(n,m));let c=ai(o);if(c!==void 0&&c<=0)throw Zn(n);let p=await _d(n,u,r,o);if(l+=1,Bo(p))return p;if(l>=a)throw Zn(n);await Md(n,r,o);}},watch(i){No(n,i);let r=Ki(n,i,void 0,n.expectedTrader),a=false;return {async*[Symbol.asyncIterator](){if(a)throw new Error("async order lifecycle watch is single-use");a=true;let o=Dd(r),d=Sd(r),u=Ie({...r,diagnostics:n.diagnostics()}),l=0;u.throwIfAborted(m=>ct(n,m)),yield {phase:"submitted",hash:e.hash};let c=await vg(e,n,r,d);yield {phase:"mined",hash:e.hash,receipt:c};let p=n.orderIdFromReceipt?.(c)??await Wo(e,n,r,d);if(yield {phase:"indexed",hash:e.hash,orderId:p},o<=0)throw Zn(n);for(;;){u.throwIfAborted(T=>ct(n,T));let m=ai(d);if(m!==void 0&&m<=0)throw Zn(n);let f=await _d(n,p,r,d);l+=1;let g=wg(f);if(g==="terminal"){yield {phase:"terminal",hash:e.hash,orderId:p,result:f};return}if(g==="unknown"?yield {phase:"unknown",hash:e.hash,orderId:p,result:f}:yield {phase:"tracking",hash:e.hash,orderId:p,result:f},l>=o)throw Zn(n);await Md(n,r,d);}}}}}}function Uo(e){return En({...e.initialReceipt!==void 0?{initialReceipt:e.initialReceipt}:{},...e.initialReceiptConfirmations!==void 0?{initialReceiptConfirmations:e.initialReceiptConfirmations}:{},wait:n=>e.wait(e.hash,n),mapAbort:e.mapAbort,mapTimeout:e.mapTimeout})}function na(e){return {kind:"receipt",hash:e.hash,waitReceipt:Uo(e)}}function ta(e){let n=Uo(e),t={kind:"async_order",verb:e.verb,hash:e.hash,waitReceipt:n,orderId:async i=>e.orderIdFromReceipt(await n(i))};return e.lifecycle===void 0?t:Ld(t,{...e.lifecycle,orderIdFromReceipt:e.orderIdFromReceipt})}function ia(e){let n=Uo(e);return {kind:"trigger_order",hash:e.hash,waitReceipt:n,verifiedRef:async t=>e.verifiedRefFromReceipt(await n(t))}}var Ag="trading-track";function Ln(e){let n={sdkVersion:I,sourceTag:Ag,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Zi(e,n,t,i){return {message:n,diagnostics:Ln(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function jo(e,n){if(e.api!==void 0)return e;throw new mt.MissingApiClientError(Zi(e,`${n} requires an API client`,"Create the client with API support."))}function Ig(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(Zi(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function zo(e,n){throw new mt.AbortError(Zi(e,"trading tracking was aborted",void 0,n))}function Bd(e,n){return new mt.TimeoutError(Zi(e,"trading tracking timed out",void 0,n))}function oi(e,n){throw Bd(e,n)}function Ud(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function qd(e){return e instanceof mt.ReadModelNotReadyError?true:typeof e=="object"&&e!==null&&"code"in e&&(e.code==="READ_MODEL_NOT_READY"||e.code==="API_ORDER_NOT_FOUND")}function Og(e){return e instanceof mt.TimeoutError||e instanceof Error&&e.name==="WaitForTransactionReceiptTimeoutError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="TIMEOUT"}function Yi(e,n){n?.aborted===true&&zo(e,n.reason);}function Hd(e,n){let t={};return e?.signal!==void 0&&(t.signal=e.signal),n!==void 0&&(t.timeoutMs=n),e?.readinessPolicy!==void 0&&(t.readinessPolicy=e.readinessPolicy),t}function $d(e,n){let t=n;if(t?.account!==void 0&&t.delegation!==void 0)throw new mt.ValidationError({message:"recovery options cannot include both account and delegation",diagnostics:Ln(e),hint:"Use account for direct recovery or delegation: { trader } for delegated recovery."});return t?.delegation?.trader??t?.account}function Cg(e,n){if(n===void 0)return e;let{account:t,delegation:i,...r}=e??{};return {...r,account:n}}function jd(e){return [e?.timeoutMs,e?.maxDurationMs].filter(n=>typeof n=="number"&&Number.isFinite(n)&&n>0)}function Go(e){let n=jd(e);if(n.length!==0)return Date.now()+Math.min(...n)}function Xi(e){if(e!==void 0)return e-Date.now()}function Dg(e){return e?.maxAttempts!==void 0||e?.maxDurationMs!==void 0||e?.timeoutMs!==void 0}function Sg(e){return e?.maxAttempts!==void 0?Math.max(0,e.maxAttempts):jd(e).length>0?Number.POSITIVE_INFINITY:1}function Ko(e,n){let t=Ln(e);dt(n?.intervalMs,t),xe(n?.timeoutMs,"timeoutMs",t),xe(n?.maxDurationMs,"maxDurationMs",t),ri(n?.maxAttempts,"maxAttempts",t);}function Mg(e,n){return Xn(n?.intervalMs,Ln(e))}function Yo(e,n){let t=[];e?.timeoutMs!==void 0&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0&&t.push(e.timeoutMs);let i=Xi(n);if(i!==void 0&&i>0&&t.push(i),t.length!==0)return Math.max(1,Math.floor(Math.min(...t)))}function ra(e,n){let t=Xi(n);return t!==void 0&&t<=0&&oi(e),t}function zd(e,n,t){ra(e,t);let i=Yo(n,t);return i===void 0?n:{...n??{},timeoutMs:i}}async function Nd(e,n,t,i){let r=ra(e,t),a=zd(e,n,t);if(r===void 0)return i(a);let o;try{let d=new Promise((u,l)=>{o=setTimeout(()=>l(Bd(e)),Math.max(1,Math.floor(r)));});return await Promise.race([d,i(a)])}finally{o!==void 0&&clearTimeout(o);}}async function _g(e,n,t){if(Yi(e,t),n<=0)return;let i;await new Promise((r,a)=>{let o=setTimeout(r,n);i=()=>{clearTimeout(o),a(new mt.AbortError(Zi(e,"trading tracking was aborted",void 0,t?.reason)));},t?.addEventListener("abort",i,{once:true});}).finally(()=>{i!==void 0&&t?.removeEventListener("abort",i);});}function Gd(e,n){let t={order:e};return e.removeCollateral!==void 0&&(t.removeCollateral=e.removeCollateral),n!==void 0&&(t.diagnostics=n),t}function Wd(e,n){return {...Ln(e),...n!==void 0?{apiFreshness:n.freshness}:{}}}function Vg(e){if(typeof e=="object"&&e!==null&&"diagnostics"in e&&typeof e.diagnostics=="object")return e.diagnostics}function Eg(e){return e.terminalTradeId??e.positionRef?.tradeId??e.initiatedTradeId}function qo(e,n){return $.toString(e)===$.toString(n)}function Fg(e,n){return P.toNumber(e)===P.toNumber(n)}function Kd(e,n){return e.toLowerCase()===n.toLowerCase()}function Ho(e){return e.status==="pending_execution"||e.status==="timeout_available"||e.status==="executed"&&e.action==="open"&&e.positionRef===null}function Lg(e){return e.status==="executed"&&e.action==="open"&&e.positionRef===null}function Ng(e,n){return {wallet:n.wallet,pairIndex:n.pairIndex,index:n.index,tradeId:n.tradeId,chainId:e.chain.chainId,source:"api"}}async function Wg(e,n,t,i){if(n.status!=="executed")return {kind:"result",result:n};let r=n.order.positionRef;if(r==null)return {kind:"result",result:n};let a=Ng(e,r),o={...n,positionRef:a},d=Xi(i);if(d!==void 0&&d<=0)return {kind:"result",result:o};let u;try{u=await e.api.account.position(r.wallet,{pairIndex:r.pairIndex,index:r.index,tradeId:r.tradeId},Hd(t,Yo(t,i)));}catch(c){if(c instanceof mt.TimeoutError||qd(c))return {kind:"result",result:o};throw c}if(u.freshness.isStale)return {kind:"result",result:o};let l=u.data.status==="found"&&u.data.position?.kind==="open_position"?{...u.data.position,verifiedRef:u.data.position.verifiedRef??a}:void 0;if(l!==void 0&&t?.account!==void 0){let c=l.verifiedRef.wallet;if(!Kd(c,t.account))return {kind:"result",result:{status:"identity_mismatch",expectedWallet:t.account,actualWallet:c,...Gd(n.order,n.diagnostics)}}}return {kind:"result",result:{...o,...l!==void 0?{openedPosition:l}:{}}}}function Bg(e,n,t){let i=n.data,r=Gd(i,n.diagnostics??Ln(e));if(t?.account!==void 0&&!Kd(i.wallet,t.account))return {status:"identity_mismatch",expectedWallet:t.account,actualWallet:i.wallet,...r};if(t?.pairIndex!==void 0){let a=i.pairIndex??i.positionRef?.pairIndex;if(a===void 0||!Fg(t.pairIndex,a))return {status:"identity_mismatch",expectedPairIndex:t.pairIndex,...a!==void 0?{actualPairIndex:a}:{},...r}}if(t?.initiatedTradeId!==void 0){let a=i.initiatedTradeId;if(a!==void 0?!qo(t.initiatedTradeId,a):!Ho(i))return {status:"identity_mismatch",expectedTradeId:t.initiatedTradeId,...a!==void 0?{actualTradeId:a}:{},...r}}if(t?.terminalTradeId!==void 0){let a=i.terminalTradeId??i.positionRef?.tradeId;if(a!==void 0?!qo(t.terminalTradeId,a):!Ho(i))return {status:"identity_mismatch",expectedTradeId:t.terminalTradeId,...a!==void 0?{actualTradeId:a}:{},...r}}if(t?.expectedTradeId!==void 0){let a=Eg(i);if(a!==void 0?!qo(t.expectedTradeId,a):!Ho(i))return {status:"identity_mismatch",expectedTradeId:t.expectedTradeId,...a!==void 0?{actualTradeId:a}:{},...r}}switch(i.status){case "pending_execution":return {status:"pending_execution",...r};case "executed":return {status:"executed",...r};case "canceled":return {status:"canceled",...r};case "timeout_available":return {status:"timeout_available",canHandleTimeout:i.timeoutAvailable===true,...r};case "timed_out":return {status:"timed_out",...r};case "unknown":return {status:"unknown",order:i,...i.removeCollateral!==void 0?{removeCollateral:i.removeCollateral}:{},...r.diagnostics!==void 0?{diagnostics:r.diagnostics}:{}}}}async function Yd(e,n,t,i){try{let r=await e.api.orders.get(n,Hd(t,Yo(t,i)));if(r.freshness.isStale&&t?.readinessPolicy!=="ignore")return {kind:"lag",diagnostics:Wd(e,r)};let a=Bg(e,r,t);return a.status==="identity_mismatch"?{kind:"result",result:a}:Lg(r.data)?{kind:"lag",diagnostics:Wd(e,r)}:Wg(e,a,t,i)}catch(r){if(r instanceof mt.TimeoutError)throw r;if((Ud(r)||t?.signal?.aborted===true)&&zo(e,r),qd(r))return {kind:"lag",diagnostics:Vg(r)??Ln(e)};throw r}}async function Ot(e,n,t){let i=jo(e,"trading.trackOrder");Ko(e,t);let r=Go(t),a=Sg(t),o=Mg(e,t),d=Dg(t),u=0;for(Yi(e,t?.signal),a<=0&&oi(e);;){Yi(e,t?.signal);let l=Xi(r);l!==void 0&&l<=0&&oi(e),u+=1;let c=await Yd(i,n,t,r);if(c.kind==="result")return c.result;if(!d)return {status:"unknown",diagnostics:c.diagnostics??Ln(e)};u>=a&&oi(e);let p=Xi(r);p!==void 0&&p<=0&&oi(e),await _g(e,Math.min(o,p??o),t?.signal);}}async function oa(e,n,t){let i=jo(e,"trading.trackOrder");Ko(e,t);let r=Go(t);Yi(e,t?.signal);let a=await Yd(i,n,t,r);return a.kind==="result"?a.result:{status:"unknown",diagnostics:a.diagnostics??Ln(e)}}async function Xo(e,n,t){Yi(e,t?.signal);let i=$d(e,t),r=Ig(e,"trading.recoverTransaction"),a;try{a=await Jn(r,n,t,e.chain);}catch(o){throw (Ud(o)||t?.signal?.aborted===true)&&zo(e,o),Og(o)&&oi(e,o),o}return Zd(e,a,{...t,...i!==void 0?{expectedTrader:i}:{}})}async function Xd(e,n,t){jo(e,"trading.trackTransaction"),Ko(e,t);let i=$d(e,t),r=Go(t),a=await Nd(e,t,r,u=>Xo(e,n,u));if(ra(e,r),a.kind!=="async_order")return {status:"unknown",diagnostics:Ln(e)};let o=Cg(t,i),d=await Nd(e,o,r,u=>a.orderId(u));return ra(e,r),Ot(e,d,zd(e,o,r))}var $g="trading-receipts",Jd="0x0000000000000000000000000000000000000000",nl=/^(?:0|[1-9]\d*)$/;function nr(e,n){let t={sdkVersion:I,sourceTag:$g,chainId:e};return n?.chain.registryAddress!==void 0&&(t.registryAddress=n.chain.registryAddress),t}function K(e,n=0,t,i){throw new mt__namespace.ValidationError({message:e,diagnostics:nr(n,t),...i!==void 0?{cause:i}:{}})}function tn(e,n,t){throw new mt__namespace.IdentityMismatchError({message:e,diagnostics:nr(n,t)})}function ns(e,n,t,i){return new mt__namespace.AbortError({message:e,diagnostics:nr(n,t),...i!==void 0?{cause:i}:{}})}function ts(e,n,t,i){return new mt__namespace.TimeoutError({message:e,diagnostics:nr(n,t),...i!==void 0?{cause:i}:{}})}function vn(e,n){let t=D.DomfiTrading.find(i=>{let r=i;return r.type==="event"&&r.name===e&&(n===void 0||n(r))});return t===void 0?K(`DomfiTrading ABI is missing ${e} event`):t}var fn={marketOpen:vn("MarketOpenOrderInitiated"),marketClose:vn("MarketCloseOrderInitiated"),removeCollateral:vn("RemoveCollateralInitiated"),openTriggerPlaced:vn("OpenLimitPlaced",e=>e.inputs.some(n=>n.name==="order")),tpUpdated:vn("TpUpdated"),slUpdated:vn("SlUpdated"),topUpCollateral:vn("TopUpCollateralExecuted"),openLimitUpdated:vn("OpenLimitUpdated"),openLimitCanceled:vn("OpenLimitCanceled"),marketOpenTimeout:vn("MarketOpenTimeoutExecuted"),marketCloseTimeout:vn("MarketCloseTimeoutExecuted")},Jo={openMarket:fn.marketOpen,closeMarket:fn.marketClose,removeCollateral:fn.removeCollateral},sa={updateTakeProfit:[fn.tpUpdated],updateStopLoss:[fn.slUpdated],topUpCollateral:[fn.topUpCollateral],updateOpenLimitOrder:[fn.openLimitUpdated],cancelOpenLimitOrder:[fn.openLimitCanceled],handleTradeMarketTimeout:[fn.marketOpenTimeout,fn.marketCloseTimeout]},Qo={updateTakeProfit:{wallet:["trader",1],pairIndex:["pairIndex",2],tradeId:["tradeId",0],index:["index",3]},updateStopLoss:{wallet:["trader",1],pairIndex:["pairIndex",2],tradeId:["tradeId",0],index:["index",3]},topUpCollateral:{wallet:["trader",1],pairIndex:["pairIndex",2],tradeId:["tradeId",0]},updateOpenLimitOrder:{wallet:["trader",0],pairIndex:["pairIndex",1],index:["index",2]},cancelOpenLimitOrder:{wallet:["trader",0],pairIndex:["pairIndex",1],index:["index",2]}};function jg(e){return e==="openMarket"||e==="closeMarket"||e==="removeCollateral"}function zg(e){return e==="updateTakeProfit"||e==="updateStopLoss"||e==="topUpCollateral"||e==="updateOpenLimitOrder"||e==="cancelOpenLimitOrder"||e==="handleTradeMarketTimeout"}function Gg(e){return viem.toEventSelector(e).toLowerCase()}function Kg(e){return e.topics[0]?.toLowerCase()}function Yg(e){if(e===Hi.chainId)return Hi.contracts.DomfiTrading;if(e===$i.chainId)return $i.contracts.DomfiTrading}function da(e){return e.chain.contracts.DomfiTrading}function pt(e){let n=da(e);return {chainId:e.chain.chainId,...n!==void 0?{expectedTradingAddress:n}:{},deps:e}}function Xg(e,n,t){if(Kg(e)!==Gg(n))return false;if(t===void 0)return true;let i=St(e.address);return i!==void 0&&Qi(i,t)}function Zg(e,n,t,i){let r=ti(e.data,"receipt log data",(a,o)=>K(a,t,i,o));try{return viem.decodeEventLog({abi:[n],data:r,topics:e.topics,strict:!0}).args}catch(a){return K(`receipt log for ${n.name} could not be decoded`,t,i,a)}}function Dt(e,n,t){for(let i of e.logs)if(Xg(i,n,t.expectedTradingAddress))return {log:i,args:Zg(i,n,t.chainId,t.deps)}}function Jg(e,n,t,i){let r=Dt(e,n,i);return r!==void 0?r:K(t,i.chainId,i.deps)}function Re(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Nn(e){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="bigint"&&e>=0n&&e<=BigInt(Number.MAX_SAFE_INTEGER))return Number(e)}function si(e){if(typeof e=="bigint")return e;if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return BigInt(e)}function St(e){return kt(e)?e:void 0}function Qi(e,n){return e.toLowerCase()===n.toLowerCase()}function Ct(e,n){return Re(e,n[0],n[1])}function Qg(e,n,t,i){typeof t.logIndex!="number"&&K(`${e.name} logIndex is missing from receipt evidence`,i.chain.chainId,i);let r=t.blockNumber??n.blockNumber;return r!==void 0&&typeof r!="bigint"&&K(`${e.name} blockNumber is malformed in receipt evidence`,i.chain.chainId,i),{eventName:e.name,transactionHash:tr(n,t,i.chain.chainId,i),logIndex:t.logIndex,...r!==void 0?{blockNumber:r}:{}}}function es(e,n,t,i,r){e!==void 0&&Qi(e,n)||tn(t,i,r);}function er(e,n,t,i,r){e!==n&&tn(t,i,r);}function Ji(e,n,t,i,r){let a=$.toString(n);nl.test(a)||K("receipt tradeId evidence cannot prove non-decimal TradeId",i,r),!(e!==void 0&&e.toString()===a)&&tn(t,i,r);}function eb(e){return nl.test($.toString(e))}function nb(e,n){return P.toNumber(e)===P.toNumber(n)}function Qd(e,n){return $.toString(e)===$.toString(n)}function Zo(e,n){return K(`tracking ${n} conflicts with the recovered transaction identity`,e.chain.chainId,e)}function el(e,n,t){if(n===void 0)return t;let i={...t??{}};if(n.pairIndex!==void 0){let r=t?.pairIndex;r!==void 0&&!nb(r,n.pairIndex)&&Zo(e,"pairIndex"),i.pairIndex=n.pairIndex;}if(n.initiatedTradeId!==void 0){let r=t?.initiatedTradeId;r!==void 0&&!Qd(r,n.initiatedTradeId)&&Zo(e,"initiatedTradeId"),i.initiatedTradeId=n.initiatedTradeId;}if(n.terminalTradeId!==void 0){let r=t?.terminalTradeId;r!==void 0&&!Qd(r,n.terminalTradeId)&&Zo(e,"terminalTradeId"),i.terminalTradeId=n.terminalTradeId;}return i}function tb(e){if(!(e.pairIndex===void 0&&e.initiatedTradeId===void 0&&e.terminalTradeId===void 0))return {...e.pairIndex!==void 0?{pairIndex:e.pairIndex}:{},...e.initiatedTradeId!==void 0?{initiatedTradeId:e.initiatedTradeId}:{},...e.terminalTradeId!==void 0?{terminalTradeId:e.terminalTradeId}:{}}}function is(e,n,t){if(t!==void 0){if(n==="closeMarket"||n==="removeCollateral"){if(eb(t))return t;if(e.api!==void 0)return}if(e.api===void 0)return K(`${n} receipt recovery cannot prove initiatedTradeId without API tracking evidence`,e.chain.chainId,e)}}function ua(e,n,t){n!==void 0&&(e.api!==void 0&&t==="async_order"||K(`${t} receipt recovery cannot prove terminalTradeId`,e.chain.chainId,e));}function tr(e,n,t=0,i){let r=e.transactionHash??n?.transactionHash;return nn(r,"receipt transactionHash",(a,o)=>K(a,t,i,o))}function ib(e,n,t,i){let r=n.blockNumber??e.blockNumber,a=n.transactionIndex??e.transactionIndex,o=n.logIndex;return typeof r!="bigint"||typeof a!="number"||typeof o!="number"?K("trigger placement receipt log is missing log coordinates",t,i):{blockNumber:r,transactionIndex:a,logIndex:o}}function rb(e){if(e===1)return "limit";if(e===2)return "stop"}function ab(e,n,t){let i=si(e);return i===void 0?K("receipt log is missing orderId",n,t):Ke.parse(i.toString())}function ob(e,n,t){try{return P.from(e)}catch(i){return K("receipt log pairIndex is out of range",n,t,i)}}function sb(e,n,t){try{return Fe.from(e)}catch(i){return K("receipt log trigger index is out of range",n,t,i)}}async function Jn(e,n,t,i){At(t,i);let r=nn(n,"transaction hash",(l,c)=>K(l,i?.chainId??0,void 0,c));typeof e.waitForTransactionReceipt!="function"&&K("public client is missing waitForTransactionReceipt",i?.chainId??0);let a=e.waitForTransactionReceipt,o=cn(i,t?.pollingIntervalMs),d=t?.timeoutMs===0?0:Gr(t?.timeoutMs,i),u=Date.now();return Cn(e,r,({queued:l})=>{let c=d;if(l&&d!==void 0&&d>0){let p=d-(Date.now()-u);if(p<=0)throw new viem.WaitForTransactionReceiptTimeoutError({hash:r});c=p;}return a({hash:r,pollingInterval:o,...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...c!==void 0?{timeout:c}:{},...t?.signal!==void 0?{signal:t.signal}:{}})},t?.signal)}function ir(e,n={}){let t=n.chainId??n.deps?.chain.chainId??0,i=n.verb===void 0?Object.values(Jo):jg(n.verb)?[Jo[n.verb]]:[];for(let r of i){let a=Dt(e,r,{chainId:t,...n.expectedTradingAddress!==void 0?{expectedTradingAddress:n.expectedTradingAddress}:{},...n.deps!==void 0?{deps:n.deps}:{}});if(a!==void 0){if(n.expectedTrader!==void 0){let o=St(Re(a.args,"trader",1));if(o===void 0)return K("async order log is missing trader",t,n.deps);if(!Qi(o,n.expectedTrader))return tn("async order trader does not match expected trader",t,n.deps)}if(n.expectedPairIndex!==void 0){let o=Nn(Re(a.args,"pairIndex",2));er(o,P.toNumber(n.expectedPairIndex),"async order pairIndex does not match expected pair",t,n.deps);}if(n.expectedTradeId!==void 0){let o=si(Re(a.args,"tradeId",1));if(o===void 0)return K("async order log does not expose a tradeId",t,n.deps);Ji(o,n.expectedTradeId,"async order tradeId does not match expected trade",t,n.deps);}return ab(Re(a.args,"orderId",0),t,n.deps)}}return K("receipt does not contain an async order initiation log",t,n.deps)}function rr(e,n){let t=n.expectedTradingAddress??Yg(n.chainId),i=Jg(e,fn.openTriggerPlaced,"receipt does not contain an open trigger placement log",{chainId:n.chainId,...t!==void 0?{expectedTradingAddress:t}:{},...n.deps!==void 0?{deps:n.deps}:{}}),r=St(Re(i.args,"trader",0)),a=Nn(Re(i.args,"pairIndex",1)),o=Nn(Re(i.args,"index",2)),d=Re(i.args,"order",3),u=St(Re(d,"trader",0)),l=Nn(Re(d,"pairIndex",8)),c=Nn(Re(d,"index",9)),p=Nn(Re(d,"orderType",11));if(r===void 0||r===Jd||a===void 0||o===void 0||u===void 0||u===Jd||l===void 0||c===void 0||p===void 0)return K("trigger placement log is missing required identity proof",n.chainId);if(!Qi(r,u))return tn("trigger placement log does not prove wallet identity",n.chainId);if(a!==l)return tn("trigger placement log does not prove pair identity",n.chainId);if(o!==c)return tn("trigger placement log does not prove index identity",n.chainId);if(n.expectedWallet!==void 0&&!Qi(r,n.expectedWallet))return tn("trigger placement wallet does not match expected wallet",n.chainId);let m=rb(p);return m===void 0?tn("trigger placement log does not prove a limit or stop order type",n.chainId):n.expectedOrderType!==void 0&&m!==n.expectedOrderType?tn("trigger placement order type does not match expected order type",n.chainId):n.expectedPairIndex!==void 0&&a!==P.toNumber(n.expectedPairIndex)?tn("trigger placement pairIndex does not match expected pair",n.chainId):{wallet:r,pairIndex:ob(a,n.chainId),index:sb(o,n.chainId),chainId:n.chainId,orderType:m,initiatedTxHash:tr(e,i.log,n.chainId,n.deps),initiatedLog:ib(e,i.log,n.chainId),source:"receipt"}}function rs(e){return e.publicClient!==void 0?e.publicClient:K("recovered transaction handles require a public client",e.chain.chainId,e)}function tl(e,n,t){let i=tr(n,void 0,e.chain.chainId,e);return na({hash:i,initialReceipt:n,...t!==void 0?{initialReceiptConfirmations:t}:{},wait:(r,a)=>Jn(rs(e),r,a,e.chain),mapAbort:r=>ns("receipt wait was aborted",e.chain.chainId,e,r),mapTimeout:r=>ts("receipt wait timed out",e.chain.chainId,e,r)})}function il(e,n,t,i,r,a={}){let o=tr(n,void 0,e.chain.chainId,e),d=is(e,t,a.initiatedTradeId),u=c=>ir(c,{verb:t,...pt(e),...r!==void 0?{expectedTrader:r}:{},...a.pairIndex!==void 0?{expectedPairIndex:a.pairIndex}:{},...d!==void 0?{expectedTradeId:d}:{}}),l=tb(a);return ta({hash:o,verb:t,initialReceipt:n,...i!==void 0?{initialReceiptConfirmations:i}:{},wait:(c,p)=>Jn(rs(e),c,p,e.chain),mapAbort:c=>ns("receipt wait was aborted",e.chain.chainId,e,c),mapTimeout:c=>ts("receipt wait timed out",e.chain.chainId,e,c),orderIdFromReceipt:u,...e.api===void 0?{}:{lifecycle:{diagnostics:()=>nr(e.chain.chainId,e),...r!==void 0?{expectedTrader:r}:{},track:async(c,p)=>Ot(e,c,el(e,l,p)),trackOnce:async(c,p)=>oa(e,c,el(e,l,p))}}})}function rl(e,n,t,i,r,a){let o=tr(n,void 0,e.chain.chainId,e);return ia({hash:o,initialReceipt:n,...r!==void 0?{initialReceiptConfirmations:r}:{},wait:(d,u)=>Jn(rs(e),d,u,e.chain),mapAbort:d=>ns("receipt wait was aborted",e.chain.chainId,e,d),mapTimeout:d=>ts("receipt wait timed out",e.chain.chainId,e,d),verifiedRefFromReceipt:d=>{let u=da(e);return rr(d,{chainId:e.chain.chainId,...t!==void 0?{expectedOrderType:t}:{},...i!==void 0?{expectedWallet:i}:{},...a!==void 0?{expectedPairIndex:a}:{},...u!==void 0?{expectedTradingAddress:u}:{},deps:e})}})}function al(e,n,t,i,r,a,o){zg(t)||K(`receipt-only recovery does not support ${t}`,e.chain.chainId,e);let d=sa[t];for(let u of d){let l=Dt(n,u,pt(e));if(l!==void 0){if(t==="handleTradeMarketTimeout"&&(i!==void 0||r!==void 0||a!==void 0||o!==void 0)){let c=Re(l.args,"order",u.name==="MarketCloseTimeoutExecuted"?2:1),p=Re(c,"trade",3),m=St(Re(p,"trader",4)),f=Nn(Re(p,"pairIndex",6));i!==void 0&&es(m,i,`${u.name} wallet does not match expected trader`,e.chain.chainId,e),r!==void 0&&er(f,P.toNumber(r),`${u.name} pairIndex does not match expected pair`,e.chain.chainId,e),a!==void 0&&(u.name!=="MarketCloseTimeoutExecuted"&&K(`${u.name} does not expose a tradeId`,e.chain.chainId,e),Ji(si(Re(l.args,"tradeId",1)),a,`${u.name} tradeId does not match expected trade`,e.chain.chainId,e)),o!==void 0&&(u.name!=="MarketCloseTimeoutExecuted"&&K(`${u.name} does not expose a terminalTradeId`,e.chain.chainId,e),Ji(si(Re(l.args,"tradeId",1)),o,`${u.name} terminalTradeId does not match expected trade`,e.chain.chainId,e));}else if(i!==void 0){let c=Qo[t],p=St(Ct(l.args,c.wallet));es(p,i,`${u.name} wallet does not match expected trader`,e.chain.chainId,e);}if(t!=="handleTradeMarketTimeout"){let c=Qo[t];r!==void 0&&er(Nn(Ct(l.args,c.pairIndex)),P.toNumber(r),`${u.name} pairIndex does not match expected pair`,e.chain.chainId,e),a!==void 0&&(c.tradeId===void 0&&K(`${u.name} does not expose a tradeId`,e.chain.chainId,e),Ji(si(Ct(l.args,c.tradeId)),a,`${u.name} tradeId does not match expected trade`,e.chain.chainId,e)),o!==void 0&&K(`${u.name} does not expose a terminalTradeId`,e.chain.chainId,e);}return}}K(`receipt does not contain a ${t} completion log`,e.chain.chainId,e);}function ui(e,n,t){let i=t.verb;i==="handleTradeMarketTimeout"&&K("market timeout receipts are not action receipt-only evidence",e.chain.chainId,e);let r=Qo[i],a=sa[i];for(let o of a){let d=Dt(n,o,pt(e));if(d===void 0)continue;let u=d.args,l=St(Ct(u,r.wallet)),c=Nn(Ct(u,r.pairIndex));if(es(l,t.expected.wallet,`${o.name} wallet does not match expected action wallet`,e.chain.chainId,e),er(c,P.toNumber(t.expected.pairIndex),`${o.name} pairIndex does not match expected action pair`,e.chain.chainId,e),r.tradeId!==void 0&&!("tradeId"in t.expected)&&K(`${o.name} requires expected tradeId evidence`,e.chain.chainId,e),"tradeId"in t.expected&&(r.tradeId===void 0&&tn(`${o.name} does not expose a tradeId`,e.chain.chainId,e),Ji(si(Ct(u,r.tradeId)),t.expected.tradeId,`${o.name} tradeId does not match expected action trade`,e.chain.chainId,e)),r.index!==void 0&&!("index"in t.expected)&&K(`${o.name} requires expected index evidence`,e.chain.chainId,e),"index"in t.expected){r.index===void 0&&tn(`${o.name} does not expose an index`,e.chain.chainId,e);let p=Nn(Ct(u,r.index)),m=typeof t.expected.index=="number"?t.expected.index:Fe.toNumber(t.expected.index);er(p,m,`${o.name} index does not match expected action index`,e.chain.chainId,e);}return Qg(o,n,d.log,e)}K(`receipt does not contain a ${i} completion log`,e.chain.chainId,e);}function ub(e,n,t,i={}){for(let a of ["openMarket","closeMarket","removeCollateral"]){let o=Jo[a];if(Dt(n,o,pt(e))!==void 0){ua(e,i.terminalTradeId,"async_order");let d=is(e,a,i.initiatedTradeId);return ir(n,{verb:a,...pt(e),...i.expectedTrader!==void 0?{expectedTrader:i.expectedTrader}:{},...i.pairIndex!==void 0?{expectedPairIndex:i.pairIndex}:{},...d!==void 0?{expectedTradeId:d}:{}}),il(e,n,a,t,i.expectedTrader,i)}}if(Dt(n,fn.openTriggerPlaced,pt(e))!==void 0){i.initiatedTradeId!==void 0&&K("trigger placement receipt recovery cannot prove initiatedTradeId",e.chain.chainId,e),ua(e,i.terminalTradeId,"trigger placement");let a=da(e);return rr(n,{chainId:e.chain.chainId,...i.expectedTrader!==void 0?{expectedWallet:i.expectedTrader}:{},...i.pairIndex!==void 0?{expectedPairIndex:i.pairIndex}:{},...a!==void 0?{expectedTradingAddress:a}:{},deps:e}),rl(e,n,void 0,i.expectedTrader,t,i.pairIndex)}for(let a of Object.keys(sa))if(sa[a].some(d=>Dt(n,d,pt(e))))return al(e,n,a,i.expectedTrader,i.pairIndex,i.initiatedTradeId,i.terminalTradeId),tl(e,n,t);return K("receipt does not contain a supported DomFi trading event",e.chain.chainId,e)}function Zd(e,n,t={}){let i=t.expectedTrader??t.account,r={...i!==void 0?{expectedTrader:i}:{},...t.pairIndex!==void 0?{pairIndex:t.pairIndex}:{},...t.initiatedTradeId!==void 0?{initiatedTradeId:t.initiatedTradeId}:{},...t.terminalTradeId!==void 0?{terminalTradeId:t.terminalTradeId}:{}};switch(t.verb){case "openMarket":case "closeMarket":case "removeCollateral":{ua(e,t.terminalTradeId,"async_order");let a=is(e,t.verb,t.initiatedTradeId);return ir(n,{verb:t.verb,...pt(e),...i!==void 0?{expectedTrader:i}:{},...t.pairIndex!==void 0?{expectedPairIndex:t.pairIndex}:{},...a!==void 0?{expectedTradeId:a}:{}}),il(e,n,t.verb,t.confirmations,i,r)}case "openLimit":case "openStop":{t.initiatedTradeId!==void 0&&K("trigger placement receipt recovery cannot prove initiatedTradeId",e.chain.chainId,e),ua(e,t.terminalTradeId,"trigger placement");let a=t.verb==="openLimit"?"limit":"stop",o=da(e);return rr(n,{chainId:e.chain.chainId,expectedOrderType:a,...i!==void 0?{expectedWallet:i}:{},...t.pairIndex!==void 0?{expectedPairIndex:t.pairIndex}:{},...o!==void 0?{expectedTradingAddress:o}:{},deps:e}),rl(e,n,a,i,t.confirmations,t.pairIndex)}case "updateTakeProfit":case "updateStopLoss":case "topUpCollateral":case "updateOpenLimitOrder":case "cancelOpenLimitOrder":case "handleTradeMarketTimeout":return al(e,n,t.verb,i,t.pairIndex,t.initiatedTradeId,t.terminalTradeId),tl(e,n,t.confirmations);case void 0:return ub(e,n,t.confirmations,r)}return K("receipt recovery does not support this trading verb",e.chain.chainId,e)}var ft=100n,rn=1000000n,Mt=1000000000000n,Wn=1000000000000000000n,ol=10000000000000n,as=900n,sl="domfi-core@a8bba32d92af1f44ae625e839e4ca420aefe89c2";function Vt(e,n){return n===void 0?{status:"ok",code:e}:{status:"ok",code:e,message:n}}function _t(e,n){return {status:"violation",code:e,severity:"error",message:n}}function ul(e){let n=U.toRaw(e.leverage),t=U.toRaw(e.minLeverage),i=U.toRaw(e.maxLeverage);return n<t?_t("leverage_below_min","leverage is below market minimum"):n>i?_t("leverage_above_max","leverage is above market maximum"):Vt("leverage_bounds")}function dl(e){let n=pn.toRaw(e.notionalUsd),t=M.toRaw(e.minPositionSize);return n<t?_t("position_size_below_min","position size is below market minimum"):Vt("minimum_position_size")}function ll(e){return M.toRaw(e.collateral)>M.toRaw(e.maxAllowedCollateral)?_t("collateral_above_max","collateral is above market maximum"):Vt("max_collateral")}function cl(e){let n=Mn.toRaw(e.currentSideOi)*_.toRaw(e.price)/Wn,t=pn.toRaw(e.requestedNotional)*Mt,i=pn.toRaw(e.oiCap)*Mt;return n+t>i?_t("oi_cap_exceeded","open interest cap would be exceeded"):Vt("oi_cap")}function pl(e){return e.currentGroupCollateral===void 0?{status:"unchecked",code:"group_collateral_cap",reason:"missing_group_collateral"}:M.toRaw(e.currentGroupCollateral)+M.toRaw(e.requestedCollateral)>M.toRaw(e.groupMaxCollateral)?_t("group_collateral_cap_exceeded","group collateral cap would be exceeded"):Vt("group_collateral_cap")}function ml(e){let n=mn.toRaw(e.slippage),t=Vn.toRaw(e.maxSlP)*100n;return n>t?_t("slippage_above_max","slippage is above market maximum"):Vt("slippage_bounds")}function fl(e){return Ye.toRaw(e.closePercent),Vt("close_percent_bounds")}var lb=[68,77,70,82],cb=20,pb=8,mb=0xffffffffffffffffn,fb=2197175160,yb=gb();function la(e,n,t){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"referrals",chainId:t?.chainId??0},...{}})}function gb(){let e=new Uint32Array(256);for(let n=0;n<e.length;n+=1){let t=n;for(let i=0;i<8;i+=1)t=(t&1)===1?t>>>1^fb:t>>>1;e[n]=t>>>0;}return e}function bb(e){let n=4294967295;for(let t of e){let i=yb[(n^t)&255];if(i===void 0)throw new Error("invalid CRC32C table index");n=n>>>8^i;}return (n^4294967295)>>>0}function Tb(e){return `0x${Array.from(e,n=>n.toString(16).padStart(2,"0")).join("")}`}function hb(e,n){let t;return typeof e=="bigint"?t=e:typeof e=="number"?(Number.isSafeInteger(e)||la("referralCodeId must be a safe integer",void 0,n),t=BigInt(e)):typeof e=="string"?(/^(?:0|[1-9]\d*)$/.test(e)||la("referralCodeId must be an unsigned integer string",void 0,n),t=BigInt(e)):la("referralCodeId must be a bigint, number, or string",void 0,n),(t<0n||t>mb)&&la("referralCodeId must fit in uint64",void 0,n),t}function ca(e,n){let t=hb(e,n),i=new Uint8Array(cb);i.set(lb,0),i[4]=1,i[5]=0,i[6]=0,i[7]=pb;let r=new DataView(i.buffer,i.byteOffset,i.byteLength);return r.setBigUint64(8,t,false),r.setUint32(16,bb(i.subarray(0,16)),false),Tb(i)}var yl=1n;function di(e,n,t,i){if(n===void 0)return i(`${t} is required`);try{if(typeof n=="string")return e.toRaw(e.fromDecimal(n));if(typeof n=="bigint")return e.toRaw(e.fromRaw(n))}catch(r){return i(`${t} is invalid`,r instanceof Error?r.message:void 0)}return i(`${t} is invalid`)}function os(e,n,t){return Number.isInteger(e)?e:t(`${n} must be an integer`)}function Et(e,n,t){return di(_,e,n,t)}function ma(e,n,t){return di(M,e,n,t)}function wb(e,n,t){let i=di(U,e,n,t);return i>BigInt(Number.MAX_SAFE_INTEGER)?t(`${n} is too large`):Number(i)}function fa(e,n){try{return P.toNumber(P.from(os(e,"pairIndex",n)))}catch(t){return n("pairIndex is invalid",t instanceof Error?t.message:void 0)}}function Tl(e,n){try{return G.toNumber(G.from(os(e,"index",n)))}catch(t){return n("index is invalid",t instanceof Error?t.message:void 0)}}function hl(e,n){try{return Fe.toNumber(Fe.from(os(e,"index",n)))}catch(t){return n("index is invalid",t instanceof Error?t.message:void 0)}}function gl(e,n,t){return e===void 0?0n:Et(e,n,t)}function vb(e,n){return e==="long"?true:e==="short"?false:n("direction must be long or short")}function bl(e,n,t,i,r){e===0n||(n==="takeProfit"?i?e>t:e<t:i?e<t:e>t)||r(`${n} is on the wrong side of the open price`);}function ya(e,n){bl(e.takeProfitRaw,"takeProfit",e.openPriceRaw,e.buy,n),bl(e.stopLossRaw,"stopLoss",e.openPriceRaw,e.buy,n);}function ar(e,n,t,i={}){if(e===void 0)return i.optional===true?{status:"omitted"}:t(`${n} is required`);if(typeof e=="object"&&e!==null&&"clear"in e)return e.clear===true?{status:"provided",value:0n}:t(`${n} clear must be true`);let r=Et(e,n,t);return r===0n?t(`${n} must use { clear: true } to clear an existing trigger`):{status:"provided",value:r}}function pa(e,n,t,i){for(let r of n)e[r]!==void 0&&i(`${t} cannot include ${r}`);}function wl(e,n){let t=fa(e.pairIndex,n),i=vb(e.direction,n),r={pairIndex:t,buy:i,collateral:ma(e.collateral,"collateral",n),leverage:wb(e.leverage,"leverage",n),tp:gl(e.takeProfit,"takeProfit",n),sl:gl(e.stopLoss,"stopLoss",n),...e.referralCodeId!==void 0?{referralCodeId:e.referralCodeId}:{}};if(e.orderKind==="market"){pa(e,["entryPrice","triggerPrice","executionSlippage"],"market open",n);let o=e.wantedPrice!==void 0?Et(e.wantedPrice,"wantedPrice",n):void 0;return o!==void 0&&ya({takeProfitRaw:r.tp,stopLossRaw:r.sl,openPriceRaw:o,buy:i},n),{...r,verb:"openMarket",orderType:0,slippageP:di(mn,e.slippage,"slippage",n),warnings:[],...o!==void 0?{requestedOpenPrice:o}:{}}}pa(e,["wantedPrice","slippage","executionSlippage"],`${e.orderKind} open`,n);let a={code:"TRIGGER_ORDER_SLIPPAGE_COMPATIBILITY",message:"limit/stop open orders use a protocol-required slippage placeholder; it is not an execution guard",severity:"warning"};return e.orderKind==="limit"?(pa(e,["triggerPrice"],"limit open",n),{...r,verb:"openLimit",orderType:1,slippageP:yl,warnings:[a],requestedOpenPrice:Et(e.entryPrice,"entryPrice",n)}):(pa(e,["entryPrice"],"stop open",n),{...r,verb:"openStop",orderType:2,slippageP:yl,warnings:[a],requestedOpenPrice:Et(e.triggerPrice,"triggerPrice",n)})}function vl(e,n,t,i){let r=di(Ye,e.closePercent??Ye.full(),"closePercent",i);return {pairIndex:n,index:t,closePercent:Number(r),slippageP:di(mn,e.slippage,"slippage",i),...e.wantedPrice!==void 0?{wantedPrice:Et(e.wantedPrice,"wantedPrice",i)}:{}}}function Pl(e,n){return Et(e.targetPrice,"targetPrice",n)}var Pb=["8ca43d9286c58d302725cc047270fc78f60b56599bbe3999c50e10ec10136ae3"];function ss(e){return Pb.includes(e)}function ga(e){let n=e.apiSchemaHash??void 0;return n===void 0||n.length===0?{status:"unsupported",reason:"missing"}:ss(n)?{status:"supported",hash:n}:{status:"unsupported",reason:"unknown",hash:n}}function ba(e,n){let t=Rl(n.schema);return t!==void 0?t:e.rawState===void 0?{status:"unchecked",reason:"missing_raw_state"}:{status:"ok",input:{rawState:e.rawState}}}function xl(e,n){let t=Rl(n.schema);return t!==void 0?t:e.initialAccFundingRaw===void 0?{status:"unchecked",reason:"missing_initial_acc_funding"}:{status:"ok",input:{initialAccFundingRaw:e.initialAccFundingRaw}}}function Rl(e){if(!(e.status==="supported"&&ss(e.hash)))return {status:"unchecked",reason:"api_schema_unsupported",compatibility:e}}function an(e,n){if(e<=0n)throw new Error(`${n} must be positive`)}function yt(e){return e<0n?-e:e}function gt(e,n,t){if(t<=0n)throw new Error("denominator must be positive");let i=e*n,r=i/t,a=i%t;return i>0n&&a!==0n?r+1n:r}function us(e){let n=_n.toRaw(e.tradeSize),t=_n.toRaw(e.oiDelta),i=U.toRaw(e.leverage),r=It.toRaw(e.makerFeeP),a=It.toRaw(e.takerFeeP),o=U.toRaw(e.makerMaxLeverage);if(r<0n)throw new Error("makerFeeP must be non-negative");if(a<0n)throw new Error("takerFeeP must be non-negative");let d=0n,u=0n;return t*n<0n&&i<=o?t*(t+n)>=0n?d=yt(n):(d=yt(t),u=yt(t+n)):u=yt(n),M.fromRaw((r*d+a*u)/rn/100n)}function kl(e){let n=_.toRaw(e.price);if(n===0n)return {priceAfterImpact:_.fromRaw(0n),priceImpactP:0n};let t=Mn.toRaw(e.oiLong)*n/Wn/Mt,i=Mn.toRaw(e.oiShort)*n/Wn/Mt,r=M.toRaw(e.collateral)*U.toRaw(e.leverage)/100n;e.isLong?t=t+r:i=i+r;let a=t+i,o=a>0n?(t-i)/a:0n,d=ol*((Wn+yt(o)*Mt)/Wn),u=gt(n,d,Wn),l=e.isLong?n+u:n-u,c=yt(n-l)*100000000000000000000n/n;return {priceAfterImpact:_.fromRaw(l),priceImpactP:c}}function ds(e,n){if(typeof e=="bigint")return e;if(!Number.isSafeInteger(e))throw new Error(`${n} must be a safe integer`);return BigInt(e)}function Ta(e,n){let t=ds(e,n);if(t<0n)throw new Error(`${n} must be non-negative`);return t}function ls(e){if(e.openPriceRaw<=0n)throw new Error("openPriceRaw must be positive");let n=ds(e.leverageRaw,"leverageRaw"),t=ds(e.initialLeverageRaw,"initialLeverageRaw");an(n,"leverageRaw"),an(t,"initialLeverageRaw");let i=n>t?n:t,r=as*rn*n/i,o=(e.buy?e.markPriceRaw-e.openPriceRaw:e.openPriceRaw-e.markPriceRaw)*rn*n/e.openPriceRaw;return o>r?r:o}function cs(e){let n=e.collateralRaw,t=n+n*e.percentProfitRaw/rn/100n-e.fundingFeeRaw;return t<=e.liquidationMarginRaw?0n:t}function li(e){if(e.collateralRaw<0n)throw new Error("collateralRaw must be non-negative");let n=Ta(e.leverageRaw,"leverageRaw"),t=Ta(e.maxLeverageRaw,"maxLeverageRaw"),i=Ta(e.liqMarginThresholdP,"liqMarginThresholdP");if(t===0n)throw new Error("maxLeverageRaw must be positive");let r=i*n*rn/t;return e.collateralRaw*r/(100n*rn)}function Ft(e){let n=Ta(e.leverageRaw,"leverageRaw");if(e.openPriceRaw<0n)throw new Error("openPriceRaw must be non-negative");if(e.collateralRaw<=0n)throw new Error("collateralRaw must be positive");if(n===0n)throw new Error("leverageRaw must be positive");let t=li(e),i=e.collateralRaw-t-e.fundingFeeRaw;if(i<0n)throw new Error("targetCollateralAfterFees must be non-negative");let r=gt(e.openPriceRaw,i*ft,e.collateralRaw*n),a=e.buy?e.openPriceRaw-r:e.openPriceRaw+r;return a>0n?a:0n}function ps(e){return e.markValueRaw-e.collateralRaw}var Rb=/^(?:0|[1-9]\d*)(?:\.\d+)?$/,kb=/^(?:0|[1-9]\d*)$/;function Ab(e,n,t){if(e.startsWith("-")||e.startsWith("+"))throw new Error(`${t} must be unsigned`);if(!Rb.test(e))throw new Error(`invalid ${t}`);let[i="0",r=""]=e.split(".");if(r.length>n)throw new Error(`too many fractional digits: expected ${n}`);let a=10n**BigInt(n),o=r.length===0?0n:BigInt(r.padEnd(n,"0"));return BigInt(i)*a+o}function Ib(e,n){if(typeof e=="string"&&!kb.test(e))throw new Error(`invalid ${n} raw integer`);let t=typeof e=="bigint"?e:BigInt(e);if(t<0n)throw new Error(`${n} must be unsigned`);return t}var Lt={fromRaw(e){return Ib(e,"percent")},fromDecimal(e){return Ab(e,6,"percent")},toRaw(e){return e},toRawString(e){return e.toString()}},or=units.UsdP6;function ms(e){let n=M.toRaw(e.collateral),t=U.toRaw(e.leverage);return an(t,"leverage"),or.fromRaw(n*t/ft)}function Al(e){let n=or.toRaw(e.notionalUsd),t=U.toRaw(e.leverage);return an(t,"leverage"),M.fromRaw(gt(n,ft,t))}function Pn(e,n,t){return t===void 0?{status:"unchecked",code:e,reason:n}:{status:"unchecked",code:e,reason:n,message:t}}function sr(e){return {checks:[Pn("api_schema",e),Pn("market_constraints",e),Pn("market_raw_state",e),Pn("max_trades_per_pair","account_order_count_unavailable")]}}function Il(e){return e instanceof mt.ReadModelNotReadyError||e instanceof mt.TimeoutError||e instanceof mt.TransportError||e instanceof mt.ApiError&&(e.transient||e.httpStatus===404)||e instanceof Error&&e.name==="TimeoutError"}function _b(e){for(let n of e)if(n.status==="rejected"&&!Il(n.reason))return n.reason}function Vb(e,n){let t=e.rawState;if(t!==void 0)return n==="long"?t.groupCollateralLong:t.groupCollateralShort}function Eb(e,n,t){let i=t.pairIndex;if(P.toNumber(e.pairIndex)!==i||P.toNumber(n.pairIndex)!==i)throw new mt.ValidationError({message:"preflight API pair mismatch",diagnostics:{sdkVersion:I,sourceTag:"trading-preflight",chainId:0}})}function Fb(e,n){let t=pn.toRaw(e);return _n.fromRaw(n?t:-t)}function Lb(e,n){if(n===void 0||e.verb!=="openMarket")return;let t=e.slippageP,i=10000n;return e.buy?{max:_.fromRaw(gt(n,i+t,i))}:{min:_.fromRaw(n*(i-t)/i)}}function ha(e){return {value:e,source:"computed",parityTarget:sl}}function Nb(e){try{return U.fromRaw(e)}catch{return}}function Wb(e){try{return _.fromRaw(Ft(e))}catch{return}}async function Ol(e,n,t={}){if(e.api===void 0)return sr("api_unavailable");try{let i=await e.api.status.get(),r=ga(i.data);if(r.status!=="supported")return sr("api_schema_unsupported");let[a,o]=await Promise.allSettled([e.api.markets.get(P.from(n.pairIndex)),e.api.markets.state(P.from(n.pairIndex))]),d=_b([a,o]);if(d!==void 0)throw d;return a.status==="rejected"||o.status==="rejected"?sr("api_unavailable"):Bb(r,a.value.data,o.value.data,n,t.openPriceRaw===void 0?{}:{openPriceRaw:t.openPriceRaw})}catch(i){if(Il(i))return sr("api_unavailable");throw i}}function Bb(e,n,t,i,r={}){if(e.status!=="supported")return sr("api_schema_unsupported");Eb(n,t,i);let a=[],o=i.buy?"long":"short",d=M.fromRaw(i.collateral),u=U.fromRaw(BigInt(i.leverage));a.push(Pn("max_trades_per_pair","account_order_count_unavailable"));let l=ul({leverage:u,minLeverage:n.constraints.minLeverage,maxLeverage:n.constraints.maxLeverage});a.push(l);let c=U.toRaw(u),p=c>0n?ms({collateral:d,leverage:u}):void 0;p===void 0?a.push(Pn("minimum_position_size","invalid_leverage")):a.push(dl({notionalUsd:p,minPositionSize:n.constraints.minLevPosition}));let m=n.constraints.maxAllowedCollateral;m===void 0?a.push(Pn("max_collateral","missing_max_allowed_collateral")):a.push(ll({collateral:d,maxAllowedCollateral:m}));let f=n.constraints.maxSlP;f===void 0?a.push(Pn("slippage_bounds","missing_max_sl_p")):i.verb==="openMarket"?a.push(ml({slippage:mn.fromRaw(i.slippageP),maxSlP:f})):a.push(Pn("slippage_bounds","trigger_order_slippage_not_execution_guard"));let g=ba(t,{schema:e});if(g.status==="ok"){let y=g.input.rawState;p===void 0?a.push(Pn("oi_cap","invalid_leverage")):a.push(cl({currentSideOi:o==="long"?y.oiLong:y.oiShort,price:y.lastTradePrice,requestedNotional:p,oiCap:y.oiCap}));let w=Vb(t,o);a.push(pl({requestedCollateral:d,groupMaxCollateral:n.constraints.groupMaxCollateral,...w!==void 0?{currentGroupCollateral:w}:{}}));}else a.push(Pn("market_raw_state",g.reason));let T=Lb(i,r.openPriceRaw),v=g.status==="ok"?g.input.rawState:void 0;if(p===void 0||v===void 0)return {checks:a,...T!==void 0?{executionPriceBounds:T}:{}};let x=us({tradeSize:Fb(p,i.buy),oiDelta:v.lastOiDelta,leverage:u,makerFeeP:n.fees.opening.makerFeeP,takerFeeP:n.fees.opening.takerFeeP,makerMaxLeverage:n.fees.opening.makerMaxLeverage}),W=M.toRaw(x),re=M.toRaw(d);if(W>=re)return {checks:a,estimatedOpeningFee:ha(x),...T!==void 0?{executionPriceBounds:T}:{}};let ne=M.fromRaw(re-W),le=ms({collateral:ne,leverage:u}),ce=i.buy?pn.toRaw(le):-pn.toRaw(le),en=_n.fromRaw(_n.toRaw(v.lastOiDelta)+ce),H=us({tradeSize:_n.fromRaw(-ce),oiDelta:en,leverage:u,makerFeeP:n.fees.closing.makerFeeP,takerFeeP:n.fees.closing.takerFeeP,makerMaxLeverage:n.fees.closing.makerMaxLeverage}),pe=pn.toRaw(p)*100n/M.toRaw(ne),be=Nb(pe),te=r.openPriceRaw===void 0?void 0:kl({price:_.fromRaw(r.openPriceRaw),oiLong:v.oiLong,oiShort:v.oiShort,collateral:ne,leverage:u,isLong:i.buy}).priceAfterImpact,z=te!==void 0&&n.constraints.liqMarginThresholdP!==void 0?Wb({openPriceRaw:_.toRaw(te),buy:i.buy,collateralRaw:M.toRaw(ne),leverageRaw:c,fundingFeeRaw:0n,maxLeverageRaw:U.toRaw(n.constraints.maxLeverage),liqMarginThresholdP:Number(Vn.toRaw(n.constraints.liqMarginThresholdP))}):void 0;return {checks:a,estimatedOpeningFee:ha(x),estimatedClosingFee:ha(H),...be!==void 0?{resultingLeverage:ha(be)}:{},...T!==void 0?{executionPriceBounds:T}:{},...z!==void 0?{estimatedLiquidationPrice:z}:{}}}var Zb="trading-send",gs="0x0000000000000000000000000000000000000000",Jb=130n;function _l(e){let n={sdkVersion:I,sourceTag:Zb,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Xe(e,n,t,i){return {message:n,diagnostics:_l(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function Oe(e,n,t,i){throw new mt.ValidationError(Xe(e,n,t,i))}function $e(e,n){throw new mt.IdentityMismatchError(Xe(e,n))}function Qb(e,n,t){throw new mt.OracleFeeCapExceededError(Xe(e,`fresh oracle fee ${n} exceeds maxOracleFeeWei ${t}`,"Increase maxOracleFeeWei or re-prepare after oracle fees settle."))}function wa(e,n,t){throw new mt.ContractRevertError(Xe(e,n,void 0,t))}function Bn(e,n,t){throw xa(e,n,t)}function xa(e,n,t){return new mt.AbortError(Xe(e,n,void 0,t))}function bs(e,n,t){return new mt.TimeoutError(Xe(e,n,void 0,t))}function Qn(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function pi(e,n,t){n?.aborted===true&&Bn(e,t,n.reason);}function ci(e,n){return n===void 0?e:{...e,signal:n}}function ur(e){return typeof e=="object"&&e!==null&&"code"in e&&"kind"in e&&"diagnostics"in e}function eT(e,n){return typeof n.estimateContractGas=="function"?n.estimateContractGas:()=>Oe(e,"public client is missing estimateContractGas")}function nT(e,n){return typeof n.estimateGas=="function"?n.estimateGas:()=>Oe(e,"public client is missing estimateGas")}function tT(e,n){return typeof n.sendTransaction=="function"?n.sendTransaction:()=>Oe(e,"wallet client is missing sendTransaction")}function iT(e,n){let t=n.simulateContract;return typeof t=="function"?i=>t.call(n,i):()=>Oe(e,"public client is missing simulateContract")}function Vl(e,n){let t=n.writeContract;return typeof t=="function"?i=>t.call(n,i):()=>Oe(e,"wallet client is missing writeContract")}function Cl(e){return e*Jb/100n}function Ts(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(Xe(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function El(e,n,t){if(n!==void 0)return e.wrapWalletClient?.(n)??n;let i=e.walletClient;if(i!==void 0)return i;throw new mt.MissingWalletClientError(Xe(e,`${t} requires a wallet client`,"Pass walletClient to createDomfiClient or prepared.send()."))}function Fl(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function rT(e,n,t,i,r,a){let o=i?.account??t??e.account??Fl(n);if(o!==void 0)return o;throw new mt.MissingAccountError(Xe(e,`${r} requires an account`,"Pass account to createDomfiClient, pass opts.account, or use a connected wallet client."))}function Ll(e,n){let t=n.chain?.id;if(!(t===void 0||t===e.chain.chainId))throw new mt.WalletChainMismatchError(Xe(e,`wallet client chain ${t} does not match DomFi chain ${e.chain.chainId}`,"Use a wallet client connected to the same chain as createDomfiClient."))}function Nl(e,n,t){let i=Fl(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new mt.WalletAccountMismatchError(Xe(e,`wallet client account ${i} does not match requested account ${t}`,"Use the connected wallet account or pass the matching account option."))}function Wl(e,n){let t=e.account;return typeof t=="object"&&t!==null&&"address"in t&&typeof t.address=="string"&&t.address.toLowerCase()===n.toLowerCase()?t:n}function aT(e,n,t){let i=t.positionRef??t.triggerRef;i!==void 0&&(i.chainId!==e.chain.chainId&&$e(e,`verified ref chain ${i.chainId} does not match SDK chain ${e.chain.chainId}`),Fn(i.wallet,n)||$e(e,`trader ${n} does not match verified ref wallet ${i.wallet}`));}function Un(e,n){let t=e.chain.contracts[n];return t!==void 0?t:Oe(e,`chain profile is missing ${n} contract address`)}function va(e,n){return typeof n.readContract!="function"&&Oe(e,"public client is missing readContract"),n.readContract}function oT(e,n){return typeof n.getBlock!="function"&&Oe(e,"public client is missing getBlock"),n.getBlock}function sT(e){return typeof e.multicall=="function"?e.multicall:void 0}function Le(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Bl(e){return viem.decodeFunctionData({abi:D.DomfiTrading,data:e.data})}function Ul(e,n,t){return na({hash:t,wait:(i,r)=>Jn(n,i,r,e.chain),mapAbort:i=>xa(e,"receipt wait was aborted",i),mapTimeout:i=>bs(e,"receipt wait timed out",i)})}function uT(e,n,t,i,r){return ta({hash:i,verb:t,wait:(o,d)=>Jn(n,o,d,e.chain),mapAbort:o=>xa(e,"receipt wait was aborted",o),mapTimeout:o=>bs(e,"receipt wait timed out",o),orderIdFromReceipt:o=>ir(o,{verb:t,chainId:e.chain.chainId,expectedTradingAddress:Un(e,"DomfiTrading"),...r!==void 0?{expectedTrader:r}:{}}),...e.api===void 0?{}:{lifecycle:{diagnostics:()=>_l(e),...r!==void 0?{expectedTrader:r}:{},track:async(o,d)=>Ot(e,o,d),trackOnce:async(o,d)=>oa(e,o,d)}}})}function dT(e,n,t,i,r){return ia({hash:i,wait:(a,o)=>Jn(n,a,o,e.chain),mapAbort:a=>xa(e,"receipt wait was aborted",a),mapTimeout:a=>bs(e,"receipt wait timed out",a),verifiedRefFromReceipt:a=>rr(a,{chainId:e.chain.chainId,expectedWallet:r,expectedOrderType:t==="openLimit"?"limit":"stop",expectedTradingAddress:Un(e,"DomfiTrading")})})}function Dl(e,n,t,i,r){return t==="openMarket"||t==="closeMarket"||t==="removeCollateral"?uT(e,n,t,i,r):t==="openLimit"||t==="openStop"?dT(e,n,t,i,r):Ul(e,n,i)}function lT(e,n){return {address:Un(e,"DomfiPairsStorage"),abi:D.DomfiPairsStorage,functionName:"pairOracleFee",args:[n]}}function ql(e,n){return {key:"oracleFee",call:lT(e,n),assign:(t,i)=>{t.oracleFee=i;}}}function cT(e,n,t){let i=P.toNumber(t.pairIndex),r=G.toNumber(t.index);n.push({key:"positionTrade",call:{address:Un(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"openTrades",args:[t.wallet,i,r]},assign:(a,o)=>{a.positionTrade=o;}},{key:"positionInfo",call:{address:Un(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"openTradesInfo",args:[t.wallet,i,r]},assign:(a,o)=>{a.positionInfo=o;}});}function pT(e,n,t){n.push({key:"triggerSlot",call:{address:Un(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenLimitOrder",args:[t.wallet,P.toNumber(t.pairIndex),Fe.toNumber(t.index)]},assign:(i,r)=>{i.triggerSlot=r;},onError:(i,r)=>(Qn(r)&&Bn(i,"prepared trading send was aborted",r),$e(i,"trigger slot does not match verified trigger ref"))});}function mT(e,n,t){n.push({key:"balance",call:{address:e.chain.collateral.tokenAddress,abi:D.IERC20,functionName:"balanceOf",args:[t]},assign:(i,r)=>{i.balance=r;}},{key:"allowance",call:{address:e.chain.collateral.tokenAddress,abi:D.IERC20,functionName:"allowance",args:[t,e.chain.collateral.tradingStorageSpender]},assign:(i,r)=>{i.allowance=r;}});}function Hl(e,n,t){if(ur(t)&&t.code==="VALIDATION_ERROR"||n.onError===void 0)return t;try{n.onError(e,t);}catch(i){return i}}async function fs(e,n,t,i){try{return {status:"fulfilled",value:await va(e,n)(ci(t.call,i))}}catch(r){return {status:"rejected",reason:Hl(e,t,r)}}}function fT(e,n,t){if(typeof t!="object"||t===null||!("status"in t))return {status:"fulfilled",value:t};let i=t;return i.status==="success"?{status:"fulfilled",value:i.result}:i.status==="failure"?{status:"rejected",reason:Hl(e,n,i.error)}:{status:"fulfilled",value:t}}function Pa(e,n,t){if(t.status==="fulfilled"){n.assign(e,t.value);return}e.errors={...e.errors,[n.key]:t.reason};}function yT(e,n,t){e.pending={...e.pending,[n.key]:t.then(i=>{Pa(e,n,i);})};}async function mi(e,n){await e.pending?.[n];}function fi(e,n){return e.errors?.[n]}function $l(e,n,t,i){if(t.feeCharging)return n.estimatedOracleFeeWei===void 0&&i?.maxOracleFeeWei===void 0?Oe(e,"fee-charging prepared transaction is missing a prepare-time oracle fee estimate","Pass maxOracleFeeWei explicitly or re-prepare the transaction."):t.feePairIndex===void 0?Oe(e,"fee-charging prepared transaction is missing pair index"):{pairIndex:t.feePairIndex,cap:i?.maxOracleFeeWei??n.estimatedOracleFeeWei}}async function gT(e,n,t,i,r,a,o){let d=[];if(t.positionRef!==void 0&&cT(e,d,t.positionRef),t.triggerRef!==void 0&&pT(e,d,t.triggerRef),r!==void 0&&d.push(ql(e,r.pairIndex)),a!==void 0&&mT(e,d,i),d.length===0)return {};if(d.length===1){let m=d[0],f=await fs(e,n,m,o),g={};return Pa(g,m,f),g}let u=d.map(m=>m.call),l=sT(n);if(l===void 0){let m={};for(let f of d)yT(m,f,fs(e,n,f,o));return m}let c=(await l(ci({contracts:u,allowFailure:true},o))).map((m,f)=>fT(e,d[f],m)),p={};for(let[m,f]of c.entries())Pa(p,d[m],f);return p}async function hs(e,n,t,i,r){let a=await va(e,n)(ci({address:Un(e,"DomfiTrading"),abi:D.DomfiTrading,functionName:"delegations",args:[t]},r));if(!(typeof a=="string"&&Fn(a,i)))return Oe(e,`account ${i} is not delegate for trader ${t}`)}async function bT(e,n,t){await mi(t,"balance"),await mi(t,"allowance");let i=fi(t,"balance");if(i!==void 0)throw i;let r=fi(t,"allowance");if(r!==void 0)throw r;let{balance:a,allowance:o}=t;(typeof a!="bigint"||typeof o!="bigint")&&Oe(e,"collateral balance or allowance read returned invalid data"),a<n&&Oe(e,"collateral balance is below the amount required for this prepared transaction"),o<n&&Oe(e,"collateral allowance is below the amount required for this prepared transaction");}async function TT(e,n,t){await mi(t,"positionTrade"),await mi(t,"positionInfo");let i=fi(t,"positionTrade");if(i!==void 0)throw i;let r=fi(t,"positionInfo");if(r!==void 0)throw r;let a=P.toNumber(n.pairIndex),o=G.toNumber(n.index),d=t.positionTrade,u=t.positionInfo,l=Le(d,"trader",4),c=Le(d,"pairIndex",6),p=Le(d,"index",7),m=Le(u,"tradeId",0),f=Le(u,"beingMarketClosed",6);(l===void 0||l===gs||l.toLowerCase()!==n.wallet.toLowerCase())&&$e(e,"open trade slot wallet does not match verified position ref"),c!==a&&$e(e,"open trade slot pairIndex does not match verified position ref"),p!==o&&$e(e,"open trade slot index does not match verified position ref"),(m===void 0||m.toString()!==$.toString(n.tradeId))&&$e(e,"open trade slot tradeId does not match verified position ref"),f===true&&$e(e,"open trade slot has a detectable pending market mutation");}async function hT(e,n,t,i){await mi(t,"triggerSlot");let r=fi(t,"triggerSlot");if(r!==void 0)throw r;let a=P.toNumber(n.pairIndex),o=Fe.toNumber(n.index),d=n.orderType==="limit"?1:2,u=t.triggerSlot,l=Le(u,"trader",0),c=Le(u,"pairIndex",8),p=Le(u,"index",9),m=Le(u,"orderType",11);(l===void 0||l===gs||l.toLowerCase()!==n.wallet.toLowerCase()||c!==a||p!==o||m!==d)&&$e(e,"trigger slot does not match verified trigger ref");let f=Le(u,"tp",5),g=Le(u,"sl",6);i?.tp!==void 0&&f!==i.tp&&$e(e,"trigger slot TP changed after prepare"),i?.sl!==void 0&&g!==i.sl&&$e(e,"trigger slot SL changed after prepare");}async function wT(e,n,t){n.positionRef!==void 0&&await TT(e,n.positionRef,t),n.triggerRef!==void 0&&await hT(e,n.triggerRef,t,n.preservedTrigger);}async function jl(e,n,t){if(n===void 0)return;await mi(t,"oracleFee");let i=fi(t,"oracleFee");if(i!==void 0)throw i;let r=t.oracleFee;return typeof r!="bigint"?Oe(e,"pair oracle fee read returned invalid data"):n.cap!==void 0&&r>n.cap?Qb(e,r,n.cap):r}async function vT(e,n,t,i,r){if(!i.feeCharging)return t.value;let a=$l(e,t,i,r);if(a===void 0)return;let o=ql(e,a.pairIndex),d={};return Pa(d,o,await fs(e,n,o,r?.signal)),jl(e,a,d)}async function zl(e,n,t,i){pi(e,i?.signal,"prepared trading simulation was aborted"),lt(e,i,"prepared trading simulation"),Zr(e,i,"prepared trading simulation");let r=Ts(e,"prepared trading simulation"),a=t.preparedSender??n.preparedAccount;if(a!==void 0&&i?.account!==void 0&&!Fn(i.account,a))throw new mt.WalletAccountMismatchError(Xe(e,`requested account ${i.account} does not match prepared sender ${a}`,"Simulate with the same account used to prepare the transaction."));let o=a??i?.account??e.account;if(o===void 0)throw new mt.MissingAccountError(Xe(e,"prepared trading simulation requires an account","Pass opts.account or prepare with an account."));if(t.executionMode==="delegated"){t.preparedTrader===void 0&&Oe(e,"delegated prepared transaction is missing trader metadata");try{await hs(e,r,t.preparedTrader,o,i?.signal);}catch(c){throw (i?.signal?.aborted===true||Qn(c))&&Bn(e,"prepared trading simulation was aborted",c),c}}let d=Bl(n),u;try{u=await vT(e,r,n,t,i),pi(e,i?.signal,"prepared trading simulation was aborted");}catch(c){throw (i?.signal?.aborted===true||Qn(c))&&Bn(e,"prepared trading simulation was aborted",c),c}let l={address:n.to,abi:D.DomfiTrading,functionName:d.functionName,args:d.args,account:o,...u!==void 0?{value:u}:{},...t.dataSuffix!==void 0?{dataSuffix:t.dataSuffix}:{},...i?.signal!==void 0?{signal:i.signal}:{}};try{let c=await iT(e,r)(l);return {request:{to:n.to,data:n.data,account:o,...u!==void 0?{value:u}:{}},...c.result!==void 0?{result:c.result}:{},warnings:t.warnings}}catch(c){if((i?.signal?.aborted===true||Qn(c))&&Bn(e,"prepared trading simulation was aborted",c),ur(c))throw c;return wa(e,"prepared trading simulation reverted",c)}}async function Gl(e,n,t,i,r){pi(e,r?.signal,"prepared trading send was aborted"),lt(e,r,"prepared trading send"),Zr(e,r,"prepared trading send");let a=Ts(e,"prepared trading send"),o=El(e,i,"prepared trading send"),d=Od(e,t.preparedTrader===void 0?void 0:{mode:t.executionMode??"direct",trader:t.preparedTrader,...t.preparedSender!==void 0?{sender:t.preparedSender}:{}},t.preparedSender??n.preparedAccount,r,o,"prepared trading send"),u=d.sender;Ll(e,o),Nl(e,o,u),aT(e,d.trader,t);let l=Wl(o,u),c,p;try{c=$l(e,n,t,r);}catch(T){p=T;}let m=p===void 0&&t.approvalAmountRaw!==void 0&&r?.skipApprovalCheck!==true?t.approvalAmountRaw:void 0,f;try{d.mode==="delegated"&&await hs(e,a,d.trader,d.sender,r?.signal);let T=await gT(e,a,t,d.trader,c,m,r?.signal);if(await wT(e,t,T),p!==void 0)throw p;f=await jl(e,c,T),m!==void 0&&await bT(e,m,T),pi(e,r?.signal,"prepared trading send was aborted");}catch(T){throw (r?.signal?.aborted===true||Qn(T))&&Bn(e,"prepared trading send was aborted",T),T}if(t.hasReferralTrailer===true)try{let T=r?.gas??Cl(await nT(e,a)({to:n.to,data:n.data,account:u,...f!==void 0?{value:f}:{},...r?.nonce!==void 0?{nonce:r.nonce}:{},...r?.maxFeePerGas!==void 0?{maxFeePerGas:r.maxFeePerGas}:{},...r?.signal!==void 0?{signal:r.signal}:{}})),v=await tT(e,o)({to:n.to,data:n.data,account:l,chain:null,...f!==void 0?{value:f}:{},gas:T,...r?.nonce!==void 0?{nonce:r.nonce}:{},...r?.maxFeePerGas!==void 0?{maxFeePerGas:r.maxFeePerGas}:{},...r?.signal!==void 0?{signal:r.signal}:{}});return Dl(e,a,n.verb,v,d.trader)}catch(T){if((r?.signal?.aborted===true||Qn(T))&&Bn(e,"prepared trading send was aborted",T),ur(T))throw T;return wa(e,"prepared trading raw send reverted",T)}let g=Bl(n);try{let T=r?.gas??Cl(await eT(e,a)({address:n.to,abi:D.DomfiTrading,functionName:g.functionName,args:g.args,account:u,...f!==void 0?{value:f}:{},...r?.nonce!==void 0?{nonce:r.nonce}:{},...r?.maxFeePerGas!==void 0?{maxFeePerGas:r.maxFeePerGas}:{},...r?.signal!==void 0?{signal:r.signal}:{}})),v=await Vl(e,o)({address:n.to,abi:D.DomfiTrading,functionName:g.functionName,args:g.args,account:l,chain:null,...f!==void 0?{value:f}:{},gas:T,...r?.nonce!==void 0?{nonce:r.nonce}:{},...r?.maxFeePerGas!==void 0?{maxFeePerGas:r.maxFeePerGas}:{},...r?.signal!==void 0?{signal:r.signal}:{}});return Dl(e,a,n.verb,v,d.trader)}catch(T){if((r?.signal?.aborted===true||Qn(T))&&Bn(e,"prepared trading send was aborted",T),ur(T))throw T;return wa(e,"prepared trading write reverted",T)}}function PT(e,n){try{return BigInt(Ke.toString(n))}catch(t){return Oe(e,"market timeout orderId must be an integer string",void 0,t)}}async function xT(e,n,t,i,r){let a=await va(e,n)(ci({address:Un(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"pendingMarketOrders",args:[i]},r)),o=Le(a,"blockNumber",0),d=Le(a,"trade",3),u=Le(d,"trader",4),l=Le(d,"pairIndex",6),c=Le(d,"collateral",0),p=P.toNumber(t.pairIndex);if(o===void 0||o<=0n||u===void 0||u===gs||u.toLowerCase()!==t.wallet.toLowerCase()||l!==p||c===void 0||c<=0n)return $e(e,"pending market order slot does not prove timeout identity");let m=await va(e,n)(ci({address:Un(e,"DomfiTrading"),abi:D.DomfiTrading,functionName:"marketOrdersTimeout"},r)),f;if(typeof m=="bigint"&&m>=0n&&m<=65535n)f=m;else if(typeof m=="number"&&Number.isSafeInteger(m)&&m>=0&&m<=65535)f=BigInt(m);else return Oe(e,"market timeout read returned invalid data");let g=await oT(e,n)(ci({},r));if(g.number===void 0||g.number<=o+f)return $e(e,"pending market order is not yet eligible for timeout handling")}async function Kl(e,n,t){pi(e,t?.signal,"market timeout send was aborted"),lt(e,t,"trading.handleTradeMarketTimeout");let i=Ts(e,"trading.handleTradeMarketTimeout"),r=El(e,void 0,"trading.handleTradeMarketTimeout"),a=rT(e,r,void 0,t,"trading.handleTradeMarketTimeout"),o=t?.delegation===void 0?{mode:"direct",trader:n.wallet,sender:a}:{mode:"delegated",trader:t.delegation.trader,sender:a};Ll(e,r),Nl(e,r,a);let d=Wl(r,a);if(!Fn(o.trader,n.wallet))return $e(e,`trader ${o.trader} does not match timeout ref wallet ${n.wallet}`);if(o.mode==="direct"&&!Fn(a,n.wallet))return $e(e,`send account ${a} does not match timeout ref wallet ${n.wallet}`);let u=PT(e,n.orderId);try{o.mode==="delegated"&&await hs(e,i,o.trader,o.sender,t?.signal),await xT(e,i,n,u,t?.signal),pi(e,t?.signal,"market timeout send was aborted");}catch(l){throw (t?.signal?.aborted===true||Qn(l))&&Bn(e,"market timeout send was aborted",l),l}try{let l=viem.encodeFunctionData({abi:D.DomfiTrading,functionName:"handleTradeMarketTimeout",args:[u]}),c=await Vl(e,r)({address:Un(e,"DomfiTrading"),abi:D.DomfiTrading,functionName:o.mode==="delegated"?"delegatedAction":"handleTradeMarketTimeout",args:o.mode==="delegated"?[o.trader,l]:[u],account:d,chain:null,...t?.gas!==void 0?{gas:t.gas}:{},...t?.nonce!==void 0?{nonce:t.nonce}:{},...t?.maxFeePerGas!==void 0?{maxFeePerGas:t.maxFeePerGas}:{},...t?.signal!==void 0?{signal:t.signal}:{}});return Ul(e,i,c)}catch(l){if((t?.signal?.aborted===true||Qn(l))&&Bn(e,"market timeout send was aborted",l),ur(l))throw l;return wa(e,"market timeout write reverted",l)}}var AT="trading-prepare",IT="0x0000000000000000000000000000000000000000",lr=`0x${"00".repeat(32)}`,OT=6e4;function CT(e){let n={sdkVersion:I,sourceTag:AT,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Jl(e,n,t,i){return {message:n,diagnostics:CT(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function j(e,n,t,i){throw new mt.ValidationError(Jl(e,n,t,i))}function et(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(Jl(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function cr(e,n){let t=e.chain.contracts[n];return t!==void 0?t:j(e,`chain profile is missing ${n} contract address`)}function gi(e,n){return typeof n.readContract!="function"&&j(e,"public client is missing readContract"),n.readContract}function DT(e,n){return typeof n.getBlock!="function"&&j(e,"public client is missing getBlock"),n.getBlock}function ST(e){let n=e.multicall;return typeof n=="function"?n:void 0}function yi(e){return e.catch(()=>{}),e}async function vs(e,n,t){let i=ST(e);if(i===void 0)return n();let r=await t(),a=await i({contracts:r.calls,allowFailure:false});return r.decode(a)}function ws(e){return typeof e=="string"&&/^0x[0-9a-fA-F]{64}$/.test(e)}function MT(e,n){let t=e.marketFeedByPair?.get(n);if(!(t===void 0||t.expiresAt<=Date.now()))return t.value}function _T(e,n,t){let i=MT(e,n);if(i!==void 0)return i;e.marketFeedByPair??=new Map;let r=e.marketFeedByPair,a=t().then(o=>(o===lr&&r.get(n)?.value===a&&r.delete(n),o),o=>{throw r.get(n)?.value===a&&r.delete(n),o});return r.set(n,{value:a,expiresAt:Date.now()+OT}),a}function Ql(e){let n=e.chain?.contracts?.multicall3?.address;if(!(typeof n!="string"||!n.startsWith("0x")))return {address:n,abi:D.Multicall3,functionName:"getCurrentBlockTimestamp"}}async function dr(e,n){let t=await DT(e,n)();return BigInt(t.timestamp)*1000n}function ec(e,n){return typeof n=="bigint"?n*1000n:j(e,"multicall block timestamp read returned invalid data")}function nt(e,n){return viem.encodeFunctionData({abi:D.DomfiTrading,functionName:e,args:n})}function bt(e,n){return e.mode==="direct"?n:nt("delegatedAction",[e.trader,n])}function Wt(e,n,t,i){let r=n?.delegation===void 0?Jr(e,{...n,account:t}):Jr(e,n);return r.trader===void 0||r.trader.toLowerCase()!==t.toLowerCase()?j(e,`${i} wallet ${t} does not match trader ${r.trader}`):r}function VT(e,n){return n===void 0?void 0:ca(n,{chainId:e.chain.chainId})}function ET(e,n){return n===void 0?e:`${e}${n.slice(2)}`}function Ra(e){return Object.freeze(e.slice())}function xn(e){return Object.freeze(e===void 0?{status:"unchecked"}:{status:"checked",approvals:Ra(e)})}function FT(e){return e==="openMarket"||e==="openLimit"||e==="openStop"||e==="closeMarket"||e==="updateTakeProfit"||e==="updateStopLoss"||e==="removeCollateral"}function LT(e){return Object.freeze({...e})}function NT(e){return Object.freeze({...e,...e.initiatedLog!==void 0?{initiatedLog:Object.freeze({...e.initiatedLog})}:{}})}function WT(e){return e.status==="checked"?e.approvals.slice():[]}function BT(e){return e.verb!=="openMarket"?void 0:{kind:"openMarket",params:{orderKind:"market",pairIndex:P.from(e.pairIndex),direction:e.buy?"long":"short",collateral:M.fromRaw(e.collateral),leverage:U.fromRaw(BigInt(e.leverage)),slippage:mn.fromRaw(e.slippageP),...e.requestedOpenPrice!==void 0?{wantedPrice:_.fromRaw(e.requestedOpenPrice)}:{},...e.tp>0n?{takeProfit:_.fromRaw(e.tp)}:{},...e.sl>0n?{stopLoss:_.fromRaw(e.sl)}:{},...e.referralCodeId!==void 0?{referralCodeId:e.referralCodeId}:{}}}}function UT(e){return typeof e=="object"&&e!==null&&("writeContract"in e&&typeof e.writeContract=="function"||"sendTransaction"in e&&typeof e.sendTransaction=="function")}function qT(e){let[n,t]=e;return UT(n)?t===void 0?{walletClient:n}:{walletClient:n,opts:t}:n===void 0?t===void 0?{}:{opts:t}:{opts:n}}function Tt(e,n){let t=cr(e,"DomfiTrading"),i=Ra(n.warnings??[]),r=Ra(WT(n.requiredApprovals)),a=Object.freeze({warnings:i,feeCharging:FT(n.verb),...n.metadata?.approvalAmountRaw!==void 0?{approvalAmountRaw:n.metadata.approvalAmountRaw}:{},...n.metadata?.feePairIndex!==void 0?{feePairIndex:n.metadata.feePairIndex}:{},...n.metadata?.positionRef!==void 0?{positionRef:LT(n.metadata.positionRef)}:{},...n.metadata?.triggerRef!==void 0?{triggerRef:NT(n.metadata.triggerRef)}:{},...n.metadata?.preservedTrigger!==void 0?{preservedTrigger:Object.freeze({...n.metadata.preservedTrigger})}:{},...n.metadata?.hasReferralTrailer===true?{hasReferralTrailer:true}:{},...n.metadata?.dataSuffix!==void 0?{dataSuffix:n.metadata.dataSuffix}:{},...n.metadata?.executionMode!==void 0?{executionMode:n.metadata.executionMode}:{},...n.metadata?.preparedTrader!==void 0?{preparedTrader:n.metadata.preparedTrader}:{},...n.metadata?.preparedSender!==void 0?{preparedSender:n.metadata.preparedSender}:{}}),o=Object.freeze({approvals:r,warnings:i,...n.normalizedParams!==void 0?{normalizedParams:n.normalizedParams}:{},...n.estimatedOracleFeeWei!==void 0?{oracleFeeWei:n.estimatedOracleFeeWei}:{},...n.preflight?.checks!==void 0?{checks:Ra(n.preflight.checks)}:{},...n.preflight?.estimatedOpeningFee!==void 0?{estimatedOpeningFee:Object.freeze({...n.preflight.estimatedOpeningFee})}:{},...n.preflight?.estimatedClosingFee!==void 0?{estimatedClosingFee:Object.freeze({...n.preflight.estimatedClosingFee})}:{},...n.preflight?.resultingLeverage!==void 0?{resultingLeverage:Object.freeze({...n.preflight.resultingLeverage})}:{},...n.preflight?.executionPriceBounds!==void 0?{executionPriceBounds:Object.freeze({...n.preflight.executionPriceBounds})}:{},...n.preflight?.estimatedLiquidationPrice!==void 0?{estimatedLiquidationPrice:n.preflight.estimatedLiquidationPrice}:{}}),d=Object.freeze({verb:n.verb,to:t,data:n.data,requiredApprovals:n.requiredApprovals,summary:async()=>o,simulate:async u=>zl(e,d,a,u),send:async(...u)=>{let{walletClient:l,opts:c}=qT(u);return Gl(e,d,a,l,c)},...n.preparedAccount!==void 0?{preparedAccount:n.preparedAccount}:{},...n.estimatedOracleFeeWei!==void 0?{estimatedOracleFeeWei:n.estimatedOracleFeeWei,value:n.estimatedOracleFeeWei}:{}});return d}async function Bt(e,n,t){let i=await gi(e,n)(ka(e,t));return Aa(e,i)}function ka(e,n){return {address:cr(e,"DomfiPairsStorage"),abi:D.DomfiPairsStorage,functionName:"pairOracleFee",args:[n]}}function Ps(e,n){return {address:e.chain.collateral.tokenAddress,abi:D.IERC20,functionName:"allowance",args:[n,e.chain.collateral.tradingStorageSpender]}}function xs(e,n){return {address:cr(e,"DomfiOracle"),abi:D.DomfiOracle,functionName:"getValue",args:[n]}}function Aa(e,n){return typeof n=="bigint"?n:j(e,"pair oracle fee read returned invalid data")}function Rs(e,n){return typeof n=="bigint"?n:j(e,"allowance read returned invalid data")}function ks(e,n,t,i){if(n===void 0)return xn();if(t===void 0)return xn([]);let r=M.fromRaw(i??0n),a=M.fromRaw(t);return xn([{owner:n,token:e.chain.collateral.tokenAddress,spender:e.chain.collateral.tradingStorageSpender,currentAllowance:r,requiredAllowance:a,action:(i??0n)>=t?"none":"approve"}])}async function As(e,n,t,i){if(t===void 0)return xn();if(i===void 0)return xn([]);let r=Rs(e,await gi(e,n)(Ps(e,t)));return ks(e,t,i,r)}async function Is(e,n,t){return _T(e,t,async()=>{let i=await $T(e,t);return i!==void 0?i:HT(e,n,t)})}async function HT(e,n,t){let i=cr(e,"DomfiPairsStorage"),r;try{let a=await gi(e,n)({address:i,abi:D.DomfiPairsStorage,functionName:"pairFeed",args:[t]});return ws(a)?a:j(e,"pair oracle feed read returned invalid data")}catch(a){r=a;}try{let a=await gi(e,n)({address:i,abi:D.DomfiPairsStorage,functionName:"getFeedInfo",args:[t]}),o=Array.isArray(a)?a[0]:void 0;return ws(o)?o:j(e,"pair oracle feed read returned invalid data")}catch(a){throw a instanceof mt.ValidationError?a:r??a}}async function $T(e,n){if(e.api!==void 0)try{let t=await e.api.markets.get(P.from(n));if(t.freshness.isStale)return;let i=t.data.feedId;if(P.toNumber(t.data.pairIndex)===n&&ws(i)&&i!==lr)return i}catch{return}}async function nc(e,n,t){let i=await Is(e,n,t);if(i===lr)return j(e,"pair oracle feed is not configured");let r=await gi(e,n)(xs(e,i)),a=Os(e,r),o=await dr(e,n);return Cs(e,a,o)}function Os(e,n){if(!Array.isArray(n)||n.length<2)return j(e,"oracle value read returned invalid data");let[t,i]=n;if(typeof t!="bigint"||t<=0n)return j(e,"oracle value must be positive");if(typeof i!="bigint"&&typeof i!="number")return j(e,"oracle timestamp read returned invalid data");try{return {priceRaw:_.toRaw(_.fromRaw(t)),oracleTimestampMs:BigInt(i)}}catch(r){return j(e,"oracle value is outside the supported price range",r instanceof Error?r.message:void 0,r)}}function Cs(e,n,t){let i=BigInt(e.chain.oracleStaleThresholdMs??6e4);return n.oracleTimestampMs<=0n||t-n.oracleTimestampMs>i?j(e,"oracle value is stale"):n.priceRaw}async function jT(e,n,t,i,r){return vs(n,async()=>{let a=Bt(e,n,t),o=As(e,n,i,r);yi(o);let d=await a,u=await o;return {estimatedOracleFeeWei:d,requiredApprovals:u}},()=>{let a=[ka(e,t)],o=i!==void 0&&r!==void 0;return o&&a.push(Ps(e,i)),{calls:a,decode:d=>{let u=Aa(e,d[0]),l=o?Rs(e,d[1]):void 0;return {estimatedOracleFeeWei:u,requiredApprovals:ks(e,i,r,l)}}}})}async function zT(e,n,t,i,r){return vs(n,async()=>{let a=nc(e,n,t),o=Bt(e,n,t),d=As(e,n,i,r);yi(o),yi(d);let u=await a,l=await o,c=await d;return {priceRaw:u,estimatedOracleFeeWei:l,requiredApprovals:c}},async()=>{let a=await Is(e,n,t);if(a===lr)return j(e,"pair oracle feed is not configured");let o=[xs(e,a),ka(e,t)],d=i!==void 0&&r!==void 0;d&&o.push(Ps(e,i));let u=Ql(n),l=u===void 0?void 0:o.length;u!==void 0&&o.push(u);let c=l===void 0?dr(e,n):void 0;return c!==void 0&&yi(c),{calls:o,decode:async p=>{let m=Os(e,p[0]),f=l===void 0?await(c??dr(e,n)):ec(e,p[l]),g=Cs(e,m,f),T=Aa(e,p[1]),v=d?Rs(e,p[2]):void 0;return {priceRaw:g,estimatedOracleFeeWei:T,requiredApprovals:ks(e,i,r,v)}}}})}async function GT(e,n,t){return vs(n,async()=>{let i=nc(e,n,t),r=Bt(e,n,t);yi(r);let a=await i,o=await r;return {priceRaw:a,estimatedOracleFeeWei:o}},async()=>{let i=await Is(e,n,t);if(i===lr)return j(e,"pair oracle feed is not configured");let r=[xs(e,i),ka(e,t)],a=Ql(n),o=a===void 0?void 0:r.length;a!==void 0&&r.push(a);let d=o===void 0?dr(e,n):void 0;return d!==void 0&&yi(d),{calls:r,decode:async u=>{let l=Os(e,u[0]),c=o===void 0?await(d??dr(e,n)):ec(e,u[o]);return {priceRaw:Cs(e,l,c),estimatedOracleFeeWei:Aa(e,u[1])}}}})}function pr(e,n){return {pairIndex:fa(n.pairIndex,(t,i)=>j(e,t,i)),index:Tl(n.index,(t,i)=>j(e,t,i))}}function Ds(e,n){return {pairIndex:fa(n.pairIndex,(t,i)=>j(e,t,i)),index:hl(n.index,(t,i)=>j(e,t,i))}}async function KT(e,n,t,i,r,a){let o=a==="limit"?1:2,d;try{d=await gi(e,n)({address:cr(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenLimitOrder",args:[r,t,i]});}catch(m){return j(e,"open trigger order slot was not found",void 0,m)}if(typeof d!="object"||d===null)return j(e,"open trigger order slot read returned invalid data");let u=Nt(d,"trader",0),l=Nt(d,"pairIndex",8),c=Nt(d,"index",9),p=Nt(d,"orderType",11);return u!==void 0&&u.toLowerCase()===r.toLowerCase()&&l===t&&c===i&&p===o?d:j(e,"open trigger order slot was not found")}function Yl(e){return e===void 0||e===0n?void 0:_.fromRaw(e)}function YT(e,n){return typeof n=="boolean"?n:j(e,"open trigger order slot has invalid buy value")}function XT(e,n){let t;if(typeof n=="bigint")t=n;else if(typeof n=="number"&&Number.isSafeInteger(n))t=BigInt(n);else return j(e,"open trigger order slot has invalid leverage value");try{return U.fromRaw(t)}catch(i){return j(e,"open trigger order slot has invalid leverage value",i instanceof Error?i.message:void 0,i)}}function ZT(e,n){if(typeof n!="bigint")return j(e,"open trigger order slot has invalid target price");try{return _.fromRaw(n)}catch(t){return j(e,"open trigger order slot has invalid target price",t instanceof Error?t.message:void 0,t)}}async function Ss(e,n){let t=et(e,"trading.readOpenTriggerSlotContext"),{pairIndex:i,index:r}=Ds(e,n),a=await KT(e,t,i,r,n.wallet,n.orderType),o=Nt(a,"buy",10),d=Nt(a,"leverage",7),u=Nt(a,"targetPrice",4),l=Xl(a,"tp",5),c=Xl(a,"sl",6);(o===void 0||d===void 0||u===void 0)&&j(e,"open trigger order slot is missing action context");let p=YT(e,o),m=XT(e,d),f=ZT(e,u);return {wallet:n.wallet,pairIndex:n.pairIndex,index:n.index,orderType:n.orderType,direction:p?"long":"short",leverage:m,targetPrice:f,currentTp:Yl(l),currentSl:Yl(c),currentTpRaw:l,currentSlRaw:c}}function Nt(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Xl(e,n,t){if(e===void 0)return;if(Array.isArray(e)){let r=e[t];return typeof r=="bigint"?r:void 0}let i=e[n];return typeof i=="bigint"?i:void 0}async function tc(e,n,t){let i=Jr(e,t),r=et(e,"trading.prepareOpenTrade"),a=(g,T)=>j(e,g,T),o=wl(n,a),d=i.trader,u=o.requestedOpenPrice===void 0?await zT(e,r,o.pairIndex,d,o.collateral):{priceRaw:o.requestedOpenPrice,...await jT(e,r,o.pairIndex,d,o.collateral)};ya({takeProfitRaw:o.tp,stopLossRaw:o.sl,openPriceRaw:u.priceRaw,buy:o.buy},a);let l={collateral:o.collateral,openPrice:u.priceRaw,tp:o.tp,sl:o.sl,trader:i.trader??IT,leverage:o.leverage,pairIndex:o.pairIndex,index:0,buy:o.buy},c=await Ol(e,o,{openPriceRaw:u.priceRaw}),p=nt("openTrade",[l,o.orderType,o.slippageP]),m=VT(e,o.referralCodeId),f=ET(p,m);return Tt(e,{verb:o.verb,data:bt(i,f),requiredApprovals:u.requiredApprovals,estimatedOracleFeeWei:u.estimatedOracleFeeWei,warnings:o.warnings,normalizedParams:BT(o),preflight:c,metadata:{approvalAmountRaw:o.collateral,feePairIndex:o.pairIndex,executionMode:i.mode,...i.trader!==void 0?{preparedTrader:i.trader}:{},...i.sender!==void 0?{preparedSender:i.sender}:{},...m!==void 0?{hasReferralTrailer:true}:{},...i.mode==="direct"&&m!==void 0?{dataSuffix:m}:{}},...i.sender!==void 0?{preparedAccount:i.sender}:{}})}async function ic(e,n,t,i){let r=Wt(e,i,n.wallet,"position"),a=et(e,"trading.prepareClosePosition"),{pairIndex:o,index:d}=pr(e,n),u=vl(t,o,d,(p,m)=>j(e,p,m)),l=u.wantedPrice===void 0?await GT(e,a,u.pairIndex):{priceRaw:u.wantedPrice,estimatedOracleFeeWei:await Bt(e,a,o)},c=nt("closeTradeMarket",[u.pairIndex,u.index,u.closePercent,u.slippageP,l.priceRaw]);return Tt(e,{verb:"closeMarket",data:bt(r,c),requiredApprovals:xn([]),estimatedOracleFeeWei:l.estimatedOracleFeeWei,...r.sender!==void 0?{preparedAccount:r.sender}:{},preflight:{checks:[fl({closePercent:Ye.fromRaw(BigInt(u.closePercent))})]},metadata:{feePairIndex:o,positionRef:n,executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function rc(e,n,t,i){let r=Wt(e,i,n.wallet,"position"),a=et(e,"trading.prepareUpdateTakeProfit"),{pairIndex:o,index:d}=pr(e,n),u=ar(t.takeProfit,"takeProfit",(p,m)=>j(e,p,m)),l=await Bt(e,a,o),c=nt("updateTp",[o,d,u.value]);return Tt(e,{verb:"updateTakeProfit",data:bt(r,c),requiredApprovals:xn([]),estimatedOracleFeeWei:l,...r.sender!==void 0?{preparedAccount:r.sender}:{},metadata:{feePairIndex:o,positionRef:n,executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function ac(e,n,t,i){let r=Wt(e,i,n.wallet,"position"),a=et(e,"trading.prepareUpdateStopLoss"),{pairIndex:o,index:d}=pr(e,n),u=ar(t.stopLoss,"stopLoss",(p,m)=>j(e,p,m)),l=await Bt(e,a,o),c=nt("updateSl",[o,d,u.value]);return Tt(e,{verb:"updateStopLoss",data:bt(r,c),requiredApprovals:xn([]),estimatedOracleFeeWei:l,...r.sender!==void 0?{preparedAccount:r.sender}:{},metadata:{feePairIndex:o,positionRef:n,executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function oc(e,n,t,i){let r=Wt(e,i,n.wallet,"position"),a=et(e,"trading.prepareTopUpCollateral"),{pairIndex:o,index:d}=pr(e,n),u=ma(t.collateral,"collateral",(p,m)=>j(e,p,m)),l=await As(e,a,r.trader,u),c=nt("topUpCollateral",[o,d,u]);return Tt(e,{verb:"topUpCollateral",data:bt(r,c),requiredApprovals:l,...r.sender!==void 0?{preparedAccount:r.sender}:{},metadata:{approvalAmountRaw:u,positionRef:n,executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function sc(e,n,t,i){let r=Wt(e,i,n.wallet,"position"),a=et(e,"trading.prepareRemoveCollateral"),{pairIndex:o,index:d}=pr(e,n),u=ma(t.collateral,"collateral",(p,m)=>j(e,p,m)),l=await Bt(e,a,o),c=nt("removeCollateral",[o,d,u]);return Tt(e,{verb:"removeCollateral",data:bt(r,c),requiredApprovals:xn([]),estimatedOracleFeeWei:l,...r.sender!==void 0?{preparedAccount:r.sender}:{},metadata:{feePairIndex:o,positionRef:n,executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function uc(e,n,t,i){let r=Wt(e,i,n.wallet,"trigger order");et(e,"trading.prepareUpdateOpenLimitOrder");let{pairIndex:a,index:o}=Ds(e,n),d=(x,W)=>j(e,x,W),u=Pl(t,d),l=ar(t.takeProfit,"takeProfit",d,{optional:true}),c=ar(t.stopLoss,"stopLoss",d,{optional:true}),p=l.status==="provided"&&l.value!==0n||c.status==="provided"&&c.value!==0n,m=l.status==="omitted"||c.status==="omitted"||p?await Ss(e,n):void 0,f=l.status==="provided"?l.value:m?.currentTpRaw,g=c.status==="provided"?c.value:m?.currentSlRaw;if(f===void 0||g===void 0)return j(e,"open trigger slot is missing TP/SL");m!==void 0&&ya({takeProfitRaw:f,stopLossRaw:g,openPriceRaw:u,buy:m.direction==="long"},d);let T=m===void 0?void 0:{...l.status==="omitted"?{tp:f}:{},...c.status==="omitted"?{sl:g}:{}},v=nt("updateOpenLimitOrder",[a,o,u,f,g]);return Tt(e,{verb:"updateOpenLimitOrder",data:bt(r,v),requiredApprovals:xn([]),...r.sender!==void 0?{preparedAccount:r.sender}:{},metadata:{triggerRef:n,...T!==void 0?{preservedTrigger:T}:{},executionMode:r.mode,preparedTrader:r.trader,...r.sender!==void 0?{preparedSender:r.sender}:{}}})}async function dc(e,n,t){let i=Wt(e,t,n.wallet,"trigger order");et(e,"trading.prepareCancelOpenLimitOrder");let{pairIndex:r,index:a}=Ds(e,n),o=nt("cancelOpenLimitOrder",[r,a]);return Tt(e,{verb:"cancelOpenLimitOrder",data:bt(i,o),requiredApprovals:xn([]),...i.sender!==void 0?{preparedAccount:i.sender}:{},metadata:{triggerRef:n,executionMode:i.mode,preparedTrader:i.trader,...i.sender!==void 0?{preparedSender:i.sender}:{}}})}var ih="runtime-guards";function Y(e){let n={sdkVersion:I,sourceTag:ih,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function mr(e,n,t){let i={message:n,diagnostics:Y(e)};return t===void 0?i:{...i,hint:t}}function qn(e,n="this operation"){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(mr(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function fr(e,n="this operation"){if(e.walletClient!==void 0)return e.walletClient;throw new mt.MissingWalletClientError(mr(e,`${n} requires a wallet client`,"Pass walletClient to createDomfiClient."))}function lc(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function bi(e,n,t="this operation"){let i=n??e.account??lc(e.walletClient);if(i!==void 0)return i;throw new mt.MissingAccountError(mr(e,`${t} requires an account`,"Pass account to createDomfiClient, pass opts.account, or use a connected wallet client."))}function Ia(e,n){let t=fr(e),i=t.chain?.id;if(i!==void 0&&i!==e.chain.chainId)throw new mt.WalletChainMismatchError(mr(e,`wallet client chain ${i} does not match DomFi chain ${e.chain.chainId}`,"Use a wallet client connected to the same chain as createDomfiClient."));let r=lc(t);if(r!==void 0&&r.toLowerCase()!==n.toLowerCase())throw new mt.WalletAccountMismatchError(mr(e,`wallet client account ${r} does not match requested account ${n}`,"Use the connected wallet account or pass the matching account option."))}function rh(e){return(async(n,t)=>Xo(e,n,t))}function ah(e){return (n,t)=>Kl(e,n,t)}function Ms(e){let n={prepareOpenTrade:((i,r)=>tc(e,i,r)),prepareClosePosition:(i,r,a)=>ic(e,i,r,a),prepareUpdateTakeProfit:(i,r,a)=>rc(e,i,r,a),prepareUpdateStopLoss:(i,r,a)=>ac(e,i,r,a),prepareTopUpCollateral:(i,r,a)=>oc(e,i,r,a),prepareRemoveCollateral:(i,r,a)=>sc(e,i,r,a),prepareUpdateOpenLimitOrder:(i,r,a)=>uc(e,i,r,a),prepareCancelOpenLimitOrder:(i,r)=>dc(e,i,r),handleTradeMarketTimeout:ah(e),recoverTransaction:rh(e)};return e.api===void 0?n:{...n,trackOrder:(i,r)=>Ot(e,i,r),trackTransaction:(i,r)=>Xd(e,i,r)}}function Ne(e){return e.catch(()=>{}),e}function oh(e){let n=Promise.reject(e);return {approval:n,hash:n,waitReceipt:()=>n,outcome:()=>n,watch:()=>sh(e)}}function sh(e){return {[Symbol.asyncIterator]:()=>({next:async()=>{throw e}})}}function uh(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function we(e){let n=(()=>{try{return e.start()}catch(r){return oh(r)}})(),t=Ne(n.approval),i=Ne(n.hash);return Object.freeze({action:e.action,approval:()=>t,txHash:()=>i,waitReceipt:r=>Ne(Promise.resolve().then(()=>n.waitReceipt(r))),outcome:r=>Ne(Promise.resolve().then(()=>n.outcome(r))),watch:r=>uh(()=>n.watch(r))})}function cc(e,n){let t={sdkVersion:I,sourceTag:"runtime-guards",chainId:n};return new mt.ValidationError({message:e,diagnostics:t})}function yr(e,n){if(e.kind!=="open_position"||e.wallet===void 0||e.pairIndex===void 0||e.index===void 0||e.tradeId===void 0)throw cc("Open account position is missing verified position identity fields",n);return {wallet:e.wallet,pairIndex:e.pairIndex,index:e.index,tradeId:e.tradeId,chainId:n,source:"api"}}function Oa(e,n){if(e.action!=="open"||e.orderType!=="limit"||e.triggerOrderType!=="limit"&&e.triggerOrderType!=="stop"||e.status!=="pending_execution"||e.isPending!==true||e.isCancelled!==false||e.wallet===void 0||e.pairIndex===void 0||e.limitIndex===void 0||e.lifecycleKey===void 0||e.initiatedTxHash===void 0||e.initiatedEventType===void 0)throw cc("Open trigger account order is missing verified trigger identity fields",n);return {wallet:e.wallet,pairIndex:e.pairIndex,index:e.limitIndex,chainId:n,lifecycleKey:e.lifecycleKey,orderId:e.orderId,orderType:e.triggerOrderType,initiatedTxHash:e.initiatedTxHash,initiatedEventType:e.initiatedEventType,source:"api"}}function Ca(e){if(e<=0n)throw new Error("computed trigger price must be positive");return _.fromRaw(e)}function Da(e){if(e==="long")return true;if(e==="short")return false;throw new Error("direction must be long or short")}function pc(e){let n=_.toRaw(e.basePrice),t=U.toRaw(e.leverage);an(n,"basePrice"),an(t,"leverage");let i=n*Lt.toRaw(e.pnlPercent)/rn/t,r=Da(e.direction);return Ca(r?n+i:i<=n?n-i:0n)}function mc(e){let n=_.toRaw(e.basePrice),t=U.toRaw(e.leverage);an(n,"basePrice"),an(t,"leverage");let i=n*Lt.toRaw(e.pnlPercent)/rn/t,r=Da(e.direction);return Ca(r?i<=n?n-i:0n:n+i)}function fc(e){let n=_.toRaw(e.basePrice);an(n,"basePrice");let t=n*Lt.toRaw(e.priceDeltaPercent)/(100n*rn),i=Da(e.direction);return Ca(i?n+t:t<=n?n-t:0n)}function yc(e){let n=_.toRaw(e.basePrice);an(n,"basePrice");let t=n*Lt.toRaw(e.priceDeltaPercent)/(100n*rn),i=Da(e.direction);return Ca(i?t<=n?n-t:0n:n+t)}function Ce(e,n,t){throw new mt.ValidationError({message:n,diagnostics:Y(e),...t!==void 0?{cause:t}:{}})}function Se(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ch(e,n,t,i,r){let a=Se(n,t),o=Se(n,i);a===o&&Ce(e,`${r} requires exactly one of ${t} or ${i}`);}function Sa(e,n,t,i){for(let r of t)Se(n,r)&&Ce(e,`${i} cannot include ${r}`);}function hi(e,n,t,i){typeof i!="bigint"&&Ce(e,`${t} is invalid`);try{return n.fromRaw(i)}catch(r){return Ce(e,`${t} is invalid`,r)}}function gc(e,n,t){typeof t!="bigint"&&Ce(e,`${n} is invalid`);try{return Lt.fromRaw(t)}catch(i){return Ce(e,`${n} is invalid`,i)}}function Ut(e,n,t){return hi(e,_,n,t)}function Pc(e,n,t){_.toRaw(t)===0n&&Ce(e,`${n} cannot be zero; zero is reserved as a trigger omission sentinel`);}function br(e,n,t,i,r){let a=_.toRaw(t);Pc(e,n,t);let o=_.toRaw(i);(n==="takeProfit"?r==="long"?a>o:a<o:r==="long"?a<o:a>o)||Ce(e,`${n} is on the wrong side of the trigger price`);}function Fs(e,n){if(n==="long"||n==="short")return n;Ce(e,"direction must be long or short");}function ph(e){return hr(e)&&Se(e,"clear")&&e.clear===true}function mh(e,n){return hi(e,U,"leverage",n)}function xc(e,n){return hi(e,mn,"slippage",n)}function fh(e,n){return hi(e,Ye,"closePercent",n)}function Rc(e,n){return hi(e,M,"collateral",n)}function yh(e,n){return hi(e,or,"notionalUsd",n)}function gh(e,n,t){try{return Al({notionalUsd:yh(e,n),leverage:t})}catch(i){return Ce(e,"notional sizing is invalid",i)}}function kc(e){let n=e.walletClient?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function Ti(e,n){let t;for(let i of n)if(i.wallet!==void 0){if(t===void 0){t={label:i.label,wallet:i.wallet};continue}if(t.wallet.toLowerCase()!==i.wallet.toLowerCase())throw new mt.WalletAccountMismatchError({message:`${i.label} ${i.wallet} does not match ${t.label} ${t.wallet}`,diagnostics:Y(e)})}return t?.wallet}function bh(e,n,t){let i=n?.account!==void 0?Ti(e,[{label:"options account",wallet:n.account},{label:"position input wallet",wallet:t}]):Ti(e,[{label:"configured account",wallet:e.account},{label:"wallet client account",wallet:kc(e)},{label:"position input wallet",wallet:t}]);if(i!==void 0)return i;throw new mt.MissingAccountError({message:"position ref resolution requires an account or explicit wallet",diagnostics:Y(e)})}function Th(e,n,t){return n?.delegation!==void 0?(Ti(e,[{label:"delegation trader",wallet:n.delegation.trader},{label:"position input wallet",wallet:t}]),n.delegation.trader):bh(e,n,t)}function hh(e,n,t,i="resolved position wallet"){if(n?.account!==void 0){Ti(e,[{label:"options account",wallet:n.account},{label:i,wallet:t}]);return}Ti(e,[{label:"configured account",wallet:e.account},{label:"wallet client account",wallet:kc(e)},{label:i,wallet:t}]);}function Tr(e,n,t,i="resolved position wallet"){if(n?.delegation!==void 0){Ti(e,[{label:"delegation trader",wallet:n.delegation.trader},{label:i,wallet:t}]);return}hh(e,n,t,i);}function Ac(e,n){return e.toLowerCase()===n.toLowerCase()}function wh(e,n){return Ac(e.wallet,n.wallet)&&e.pairIndex===n.pairIndex&&e.index===n.index&&e.chainId===n.chainId&&e.orderType===n.orderType&&e.initiatedTxHash.toLowerCase()===n.initiatedTxHash.toLowerCase()&&e.initiatedLog.blockNumber===n.initiatedLog.blockNumber&&e.initiatedLog.transactionIndex===n.initiatedLog.transactionIndex&&e.initiatedLog.logIndex===n.initiatedLog.logIndex&&e.lifecycleKey===n.lifecycleKey&&e.orderId===n.orderId}function vh(e,n){return Ac(e.wallet,n.wallet)&&e.pairIndex===n.pairIndex&&e.index===n.index&&e.chainId===n.chainId&&e.orderType===n.orderType&&e.lifecycleKey===n.lifecycleKey&&e.orderId===n.orderId&&e.initiatedTxHash.toLowerCase()===n.initiatedTxHash.toLowerCase()&&e.initiatedEventType===n.initiatedEventType&&e.initiatedLog?.blockNumber===n.initiatedLog?.blockNumber&&e.initiatedLog?.transactionIndex===n.initiatedLog?.transactionIndex&&e.initiatedLog?.logIndex===n.initiatedLog?.logIndex}function Ph(e,n){return e.source!==n.source?false:e.source==="api"?n.source!=="api"?false:vh(e,n):n.source!=="receipt"?false:wh(e,n)}function hr(e){return typeof e=="object"&&e!==null}function xh(e){if(!hr(e)||e.source!=="api")return false;let n=e.initiatedLog;return typeof e.wallet=="string"&&typeof e.pairIndex=="number"&&typeof e.index=="number"&&typeof e.chainId=="number"&&typeof e.lifecycleKey=="string"&&(e.orderId===void 0||typeof e.orderId=="string")&&(e.orderType==="limit"||e.orderType==="stop")&&typeof e.initiatedTxHash=="string"&&typeof e.initiatedEventType=="string"&&(n===void 0||hr(n)&&typeof n.blockNumber=="bigint"&&typeof n.transactionIndex=="number"&&typeof n.logIndex=="number")}function Rh(e,n){let t=e.verifiedRef;if(t===void 0||typeof t!="object"||t===null)throw new mt.ValidationError({message:"open trigger order is missing verifiedRef",diagnostics:{sdkVersion:I,sourceTag:"actions",chainId:n},hint:"For account orders, use verifiedOpenTriggerOrderRefFromAccountOrder or a fresh API order with verified identity. Pass placement receipt refs directly as TriggerOrderInput."});if(!xh(t))throw new mt.IdentityMismatchError({message:"open trigger account order verifiedRef must be API-derived",diagnostics:{sdkVersion:I,sourceTag:"actions",chainId:n}});let i;try{i=Oa(e,n);}catch(r){throw new mt.IdentityMismatchError({message:"open trigger order verifiedRef does not match order identity fields",diagnostics:{sdkVersion:I,sourceTag:"actions",chainId:n},cause:r})}if(!Ph(t,i))throw new mt.IdentityMismatchError({message:"open trigger order verifiedRef does not match order identity fields",diagnostics:{sdkVersion:I,sourceTag:"actions",chainId:n}})}function _s(e,n,t){if(n.wallet.toLowerCase()!==t.wallet.toLowerCase())throw new mt.WalletAccountMismatchError({message:`resolved position wallet ${n.wallet} does not match requested wallet ${t.wallet}`,diagnostics:Y(e)});if(n.pairIndex!==t.pairIndex||n.index!==t.index)throw new mt.IdentityMismatchError({message:"resolved position pair/index does not match requested position ref",diagnostics:Y(e)});if(t.tradeId!==void 0&&n.tradeId!==t.tradeId)throw new mt.IdentityMismatchError({message:"resolved position trade id does not match requested position ref",diagnostics:Y(e)})}function Ic(e,n){if(n.status==="pending")throw new mt.ReadModelNotReadyError({message:"position read model is not ready",diagnostics:Y(e)});return (n.status!=="found"||n.position?.kind!=="open_position")&&Ce(e,"position was not found"),n.position}function bc(e,n,t){if(typeof t=="object"&&t!==null)throw new mt.ValidationError({message:`openMarket ${n} must be a concrete price; percent inputs are only supported by position trigger updates`,diagnostics:Y(e)});let i=Ut(e,n,t);return Pc(e,n,i),i}function wr(e,n,t,i){let r;if(typeof t!="object"||t===null)return r=Ut(e,n,t),br(e,n,r,i.basePrice,i.direction),r;Sa(e,t,["clear"],n);let a=Se(t,"pnlPercent"),o=Se(t,"priceDeltaPercent");a===o&&Ce(e,`${n} requires exactly one percent input`);let d=a?t.pnlPercent:void 0,u=o?t.priceDeltaPercent:void 0;try{if(a){let c={basePrice:i.basePrice,pnlPercent:gc(e,`${n} pnlPercent`,d),leverage:i.leverage,direction:i.direction};return r=n==="takeProfit"?pc(c):mc(c),br(e,n,r,i.basePrice,i.direction),r}let l={basePrice:i.basePrice,priceDeltaPercent:gc(e,`${n} priceDeltaPercent`,u),direction:i.direction};return r=n==="takeProfit"?fc(l):yc(l),br(e,n,r,i.basePrice,i.direction),r}catch(l){return Ce(e,`${n} percent trigger is invalid`,l)}}function Tc(e){return !hr(e)||!Se(e,"clear")}function Vs(e,n,t,i){if(hr(t)&&Se(t,"clear"))return (!ph(t)||Se(t,"pnlPercent")||Se(t,"priceDeltaPercent"))&&Ce(e,`${n} clear cannot be combined with percent inputs`),{clear:true};if(i===void 0&&Ce(e,`${n} update requires trigger context`),typeof t=="object"&&t!==null)return wr(e,n,t,i);let r=Ut(e,n,t);return br(e,n,r,i.basePrice,i.direction),r}function Ls(e,n,t){ch(e,n,"notionalUsd","collateral",t);let i=Se(n,"collateral"),r=i?"collateral":"notionalUsd";(i?n.collateral:n.notionalUsd)===void 0&&Ce(e,`${t} ${r} is invalid`);let o=mh(e,n.leverage);return {collateral:i?Rc(e,n.collateral):gh(e,n.notionalUsd,o),leverage:o}}function Oc(e,n){let t=n;Sa(e,t,["entryPrice","triggerPrice","wantedPrice"],"openMarket");let{collateral:i,leverage:r}=Ls(e,t,"openMarket"),a=Fs(e,t.direction);return {orderKind:"market",pairIndex:n.pairIndex,direction:a,collateral:i,leverage:r,slippage:xc(e,n.slippage),...t.referralCodeId!==void 0?{referralCodeId:t.referralCodeId}:{},...t.takeProfit!==void 0?{takeProfit:bc(e,"takeProfit",t.takeProfit)}:{},...t.stopLoss!==void 0?{stopLoss:bc(e,"stopLoss",t.stopLoss)}:{}}}function Cc(e,n){let t=n;Sa(e,t,["slippage","triggerPrice"],"openLimit");let{collateral:i,leverage:r}=Ls(e,t,"openLimit"),a=Ut(e,"entryPrice",n.entryPrice),o=Fs(e,t.direction),d={basePrice:a,direction:o,leverage:r};return {orderKind:"limit",pairIndex:n.pairIndex,direction:o,collateral:i,leverage:r,entryPrice:a,...t.referralCodeId!==void 0?{referralCodeId:t.referralCodeId}:{},...Se(t,"takeProfit")?{takeProfit:wr(e,"takeProfit",t.takeProfit,d)}:{},...Se(t,"stopLoss")?{stopLoss:wr(e,"stopLoss",t.stopLoss,d)}:{}}}function Dc(e,n){let t=n;Sa(e,t,["slippage","entryPrice"],"openStop");let{collateral:i,leverage:r}=Ls(e,t,"openStop"),a=Ut(e,"triggerPrice",n.triggerPrice),o=Fs(e,t.direction),d={basePrice:a,direction:o,leverage:r};return {orderKind:"stop",pairIndex:n.pairIndex,direction:o,collateral:i,leverage:r,triggerPrice:a,...t.referralCodeId!==void 0?{referralCodeId:t.referralCodeId}:{},...Se(t,"takeProfit")?{takeProfit:wr(e,"takeProfit",t.takeProfit,d)}:{},...Se(t,"stopLoss")?{stopLoss:wr(e,"stopLoss",t.stopLoss,d)}:{}}}function Sc(e,n){return {...n.closePercent!==void 0?{closePercent:fh(e,n.closePercent)}:{},slippage:xc(e,n.slippage),...n.wantedPrice!==void 0?{wantedPrice:Ut(e,"wantedPrice",n.wantedPrice)}:{}}}async function wi(e,n,t){if("source"in n)return n.chainId!==e.chain.chainId&&Ce(e,"position ref chain does not match client chain"),Tr(e,t,n.wallet),{ref:n};if("kind"in n){if(n.kind!=="open_position")throw new mt.ReadModelNotReadyError({message:"position is not open yet",diagnostics:Y(e)});return Tr(e,t,n.wallet),{ref:yr(n,e.chain.chainId),position:n}}let i=Th(e,t,n.wallet),r=await e.api.account.position(i,{pairIndex:n.pairIndex,index:n.tradeIndex},t),a=Ic(e,r.data);return _s(e,a,{wallet:i,pairIndex:n.pairIndex,index:n.tradeIndex}),{ref:yr(a,e.chain.chainId),position:a}}function Ns(e,n,t){let i="verifiedRef"in n?n.verifiedRef:n;return "verifiedRef"in n&&Rh(n,e.chain.chainId),i.chainId!==e.chain.chainId&&Ce(e,"trigger order ref chain does not match client chain"),Tr(e,t,i.wallet,"resolved trigger order ref wallet"),i}async function Mc(e,n,t){if(n.position!==void 0)return Tr(e,t,n.position.wallet),_s(e,n.position,{wallet:n.ref.wallet,pairIndex:n.ref.pairIndex,index:n.ref.index,tradeId:n.ref.tradeId}),n.position;Tr(e,t,n.ref.wallet);let i=await e.api.account.position(n.ref.wallet,{pairIndex:n.ref.pairIndex,index:n.ref.index,tradeId:n.ref.tradeId},t),r=Ic(e,i.data);return _s(e,r,{wallet:n.ref.wallet,pairIndex:n.ref.pairIndex,index:n.ref.index,tradeId:n.ref.tradeId}),r}function _c(e,n,t,i){return Vs(e,t,i,{basePrice:n.openPrice,direction:n.side,leverage:n.leverage})}function Vc(e,n,t){return _c(e,n,"takeProfit",t)}function Ec(e,n,t){return _c(e,n,"stopLoss",t)}function Ws(e,n){return {collateral:Rc(e,n.collateral)}}function hc(e,n,t,i){t!==void 0&&br(e,n,t,i.basePrice,i.direction);}async function Fc(e,n,t){let i=t,r=Ut(e,"targetPrice",t.targetPrice),a=Se(i,"takeProfit"),o=Se(i,"stopLoss"),u=!a||!o||a&&Tc(i.takeProfit)||o&&Tc(i.stopLoss)?await Ss(e,n):void 0,l=u===void 0?void 0:{basePrice:r,direction:u.direction,leverage:u.leverage};return u!==void 0&&l!==void 0&&(a||hc(e,"takeProfit",u.currentTp,l),o||hc(e,"stopLoss",u.currentSl,l)),{targetPrice:r,...a?{takeProfit:Vs(e,"takeProfit",i.takeProfit,l)}:{},...o?{stopLoss:Vs(e,"stopLoss",i.stopLoss,l)}:{}}}var We={RequireExisting:"requireExisting",AutoExact:"autoExact",UnsafeMaxUint256:"unsafeMaxUint256"},Hn={Required:"required",Skip:"skip"};var Ah=M.fromRaw(2n**256n-1n),Ih="actions-pipeline";function Oh(e,n){let t=n?.approval??We.RequireExisting;if(t===We.RequireExisting||t===We.AutoExact||t===We.UnsafeMaxUint256){if(n?.delegation!==void 0&&t!==We.RequireExisting)throw new mt.ValidationError({message:"delegated actions require pre-existing trader allowance",diagnostics:Y(e),hint:"Approve from the trader wallet first, or omit delegation and use direct mode."});return t}throw new mt.ValidationError({message:"invalid action approval policy",diagnostics:Y(e),hint:"Use ActionApprovalPolicy.RequireExisting, ActionApprovalPolicy.AutoExact, or ActionApprovalPolicy.UnsafeMaxUint256."})}function Ch(e,n){let t=n?.simulation??Hn.Required;if(t===Hn.Required||t===Hn.Skip)return t;throw new mt.ValidationError({message:"invalid action simulation policy",diagnostics:Y(e),hint:"Use ActionSimulationPolicy.Required or ActionSimulationPolicy.Skip."})}function Dh(e,n){return {approval:Oh(e,n),simulation:Ch(e,n)}}async function Sh(e){return e.requiredApprovals.status==="checked"?e.requiredApprovals.approvals:(await e.summary()).approvals}function Mh(e){return e.status==="violation"&&e.severity==="error"}function _h(e){return e.checks?.find(Mh)}async function Vh(e,n){let t=_h(await n.summary());if(t!==void 0)throw new mt.ValidationError({message:t.message,diagnostics:Y(e),hint:`Preflight check ${t.code} failed before action submission.`})}function Eh(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function Fh(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.maxOracleFeeWei!==void 0?{maxOracleFeeWei:e.maxOracleFeeWei}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function Lh(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.maxOracleFeeWei!==void 0?{maxOracleFeeWei:e.maxOracleFeeWei}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}var Nh=["account","expectedTradeId","verb","pairIndex","initiatedTradeId","terminalTradeId"];function Wh(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function Lc(e,n){if(!(n===void 0||typeof n!="object")){for(let t of Nh)if(Wh(n,t))throw new mt.ValidationError({message:`action outcome tracking options cannot include ${t}`,diagnostics:Y(e),hint:"High-level actions own receipt recovery and trade identity fields internally."})}}function Bh(e,n){return n?.account??e.account??Xr(e.walletClient)}async function Uh(e,n,t,i,r){let a=(await Sh(i)).filter(p=>p.action==="approve");if(a.length>1)throw new mt.ValidationError({message:"multiple collateral approvals are not supported yet",diagnostics:Y(e),hint:"Send approvals separately until action approval evidence supports multiple approval transactions."});let o=a[0];if(o===void 0)return;if(r===We.RequireExisting)throw new mt.ValidationError({message:"required collateral allowance is missing",diagnostics:Y(e),hint:"Use ActionApprovalPolicy.AutoExact or ActionApprovalPolicy.UnsafeMaxUint256, or approve collateral before sending."});let d=r===We.UnsafeMaxUint256?Ah:o.requiredAllowance,u=Bh(e,t);if(u!==void 0&&o.owner.toLowerCase()!==u.toLowerCase())throw new mt.ValidationError({message:"approval sender does not own the required allowance",diagnostics:Y(e),hint:"Use the allowance owner account for auto-approval, or require existing allowance."});let l=await n.approve(o.spender,d,Eh(t)),c=await l.waitReceipt(t?.signal===void 0?void 0:{signal:t.signal});if(c.status==="reverted")throw Nc(e,"approval",l.hash);return {policy:r,token:o.token,spender:o.spender,requiredAllowance:o.requiredAllowance,approvedAllowance:d,hash:l.hash,receipt:c}}function Nc(e,n,t){return new mt.ContractRevertError({message:`${n} transaction reverted`,diagnostics:Y(e),hash:t})}function Bs(e,n,t,i){if(i.status==="reverted")throw Nc(e,n,t)}function Wc(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function qh(){return {sdkVersion:I,sourceTag:Ih,chainId:0}}function Hh(e){return e==="closePosition"||e==="removeCollateral"}function $h(e){let n="positionRef"in e?e.positionRef?.():void 0;if(Hh(e.action)&&n===void 0)throw new mt.ValidationError({message:`${e.action} outcome requires a positionRef`,diagnostics:qh()});return n}function Bc(e,n,t,i){let r=$h(e),a={action:e.action,hash:n,...r!==void 0?{positionRef:r}:{}};return i?.status==="executed"?{...a,status:"executed",receipt:t,result:i}:i?.status==="timeout_available"&&i.canHandleTimeout===true?{...a,status:"timeout_available",canHandleTimeout:true,receipt:t,result:i}:i?.status==="canceled"||i?.status==="timed_out"||i?.status==="identity_mismatch"?{...a,status:i.status,result:i}:{...a,status:"unknown",...i===void 0?{}:{result:i}}}function Ma(e){return async(n,t,i)=>{let r="watch"in n?await Vd(n,e.trackOptions?.(i)??i):void 0;return Bc(e,n.hash,t,r)}}function _a(e){return (n,t,i)=>Wc(async function*(){if(!("watch"in t))throw new mt.ValidationError({message:`${e.action} watch requires an async order handle`,diagnostics:Y(n)});let r,a=e.trackOptions?.(i)??i;for await(let o of t.watch(a)){if(o.phase==="submitted"){yield {phase:"submitted",action:e.action,hash:o.hash};continue}if(o.phase==="mined"){r=o.receipt,yield {phase:"mined",action:e.action,hash:o.hash,receipt:o.receipt},Bs(n,e.action,o.hash,o.receipt);continue}if(o.phase==="indexed"){yield {...o,action:e.action};continue}if(o.phase==="unknown"){yield {...o,action:e.action};continue}if(o.phase==="tracking"&&!Qr(o.result)){yield {...o,action:e.action};continue}let d="result"in o?o.result:void 0;if(!(d===void 0||!Qr(d))){if(r===void 0)throw new mt.ValidationError({message:`${e.action} watch reached terminal state before mined receipt`,diagnostics:Y(n)});yield {phase:"terminal",action:e.action,hash:o.hash,outcome:Bc(e,o.hash,r,d)};return}}throw new mt.ValidationError({message:`${e.action} watch ended before terminal state`,diagnostics:Y(n)})})}function Us(e){if(e!==void 0)return {...e.signal!==void 0?{signal:e.signal}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.readinessPolicy!==void 0?{readinessPolicy:e.readinessPolicy}:{},...e.confirmations!==void 0?{confirmations:e.confirmations}:{},...e.pollingIntervalMs!==void 0?{pollingIntervalMs:e.pollingIntervalMs}:{}}}function qs(e,n){return async(t,i,r)=>{if(!("verifiedRef"in t))throw new mt.ValidationError({message:`${n} did not return a trigger placement handle`,diagnostics:Y(e)});return {action:n,status:"placed",hash:t.hash,receipt:i,ref:await t.verifiedRef(Us(r))}}}function vi(e,n){return async(t,i)=>({action:e,status:"confirmed",hash:t.hash,receipt:i,eventEvidence:n(i)})}function Rn(e){let n=Promise.resolve().then(async()=>{lt(e.deps,e.opts,`actions.${e.action}`);let o=Dh(e.deps,e.opts),d=await e.prepare();return await Vh(e.deps,d),{policies:o,prepared:d}}),t=Ne(n.then(({policies:o,prepared:d})=>Uh(e.deps,e.token,e.opts,d,o.approval))),i=Ne(n.then(async({policies:o,prepared:d})=>(await t,o.simulation===Hn.Required&&await d.simulate(Fh(e.opts)),d.send(Lh(e.opts))))),r=o=>Ne(Promise.resolve().then(async()=>(await i).waitReceipt(o))),a=Ne(i.then(o=>o.hash));return {approval:t,hash:a,waitReceipt:o=>r(o),outcome:async o=>{Lc(e.deps,o);let d=await i,u=await r(Us(o));return Bs(e.deps,e.action,d.hash,u),e.outcomeFromHandle(d,u,o)},watch:o=>Wc(async function*(){Lc(e.deps,o);let d=await i;if(e.watchFromHandle!==void 0){yield*e.watchFromHandle(e.deps,d,o);return}yield {phase:"submitted",action:e.action,hash:d.hash};let u=await r(Us(o));yield {phase:"mined",action:e.action,hash:d.hash,receipt:u},Bs(e.deps,e.action,d.hash,u);let l=await e.outcomeFromHandle(d,u,o);yield {phase:"terminal",action:e.action,hash:d.hash,outcome:l};})}}var Hc="vault-receipts",Gh={deposit:"Deposit",mint:"Deposit",makeWithdrawRequest:"WithdrawRequested",cancelWithdrawRequest:"WithdrawCanceled",withdraw:"Withdraw",redeem:"Withdraw",depositWithDiscountAndLock:"DepositLocked",mintWithDiscountAndLock:"DepositLocked",unlockDeposit:"DepositUnlocked"};function Kh(e){let n={sdkVersion:I,sourceTag:Hc,chainId:e.chainId};return e.registryAddress!==void 0&&(n.registryAddress=e.registryAddress),n}function yn(e,n,t){throw new mt.ValidationError({message:n,diagnostics:Kh(e),...t!==void 0?{cause:t}:{}})}function Pi(e){let n=D.DomfiVault.find(t=>{let i=t;return i.type==="event"&&i.name===e});if(n===void 0)throw new mt.ValidationError({message:`DomfiVault ABI is missing ${e} event`,diagnostics:{sdkVersion:I,sourceTag:Hc,chainId:0}});return n}var Yh={Deposit:Pi("Deposit"),WithdrawRequested:Pi("WithdrawRequested"),WithdrawCanceled:Pi("WithdrawCanceled"),Withdraw:Pi("Withdraw"),DepositLocked:Pi("DepositLocked"),DepositUnlocked:Pi("DepositUnlocked")};function Xh(e){return viem.toEventSelector(e).toLowerCase()}function Zh(e){return e.topics[0]?.toLowerCase()}function Jh(e){return kt(e)?e:void 0}function Qh(e,n){return e.toLowerCase()===n.toLowerCase()}function ew(e,n,t){if(Zh(e)!==Xh(n))return false;let i=Jh(e.address);return i!==void 0&&Qh(i,t)}function nw(e,n,t){let i=ti(e.data,"receipt log data",(r,a)=>yn(t,r,a));try{return viem.decodeEventLog({abi:[n],data:i,topics:e.topics,strict:!0}).args}catch(r){return yn(t,`receipt log for ${n.name} could not be decoded`,r)}}function tw(e,n,t,i){for(let r of e.logs)if(ew(r,n,i))return {log:r,args:nw(r,n,t)}}function X(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function iw(e){if(typeof e=="bigint")return e;if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return BigInt(e)}function rw(e){if(typeof e=="number"&&Number.isInteger(e))return e;if(typeof e=="bigint"&&e>=0n&&e<=BigInt(Number.MAX_SAFE_INTEGER))return Number(e)}function je(e,n,t){return ve(e,`vault receipt ${n}`,(i,r)=>yn(t,i,r))}function kn(e,n,t){let i=iw(e);return i!==void 0?i:yn(t,`vault receipt log is missing ${n}`)}function xi(e,n,t){let i=rw(e);return i!==void 0?i:yn(t,`vault receipt log is missing ${n}`)}function aw(e,n,t){let i=e.transactionHash??n.transactionHash;return nn(i,"vault receipt transaction hash",(r,a)=>yn(t,r,a))}function ow(e,n,t){let i=n.blockNumber??e.blockNumber,r=n.transactionIndex??e.transactionIndex,a=n.logIndex;return typeof i!="bigint"?yn(t,"vault receipt log is missing blockNumber"):typeof r!="number"?yn(t,"vault receipt log is missing txIndex"):typeof a!="number"?yn(t,"vault receipt log is missing logIndex"):{blockNumber:i,txIndex:r,logIndex:a}}function sw(e,n,t,i){return {verb:i,txHash:aw(e,n,t),...ow(e,n,t)}}function Uc(e,n){return {owner:je(X(e,"owner",0),"locked deposit owner",n),shares:se.fromRaw(kn(X(e,"shares",1),"locked deposit shares",n)),assetsDeposited:he.fromRaw(kn(X(e,"assetsDeposited",2),"locked deposit assetsDeposited",n)),assetsDiscount:he.fromRaw(kn(X(e,"assetsDiscount",3),"locked deposit assetsDiscount",n)),atTimestamp:xi(X(e,"atTimestamp",4),"locked deposit atTimestamp",n),lockDurationSeconds:xi(X(e,"lockDuration",5),"locked deposit lockDuration",n)}}function Ri(e,n){let t=n.chain.contracts.DomfiVault;if(t===void 0)return yn(n.chain,"chain profile is missing DomfiVault contract address");let i=ve(t,"DomfiVault contract address",c=>yn(n.chain,c)),r=Gh[n.verb],a=Yh[r],o=tw(e,a,n.chain,i);if(o===void 0)return yn(n.chain,`receipt is missing expected ${r} vault event`);let{log:d,args:u}=o,l=sw(e,d,n.chain,n.verb);switch(r){case "Deposit":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),owner:je(X(u,"owner",1),"owner",n.chain),assets:he.fromRaw(kn(X(u,"assets",2),"assets",n.chain)),shares:se.fromRaw(kn(X(u,"shares",3),"shares",n.chain))};case "WithdrawRequested":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),owner:je(X(u,"owner",1),"owner",n.chain),shares:se.fromRaw(kn(X(u,"shares",2),"shares",n.chain)),currEpoch:xi(X(u,"currEpoch",3),"currEpoch",n.chain),unlockEpoch:xi(X(u,"unlockEpoch",4),"unlockEpoch",n.chain)};case "WithdrawCanceled":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),owner:je(X(u,"owner",1),"owner",n.chain),shares:se.fromRaw(kn(X(u,"shares",2),"shares",n.chain)),currEpoch:xi(X(u,"currEpoch",3),"currEpoch",n.chain),unlockEpoch:xi(X(u,"unlockEpoch",4),"unlockEpoch",n.chain)};case "Withdraw":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),receiver:je(X(u,"receiver",1),"receiver",n.chain),owner:je(X(u,"owner",2),"owner",n.chain),assets:he.fromRaw(kn(X(u,"assets",3),"assets",n.chain)),shares:se.fromRaw(kn(X(u,"shares",4),"shares",n.chain))};case "DepositLocked":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),owner:je(X(u,"owner",1),"owner",n.chain),depositId:kn(X(u,"depositId",2),"depositId",n.chain),lockedDeposit:Uc(X(u,"d",3),n.chain)};case "DepositUnlocked":return {eventName:r,...l,sender:je(X(u,"sender",0),"sender",n.chain),receiver:je(X(u,"receiver",1),"receiver",n.chain),owner:je(X(u,"owner",2),"owner",n.chain),depositId:kn(X(u,"depositId",3),"depositId",n.chain),lockedDeposit:Uc(X(u,"d",4),n.chain)}}}var cw={vaultDeposit:"deposit",vaultMint:"mint",vaultMakeWithdrawRequest:"makeWithdrawRequest",vaultCancelWithdrawRequest:"cancelWithdrawRequest",vaultWithdraw:"withdraw",vaultRedeem:"redeem",vaultDepositWithDiscountAndLock:"depositWithDiscountAndLock",vaultMintWithDiscountAndLock:"mintWithDiscountAndLock",vaultUnlockDeposit:"unlockDeposit"},pw={vaultDeposit:"asset",vaultMint:"asset",vaultMakeWithdrawRequest:"share",vaultCancelWithdrawRequest:"share",vaultWithdraw:"share",vaultRedeem:"share",vaultDepositWithDiscountAndLock:"asset",vaultMintWithDiscountAndLock:"asset"},$c=2n**256n-1n,mw=["maxOracleFeeWei","gas","nonce","maxFeePerGas","maxPriorityFeePerGas","skipApprovalCheck","delegation","trader"],fw=["account","expectedTradeId","verb","pairIndex","initiatedTradeId","terminalTradeId"],yw=6e4;function ep(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ke(e,n,t,i){return new mt.ValidationError({message:n,diagnostics:Y(e),...t!==void 0?{hint:t}:{},...{}})}function gw(e,n,t){return new mt.TimeoutError({message:n,diagnostics:Y(e),...{}})}function np(e,n,t){return new mt.ContractRevertError({message:`${n} transaction reverted`,diagnostics:Y(e),hash:t})}function bw(e,n,t){return new mt.ContractRevertError({message:`${n} transaction reverted`,diagnostics:Y(e),cause:t})}function vr(e,n){return new mt.AbortError({message:"vault action was aborted",diagnostics:Y(e),...n!==void 0?{cause:n}:{}})}function tp(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function Ea(e,n){if(n?.aborted===true)throw vr(e,n.reason)}function Tw(e,n,t){return new Promise((i,r)=>{let a=()=>{clearTimeout(o),t?.removeEventListener("abort",a),r(vr(e,t?.reason));},o=setTimeout(()=>{t?.removeEventListener("abort",a),i();},n);if(t?.aborted===true){a();return}t?.addEventListener("abort",a,{once:true});})}function hw(e){let n=e.getTransactionCount;if(typeof n=="function")return {getTransactionCount:n.bind(e)}}async function jc(e,n,t,i,r,a){let o=hw(n);if(o===void 0)return;let d=Date.now()+yw,u=cn(e.chain,void 0),l=0,c=0;for(;;){if(Ea(e,a),[l,c]=await Promise.all([o.getTransactionCount({address:t,blockTag:"latest"}),o.getTransactionCount({address:t,blockTag:"pending"})]),l>=r&&c===l)return l;if(Date.now()>=d)throw gw(e,`${i} nonce did not become idle; latest ${l}, pending ${c}, minimum ${r}.`);await Tw(e,u,a);}}function Va(e,n){return e.toLowerCase()===n.toLowerCase()}function ww(e,n){if(n==="vaultUnlockDeposit")throw ke(e,"vaultUnlockDeposit cannot require a fungible approval","Unlocking a locked deposit requires existing NFT ownership or approval, not ERC20 allowance approval.")}function vw(e,n,t){if(!Va(t.spender,n))throw ke(e,"vaultUnlockDeposit NFT authorization does not target the resolved signing account","Prepare unlockDeposit with the same account used for the high-level action.");if(t.action!=="none")throw ke(e,"vaultUnlockDeposit requires existing NFT authorization","The locked deposit NFT owner must approve the action account or call unlock from the owner account.");if(!(Va(t.owner,n)||Va(t.currentApproved,n))&&!t.operatorApproved)throw ke(e,"vaultUnlockDeposit NFT authorization is inconsistent with the resolved signing account","Prepare unlockDeposit with approval checks enabled for the same account used by the high-level action.")}function Fa(e){return cw[e]}function ip(e,n,t){if(!(n===void 0||typeof n=="object"&&n!==null))throw ke(e,`${t} must be an options object`)}function Pw(e,n){if(ip(e,n,"vault action options"),n!==void 0){for(let t of mw)if(ep(n,t))throw ke(e,`vault action options cannot include ${t}`,"High-level vault actions own approval checks and transaction send controls internally.")}}function zc(e,n){if(ip(e,n,"vault action tracking options"),n!==void 0){for(let t of fw)if(ep(n,t))throw ke(e,`action outcome tracking options cannot include ${t}`,"High-level actions own receipt recovery and transaction identity fields internally.")}}function xw(e,n){let t=n?.approval??We.RequireExisting;if(t===We.RequireExisting||t===We.AutoExact||t===We.UnsafeMaxUint256)return t;throw ke(e,"invalid vault action approval policy","Use ActionApprovalPolicy.RequireExisting, ActionApprovalPolicy.AutoExact, or ActionApprovalPolicy.UnsafeMaxUint256.")}function Rw(e,n){let t=n?.simulation??Hn.Required;if(t===Hn.Required||t===Hn.Skip)return t;throw ke(e,"invalid vault action simulation policy","Use ActionSimulationPolicy.Required or ActionSimulationPolicy.Skip.")}function kw(e,n){return {approval:xw(e,n),simulation:Rw(e,n)}}function Aw(e,n){return {account:e,...n?.signal!==void 0?{signal:n.signal}:{}}}function Gc(e,n){return {account:e,...n?.signal!==void 0?{signal:n.signal}:{}}}function Kc(e){if(e!==void 0)return {...e.signal!==void 0?{signal:e.signal}:{},...e.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e.readinessPolicy!==void 0?{readinessPolicy:e.readinessPolicy}:{},...e.confirmations!==void 0?{confirmations:e.confirmations}:{},...e.pollingIntervalMs!==void 0?{pollingIntervalMs:e.pollingIntervalMs}:{}}}function Iw(e,n,t){let i=Fa(n);if(t.verb!==i)throw ke(e,`${n} prepared a ${t.verb} vault transaction instead of ${i}`)}function Ow(e,n,t){let i=Fa(n);if(t.verb!==i)throw ke(e,`${n} sent a ${t.verb} vault transaction handle instead of ${i}`)}function Cw(e,n){if(n.requiredApprovals.status!=="checked")throw e.publicClient===void 0&&qn(e,"high-level vault action approval checks"),ke(e,"vault approval checks were not completed before the high-level action","Prepare the vault transaction without skipApprovalCheck and with a public client configured.")}function Dw(e,n,t,i){let r=[],a=false;for(let o of i.requiredApprovals.approvals){if(o.kind==="nft"){if(n!=="vaultUnlockDeposit")throw ke(e,"NFT approval needs are not supported by this high-level vault action","Submit NFT approvals separately before using high-level vault actions.");a=true,vw(e,t,o);continue}if(n==="vaultUnlockDeposit")throw ke(e,"vaultUnlockDeposit prepared an unexpected fungible approval need","Unlocking a locked deposit should only require existing NFT ownership or approval.");o.action==="approve"&&r.push(o);}if(n==="vaultUnlockDeposit"){if(a)return;throw ke(e,"vaultUnlockDeposit did not include NFT authorization evidence","Prepare unlockDeposit with approval checks enabled before using high-level actions.")}if(r.length>1)throw ke(e,"multiple vault approval transactions are not supported yet","Send approvals separately until action approval evidence supports multiple approval transactions.");return r[0]}function Sw(e,n,t){if(!Va(t.owner,n))throw ke(e,"vault approval owner does not match the resolved signing account","High-level vault actions can only auto-approve allowances owned by the signing account.")}function Mw(e,n,t){let i=pw[n];if(t.kind!==i)throw ke(e,`${n} prepared a ${t.kind} approval need instead of ${i}`)}function _w(e,n){let t=e.account;return typeof t=="object"&&t!==null&&"address"in t&&typeof t.address=="string"&&t.address.toLowerCase()===n.toLowerCase()?t:n}function Vw(e,n,t){return {hash:n,pollingInterval:cn(e.chain,t?.pollingIntervalMs),...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...t?.timeoutMs!==void 0?{timeout:t.timeoutMs}:{},...t?.signal!==void 0?{signal:t.signal}:{}}}function Ew(e,n,t){let i=n.waitForTransactionReceipt;return En({wait:async r=>{Ea(e,r?.signal);try{return await Cn(n,t,()=>i(Vw(e,t,r)),r?.signal)}catch(a){throw r?.signal?.aborted===true||tp(a)?vr(e,a):a}},mapAbort:r=>vr(e,r)})}async function Fw(e,n,t,i,r){Ea(e,t?.signal);let a=qn(e,"high-level vault action approval"),o=fr(e,"high-level vault action approval");Ia(e,n);let d=_w(o,n),u=i.kind==="asset"?r===We.UnsafeMaxUint256?he.fromRaw($c):i.requiredAllowance:r===We.UnsafeMaxUint256?se.fromRaw($c):i.requiredAllowance,l=i.kind==="asset"?he.toRaw(u):se.toRaw(u),c=await jc(e,a,n,"before high-level vault action approval",0,t?.signal),p;try{p=await o.writeContract({address:i.token,abi:D.IERC20,functionName:"approve",args:[i.spender,l],account:d,chain:null,...t?.signal!==void 0?{signal:t.signal}:{}});}catch(g){throw t?.signal?.aborted===true||tp(g)?vr(e,g):mt.isContractRevertLikeError(g)?bw(e,"approval",g):g}let f=await Ew(e,a,p)(t?.signal===void 0?void 0:{signal:t.signal});if(f.status==="reverted")throw np(e,"approval",p);return c!==void 0&&await jc(e,a,n,"after high-level vault action approval",c+1,t?.signal),i.kind==="asset"?{kind:"asset",policy:r,token:i.token,owner:i.owner,spender:i.spender,requiredAllowance:i.requiredAllowance,approvedAllowance:u,hash:p,receipt:f}:{kind:"share",policy:r,token:i.token,owner:i.owner,spender:i.spender,requiredAllowance:i.requiredAllowance,approvedAllowance:u,hash:p,receipt:f}}async function Lw(e,n){let t=Dw(e.deps,e.action,n.account,n.prepared);if(t!==void 0){if(n.policies.approval===We.RequireExisting)throw ke(e.deps,"required vault allowance is missing","Use ActionApprovalPolicy.AutoExact or ActionApprovalPolicy.UnsafeMaxUint256, or approve the vault token before sending.");return ww(e.deps,e.action),Mw(e.deps,e.action,t),Sw(e.deps,n.account,t),await Fw(e.deps,n.account,e.opts,t,n.policies.approval)}}function Yc(e,n,t,i){if(i.status==="reverted")throw np(e,n,t)}function Xc(e,n,t,i){let r=Fa(e),a=Ri(t,{chain:i.chain,verb:r});return {action:e,status:"confirmed",hash:n,receipt:t,vault:{verb:r,outcome:a}}}function Nw(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function Zc(e){let n,t=()=>(n===void 0&&(n=Ne(Promise.resolve().then(e))),n);return {then:(o,d)=>t().then(o,d),catch:o=>t().catch(o),finally:o=>t().finally(o),[Symbol.toStringTag]:"Promise"}}function $n(e){let n,t,i,r=()=>(n===void 0&&(n=Ne(Promise.resolve().then(async()=>{Pw(e.deps,e.opts);let u=kw(e.deps,e.opts);Ea(e.deps,e.opts?.signal);let l=bi(e.deps,e.opts?.account,e.action),c=await e.prepare(Aw(l,e.opts));return Iw(e.deps,e.action,c),Cw(e.deps,c),{account:l,policies:u,prepared:c,verb:Fa(e.action)}}))),n),a=()=>(t===void 0&&(t=Ne(r().then(u=>Lw(e,u)))),t),o=()=>(i===void 0&&(i=Ne(r().then(async u=>{await a(),u.policies.simulation===Hn.Required&&await u.prepared.simulate(Gc(u.account,e.opts));let l=await u.prepared.send(Gc(u.account,e.opts));return Ow(e.deps,e.action,l),l}))),i),d=u=>Ne(Promise.resolve().then(async()=>(await o()).waitReceipt(u)));return {approval:Zc(()=>a()),hash:Zc(async()=>(await o()).hash),waitReceipt:u=>d(u),outcome:async u=>{zc(e.deps,u);let l=await o(),c=await d(Kc(u));return Yc(e.deps,e.action,l.hash,c),Xc(e.action,l.hash,c,e.deps)},watch:u=>Nw(async function*(){zc(e.deps,u);let l=await o();yield {phase:"submitted",action:e.action,hash:l.hash};let c=await d(Kc(u));yield {phase:"mined",action:e.action,hash:l.hash,receipt:c},Yc(e.deps,e.action,l.hash,c),yield {phase:"terminal",action:e.action,hash:l.hash,outcome:Xc(e.action,l.hash,c,e.deps)};})}}function Na(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function sp(e){return typeof e=="object"&&e!==null}function Ww(e){return sp(e)&&Na(e,"clear")&&e.clear===true}function rp(e,n,t){if(!sp(t)||!Na(t,"clear"))return t;if(t.clear===true&&!Na(t,"pnlPercent")&&!Na(t,"priceDeltaPercent"))return {clear:true};throw new mt.ValidationError({message:`${n} clear cannot be combined with percent inputs`,diagnostics:Y(e)})}function qt(e,n,t){return new mt.ValidationError({message:`${n} ${t} was not resolved before outcome evidence`,diagnostics:Y(e)})}function La(e,n){return {...n,expectedTradeId:e().tradeId}}async function ap(e,n,t,i,r){if(Ww(r))return {clear:true};let a=await Mc(e,n,t);return i==="takeProfit"?Vc(e,a,r):Ec(e,a,r)}function up(e,n,t,i){return {openMarket(r,a){return we({action:"openMarket",start:()=>Rn({action:"openMarket",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(Oc(e,r),a),outcomeFromHandle:Ma({action:"openMarket"}),watchFromHandle:_a({action:"openMarket"})})})},openLimit(r,a){return we({action:"openLimit",start:()=>Rn({action:"openLimit",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(Cc(e,r),a),outcomeFromHandle:qs(e,"openLimit")})})},openStop(r,a){return we({action:"openStop",start:()=>Rn({action:"openStop",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(Dc(e,r),a),outcomeFromHandle:qs(e,"openStop")})})},closePosition(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"closePosition","position ref");return d};return we({action:"closePosition",start:()=>Rn({action:"closePosition",deps:e,token:t,opts:o,prepare:async()=>{let l=await wi(e,r,o);return d=l.ref,n.prepareClosePosition(l.ref,Sc(e,a),o)},outcomeFromHandle:Ma({action:"closePosition",positionRef:u,trackOptions:l=>La(u,l)}),watchFromHandle:_a({action:"closePosition",positionRef:u,trackOptions:l=>La(u,l)})})})},updateTakeProfit(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"updateTakeProfit","position ref");return d};return we({action:"updateTakeProfit",start:()=>Rn({action:"updateTakeProfit",deps:e,token:t,opts:o,prepare:async()=>{let l=rp(e,"takeProfit",a),c=await wi(e,r,o);d=c.ref;let p=await ap(e,c,o,"takeProfit",l);return n.prepareUpdateTakeProfit(c.ref,{takeProfit:p},o)},outcomeFromHandle:vi("updateTakeProfit",l=>{let c=u();return ui(e,l,{verb:"updateTakeProfit",expected:{wallet:c.wallet,pairIndex:c.pairIndex,tradeId:c.tradeId,index:G.toNumber(c.index)}})})})})},updateStopLoss(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"updateStopLoss","position ref");return d};return we({action:"updateStopLoss",start:()=>Rn({action:"updateStopLoss",deps:e,token:t,opts:o,prepare:async()=>{let l=rp(e,"stopLoss",a),c=await wi(e,r,o);d=c.ref;let p=await ap(e,c,o,"stopLoss",l);return n.prepareUpdateStopLoss(c.ref,{stopLoss:p},o)},outcomeFromHandle:vi("updateStopLoss",l=>{let c=u();return ui(e,l,{verb:"updateStopLoss",expected:{wallet:c.wallet,pairIndex:c.pairIndex,tradeId:c.tradeId,index:G.toNumber(c.index)}})})})})},topUpCollateral(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"topUpCollateral","position ref");return d};return we({action:"topUpCollateral",start:()=>Rn({action:"topUpCollateral",deps:e,token:t,opts:o,prepare:async()=>{let l=await wi(e,r,o);return d=l.ref,n.prepareTopUpCollateral(l.ref,Ws(e,a),o)},outcomeFromHandle:vi("topUpCollateral",l=>{let c=u();return ui(e,l,{verb:"topUpCollateral",expected:{wallet:c.wallet,pairIndex:c.pairIndex,tradeId:c.tradeId}})})})})},removeCollateral(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"removeCollateral","position ref");return d};return we({action:"removeCollateral",start:()=>Rn({action:"removeCollateral",deps:e,token:t,opts:o,prepare:async()=>{let l=await wi(e,r,o);return d=l.ref,n.prepareRemoveCollateral(l.ref,Ws(e,a),o)},outcomeFromHandle:Ma({action:"removeCollateral",positionRef:u,trackOptions:l=>La(u,l)}),watchFromHandle:_a({action:"removeCollateral",positionRef:u,trackOptions:l=>La(u,l)})})})},updateTriggerOrder(r,a,o){let d,u=()=>{if(d===void 0)throw qt(e,"updateTriggerOrder","trigger order ref");return d};return we({action:"updateTriggerOrder",start:()=>Rn({action:"updateTriggerOrder",deps:e,token:t,opts:o,prepare:async()=>{let l=Ns(e,r,o);return d=l,n.prepareUpdateOpenLimitOrder(l,await Fc(e,l,a),o)},outcomeFromHandle:vi("updateTriggerOrder",l=>{let c=u();return ui(e,l,{verb:"updateOpenLimitOrder",expected:{wallet:c.wallet,pairIndex:c.pairIndex,index:c.index}})})})})},cancelTriggerOrder(r,a){let o,d=()=>{if(o===void 0)throw qt(e,"cancelTriggerOrder","trigger order ref");return o};return we({action:"cancelTriggerOrder",start:()=>Rn({action:"cancelTriggerOrder",deps:e,token:t,opts:a,prepare:async()=>{let u=Ns(e,r,a);return o=u,n.prepareCancelOpenLimitOrder(u,a)},outcomeFromHandle:vi("cancelTriggerOrder",u=>{let l=d();return ui(e,u,{verb:"cancelOpenLimitOrder",expected:{wallet:l.wallet,pairIndex:l.pairIndex,index:l.index}})})})})},vaultDeposit(r,a){return we({action:"vaultDeposit",start:()=>$n({action:"vaultDeposit",deps:e,opts:a,prepare:o=>i.prepareDeposit(r,o)})})},vaultMint(r,a){return we({action:"vaultMint",start:()=>$n({action:"vaultMint",deps:e,opts:a,prepare:o=>i.prepareMint(r,o)})})},vaultMakeWithdrawRequest(r,a){return we({action:"vaultMakeWithdrawRequest",start:()=>$n({action:"vaultMakeWithdrawRequest",deps:e,opts:a,prepare:o=>i.prepareMakeWithdrawRequest(r,o)})})},vaultCancelWithdrawRequest(r,a){return we({action:"vaultCancelWithdrawRequest",start:()=>$n({action:"vaultCancelWithdrawRequest",deps:e,opts:a,prepare:o=>i.prepareCancelWithdrawRequest(r,o)})})},vaultWithdraw(r,a){return we({action:"vaultWithdraw",start:()=>$n({action:"vaultWithdraw",deps:e,opts:a,prepare:o=>i.prepareWithdraw(r,o)})})},vaultRedeem(r,a){return we({action:"vaultRedeem",start:()=>$n({action:"vaultRedeem",deps:e,opts:a,prepare:o=>i.prepareRedeem(r,o)})})},vaultDepositWithDiscountAndLock(r,a){return we({action:"vaultDepositWithDiscountAndLock",start:()=>$n({action:"vaultDepositWithDiscountAndLock",deps:e,opts:a,prepare:o=>i.prepareDepositWithDiscountAndLock(r,o)})})},vaultMintWithDiscountAndLock(r,a){return we({action:"vaultMintWithDiscountAndLock",start:()=>$n({action:"vaultMintWithDiscountAndLock",deps:e,opts:a,prepare:o=>i.prepareMintWithDiscountAndLock(r,o)})})},vaultUnlockDeposit(r,a){return we({action:"vaultUnlockDeposit",start:()=>$n({action:"vaultUnlockDeposit",deps:e,opts:a,prepare:o=>i.prepareUnlockDeposit(r,o)})})}}}function ki(e){if(e!==void 0)return n=>{try{let t=e(n);Bw(t)&&Promise.resolve(t).catch(()=>{});}catch{}}}function Bw(e){return (typeof e=="object"||typeof e=="function")&&e!==null&&"then"in e&&typeof e.then=="function"}var Uw=/^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})(?:\.(\d{1,9}))?(Z|([+-])(\d{2}):(\d{2}))$/;function Me(e,n){let t=e.charCodeAt(n);return t>=48&&t<=57}function Ai(e,n,t){return Number(e.slice(n,t))}function qw(e){return e%4===0&&(e%100!==0||e%400===0)}function dp(e,n){return n===2?qw(e)?29:28:n===4||n===6||n===9||n===11?30:31}function Hw(e){return e.length===24&&e[4]==="-"&&e[7]==="-"&&e[10]==="T"&&e[13]===":"&&e[16]===":"&&e[19]==="."&&e[23]==="Z"&&Me(e,0)&&Me(e,1)&&Me(e,2)&&Me(e,3)&&Me(e,5)&&Me(e,6)&&Me(e,8)&&Me(e,9)&&Me(e,11)&&Me(e,12)&&Me(e,14)&&Me(e,15)&&Me(e,17)&&Me(e,18)&&Me(e,20)&&Me(e,21)&&Me(e,22)}function lp(e){if(!Hw(e))return false;let n=Ai(e,0,4),t=Ai(e,5,7),i=Ai(e,8,10),r=Ai(e,11,13),a=Ai(e,14,16),o=Ai(e,17,19);return t>=1&&t<=12&&i>=1&&i<=dp(n,t)&&r<=23&&a<=59&&o<=59}function cp(e,n){if(!Number.isSafeInteger(e)||e<0)throw new Error(`${n} invalid timestamp`);let t=new Date(e);if(!Number.isFinite(t.getTime()))throw new Error(`${n} invalid timestamp`);return e}function pp(e,n){let t=Uw.exec(e);if(!t)throw new Error(`${n} must be an ISO timestamp`);let i=Date.parse(e);if(!Number.isFinite(i))throw new Error(`${n} must be an ISO timestamp`);let r=new Date(i).toISOString(),[,a="",o="",d="",u="",l="",c="",p="",m="Z",,f="",g=""]=t,T=Number(a),v=Number(o),x=Number(d),W=Number(u),re=Number(l),ne=Number(c),le=f===""?0:Number(f),ce=g===""?0:Number(g);if(!(v>=1&&v<=12&&x>=1&&x<=dp(T,v)&&W<=23&&re<=59&&ne<=59&&le<=23&&ce<=59))throw new Error(`${n} must be an ISO timestamp`);let H=`${a}-${o}-${d}T${u}:${l}:${c}.${p.slice(0,3).padEnd(3,"0")}Z`;if(m==="Z"&&r!==H)throw new Error(`${n} must be an ISO timestamp`);return {isoTimestamp:r,millis:i}}function mp(e,n){if(typeof e=="string")return lp(e)?e:pp(e,n).isoTimestamp;if(typeof e=="number")return new Date(cp(e,n)).toISOString();throw new Error(`${n} invalid timestamp`)}function fp(e,n){if(typeof e=="string")return lp(e)?Date.parse(e):pp(e,n).millis;if(typeof e=="number")return cp(e,n);throw new Error(`${n} invalid timestamp`)}var $w=/^-?(?:0|[1-9]\d*)$/,jw="serde";function Wa(e,n){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:jw,chainId:0},...n!==void 0?{cause:n}:{}})}function ue(e,n){if(typeof e=="bigint")return e;if(typeof e=="number")return Number.isSafeInteger(e)||Wa(`${n} must be a safe integer; unsafe integer values are rejected`),BigInt(e);if(typeof e=="string")return $w.test(e)||Wa(`${n} must be an integer string`),BigInt(e);Wa(`${n} must be an integer`);}function de(e,n){try{return mp(e,n)}catch(t){if(t instanceof mt.ValidationError)throw t;let i=t instanceof Error?t.message:`${n} invalid timestamp`;Wa(i,t);}}function ze(e,n){if(e!=null)return ue(e,n)}var _e={"markets.list":{maxLagBlocks:30n},"markets.get":{maxLagBlocks:30n},"markets.state":{maxLagBlocks:30n},"prices.head":{maxLagBlocks:30n},"prices.candles":{maxLagBlocks:30n},"prices.ticks":{maxLagBlocks:30n},"account.positions":{maxLagBlocks:30n},"account.position":{maxLagBlocks:30n},"account.positionsBatch":{maxLagBlocks:30n},"account.orders":{maxLagBlocks:30n},"account.trades":{maxLagBlocks:30n},"orders.get":{maxLagBlocks:30n},"trades.events":{maxLagBlocks:30n},"status.get":{maxLagBlocks:30n}},Gw="read-plane";function Be(e,n={}){let t=ze(e.indexed_block,"indexed_block"),i=ze(e.chain_head_block,"chain_head_block"),r=ze(e.lag_blocks,"lag_blocks"),a=t!==void 0&&i!==void 0&&i>=t?i-t:void 0,o=r??a,d=ze(e.cache_age_seconds,"cache_age_seconds"),u=ze(n.maxLagBlocks,"maxLagBlocks"),l={source:e.source,generatedAt:de(e.generated_at,"generated_at"),isStale:o!==void 0&&u!==void 0&&o>u};return t!==void 0&&(l.indexedBlock=t),i!==void 0&&(l.chainHeadBlock=i),o!==void 0&&(l.lagBlocks=o),e.cache_status!==void 0&&e.cache_status!==null&&(l.cacheStatus=e.cache_status),d!==void 0&&(l.cacheAgeSeconds=d),l}function Ba(e){let n=e.policy??"strict";if(n==="ignore")return;let t=e.unsafeReasons??[],i=e.degradedReasons??[],r=t.length>0?t:i;if(r.length===0)return;let a=Kw(e);if(n==="warn"){e.onEvent?.({type:"warning",code:"READ_MODEL_NOT_READY",message:"Read model is degraded for this route",diagnostics:a,degradedReasons:r});return}if(t.length!==0)throw new mt.ReadModelNotReadyError({message:"Read model is not ready for this route",diagnostics:a})}function Kw(e){return {sdkVersion:I,sourceTag:Gw,...e.diagnostics,chainId:e.chainId}}var Xw=new Set(["open","close","remove_collateral","unknown"]),Zw=new Set(["market","limit","stop","automation","remove_collateral","unknown"]),Jw=new Set(["pending_execution","timeout_available","executed","canceled","timed_out","unknown"]);function Ha(e,n){let t=Ve(e,"kind");if(t!=="open_position")return Qw(e,n.wallet,t);let i={kind:"open_position",wallet:n.wallet,pairIndex:P.from(Ii(e,"pair_index")),index:G.from(Ii(e,"index")),tradeId:$.parse(Ve(e,"trade_id")),side:qa(e,"buy_side")?"long":"short",collateral:M.fromDecimal(Ve(e,"collateral")),leverage:U.fromDecimal(Ve(e,"leverage")),openPrice:_.fromDecimal(Ve(e,"open_price")),pendingReasons:[]},r=J(e,"initial_collateral");r!==void 0&&(i.initialCollateral=M.fromDecimal(r));let a=J(e,"init_funding_fee");a!==void 0&&(i.initialAccFundingRaw=Sn.fromDecimal(a));let o=J(e,"trade_notional");o!==void 0&&(i.notional=Dn.fromDecimal(o));let d=J(e,"tp");d!==void 0&&(i.takeProfit=_.fromDecimal(d));let u=J(e,"sl");u!==void 0&&(i.stopLoss=_.fromDecimal(u)),e.timestamp!==void 0&&e.timestamp!==null&&(i.openedAt=de(e.timestamp,"timestamp"));try{i.verifiedRef=yr(i,n.chainId);}catch{}return i}function gp(e,n){let t=av(e.action),i=ov(e.order_type),r=sv(e.status),a=Hs(e,"timeout_block"),o={orderId:Ke.parse(Ve(e,"order_id")),lifecycleKey:Ve(e,"lifecycle_key"),wallet:n.wallet,action:t.value,orderType:i.value,status:r.value,positionRef:iv(e,"position_ref",n.chainId),isPending:qa(e,"is_pending"),isCancelled:qa(e,"is_cancelled"),timestamp:de(e.timestamp,"timestamp")};t.raw!==void 0&&(o.rawAction=t.raw),i.raw!==void 0&&(o.rawOrderType=i.raw),r.raw!==void 0&&(o.rawStatus=r.raw);let d=Ua(e,"pair_index");d!==void 0&&(o.pairIndex=P.from(d)),a!==void 0&&(o.timeoutBlock=a),a!==void 0&&n.freshness.chainHeadBlock!==void 0&&(o.timeoutAvailable=a<=n.freshness.chainHeadBlock);let u=J(e,"trade_id");u!==void 0&&(o.tradeId=$.parse(u));let l=J(e,"limit_index");l!==void 0&&(o.limitIndex=Fe.parseApi(l));let c=Hs(e,"initiated_block");c!==void 0&&(o.initiatedBlock=c);let p=Hs(e,"executed_block");p!==void 0&&(o.executedBlock=p);let m=J(e,"initiated_event_type");m!==void 0&&(o.initiatedEventType=m);let f=J(e,"terminal_event_type");f!==void 0&&(o.terminalEventType=f);let g=J(e,"latest_event_type");g!==void 0&&(o.latestEventType=g);let T=Pr(e,"initiated_tx_hash",n.chainId);T!==void 0&&(o.initiatedTxHash=T);let v=Pr(e,"executed_tx_hash",n.chainId);v!==void 0&&(o.executedTxHash=v);let x=Ua(e,"cancel_reason");if(x!==void 0&&(o.cancelReason=x),nv(e,o),tv(e,n.wallet,n.chainId))try{o.verifiedRef=Oa(o,n.chainId);}catch{}return o}function bp(e,n){let t=M.fromDecimal(Ve(e,"collateral")),i=U.fromDecimal(Ve(e,"leverage")),r={wallet:n.wallet,pairIndex:P.from(Ii(e,"pair_index")),index:G.from(Ii(e,"trade_index")),tradeId:$.parse(Ve(e,"trade_id")),side:qa(e,"buy_side")?"long":"short",openPrice:_.fromDecimal(Ve(e,"open_price")),initialCollateral:M.fromDecimal(Ve(e,"initial_collateral")),collateral:t,leverage:i,notional:rv(e),openEventType:Ve(e,"open_event_type"),status:Ve(e,"status"),openedAt:de(e.open_timestamp,"open_timestamp"),timestamp:de(e.timestamp,"timestamp")},a=J(e,"close_price");a!==void 0&&(r.closePrice=_.fromDecimal(a));let o=J(e,"closing_collateral");o!==void 0&&(r.closingCollateral=M.fromDecimal(o));let d=J(e,"close_reason");d!==void 0&&(r.closeReason=d);let u=J(e,"percent_profit");u!==void 0&&(r.percentProfit=ii(u));let l=J(e,"realized_pnl_usdc");l!==void 0&&(r.realizedPnl=ut.fromDecimal(l));let c=J(e,"usdc_sent_to_trader");c!==void 0&&(r.collateralSentToTrader=M.fromDecimal(c));let p=J(e,"funding_fee");p!==void 0&&(r.fundingFee=ut.fromDecimal(p));let m=J(e,"limit_index");m!==void 0&&(r.limitIndex=Fe.parseApi(m));let f=Pr(e,"open_tx_hash");f!==void 0&&(r.openTxHash=f);let g=Pr(e,"close_tx_hash");return g!==void 0&&(r.closeTxHash=g),e.close_timestamp!==void 0&&e.close_timestamp!==null&&(r.closedAt=de(e.close_timestamp,"close_timestamp")),r}function Qw(e,n,t){let i=Ve(e,"event_type"),r={kind:"pending_position",rawKind:t,wallet:n,eventType:i,pendingReasons:[ev(i)]},a=J(e,"order_id");a!==void 0&&(r.orderId=Ke.parse(a));let o=Ua(e,"pair_index");o!==void 0&&(r.pairIndex=P.from(o));let d=Ua(e,"index");d!==void 0&&(r.index=G.from(d));let u=J(e,"trade_id");u!==void 0&&(r.tradeId=$.parse(u));let l=lv(e,"buy_side");l!==void 0&&(r.side=l?"long":"short");let c=J(e,"collateral");c!==void 0&&(r.collateral=M.fromDecimal(c));let p=J(e,"initial_collateral");p!==void 0&&(r.initialCollateral=M.fromDecimal(p));let m=J(e,"leverage");m!==void 0&&(r.leverage=U.fromDecimal(m));let f=J(e,"trade_notional");f!==void 0&&(r.notional=Dn.fromDecimal(f));let g=J(e,"open_price");g!==void 0&&(r.openPrice=_.fromDecimal(g));let T=J(e,"wanted_price");T!==void 0&&(r.wantedPrice=_.fromDecimal(T));let v=J(e,"tp");v!==void 0&&(r.takeProfit=_.fromDecimal(v));let x=J(e,"sl");x!==void 0&&(r.stopLoss=_.fromDecimal(x));let W=J(e,"target_trade_id");W!==void 0&&(r.targetTradeId=$.parse(W));let re=J(e,"close_percentage");re!==void 0&&(r.closePercentage=Ye.fromDecimal(re));let ne=J(e,"remove_amount");ne!==void 0&&(r.removeAmount=M.fromDecimal(ne));let le=J(e,"limit_index");le!==void 0&&(r.limitIndex=Fe.parseApi(le));let ce=Pr(e,"transaction_hash");return ce!==void 0&&(r.txHash=ce),e.timestamp!==void 0&&e.timestamp!==null&&(r.timestamp=de(e.timestamp,"timestamp")),r}function ev(e){return e.includes("RemoveCollateral")?"remove_collateral_pending":e.includes("Limit")||e.includes("Stop")?"trigger_pending":e.includes("MarketClosed")?"being_market_closed":"unknown_pending_mutation"}function nv(e,n){let t=e.trigger_order_type;if(t!=null){if(t==="limit"||t==="stop"){n.triggerOrderType=t;return}typeof t!="string"&&gn("trigger_order_type must be a string"),n.rawTriggerOrderType=t;}}function tv(e,n,t){let i=dv(e,"wallet",t);return i===void 0||i.toLowerCase()===n.toLowerCase()}function iv(e,n,t=0){let i=e[n];if(i===null)return null;(i===void 0||typeof i!="object"||Array.isArray(i))&&gn(`${n} must be an object or null`,t);let r=i;return {wallet:uv(r,"wallet",t),pairIndex:P.from(Ii(r,"pair_index")),index:G.from(Ii(r,"index")),tradeId:$.parse(Ve(r,"trade_id"))}}function rv(e){return Dn.fromDecimal(Ve(e,"trade_notional"))}function av(e){return $s(e,Xw,"action")}function ov(e){return $s(e,Zw,"order_type")}function sv(e){return $s(e,Jw,"status")}function $s(e,n,t){return typeof e!="string"&&gn(`${t} must be a string`),n.has(e)?{value:e}:{value:"unknown",raw:e}}function Ve(e,n){let t=e[n];return typeof t!="string"&&gn(`${n} must be a string`),t}function J(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&gn(`${n} must be a string`),t}function gn(e,n=0,t){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function uv(e,n,t=0){return ve(e[n],n,(i,r)=>gn(i,t,r))}function dv(e,n,t=0){let i=e[n];if(i!=null)return ve(i,n,(r,a)=>gn(r,t,a))}function Pr(e,n,t=0){let i=e[n];if(i!=null)return nn(i,n,(r,a)=>gn(r,t,a))}function Ii(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&gn(`${n} must be an integer`),t}function Ua(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&gn(`${n} must be an integer`),t}function qa(e,n){let t=e[n];return typeof t!="boolean"&&gn(`${n} must be a boolean`),t}function lv(e,n){let t=e[n];if(t!=null)return typeof t!="boolean"&&gn(`${n} must be a boolean`),t}function Hs(e,n){let t=e[n];if(t!=null)return ue(t,n)}var pv=4294967295n;function Ks(e){let n=xr(e,"contracts"),t=xr(e,"constraints"),i=xr(e,"fees"),r={minLeverage:U.fromRaw(In(t,"min_leverage")),maxLeverage:U.fromRaw(In(t,"max_leverage")),makerMaxLeverage:U.fromRaw(In(t,"maker_max_leverage")),minLevPosition:M.fromRaw(In(t,"min_lev_position")),groupMaxCollateral:M.fromRaw(In(t,"group_max_collateral")),marketOrdersTimeout:ue(t.market_orders_timeout,"market_orders_timeout"),maxTradesPerPair:ue(t.max_trades_per_pair,"max_trades_per_pair"),maxPendingMarketOrders:ue(t.max_pending_market_orders,"max_pending_market_orders")},a=Gs(t,"max_allowed_collateral");a!==void 0&&(r.maxAllowedCollateral=M.fromRaw(a));let o=zs(t,"max_negative_pnl_on_open_p",0,100);o!==void 0&&(r.maxNegativePnlOnOpenP=Vn.fromRaw(o));let d=zs(t,"max_sl_p",0,100);d!==void 0&&(r.maxSlP=Vn.fromRaw(d));let u=zs(t,"liq_margin_threshold_p",0,100);return u!==void 0&&(r.liqMarginThresholdP=Vn.fromRaw(u)),{pairIndex:P.from(za(e,"pair_index")),groupIndex:za(e,"group_index"),feeIndex:za(e,"fee_index"),symbol:fe(e,"symbol"),baseSymbol:fe(e,"base_symbol"),quoteSymbol:fe(e,"quote_symbol"),priceAsset:fe(e,"price_asset"),feedId:gv(e,"feed_id"),priceFeed:fe(e,"price_feed"),isListed:js(e,"is_listed"),isPaused:js(e,"is_paused"),isDone:js(e,"is_done"),status:mv(e),oracleFeeWei:ue(e.oracle_fee_wei,"oracle_fee_wei"),contracts:{trading:$a(n,"trading"),tradingStorage:$a(n,"trading_storage"),pairsStorage:$a(n,"pairs_storage"),pairInfos:$a(n,"pair_infos")},constraints:r,fees:{opening:Tp(xr(i,"opening")),closing:Tp(xr(i,"closing"))}}}function hp(e){let n={pairIndex:P.from(za(e,"pair_index")),longOpenInterest:Dn.fromDecimal(fe(e,"oi_long")),shortOpenInterest:Dn.fromDecimal(fe(e,"oi_short")),oiMax:Dn.fromDecimal(fe(e,"oi_max")),oiDelta:He.fromRaw(fe(e,"oi_delta")),lastFunding1h:He.fromRaw(fe(e,"last_funding_1h")),lastFunding8h:He.fromRaw(fe(e,"last_funding_8h")),lastFunding24h:He.fromRaw(fe(e,"last_funding_24h")),lastFunding1y:He.fromRaw(fe(e,"last_funding_1y")),fundingFeeLong:He.fromRaw(fe(e,"funding_fee_long")),fundingFeeShort:He.fromRaw(fe(e,"funding_fee_short")),fundingFeeRate:He.fromRaw(fe(e,"funding_fee_rate")),fundingRate1h:He.fromRaw(fe(e,"funding_rate_1h")),fundingRate8h:He.fromRaw(fe(e,"funding_rate_8h")),fundingRate24h:He.fromRaw(fe(e,"funding_rate_24h")),fundingRate1y:He.fromRaw(fe(e,"funding_rate_1y")),cumulativeVolume:Dn.fromDecimal(fe(e,"cumulative_volume")),volume24h:Dn.fromDecimal(fe(e,"volume_24h"))},t=yv(e,"raw_state");return t!==void 0&&(n.rawState=fv(t)),n}function mv(e){let n=e.is_listed,t=e.is_paused,i=e.is_done;return typeof n!="boolean"||typeof t!="boolean"||typeof i!="boolean"?"unknown":i?"done":!n||t?"paused":"active"}function Tp(e){return {makerFeeP:It.fromRaw(In(e,"maker_fee_p")),takerFeeP:It.fromRaw(In(e,"taker_fee_p")),usageFeeP:It.fromRaw(In(e,"usage_fee_p")),utilizationThresholdP:hd.fromRaw(In(e,"utilization_threshold_p")),makerMaxLeverage:U.fromRaw(In(e,"maker_max_leverage")),vaultFeePercent:Vn.fromRaw(In(e,"vault_fee_percent"))}}function fv(e){let n={accPerOiLong:Sn.fromRaw(An(e,"acc_per_oi_long")),accPerOiShort:Sn.fromRaw(An(e,"acc_per_oi_short")),lastFundingRate:Sn.fromRaw(An(e,"last_funding_rate")),maxFundingFeePerBlock:Mn.fromRaw(An(e,"max_funding_fee_per_block")),springFactor:Mn.fromRaw(An(e,"spring_factor")),hillInflectionPoint:Sn.fromRaw(An(e,"hill_inflection_point")),hillPosScale:zi.fromRaw(ja(e,"hill_pos_scale",0,65535)),hillNegScale:zi.fromRaw(ja(e,"hill_neg_scale",0,65535)),sFactorUpScaleP:zi.fromRaw(ja(e,"s_factor_up_scale_p",0,65535)),sFactorDownScaleP:zi.fromRaw(ja(e,"s_factor_down_scale_p",0,65535)),lastOiDelta:_n.fromRaw(An(e,"last_oi_delta")),lastUpdateBlock:Tv(e,"last_update_block",pv),asOfBlock:vp(e,"as_of_block"),lastTradePrice:_.fromRaw(An(e,"last_trade_price")),oiLong:Mn.fromRaw(An(e,"oi_long")),oiShort:Mn.fromRaw(An(e,"oi_short")),oiCap:pn.fromRaw(An(e,"oi_cap"))},t=Gs(e,"group_collateral_long");t!==void 0&&(n.groupCollateralLong=M.fromRaw(t));let i=Gs(e,"group_collateral_short");return i!==void 0&&(n.groupCollateralShort=M.fromRaw(i)),n}function xr(e,n){let t=e[n];return (typeof t!="object"||t===null||Array.isArray(t))&&sn(`${n} must be an object`),t}function yv(e,n){let t=e[n];if(t!=null)return (typeof t!="object"||Array.isArray(t))&&sn(`${n} must be an object`),t}function fe(e,n){let t=e[n];return typeof t!="string"&&sn(`${n} must be a string`),t}function sn(e,n){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:0},...n!==void 0?{cause:n}:{}})}function $a(e,n){return ve(e[n],n,sn)}function gv(e,n){return jr(e[n],n,sn)}function za(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&sn(`${n} must be an integer`),t}function js(e,n){let t=e[n];return typeof t!="boolean"&&sn(`${n} must be a boolean`),t}function In(e,n){let t=e[n];return typeof t=="string"||typeof t=="bigint"?t:ue(t,n)}function bv(e,n){let t=e[n];return typeof t!="string"&&sn(`${n} must be a string`),t}function An(e,n){return ue(bv(e,n),n)}function Gs(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&sn(`${n} must be a string`),t}function ja(e,n,t,i){let r=e[n];return wp(r,n,t,i)}function zs(e,n,t,i){let r=e[n];if(r!=null)return wp(r,n,t,i)}function wp(e,n,t,i){return (typeof e!="number"||!Number.isSafeInteger(e))&&sn(`${n} must be a safe integer`),(e<t||e>i)&&sn(`${n} out of range`),BigInt(e)}function vp(e,n){let t=ue(e[n],n);return t<0n&&sn(`${n} must be unsigned`),t}function Tv(e,n,t){let i=vp(e,n);return i>t&&sn(`${n} out of range`),i}var wv=new Set(["open","close","remove_collateral","unknown"]),vv=new Set(["market","limit","stop","automation","remove_collateral","unknown"]),Pv=new Set(["pending_execution","timeout_available","executed","canceled","timed_out","unknown"]);function Ap(e,n){let t=Rv(e.action),i=kv(e.order_type),r=Av(e.status),a={orderId:Ke.parse(Ip(e,"order_id")),wallet:Op(e,"wallet",n.chainId),action:t.value,orderType:i.value,status:r.value,positionRef:xv(e,"position_ref",n.chainId),isPending:Ys(e,"is_pending"),isCancelled:Ys(e,"is_cancelled"),timeoutAvailable:Ys(e,"timeout_available"),timestamp:de(e.timestamp,"timestamp")};t.raw!==void 0&&(a.rawAction=t.raw),i.raw!==void 0&&(a.rawOrderType=i.raw),r.raw!==void 0&&(a.rawStatus=r.raw);let o=xp(e,"pair_index");o!==void 0&&(a.pairIndex=P.from(o));let d=$t(e,"timeout_block");d!==void 0&&(a.timeoutBlock=d);let u=Ht(e,"trade_id");u!==void 0&&(a.tradeId=$.parse(u));let l=Ht(e,"initiated_trade_id")??u;l!==void 0&&(a.initiatedTradeId=$.parse(l));let c=Ht(e,"terminal_trade_id");c!==void 0&&(a.terminalTradeId=$.parse(c));let p=Ht(e,"initiated_event_type");p!==void 0&&(a.initiatedEventType=p);let m=Ht(e,"terminal_event_type");m!==void 0&&(a.terminalEventType=m);let f=Ht(e,"latest_event_type");f!==void 0&&(a.latestEventType=f);let g=Ht(e,"limit_index");g!==void 0&&(a.limitIndex=Fe.parseApi(g));let T=Pp(e,"initiated_tx_hash",n.chainId);T!==void 0&&(a.initiatedTxHash=T);let v=Pp(e,"executed_tx_hash",n.chainId);v!==void 0&&(a.executedTxHash=v);let x=$t(e,"initiated_block");x!==void 0&&(a.initiatedBlock=x);let W=$t(e,"executed_block");W!==void 0&&(a.executedBlock=W);let re=$t(e,"initiated_tx_index");re!==void 0&&(a.initiatedTxIndex=re);let ne=$t(e,"initiated_log_index");ne!==void 0&&(a.initiatedLogIndex=ne);let le=$t(e,"executed_tx_index");le!==void 0&&(a.executedTxIndex=le);let ce=$t(e,"executed_log_index");ce!==void 0&&(a.executedLogIndex=ce);let en=xp(e,"cancel_reason");en!==void 0&&(a.cancelReason=en);let H=kp(e,"requested_remove_amount"),pe=kp(e,"executed_remove_amount");return (H!==void 0||pe!==void 0)&&(a.removeCollateral={adjustedAmountSource:"order_response"},H!==void 0&&(a.removeCollateral.requestedCollateral=H),pe!==void 0&&(a.removeCollateral.executedCollateral=pe)),a}function xv(e,n,t){let i=e[n];if(i===null)return null;(i===void 0||typeof i!="object"||Array.isArray(i))&&tt(`${n} must be an object or null`,t);let r=i;return {wallet:Op(r,"wallet",t),pairIndex:P.from(Rp(r,"pair_index")),index:G.from(Rp(r,"index")),tradeId:$.parse(Ip(r,"trade_id"))}}function Rv(e){return Xs(e,wv,"action")}function kv(e){return Xs(e,vv,"order_type")}function Av(e){return Xs(e,Pv,"status")}function Xs(e,n,t){return typeof e!="string"&&tt(`${t} must be a string`),n.has(e)?{value:e}:{value:"unknown",raw:e}}function Ip(e,n){let t=e[n];return typeof t!="string"&&tt(`${n} must be a string`),t}function Ht(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&tt(`${n} must be a string`),t}function tt(e,n=0,t){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function Op(e,n,t=0){return ve(e[n],n,(i,r)=>tt(i,t,r))}function Pp(e,n,t=0){let i=e[n];if(i!=null)return nn(i,n,(r,a)=>tt(r,t,a))}function xp(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&tt(`${n} must be an integer`),t}function Rp(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&tt(`${n} must be an integer`),t}function Ys(e,n){let t=e[n];return typeof t!="boolean"&&tt(`${n} must be a boolean`),t}function Iv(e,n){let t=e[n];if(t!=null)return typeof t=="string"||typeof t=="bigint"?t:ue(t,n)}function kp(e,n){let t=Iv(e,n);if(t!==void 0)return typeof t=="string"?M.fromDecimal(t):M.fromRaw(t)}function $t(e,n){let t=e[n];if(t!=null)return ue(t,n)}function Sp(e){return {asset:jt(e,"asset"),productId:jt(e,"product_id"),price:Rr(e,"price"),timestamp:de(e.block_timestamp,"block_timestamp")}}function Mp(e,n){let t=jt(e,"asset");if(n.expectedAsset!==void 0&&t!==n.expectedAsset&&jn(`price candle asset mismatch: expected ${n.expectedAsset}, received ${t}`,n.chainId),e.pair_index===void 0||e.pair_index===null){if(n.pairIndex===void 0&&e.pair_index===null)return Cp(e,{asset:t});jn("price candle pair_index is missing",n.chainId);}let i=P.from(Vp(e,"pair_index"));n.pairIndex!==void 0&&i!==n.pairIndex&&jn(`price candle pair_index mismatch: expected ${n.pairIndex}, received ${i}`,n.chainId);let r=Cp(e,{asset:t});return r.pairIndex=i,r}function Cp(e,n){let t={asset:n.asset,open:Rr(e,"open"),high:Rr(e,"high"),low:Rr(e,"low"),openTime:de(e.open_time,"open_time")},i=Dp(e,"close");i!==void 0&&(t.close=i);let r=Dp(e,"head_price");return r!==void 0&&(t.headPrice=r),e.head_time!==void 0&&e.head_time!==null&&(t.headTime=de(e.head_time,"head_time")),e.close_time!==void 0&&e.close_time!==null&&(t.closeTime=de(e.close_time,"close_time")),t}function _p(e,n){let t=jt(e,"asset");n.expectedAsset!==void 0&&t!==n.expectedAsset&&jn(`price tick asset mismatch: expected ${n.expectedAsset}, received ${t}`,n.chainId);let i={asset:t,productId:jt(e,"product_id"),price:Rr(e,"price"),blockNumber:ue(e.block_number,"block_number"),txIndex:ue(e.tx_index,"tx_index"),logIndex:ue(e.log_index,"log_index"),timestamp:de(e.block_timestamp,"block_timestamp")};if(e.publish_id!==void 0&&e.publish_id!==null&&(i.publishId=jt(e,"publish_id")),e.pair_index===void 0&&jn("price tick pair_index is missing",n.chainId),e.pair_index===null&&n.expectedPairIndex!==void 0&&jn("price tick pair_index is missing",n.chainId),e.pair_index!==null){let r=P.from(Vp(e,"pair_index"));n.expectedPairIndex!==void 0&&r!==n.expectedPairIndex&&jn(`price tick pair_index mismatch: expected ${n.expectedPairIndex}, received ${r}`,n.chainId),i.pairIndex=r;}return i}function jn(e,n=0){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:n}})}function jt(e,n){let t=e[n];return typeof t!="string"&&jn(`${n} must be a string`),t}function Vp(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&jn(`${n} must be an integer`),t}function Rr(e,n){return _.fromDecimal(jt(e,n))}function Dp(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&jn(`${n} must be a string`),_.fromDecimal(t)}function Fp(e){let n=Ga(e,"rpc_available"),t=Ga(e,"postgres_available"),i=Ga(e,"cache_available"),r=Ga(e,"degraded"),a=Sv(e,"degraded_reasons"),o={network:Ep(e,"network"),apiTime:de(e.api_time,"api_time"),rpcAvailable:n,postgresAvailable:t,cacheAvailable:i,degraded:r,degradedReasons:a,ok:!r&&n&&t&&i,apiSchemaHash:Ep(e,"api_schema_hash"),readiness:Dv({rpcAvailable:n,postgresAvailable:t,cacheAvailable:i,degradedReasons:a})},d=ze(e.chain_head_block,"chain_head_block");d!==void 0&&(o.chainHeadBlock=d);let u=ze(e.indexed_block,"indexed_block");u!==void 0&&(o.indexedBlock=u);let l=ze(e.lag_blocks,"lag_blocks");return l!==void 0&&(o.lagBlocks=l),o}function Dv(e){let n=new Set(e.degradedReasons);return {rpc:e.rpcAvailable?"ready":"not_ready",postgres:e.postgresAvailable?"ready":"not_ready",cache:e.cacheAvailable?"ready":"not_ready",indexer:n.has("indexer_lagging")||n.has("lag_above_threshold")||n.has("chain_head_behind_indexed_block")?"degraded":"ready",readModels:n.has("read_models_not_ready")?"not_ready":"ready",marketMetadata:n.has("market_metadata_not_ready")?"not_ready":"ready",marketState:n.has("market_state_not_ready")?"not_ready":"ready"}}function Ep(e,n){let t=e[n];return typeof t!="string"&&Zs(`${n} must be a string`),t}function Ga(e,n){let t=e[n];return typeof t!="boolean"&&Zs(`${n} must be a boolean`),t}function Sv(e,n){let t=e[n];return (!Array.isArray(t)||t.some(i=>typeof i!="string"))&&Zs(`${n} must be a string array`),[...t]}function Zs(e,n){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:0},...{}})}function Lp(e,n){let t=Np(e,"trade_id");t!==$.toString(n.tradeId)&&Oi(`trade event response trade_id mismatch: expected ${$.toString(n.tradeId)}, received ${t}`,n.chainId);let i=e.events;return Array.isArray(i)||Oi("events must be an array",n.chainId),{tradeId:n.tradeId,events:i.map(r=>_v(r,n.tradeId,n.chainId))}}function _v(e,n,t=0){let i={id:ue(e.id,"id"),tradeId:n,time:de(e.time,"time"),eventType:Np(e,"event_type"),blockNumber:ue(e.block_number,"block_number"),txIndex:ue(e.tx_index,"tx_index"),logIndex:ue(e.log_index,"log_index")},r=Vv(e,"transaction_hash",t);r!==void 0&&(i.txHash=r);let a=Ge(e,"order_id");a!==void 0&&(i.orderId=Ke.parse(a));let o=Ge(e,"collateral");o!==void 0&&(i.collateral=M.fromDecimal(o));let d=Ge(e,"leverage");d!==void 0&&(i.leverage=U.fromDecimal(d));let u=Ge(e,"open_price");u!==void 0&&(i.openPrice=_.fromDecimal(u));let l=Ge(e,"close_price");l!==void 0&&(i.closePrice=_.fromDecimal(l));let c=Ge(e,"tp");c!==void 0&&(i.takeProfit=_.fromDecimal(c));let p=Ge(e,"sl");p!==void 0&&(i.stopLoss=_.fromDecimal(p));let m=Ge(e,"percentage_closed");m!==void 0&&(i.percentageClosed=Ye.fromDecimal(m));let f=Ge(e,"percent_profit");f!==void 0&&(i.percentProfit=ii(f));let g=Ge(e,"usdc_sent_to_trader");g!==void 0&&(i.collateralSentToTrader=M.fromDecimal(g));let T=Ge(e,"pnl_delta_usdc");T!==void 0&&(i.pnlDelta=ut.fromDecimal(T));let v=Ge(e,"top_up_amount");v!==void 0&&(i.topUpAmount=M.fromDecimal(v));let x=Ge(e,"remove_amount");x!==void 0&&(i.removeAmount=M.fromDecimal(x));let W=Ge(e,"new_leverage");W!==void 0&&(i.newLeverage=U.fromDecimal(W));let re=Ge(e,"wanted_price");re!==void 0&&(i.wantedPrice=_.fromDecimal(re));let ne=Ev(e,"cancel_reason");return ne!==void 0&&(i.cancelReason=ne),i}function Np(e,n){let t=e[n];return typeof t!="string"&&Oi(`${n} must be a string`),t}function Ge(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&Oi(`${n} must be a string`),t}function Oi(e,n=0,t){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function Vv(e,n,t=0){let i=e[n];if(i!=null)return nn(i,n,(r,a)=>Oi(r,t,a))}function Ev(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&Oi(`${n} must be an integer`),t}function it(e){let n={hasNext:e.has_next,limit:e.limit};return e.cursor!==void 0&&e.cursor!==null&&(n.cursor=e.cursor),e.next_cursor!==void 0&&e.next_cursor!==null&&(n.nextCursor=e.next_cursor),n}async function*zt(e,n){let t=await e(n);for(;;){yield t;let i=t.pagination.nextCursor;if(!t.pagination.hasNext||i===void 0)return;t=await e({...n,cursor:i});}}async function*Ci(e,n){for await(let t of zt(e,n))for(let i of t.data){if(t.diagnostics!==void 0){yield {item:i,freshness:t.freshness,pagination:t.pagination,diagnostics:t.diagnostics};continue}yield {item:i,freshness:t.freshness,pagination:t.pagination};}}var Nv="read-plane",Gt=100,Js=100,Wv=4,Wp=5e3,Bv=/^(?:0|[1-9]\d*)$/;function rt(e,n){return {...e,limit:e?.limit??n}}function Bp(e,n){let t={};return e.asset!==void 0&&(t.asset=e.asset),n!==void 0&&(t.pair_index=P.toNumber(n)),t}function ht(e,n,t="pairIndex is invalid"){try{return P.from(e)}catch(i){return Ze(t,n,i)}}function eu(e,n,t="tradeIndex is invalid"){try{return G.from(e)}catch(i){return Ze(t,n,i)}}function Hp(e,n,t="tradeId is invalid"){try{if(typeof e!="string")throw new Error("TradeId must be a string");return $.parse(e)}catch(i){return Ze(t,n,i)}}function nu(e,n){let t=Hp(e,n),i=$.toString(t);return Bv.test(i)?$.parse(BigInt(i).toString()):Ze("tradeId must be a decimal API id",n,new Error("TradeId must be a decimal API id"))}function Uv(e,n,t="orderId is invalid"){try{if(typeof e!="string")throw new Error("OrderId must be a string");return Ke.parse(e)}catch(i){return Ze(t,n,i)}}function Up(e,n){if(e.pairIndex!==void 0)return ht(e.pairIndex,n,"price selector pairIndex is invalid")}function $p(e){let{raw:n,chainId:t,onEvent:i}=e,r=ki(i),a=u=>jp(t,u);function o(u,l,c,p){if(u==="status.get")return;let m=l.readiness;if(m===void 0||m.status==="ready")return;let f=m.unsafe_reasons??[],g=m.degraded_reasons??[],T=m.status==="unsafe"?f.length>0?f:g.length>0?g:[m.status]:m.status!=="degraded"?f.length>0?f:g.length>0?g:[m.status]:f,v=g.length>0?g:m.status==="degraded"?[m.status]:[],x={apiFreshness:c};Ba({policy:p?.readinessPolicy??"strict",chainId:t,degradedReasons:v,unsafeReasons:T,diagnostics:x,...r!==void 0?{onEvent:r}:{}});}let d={markets:{list:async u=>{let l=await n.markets.list(u);return a(()=>{let c=Be(l.freshness,_e["markets.list"]);return o("markets.list",l,c,u),{data:l.data.map(Ks),freshness:c}})},get:async(u,l)=>{let c=ht(u,t),p=await n.markets.get(P.toNumber(c),l);return a(()=>{let m=Be(p.freshness,_e["markets.get"]);return o("markets.get",p,m,l),{data:Ks(p.data),freshness:m}})},state:async(u,l)=>{let c=ht(u,t),p=await n.markets.state(P.toNumber(c),l);return a(()=>{let m=Be(p.freshness,_e["markets.state"]);return o("markets.state",p,m,l),{data:hp(p.data),freshness:m}})}},prices:{head:async u=>{let l=await n.prices.head(u);return a(()=>{let c=Be(l.freshness,_e["prices.head"]);return o("prices.head",l,c,u),{data:l.data.map(Sp),freshness:c}})},candles:async(u,l)=>{let c=Up(u,t),p={...Bp(u,c),from:zp(u.from,"from"),interval:u.interval},m=Qs(u.to,"to");m!==void 0&&(p.to=m);let f={chainId:t};c!==void 0&&(f.pairIndex=c),u.asset!==void 0&&(f.expectedAsset=u.asset);let g=await n.prices.candles(p,l);return a(()=>{let T=Be(g.freshness,_e["prices.candles"]);return o("prices.candles",g,T,l),{data:g.data.map(v=>Mp(v,f)),freshness:T}})},ticks:async(u,l)=>{let c=Up(u,t),p=Bp(u,c),m=Qs(u.from,"from");m!==void 0&&(p.from=m);let f=Qs(u.to,"to");f!==void 0&&(p.to=f),l?.cursor!==void 0&&(p.cursor=l.cursor),l?.limit!==void 0&&(p.limit=l.limit);let g={chainId:t};c!==void 0&&(g.expectedPairIndex=c),u.asset!==void 0&&(g.expectedAsset=u.asset);let T=await n.prices.ticks(p,l);return a(()=>{let v=Be(T.freshness,_e["prices.ticks"]);return o("prices.ticks",T,v,l),{data:T.data.map(x=>_p(x,g)),freshness:v,pagination:it(T.pagination)}})},ticksPages:(u,l)=>zt(c=>d.prices.ticks(u,c),rt(l,Wp)),ticksIterator:(u,l)=>Ci(c=>d.prices.ticks(u,c),rt(l,Wp))},account:{positions:async(u,l)=>{let c=await n.account.positions(u,l);return a(()=>{let p=Be(c.freshness,_e["account.positions"]);return o("account.positions",c,p,l),Kt(c,{data:c.data.map(m=>Ha(m,{wallet:u,chainId:t})),freshness:p,pagination:it(c.pagination)})})},position:async(u,l,c)=>{let p={...l,pairIndex:ht(l.pairIndex,t),index:eu(l.index,t),...l.tradeId!==void 0?{tradeId:nu(l.tradeId,t)}:{}};if(p.tradeId===void 0)return qv(n,u,p,t,o,c);let m=await n.account.position(u,{pairIndex:P.toNumber(p.pairIndex),index:G.toNumber(p.index),tradeId:$.toString(p.tradeId)},c);return a(()=>{let f=Be(m.freshness,_e["account.position"]);return o("account.position",m,f,c),Kt(m,{data:qp(m.data,{wallet:u,chainId:t,expectedRef:p}),freshness:f})})},positionsBatch:async(u,l,c)=>{let p=l.map(H=>({...H,pairIndex:ht(H.pairIndex,t),index:eu(H.index,t),tradeId:nu(H.tradeId,t)})),m=Math.max(1,Math.ceil(p.length/Js)),f=new Array(m),g=new Array(m),T=new Array(m),v=0,x=false,W=async H=>{let pe=p.slice(H*Js,(H+1)*Js),be=await n.account.positionsBatch(u,pe.map(te=>zv(te,t)),c);a(()=>{let te=Be(be.freshness,_e["account.positionsBatch"]);o("account.positionsBatch",be,te,c),be.data.length!==pe.length&&Ze("account position batch lookup response length mismatch",t),f[H]=be.data.map((z,y)=>{let w=pe[y];return w===void 0&&Ze("account position batch lookup response length mismatch",t),qp(z,{wallet:u,chainId:t,expectedRef:w})}),g[H]=te,T[H]=be.diagnostics;});},re=async()=>{for(;!x;){let H=v;if(v+=1,H>=m)return;try{await W(H);}catch(pe){throw x=true,pe}}};await Promise.all(Array.from({length:Math.min(Wv,m)},re));let ne=f.flatMap(H=>H??[]),le=g.filter(H=>H!==void 0),ce=T.find(H=>H!==void 0),en={data:ne,freshness:$v(le,_e["account.positionsBatch"].maxLagBlocks)};return ce===void 0?en:{...en,diagnostics:ce}},positionsPages:(u,l)=>zt(c=>d.account.positions(u,c),rt(l,Gt)),positionsIterator:(u,l)=>Ci(c=>d.account.positions(u,c),rt(l,Gt)),orders:async(u,l)=>{let c=await n.account.orders(u,l);return a(()=>{let p=Be(c.freshness,_e["account.orders"]);return o("account.orders",c,p,l),Kt(c,{data:c.data.map(m=>gp(m,{wallet:u,freshness:p,chainId:t})),freshness:p,pagination:it(c.pagination)})})},ordersPages:(u,l)=>zt(c=>d.account.orders(u,c),rt(l,Gt)),ordersIterator:(u,l)=>Ci(c=>d.account.orders(u,c),rt(l,Gt)),trades:async(u,l)=>{let c=await n.account.trades(u,l);return a(()=>{let p=Be(c.freshness,_e["account.trades"]);return o("account.trades",c,p,l),Kt(c,{data:c.data.map(m=>bp(m,{wallet:u})),freshness:p,pagination:it(c.pagination)})})},tradesPages:(u,l)=>zt(c=>d.account.trades(u,c),rt(l,Gt)),tradesIterator:(u,l)=>Ci(c=>d.account.trades(u,c),rt(l,Gt))},orders:{get:async(u,l)=>{let c=Uv(u,t),p=await n.orders.get(Ke.toString(c),l);return a(()=>{let m=Be(p.freshness,_e["orders.get"]);return o("orders.get",p,m,l),Kt(p,{data:Ap(p.data,{chainId:t}),freshness:m})})}},trades:{events:async(u,l,c)=>{let p=Hp(u,t),m=await n.trades.events($.toString(p),l,c);return a(()=>{let f=Be(m.freshness,_e["trades.events"]);return o("trades.events",m,f,c),Kt(m,{data:Lp(m.data,{tradeId:p,chainId:t}),freshness:f,pagination:it(m.pagination)})})},eventsPages:(u,l,c)=>Xv(d,u,l,c),eventsIterator:(u,l,c)=>Ci(async p=>{let m=await d.trades.events(u,l,p);return {...m,data:m.data.events}},c??{})},status:{get:async u=>{let l=await n.status.get(u);return a(()=>({data:Fp(l.data),freshness:Be(l.freshness,_e["status.get"])}))}}};return d}async function qv(e,n,t,i,r,a){let o;for(;;){let d=rt(a,Gt);o!==void 0&&(d.cursor=o);let u=await e.account.positions(n,d),l=jp(i,()=>{let c=Be(u.freshness,_e["account.positions"]);r("account.positions",u,c,a);for(let p of u.data){let m=Ha(p,{wallet:n,chainId:i});if(Hv(m,t,i)&&m.kind==="open_position")return Kt(u,{data:{ref:{pairIndex:m.pairIndex,index:m.index,tradeId:m.tradeId},status:"found",position:m,pendingReasons:m.pendingReasons},freshness:c})}});if(l!==void 0)return l;if(!u.pagination.has_next||u.pagination.next_cursor===null)break;o=u.pagination.next_cursor;}Ze("account position lookup requires tradeId when no matching position is listed",i);}function jp(e,n){try{return n()}catch(t){if(mt.isDomfiError(t)&&t.code!=="VALIDATION_ERROR")throw t;return Ze("read-plane response validation failed",e,t)}}function Hv(e,n,t){if(e.pairIndex===void 0||e.index===void 0)return false;let i=ht(n.pairIndex,t);return P.toNumber(e.pairIndex)===P.toNumber(i)&&G.toNumber(e.index)===G.toNumber(n.index)}function Qs(e,n){if(e!==void 0)return zp(e,n)}function zp(e,n){return typeof e=="bigint"?e.toString():fp(e,n).toString()}function Kt(e,n){let t=e.diagnostics;return t===void 0?n:{...n,diagnostics:t}}function $v(e,n){let t=e[0];if(t===void 0)throw new Error("cannot merge empty freshness list");let i={...t};for(let a of e.slice(1))a.generatedAt<i.generatedAt&&(i.generatedAt=a.generatedAt),a.isStale&&(i.isStale=true),a.indexedBlock!==void 0&&(i.indexedBlock===void 0||a.indexedBlock<i.indexedBlock)&&(i.indexedBlock=a.indexedBlock),a.chainHeadBlock!==void 0&&(i.chainHeadBlock===void 0||a.chainHeadBlock>i.chainHeadBlock)&&(i.chainHeadBlock=a.chainHeadBlock),a.lagBlocks!==void 0&&(i.lagBlocks===void 0||a.lagBlocks>i.lagBlocks)&&(i.lagBlocks=a.lagBlocks),a.cacheAgeSeconds!==void 0&&(i.cacheAgeSeconds===void 0||a.cacheAgeSeconds>i.cacheAgeSeconds)&&(i.cacheAgeSeconds=a.cacheAgeSeconds);if(i.indexedBlock!==void 0&&i.chainHeadBlock!==void 0&&i.chainHeadBlock>=i.indexedBlock){let a=i.chainHeadBlock-i.indexedBlock;(i.lagBlocks===void 0||a>i.lagBlocks)&&(i.lagBlocks=a);}let r=jv(n);return i.lagBlocks!==void 0&&r!==void 0&&i.lagBlocks>r&&(i.isStale=true),i}function jv(e){if(e!==void 0)return BigInt(e)}function zv(e,n){let t=ht(e.pairIndex,n),i=eu(e.index,n),r=nu(e.tradeId,n);return {pair_index:P.toNumber(t),index:G.toNumber(i),trade_id:$.toString(r)}}function qp(e,n){let t=Gv(e.status,n.chainId),i={pairIndex:P.from(e.ref.pair_index),index:G.from(e.ref.index),tradeId:$.parse(e.ref.trade_id)};n.expectedRef!==void 0&&Gp(i,n.expectedRef,n.chainId);let r=e.position===null?void 0:Ha(e.position,n);t==="found"&&r===void 0&&Ze("account position lookup status found without position",n.chainId),t!=="found"&&r!==void 0&&Ze("account position lookup non-found status with position",n.chainId),t==="found"&&r!==void 0&&Kv(r,i,n.chainId);let a=e.pending_reasons.map(Yv);return t==="pending"&&a.length===0&&a.push("unknown_pending_mutation"),{ref:i,status:t,...r!==void 0?{position:r}:{},pendingReasons:a}}function Gv(e,n){if(e==="found"||e==="missing"||e==="pending")return e;Ze(`unknown account position lookup status: ${e}`,n);}function Gp(e,n,t){let i=ht(n.pairIndex,t);(P.toNumber(e.pairIndex)!==P.toNumber(i)||G.toNumber(e.index)!==G.toNumber(n.index)||n.tradeId!==void 0&&$.toString(e.tradeId)!==$.toString(n.tradeId))&&Ze("account position lookup ref mismatch",t);}function Kv(e,n,t){e.kind!=="open_position"&&Ze("account position lookup found non-open position",t),Gp({pairIndex:e.pairIndex,index:e.index,tradeId:e.tradeId},n,t);}function Ze(e,n,t){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:Nv,chainId:n},...t!==void 0?{cause:t}:{}})}function Yv(e){return e==="being_market_closed"||e==="remove_collateral_pending"||e==="trigger_pending"||e==="read_model_not_ready"?e:"unknown_pending_mutation"}function Xv(e,n,t,i){return zt(r=>e.trades.events(n,t,r),i??{})}function Kp(e){let n={};for(let[t,i]of Object.entries(e))i!==void 0&&(n[t]=i);return n}function kr(e,n){let t={wallet:e};return n?.cursor!==void 0&&(t.cursor=n.cursor),n?.limit!==void 0&&(t.limit=n.limit),t}function Zv(e,n,t){let i={tradeId:e,wallet:n};return t?.cursor!==void 0&&(i.cursor=t.cursor),t?.limit!==void 0&&(i.limit=t.limit),i}function Jv(e,n){let t={...e};return t.cursor===void 0&&n?.cursor!==void 0&&(t.cursor=n.cursor),t.limit===void 0&&n?.limit!==void 0&&(t.limit=n.limit),Kp(t)}function Qv(e,n){return {wallet:e,pairIndex:n.pairIndex,index:n.index,trade_id:n.tradeId}}function Yp(e){let n=(t,i,r)=>e.request(t,i,r);return {markets:{list:t=>n("markets.list",{},t),get:(t,i)=>n("markets.get",{pairIndex:t},i),state:(t,i)=>n("markets.state",{pairIndex:t},i)},prices:{head:t=>n("prices.head",{},t),candles:(t,i)=>n("prices.candles",Kp(t),i),ticks:(t,i)=>n("prices.ticks",Jv(t,i),i)},account:{positions:(t,i)=>n("account.positions",kr(t,i),i),position:(t,i,r)=>n("account.position",Qv(t,i),r),positionsBatch:(t,i,r)=>n("account.positionsBatch",{wallet:t,positions:i},r),orders:(t,i)=>n("account.orders",kr(t,i),i),trades:(t,i)=>n("account.trades",kr(t,i),i)},orders:{get:(t,i)=>n("orders.get",{orderId:t},i)},trades:{events:(t,i,r)=>n("trades.events",Zv(t,i.wallet,r),r)},vault:{stats:t=>n("vault.stats",{},t),account:(t,i)=>n("vault.account",kr(t,i),i),accountHistory:(t,i)=>n("vault.accountHistory",kr(t,i),i),transactionEvents:(t,i)=>n("vault.transactionEvents",{txHash:t},i)},referrals:{lookup:(t,i)=>n("referrals.lookup",{code:t},i),getBinding:(t,i)=>n("referrals.getBinding",{address:t},i),getCode:(t,i)=>n("referrals.getCode",{address:t},i)},status:{get:t=>n("status.get",{},t)},request:n}}function Ar(){if(typeof DOMException=="function")return new DOMException("The operation was aborted","AbortError");let e=new Error("The operation was aborted");return e.name="AbortError",e}function Ka(e){if(e===void 0)return {run:d=>d()};let n=e,t=0,i=[];function r(){let d=false;return ()=>{d||(d=true,t-=1,a());}}function a(){for(;t<n&&i.length>0;){let d=i.shift();if(d===void 0)return;if(d.signal?.aborted===true){d.reject(Ar());continue}t+=1,d.resolve(r());}}function o(d){return d?.aborted===true?Promise.reject(Ar()):t<n?(t+=1,Promise.resolve(r())):new Promise((u,l)=>{let c={resolve:m=>{p(),u(m);},reject:m=>{p(),l(m);},...d!==void 0?{signal:d}:{},abort:()=>{let m=i.indexOf(c);m>=0&&i.splice(m,1),c.reject(Ar());}};function p(){d?.removeEventListener("abort",c.abort);}d?.addEventListener("abort",c.abort,{once:true}),i.push(c);})}return {async run(d,u){let l=await o(u);if(u?.aborted===true)throw l(),Ar();if(u===void 0)try{return await d()}finally{l();}let c=u;return await new Promise((p,m)=>{let f=false;function g(x){f||(f=true,c.removeEventListener("abort",T),l(),x());}function T(){g(()=>m(Ar()));}if(c.addEventListener("abort",T,{once:true}),c.aborted===true){T();return}let v;try{v=Promise.resolve(d());}catch(x){g(()=>m(x));return}v.then(x=>g(()=>p(x)),x=>g(()=>m(x)));})}}}var Xp=["markets.list","markets.get","markets.state","prices.head","prices.candles","prices.ticks","account.positions","account.position","account.positionsBatch","account.orders","account.trades","orders.get","trades.events","vault.stats","vault.account","vault.accountHistory","vault.transactionEvents","referrals.lookup","referrals.getBinding","referrals.getCode","status.get"];function Ee(e,n){let t=e[n];if(typeof t!="string"&&typeof t!="number")throw new Error(`missing route parameter: ${n}`);return encodeURIComponent(String(t))}var Ya={"markets.list":{method:"GET",operationId:"listMarkets",schemaName:"MarketsApiResponse",domain:true,paginated:"none",openapiPath:"/markets",pathParams:[],queryParams:[],path:()=>"/markets"},"markets.get":{method:"GET",operationId:"getMarket",schemaName:"MarketApiResponse",domain:true,paginated:"none",openapiPath:"/markets/{pairIndex}",pathParams:["pairIndex"],queryParams:[],path:e=>`/markets/${Ee(e,"pairIndex")}`},"markets.state":{method:"GET",operationId:"getMarketState",schemaName:"MarketStateApiResponse",domain:true,paginated:"none",openapiPath:"/markets/{pairIndex}/state",pathParams:["pairIndex"],queryParams:[],path:e=>`/markets/${Ee(e,"pairIndex")}/state`},"prices.head":{method:"GET",operationId:"listPriceHead",schemaName:"PriceHeadApiResponse",domain:true,paginated:"none",openapiPath:"/prices/head",pathParams:[],queryParams:[],path:()=>"/prices/head"},"prices.candles":{method:"GET",operationId:"listPriceCandles",schemaName:"PriceCandlesApiResponse",domain:true,paginated:"none",openapiPath:"/prices/candles",pathParams:[],queryParams:["asset","pair_index","from","to","interval"],path:()=>"/prices/candles"},"prices.ticks":{method:"GET",operationId:"listPriceTicks",schemaName:"PriceTicksResponse",domain:true,paginated:"top-level",openapiPath:"/prices/ticks",pathParams:[],queryParams:["asset","pair_index","from","to","limit","cursor"],path:()=>"/prices/ticks"},"account.positions":{method:"GET",operationId:"listAccountPositions",schemaName:"AccountPositionsResponse",domain:true,paginated:"top-level",openapiPath:"/accounts/{wallet}/positions",pathParams:["wallet"],queryParams:["cursor","limit"],path:e=>`/accounts/${Ee(e,"wallet")}/positions`},"account.position":{method:"GET",operationId:"getAccountPosition",schemaName:"AccountPositionLookupResponse",domain:true,paginated:"none",openapiPath:"/accounts/{wallet}/positions/{pairIndex}/{index}",pathParams:["wallet","pairIndex","index"],queryParams:["trade_id"],path:e=>`/accounts/${Ee(e,"wallet")}/positions/${Ee(e,"pairIndex")}/${Ee(e,"index")}`},"account.positionsBatch":{method:"POST",operationId:"batchGetAccountPositions",schemaName:"BatchAccountPositionsResponse",domain:true,paginated:"none",openapiPath:"/accounts/{wallet}/positions/batch",pathParams:["wallet"],queryParams:[],body:e=>({positions:e.positions}),path:e=>`/accounts/${Ee(e,"wallet")}/positions/batch`},"account.orders":{method:"GET",operationId:"listAccountOrders",schemaName:"AccountOrdersResponse",domain:true,paginated:"top-level",openapiPath:"/accounts/{wallet}/orders",pathParams:["wallet"],queryParams:["cursor","limit"],path:e=>`/accounts/${Ee(e,"wallet")}/orders`},"account.trades":{method:"GET",operationId:"listAccountTrades",schemaName:"AccountTradesResponse",domain:true,paginated:"top-level",openapiPath:"/accounts/{wallet}/trades",pathParams:["wallet"],queryParams:["cursor","limit"],path:e=>`/accounts/${Ee(e,"wallet")}/trades`},"orders.get":{method:"GET",operationId:"getOrder",schemaName:"OrderApiResponse",domain:true,paginated:"none",openapiPath:"/orders/{orderId}",pathParams:["orderId"],queryParams:[],path:e=>`/orders/${Ee(e,"orderId")}`},"trades.events":{method:"GET",operationId:"listTradeEvents",schemaName:"TradeTimelineApiResponse",domain:true,paginated:"top-level",openapiPath:"/trades/{tradeId}/events",pathParams:["tradeId"],queryParams:["wallet","cursor","limit"],path:e=>`/trades/${Ee(e,"tradeId")}/events`},"vault.stats":{method:"GET",operationId:"getVaultStats",schemaName:"VaultStatsApiResponse",domain:false,paginated:"none",openapiPath:"/vault/stats",pathParams:[],queryParams:[],path:()=>"/vault/stats"},"vault.account":{method:"GET",operationId:"getVaultAccount",schemaName:"VaultAccountApiResponse",domain:false,paginated:"vault-history",openapiPath:"/vault/accounts/{wallet}",pathParams:["wallet"],queryParams:["cursor","limit"],path:e=>`/vault/accounts/${Ee(e,"wallet")}`},"vault.accountHistory":{method:"GET",operationId:"getVaultAccountHistory",schemaName:"VaultAccountHistoryApiResponse",domain:false,paginated:"vault-history",openapiPath:"/vault/accounts/{wallet}/history",pathParams:["wallet"],queryParams:["cursor","limit"],path:e=>`/vault/accounts/${Ee(e,"wallet")}/history`},"vault.transactionEvents":{method:"GET",operationId:"getVaultTransactionEvents",schemaName:"VaultTransactionEventsApiResponse",domain:false,paginated:"none",openapiPath:"/vault/transactions/{txHash}/events",pathParams:["txHash"],queryParams:[],path:e=>`/vault/transactions/${Ee(e,"txHash")}/events`},"referrals.lookup":{method:"GET",operationId:"lookupReferralCode",schemaName:"ReferralCodeResponse",domain:true,paginated:"none",openapiPath:"/referrals/lookup/{code}",base:"api",pathParams:["code"],queryParams:[],path:e=>`/referrals/lookup/${Ee(e,"code")}`},"referrals.getBinding":{method:"GET",operationId:"getReferralBinding",schemaName:"ReferralBindingResponse",domain:true,paginated:"none",openapiPath:"/referrals/binding/{address}",base:"api",pathParams:["address"],queryParams:[],path:e=>`/referrals/binding/${Ee(e,"address")}`},"referrals.getCode":{method:"GET",operationId:"getReferralCodeByAddress",schemaName:"ReferralCodeResponse",domain:true,paginated:"none",openapiPath:"/referrals/code/{address}",base:"api",pathParams:["address"],queryParams:[],path:e=>`/referrals/code/${Ee(e,"address")}`},"status.get":{method:"GET",operationId:"getStatus",schemaName:"StatusApiResponse",domain:true,paginated:"none",openapiPath:"/status",pathParams:[],queryParams:[],path:()=>"/status"}};var vP="read-plane",cm=Symbol("domfi.retryAfterDelayMs"),PP=100,xP=5e3,RP=.25,am;function kP(){return am??=Promise.all([import('valibot'),Promise.resolve().then(()=>(rm(),im))]).then(([e,n])=>({parse:e.parse,rawSchemas:n.rawSchemas})),am}var AP=Xp.reduce((e,n)=>{let t=Ya[n];if(t.queryParams.length===0)return e[n]=[],e;let i=new Set(t.pathParams);return e[n]=t.queryParams.filter(r=>!i.has(r)),e},{});function vt(e,n){let t={sdkVersion:I,sourceTag:vP,chainId:e};return n!==void 0&&(t.requestId=n),t}function Si(e,n,t){return new mt.ValidationError({message:n,diagnostics:vt(e),...t!==void 0?{cause:t}:{}})}function pm(e){return e.trim().replace(/\/+$/,"")}function IP(e,n){let t=pm(e);if(t.length===0)throw Si(n,"baseUrl must be a non-empty absolute http(s) URL",e);if(t.includes("?")||t.includes("#"))throw Si(n,"baseUrl must not include query parameters or a fragment",e);let i;try{i=new URL(t);}catch(r){throw Si(n,"baseUrl must be a valid absolute http(s) URL",r)}if(i.protocol!=="http:"&&i.protocol!=="https:")throw Si(n,"baseUrl must use http: or https:",e);if(i.search!==""||i.hash!=="")throw Si(n,"baseUrl must not include query parameters or a fragment",e);return t}function OP(e){let n=pm(e);return n.endsWith("/v2")?n.slice(0,-3):n}function CP(e,n){let t=[];for(let i of e){let r=n[i];r!=null&&t.push(`${encodeURIComponent(i)}=${encodeURIComponent(String(r))}`);}return t.length>0?`?${t.join("&")}`:""}function DP(e,n,t,i){let r=Ya[t],a=r.base==="api"?n:e,o=AP[t],d=o.length>0?CP(o,i):"";return `${a}${r.path(i)}${d}`}async function SP(e){let n={method:e.method};e.headers!==void 0&&(n.headers=e.headers),e.body!==void 0&&(n.body=e.body),e.signal!==void 0&&(n.signal=e.signal);let t=await fetch(e.url,n);return {status:t.status,headers:t.headers,body:await t.text()}}function wt(e){return new mt.TimeoutError({message:"REST request timed out",diagnostics:vt(e)})}function Ja(e,n){return new mt.AbortError({message:"REST request aborted",diagnostics:vt(e),cause:n})}function Mi(){if(typeof DOMException=="function")return new DOMException("The operation was aborted","AbortError");let e=new Error("The operation was aborted");return e.name="AbortError",e}function ru(e){return e instanceof Error&&e.name==="AbortError"}function eo(e){return e?.aborted===true}function mm(e){return e instanceof mt.TransportError||typeof e=="object"&&e!==null&&"code"in e&&e.code==="TRANSPORT_ERROR"&&"kind"in e&&e.kind==="transport"&&"transient"in e&&typeof e.transient=="boolean"}function MP(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function om(e,n){if(typeof Headers=="function"&&e instanceof Headers)return e.get(n)??void 0;let t=n.toLowerCase();for(let[i,r]of Object.entries(e))if(i.toLowerCase()===t)return r}function _P(e,n=Date.now()){if(e===void 0)return;let t=e.trim();if(t.length===0)return;let i=Number(t);if(Number.isFinite(i))return i<0?void 0:i*1e3;let r=Date.parse(t);if(!Number.isFinite(r))return;let a=r-n;return a>=0?a:void 0}function VP(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>0))throw new mt.ValidationError({message:`${n} must be a positive integer`,diagnostics:vt(t)})}function EP(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>=0))throw new mt.ValidationError({message:`${n} must be a non-negative integer`,diagnostics:vt(t)})}function sm(e,n,t){if(e!==void 0&&!(Number.isFinite(e)&&e>0))throw new mt.ValidationError({message:`${n} must be a finite positive number`,diagnostics:vt(t),cause:e})}function au(e,n,t,i){try{return i()}catch(r){throw Si(e,`failed to ${t} for REST route ${n}`,r)}}function FP(e){let n;try{n=JSON.parse(e);}catch{return}if(typeof n!="object"||n===null||!("error"in n))return;let t=n.error;if(typeof t!="object"||t===null)return;let i={};return "code"in t&&typeof t.code=="string"&&t.code.length>0&&(i.code=`API_${t.code}`),"message"in t&&typeof t.message=="string"&&(i.message=t.message),"request_id"in t&&typeof t.request_id=="string"&&(i.requestId=t.request_id),"retryable"in t&&typeof t.retryable=="boolean"&&(i.transient=t.retryable),"details"in t&&MP(t.details)&&(i.details=t.details),i}function LP(e,n){let t=FP(e.body),i=t?.requestId??om(e.headers,"x-request-id"),r=e.status===429||e.status>=500,a={message:t?.message??`REST request failed with HTTP ${e.status}`,diagnostics:vt(n,i),httpStatus:e.status,transient:t?.transient??r};t?.code!==void 0&&(a.code=t.code),t?.details!==void 0&&(a.details=t.details);let o=new mt.ApiError(a);if(e.status===429){let d=_P(om(e.headers,"retry-after"));d!==void 0&&(o[cm]=d);}return o}function NP(e){return e instanceof mt.ApiError||mm(e)?e.transient:e instanceof mt.TimeoutError}function WP(e,n){let t=Math.min(PP*2**n,xP),i=Math.random()*t*RP,r=e?.[cm];return Math.ceil(Math.max(t+i,r??0))}function BP(e){return e!==void 0&&e>0?e:void 0}function ou(e){if(e!==void 0)return Math.max(0,Math.floor(e-Date.now()))}function UP(e,n){return e<=0?Promise.resolve():eo(n)?Promise.reject(Mi()):new Promise((t,i)=>{let r=setTimeout(()=>{a(),t();},e);function a(){clearTimeout(r),n?.removeEventListener("abort",o);}function o(){a(),i(Mi());}n?.addEventListener("abort",o,{once:true});})}async function qP(e,n,t,i){let r=n.signal,a=t!==void 0&&t>0;if(!a&&r===void 0)return e(n);if(eo(r))throw Mi();let o=new AbortController,d,u=false,l,c,p={...n,signal:o.signal},m=[];if(r!==void 0){let f=new Promise((T,v)=>{c=v;}),g=()=>{o.abort(r.reason),c?.(Mi());};m.push(f),r.aborted?g():(r.addEventListener("abort",g,{once:true}),d=()=>{r.removeEventListener("abort",g);});}if(a){let f=new Promise((g,T)=>{l=setTimeout(()=>{u=true,o.abort(),T(wt(i));},t);});m.push(f);}try{m.unshift(e(p));let f=await Promise.race(m);if(u)throw wt(i);if(eo(r))throw Mi();return f}catch(f){throw u?wt(i):f}finally{l!==void 0&&clearTimeout(l),d?.();}}function fm({baseUrl:e,chainId:n,requestTransport:t=SP,defaultTimeoutMs:i,maxConcurrentRequests:r,retryBudget:a,onEvent:o}){VP(r,"maxConcurrentRequests",n),EP(a,"retryBudget",n),sm(i,"defaultTimeoutMs",n);let d=IP(e,n),u=OP(d),l=vt(n),c=Ka(r);return {async request(p,m,f={}){sm(f.timeoutMs,"timeoutMs",n);let g=m,T=au(n,p,"build URL",()=>DP(d,u,p,g)),v=f.timeoutMs??i,x=Ya[p],W={method:x.method,url:T},re="body"in x?au(n,p,"build request body",()=>x.body(g)):void 0;re!==void 0&&(W.headers={"content-type":"application/json"},W.body=au(n,p,"serialize request body",()=>JSON.stringify(re))),f.signal!==void 0&&(W.signal=f.signal),v!==void 0&&(W.timeoutMs=v);let ne=BP(v),le=ne===void 0?void 0:Date.now()+ne,ce=async()=>{let H=le===void 0?v:ou(le);if(H!==void 0&&H<=0)throw wt(n);let pe=W;if(H!==v&&(pe={...W},H!==void 0&&(pe.timeoutMs=H)),eo(f.signal))throw Ja(n,Mi());o?.({type:"rest_request",diagnostics:l,url:T});let be;try{be=await qP(t,pe,H,n);}catch(z){throw z instanceof mt.TimeoutError?z:f.signal?.aborted===true||ru(z)?Ja(n,z):mm(z)?z:new mt.TransportError({message:"REST transport failed",diagnostics:l,cause:z,transient:true})}if(o?.({type:"rest_response",diagnostics:l,url:T,status:be.status}),be.status<200||be.status>=300)throw LP(be,n);let te;try{te=JSON.parse(be.body);}catch(z){throw new mt.ValidationError({message:"REST response was not valid JSON",diagnostics:l,cause:z})}try{let{parse:z,rawSchemas:y}=await kP();return z(y[p],te)}catch(z){throw new mt.ValidationError({message:`REST response for ${p} did not match the raw schema`,diagnostics:l,cause:z})}};return (async()=>{let H=a??0,pe=0,be=async()=>{let te=ou(le);if(te===void 0)return c.run(ce,f.signal);if(te<=0)throw wt(n);let z=new AbortController,y=false,w,O=setTimeout(()=>{y=true,z.abort();},te),C=()=>{clearTimeout(O),w?.();};if(f.signal!==void 0){let A=()=>{z.abort(f.signal?.reason);};f.signal.aborted?A():(f.signal.addEventListener("abort",A,{once:true}),w=()=>{f.signal?.removeEventListener("abort",A);});}try{return await c.run(async()=>(C(),ce()),z.signal)}catch(A){throw y?wt(n):A}finally{C();}};for(;;)try{return await be()}catch(te){if(te instanceof mt.AbortError)throw te;if(f.signal?.aborted===true||ru(te))throw Ja(n,te);if(!NP(te)||H<=0)throw te;let z=ou(le);if(z!==void 0&&z<=0)throw te instanceof mt.TimeoutError?te:wt(n);H-=1;let y=WP(te,pe);pe+=1;try{let w=z===void 0?y:Math.min(y,z);await UP(w,f.signal);}catch(w){throw ru(w)?Ja(n,w):w}if(z!==void 0&&y>=z)throw wt(n)}})()}}}var ym={manifestTag:"g5-base-base-sepolia-2026-06-07"};var gm=ym;function bm(){return {status:"unchecked",manifestTag:gm.manifestTag,checks:[{name:"contract-compatibility-check",status:"unchecked"}]}}var XP="delegation-runtime",vm="0x0000000000000000000000000000000000000000",ZP=/^0x[0-9a-fA-F]{40}$/,JP=2n**256n-1n,QP={Delegation:[{name:"delegator",type:"address"},{name:"delegate",type:"address"},{name:"nonce",type:"uint256"},{name:"expiry",type:"uint256"}]};function bn(e){let n={sdkVersion:I,sourceTag:XP,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Pt(e,n,t){throw new mt.ValidationError({message:n,diagnostics:bn(e),...{}})}function to(e,n,t){return new mt.AbortError({message:n,diagnostics:bn(e),...t!==void 0?{cause:t}:{}})}function io(e,n,t){throw to(e,n,t)}function Pm(e,n,t){return new mt.TimeoutError({message:n,diagnostics:bn(e),...t!==void 0?{cause:t}:{}})}function ex(e,n,t){throw new mt.ContractRevertError({message:`delegation ${n} reverted`,diagnostics:bn(e),cause:t})}function uu(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function ro(e,n,t){n?.aborted===true&&io(e,t,n.reason);}function zn(e,n,t){n.toLowerCase()===vm&&Pt(e,`${t} cannot be the zero address`);}function no(e,n,t){(typeof n!="bigint"||n<0n||n>JP)&&Pt(e,`${t} must be a uint256 bigint`);}function xm(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function nx(e,n,t){if(!(typeof n!="object"||n===null))for(let i of ["delegation","trader","readinessPolicy","timeoutMs","maxOracleFeeWei","skipApprovalCheck"])xm(n,i)&&Pt(e,`${t} options cannot include ${i}`);}function Rm(e,n,t){typeof n!="object"||n===null||xm(n,"readinessPolicy")&&Pt(e,`${t} options cannot include readinessPolicy`);}function du(e){let n=e.chain.contracts.DomfiTrading;return n!==void 0?n:Pt(e,"chain profile is missing DomfiTrading contract address")}function km(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function Am(e,n,t="delegation write"){if(n!==void 0)return e.wrapWalletClient?.(n)??n;if(e.walletClient!==void 0)return e.walletClient;throw new mt.MissingWalletClientError({message:`${t} requires a wallet client`,diagnostics:bn(e),hint:"Pass walletClient to createDomfiClient or delegation.sign()."})}function tx(e,n,t){let i=km(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new mt.WalletAccountMismatchError({message:`wallet client account ${i} does not match delegator ${t}`,diagnostics:bn(e),hint:"Sign delegation typed data with the delegator account."})}function Im(e,n){let t=n.chain?.id;if(!(t===void 0||t===e.chain.chainId))throw new mt.WalletChainMismatchError({message:`wallet client chain ${t} does not match DomFi chain ${e.chain.chainId}`,diagnostics:bn(e),hint:"Use a wallet client connected to the same chain as createDomfiClient."})}function ix(e,n,t){let i=km(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new mt.WalletAccountMismatchError({message:`wallet client account ${i} does not match requested account ${t}`,diagnostics:bn(e),hint:"Use the connected wallet account or pass the matching account option."})}function Om(e,n){let t=e.account;return typeof t=="object"&&t!==null&&"address"in t&&typeof t.address=="string"&&t.address.toLowerCase()===n.toLowerCase()?t:n}function rx(e,n,t){return {hash:n,pollingInterval:cn(e.chain,t?.pollingIntervalMs),...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...t?.timeoutMs!==void 0?{timeout:t.timeoutMs}:{},...t?.signal!==void 0?{signal:t.signal}:{}}}function ax(e,n){let t=qn(e,"delegation receipt wait"),i=t.waitForTransactionReceipt,r=En({wait:async a=>{ro(e,a?.signal,"delegation receipt wait was aborted");try{return await Cn(t,n,()=>i(rx(e,n,a)),a?.signal)}catch(o){throw (a?.signal?.aborted===true||uu(o))&&io(e,"delegation receipt wait was aborted",o),o}},mapAbort:a=>to(e,"delegation receipt wait was aborted",a)});return {kind:"receipt",hash:n,waitReceipt:r}}async function Tm(e,n,t,i,r){Rm(e,r,n),ro(e,r?.signal,"delegation read was aborted"),xe(r?.timeoutMs,"timeoutMs",bn(e));let a=qn(e,n),o=Ie({...r?.signal!==void 0?{signal:r.signal}:{},...r?.timeoutMs!==void 0?{timeoutMs:r.timeoutMs}:{},diagnostics:bn(e)});try{return await o.runAttempt(async d=>a.readContract({address:du(e),abi:D.DomfiTrading,functionName:t,args:i,...d!==void 0?{signal:d}:{}}),d=>to(e,"delegation read was aborted",d),d=>Pm(e,"delegation read timed out",d))}catch(d){throw (r?.signal?.aborted===true||uu(d))&&io(e,"delegation read was aborted",d),d}}function ox(e,n,t){return typeof n=="string"&&ZP.test(n)?n:Pt(e,`${t} read returned a malformed address`)}function sx(e,n,t){return typeof n=="bigint"?n:Pt(e,`${t} read returned a malformed bigint`)}async function su(e,n,t,i){ro(e,i?.signal,"delegation write was aborted"),nx(e,i,`delegation.${n}`),qn(e,`delegation.${n}`);let r=Am(e,void 0,`delegation.${n}`),a=bi(e,i?.account,`delegation.${n}`);Im(e,r),ix(e,r,a);try{let o=await r.writeContract({address:du(e),abi:D.DomfiTrading,functionName:n,args:t,account:Om(r,a),chain:null,...i?.gas!==void 0?{gas:i.gas}:{},...i?.nonce!==void 0?{nonce:i.nonce}:{},...i?.maxFeePerGas!==void 0?{maxFeePerGas:i.maxFeePerGas}:{},...i?.signal!==void 0?{signal:i.signal}:{}});return ax(e,o)}catch(o){throw (i?.signal?.aborted===true||uu(o))&&io(e,"delegation write was aborted",o),mt.isContractRevertLikeError(o)&&ex(e,n,o),o}}function ux(e,n){return /^0x[0-9a-fA-F]{130}$/.test(n)||Pt(e,"delegation signature must be a 65-byte hex string"),{r:`0x${n.slice(2,66)}`,s:`0x${n.slice(66,130)}`,v:Number.parseInt(n.slice(130,132),16)}}function lu(e){async function n(r,a){zn(e,r,"trader");let o=ox(e,await Tm(e,"delegation.getDelegate","delegations",[r],a),"delegations");return o.toLowerCase()===vm?void 0:o}async function t(r,a){return zn(e,r,"trader"),sx(e,await Tm(e,"delegation.getNonce","delegatableNonces",[r],a),"delegatableNonces")}async function i(r,a){zn(e,r.delegator,"delegator"),zn(e,r.delegate,"delegate"),Rm(e,a,"delegation.typedData"),ro(e,a?.signal,"delegation typed data build was aborted"),xe(a?.timeoutMs,"timeoutMs",bn(e)),no(e,r.expiry,"expiry");let o=r.nonce===void 0?await t(r.delegator,a):r.nonce;return no(e,o,"nonce"),{domain:{name:"Domination Finance",version:"1",chainId:e.chain.chainId,verifyingContract:du(e)},primaryType:"Delegation",types:QP,message:{delegator:r.delegator,delegate:r.delegate,nonce:o,expiry:r.expiry}}}return {getDelegate:n,isDelegateFor:async(r,a,o)=>(zn(e,a,"delegate"),(await n(r,o))?.toLowerCase()===a.toLowerCase()),getNonce:t,setDelegate:async(r,a)=>(zn(e,r,"delegate"),su(e,"setDelegate",[r],a)),removeDelegate:r=>su(e,"removeDelegate",[],r),typedData:i,sign:async(r,a,o)=>{zn(e,r.delegator,"delegator"),zn(e,r.delegate,"delegate");let d=Am(e,a,"delegation signing");tx(e,d,r.delegator),Im(e,d);let u=await i(r,o),c=await Ie({...o?.signal!==void 0?{signal:o.signal}:{},...o?.timeoutMs!==void 0?{timeoutMs:o.timeoutMs}:{},diagnostics:bn(e)}).runAttempt(async p=>d.signTypedData({...u,account:Om(d,r.delegator),...p!==void 0?{signal:p}:{}}),p=>to(e,"delegation signing was aborted",p),p=>Pm(e,"delegation signing timed out",p));return {...u.message,signature:c}},setDelegateWithSignature:async(r,a)=>{zn(e,r.delegator,"delegator"),zn(e,r.delegate,"delegate");let{v:o,r:d,s:u}=ux(e,r.signature);return no(e,r.nonce,"nonce"),no(e,r.expiry,"expiry"),su(e,"setDelegateWithSignature",[r.delegator,r.delegate,r.nonce,r.expiry,o,d,u],a)}}}var dx=new Set(["estimateGas","estimateContractGas","getBlock","multicall","readContract","sendTransaction","signTypedData","simulateContract","writeContract"]);function lx(e){let n=e[0];if(typeof n!="object"||n===null||!("signal"in n))return;let t=n.signal;return t instanceof AbortSignal?t:void 0}function cx(e,n){let t=new Map;return new Proxy(e,{get(i,r){let a=Reflect.get(i,r,i);if(!dx.has(r)||typeof a!="function")return a;let o=t.get(r);if(o!==void 0&&o.value===a)return o.wrapper;let d=(...u)=>n.run(()=>Promise.resolve(a.apply(i,u)),lx(u));return t.set(r,{value:a,wrapper:d}),d}})}function Cm(e){let n=new WeakMap;return t=>{if(e===void 0)return t;let i=n.get(t);if(i!==void 0)return i;let r=cx(t,e);return n.set(t,r),r}}var mx=/^[A-Z0-9]{4,16}$/,fx=0xffffffffffffffffn;function yx(e){return {sdkVersion:I,sourceTag:"referrals",chainId:e?.chainId??0}}function Ir(e,n,t){throw new mt.ValidationError({message:e,diagnostics:yx(t),...n!==void 0?{cause:n}:{}})}function gx(e){return (n,t)=>Ir(n,t,e)}function bx(e,n,t){try{return ue(e,n)}catch(i){let r=i instanceof Error?i.message:`${n} must be an integer`;Ir(r,i,t);}}function Dm(e,n,t){try{return de(e,n)}catch(i){let r=i instanceof Error?i.message:`${n} invalid timestamp`;Ir(r,i,t);}}function Or(e,n){let t=e.trim().toUpperCase();return mx.test(t)||Ir("referral code must be 4-16 uppercase alphanumeric characters",void 0,n),t}function Tx(e,n){let t=bx(e,"referral code_id",n);return (t<0n||t>fx)&&Ir("referral code_id must fit in uint64",void 0,n),t}function cu(e,n){return {codeId:Tx(e.code_id,n),code:Or(e.code,n),createdAt:Dm(e.created_at,"referral created_at",n)}}function Sm(e,n){return {referee:ve(e.referee,"referee",gx(n)),code:Or(e.code,n),boundAt:Dm(e.bound_at,"referral bound_at",n)}}var Vi={Usable:"usable",InvalidCode:"invalid_code",CodeNotFound:"code_not_found",AlreadyBound:"already_bound",SelfReferral:"self_referral"};function pu(e){return e instanceof mt.ApiError&&e.httpStatus===404}function Mm(e){let n={chainId:e.chainId};async function t(a,o){let d=Or(a,n);return cu(await e.raw.referrals.lookup(d,o),n)}async function i(a,o){try{return Sm(await e.raw.referrals.getBinding(a,o),n)}catch(d){if(pu(d))return null;throw d}}async function r(a,o){try{return cu(await e.raw.referrals.getCode(a,o),n)}catch(d){if(pu(d))return null;throw d}}return {lookup:t,getBinding:i,getCode:r,async checkEligibility(a,o){let d;try{d=Or(a.code,n);}catch(p){let m=p instanceof Error?p.message:"invalid referral code";return {status:Vi.InvalidCode,code:a.code,message:m}}let u;try{u=await t(d,o);}catch(p){if(pu(p))return {status:Vi.CodeNotFound,code:d};throw p}let l=await i(a.account,o);if(l!==null)return {status:Vi.AlreadyBound,binding:l};let c=await r(a.account,o);return c!==null&&c.codeId===u.codeId?{status:Vi.SelfReferral,referral:u,ownCode:c}:{status:Vi.Usable,referral:u}}}}var Fm=D.IERC20,Rx="token-runtime";function Cr(e){let n={sdkVersion:I,sourceTag:Rx,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function _m(e,n,t){throw new mt.ValidationError({message:n,diagnostics:Cr(e),...t!==void 0?{cause:t}:{}})}function Lm(e,n,t){if(typeof t!="bigint")return _m(e,`${n} read returned invalid data`);try{return M.fromRaw(t)}catch(i){return _m(e,`${n} read returned invalid data`,i)}}function ao(e,n,t="token approval was aborted"){return new mt.AbortError({message:t,diagnostics:Cr(e),cause:n})}function Nm(e,n,t="token read timed out"){return new mt.TimeoutError({message:t,diagnostics:Cr(e),...n!==void 0?{cause:n}:{}})}function kx(e,n){return new mt.ContractRevertError({message:"token approval reverted",diagnostics:Cr(e),cause:n})}function Ax(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function Ix(e,n,t="token approval was aborted"){if(n?.aborted===true)throw ao(e,n.reason,t)}function mu(e){return e.chain.collateral.tokenAddress}function Ox(e,n,t){return {hash:n,pollingInterval:cn(e.chain,t?.pollingIntervalMs),...t?.confirmations!==void 0?{confirmations:t.confirmations}:{},...t?.timeoutMs!==void 0?{timeout:t.timeoutMs}:{},...t?.signal!==void 0?{signal:t.signal}:{}}}function Cx(e,n){let t=e.account;return typeof t=="object"&&t!==null&&"address"in t&&typeof t.address=="string"&&t.address.toLowerCase()===n.toLowerCase()?t:n}async function Wm(e,n,t,i,r){let a=Cr(e);xe(r?.timeoutMs,"timeoutMs",a);let o=Ie({...r?.signal!==void 0?{signal:r.signal}:{},...r?.timeoutMs!==void 0?{timeoutMs:r.timeoutMs}:{},diagnostics:a}),d=qn(e,n);return o.runAttempt(u=>d.readContract({address:mu(e),abi:Fm,functionName:t,args:i,...u!==void 0?{signal:u}:{}}),u=>ao(e,u,"token read was aborted"),u=>Nm(e,u))}async function Vm(e,n,t,i,r){let a=await Wm(e,n,"allowance",[t,i],r);return Lm(e,n,a)}function fu(e){return {balanceOf:async(n,t)=>{let i=await Wm(e,"token.balanceOf","balanceOf",[n],t);return Lm(e,"token.balanceOf",i)},allowance:(n,t,i)=>Vm(e,"token.allowance",n,t??e.chain.collateral.tradingStorageSpender,i),approvalNeed:async(n,t,i,r)=>{let a=await Vm(e,"token.approvalNeed",n,t,r);return {owner:n,token:mu(e),spender:t,currentAllowance:a,requiredAllowance:i,action:M.toRaw(a)>=M.toRaw(i)?"none":"approve"}},approve:async(n,t,i)=>{Ix(e,i?.signal);let r=qn(e,"token.approve"),a=fr(e,"token.approve"),o=bi(e,i?.account,"token.approve");Ia(e,o);let d=Cx(a,o),u;try{u=await a.writeContract({address:mu(e),abi:Fm,functionName:"approve",args:[n,M.toRaw(t)],account:d,chain:null,...i?.gas!==void 0?{gas:i.gas}:{},...i?.nonce!==void 0?{nonce:i.nonce}:{},...i?.maxFeePerGas!==void 0?{maxFeePerGas:i.maxFeePerGas}:{},...i?.signal!==void 0?{signal:i.signal}:{}});}catch(c){throw i?.signal?.aborted===true||Ax(c)?ao(e,c):mt.isContractRevertLikeError(c)?kx(e,c):c}let l=En({wait:c=>Cn(r,u,()=>r.waitForTransactionReceipt(Ox(e,u,c)),c?.signal),mapAbort:c=>ao(e,c),mapTimeout:c=>Nm(e,c,"token approval receipt wait timed out")});return {kind:"receipt",hash:u,waitReceipt:l}}}}function Bm(e){let n=Sn.toRaw(e.initialAccFunding),t=Sn.toRaw(e.endAccFunding),i=M.toRaw(e.collateral),r=U.toRaw(e.leverage);if(i<0n)throw new Error("collateral must be non-negative");if(r<=0n)throw new Error("leverage must be positive");let a=t-n,o=a*(i*r)/Wn/ft;return o!==0n?o:a>0n?1n:0n}var _x="valuation",zm="0x0000000000000000000000000000000000000000",bu=`0x${"00".repeat(32)}`,Ei=300*1e3,Gm=60*1e3,Km=300*1e3;function Dr(e){return {sdkVersion:I,sourceTag:_x,chainId:e.chain.chainId,...e.chain.registryAddress!==void 0?{registryAddress:e.chain.registryAddress}:{}}}function ge(e,n,t){throw new mt.ValidationError({message:n,diagnostics:Dr(e),...t!==void 0?{cause:t}:{}})}function Vx(e,n){return n instanceof mt.AbortError?n:new mt.AbortError({message:"valuation read was aborted",diagnostics:Dr(e),...n!==void 0?{cause:n}:{}})}function Ex(e,n){return new mt.TimeoutError({message:"valuation read timed out",diagnostics:Dr(e),...n!==void 0?{cause:n}:{}})}function Fx(e,n){return n===void 0?e:{...e??{},signal:n}}function Tu(e,n,t){return Ie({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:Dr(e)}).runAttempt(r=>t(Fx(n,r)),r=>Vx(e,r),r=>Ex(e,r))}function mo(e){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError({message:"valuation requires a public client",diagnostics:Dr(e),hint:"Pass publicClient to createDomfiClient."})}function Lx(e){return Oo(e,{bytes:32,allowEmpty:false})}function Fi(e){return Lx(e)&&e!==bu}function oo(e,n){return jr(n,"pair oracle feed",()=>ge(e,"pair oracle feed read returned invalid data"))}function On(e){return `${e.wallet.toLowerCase()}:${P.toNumber(e.pairIndex)}:${G.toNumber(e.index)}`}function De(e,n){let t=e.chain.contracts[n];return t===void 0?ge(e,`chain profile is missing ${n} contract address`):ve(t,`${n} contract address`,(i,r)=>ge(e,i,r))}function Kn(e,n){return typeof n.readContract!="function"&&ge(e,"public client is missing readContract"),n.readContract}function Ym(e,n){return typeof n.getBlock!="function"&&ge(e,"public client is missing getBlock"),n.getBlock}function Nx(e){let n=e.multicall;return typeof n=="function"?n:void 0}function ye(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Tn(e,n,t){return typeof n=="bigint"?n:ge(e,`${t} read returned invalid data`)}function Gn(e,n,t){return typeof n=="number"&&Number.isInteger(n)?n:typeof n=="bigint"&&n>=0n&&n<=BigInt(Number.MAX_SAFE_INTEGER)?Number(n):ge(e,`${t} read returned invalid data`)}function Wx(e,n,t){return ve(n,t,()=>ge(e,`${t} read returned invalid data`))}function Xm(e,n,t){return typeof n=="boolean"?n:ge(e,`${t} read returned invalid data`)}function hu(e,n){let t={};return e!==void 0&&(t.blockNumber=e),n!==void 0&&(t.signal=n,t.requestOptions={signal:n}),t}function Zm(e){let n={};return e?.blockTag!==void 0&&e.blockTag!=="latest"&&(n.blockNumber=e.blockTag),e?.signal!==void 0&&(n.signal=e.signal),e?.signal!==void 0&&(n.requestOptions={signal:e.signal}),n}function qm(e,n,t){let i=e.get(n);if(i!==void 0)return i;let r=t().catch(a=>{throw e.delete(n),a});return e.set(n,r),r}function Jm(e){let n=e.valuationConfigCache;if(n!==void 0)return n.generation??=0,n;let t={feedByPair:new Map,maxLeverageByPair:new Map,liqMarginThresholdP:new Map,feedInfoUnsupportedByContract:new Set,generation:0};return e.valuationConfigCache=t,t}function Li(e,n){if(n===void 0)return;let t=e.valuationConfigCache;if(t!==void 0)return t.generation??=0,t.generation===n?t:void 0}function wu(e){let n=e.valuationConfigCache;n?.feedByPair.clear(),n?.maxLeverageByPair.clear(),n?.liqMarginThresholdP.clear(),n?.feedInfoUnsupportedByContract.clear(),n!==void 0&&(n.generation=(n.generation??0)+1);}function dn(e,n,t){let i=`${e.chain.chainId}:${n.toLowerCase()}`;return t===void 0?i:`${i}:${t}`}function Bx(e,n){return e.toLowerCase()===n.toLowerCase()}function Qm(e,n,t,i){let r=Date.now(),a=e.get(n);if(a!==void 0&&a.expiresAt>r)return a.value;let o={expiresAt:r+t};return o.value=i().catch(d=>{throw e.get(n)===o&&e.delete(n),d}),e.set(n,o),o.value}function so(e,n){let t=e.get(n);if(t!==void 0){if(t.expiresAt>Date.now())return t.value;e.delete(n);}}function Ux(e,n,t,i){e.set(n,{value:Promise.resolve(i),expiresAt:Date.now()+t});}function xt(e,n,t,i,r,a){e?.generation===n&&Ux(t,i,r,a);}function ef(e,n,t){e!==void 0&&e.generation===n&&e.feedInfoUnsupportedByContract.add(t);}function qx(e){if(e instanceof Error)return `${e.name} ${e.message}`;if(typeof e=="object"&&e!==null)try{return JSON.stringify(e,(n,t)=>typeof t=="bigint"?t.toString():t)}catch{return Object.prototype.toString.call(e)}return String(e)}function nf(e){let n=qx(e).toLowerCase();return n.includes("function selector")||n.includes("function does not exist")||n.includes("function not found")||n.includes("selector was not recognized")||n.includes("no fallback function")||n.includes("could not decode result data")||n.includes("returned no data")||n.includes("empty data")}function Hx(e,n){return {collateralRaw:Tn(e,ye(n,"collateral",0),"open trade collateral"),openPriceRaw:Tn(e,ye(n,"openPrice",1),"open trade openPrice"),tpRaw:Tn(e,ye(n,"tp",2),"open trade tp"),slRaw:Tn(e,ye(n,"sl",3),"open trade sl"),trader:Wx(e,ye(n,"trader",4),"open trade trader"),leverageRaw:Gn(e,ye(n,"leverage",5),"open trade leverage"),pairIndex:Gn(e,ye(n,"pairIndex",6),"open trade pairIndex"),index:Gn(e,ye(n,"index",7),"open trade index"),buy:Xm(e,ye(n,"buy",8),"open trade buy")}}function $x(e,n,t){if(t.trader===zm||t.collateralRaw===0n)return;let i=P.toNumber(n.pairIndex),r=G.toNumber(n.index);t.pairIndex===i&&t.index===r||ge(e,"onchain trade slot does not match requested position");}function vu(e,n,t){let i=Hx(e,t);return $x(e,n,i),i}function tf(e,n){return {tradeIdRaw:Tn(e,ye(n,"tradeId",0),"open trade info tradeId"),oiNotionalRaw:Tn(e,ye(n,"oiNotional",1),"open trade info oiNotional"),tpLastUpdatedRaw:Tn(e,ye(n,"tpLastUpdated",2),"open trade info tpLastUpdated"),slLastUpdatedRaw:Tn(e,ye(n,"slLastUpdated",3),"open trade info slLastUpdated"),initialLeverageRaw:Gn(e,ye(n,"initialLeverage",4),"open trade info initialLeverage"),createdAt:Gn(e,ye(n,"createdAt",5),"open trade info createdAt"),beingMarketClosed:Xm(e,ye(n,"beingMarketClosed",6),"open trade info beingMarketClosed")}}function jx(e,n,t,i,r){return {address:De(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,t,i],...r}}function zx(e,n,t,i,r){return {address:De(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenTradeInfo",args:[n.wallet,t,i],...r}}function rf(e,n,t){return {address:De(e,"DomfiPairsStorage"),abi:D.DomfiPairsStorage,functionName:"getFeedInfo",args:[n],...t}}function uo(e,n,t){return {address:De(e,"DomfiPairsStorage"),abi:D.DomfiPairsStorage,functionName:"pairFeed",args:[n],...t}}function af(e,n,t){return {address:De(e,"DomfiOracle"),abi:D.DomfiOracle,functionName:"getValue",args:[n],...t}}function of(e,n,t){return {address:De(e,"DomfiPairsStorage"),abi:D.DomfiPairsStorage,functionName:"pairMaxLeverage",args:[n],...t}}function yu(e,n){return {address:De(e,"DomfiPairInfos"),abi:D.DomfiPairInfos,functionName:"liqMarginThresholdP",...n}}function Gx(e,n,t,i,r,a){return {address:De(e,"DomfiPairInfos"),abi:D.DomfiPairInfos,functionName:"getTradeFundingFee",args:[n.wallet,t,i,r.buy,r.collateralRaw,r.leverageRaw],...a}}function Hm(e){let{slot:n,oracle:t,fundingFeeRaw:i,pairMaxLeverageRaw:r,liqMarginThresholdP:a}=e,o=li({collateralRaw:n.collateralRaw,leverageRaw:n.leverageRaw,maxLeverageRaw:r,liqMarginThresholdP:a});return {oracle:t,fundingFeeRaw:i,pairMaxLeverageRaw:r,liquidationPriceRaw:Ft({openPriceRaw:n.openPriceRaw,buy:n.buy,collateralRaw:n.collateralRaw,leverageRaw:n.leverageRaw,fundingFeeRaw:i,maxLeverageRaw:r,liqMarginThresholdP:a}),liquidationMarginRaw:o}}function Kx(e){let n=new Map;for(let t of e)n.set(On(t.position),t.fundingFeeRaw);return n}function $m(e,n,t){let i=n.get(On(t));return i!==void 0?i:ge(e,"provided funding fee missing for position")}async function lo(e,n,t,i,r,a){let o=De(e,"DomfiPairsStorage"),d=r?Li(e,a):void 0,u=a,l=dn(e,o),c=dn(e,o,t),p=d===void 0?void 0:so(d.feedByPair,c);if(p!==void 0)return {feed:await p,cacheable:true};let m=d?.feedInfoUnsupportedByContract.has(l)===true,f=false;if(!m)try{let v=await Kn(e,n)(rf(e,t,i)),x=ye(v,"",0);if(Fi(x))return d!==void 0&&xt(d,u,d.feedByPair,c,Ei,x),{feed:x,cacheable:!0}}catch(v){nf(v)&&(m=true,f=d!==void 0);}let g=await Kn(e,n)(uo(e,t,i)),T=oo(e,g);return m&&Fi(T)?(d!==void 0&&(f&&ef(d,u,l),xt(d,u,d.feedByPair,c,Ei,T)),{feed:T,cacheable:true}):{feed:T,cacheable:false}}async function sf(e,n,t,i,r=false,a){let{feed:o}=await lo(e,n,t,i,r,a);return co(e,n,o,i)}function uf(e,n,t){let i=Tn(e,ye(t,"value",0),"oracle value");return i<=0n&&ge(e,"oracle value read returned non-positive price"),{feed:n,priceRaw:i,timestampMs:Tn(e,ye(t,"timestamp",1),"oracle timestamp")}}async function co(e,n,t,i){t===bu&&ge(e,"pair oracle feed is not configured");let r=await Kn(e,n)(af(e,t,i));return uf(e,t,r)}async function gu(e,n,t,i,r,a){let o=De(e,"DomfiPairsStorage"),d=r?Li(e,a):void 0,u=dn(e,o,t),l=async()=>{let c=await Kn(e,n)(of(e,t,i));return Gn(e,c,"pair max leverage")};return d===void 0?l():Qm(d.maxLeverageByPair,u,Gm,l)}async function po(e,n,t,i=false,r){let a=De(e,"DomfiPairInfos"),o=i?Li(e,r):void 0,d=dn(e,a),u=async()=>{let l=await Kn(e,n)(yu(e,t));return Gn(e,l,"liquidation margin threshold")};return o===void 0?u():Qm(o.liqMarginThresholdP,d,Km,u)}function Yx(e){if(typeof e!="object"||e===null||!("status"in e))return e;let n=e;return n.status==="success"?n.result:void 0}function Xx(e){if(typeof e!="object"||e===null||!("status"in e))return;let n=e;return n.status==="failure"?n.error:void 0}function Yt(e,n,t,i){return n.has(t)||ge(e,i),n.get(t)}async function jm(e,n,t,i,r){let a=[...new Set(t)],o=a.filter(u=>!n.has(u));if(o.length>0){let u=i(o).catch(l=>{for(let c of o)n.delete(c);throw l});for(let l of o)n.set(l,u.then(c=>c.has(l)?c.get(l):(n.delete(l),ge(e,r(l))),c=>{throw n.delete(l),c}));}let d=await Promise.all(a.map(async u=>{let l=n.get(u);return l===void 0&&ge(e,r(u)),[u,await l]}));return new Map(d)}async function Zx(e,n,t){let i=mo(e),r=await Ym(e,i)(Zm(n)),a=n?.blockTag==="latest"?r.number:n?.blockTag??r.number,o=hu(a,t??n?.signal),d=n?.blockTag===void 0||n.blockTag==="latest",u=d?Jm(e).generation:void 0,l=Nx(i),c=new Map,p=new Map,m=new Map,f,g=Promise.resolve(),T=()=>d?Li(e,u):void 0,v=()=>dn(e,De(e,"DomfiPairInfos")),x=b=>(f=b.catch(h=>{throw f=void 0,h}),f),W=()=>{let b=T(),h=b===void 0?void 0:so(b.liqMarginThresholdP,v());return h===void 0?void 0:x(h)},re=b=>{let h=T();h!==void 0&&xt(h,u,h.liqMarginThresholdP,v(),Km,b),f=Promise.resolve(b);},ne=(b,h,R)=>a===void 0?R():qm(b,h,R),le=b=>{let h=()=>{if(!d)return lo(e,i,b,o,d);let k=g.then(()=>lo(e,i,b,o,d,u));return g=k.then(()=>{},()=>{}),k};if(a===void 0)return h();let R=c.get(b);if(R!==void 0)return R;let E=h().then(k=>(k.cacheable?c.set(b,Promise.resolve(k)):c.delete(b),k),k=>{throw c.delete(b),k});return c.set(b,E),E},ce=async b=>(await le(b)).feed,en=b=>ne(m,b,()=>gu(e,i,b,o,d,u)),H=()=>a===void 0?po(e,i,o,d,u):f!==void 0?f:x(po(e,i,o,d,u)),pe=b=>ce(b).then(h=>a===void 0?co(e,i,h,o):qm(p,h,()=>co(e,i,h,o))),be=async b=>{let h=[...new Set(b)],R=De(e,"DomfiPairsStorage"),E=u,k=()=>d?Li(e,E):void 0,N=dn(e,R),V=new Map,S=[],B=(F,Z)=>{V.set(F,Z),a!==void 0&&Z.cacheable&&c.set(F,Promise.resolve(Z));},Q=()=>{let F=new Map;for(let Z of h){let q=V.get(Z);q===void 0&&ge(e,"pair oracle feed read returned no result"),F.set(Z,q.feed);}return F};for(let F of h){let Z=a===void 0?void 0:c.get(F);if(Z!==void 0){V.set(F,await Z);continue}let q=k(),ee=q===void 0?void 0:so(q.feedByPair,dn(e,R,F));if(ee!==void 0){B(F,{feed:await ee,cacheable:true});continue}S.push(F);}if(S.length===0)return Q();let Te=async F=>{let Z=await Kn(e,i)(uo(e,F,o));return oo(e,Z)};if(k()?.feedInfoUnsupportedByContract.has(N)===true){if(l===void 0||a===void 0){for(let q of S){let ee=await Te(q),oe=Fi(ee),ae=k();oe&&ae!==void 0&&xt(ae,E,ae.feedByPair,dn(e,R,q),Ei,ee),B(q,{feed:ee,cacheable:oe});}return Q()}let F=await l({contracts:S.map(q=>uo(e,q,o)),allowFailure:false,...o});F.length!==S.length&&ge(e,"pair oracle feed read returned no result");let Z=[];F.forEach((q,ee)=>{let oe=S[ee];if(oe===void 0)return;let ae=oo(e,q);Z.push({pairIndex:oe,feed:ae,cacheable:Fi(ae)});});for(let{pairIndex:q,feed:ee,cacheable:oe}of Z){let ae=k();oe&&ae!==void 0&&xt(ae,E,ae.feedByPair,dn(e,R,q),Ei,ee),B(q,{feed:ee,cacheable:oe});}return Q()}if(l===void 0||a===void 0){for(let F of S){let Z=await lo(e,i,F,o,d,u);B(F,Z);}return Q()}let qe=await l({contracts:S.map(F=>rf(e,F,o)),allowFailure:true,...o});qe.length!==S.length&&ge(e,"pair oracle feed read returned no result");let ie=[],L=new Set;if(qe.forEach((F,Z)=>{let q=S[Z];if(q===void 0)return;let ee=ye(Yx(F),"",0);if(Fi(ee)){let ae=k();ae!==void 0&&xt(ae,E,ae.feedByPair,dn(e,R,q),Ei,ee),B(q,{feed:ee,cacheable:true});return}let oe=Xx(F);oe!==void 0&&nf(oe)&&L.add(q),ie.push(q);}),ie.length>0){let F=await l({contracts:ie.map(q=>uo(e,q,o)),allowFailure:false,...o});F.length!==ie.length&&ge(e,"pair oracle feed read returned no result");let Z=[];if(F.forEach((q,ee)=>{let oe=ie[ee];if(oe===void 0)return;let ae=oo(e,q);Z.push({pairIndex:oe,feed:ae,cacheable:L.has(oe)&&Fi(ae)});}),k()!==void 0&&Z.some(q=>q.cacheable)){let q=k();ef(q,E,N);}for(let{pairIndex:q,feed:ee,cacheable:oe}of Z){let ae=k();oe&&ae!==void 0&&xt(ae,E,ae.feedByPair,dn(e,R,q),Ei,ee),B(q,{feed:ee,cacheable:oe});}}return Q()},te=b=>jm(e,m,b,async h=>{let R=De(e,"DomfiPairsStorage"),E=u,k=()=>d?Li(e,E):void 0,N=new Map,V=[];for(let B of h){let Q=k(),Te=Q===void 0?void 0:so(Q.maxLeverageByPair,dn(e,R,B));Te===void 0?V.push(B):N.set(B,await Te);}if(V.length===0)return N;if(l===void 0||a===void 0){let B=await Promise.all(V.map(async Q=>[Q,await gu(e,i,Q,o,d,u)]));for(let[Q,Te]of B)N.set(Q,Te);return N}let S=await l({contracts:V.map(B=>of(e,B,o)),allowFailure:false,...o});return V.forEach((B,Q)=>{let Te=Gn(e,S[Q],"pair max leverage");N.set(B,Te);let me=k();me!==void 0&&xt(me,E,me.maxLeverageByPair,dn(e,R,B),Gm,Te);}),N},h=>`pair max leverage loader omitted requested pair ${h}`),z=async b=>{let h=await be(b),R=[...new Set([...h.values()])];for(let k of R)k===bu&&ge(e,"pair oracle feed is not configured");let E=await jm(e,p,R,async k=>{if(l===void 0||a===void 0)return new Map(await Promise.all(k.map(async V=>[V,await co(e,i,V,o)])));let N=await l({contracts:k.map(V=>af(e,V,o)),allowFailure:false,...o});return new Map(k.map((V,S)=>[V,uf(e,V,N[S])]))},k=>`oracle value loader omitted requested feed ${k}`);return new Map([...h.entries()].map(([k,N])=>[k,Yt(e,E,N,`oracle value loader omitted requested feed ${N}`)]))},y=async(b,h)=>{let R=new Map(h),E=b.filter(N=>!R.has(N));if(E.length===0)return R;let k=await z(E);for(let[N,V]of k)R.set(N,V);return R},w=async b=>{if(l===void 0||a===void 0)return Promise.all(b.map(V=>Qx(e,V,n,A)));let h=[],R=new Set;for(let V of b){let S=On(V);R.has(S)||(R.add(S),h.push(V));}let E=h.flatMap(V=>{let S=P.toNumber(V.pairIndex),B=G.toNumber(V.index);return [jx(e,V,S,B,o),zx(e,V,S,B,o)]}),k=await l({contracts:E,allowFailure:false,...o}),N=new Map;return h.forEach((V,S)=>{N.set(On(V),{slot:vu(e,V,k[S*2]),info:tf(e,k[S*2+1]),block:A.block,...A.readBlockNumber!==void 0?{readBlockNumber:A.readBlockNumber}:{}});}),b.map(V=>Yt(e,N,On(V),"onchain identity read returned no result"))},O=async(b,h)=>{if(b.length===0)return [];if(l===void 0||a===void 0)return Promise.all(b.map(({position:L,identity:F})=>eR(e,L,F,A,h?.get(P.toNumber(L.pairIndex)))));let R=[],E=new Set;for(let L of b){let F=On(L.position);E.has(F)||(E.add(F),R.push(L));}let k=R.map(({position:L})=>P.toNumber(L.pairIndex)),[N,V]=await Promise.all([te(k),h===void 0?z(k):y(k,h)]),S=f??W(),B=S===void 0,Q=R.flatMap(({position:L,identity:F})=>{let Z=P.toNumber(L.pairIndex),q=G.toNumber(L.index);return [Gx(e,L,Z,q,F.slot,o)]}),Te=await l({contracts:[...B?[yu(e,o)]:[],...Q],allowFailure:false,...o}),me=B?Gn(e,Te[0],"liquidation margin threshold"):await S;B&&re(me);let qe=B?1:0,ie=new Map;return R.forEach(({position:L,identity:F},Z)=>{let q=P.toNumber(L.pairIndex),ee=F.slot,oe=Tn(e,ye(Te[Z+qe],"",0),"trade funding fee"),ae=Yt(e,N,q,`pair max leverage loader omitted requested pair ${q}`),Dy=Yt(e,V,q,`oracle value loader omitted requested pair ${q}`),Sy=li({collateralRaw:ee.collateralRaw,leverageRaw:ee.leverageRaw,maxLeverageRaw:ae,liqMarginThresholdP:me});ie.set(On(L),{oracle:Dy,fundingFeeRaw:oe,pairMaxLeverageRaw:ae,liquidationPriceRaw:Ft({openPriceRaw:ee.openPriceRaw,buy:ee.buy,collateralRaw:ee.collateralRaw,leverageRaw:ee.leverageRaw,fundingFeeRaw:oe,maxLeverageRaw:ae,liqMarginThresholdP:me}),liquidationMarginRaw:Sy});}),b.map(({position:L})=>Yt(e,ie,On(L),"onchain valuation read returned no result"))},C=async(b,h,R)=>{if(b.length===0)return [];let E=Kx(h);if(l===void 0||a===void 0)return Promise.all(b.map(async({position:ie,identity:L})=>{let F=P.toNumber(ie.pairIndex),Z=L.slot,q=$m(e,E,ie),[ee,oe,ae]=await Promise.all([R?.get(F)??A.readOracleByPair(F),A.readPairMaxLeverage(F),A.readLiqMarginThresholdP?.()??po(e,i,o)]);return Hm({slot:Z,oracle:ee,fundingFeeRaw:q,pairMaxLeverageRaw:oe,liqMarginThresholdP:ae})}));let k=[],N=new Set;for(let ie of b){let L=On(ie.position);N.has(L)||(N.add(L),k.push(ie));}let V=k.map(({position:ie})=>P.toNumber(ie.pairIndex)),[S,B]=await Promise.all([te(V),R===void 0?z(V):y(V,R)]),Q=f??W(),Te=Q===void 0,me=Te?Gn(e,(await l({contracts:[yu(e,o)],allowFailure:false,...o}))[0],"liquidation margin threshold"):await Q;Te&&re(me);let qe=new Map;for(let{position:ie,identity:L}of k){let F=P.toNumber(ie.pairIndex),Z=L.slot,q=$m(e,E,ie),ee=Yt(e,S,F,`pair max leverage loader omitted requested pair ${F}`),oe=Yt(e,B,F,`oracle value loader omitted requested pair ${F}`);qe.set(On(ie),Hm({slot:Z,oracle:oe,fundingFeeRaw:q,pairMaxLeverageRaw:ee,liqMarginThresholdP:me}));}return b.map(({position:ie})=>{let L=qe.get(On(ie));return L!==void 0?L:ge(e,"onchain valuation read returned no result")})},A={block:{...r.number!==void 0?{number:r.number}:{},timestampMs:r.timestamp*1000n},...a!==void 0?{readBlockNumber:a}:{},commonReadOpts:o,useLatestConfigCache:d,readFeed:ce,readPairMaxLeverage:en,readLiqMarginThresholdP:H,readOracleByPair:pe,readIdentities:w,readValuations:O,readValuationsWithFundingFees:C};return A}async function fo(e,n){return Tu(e,n,t=>Zx(e,t,n?.signal))}async function Jx(e,n,t,i){let r=mo(e),a=P.toNumber(n.pairIndex),o=G.toNumber(n.index),d=i??await fo(e,t),u=d.commonReadOpts,[l,c]=await Promise.all([Kn(e,r)({address:De(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,a,o],...u}),Kn(e,r)({address:De(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenTradeInfo",args:[n.wallet,a,o],...u})]);return {slot:vu(e,n,l),info:tf(e,c),block:d.block,...d.readBlockNumber!==void 0?{readBlockNumber:d.readBlockNumber}:{}}}async function Qx(e,n,t,i){return Tu(e,t,r=>Jx(e,n,r,i))}async function eR(e,n,t,i,r){let a=mo(e),o=P.toNumber(n.pairIndex),d=G.toNumber(n.index),u=i?.commonReadOpts??hu(t.readBlockNumber),l=t.slot,[c,p,m,f]=await Promise.all([r??i?.readOracleByPair(o)??sf(e,a,o,u,false),Kn(e,a)({address:De(e,"DomfiPairInfos"),abi:D.DomfiPairInfos,functionName:"getTradeFundingFee",args:[n.wallet,o,d,l.buy,l.collateralRaw,l.leverageRaw],...u}),i?.readPairMaxLeverage(o)??gu(e,a,o,u,false),i?.readLiqMarginThresholdP?.()??po(e,a,u)]),g=m,T=Tn(e,ye(p,"",0),"trade funding fee"),v=li({collateralRaw:l.collateralRaw,leverageRaw:l.leverageRaw,maxLeverageRaw:g,liqMarginThresholdP:f});return {oracle:c,fundingFeeRaw:T,pairMaxLeverageRaw:g,liquidationPriceRaw:Ft({openPriceRaw:l.openPriceRaw,buy:l.buy,collateralRaw:l.collateralRaw,leverageRaw:l.leverageRaw,fundingFeeRaw:T,maxLeverageRaw:g,liqMarginThresholdP:f}),liquidationMarginRaw:v}}async function nR(e,n,t){let i=mo(e),r=P.toNumber(n.pairIndex),a=G.toNumber(n.index),o=await Ym(e,i)(Zm(t)),d=t?.blockTag==="latest"?o.number:t?.blockTag??o.number,u=hu(d,t?.signal),l=await Kn(e,i)({address:De(e,"DomfiTradingStorage"),abi:D.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,r,a],...u}),c=vu(e,n,l),p=t?.blockTag===void 0||t.blockTag==="latest",m=c.trader===zm||c.collateralRaw===0n||!Bx(c.trader,n.wallet)?void 0:await sf(e,i,r,u,p,p?Jm(e).generation:void 0);return {slot:c,block:{...o.number!==void 0?{number:o.number}:{},timestampMs:o.timestamp*1000n},...m!==void 0?{oracle:m}:{}}}async function df(e,n,t){return Tu(e,t,i=>nR(e,n,i))}var Xt={sdkVersion:I,sourceTag:"valuation-watch",chainId:0},rR=3e4;function pf(e){return e instanceof Error&&"code"in e&&typeof e.code=="string"&&"kind"in e&&typeof e.kind=="string"&&"transient"in e&&typeof e.transient=="boolean"&&"diagnostics"in e&&typeof e.diagnostics=="object"&&e.diagnostics!==null}function Pu(e){return pf(e)?e:new mt.ValidationError({message:e instanceof Error?e.message:"valuation watcher poll failed",diagnostics:Xt,...e!==void 0?{cause:e}:{}})}function aR(e){return new mt.AbortError({message:"valuation watcher was aborted",diagnostics:Xt,...e!==void 0?{cause:e}:{}})}function oR(e){return new mt.TimeoutError({message:"valuation watcher poll timed out",diagnostics:Xt,...e!==void 0?{cause:e}:{}})}function Je(e){return [e.chainId,e.wallet.toLowerCase(),e.pairIndex,e.index,e.tradeId].join(":")}function sR(e){let n=new Set,t=[];for(let i of e){let r=Je(i);n.has(r)||(n.add(r),t.push(i));}return t}function uR(e){let n={};return e?.timeoutMs!==void 0&&(n.timeoutMs=e.timeoutMs),e?.readinessPolicy!==void 0&&(n.readinessPolicy=e.readinessPolicy),e?.blockTag!==void 0&&(n.blockTag=e.blockTag),e?.markSource!==void 0&&(n.markSource=e.markSource),n}function dR(e){let n=typeof e.blockTag=="bigint"?e.blockTag.toString():e.blockTag;return JSON.stringify({timeoutMs:e.timeoutMs,readinessPolicy:e.readinessPolicy,blockTag:n,markSource:e.markSource})}function xu(e,n){let t=Math.max(0,n-1),i=Math.max(e,rR),r=Math.max(0,Math.ceil(Math.log2(i/e))),a=Math.min(i,e*2**Math.min(t,r)),o=1+Math.random()*.2;return Math.max(e,Math.min(i,Math.floor(a*o)))}function Ru(e,n){return `${n}:${Je(e)}`}function Ni(){return new mt.ValidationError({message:"valuation watcher bulk poll returned no result",diagnostics:Xt})}function lf(e,n){return pf(e)&&n.code==="VALIDATION_ERROR"&&n.kind==="validation"&&!n.transient&&(n.message.startsWith("position chain ")||n.message==="onchain trade slot does not match requested position")}function lR(e,n){let t={},i=false;return n!==void 0&&(t.signal=n,i=true),e?.timeoutMs!==void 0&&(t.timeoutMs=e.timeoutMs,i=true),e?.readinessPolicy!==void 0&&(t.readinessPolicy=e.readinessPolicy,i=true),e?.blockTag!==void 0&&(t.blockTag=e.blockTag,i=true),e?.markSource!==void 0&&(t.markSource=e.markSource,i=true),i?t:void 0}function cR(e){if(e===null)return false;let n=typeof e;return n!=="object"&&n!=="function"?false:typeof e.catch=="function"}function pR(e){if(e===null)return false;let n=typeof e;return n!=="object"&&n!=="function"?false:typeof e.then=="function"}function ku(e,n){try{let t=e(n);cR(t)?t.catch(()=>{}):pR(t)&&t.then(void 0,()=>{});}catch{return}}function mf(e){let n=new Map,t=y=>{let w=uR(y),O=dR(w),C=n.get(O);if(C!==void 0)return C;let A={key:O,opts:w,subscribers:new Set,running:false,failureCountByIntervalMs:new Map,retryAfterByIntervalMs:new Map,isolatedPositionByKey:new Map,currentController:void 0,currentSubscribers:void 0,wake:void 0};return n.set(O,A),A},i=async(y,w)=>{if(w<=0)return;let O;await new Promise(C=>{let A=setTimeout(C,w);O=()=>{clearTimeout(A),C();},y.wake=O;}).finally(()=>{y.wake===O&&(y.wake=void 0);});},r=(y,w)=>{y.stopped||ku(y.cb,{type:"error",error:w});},a=(y,w)=>{let O=y.get(Je(w));if(O===void 0)throw Ni();return O},o=(y,w)=>{if(!y.stopped){if(y.kind==="single"){let O=y.positions[0];if(O===void 0)throw Ni();ku(y.cb,{type:"snapshot",data:a(w,O)});return}ku(y.cb,{type:"snapshot",data:y.positions.map(O=>a(w,O))});}},d=async(y,w,O)=>{let C=new Map;if(w.length===0)return C;let b=await Ie({signal:O.signal,diagnostics:Xt,...y.opts.timeoutMs!==void 0?{timeoutMs:y.opts.timeoutMs}:{}}).runAttempt(R=>e.positionSnapshots(w,lR(y.opts,R)),aR,oR);if(b.length!==w.length)throw Ni();let h=new Set(w.map(Je));for(let R of b){let E=Je(R.position);if(!h.has(E))throw Ni();C.has(E)||C.set(E,R);}for(let R of h)if(!C.has(R))throw Ni();return C},u=(y,w)=>{let C=Date.now()+w.intervalMs,A=Math.max(1,Math.floor(w.intervalMs/10)),b;for(let h of y.subscribers)h===w||h.stopped||h.intervalMs!==w.intervalMs||h.nextDueAt<C||h.nextDueAt-C>A||(b=b===void 0?h.nextDueAt:Math.min(b,h.nextDueAt));return b??C},l=(y,w)=>Math.max(w.nextDueAt,y.retryAfterByIntervalMs.get(w.intervalMs)??0),c=(y,w,O,C={})=>{if(w.stopped)return;let A=C.clearIntervalState??true;try{o(w,O),w.failureCount=0,w.isolated=!1,T(y,w),A&&(y.failureCountByIntervalMs.delete(w.intervalMs),y.retryAfterByIntervalMs.delete(w.intervalMs));}catch(b){r(w,Pu(b)),w.failureCount+=1;}w.nextDueAt=u(y,w);},p=(y,w,O=false)=>{let C=y.filter(h=>!h.stopped),A=new Map;if(C.length===0)return A;let b=new Map;for(let h of C){h.failureCount+=1,O&&(h.isolated=true);let R=b.get(h.intervalMs)??[];R.push(h),b.set(h.intervalMs,R);}for(let[h,R]of b){let E=Math.max(...R.map(V=>V.failureCount)),k=xu(h,E);for(let V of R)r(V,w);let N=Date.now()+k;A.set(h,N);for(let V of R)V.nextDueAt=N;}return A},m=(y,w)=>{for(let[O,C]of w)y.retryAfterByIntervalMs.set(O,C);},f=(y,w)=>y.filter(O=>!O.stopped&&O.positions.some(C=>Je(C)===w)),g=(y,w,O)=>{let C=0,A=0;for(let b of w){let h=y.isolatedPositionByKey.get(Ru(b,O));h!==void 0&&(C=Math.max(C,h.failureCount),A=Math.max(A,h.retryAfterAt));}return C>0||A>0?{failureCount:C,retryAfterAt:A}:void 0},T=(y,w)=>{for(let O of w.positions)y.isolatedPositionByKey.delete(Ru(O,w.intervalMs));},v=(y,w,O,C)=>{for(let[A,b]of C)for(let h of O){let R=0;for(let k of w)k.intervalMs===A&&k.positions.some(N=>Je(N)===h)&&(R=Math.max(R,k.failureCount));if(R===0)continue;let E={failureCount:R,retryAfterAt:b};y.isolatedPositionByKey.set(`${A}:${h}`,E);for(let k of y.subscribers)k.stopped||k.intervalMs!==A||k.positions.some(N=>Je(N)===h)&&(k.isolated=true,k.failureCount=Math.max(k.failureCount,E.failureCount),k.nextDueAt=Math.max(k.nextDueAt,E.retryAfterAt));}},x=(y,w=Date.now())=>{let O=new Set,C=new Set;for(let b of y.subscribers)if(!b.stopped){O.add(b.intervalMs);for(let h of b.positions)C.add(Ru(h,b.intervalMs));}let A=new Set([...y.failureCountByIntervalMs.keys(),...y.retryAfterByIntervalMs.keys()]);for(let b of A)O.has(b)||(y.retryAfterByIntervalMs.get(b)??0)>w||(y.failureCountByIntervalMs.delete(b),y.retryAfterByIntervalMs.delete(b));for(let[b,h]of y.isolatedPositionByKey)C.has(b)||h.retryAfterAt>w||y.isolatedPositionByKey.delete(b);},re=(y,w)=>{let O=new Map;for(let C of w){if(C.subscriber.stopped)continue;let A=O.get(C.subscriber.intervalMs)??new Map,b=A.get(C.subscriber);A.set(C.subscriber,{incrementSubscriberFailure:C.incrementSubscriberFailure||b?.incrementSubscriberFailure===true}),O.set(C.subscriber.intervalMs,A);}for(let[C,A]of O){let b=Math.max((y.failureCountByIntervalMs.get(C)??0)+1,...[...A].map(([R,E])=>R.failureCount+(E.incrementSubscriberFailure?1:0))),h=Date.now()+xu(C,b);y.failureCountByIntervalMs.set(C,b),y.retryAfterByIntervalMs.set(C,h);for(let R of A.keys())R.failureCount=Math.max(R.failureCount,b),R.nextDueAt=Math.max(R.nextDueAt,h);}},ne=(y,w,O)=>{let C=w.filter(b=>!b.stopped),A=new Map;for(let b of C){let h=A.get(b.intervalMs)??[];h.push(b),A.set(b.intervalMs,h);}for(let[b,h]of A){let R=(y.failureCountByIntervalMs.get(b)??0)+1;y.failureCountByIntervalMs.set(b,R);for(let E of h)E.failureCount=Math.max(E.failureCount,R-1);}m(y,p(C,O));for(let[b,h]of A)y.failureCountByIntervalMs.set(b,Math.max(...h.map(R=>R.failureCount)));},le=(y,w,O)=>{y.currentController=w,y.currentSubscribers=new Set(O.filter(C=>!C.stopped));},ce=(y,w)=>{y.currentController===w&&(y.currentController=void 0,y.currentSubscribers=void 0);},en=(y,w)=>{let O=y.currentSubscribers;if(!(O===void 0||O.size===0)){for(let C of O)if(!C.stopped)return;y.currentController?.abort(w),y.wake?.();}},H=async(y,w,O,C)=>{let A=()=>w.some(S=>!S.stopped);if(!A())return;let b=sR(w.filter(S=>!S.stopped).flatMap(S=>S.positions)),h=new Map(C),R=new Map;for(let S of b){if(!A())return;let B=Je(S);if(h.has(B))continue;let Q=()=>f(w,B),Te=Q();if(Te.length===0)continue;let me=B,qe=new AbortController,ie=()=>qe.abort(O.signal.reason);O.signal.addEventListener("abort",ie,{once:true}),le(y,qe,Te);try{let F=(await d(y,[S],qe)).get(me);if(F===void 0)throw Ni();h.set(me,F);}catch(L){if(Q().length===0)continue;if(!A())return;let F=Pu(L);R.set(me,{error:F,isolate:lf(L,F)});}finally{O.signal.removeEventListener("abort",ie),ce(y,qe);}}let E=new Map,k=new Map,N=[],V=new Set;for(let S of w)S.stopped||S.positions.some(B=>{let Q=R.get(Je(B));return Q!==void 0&&!Q.isolate})&&V.add(S.intervalMs);for(let S of w){if(S.stopped)continue;let B=S.positions.map(L=>({key:Je(L),error:R.get(Je(L))})).filter(L=>L.error!==void 0);if(B.length===0){c(y,S,h,{clearIntervalState:!V.has(S.intervalMs)});continue}let Q=B.filter(L=>L.error.isolate),Te=B.filter(L=>!L.error.isolate);if(Te.length>0&&N.push({subscriber:S,incrementSubscriberFailure:Q.length===0}),Q.length===0){let L=Te[0]?.error;if(L===void 0)continue;let F=`${L.error.code}:${L.error.message}`,Z=k.get(F)??{error:L.error,subscribers:[]};Z.subscribers.push(S),k.set(F,Z);continue}let me=Q[0]?.error;if(me===void 0)continue;let qe=`${me.isolate}:${me.error.code}:${me.error.message}`,ie=E.get(qe)??{error:me.error,isolate:me.isolate,positionKeys:new Set,subscribers:[]};for(let L of Q)ie.positionKeys.add(L.key);ie.subscribers.push(S),E.set(qe,ie);}for(let S of k.values())for(let B of S.subscribers)r(B,S.error);for(let S of E.values())if(S.isolate){let B=p(S.subscribers,S.error,true);v(y,S.subscribers,S.positionKeys,B);}else ne(y,S.subscribers,S.error);N.length>0&&re(y,N);},pe=async(y,w)=>{let O=w.filter(b=>b.isolated),C=w.filter(b=>!b.isolated),A;if(C.length>0){let b=[],h=new Set;for(let E of C)if(!E.stopped)for(let k of E.positions){let N=Je(k);h.has(N)||(h.add(N),b.push(k));}let R=new AbortController;le(y,R,C);try{let E=await d(y,b,R);A=E;for(let k of C)k.stopped||c(y,k,E);}catch(E){let k=C.filter(V=>!V.stopped);if(k.length===0)return;let N=Pu(E);if(lf(E,N))if(b.length>1)await H(y,k,R);else {let V=new Set(b.map(Je)),S=p(k,N,true);v(y,k,V,S);}else ne(y,k,N);}finally{ce(y,R);}}if(O.length>0){let b=new AbortController;le(y,b,O);try{await H(y,O,b,A);}finally{ce(y,b);}}},be=async y=>{try{for(await Promise.resolve();y.subscribers.size>0;){let w=Date.now();x(y,w);let O=[...y.subscribers].filter(b=>!b.stopped),C=Math.min(...O.map(b=>l(y,b)));if(C>w){await i(y,C-w);continue}let A=O.filter(b=>l(y,b)<=w);await pe(y,A);}}finally{y.currentController?.abort(),y.currentSubscribers=void 0,y.running=false,y.wake=void 0,y.subscribers.size===0&&n.delete(y.key);}},te=y=>{if(y.running){y.wake?.();return}y.running=true,be(y);},z=(y,w,O,C)=>{let A=Xn(O?.intervalMs,Xt);xe(O?.timeoutMs,"timeoutMs",Xt);let b=O?.signal;if(b?.aborted===true)return {stop:()=>{}};let h=t(O),R=Date.now();x(h,R);let E=O?.emitImmediately??true,k=g(h,w,A),N=Math.max(R+(!E||h.currentController!==void 0?A:0),h.retryAfterByIntervalMs.get(A)??0,k?.retryAfterAt??0),V,S={kind:y,positions:[...w],cb:C,intervalMs:A,nextDueAt:N,failureCount:k?.failureCount??0,isolated:k!==void 0,stopped:false,stop:()=>{}},B=()=>{S.stopped||(S.stopped=true,h.subscribers.delete(S),V!==void 0&&b?.removeEventListener("abort",V),x(h),h.subscribers.size===0?(h.currentController?.abort(b?.reason),h.wake?.()):en(h,b?.reason));};return S.stop=B,b!==void 0&&(V=B,b.addEventListener("abort",V,{once:true})),h.subscribers.add(S),te(h),{stop:B}};return {watchPositionSnapshot(y,w,O){return z("single",[y],w,O)},watchPositionSnapshots(y,w,O){return z("many",y,w,O)}}}var yR="valuation",gR="0x0000000000000000000000000000000000000000",bR=100,TR=4,vf=3e4,Au=new WeakMap;function Pf(e){let n=Au.get(e);if(n!==void 0)return n;let t={apiSchema:void 0,marketByPair:new Map};return Au.set(e,t),t}function hR(e){Au.delete(e);}function xf(e,n,t=Date.now()){if(!(e===void 0||e.expiresAt<=t)&&e.promise!==void 0&&(e.settled||e.signal===n?.signal&&e.timeoutMs===n?.timeoutMs))return e.promise}function wR(e,n){return `${e}:${n?.readinessPolicy??"strict"}`}function vR(e,n,t){let i=Pf(e),r=xf(i.apiSchema,t);if(r!==void 0)return r;let a={promise:void 0,expiresAt:Date.now()+vf,signal:t?.signal,timeoutMs:t?.timeoutMs,settled:false},o=n(t).then(d=>{let u=ga({...d.data.apiSchemaHash!==void 0?{apiSchemaHash:d.data.apiSchemaHash}:{}});return (d.freshness.isStale||u.status!=="supported")&&i.apiSchema===a?i.apiSchema=void 0:a.settled=true,u},d=>{throw i.apiSchema===a&&(i.apiSchema=void 0),d});return a.promise=o,i.apiSchema=a,o}function PR(e,n,t,i){let r=Pf(e),a=wR(n,i),o=xf(r.marketByPair.get(a),i);if(o!==void 0)return o;let d={promise:void 0,expiresAt:Date.now()+vf,signal:i?.signal,timeoutMs:i?.timeoutMs,settled:false},u=t(P.from(n),i).then(l=>(P.toNumber(l.data.pairIndex)!==n&&(r.marketByPair.get(a)===d&&r.marketByPair.delete(a),Ae(e,"REST market metadata pairIndex does not match requested pair")),l.freshness.isStale&&r.marketByPair.get(a)===d?r.marketByPair.delete(a):d.settled=true,l),l=>{throw r.marketByPair.get(a)===d&&r.marketByPair.delete(a),l});return d.promise=u,r.marketByPair.set(a,d),u}function go(e){let n={sdkVersion:I,sourceTag:yR,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Ae(e,n){throw new mt.ValidationError({message:n,diagnostics:go(e)})}function xR(e,n){return n instanceof mt.AbortError?n:new mt.AbortError({message:"valuation read was aborted",diagnostics:go(e),...n!==void 0?{cause:n}:{}})}function RR(e,n){return new mt.TimeoutError({message:"valuation read timed out",diagnostics:go(e),...n!==void 0?{cause:n}:{}})}function kR(e,n){return n===void 0?e:{...e??{},signal:n}}function yo(e,n,t){return Ie({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:go(e)}).runAttempt(r=>t(kR(n,r)),r=>xR(e,r),r=>RR(e,r))}function Rf(e,n,t){let i=BigInt(e.chain.oracleStaleThresholdMs??6e4);return t===void 0||t<=0n||t>n||n-t>i}function Sr(e,n){return $.toString(e)===$.toString(n)}function Iu(e){let n=$.toString(e);if(/^(?:0|[1-9]\d*)$/.test(n))return BigInt(n).toString()}function _r(e,n){return e.toLowerCase()===n.toLowerCase()}function kf(e,n){n.chainId!==e.chain.chainId&&Ae(e,`position chain ${n.chainId} does not match SDK chain ${e.chain.chainId}`);}function Af(e,n){return n?.chunkSize===void 0?25:((!Number.isFinite(n.chunkSize)||n.chunkSize<=0)&&Ae(e,"chunkSize must be a finite positive number"),Math.min(bR,Math.max(1,Math.floor(n.chunkSize))))}function Rt(e,n){e.includes(n)||e.push(n);}function AR(e,n){return e.kind==="open_position"&&_r(e.wallet,n.wallet)&&e.pairIndex===n.pairIndex&&e.index===n.index&&Sr(e.tradeId,n.tradeId)}function IR(e,n){return e.kind!=="pending_position"||!_r(e.wallet,n.wallet)?false:e.targetTradeId!==void 0&&Sr(e.targetTradeId,n.tradeId)||e.tradeId!==void 0&&Sr(e.tradeId,n.tradeId)?true:e.pairIndex!==void 0&&e.pairIndex!==n.pairIndex||e.index!==void 0&&e.index!==n.index?false:e.pairIndex!==void 0||e.index!==void 0}function OR(e,n){if(!(!e.isPending||e.isCancelled)&&_r(e.wallet,n.wallet)&&!(e.pairIndex!==void 0&&e.pairIndex!==n.pairIndex)&&!(e.tradeId!==void 0&&!Sr(e.tradeId,n.tradeId))&&e.action!=="open"){if(e.action==="close")return "being_market_closed";if(e.action==="remove_collateral")return "remove_collateral_pending";if(e.orderType==="limit"||e.orderType==="stop"||e.orderType==="automation")return "trigger_pending"}}function Mr(e){return e instanceof mt.ReadModelNotReadyError||typeof e=="object"&&e!==null&&"code"in e&&e.code==="READ_MODEL_NOT_READY"}function Wi(){return {matched:false,pendingReasons:["read_model_not_ready"]}}function If(e,n){let t=[];for(let r of e.pendingReasons)Rt(t,r);e.status==="missing"&&Rt(t,"read_model_not_ready");let i=e.status==="found"&&e.position?.kind==="open_position"?e.position:void 0;return {matched:e.status==="found",...i!==void 0?{position:i}:{},...n!==void 0?{freshness:n}:{},pendingReasons:t}}async function CR(e,n,t){if(Iu(n.tradeId)===void 0)return Wi();if(typeof e.api.account.position=="function")try{let d=await e.api.account.position(n.wallet,{pairIndex:n.pairIndex,index:n.index,tradeId:n.tradeId},t);return If(d.data,d.freshness)}catch(d){if(!Mr(d))throw d;return Wi()}let i=[],r,a=false,o;try{for await(let d of e.api.account.positionsPages(n.wallet,t)){r=r??d.freshness;for(let u of d.data){if(AR(u,n)&&u.kind==="open_position"){a=!0,o=u,r=d.freshness;for(let l of u.pendingReasons)Rt(i,l);}if(IR(u,n))for(let l of u.pendingReasons)Rt(i,l);}}for await(let d of e.api.account.ordersPages(n.wallet,t)){r=r??d.freshness;for(let u of d.data){let l=OR(u,n);l!==void 0&&Rt(i,l);}}}catch(d){if(!Mr(d))throw d;Rt(i,"read_model_not_ready");}return a||Rt(i,"read_model_not_ready"),{matched:a,...o!==void 0?{position:o}:{},...r!==void 0?{freshness:r}:{},pendingReasons:i}}async function DR(e,n,t){if(typeof e.api.account.positionsBatch!="function")return;let i=new Array(n.length),r=new Map;n.forEach((c,p)=>{if(Iu(c.tradeId)===void 0){i[p]=Wi();return}let m=c.wallet.toLowerCase(),f=r.get(m)??{wallet:c.wallet,positions:[],indexes:[]};f.positions.push(c),f.indexes.push(p),r.set(m,f);});let a=Array.from(r.values()),o=0,d=false,u=async c=>{try{let p=await e.api.account.positionsBatch(c.wallet,c.positions.map(m=>({pairIndex:m.pairIndex,index:m.index,tradeId:m.tradeId})),t);for(let m=0;m<c.indexes.length;m++){let f=c.indexes[m];f!==void 0&&(i[f]=p.data[m]===void 0?Wi():If(p.data[m],p.freshness));}}catch(p){if(!Mr(p))throw p;for(let m of c.indexes)i[m]=Wi();}},l=async()=>{for(;!d;){let c=a[o];if(o+=1,c===void 0)return;try{await u(c);}catch(p){throw d=true,p}}};return await Promise.all(Array.from({length:Math.min(TR,a.length)},l)),i}function Of(e,n,t,i,r,a,o){let d=Rf(e,t,i),u={valuationBlockTimestamp:new Date(Number(t)).toISOString(),markSource:a,isStale:d||r?.isStale===true||o?.isStale===true};return n!==void 0&&(u.valuationBlock=n),i!==void 0&&(u.markTimestampMs=i),a==="onchain_oracle"&&i!==void 0&&(u.oracleTimestampMs=i),r!==void 0&&(u.apiFreshness=r),o!==void 0&&(u.markApiFreshness=o),u}function SR(e,n){return e.pendingReasons.some(t=>t==="being_market_closed"||t==="remove_collateral_pending"||t==="trigger_pending"||t==="unknown_pending_mutation")?"pending_mutation":e.pendingReasons.includes("read_model_not_ready")||!e.matched||n.isStale?"read_only":"actionable"}function Cf(e,n){let{slot:t}=n;if(t.trader===gR||t.collateralRaw===0n||!_r(t.trader,e.wallet))return {status:"closed_or_stale",position:e,reason:"gone"};let i=Iu(e.tradeId);if(i===void 0)return {status:"closed_or_stale",position:e,reason:"read_model_not_ready"};if(n.info.tradeIdRaw.toString()!==i)return {status:"closed_or_stale",position:e,reason:"tradeId_mismatch"}}function MR(e,n,t,i,r){r.oracle.priceRaw<=0n&&Ae(e,"valuation mark price must be positive"),i.info.beingMarketClosed&&Rt(t.pendingReasons,"being_market_closed");let{slot:a}=i,o=r.markSource??"onchain_oracle",d=Of(e,i.block.number,i.block.timestampMs,r.oracle.timestampMs,t.freshness,o,r.markApiFreshness),u=ls({openPriceRaw:a.openPriceRaw,markPriceRaw:r.oracle.priceRaw,buy:a.buy,leverageRaw:a.leverageRaw,initialLeverageRaw:i.info.initialLeverageRaw}),l=cs({collateralRaw:a.collateralRaw,percentProfitRaw:u,fundingFeeRaw:r.fundingFeeRaw,liquidationMarginRaw:r.liquidationMarginRaw});return {status:"live",position:n,collateral:M.fromRaw(a.collateralRaw),leverage:U.fromRaw(BigInt(a.leverageRaw)),...r.liquidationPriceRaw!==void 0?{liquidationPrice:_.fromRaw(r.liquidationPriceRaw)}:{},fundingFee:ut.fromRaw(r.fundingFeeRaw),markPrice:_.fromRaw(r.oracle.priceRaw),markSource:o,markValue:M.fromRaw(l),unrealizedPnl:ut.fromRaw(ps({collateralRaw:a.collateralRaw,markValueRaw:l})),actionability:SR(t,d),pendingReasons:t.pendingReasons,freshness:d}}async function _R(e,n,t,i,r){let a=await Ff(e,n,t,i,r);return Df(e,a)}async function VR(e,n,t,i,r){return kf(e,n),yo(e,t,a=>_R(e,n,a,i,r))}function Df(e,n){return n.kind==="snapshot"?n.snapshot:MR(e,n.position,n.discovery,n.identity,n.valuation)}function Sf(e,n){return {resolveValuations:t=>n.readValuations(t.map(({position:i,identity:r})=>({position:i,identity:r})))}}function Ue(e){return {kind:"fallback",reason:e}}function yf(e){switch(e){case "api_schema_unsupported":return "api_schema_unsupported";case "missing_raw_state":return "missing_raw_state";case "missing_initial_acc_funding":return "missing_initial_acc_funding";default:return e}}function ER(e,n,t){let i=t.slot;return _r(n.wallet,e.wallet)&&P.toNumber(n.pairIndex)===P.toNumber(e.pairIndex)&&G.toNumber(n.index)===G.toNumber(e.index)&&Sr(n.tradeId,e.tradeId)&&n.side==="long"===i.buy&&M.toRaw(n.collateral)===i.collateralRaw&&U.toRaw(n.leverage)===BigInt(i.leverageRaw)&&_.toRaw(n.openPrice)===i.openPriceRaw}function gf(e){if(Mr(e))return "read_model_not_ready";if(e instanceof mt.TimeoutError||e instanceof mt.TransportError&&e.transient)return "transient_error";if(e instanceof mt.ApiError){if(e.transient)return "transient_error";if(e.httpStatus===404)return "api_unavailable"}if(e instanceof Error&&e.name==="TimeoutError")return "transient_error"}async function FR(e,n,t,i){if(t.length===0)return {kind:"apply",candidates:[]};if(n.readBlockNumber===void 0)return Ue("read_model_not_ready");for(let d of t){let u=d.discovery.position;if(u===void 0||!ER(d.position,u,d.identity))return Ue("read_model_not_ready")}let r=e.api,a=r.status?.get,o=r.markets?.state;if(typeof a!="function"||typeof o!="function")return Ue("api_unavailable");try{let d=await vR(e,a,i);if(d.status!=="supported")return Ue("api_schema_unsupported");let u=[...new Set(t.map(({position:m})=>P.toNumber(m.pairIndex)))],l=new Map,c=u.map(m=>{let f=o(P.from(m),i);return f.catch(()=>{}),f});for(let m=0;m<u.length;m+=1){let f=u[m],g=c[m];(f===void 0||g===void 0)&&Ae(e,"market state read omitted a requested pair");let T;try{T=await g;}catch(x){let W=gf(x);if(W!==void 0)return Ue(W);throw x}let v=ba(T.data,{schema:d});if(v.status!=="ok")return Ue(yf(v.reason));if(v.input.rawState.asOfBlock!==n.readBlockNumber)return Ue("read_model_not_ready");l.set(f,v.input.rawState);}let p=[];for(let m of t){let f=m.discovery.position;if(f===void 0)return Ue("read_model_not_ready");let g=xl(f,{schema:d});if(g.status!=="ok")return Ue(yf(g.reason));let T=m.identity.slot,v=P.toNumber(m.position.pairIndex),x=l.get(v);if(x===void 0)return Ue("missing_raw_state");p.push({position:m.position,fundingFeeRaw:Bm({initialAccFunding:g.input.initialAccFundingRaw,endAccFunding:T.buy?x.accPerOiLong:x.accPerOiShort,collateral:M.fromRaw(T.collateralRaw),leverage:U.fromRaw(BigInt(T.leverageRaw))})});}return {kind:"apply",candidates:p}}catch(d){let u=gf(d);if(u!==void 0)return Ue(u);throw d}}var LR=new Set([404,408,429,502,503,504]);function Mf(e){return e?.markSource!=="rest_fallback"}function bf(e){return e?.markSource==="onchain_oracle"?false:e?.blockTag===void 0||e.blockTag==="latest"}function NR(e){if(Mr(e))return "read_model_not_ready";if(e instanceof mt.TransportError)return e.transient?"transient_error":void 0;if(e instanceof mt.ApiError){if(e.transient)return "transient_error";if(e.httpStatus!==void 0&&LR.has(e.httpStatus))return "api_unavailable"}}function WR(e,n,t){return !n.isStale&&!t?e:{...e,isStale:true}}function BR(e){let n=Date.parse(e);return Number.isFinite(n)?BigInt(n):void 0}async function UR(e,n,t){let i=Mf(t),r=e.api,a=r.prices?.head,o=r.markets?.get;if(typeof a!="function"||typeof o!="function"){if(i)return Ue("api_unavailable");Ae(e,"REST mark price APIs are unavailable");}let d=await a(t),u=new Map(d.data.map(m=>[m.asset,m])),l=[...new Set(n.map(({position:m})=>P.toNumber(m.pairIndex)))],c=await Promise.all(l.map(async m=>{let f=await PR(e,m,o,t),g=u.get(f.data.priceAsset);if(g===void 0){if(i)return Ue("rest_mark_missing");Ae(e,`REST mark price is unavailable for market price asset ${f.data.priceAsset}`);}let T=BR(g.timestamp);T===void 0&&Ae(e,"REST mark price timestamp is invalid");let v=_.toRaw(g.price);v<=0n&&Ae(e,"REST mark price must be positive");let x=n.find(({position:ne})=>P.toNumber(ne.pairIndex)===m);x===void 0&&Ae(e,"REST mark price pair lookup failed");let W=Rf(e,x.identity.block.timestampMs,T),re=WR(d.freshness,f.freshness,W);return re.isStale&&i?Ue("stale_rest_mark"):[m,{feed:f.data.feedId,priceRaw:v,timestampMs:T,freshness:re}]})),p=new Map;for(let m of c){if("kind"in m)return m;p.set(m[0],m[1]);}return {kind:"apply",marks:p}}async function _f(e,n,t){try{return await UR(e,n,t)}catch(i){let r=NR(i);if(Mf(t)&&r!==void 0)return Ue(r);throw i}}function Vf(e,n,t){return e.map((i,r)=>{let a=n[r];if(a===void 0)return i;let o=t.get(P.toNumber(a.position.pairIndex));return o===void 0?i:{...i,oracle:{...i.oracle,priceRaw:o.priceRaw,timestampMs:o.timestampMs},markSource:"rest_fallback",markApiFreshness:o.freshness}})}function qR(e,n,t){let i=Sf(e,n);return {resolveValuations:async(r,a)=>{if(r.length===0)return [];let o=await _f(e,r,a??t);if(o.kind==="fallback")return i.resolveValuations(r,a);let d=await n.readValuations(r.map(({position:u,identity:l})=>({position:u,identity:l})),o.marks);return Vf(d,r,o.marks)}}}function Ef(e,n,t){let i=Sf(e,n),r=a=>bf(a)?qR(e,n,a):i;return {resolveValuations:async(a,o)=>{if(a.length===0)return [];let d=o??t,u=await FR(e,n,a,d);if(u.kind==="fallback"||u.candidates.length!==a.length)return r(d).resolveValuations(a,o);let l=u.candidates,c=a.map(({position:g,identity:T})=>({position:g,identity:T})),p=g=>n.readValuationsWithFundingFees(c,l,g);if(!bf(d))return p();let m=await _f(e,a,d);if(m.kind==="fallback")return p();let f=await p(m.marks);return Vf(f,a,m.marks)}}}async function Ff(e,n,t,i,r){let a=r===void 0?fo(e,t):Promise.resolve(r),[o,d]=await Promise.all([CR(e,n,t),a.then(f=>f.readIdentities([n]))]),u=await a,l=d[0];l===void 0&&Ae(e,"onchain identity read returned no result");let c=Cf(n,l);if(c!==void 0)return {kind:"snapshot",snapshot:c};let m=(await Ef(e,u,t).resolveValuations([{position:n,discovery:o,identity:l}],t))[0];return m===void 0&&Ae(e,"onchain valuation read returned no result"),{kind:"live",position:n,discovery:o,identity:l,valuation:m}}async function HR(e,n,t){let i=await df(e,n,t),r=i.oracle===void 0?"unavailable":"onchain_oracle";return {status:"unverified_slot",slot:n,displayOnly:true,markSource:r,freshness:Of(e,i.block.number,i.block.timestampMs,i.oracle?.timestampMs,void 0,r)}}async function Lf(e,n,t){return yo(e,t,i=>HR(e,n,i))}async function $R(e,n,t){let i,r=()=>(i=i??fo(e,t),i),a=Af(e,t),o=[];for(let d=0;d<n.length;d+=a){let u=n.slice(d,d+a),l=await DR(e,u,t),c=await r();if(l===void 0){o.push(...await Promise.all(u.map(T=>Ff(e,T,t,void 0,c))));continue}let p=await c.readIdentities(u);p.length!==u.length&&Ae(e,"onchain identity read returned no result");let m=new Array(u.length),f=[];u.forEach((T,v)=>{let x=p[v];x===void 0&&Ae(e,"onchain identity read returned no result");let W=Cf(T,x);if(W!==void 0){m[v]={kind:"snapshot",snapshot:W};return}f.push({position:T,identity:x,discovery:l[v]??Wi(),index:v});});let g=await Ef(e,c,t).resolveValuations(f,t);g.length!==f.length&&Ae(e,"onchain valuation read returned no result"),f.forEach((T,v)=>{let x=g[v];x===void 0&&Ae(e,"onchain valuation read returned no result"),m[T.index]={kind:"live",position:T.position,discovery:T.discovery,identity:T.identity,valuation:x};}),o.push(...Array.from({length:u.length},(T,v)=>{let x=m[v];return x===void 0&&Ae(e,"onchain valuation read returned no result"),x}));}return o}async function jR(e,n,t){return (await $R(e,n,t)).map(r=>Df(e,r))}async function zR(e,n,t){for(let i of n)kf(e,i);return n.length===0?(Af(e,t),yo(e,t,async()=>[])):yo(e,t,i=>jR(e,n,i))}function Nf(e){let n={clearConfigCache:()=>{wu(e),hR(e);},positionSnapshot:(i,r)=>VR(e,i,r),unverifiedSlotSnapshot:(i,r)=>Lf(e,i,r),positionSnapshots:(i,r)=>zR(e,i,r)},t=mf(n);return n.watchPositionSnapshot=((i,r,a)=>{let o=typeof r=="function"?void 0:r,d=typeof r=="function"?r:a;return typeof d!="function"&&Ae(e,"valuation.watchPositionSnapshot requires a callback"),t.watchPositionSnapshot(i,o,d)}),n.watchPositionSnapshots=((i,r,a)=>{let o=typeof r=="function"?void 0:r,d=typeof r=="function"?r:a;return typeof d!="function"&&Ae(e,"valuation.watchPositionSnapshots requires a callback"),t.watchPositionSnapshots(i,o,d)}),n}function Wf(e){return {clearConfigCache:()=>wu(e),unverifiedSlotSnapshot:(n,t)=>Lf(e,n,t)}}var GR=new Set(["Deposit","DepositLocked","DepositUnlocked","WithdrawRequested","Withdraw","WithdrawCanceled","LockedDepositTransferIn","LockedDepositTransferOut"]),KR=6,YR=6,XR=18,ZR=30n,Uf="vault-read";function Jt(e,n){throw new mt.ValidationError({message:e,diagnostics:{sdkVersion:I,sourceTag:Uf,chainId:0},...n!==void 0?{cause:n}:{}})}function Yn(e,n){try{return n()}catch(t){if(t instanceof mt.ValidationError&&t.diagnostics.sourceTag===Uf)throw t;return Jt(e,t)}}function JR(e){return {accPnlPerToken:tk(e.acc_pnl_per_token,"acc_pnl_per_token"),currentEpoch:e.current_epoch,currentValueLocked:Su(e.current_value_locked,"current_value_locked"),epochStart:e.epoch_start,totalShares:wo(e.total_shares,"total_shares"),apr:Ou(e.apr,"apr"),sharePrice:ik(e.share_price,"share_price"),collateralizationRatio:Ou(e.collateralization_ratio,"collateralization_ratio"),overCollateralization:Ou(e.over_collateralization,"over_collateralization")}}function Zt(e){let n={time:To(e,"time"),blockNumber:To(e,"block_number"),txIndex:To(e,"tx_index"),logIndex:To(e,"log_index"),opType:"unknown"},t=ok(e.tx_hash,"tx_hash");t!==void 0&&(n.txHash=t);let i=ak(ho(e,"op_type"));n.opType=i.opType,i.rawOpType!==void 0&&(n.rawOpType=i.rawOpType);let r=ho(e,"id");r!==void 0&&(n.id=r);let a=ho(e,"assets");a!==void 0&&(n.assets=Su(a,"assets"));let o=ho(e,"shares");o!==void 0&&(n.shares=wo(o,"shares"));let d=Cu(e,"current_epoch");d!==void 0&&(n.currentEpoch=d);let u=Cu(e,"unlock_epoch");u!==void 0&&(n.unlockEpoch=u);let l=Cu(e,"lock_duration_seconds");return l!==void 0&&(n.lockDurationSeconds=l),n}function QR(e){return {totalAssets:Su(e.total_assets,"total_assets"),totalShares:wo(e.total_shares,"total_shares"),totalLockedShares:wo(e.total_locked_shares,"total_locked_shares"),lockedDeposits:e.locked_deposits.map(Zt),unlockedDeposits:e.unlocked_deposits.map(Zt),pendingWithdraws:e.pending_withdraws.map(Zt),history:e.history.map(Zt),historyPagination:it(e.history_pagination)}}function ek(e){return {history:e.history.map(Zt),pagination:it(e.pagination)}}function nk(e){let n=Hf(e.tx_hash,"tx_hash");return {txHash:n,events:e.events.map(t=>Zt({...t,tx_hash:t.tx_hash??n}))}}function Du(e,n){let t=e.indexOf(".");if(t===-1)return e;let i=e.slice(t+1);return i.length<=n?e:`${e.slice(0,t)}.${i.slice(0,n)}`}function Er(e,n){return typeof e!="string"&&Jt(`${n} must be a string`),e}function Ou(e,n){return Yn(`${n} must be a decimal string`,()=>ii(Er(e,n)))}function tk(e,n){return Yn(`${n} must be a ratio string`,()=>He.fromRaw(Er(e,n)))}function Su(e,n){return Yn(`${n} must be a vault asset decimal`,()=>he.fromDecimal(Du(Er(e,n),KR)))}function wo(e,n){return Yn(`${n} must be a vault share decimal`,()=>se.fromDecimal(Du(Er(e,n),YR)))}function ik(e,n){return Yn(`${n} must be a vault share price decimal`,()=>wd.fromDecimal(Du(Er(e,n),XR)))}function Fr(e){function n(t,i,r){qf(e,t,i,r);}return {stats:async t=>{let i=await e.raw.vault.stats(t),r=Vr(i.freshness);return n(i,r,t),bo(i,{data:JR(i.data),freshness:r})},account:async(t,i)=>{let r=await e.raw.vault.account(t,i),a=Vr(r.freshness);return n(r,a,i),bo(r,{data:QR(r.data),freshness:a})},accountHistory:async(t,i)=>{let r=await e.raw.vault.accountHistory(t,i),a=Vr(r.freshness);return n(r,a,i),bo(r,{data:ek(r.data),freshness:a})},transactionEvents:async(t,i)=>{let r=await e.raw.vault.transactionEvents(t,i),a=Vr(r.freshness);return n(r,a,i),bo(r,{data:nk(r.data),freshness:a})},accountHistoryIterator:(t,i)=>rk(e,t,i)}}async function*rk(e,n,t={}){let i=t;for(;;){let r=await e.raw.vault.accountHistory(n,i);qf(e,r,Vr(r.freshness),i);for(let o of r.data.history)yield Zt(o);let a=r.data.pagination.next_cursor;if(a==null)return;i={...t,cursor:a};}}function qf(e,n,t,i){let r=ki(e.onEvent),a=n.readiness;if(a===void 0||a.status==="ready")return;let o=a.unsafe_reasons??[],d=a.degraded_reasons??[],u=a.status==="unsafe"?o.length>0?o:d.length>0?d:[a.status]:o,l=d.length>0?d:a.status==="degraded"?[a.status]:[];Ba({policy:i?.readinessPolicy??"strict",chainId:e.chainId??0,degradedReasons:l,unsafeReasons:u,diagnostics:{apiFreshness:t},...r!==void 0?{onEvent:r}:{}});}function ak(e){return e===void 0?{opType:"unknown"}:GR.has(e)?{opType:e}:{opType:"unknown",rawOpType:e}}function Hf(e,n){return typeof e!="string"&&Jt(`vault event ${n} is required for domain mapping`),nn(e,n,Jt)}function ok(e,n){if(e!=null)return Hf(e,n)}function bo(e,n){let t=e.diagnostics;return t===void 0?n:{...n,diagnostics:t}}function Vr(e){let n=Yn("indexed_block must be an integer",()=>ze(e.indexed_block,"indexed_block")),t=Yn("chain_head_block must be an integer",()=>ze(e.chain_head_block,"chain_head_block")),i=Yn("lag_blocks must be an integer",()=>ze(e.lag_blocks,"lag_blocks")),r=Yn("cache_age_seconds must be an integer",()=>ze(e.cache_age_seconds,"cache_age_seconds")),a={source:e.source,generatedAt:Yn("generated_at must be an ISO timestamp",()=>de(e.generated_at,"generated_at")),isStale:i!==void 0&&i>ZR};return n!==void 0&&(a.indexedBlock=n),t!==void 0&&(a.chainHeadBlock=t),i!==void 0&&(a.lagBlocks=i),e.cache_status!==void 0&&e.cache_status!==null&&(a.cacheStatus=e.cache_status),r!==void 0&&(a.cacheAgeSeconds=r),a}function To(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&Jt(`${n} must be an integer`),t}function Cu(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&Jt(`${n} must be an integer`),t}function ho(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&Jt(`${n} must be a string`),t}var sk="vault-track",uk=25;function Vu(e){let n={sdkVersion:I,sourceTag:sk,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Eu(e,n,t){return {message:n,diagnostics:Vu(e),...t!==void 0?{cause:t}:{}}}function zf(e,n){throw new mt.AbortError(Eu(e,"vault tracking was aborted",n))}function Bi(e){throw new mt.TimeoutError(Eu(e,"vault tracking timed out"))}function Gf(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function Fu(e){if(e instanceof mt.TimeoutError||Gf(e)||typeof e!="object"||e===null)return false;let n=e.status??e.httpStatus;if(n===404||n===405||n===501)return true;let t=e.code;if(typeof t!="string")return false;let i=t.toUpperCase();return i.includes("NOT_FOUND")||i.includes("UNSUPPORTED")||i.includes("NOT_IMPLEMENTED")||i.includes("METHOD_NOT_ALLOWED")}function Lr(e,n){n?.aborted===true&&zf(e,n.reason);}function Kf(e){return [e?.timeoutMs,e?.maxDurationMs].filter(n=>typeof n=="number"&&Number.isFinite(n)&&n>0)}function dk(e){let n=Kf(e);if(n.length!==0)return Date.now()+Math.min(...n)}function Nr(e){if(e!==void 0)return e-Date.now()}function lk(e){return e?.maxAttempts!==void 0?Math.max(0,e.maxAttempts):Kf(e).length>0?Number.POSITIVE_INFINITY:1}function vo(e,n){let t=Vu(e);dt(n?.intervalMs,t),xe(n?.timeoutMs,"timeoutMs",t),xe(n?.maxDurationMs,"maxDurationMs",t),ri(n?.maxAttempts,"maxAttempts",t);}function ck(e,n){return Xn(n?.intervalMs,Vu(e))}function Yf(e,n){let t=[];e?.timeoutMs!==void 0&&Number.isFinite(e.timeoutMs)&&e.timeoutMs>0&&t.push(e.timeoutMs);let i=Nr(n);if(i!==void 0&&i>0&&t.push(i),t.length!==0)return Math.max(1,Math.floor(Math.min(...t)))}function pk(e,n,t){let i={limit:e?.limit??uk};return e?.signal!==void 0&&(i.signal=e.signal),t!==void 0&&(i.timeoutMs=t),e?.readinessPolicy!==void 0&&(i.readinessPolicy=e.readinessPolicy),n!==void 0&&(i.cursor=n),i}function mk(e,n){let t={};return e?.signal!==void 0&&(t.signal=e.signal),n!==void 0&&(t.timeoutMs=n),e?.readinessPolicy!==void 0&&(t.readinessPolicy=e.readinessPolicy),t}async function fk(e,n,t){if(Lr(e,t),n<=0)return;let i;await new Promise((r,a)=>{let o=setTimeout(r,n);i=()=>{clearTimeout(o),a(new mt.AbortError(Eu(e,"vault tracking was aborted",t?.reason)));},t?.addEventListener("abort",i,{once:true});}).finally(()=>{i!==void 0&&t?.removeEventListener("abort",i);});}function Lu(e){switch(e){case "deposit":case "mint":return "Deposit";case "depositWithDiscountAndLock":case "mintWithDiscountAndLock":return "DepositLocked";case "makeWithdrawRequest":return "WithdrawRequested";case "cancelWithdrawRequest":return "WithdrawCanceled";case "withdraw":case "redeem":return "Withdraw";case "unlockDeposit":return "DepositUnlocked"}}function yk(e,n){let t=n;return t.blockNumber===void 0||t.txIndex===void 0||t.logIndex===void 0?true:BigInt(e.blockNumber)===t.blockNumber&&e.txIndex===t.txIndex&&e.logIndex===t.logIndex}function gk(e,n){return e!==void 0&&e.toLowerCase()===n.toLowerCase()}function Wr(e,n){return gk(e.txHash,n.txHash)&&e.opType===Lu(n.verb)&&yk(e,n)}async function bk(e,n,t,i,r){try{let a=pk(t,i,Yf(t,r));if(e.vault.accountHistory!==void 0)return await e.vault.accountHistory(n.owner,a);let o=await e.vault.account(n.owner,a);return {...o,data:{history:o.data.history,pagination:o.data.historyPagination}}}catch(a){throw a instanceof mt.TimeoutError||(Gf(a)||t?.signal?.aborted===true)&&zf(e,a),a}}function Tk(e){return `${String(e.freshness?.generatedAt)}:${String(e.freshness?.indexedBlock)}`}function hk(e,n){return e.some(t=>BigInt(t.blockNumber)<n.blockNumber)}function $f(e,n,t){n===void 0||t===void 0||(e.exhaustedFirstPage={freshnessKey:n,nextCursor:t});}async function jf(e,n,t,i,r){let a,o,d;for(;;){Lr(e,t?.signal);let u=Nr(i);u!==void 0&&u<=0&&Bi(e);let l=await bk(e,n,t,a,i),c=l.data.history.find(m=>Wr(m,n));if(c!==void 0)return c;let p=l.data.pagination.nextCursor;if(a===void 0&&(o=Tk(l),d=p,p!==void 0&&r.exhaustedFirstPage?.nextCursor===p&&r.exhaustedFirstPage.freshnessKey===o))return;if(hk(l.data.history,n)){$f(r,o,d);return}if(p===void 0){$f(r,o,d);return}a=p;}}async function wk(e,n,t,i,r){if(e.vault.transactionEvents!==void 0&&!r.transactionEventsUnavailable){Lr(e,t?.signal);let a=Nr(i);a!==void 0&&a<=0&&Bi(e);let o;try{o=await e.vault.transactionEvents(n.txHash,mk(t,Yf(t,i)));}catch(d){if(!Fu(d))throw d;return r.transactionEventsUnavailable=true,jf(e,n,t,i,r.accountHistory)}return o.data.events.find(d=>Wr(d,n))}return jf(e,n,t,i,r.accountHistory)}async function Nu(e,n,t){vo(e,t);let i=dk(t),r=lk(t),a=ck(e,t),o={transactionEventsUnavailable:false,accountHistory:{}},d=0;for(Lr(e,t?.signal),r<=0&&Bi(e);;){Lr(e,t?.signal);let u=Nr(i);u!==void 0&&u<=0&&Bi(e),d+=1;let l=await wk(e,n,t,i,o);if(l!==void 0)return {outcome:n,event:l};d>=r&&Bi(e);let c=Nr(i);c!==void 0&&c<=0&&Bi(e),await fk(e,Math.min(a,c??a),t?.signal);}}var Dk="vault-send",Sk=1000000000000000000n,Xf=Sk*100n;function ay(e){let n={sdkVersion:I,sourceTag:Dk,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function ln(e,n,t,i){return {message:n,diagnostics:ay(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function oy(e,n,t,i){throw new mt.ContractRevertError({...ln(e,n,void 0,t),...i!==void 0?{hash:i}:{}})}function hn(e,n,t,i){throw new mt.ValidationError(ln(e,n,t,i))}function Uu(e,n,t){return ve(n,t,(i,r)=>hn(e,i,void 0,r))}function Mk(e,n){if(e.walletClient!==void 0)return e.walletClient;throw new mt.MissingWalletClientError(ln(e,`${n} requires a wallet client`,"Pass walletClient to createDomfiClient."))}function sy(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(ln(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function Zf(e){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(ln(e,"prepared vault send requires a public client for approval revalidation","Pass publicClient to createDomfiClient."))}function uy(e){if(e.raw!==void 0)return {chain:e.chain,vault:Fr({raw:e.raw,chainId:e.chain.chainId,...e.onEvent!==void 0?{onEvent:e.onEvent}:{}})}}function Wu(e,n){let t=uy(e);if(t!==void 0)return t;throw new mt.MissingApiClientError(ln(e,`${n} requires an API client`,"Create the client with API support."))}function _k(e,n){if(e.raw===void 0)throw new mt.MissingApiClientError(ln(e,`${n} requires an API client`,"Create the client with API support."));let t=Fr({raw:e.raw,chainId:e.chain.chainId,...e.onEvent!==void 0?{onEvent:e.onEvent}:{}}),i={account:t.account};return typeof e.raw.vault.accountHistory=="function"&&(i.accountHistory=t.accountHistory),{chain:e.chain,vault:i}}function Vk(e){return e?.maxAttempts!==void 0?Math.max(0,e.maxAttempts):1}function Ek(e,n){return {signal:n,...e?.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e?.readinessPolicy!==void 0?{readinessPolicy:e.readinessPolicy}:{}}}function Fk(e,n){return e!==void 0&&e.toLowerCase()===n.toLowerCase()}function Lk(e,n){At(n,e.chain),cn(e.chain,n?.pollingIntervalMs),Qt(e,n?.signal),sy(e,"vault transaction receipt");}function Nk(e,n,t,i){let a=uy(e)?.vault.transactionEvents;if(a===void 0)return;let o=false,d,u,l=[],c=false,p,m=new AbortController,f=Vk(i),g=Xn(i?.intervalMs,ay(e)),T=Lu(n),v=()=>{p!==void 0&&(i?.signal?.removeEventListener("abort",p),p=void 0);};i?.signal!==void 0&&(p=()=>m.abort(i.signal?.reason),i.signal.aborted?m.abort(i.signal.reason):i.signal.addEventListener("abort",p,{once:true}));let x=async()=>{g<=0||o||await new Promise(W=>{u=W,d=setTimeout(()=>{d=void 0,u=void 0,W();},g);});};return (async()=>{let W=0;for(;!o&&W<f;){if(W+=1,l=(await a(t,Ek(i,m.signal))).data.events.filter(ne=>Fk(ne.txHash,t)&&ne.opType===T),l.length>0||W>=f)return;await x();}})().catch(W=>{Fu(W)&&(c=true);}).finally(v),{events:()=>l,unavailable:()=>c,stop:()=>{o=true,m.abort(),d!==void 0&&(clearTimeout(d),d=void 0),u!==void 0&&(u(),u=void 0),v();}}}function Br(e,n){return new mt.AbortError(ln(e,"vault tracking was aborted",void 0,n))}function Wk(e,n,t){return new mt.TimeoutError(ln(e,n,void 0,t))}function Jf(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function Qt(e,n){if(n?.aborted===true)throw Br(e,n.reason)}function Hu(e,n){return n===void 0?e:{...e,signal:n}}function $u(e,n){return typeof n.readContract!="function"&&hn(e,"public client is missing readContract"),n.readContract}function Bk(e,n){return typeof n.sendTransaction=="function"?n.sendTransaction:()=>hn(e,"wallet client is missing sendTransaction")}function Uk(e,n){return typeof n.waitForTransactionReceipt=="function"?n.waitForTransactionReceipt:()=>hn(e,"public client is missing waitForTransactionReceipt")}function Bu(e,n,t){t.status==="reverted"&&oy(e,"vault transaction reverted",void 0,n);}function Qf(e,n){return e.toLowerCase()===n.toLowerCase()}function qk(e,n){return (e+n-1n)/n}function Hk(e){return viem.decodeFunctionData({abi:D.DomfiVault,data:e.data})}function $k(e){if(!(e.verb!=="mint"&&e.verb!=="withdraw"&&e.verb!=="mintWithDiscountAndLock"))return Hk(e)}function qu(e,n,t){let i=n.args[t];return typeof i=="bigint"?i:hn(e,`${n.functionName} calldata argument ${t} is invalid`)}function jk(e,n,t){let i=n.args[t];return typeof i=="number"?i:hn(e,`${n.functionName} calldata argument ${t} is invalid`)}async function Ui(e,n,t,i){let r=await $u(e,n)(Hu(t,i));return typeof r=="bigint"?r:hn(e,`${t.functionName} read returned invalid data`)}async function ey(e,n,t,i){let r=await $u(e,n)(Hu(t,i));return Uu(e,r,`${t.functionName} read result`)}async function zk(e,n,t,i){let r=await $u(e,n)(Hu(t,i));return typeof r=="boolean"?r:hn(e,`${t.functionName} read returned invalid data`)}async function dy(e,n,t,i,r){return Ui(e,n,{address:t,abi:D.DomfiVault,functionName:"previewMint",args:[i]},r)}async function Gk(e,n,t,i,r){return Ui(e,n,{address:t,abi:D.DomfiVault,functionName:"previewWithdraw",args:[i]},r)}async function Kk(e,n,t,i,r,a){let o=await dy(e,n,t,i,a),d=await Ui(e,n,{address:t,abi:D.DomfiVault,functionName:"collateralizationP"},a),u=await Ui(e,n,{address:t,abi:D.DomfiVault,functionName:"lockDiscountP",args:[d,r]},a);return qk(o*Xf,Xf+u)}async function Yk(e,n,t,i,r,a){return i?.functionName==="mint"||i?.functionName==="mintWithSlippage"?dy(e,n,t.to,qu(e,i,0),a):i?.functionName==="mintWithDiscountAndLock"?Kk(e,n,t.to,qu(e,i,0),jk(e,i,1),a):he.toRaw(r.requiredAllowance)}async function Xk(e,n,t,i,r,a){return i?.functionName==="withdraw"?Gk(e,n,t.to,qu(e,i,0),a):se.toRaw(r.requiredAllowance)}async function Zk(e,n,t,i,r,a){if(Qt(e,a),r.kind==="asset"){let l=await Yk(e,n,t,i,r,a);await Ui(e,n,{address:r.token,abi:D.IERC20,functionName:"allowance",args:[r.owner,r.spender]},a)<l&&hn(e,"vault asset allowance is below the amount required for this prepared transaction");return}if(r.kind==="share"){let l=await Xk(e,n,t,i,r,a);await Ui(e,n,{address:r.token,abi:D.IERC20,functionName:"allowance",args:[r.owner,r.spender]},a)<l&&hn(e,"vault share allowance is below the amount required for this prepared transaction");return}let[o,d]=await Promise.all([ey(e,n,{address:r.token,abi:D.DomfiLockedDepositNft,functionName:"ownerOf",args:[r.depositId]},a),ey(e,n,{address:r.token,abi:D.DomfiLockedDepositNft,functionName:"getApproved",args:[r.depositId]},a)]);Qf(o,r.spender)||Qf(d,r.spender)||await zk(e,n,{address:r.token,abi:D.DomfiLockedDepositNft,functionName:"isApprovedForAll",args:[o,r.spender]},a)||hn(e,"vault NFT approval is missing for this prepared transaction");}async function Jk(e,n,t){if(Qt(e,t),n.requiredApprovals.status!=="checked"&&(e.publicClient===void 0&&(await n.summary()).warnings.some(o=>o.code==="VAULT_APPROVALS_UNCHECKED"&&o.message.includes("no public client"))&&Zf(e),hn(e,"prepared vault transaction has unchecked approvals","Prepare with a public client and account before sending.")),n.requiredApprovals.approvals.length===0)return;let i=Zf(e),r=$k(n);for(let a of n.requiredApprovals.approvals)await Zk(e,i,n,r,a,t);Qt(e,t);}function ly(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function Qk(e,n,t,i,r){let a=i?.account===void 0?void 0:Uu(e,i.account,`${r} account`);if(t!==void 0&&a!==void 0){if(t.toLowerCase()!==a.toLowerCase())throw new mt.WalletAccountMismatchError(ln(e,`requested account ${a} does not match prepared account ${t}`,"Send with the same account used to prepare the transaction."));return t}let o=a??t??e.account??ly(n);if(o!==void 0)return Uu(e,o,`${r} account`);throw new mt.MissingAccountError(ln(e,`${r} requires an account`,"Pass account to createDomfiClient, pass opts.account, or use a connected wallet client."))}function eA(e,n){let t=n.chain?.id;if(!(t===void 0||t===e.chain.chainId))throw new mt.WalletChainMismatchError(ln(e,`wallet client chain ${t} does not match DomFi chain ${e.chain.chainId}`,"Use a wallet client connected to the same chain as createDomfiClient."))}function nA(e,n,t){let i=ly(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new mt.WalletAccountMismatchError(ln(e,`wallet client account ${i} does not match requested account ${t}`,"Use the connected wallet account or pass the matching account option."))}function tA(e,n){let t=e.account;return typeof t=="object"&&t!==null&&"address"in t&&typeof t.address=="string"&&t.address.toLowerCase()===n.toLowerCase()?t:n}async function iA(e,n,t,i){Qt(e,i?.signal),At(i,e.chain);let r=Uk(e,n),a=cn(e.chain,i?.pollingIntervalMs),o=Cn(n,t,()=>r({hash:t,pollingInterval:a,...i?.confirmations!==void 0?{confirmations:i.confirmations}:{},...i?.timeoutMs!==void 0?{timeout:i.timeoutMs}:{},...i?.signal!==void 0?{signal:i.signal}:{}}),i?.signal);return i?.signal===void 0?o:new Promise((d,u)=>{let l=()=>u(Br(e,i.signal?.reason));i.signal?.addEventListener("abort",l,{once:true}),o.then(d,u).finally(()=>{i.signal?.removeEventListener("abort",l);});})}function rA(e,n,t){let i=En({wait:r=>iA(e,sy(e,"vault transaction receipt"),t,r),mapAbort:r=>Br(e,r),mapTimeout:r=>Wk(e,"vault receipt wait timed out",r)});return {kind:"vault_tx",verb:n,hash:t,waitReceipt:i,outcome:async r=>{let a=await i(r);return Bu(e,t,a),Ri(a,{chain:e.chain,verb:n})},waitIndexed:async r=>{vo(Wu(e,"vault transaction indexing"),r);let a=await i(r);Bu(e,t,a);let o=Ri(a,{chain:e.chain,verb:n});return Nu(Wu(e,"vault transaction indexing"),o,r)},track:async r=>{let a=Wu(e,"vault transaction tracking");vo(a,r),Lk(e,r);let o=Nk(e,n,t,r);try{let d=await i(r);Bu(e,t,d);let u=Ri(d,{chain:e.chain,verb:n});Qt(e,r?.signal);let l=o?.events().find(m=>Wr(m,u));if(l!==void 0&&Wr(l,u))return {receipt:d,outcome:u,indexed:{outcome:u,event:l}};o?.stop();let c=o?.unavailable()===!0?_k(e,"vault transaction tracking"):a,p=await Nu(c,u,r);return {receipt:d,outcome:u,indexed:p}}finally{o?.stop();}}}}async function cy(e,n,t){Qt(e,t?.signal);let i="prepared vault send",r=Mk(e,i),a=Qk(e,r,n.preparedAccount,t,i);eA(e,r),nA(e,r,a);let o=tA(r,a),d=Bk(e,r);try{await Jk(e,n,t?.signal);}catch(u){throw t?.signal?.aborted===true||Jf(u)?Br(e,u):u}try{let u=await d({to:n.to,data:n.data,account:o,...n.value!==void 0?{value:n.value}:{},...t?.gas!==void 0?{gas:t.gas}:{},...t?.nonce!==void 0?{nonce:t.nonce}:{},...t?.maxFeePerGas!==void 0?{maxFeePerGas:t.maxFeePerGas}:{},...t?.signal!==void 0?{signal:t.signal}:{}});return rA(e,n.verb,u)}catch(u){if(t?.signal?.aborted===true||Jf(u))throw Br(e,u);if(mt.isDomfiError(u))throw u;if(mt.isContractRevertLikeError(u))return oy(e,"prepared vault send reverted",u);throw u}}var mA="vault-prepare",fA=1000000000000000000n,py=fA*100n,yA=65535,gA=4294967295,bA=2n**256n-1n,my=10080*60,fy=365*24*60*60;function by(e){let n={sdkVersion:I,sourceTag:mA,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function ei(e,n,t,i){return {message:n,diagnostics:by(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function wn(e,n,t,i){throw new mt.ValidationError(ei(e,n,t,i))}function TA(e,n,t){throw new mt.ContractRevertError(ei(e,n,void 0,t))}function xo(e,n,t){return new mt.AbortError(ei(e,n,void 0,t))}function hA(e,n,t){return new mt.TimeoutError(ei(e,n,void 0,t))}function wA(e){return e instanceof mt.AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function vA(e,n,t){if(n?.aborted===true)throw xo(e,t,n.reason)}function Ty(e,n){let t=by(e);xe(n?.timeoutMs,"timeoutMs",t);let i=Ie({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:t});return i.throwIfAborted(r=>xo(e,"vault prepare read was aborted",r)),i}function Ur(e,n,t,i="vault prepare read was aborted",r="vault prepare read timed out"){return Ty(e,n).runAttempt(t,o=>xo(e,i,o),o=>hA(e,r,o))}function Ro(e,n){return n===void 0?e:{...e,signal:n}}function PA(e){return typeof e=="object"&&e!==null&&"code"in e&&"kind"in e&&"diagnostics"in e}function ko(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new mt.MissingPublicClientError(ei(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function hy(e){let n=e?.account;if(n!==void 0){if(typeof n=="string")return n;if(typeof n=="object"&&"address"in n&&typeof n.address=="string")return n.address}}function wy(e,n){let t=n?.account??e.account??hy(e.walletClient);return t===void 0?void 0:ni(e,t,"vault prepare account")}function xA(e,n,t){let i=t?.account===void 0?void 0:ni(e,t.account,"prepared vault simulation account");if(n!==void 0&&i!==void 0){if(n.toLowerCase()!==i.toLowerCase())throw new mt.WalletAccountMismatchError(ei(e,`requested account ${i} does not match prepared account ${n}`,"Simulate with the same account used to prepare the transaction."));return n}let r=i??n??e.account??hy(e.walletClient);if(r!==void 0)return ni(e,r,"prepared vault simulation account");throw new mt.MissingAccountError(ei(e,"prepared vault simulation requires an account","Pass opts.account or prepare with an account."))}function qr(e,n){let t=e.chain.contracts[n];return t!==void 0?ni(e,t,`${n} contract address`):wn(e,`chain profile is missing ${n} contract address`)}function RA(e){let n=e.chain.collateral.vaultSpender;return n!==void 0?ni(e,n,"collateral.vaultSpender"):wn(e,"chain profile is missing collateral.vaultSpender")}function vy(e){return ni(e,e.chain.collateral.tokenAddress,"collateral.tokenAddress")}function ni(e,n,t){return ve(n,t,(i,r)=>wn(e,i,void 0,r))}function Yu(e,n){return typeof n.readContract!="function"&&wn(e,"public client is missing readContract"),n.readContract}function Xu(e){let n=e.multicall;return typeof n=="function"?n:void 0}function kA(e,n){return typeof n.simulateContract!="function"&&wn(e,"public client is missing simulateContract"),n.simulateContract}function AA(e,n,t){try{return viem.encodeFunctionData({abi:D.DomfiVault,functionName:n,args:t})}catch(i){return wn(e,`vault ${n} parameters are invalid`,void 0,i)}}function IA(e,n){return n===void 0?void 0:ca(n,{chainId:e.chain.chainId})}function OA(e,n){return n===void 0?e:`${e}${n.slice(2)}`}function Po(e){return Object.freeze(e.slice())}function CA(e){return Object.freeze({status:"checked",approvals:Po(e)})}function ju(){return Object.freeze({status:"unchecked"})}function zu(e){return Object.freeze({code:"VAULT_APPROVALS_UNCHECKED",message:e,severity:"warning"})}function Gu(e,n){return e.toLowerCase()===n.toLowerCase()}function Py(e,n){return e>=n?"none":"approve"}function DA(e,n,t){(!Number.isInteger(n)||n<0||n>yA)&&wn(e,`${t} must be a uint16`);}function SA(e,n,t){(!Number.isInteger(n)||n<0||n>gA)&&wn(e,`${t} must be a uint32`);}function xy(e,n){SA(e,n,"lockDurationSeconds"),(n<my||n>fy)&&wn(e,`lockDurationSeconds must be between ${my} and ${fy} seconds`,"DomfiVault requires lock durations from 1 week through 365 days.");}function MA(e,n,t){(n<0n||n>bA)&&wn(e,`${t} must be a uint256`);}function _A(e,n){return (e+n-1n)/n}async function qi(e,n,t,i){let r=await Ur(e,i,a=>Yu(e,n)(Ro(t,a)));return Ku(e,r,t.functionName)}async function VA(e,n,t,i){let r=await Ur(e,i,a=>Yu(e,n)(Ro(t,a)));return FA(e,r,t.functionName)}async function EA(e,n,t,i){return Ur(e,i,r=>Yu(e,n)(Ro(t,r)))}async function Ry(e,n,t,i){let r=Xu(n);return r===void 0?[]:Ur(e,i,a=>r(Ro(t,a)))}function Ku(e,n,t){return typeof n=="bigint"?n:wn(e,`${t} read returned invalid data`)}function yy(e,n,t){return ni(e,n,`${t} read result`)}function FA(e,n,t){return typeof n=="boolean"?n:wn(e,`${t} read returned invalid data`)}async function ky(e,n,t,i,r){return qi(e,n,{address:t,abi:D.DomfiVault,functionName:"previewMint",args:[i]},r)}async function LA(e,n,t,i,r){return qi(e,n,{address:t,abi:D.DomfiVault,functionName:"previewWithdraw",args:[i]},r)}async function NA(e,n,t,i,r,a){let o=[{address:t,abi:D.DomfiVault,functionName:"previewMint",args:[i]},{address:t,abi:D.DomfiVault,functionName:"collateralizationP"}],d=Xu(n),[u,l]=d===void 0?await Promise.all([ky(e,n,t,i,a),qi(e,n,o[1],a)]):await Ry(e,n,{contracts:o,allowFailure:false},a),c=Ku(e,u,"previewMint"),p=Ku(e,l,"collateralizationP"),m=await qi(e,n,{address:t,abi:D.DomfiVault,functionName:"lockDiscountP",args:[p,r]},a);return _A(c*py,py+m)}function WA(e,n,t,i,r){return Object.freeze({kind:"asset",token:vy(e),owner:n,spender:t,currentAllowance:he.fromRaw(r),requiredAllowance:he.fromRaw(i),action:Py(r,i)})}function BA(e,n,t,i,r){return Object.freeze({kind:"share",token:e,owner:n,spender:t,currentAllowance:se.fromRaw(r),requiredAllowance:se.fromRaw(i),action:Py(r,i)})}async function UA(e,n,t,i,r){let a=qr(e,"DomfiLockedDepositNft"),o=[{address:a,abi:D.DomfiLockedDepositNft,functionName:"ownerOf",args:[i]},{address:a,abi:D.DomfiLockedDepositNft,functionName:"getApproved",args:[i]}],d=Xu(n),[u,l]=d===void 0?await Promise.all(o.map(T=>EA(e,n,T,r))):await Ry(e,n,{contracts:o,allowFailure:false},r),c=yy(e,u,"ownerOf"),p=yy(e,l,"getApproved"),m=Gu(c,t),f=Gu(p,t);if(m||f)return Object.freeze({kind:"nft",token:a,owner:c,spender:t,depositId:i,currentApproved:p,operatorApproved:false,action:"none"});let g=await VA(e,n,{address:a,abi:D.DomfiLockedDepositNft,functionName:"isApprovedForAll",args:[c,t]},r);return Object.freeze({kind:"nft",token:a,owner:c,spender:t,depositId:i,currentApproved:p,operatorApproved:g,action:g?"none":"approve"})}async function qA(e,n,t,i){if(i?.skipApprovalCheck===true)return {requiredApprovals:ju(),warnings:[zu("Vault approval checks were skipped because skipApprovalCheck was set.")]};if(e.publicClient===void 0)return {requiredApprovals:ju(),warnings:[zu("Vault approval checks were skipped because no public client is configured.")]};let r=e.publicClient,a=wy(e,i);if(a===void 0)return {requiredApprovals:ju(),warnings:[zu("Vault approval checks were skipped because no account is resolved.")]};let o=[];for(let d of t)if(d.kind==="asset"){let u=(async()=>typeof d.requiredRaw=="function"?await d.requiredRaw():d.requiredRaw)(),l=(async()=>{let f=RA(e),g=await qi(e,r,{address:vy(e),abi:D.IERC20,functionName:"allowance",args:[a,f]},i);return {spender:f,currentRaw:g}})();l.catch(()=>{});let c=await u,{spender:p,currentRaw:m}=await l;o.push(WA(e,a,p,c,m));}else if(d.kind==="share"){if(!Gu(a,d.owner)){let u=(async()=>typeof d.requiredRaw=="function"?await d.requiredRaw():d.requiredRaw)(),l=qi(e,r,{address:n,abi:D.IERC20,functionName:"allowance",args:[d.owner,a]},i);l.catch(()=>{});let c=await u,p=await l;o.push(BA(n,d.owner,a,c,p));}}else o.push(await UA(e,r,a,d.depositId,i));return {requiredApprovals:CA(o),warnings:[]}}function HA(e){return e.status==="checked"?e.approvals.slice():[]}function $A(e){return Object.freeze({kind:e.kind,params:Object.freeze({...e.params})})}async function jA(e,n,t,i,r,a,o,d){vA(e,d?.signal,"prepared vault simulation was aborted");let u=ko(e,"prepared vault simulation"),l=xA(e,o,d),c=n.value;try{let p=await Ur(e,d,m=>kA(e,u)({address:n.to,abi:D.DomfiVault,functionName:t,args:i,account:l,...c!==void 0?{value:c}:{},...r!==void 0?{dataSuffix:r}:{},...m!==void 0?{signal:m}:{}}),"prepared vault simulation was aborted","prepared vault simulation timed out");return {verb:n.verb,request:{to:n.to,data:n.data,account:l,...c!==void 0?{value:c}:{}},...p.result!==void 0?{result:p.result}:{},warnings:Po(a)}}catch(p){if(d?.signal?.aborted===true||wA(p))throw xo(e,"prepared vault simulation was aborted",p);if(PA(p))throw p;if(mt.isContractRevertLikeError(p))return TA(e,"prepared vault simulation reverted",p);throw p}}async function at(e,n,t){Ty(e,t);let i=qr(e,"DomfiVault"),r=wy(e,t),a=AA(e,n.functionName,n.args),o=IA(e,n.referralCodeId),d=OA(a,o),{requiredApprovals:u,warnings:l}=await qA(e,i,n.approvalPlans??[],t),c=$A(n.normalizedParams),p=Object.freeze({normalizedParams:c,approvals:Po(HA(u)),warnings:Po(l)}),m=Object.freeze({verb:n.verb,to:i,data:d,requiredApprovals:u,summary:async()=>p,simulate:async f=>jA(e,m,n.functionName,n.args,o,l,r,f),send:async f=>cy(e,m,f),...r!==void 0?{preparedAccount:r}:{}});return m}async function Zu(e,n,t){let i=he.toRaw(n.assets),r={assets:n.assets,receiver:n.receiver,...n.minShares!==void 0?{minShares:n.minShares}:{},...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}};return at(e,{verb:"deposit",functionName:n.minShares===void 0?"deposit":"depositWithSlippage",args:n.minShares===void 0?[i,n.receiver]:[i,n.receiver,se.toRaw(n.minShares)],normalizedParams:{kind:"deposit",params:r},approvalPlans:[{kind:"asset",requiredRaw:i}],...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}},t)}async function Ju(e,n,t){let i=qr(e,"DomfiVault"),r=se.toRaw(n.shares),a=n.maxAssets===void 0?{shares:n.shares,receiver:n.receiver}:{shares:n.shares,receiver:n.receiver,maxAssets:n.maxAssets};return at(e,{verb:"mint",functionName:n.maxAssets===void 0?"mint":"mintWithSlippage",args:n.maxAssets===void 0?[r,n.receiver]:[r,n.receiver,he.toRaw(n.maxAssets)],normalizedParams:{kind:"mint",params:a},approvalPlans:[{kind:"asset",requiredRaw:async()=>{let o=ko(e,"vault.prepareMint approval preview");return ky(e,o,i,r,t)}}]},t)}async function Qu(e,n,t){let i=se.toRaw(n.shares);return at(e,{verb:"makeWithdrawRequest",functionName:"makeWithdrawRequest",args:[i,n.owner],normalizedParams:{kind:"makeWithdrawRequest",params:{shares:n.shares,owner:n.owner}},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:i}]},t)}async function ed(e,n,t){DA(e,n.unlockEpoch,"unlockEpoch");let i=se.toRaw(n.shares);return at(e,{verb:"cancelWithdrawRequest",functionName:"cancelWithdrawRequest",args:[i,n.owner,n.unlockEpoch],normalizedParams:{kind:"cancelWithdrawRequest",params:{shares:n.shares,owner:n.owner,unlockEpoch:n.unlockEpoch}},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:i}]},t)}async function nd(e,n,t){let i=qr(e,"DomfiVault"),r=he.toRaw(n.assets),a=n.maxShares===void 0?{assets:n.assets,receiver:n.receiver,owner:n.owner}:{assets:n.assets,receiver:n.receiver,owner:n.owner,maxShares:n.maxShares};return at(e,{verb:"withdraw",functionName:n.maxShares===void 0?"withdraw":"withdrawWithSlippage",args:n.maxShares===void 0?[r,n.receiver,n.owner]:[r,n.receiver,n.owner,se.toRaw(n.maxShares)],normalizedParams:{kind:"withdraw",params:a},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:n.maxShares!==void 0?se.toRaw(n.maxShares):async()=>{let o=ko(e,"vault.prepareWithdraw approval preview");return LA(e,o,i,r,t)}}]},t)}async function td(e,n,t){let i=se.toRaw(n.shares),r=n.minAssets===void 0?{shares:n.shares,receiver:n.receiver,owner:n.owner}:{shares:n.shares,receiver:n.receiver,owner:n.owner,minAssets:n.minAssets};return at(e,{verb:"redeem",functionName:n.minAssets===void 0?"redeem":"redeemWithSlippage",args:n.minAssets===void 0?[i,n.receiver,n.owner]:[i,n.receiver,n.owner,he.toRaw(n.minAssets)],normalizedParams:{kind:"redeem",params:r},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:i}]},t)}async function id(e,n,t){xy(e,n.lockDurationSeconds);let i=he.toRaw(n.assets),r={assets:n.assets,lockDurationSeconds:n.lockDurationSeconds,receiver:n.receiver,minShares:n.minShares,...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}};return at(e,{verb:"depositWithDiscountAndLock",functionName:"depositWithDiscountAndLock",args:[i,n.lockDurationSeconds,n.receiver,se.toRaw(n.minShares)],normalizedParams:{kind:"depositWithDiscountAndLock",params:r},approvalPlans:[{kind:"asset",requiredRaw:i}],...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}},t)}async function rd(e,n,t){xy(e,n.lockDurationSeconds);let i=qr(e,"DomfiVault"),r=se.toRaw(n.shares);return at(e,{verb:"mintWithDiscountAndLock",functionName:"mintWithDiscountAndLock",args:[r,n.lockDurationSeconds,n.receiver,he.toRaw(n.maxAssetsDeposited)],normalizedParams:{kind:"mintWithDiscountAndLock",params:{shares:n.shares,lockDurationSeconds:n.lockDurationSeconds,receiver:n.receiver,maxAssetsDeposited:n.maxAssetsDeposited}},approvalPlans:[{kind:"asset",requiredRaw:async()=>{let a=ko(e,"vault.prepareMintWithDiscountAndLock approval preview");return NA(e,a,i,r,n.lockDurationSeconds,t)}}]},t)}async function ad(e,n,t){return MA(e,n.depositId,"depositId"),at(e,{verb:"unlockDeposit",functionName:"unlockDeposit",args:[n.depositId,n.receiver],normalizedParams:{kind:"unlockDeposit",params:{depositId:n.depositId,receiver:n.receiver}},approvalPlans:[{kind:"nft",depositId:n.depositId}]},t)}function ot(e){if(e!==void 0)return {...e.account!==void 0?{account:e.account}:{},...e.gas!==void 0?{gas:e.gas}:{},...e.nonce!==void 0?{nonce:e.nonce}:{},...e.maxFeePerGas!==void 0?{maxFeePerGas:e.maxFeePerGas}:{},...e.signal!==void 0?{signal:e.signal}:{}}}function st(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function Ay(e){return {...Fr({raw:e.raw,chainId:e.chain.chainId,...e.onEvent!==void 0?{onEvent:e.onEvent}:{}}),prepareDeposit:(n,t)=>Zu(e,n,t),prepareMint:(n,t)=>Ju(e,n,t),prepareMakeWithdrawRequest:(n,t)=>Qu(e,n,t),prepareCancelWithdrawRequest:(n,t)=>ed(e,n,t),prepareWithdraw:(n,t)=>nd(e,n,t),prepareRedeem:(n,t)=>td(e,n,t),prepareDepositWithDiscountAndLock:(n,t)=>id(e,n,t),prepareMintWithDiscountAndLock:(n,t)=>rd(e,n,t),prepareUnlockDeposit:(n,t)=>ad(e,n,t),deposit:async(n,t)=>(await Zu(e,n,st(t))).send(ot(t)),mint:async(n,t)=>(await Ju(e,n,st(t))).send(ot(t)),makeWithdrawRequest:async(n,t)=>(await Qu(e,n,st(t))).send(ot(t)),cancelWithdrawRequest:async(n,t)=>(await ed(e,n,st(t))).send(ot(t)),withdraw:async(n,t)=>(await nd(e,n,st(t))).send(ot(t)),redeem:async(n,t)=>(await td(e,n,st(t))).send(ot(t)),depositWithDiscountAndLock:async(n,t)=>(await id(e,n,st(t))).send(ot(t)),mintWithDiscountAndLock:async(n,t)=>(await rd(e,n,st(t))).send(ot(t)),unlockDeposit:async(n,t)=>(await ad(e,n,st(t))).send(ot(t))}}function Qe(e,n,t,i){throw new mt.ValidationError({message:n,diagnostics:{sdkVersion:I,sourceTag:"runtime-guards",chainId:e},...t!==void 0?{cause:t}:{},...i!==void 0?{hint:i}:{}})}function od(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ao(e,n,t,i=false){typeof n=="string"&&(i||n.length>0)||Qe(e,`${t} must be a string`,n);}function Iy(e,n,t,i={}){if(typeof n=="number"&&Number.isInteger(n)){i.positive===true&&n<=0&&Qe(e,`${t} must be a positive integer`,n),i.nonNegative===true&&n<0&&Qe(e,`${t} must be a non-negative integer`,n);return}Qe(e,`${t} must be a finite integer`,n);}function zA(e,n,t){n!==void 0&&(typeof n=="number"&&Number.isFinite(n)&&n>0||Qe(e,`${t} must be a finite positive number`,n));}function GA(e,n,t){n!==void 0&&(typeof n=="number"&&Number.isFinite(n)&&n>=0||Qe(e,`${t} must be a finite non-negative number`,n));}function Hr(e,n,t){kt(n)||Qe(e,`${t} must be a 20-byte hex address`,n);}function KA(e,n){if(Ao(e,n,"chain.apiBaseUrl"),typeof n!="string")return;(n.includes("?")||n.includes("#"))&&Qe(e,"chain.apiBaseUrl must not include query parameters or a fragment",n);let t;try{t=new URL(n);}catch(i){Qe(e,"chain.apiBaseUrl must be a valid absolute http(s) URL",i);}t.protocol!=="http:"&&t.protocol!=="https:"&&Qe(e,"chain.apiBaseUrl must use http: or https:",n);}function YA(e){let n=e;od(n)||Qe(0,"chain profile must be an object",n);let t=n.chainId,i=typeof t=="number"&&Number.isInteger(t)?t:0;Ao(i,n.id,"chain.id"),Iy(i,t,"chain.chainId",{positive:true}),Ao(i,n.name,"chain.name"),n.apiBaseUrl!==void 0&&KA(i,n.apiBaseUrl),Hr(i,n.registryAddress,"chain.registryAddress"),od(n.contracts)||Qe(i,"chain.contracts must be an object",n.contracts);for(let[r,a]of Object.entries(n.contracts))Hr(i,a,`chain.contracts.${r}`);return od(n.collateral)||Qe(i,"chain.collateral must be an object",n.collateral),Ao(i,n.collateral.symbol,"chain.collateral.symbol"),Iy(i,n.collateral.decimals,"chain.collateral.decimals",{nonNegative:true}),Hr(i,n.collateral.tokenAddress,"chain.collateral.tokenAddress"),Hr(i,n.collateral.tradingStorageSpender,"chain.collateral.tradingStorageSpender"),n.collateral.vaultSpender!==void 0&&Hr(i,n.collateral.vaultSpender,"chain.collateral.vaultSpender"),GA(i,n.oracleStaleThresholdMs,"chain.oracleStaleThresholdMs"),zA(i,n.blockTimeMs,"chain.blockTimeMs"),e}function XA(e){return e==="mainnet"||e==="base"||e===8453?$r.mainnet:e==="testnet"||e==="base-sepolia"||e===84532?$r.testnet:typeof e=="object"&&e!==null?YA(e):Qe(typeof e=="number"?e:0,`unsupported DomFi chain: ${String(e)}`,void 0,"Use chain 'mainnet'/'testnet', domfiChains.mainnet/testnet, chain 8453/84532, or pass a full DomfiChainProfile for custom deployments.")}function Oy(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>0))throw new mt.ValidationError({message:`transport.${n} must be a positive integer`,diagnostics:{sdkVersion:I,sourceTag:"runtime-guards",chainId:t}})}function ZA(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>=0))throw new mt.ValidationError({message:`transport.${n} must be a non-negative integer`,diagnostics:{sdkVersion:I,sourceTag:"runtime-guards",chainId:t}})}function JA(e,n){Oy(e?.maxConcurrentRest,"maxConcurrentRest",n),Oy(e?.maxConcurrentRpc,"maxConcurrentRpc",n),ZA(e?.retryBudget,"retryBudget",n);}function QA(e,n){let t={chain:e},i=n.transport?.maxConcurrentRpc===void 0?void 0:Ka(n.transport.maxConcurrentRpc),r=Cm(i);return n.publicClient!==void 0&&(t.publicClient=r(n.publicClient)),n.walletClient!==void 0&&(t.walletClient=r(n.walletClient)),t.wrapWalletClient=r,n.account!==void 0&&(t.account=n.account),t}function eI(e){return Nf(e)}function Cy(){return {sdkCompatibility:async()=>bm()}}function nI(e){let n=XA(e.chain);JA(e.transport,n.chainId);let t=QA(n,e);if(e.api===false){let x=Ms(t);return {chain:n,token:fu(t),delegation:lu(t),trading:x,valuation:Wf(t),system:Cy()}}let i=e.api??{},r=i.baseUrl??n.apiBaseUrl,a=ki(e.onEvent);if(r===void 0)throw new mt.ValidationError({message:"API baseUrl is required for API-enabled DomFi clients",diagnostics:{sdkVersion:I,sourceTag:"read-plane",chainId:n.chainId},hint:"Pass api.baseUrl or use a DomfiChainProfile with apiBaseUrl."});let o=fm({...i,baseUrl:r,chainId:n.chainId,...e.transport?.maxConcurrentRest!==void 0?{maxConcurrentRequests:e.transport.maxConcurrentRest}:{},...e.transport?.retryBudget!==void 0?{retryBudget:e.transport.retryBudget}:{},...a!==void 0?{onEvent:a}:{}}),d=Yp(o),u=$p({raw:d,chainId:n.chainId,...a!==void 0?{onEvent:a}:{}}),l=Mm({raw:d,chainId:n.chainId}),c={...Cy(),apiStatus:x=>u.status.get(x)},p={...t,api:u},m=fu(p),f=lu(p),g=Ms(p),T=Ay({...p,raw:d,...a!==void 0?{onEvent:a}:{}}),v=up(p,g,m,T);return {chain:n,token:m,delegation:f,trading:g,valuation:eI(p),system:c,api:u,raw:d,actions:v,vault:T,referrals:l}}
2
+ Object.defineProperty(exports,"AbortError",{enumerable:true,get:function(){return mt.AbortError}});Object.defineProperty(exports,"ApiError",{enumerable:true,get:function(){return mt.ApiError}});Object.defineProperty(exports,"ContractRevertError",{enumerable:true,get:function(){return mt.ContractRevertError}});Object.defineProperty(exports,"IdentityMismatchError",{enumerable:true,get:function(){return mt.IdentityMismatchError}});Object.defineProperty(exports,"MissingAccountError",{enumerable:true,get:function(){return mt.MissingAccountError}});Object.defineProperty(exports,"MissingApiClientError",{enumerable:true,get:function(){return mt.MissingApiClientError}});Object.defineProperty(exports,"MissingPublicClientError",{enumerable:true,get:function(){return mt.MissingPublicClientError}});Object.defineProperty(exports,"MissingWalletClientError",{enumerable:true,get:function(){return mt.MissingWalletClientError}});Object.defineProperty(exports,"OracleFeeCapExceededError",{enumerable:true,get:function(){return mt.OracleFeeCapExceededError}});Object.defineProperty(exports,"ProtocolCompatibilityMismatchError",{enumerable:true,get:function(){return mt.ProtocolCompatibilityMismatchError}});Object.defineProperty(exports,"ReadModelNotReadyError",{enumerable:true,get:function(){return mt.ReadModelNotReadyError}});Object.defineProperty(exports,"TimeoutError",{enumerable:true,get:function(){return mt.TimeoutError}});Object.defineProperty(exports,"TransportError",{enumerable:true,get:function(){return mt.TransportError}});Object.defineProperty(exports,"ValidationError",{enumerable:true,get:function(){return mt.ValidationError}});Object.defineProperty(exports,"WalletAccountMismatchError",{enumerable:true,get:function(){return mt.WalletAccountMismatchError}});Object.defineProperty(exports,"WalletChainMismatchError",{enumerable:true,get:function(){return mt.WalletChainMismatchError}});Object.defineProperty(exports,"WalletDisconnectedError",{enumerable:true,get:function(){return mt.WalletDisconnectedError}});Object.defineProperty(exports,"isDomfiError",{enumerable:true,get:function(){return mt.isDomfiError}});Object.defineProperty(exports,"ClosePercent",{enumerable:true,get:function(){return units.ClosePercent}});Object.defineProperty(exports,"Collateral",{enumerable:true,get:function(){return units.Collateral}});Object.defineProperty(exports,"FeePercent",{enumerable:true,get:function(){return units.FeePercent}});Object.defineProperty(exports,"Leverage",{enumerable:true,get:function(){return units.Leverage}});Object.defineProperty(exports,"Notional",{enumerable:true,get:function(){return units.Notional}});Object.defineProperty(exports,"OrderId",{enumerable:true,get:function(){return units.OrderId}});Object.defineProperty(exports,"PairIndex",{enumerable:true,get:function(){return units.PairIndex}});Object.defineProperty(exports,"Precision2Percent",{enumerable:true,get:function(){return units.Precision2Percent}});Object.defineProperty(exports,"Price",{enumerable:true,get:function(){return units.Price}});Object.defineProperty(exports,"Ratio",{enumerable:true,get:function(){return units.Ratio}});Object.defineProperty(exports,"ScaleP2",{enumerable:true,get:function(){return units.ScaleP2}});Object.defineProperty(exports,"SignedCollateral",{enumerable:true,get:function(){return units.SignedCollateral}});Object.defineProperty(exports,"SignedP18",{enumerable:true,get:function(){return units.SignedP18}});Object.defineProperty(exports,"SignedP6",{enumerable:true,get:function(){return units.SignedP6}});Object.defineProperty(exports,"SlippagePercent",{enumerable:true,get:function(){return units.SlippagePercent}});Object.defineProperty(exports,"TradeId",{enumerable:true,get:function(){return units.TradeId}});Object.defineProperty(exports,"TradeIndex",{enumerable:true,get:function(){return units.TradeIndex}});Object.defineProperty(exports,"TriggerOrderIndex",{enumerable:true,get:function(){return units.TriggerOrderIndex}});Object.defineProperty(exports,"UnixMs",{enumerable:true,get:function(){return units.UnixMs}});Object.defineProperty(exports,"UnsignedP18",{enumerable:true,get:function(){return units.UnsignedP18}});Object.defineProperty(exports,"UsdP6",{enumerable:true,get:function(){return units.UsdP6}});Object.defineProperty(exports,"VaultAsset",{enumerable:true,get:function(){return units.VaultAsset}});Object.defineProperty(exports,"VaultShare",{enumerable:true,get:function(){return units.VaultShare}});Object.defineProperty(exports,"VaultSharePrice",{enumerable:true,get:function(){return units.VaultSharePrice}});Object.defineProperty(exports,"WholePercent",{enumerable:true,get:function(){return units.WholePercent}});Object.defineProperty(exports,"parseDecimalString",{enumerable:true,get:function(){return units.parseDecimalString}});exports.baseDomfiChain=Hi;exports.baseSepoliaDomfiChain=$i;exports.createDomfiClient=nI;exports.domfiChains=$r;