@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.js ADDED
@@ -0,0 +1 @@
1
+ import {a as a$3}from'./chunk-2VSPOLVO.js';import'./chunk-5YZVCHRU.js';import {a as a$2,m,g as g$3,f as f$2,b as b$1,c as c$5,o,q,r,p,n,e as e$2,d as d$5}from'./chunk-XHQVWI2J.js';import {a as a$5,d as d$1,c as c$6,e as e$3}from'./chunk-BMYMNNJK.js';import {a as a$8}from'./chunk-CLOFJTBP.js';import {j,f,g as g$1,h,i,a as a$6,c as c$7,d as d$4,b as b$3,y,e as e$4,x as x$2,r as r$2,w as w$1,q as q$1,v,p as p$2,o as o$3,n as n$3,m as m$3,s as s$1,t as t$1,u as u$1}from'./chunk-CMREWGOI.js';import {d,c as c$2,b,x as x$1,a as a$7,g as g$4,y as y$1,f as f$4,k as k$3,l as l$2,w as w$2}from'./chunk-77XMXAXE.js';import {k,g as g$2,a as a$4,c as c$4,i as i$2,e as e$1,d as d$3,f as f$3,b as b$4}from'./chunk-LDE3JHVE.js';import {a as a$1}from'./chunk-D5VE2O4F.js';import'./chunk-7OVWNPZQ.js';import {k as k$2,l as l$1,o as o$1,m as m$2,n as n$2}from'./chunk-SZE5DE54.js';import {g,e,f as f$1,c as c$3,b as b$2,x,w,i as i$1,k as k$1,l,j as j$1,r as r$1,d as d$2,h as h$1,a as a$9,z,t,p as p$1,m as m$1,n as n$1,o as o$2,u,s}from'./chunk-C5Y2WM7C.js';import {c}from'./chunk-C64LJM7D.js';export{a as baseDomfiChain,b as baseSepoliaDomfiChain,c as domfiChains}from'./chunk-C64LJM7D.js';import {c as c$1}from'./chunk-N4Q67DTE.js';import {a}from'./chunk-YU5DN3PI.js';import {ValidationError,isContractRevertLikeError,AbortError,TimeoutError,MissingWalletClientError,WalletAccountMismatchError,WalletChainMismatchError,ContractRevertError,ApiError,TransportError,MissingPublicClientError,isDomfiError,MissingAccountError,MissingApiClientError,ReadModelNotReadyError}from'@domfi/sdk/errors';export{AbortError,ApiError,ContractRevertError,IdentityMismatchError,MissingAccountError,MissingApiClientError,MissingPublicClientError,MissingWalletClientError,OracleFeeCapExceededError,ProtocolCompatibilityMismatchError,ReadModelNotReadyError,TimeoutError,TransportError,ValidationError,WalletAccountMismatchError,WalletChainMismatchError,WalletDisconnectedError,isDomfiError}from'@domfi/sdk/errors';import {encodeFunctionData,decodeFunctionData,decodeEventLog,toEventSelector}from'viem';export{ClosePercent,Collateral,FeePercent,Leverage,Notional,OrderId,PairIndex,Precision2Percent,Price,Ratio,ScaleP2,SignedCollateral,SignedP18,SignedP6,SlippagePercent,TradeId,TradeIndex,TriggerOrderIndex,UnixMs,UnsignedP18,UsdP6,VaultAsset,VaultShare,VaultSharePrice,WholePercent,parseDecimalString}from'@domfi/sdk/units';function Ce(e){return e.catch(()=>{}),e}function $c(e){let n=Promise.reject(e);return {approval:n,hash:n,waitReceipt:()=>n,outcome:()=>n,watch:()=>Uc(e)}}function Uc(e){return {[Symbol.asyncIterator]:()=>({next:async()=>{throw e}})}}function jc(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function fe(e){let n=(()=>{try{return e.start()}catch(r){return $c(r)}})(),t=Ce(n.approval),i=Ce(n.hash);return Object.freeze({action:e.action,approval:()=>t,txHash:()=>i,waitReceipt:r=>Ce(Promise.resolve().then(()=>n.waitReceipt(r))),outcome:r=>Ce(Promise.resolve().then(()=>n.outcome(r))),watch:r=>jc(()=>n.watch(r))})}var Gc=g.fromRaw(2n**256n-1n),Kc="actions-pipeline";function Jc(e,n){let t=n?.approval??x$2.RequireExisting;if(t===x$2.RequireExisting||t===x$2.AutoExact||t===x$2.UnsafeMaxUint256){if(n?.delegation!==void 0&&t!==x$2.RequireExisting)throw new ValidationError({message:"delegated actions require pre-existing trader allowance",diagnostics:e$4(e),hint:"Approve from the trader wallet first, or omit delegation and use direct mode."});return t}throw new ValidationError({message:"invalid action approval policy",diagnostics:e$4(e),hint:"Use ActionApprovalPolicy.RequireExisting, ActionApprovalPolicy.AutoExact, or ActionApprovalPolicy.UnsafeMaxUint256."})}function Yc(e,n){let t=n?.simulation??y.Required;if(t===y.Required||t===y.Skip)return t;throw new ValidationError({message:"invalid action simulation policy",diagnostics:e$4(e),hint:"Use ActionSimulationPolicy.Required or ActionSimulationPolicy.Skip."})}function Qc(e,n){return {approval:Jc(e,n),simulation:Yc(e,n)}}async function Xc(e){return e.requiredApprovals.status==="checked"?e.requiredApprovals.approvals:(await e.summary()).approvals}function Zc(e){return e.status==="violation"&&e.severity==="error"}function eu(e){return e.checks?.find(Zc)}async function nu(e,n){let t=eu(await n.summary());if(t!==void 0)throw new ValidationError({message:t.message,diagnostics:e$4(e),hint:`Preflight check ${t.code} failed before action submission.`})}function tu(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function iu(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.maxOracleFeeWei!==void 0?{maxOracleFeeWei:e.maxOracleFeeWei}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function ru(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.maxOracleFeeWei!==void 0?{maxOracleFeeWei:e.maxOracleFeeWei}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}var au=["account","expectedTradeId","verb","pairIndex","initiatedTradeId","terminalTradeId"];function ou(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function va(e,n){if(!(n===void 0||typeof n!="object")){for(let t of au)if(ou(n,t))throw new ValidationError({message:`action outcome tracking options cannot include ${t}`,diagnostics:e$4(e),hint:"High-level actions own receipt recovery and trade identity fields internally."})}}function su(e,n){return n?.account??e.account??f$4(e.walletClient)}async function cu(e,n,t,i,r){let a=(await Xc(i)).filter(f=>f.action==="approve");if(a.length>1)throw new ValidationError({message:"multiple collateral approvals are not supported yet",diagnostics:e$4(e),hint:"Send approvals separately until action approval evidence supports multiple approval transactions."});let o=a[0];if(o===void 0)return;if(r===x$2.RequireExisting)throw new ValidationError({message:"required collateral allowance is missing",diagnostics:e$4(e),hint:"Use ActionApprovalPolicy.AutoExact or ActionApprovalPolicy.UnsafeMaxUint256, or approve collateral before sending."});let c=r===x$2.UnsafeMaxUint256?Gc:o.requiredAllowance,s=su(e,t);if(s!==void 0&&o.owner.toLowerCase()!==s.toLowerCase())throw new ValidationError({message:"approval sender does not own the required allowance",diagnostics:e$4(e),hint:"Use the allowance owner account for auto-approval, or require existing allowance."});let u=await n.approve(o.spender,c,tu(t)),d=await u.waitReceipt(t?.signal===void 0?void 0:{signal:t.signal});if(d.status==="reverted")throw Pa(e,"approval",u.hash);return {policy:r,token:o.token,spender:o.spender,requiredAllowance:o.requiredAllowance,approvedAllowance:c,hash:u.hash,receipt:d}}function Pa(e,n,t){return new ContractRevertError({message:`${n} transaction reverted`,diagnostics:e$4(e),hash:t})}function Ni(e,n,t,i){if(i.status==="reverted")throw Pa(e,n,t)}function ka(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function uu(){return {sdkVersion:a$1,sourceTag:Kc,chainId:0}}function du(e){return e==="closePosition"||e==="removeCollateral"}function lu(e){let n="positionRef"in e?e.positionRef?.():void 0;if(du(e.action)&&n===void 0)throw new ValidationError({message:`${e.action} outcome requires a positionRef`,diagnostics:uu()});return n}function Aa(e,n,t,i){let r=lu(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 Ht(e){return async(n,t,i)=>{let r="watch"in n?await l$2(n,e.trackOptions?.(i)??i):void 0;return Aa(e,n.hash,t,r)}}function $t(e){return (n,t,i)=>ka(async function*(){if(!("watch"in t))throw new ValidationError({message:`${e.action} watch requires an async order handle`,diagnostics:e$4(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},Ni(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"&&!k$3(o.result)){yield {...o,action:e.action};continue}let c="result"in o?o.result:void 0;if(!(c===void 0||!k$3(c))){if(r===void 0)throw new ValidationError({message:`${e.action} watch reached terminal state before mined receipt`,diagnostics:e$4(n)});yield {phase:"terminal",action:e.action,hash:o.hash,outcome:Aa(e,o.hash,r,c)};return}}throw new ValidationError({message:`${e.action} watch ended before terminal state`,diagnostics:e$4(n)})})}function Fi(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 Li(e,n){return async(t,i,r)=>{if(!("verifiedRef"in t))throw new ValidationError({message:`${n} did not return a trigger placement handle`,diagnostics:e$4(e)});return {action:n,status:"placed",hash:t.hash,receipt:i,ref:await t.verifiedRef(Fi(r))}}}function zn(e,n){return async(t,i)=>({action:e,status:"confirmed",hash:t.hash,receipt:i,eventEvidence:n(i)})}function Ge(e){let n=Promise.resolve().then(async()=>{g$4(e.deps,e.opts,`actions.${e.action}`);let o=Qc(e.deps,e.opts),c=await e.prepare();return await nu(e.deps,c),{policies:o,prepared:c}}),t=Ce(n.then(({policies:o,prepared:c})=>cu(e.deps,e.token,e.opts,c,o.approval))),i=Ce(n.then(async({policies:o,prepared:c})=>(await t,o.simulation===y.Required&&await c.simulate(iu(e.opts)),c.send(ru(e.opts))))),r=o=>Ce(Promise.resolve().then(async()=>(await i).waitReceipt(o))),a=Ce(i.then(o=>o.hash));return {approval:t,hash:a,waitReceipt:o=>r(o),outcome:async o=>{va(e.deps,o);let c=await i,s=await r(Fi(o));return Ni(e.deps,e.action,c.hash,s),e.outcomeFromHandle(c,s,o)},watch:o=>ka(async function*(){va(e.deps,o);let c=await i;if(e.watchFromHandle!==void 0){yield*e.watchFromHandle(e.deps,c,o);return}yield {phase:"submitted",action:e.action,hash:c.hash};let s=await r(Fi(o));yield {phase:"mined",action:e.action,hash:c.hash,receipt:s},Ni(e.deps,e.action,c.hash,s);let u=await e.outcomeFromHandle(c,s,o);yield {phase:"terminal",action:e.action,hash:c.hash,outcome:u};})}}var Ca="vault-receipts",mu={deposit:"Deposit",mint:"Deposit",makeWithdrawRequest:"WithdrawRequested",cancelWithdrawRequest:"WithdrawCanceled",withdraw:"Withdraw",redeem:"Withdraw",depositWithDiscountAndLock:"DepositLocked",mintWithDiscountAndLock:"DepositLocked",unlockDeposit:"DepositUnlocked"};function gu(e){let n={sdkVersion:a$1,sourceTag:Ca,chainId:e.chainId};return e.registryAddress!==void 0&&(n.registryAddress=e.registryAddress),n}function Be(e,n,t){throw new ValidationError({message:n,diagnostics:gu(e),...t!==void 0?{cause:t}:{}})}function Gn(e){let n=a.DomfiVault.find(t=>{let i=t;return i.type==="event"&&i.name===e});if(n===void 0)throw new ValidationError({message:`DomfiVault ABI is missing ${e} event`,diagnostics:{sdkVersion:a$1,sourceTag:Ca,chainId:0}});return n}var hu={Deposit:Gn("Deposit"),WithdrawRequested:Gn("WithdrawRequested"),WithdrawCanceled:Gn("WithdrawCanceled"),Withdraw:Gn("Withdraw"),DepositLocked:Gn("DepositLocked"),DepositUnlocked:Gn("DepositUnlocked")};function wu(e){return toEventSelector(e).toLowerCase()}function bu(e){return e.topics[0]?.toLowerCase()}function yu(e){return a$4(e)?e:void 0}function Ru(e,n){return e.toLowerCase()===n.toLowerCase()}function vu(e,n,t){if(bu(e)!==wu(n))return false;let i=yu(e.address);return i!==void 0&&Ru(i,t)}function Pu(e,n,t){let i=d$3(e.data,"receipt log data",(r,a)=>Be(t,r,a));try{return decodeEventLog({abi:[n],data:i,topics:e.topics,strict:!0}).args}catch(r){return Be(t,`receipt log for ${n.name} could not be decoded`,r)}}function ku(e,n,t,i){for(let r of e.logs)if(vu(r,n,i))return {log:r,args:Pu(r,n,t)}}function B(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Au(e){if(typeof e=="bigint")return e;if(typeof e=="number"&&Number.isInteger(e)&&e>=0)return BigInt(e)}function xu(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 Ie(e,n,t){return c$4(e,`vault receipt ${n}`,(i,r)=>Be(t,i,r))}function Ke(e,n,t){let i=Au(e);return i!==void 0?i:Be(t,`vault receipt log is missing ${n}`)}function Kn(e,n,t){let i=xu(e);return i!==void 0?i:Be(t,`vault receipt log is missing ${n}`)}function Tu(e,n,t){let i=e.transactionHash??n.transactionHash;return e$1(i,"vault receipt transaction hash",(r,a)=>Be(t,r,a))}function Cu(e,n,t){let i=n.blockNumber??e.blockNumber,r=n.transactionIndex??e.transactionIndex,a=n.logIndex;return typeof i!="bigint"?Be(t,"vault receipt log is missing blockNumber"):typeof r!="number"?Be(t,"vault receipt log is missing txIndex"):typeof a!="number"?Be(t,"vault receipt log is missing logIndex"):{blockNumber:i,txIndex:r,logIndex:a}}function Du(e,n,t,i){return {verb:i,txHash:Tu(e,n,t),...Cu(e,n,t)}}function xa(e,n){return {owner:Ie(B(e,"owner",0),"locked deposit owner",n),shares:x.fromRaw(Ke(B(e,"shares",1),"locked deposit shares",n)),assetsDeposited:w.fromRaw(Ke(B(e,"assetsDeposited",2),"locked deposit assetsDeposited",n)),assetsDiscount:w.fromRaw(Ke(B(e,"assetsDiscount",3),"locked deposit assetsDiscount",n)),atTimestamp:Kn(B(e,"atTimestamp",4),"locked deposit atTimestamp",n),lockDurationSeconds:Kn(B(e,"lockDuration",5),"locked deposit lockDuration",n)}}function Jn(e,n){let t=n.chain.contracts.DomfiVault;if(t===void 0)return Be(n.chain,"chain profile is missing DomfiVault contract address");let i=c$4(t,"DomfiVault contract address",d=>Be(n.chain,d)),r=mu[n.verb],a=hu[r],o=ku(e,a,n.chain,i);if(o===void 0)return Be(n.chain,`receipt is missing expected ${r} vault event`);let{log:c,args:s}=o,u=Du(e,c,n.chain,n.verb);switch(r){case "Deposit":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),owner:Ie(B(s,"owner",1),"owner",n.chain),assets:w.fromRaw(Ke(B(s,"assets",2),"assets",n.chain)),shares:x.fromRaw(Ke(B(s,"shares",3),"shares",n.chain))};case "WithdrawRequested":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),owner:Ie(B(s,"owner",1),"owner",n.chain),shares:x.fromRaw(Ke(B(s,"shares",2),"shares",n.chain)),currEpoch:Kn(B(s,"currEpoch",3),"currEpoch",n.chain),unlockEpoch:Kn(B(s,"unlockEpoch",4),"unlockEpoch",n.chain)};case "WithdrawCanceled":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),owner:Ie(B(s,"owner",1),"owner",n.chain),shares:x.fromRaw(Ke(B(s,"shares",2),"shares",n.chain)),currEpoch:Kn(B(s,"currEpoch",3),"currEpoch",n.chain),unlockEpoch:Kn(B(s,"unlockEpoch",4),"unlockEpoch",n.chain)};case "Withdraw":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),receiver:Ie(B(s,"receiver",1),"receiver",n.chain),owner:Ie(B(s,"owner",2),"owner",n.chain),assets:w.fromRaw(Ke(B(s,"assets",3),"assets",n.chain)),shares:x.fromRaw(Ke(B(s,"shares",4),"shares",n.chain))};case "DepositLocked":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),owner:Ie(B(s,"owner",1),"owner",n.chain),depositId:Ke(B(s,"depositId",2),"depositId",n.chain),lockedDeposit:xa(B(s,"d",3),n.chain)};case "DepositUnlocked":return {eventName:r,...u,sender:Ie(B(s,"sender",0),"sender",n.chain),receiver:Ie(B(s,"receiver",1),"receiver",n.chain),owner:Ie(B(s,"owner",2),"owner",n.chain),depositId:Ke(B(s,"depositId",3),"depositId",n.chain),lockedDeposit:xa(B(s,"d",4),n.chain)}}}var Ou={vaultDeposit:"deposit",vaultMint:"mint",vaultMakeWithdrawRequest:"makeWithdrawRequest",vaultCancelWithdrawRequest:"cancelWithdrawRequest",vaultWithdraw:"withdraw",vaultRedeem:"redeem",vaultDepositWithDiscountAndLock:"depositWithDiscountAndLock",vaultMintWithDiscountAndLock:"mintWithDiscountAndLock",vaultUnlockDeposit:"unlockDeposit"},Mu={vaultDeposit:"asset",vaultMint:"asset",vaultMakeWithdrawRequest:"share",vaultCancelWithdrawRequest:"share",vaultWithdraw:"share",vaultRedeem:"share",vaultDepositWithDiscountAndLock:"asset",vaultMintWithDiscountAndLock:"asset"},Da=2n**256n-1n,_u=["maxOracleFeeWei","gas","nonce","maxFeePerGas","maxPriorityFeePerGas","skipApprovalCheck","delegation","trader"],Eu=["account","expectedTradeId","verb","pairIndex","initiatedTradeId","terminalTradeId"],Nu=6e4;function La(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ge(e,n,t,i){return new ValidationError({message:n,diagnostics:e$4(e),...t!==void 0?{hint:t}:{},...{}})}function Fu(e,n,t){return new TimeoutError({message:n,diagnostics:e$4(e),...{}})}function Wa(e,n,t){return new ContractRevertError({message:`${n} transaction reverted`,diagnostics:e$4(e),hash:t})}function Lu(e,n,t){return new ContractRevertError({message:`${n} transaction reverted`,diagnostics:e$4(e),cause:t})}function ft(e,n){return new AbortError({message:"vault action was aborted",diagnostics:e$4(e),...n!==void 0?{cause:n}:{}})}function qa(e){return e instanceof AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function jt(e,n){if(n?.aborted===true)throw ft(e,n.reason)}function Wu(e,n,t){return new Promise((i,r)=>{let a=()=>{clearTimeout(o),t?.removeEventListener("abort",a),r(ft(e,t?.reason));},o=setTimeout(()=>{t?.removeEventListener("abort",a),i();},n);if(t?.aborted===true){a();return}t?.addEventListener("abort",a,{once:true});})}function qu(e){let n=e.getTransactionCount;if(typeof n=="function")return {getTransactionCount:n.bind(e)}}async function Va(e,n,t,i,r,a){let o=qu(n);if(o===void 0)return;let c=Date.now()+Nu,s=b(e.chain,void 0),u=0,d=0;for(;;){if(jt(e,a),[u,d]=await Promise.all([o.getTransactionCount({address:t,blockTag:"latest"}),o.getTransactionCount({address:t,blockTag:"pending"})]),u>=r&&d===u)return u;if(Date.now()>=c)throw Fu(e,`${i} nonce did not become idle; latest ${u}, pending ${d}, minimum ${r}.`);await Wu(e,s,a);}}function Ut(e,n){return e.toLowerCase()===n.toLowerCase()}function Bu(e,n){if(n==="vaultUnlockDeposit")throw ge(e,"vaultUnlockDeposit cannot require a fungible approval","Unlocking a locked deposit requires existing NFT ownership or approval, not ERC20 allowance approval.")}function Hu(e,n,t){if(!Ut(t.spender,n))throw ge(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 ge(e,"vaultUnlockDeposit requires existing NFT authorization","The locked deposit NFT owner must approve the action account or call unlock from the owner account.");if(!(Ut(t.owner,n)||Ut(t.currentApproved,n))&&!t.operatorApproved)throw ge(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 zt(e){return Ou[e]}function Ba(e,n,t){if(!(n===void 0||typeof n=="object"&&n!==null))throw ge(e,`${t} must be an options object`)}function $u(e,n){if(Ba(e,n,"vault action options"),n!==void 0){for(let t of _u)if(La(n,t))throw ge(e,`vault action options cannot include ${t}`,"High-level vault actions own approval checks and transaction send controls internally.")}}function Ia(e,n){if(Ba(e,n,"vault action tracking options"),n!==void 0){for(let t of Eu)if(La(n,t))throw ge(e,`action outcome tracking options cannot include ${t}`,"High-level actions own receipt recovery and transaction identity fields internally.")}}function Uu(e,n){let t=n?.approval??x$2.RequireExisting;if(t===x$2.RequireExisting||t===x$2.AutoExact||t===x$2.UnsafeMaxUint256)return t;throw ge(e,"invalid vault action approval policy","Use ActionApprovalPolicy.RequireExisting, ActionApprovalPolicy.AutoExact, or ActionApprovalPolicy.UnsafeMaxUint256.")}function ju(e,n){let t=n?.simulation??y.Required;if(t===y.Required||t===y.Skip)return t;throw ge(e,"invalid vault action simulation policy","Use ActionSimulationPolicy.Required or ActionSimulationPolicy.Skip.")}function zu(e,n){return {approval:Uu(e,n),simulation:ju(e,n)}}function Gu(e,n){return {account:e,...n?.signal!==void 0?{signal:n.signal}:{}}}function Sa(e,n){return {account:e,...n?.signal!==void 0?{signal:n.signal}:{}}}function Oa(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 Ku(e,n,t){let i=zt(n);if(t.verb!==i)throw ge(e,`${n} prepared a ${t.verb} vault transaction instead of ${i}`)}function Ju(e,n,t){let i=zt(n);if(t.verb!==i)throw ge(e,`${n} sent a ${t.verb} vault transaction handle instead of ${i}`)}function Yu(e,n){if(n.requiredApprovals.status!=="checked")throw e.publicClient===void 0&&f(e,"high-level vault action approval checks"),ge(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 Qu(e,n,t,i){let r=[],a=false;for(let o of i.requiredApprovals.approvals){if(o.kind==="nft"){if(n!=="vaultUnlockDeposit")throw ge(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,Hu(e,t,o);continue}if(n==="vaultUnlockDeposit")throw ge(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 ge(e,"vaultUnlockDeposit did not include NFT authorization evidence","Prepare unlockDeposit with approval checks enabled before using high-level actions.")}if(r.length>1)throw ge(e,"multiple vault approval transactions are not supported yet","Send approvals separately until action approval evidence supports multiple approval transactions.");return r[0]}function Xu(e,n,t){if(!Ut(t.owner,n))throw ge(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 Zu(e,n,t){let i=Mu[n];if(t.kind!==i)throw ge(e,`${n} prepared a ${t.kind} approval need instead of ${i}`)}function ed(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 nd(e,n,t){return {hash:n,pollingInterval:b(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 td(e,n,t){let i=n.waitForTransactionReceipt;return d({wait:async r=>{jt(e,r?.signal);try{return await c$2(n,t,()=>i(nd(e,t,r)),r?.signal)}catch(a){throw r?.signal?.aborted===true||qa(a)?ft(e,a):a}},mapAbort:r=>ft(e,r)})}async function id(e,n,t,i$1,r){jt(e,t?.signal);let a$1=f(e,"high-level vault action approval"),o=g$1(e,"high-level vault action approval");i(e,n);let c=ed(o,n),s=i$1.kind==="asset"?r===x$2.UnsafeMaxUint256?w.fromRaw(Da):i$1.requiredAllowance:r===x$2.UnsafeMaxUint256?x.fromRaw(Da):i$1.requiredAllowance,u=i$1.kind==="asset"?w.toRaw(s):x.toRaw(s),d=await Va(e,a$1,n,"before high-level vault action approval",0,t?.signal),f$1;try{f$1=await o.writeContract({address:i$1.token,abi:a.IERC20,functionName:"approve",args:[i$1.spender,u],account:c,chain:null,...t?.signal!==void 0?{signal:t.signal}:{}});}catch(b){throw t?.signal?.aborted===true||qa(b)?ft(e,b):isContractRevertLikeError(b)?Lu(e,"approval",b):b}let g=await td(e,a$1,f$1)(t?.signal===void 0?void 0:{signal:t.signal});if(g.status==="reverted")throw Wa(e,"approval",f$1);return d!==void 0&&await Va(e,a$1,n,"after high-level vault action approval",d+1,t?.signal),i$1.kind==="asset"?{kind:"asset",policy:r,token:i$1.token,owner:i$1.owner,spender:i$1.spender,requiredAllowance:i$1.requiredAllowance,approvedAllowance:s,hash:f$1,receipt:g}:{kind:"share",policy:r,token:i$1.token,owner:i$1.owner,spender:i$1.spender,requiredAllowance:i$1.requiredAllowance,approvedAllowance:s,hash:f$1,receipt:g}}async function rd(e,n){let t=Qu(e.deps,e.action,n.account,n.prepared);if(t!==void 0){if(n.policies.approval===x$2.RequireExisting)throw ge(e.deps,"required vault allowance is missing","Use ActionApprovalPolicy.AutoExact or ActionApprovalPolicy.UnsafeMaxUint256, or approve the vault token before sending.");return Bu(e.deps,e.action),Zu(e.deps,e.action,t),Xu(e.deps,n.account,t),await id(e.deps,n.account,e.opts,t,n.policies.approval)}}function Ma(e,n,t,i){if(i.status==="reverted")throw Wa(e,n,t)}function _a(e,n,t,i){let r=zt(e),a=Jn(t,{chain:i.chain,verb:r});return {action:e,status:"confirmed",hash:n,receipt:t,vault:{verb:r,outcome:a}}}function ad(e){let n=false;return {async*[Symbol.asyncIterator](){if(n)throw new Error("action lifecycle watch is single-use");n=true,yield*e();}}}function Ea(e){let n,t=()=>(n===void 0&&(n=Ce(Promise.resolve().then(e))),n);return {then:(o,c)=>t().then(o,c),catch:o=>t().catch(o),finally:o=>t().finally(o),[Symbol.toStringTag]:"Promise"}}function an(e){let n,t,i,r=()=>(n===void 0&&(n=Ce(Promise.resolve().then(async()=>{$u(e.deps,e.opts);let s=zu(e.deps,e.opts);jt(e.deps,e.opts?.signal);let u=h(e.deps,e.opts?.account,e.action),d=await e.prepare(Gu(u,e.opts));return Ku(e.deps,e.action,d),Yu(e.deps,d),{account:u,policies:s,prepared:d,verb:zt(e.action)}}))),n),a=()=>(t===void 0&&(t=Ce(r().then(s=>rd(e,s)))),t),o=()=>(i===void 0&&(i=Ce(r().then(async s=>{await a(),s.policies.simulation===y.Required&&await s.prepared.simulate(Sa(s.account,e.opts));let u=await s.prepared.send(Sa(s.account,e.opts));return Ju(e.deps,e.action,u),u}))),i),c=s=>Ce(Promise.resolve().then(async()=>(await o()).waitReceipt(s)));return {approval:Ea(()=>a()),hash:Ea(async()=>(await o()).hash),waitReceipt:s=>c(s),outcome:async s=>{Ia(e.deps,s);let u=await o(),d=await c(Oa(s));return Ma(e.deps,e.action,u.hash,d),_a(e.action,u.hash,d,e.deps)},watch:s=>ad(async function*(){Ia(e.deps,s);let u=await o();yield {phase:"submitted",action:e.action,hash:u.hash};let d=await c(Oa(s));yield {phase:"mined",action:e.action,hash:u.hash,receipt:d},Ma(e.deps,e.action,u.hash,d),yield {phase:"terminal",action:e.action,hash:u.hash,outcome:_a(e.action,u.hash,d,e.deps)};})}}function Kt(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function ja(e){return typeof e=="object"&&e!==null}function od(e){return ja(e)&&Kt(e,"clear")&&e.clear===true}function Ha(e,n,t){if(!ja(t)||!Kt(t,"clear"))return t;if(t.clear===true&&!Kt(t,"pnlPercent")&&!Kt(t,"priceDeltaPercent"))return {clear:true};throw new ValidationError({message:`${n} clear cannot be combined with percent inputs`,diagnostics:e$4(e)})}function Cn(e,n,t){return new ValidationError({message:`${n} ${t} was not resolved before outcome evidence`,diagnostics:e$4(e)})}function Gt(e,n){return {...n,expectedTradeId:e().tradeId}}async function $a(e,n,t,i,r){if(od(r))return {clear:true};let a=await s$1(e,n,t);return i==="takeProfit"?t$1(e,a,r):u$1(e,a,r)}function za(e,n,t,i){return {openMarket(r,a){return fe({action:"openMarket",start:()=>Ge({action:"openMarket",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(m$3(e,r),a),outcomeFromHandle:Ht({action:"openMarket"}),watchFromHandle:$t({action:"openMarket"})})})},openLimit(r,a){return fe({action:"openLimit",start:()=>Ge({action:"openLimit",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(n$3(e,r),a),outcomeFromHandle:Li(e,"openLimit")})})},openStop(r,a){return fe({action:"openStop",start:()=>Ge({action:"openStop",deps:e,token:t,opts:a,prepare:()=>n.prepareOpenTrade(o$3(e,r),a),outcomeFromHandle:Li(e,"openStop")})})},closePosition(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"closePosition","position ref");return c};return fe({action:"closePosition",start:()=>Ge({action:"closePosition",deps:e,token:t,opts:o,prepare:async()=>{let u=await q$1(e,r,o);return c=u.ref,n.prepareClosePosition(u.ref,p$2(e,a),o)},outcomeFromHandle:Ht({action:"closePosition",positionRef:s,trackOptions:u=>Gt(s,u)}),watchFromHandle:$t({action:"closePosition",positionRef:s,trackOptions:u=>Gt(s,u)})})})},updateTakeProfit(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"updateTakeProfit","position ref");return c};return fe({action:"updateTakeProfit",start:()=>Ge({action:"updateTakeProfit",deps:e,token:t,opts:o,prepare:async()=>{let u=Ha(e,"takeProfit",a),d=await q$1(e,r,o);c=d.ref;let f=await $a(e,d,o,"takeProfit",u);return n.prepareUpdateTakeProfit(d.ref,{takeProfit:f},o)},outcomeFromHandle:zn("updateTakeProfit",u=>{let d=s();return w$2(e,u,{verb:"updateTakeProfit",expected:{wallet:d.wallet,pairIndex:d.pairIndex,tradeId:d.tradeId,index:c$3.toNumber(d.index)}})})})})},updateStopLoss(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"updateStopLoss","position ref");return c};return fe({action:"updateStopLoss",start:()=>Ge({action:"updateStopLoss",deps:e,token:t,opts:o,prepare:async()=>{let u=Ha(e,"stopLoss",a),d=await q$1(e,r,o);c=d.ref;let f=await $a(e,d,o,"stopLoss",u);return n.prepareUpdateStopLoss(d.ref,{stopLoss:f},o)},outcomeFromHandle:zn("updateStopLoss",u=>{let d=s();return w$2(e,u,{verb:"updateStopLoss",expected:{wallet:d.wallet,pairIndex:d.pairIndex,tradeId:d.tradeId,index:c$3.toNumber(d.index)}})})})})},topUpCollateral(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"topUpCollateral","position ref");return c};return fe({action:"topUpCollateral",start:()=>Ge({action:"topUpCollateral",deps:e,token:t,opts:o,prepare:async()=>{let u=await q$1(e,r,o);return c=u.ref,n.prepareTopUpCollateral(u.ref,v(e,a),o)},outcomeFromHandle:zn("topUpCollateral",u=>{let d=s();return w$2(e,u,{verb:"topUpCollateral",expected:{wallet:d.wallet,pairIndex:d.pairIndex,tradeId:d.tradeId}})})})})},removeCollateral(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"removeCollateral","position ref");return c};return fe({action:"removeCollateral",start:()=>Ge({action:"removeCollateral",deps:e,token:t,opts:o,prepare:async()=>{let u=await q$1(e,r,o);return c=u.ref,n.prepareRemoveCollateral(u.ref,v(e,a),o)},outcomeFromHandle:Ht({action:"removeCollateral",positionRef:s,trackOptions:u=>Gt(s,u)}),watchFromHandle:$t({action:"removeCollateral",positionRef:s,trackOptions:u=>Gt(s,u)})})})},updateTriggerOrder(r,a,o){let c,s=()=>{if(c===void 0)throw Cn(e,"updateTriggerOrder","trigger order ref");return c};return fe({action:"updateTriggerOrder",start:()=>Ge({action:"updateTriggerOrder",deps:e,token:t,opts:o,prepare:async()=>{let u=r$2(e,r,o);return c=u,n.prepareUpdateOpenLimitOrder(u,await w$1(e,u,a),o)},outcomeFromHandle:zn("updateTriggerOrder",u=>{let d=s();return w$2(e,u,{verb:"updateOpenLimitOrder",expected:{wallet:d.wallet,pairIndex:d.pairIndex,index:d.index}})})})})},cancelTriggerOrder(r,a){let o,c=()=>{if(o===void 0)throw Cn(e,"cancelTriggerOrder","trigger order ref");return o};return fe({action:"cancelTriggerOrder",start:()=>Ge({action:"cancelTriggerOrder",deps:e,token:t,opts:a,prepare:async()=>{let s=r$2(e,r,a);return o=s,n.prepareCancelOpenLimitOrder(s,a)},outcomeFromHandle:zn("cancelTriggerOrder",s=>{let u=c();return w$2(e,s,{verb:"cancelOpenLimitOrder",expected:{wallet:u.wallet,pairIndex:u.pairIndex,index:u.index}})})})})},vaultDeposit(r,a){return fe({action:"vaultDeposit",start:()=>an({action:"vaultDeposit",deps:e,opts:a,prepare:o=>i.prepareDeposit(r,o)})})},vaultMint(r,a){return fe({action:"vaultMint",start:()=>an({action:"vaultMint",deps:e,opts:a,prepare:o=>i.prepareMint(r,o)})})},vaultMakeWithdrawRequest(r,a){return fe({action:"vaultMakeWithdrawRequest",start:()=>an({action:"vaultMakeWithdrawRequest",deps:e,opts:a,prepare:o=>i.prepareMakeWithdrawRequest(r,o)})})},vaultCancelWithdrawRequest(r,a){return fe({action:"vaultCancelWithdrawRequest",start:()=>an({action:"vaultCancelWithdrawRequest",deps:e,opts:a,prepare:o=>i.prepareCancelWithdrawRequest(r,o)})})},vaultWithdraw(r,a){return fe({action:"vaultWithdraw",start:()=>an({action:"vaultWithdraw",deps:e,opts:a,prepare:o=>i.prepareWithdraw(r,o)})})},vaultRedeem(r,a){return fe({action:"vaultRedeem",start:()=>an({action:"vaultRedeem",deps:e,opts:a,prepare:o=>i.prepareRedeem(r,o)})})},vaultDepositWithDiscountAndLock(r,a){return fe({action:"vaultDepositWithDiscountAndLock",start:()=>an({action:"vaultDepositWithDiscountAndLock",deps:e,opts:a,prepare:o=>i.prepareDepositWithDiscountAndLock(r,o)})})},vaultMintWithDiscountAndLock(r,a){return fe({action:"vaultMintWithDiscountAndLock",start:()=>an({action:"vaultMintWithDiscountAndLock",deps:e,opts:a,prepare:o=>i.prepareMintWithDiscountAndLock(r,o)})})},vaultUnlockDeposit(r,a){return fe({action:"vaultUnlockDeposit",start:()=>an({action:"vaultUnlockDeposit",deps:e,opts:a,prepare:o=>i.prepareUnlockDeposit(r,o)})})}}}var cd=new Set(["open","close","remove_collateral","unknown"]),ud=new Set(["market","limit","stop","automation","remove_collateral","unknown"]),dd=new Set(["pending_execution","timeout_available","executed","canceled","timed_out","unknown"]);function Qt(e$1,n){let t=Pe(e$1,"kind");if(t!=="open_position")return ld(e$1,n.wallet,t);let i={kind:"open_position",wallet:n.wallet,pairIndex:b$2.from(Yn(e$1,"pair_index")),index:c$3.from(Yn(e$1,"index")),tradeId:e.parse(Pe(e$1,"trade_id")),side:Yt(e$1,"buy_side")?"long":"short",collateral:g.fromDecimal(Pe(e$1,"collateral")),leverage:k$1.fromDecimal(Pe(e$1,"leverage")),openPrice:i$1.fromDecimal(Pe(e$1,"open_price")),pendingReasons:[]},r=U(e$1,"initial_collateral");r!==void 0&&(i.initialCollateral=g.fromDecimal(r));let a=U(e$1,"init_funding_fee");a!==void 0&&(i.initialAccFundingRaw=l.fromDecimal(a));let o=U(e$1,"trade_notional");o!==void 0&&(i.notional=j$1.fromDecimal(o));let c=U(e$1,"tp");c!==void 0&&(i.takeProfit=i$1.fromDecimal(c));let s=U(e$1,"sl");s!==void 0&&(i.stopLoss=i$1.fromDecimal(s)),e$1.timestamp!==void 0&&e$1.timestamp!==null&&(i.openedAt=d$1(e$1.timestamp,"timestamp"));try{i.verifiedRef=x$1(i,n.chainId);}catch{}return i}function Ga(e$1,n){let t=wd(e$1.action),i=bd(e$1.order_type),r=yd(e$1.status),a=Wi(e$1,"timeout_block"),o={orderId:f$1.parse(Pe(e$1,"order_id")),lifecycleKey:Pe(e$1,"lifecycle_key"),wallet:n.wallet,action:t.value,orderType:i.value,status:r.value,positionRef:gd(e$1,"position_ref",n.chainId),isPending:Yt(e$1,"is_pending"),isCancelled:Yt(e$1,"is_cancelled"),timestamp:d$1(e$1.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 c=Jt(e$1,"pair_index");c!==void 0&&(o.pairIndex=b$2.from(c)),a!==void 0&&(o.timeoutBlock=a),a!==void 0&&n.freshness.chainHeadBlock!==void 0&&(o.timeoutAvailable=a<=n.freshness.chainHeadBlock);let s=U(e$1,"trade_id");s!==void 0&&(o.tradeId=e.parse(s));let u=U(e$1,"limit_index");u!==void 0&&(o.limitIndex=d$2.parseApi(u));let d=Wi(e$1,"initiated_block");d!==void 0&&(o.initiatedBlock=d);let f=Wi(e$1,"executed_block");f!==void 0&&(o.executedBlock=f);let l=U(e$1,"initiated_event_type");l!==void 0&&(o.initiatedEventType=l);let g=U(e$1,"terminal_event_type");g!==void 0&&(o.terminalEventType=g);let b=U(e$1,"latest_event_type");b!==void 0&&(o.latestEventType=b);let y=pt(e$1,"initiated_tx_hash",n.chainId);y!==void 0&&(o.initiatedTxHash=y);let x=pt(e$1,"executed_tx_hash",n.chainId);x!==void 0&&(o.executedTxHash=x);let C=Jt(e$1,"cancel_reason");if(C!==void 0&&(o.cancelReason=C),pd(e$1,o),md(e$1,n.wallet,n.chainId))try{o.verifiedRef=y$1(o,n.chainId);}catch{}return o}function Ka(e$1,n){let t=g.fromDecimal(Pe(e$1,"collateral")),i=k$1.fromDecimal(Pe(e$1,"leverage")),r={wallet:n.wallet,pairIndex:b$2.from(Yn(e$1,"pair_index")),index:c$3.from(Yn(e$1,"trade_index")),tradeId:e.parse(Pe(e$1,"trade_id")),side:Yt(e$1,"buy_side")?"long":"short",openPrice:i$1.fromDecimal(Pe(e$1,"open_price")),initialCollateral:g.fromDecimal(Pe(e$1,"initial_collateral")),collateral:t,leverage:i,notional:hd(e$1),openEventType:Pe(e$1,"open_event_type"),status:Pe(e$1,"status"),openedAt:d$1(e$1.open_timestamp,"open_timestamp"),timestamp:d$1(e$1.timestamp,"timestamp")},a=U(e$1,"close_price");a!==void 0&&(r.closePrice=i$1.fromDecimal(a));let o=U(e$1,"closing_collateral");o!==void 0&&(r.closingCollateral=g.fromDecimal(o));let c=U(e$1,"close_reason");c!==void 0&&(r.closeReason=c);let s=U(e$1,"percent_profit");s!==void 0&&(r.percentProfit=a$9(s));let u=U(e$1,"realized_pnl_usdc");u!==void 0&&(r.realizedPnl=h$1.fromDecimal(u));let d=U(e$1,"usdc_sent_to_trader");d!==void 0&&(r.collateralSentToTrader=g.fromDecimal(d));let f=U(e$1,"funding_fee");f!==void 0&&(r.fundingFee=h$1.fromDecimal(f));let l=U(e$1,"limit_index");l!==void 0&&(r.limitIndex=d$2.parseApi(l));let g$1=pt(e$1,"open_tx_hash");g$1!==void 0&&(r.openTxHash=g$1);let b=pt(e$1,"close_tx_hash");return b!==void 0&&(r.closeTxHash=b),e$1.close_timestamp!==void 0&&e$1.close_timestamp!==null&&(r.closedAt=d$1(e$1.close_timestamp,"close_timestamp")),r}function ld(e$1,n,t){let i=Pe(e$1,"event_type"),r={kind:"pending_position",rawKind:t,wallet:n,eventType:i,pendingReasons:[fd(i)]},a=U(e$1,"order_id");a!==void 0&&(r.orderId=f$1.parse(a));let o=Jt(e$1,"pair_index");o!==void 0&&(r.pairIndex=b$2.from(o));let c=Jt(e$1,"index");c!==void 0&&(r.index=c$3.from(c));let s=U(e$1,"trade_id");s!==void 0&&(r.tradeId=e.parse(s));let u=Pd(e$1,"buy_side");u!==void 0&&(r.side=u?"long":"short");let d=U(e$1,"collateral");d!==void 0&&(r.collateral=g.fromDecimal(d));let f=U(e$1,"initial_collateral");f!==void 0&&(r.initialCollateral=g.fromDecimal(f));let l=U(e$1,"leverage");l!==void 0&&(r.leverage=k$1.fromDecimal(l));let g$1=U(e$1,"trade_notional");g$1!==void 0&&(r.notional=j$1.fromDecimal(g$1));let b=U(e$1,"open_price");b!==void 0&&(r.openPrice=i$1.fromDecimal(b));let y=U(e$1,"wanted_price");y!==void 0&&(r.wantedPrice=i$1.fromDecimal(y));let x=U(e$1,"tp");x!==void 0&&(r.takeProfit=i$1.fromDecimal(x));let C=U(e$1,"sl");C!==void 0&&(r.stopLoss=i$1.fromDecimal(C));let L=U(e$1,"target_trade_id");L!==void 0&&(r.targetTradeId=e.parse(L));let re=U(e$1,"close_percentage");re!==void 0&&(r.closePercentage=r$1.fromDecimal(re));let ne=U(e$1,"remove_amount");ne!==void 0&&(r.removeAmount=g.fromDecimal(ne));let we=U(e$1,"limit_index");we!==void 0&&(r.limitIndex=d$2.parseApi(we));let be=pt(e$1,"transaction_hash");return be!==void 0&&(r.txHash=be),e$1.timestamp!==void 0&&e$1.timestamp!==null&&(r.timestamp=d$1(e$1.timestamp,"timestamp")),r}function fd(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 pd(e,n){let t=e.trigger_order_type;if(t!=null){if(t==="limit"||t==="stop"){n.triggerOrderType=t;return}typeof t!="string"&&He("trigger_order_type must be a string"),n.rawTriggerOrderType=t;}}function md(e,n,t){let i=vd(e,"wallet",t);return i===void 0||i.toLowerCase()===n.toLowerCase()}function gd(e$1,n,t=0){let i=e$1[n];if(i===null)return null;(i===void 0||typeof i!="object"||Array.isArray(i))&&He(`${n} must be an object or null`,t);let r=i;return {wallet:Rd(r,"wallet",t),pairIndex:b$2.from(Yn(r,"pair_index")),index:c$3.from(Yn(r,"index")),tradeId:e.parse(Pe(r,"trade_id"))}}function hd(e){return j$1.fromDecimal(Pe(e,"trade_notional"))}function wd(e){return qi(e,cd,"action")}function bd(e){return qi(e,ud,"order_type")}function yd(e){return qi(e,dd,"status")}function qi(e,n,t){return typeof e!="string"&&He(`${t} must be a string`),n.has(e)?{value:e}:{value:"unknown",raw:e}}function Pe(e,n){let t=e[n];return typeof t!="string"&&He(`${n} must be a string`),t}function U(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&He(`${n} must be a string`),t}function He(e,n=0,t){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function Rd(e,n,t=0){return c$4(e[n],n,(i,r)=>He(i,t,r))}function vd(e,n,t=0){let i=e[n];if(i!=null)return c$4(i,n,(r,a)=>He(r,t,a))}function pt(e,n,t=0){let i=e[n];if(i!=null)return e$1(i,n,(r,a)=>He(r,t,a))}function Yn(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&He(`${n} must be an integer`),t}function Jt(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&He(`${n} must be an integer`),t}function Yt(e,n){let t=e[n];return typeof t!="boolean"&&He(`${n} must be a boolean`),t}function Pd(e,n){let t=e[n];if(t!=null)return typeof t!="boolean"&&He(`${n} must be a boolean`),t}function Wi(e,n){let t=e[n];if(t!=null)return c$6(t,n)}var Ad=4294967295n;function Ui(e){let n=mt(e,"contracts"),t$1=mt(e,"constraints"),i=mt(e,"fees"),r={minLeverage:k$1.fromRaw(Ye(t$1,"min_leverage")),maxLeverage:k$1.fromRaw(Ye(t$1,"max_leverage")),makerMaxLeverage:k$1.fromRaw(Ye(t$1,"maker_max_leverage")),minLevPosition:g.fromRaw(Ye(t$1,"min_lev_position")),groupMaxCollateral:g.fromRaw(Ye(t$1,"group_max_collateral")),marketOrdersTimeout:c$6(t$1.market_orders_timeout,"market_orders_timeout"),maxTradesPerPair:c$6(t$1.max_trades_per_pair,"max_trades_per_pair"),maxPendingMarketOrders:c$6(t$1.max_pending_market_orders,"max_pending_market_orders")},a=$i(t$1,"max_allowed_collateral");a!==void 0&&(r.maxAllowedCollateral=g.fromRaw(a));let o=Hi(t$1,"max_negative_pnl_on_open_p",0,100);o!==void 0&&(r.maxNegativePnlOnOpenP=t.fromRaw(o));let c=Hi(t$1,"max_sl_p",0,100);c!==void 0&&(r.maxSlP=t.fromRaw(c));let s=Hi(t$1,"liq_margin_threshold_p",0,100);return s!==void 0&&(r.liqMarginThresholdP=t.fromRaw(s)),{pairIndex:b$2.from(ei(e,"pair_index")),groupIndex:ei(e,"group_index"),feeIndex:ei(e,"fee_index"),symbol:oe(e,"symbol"),baseSymbol:oe(e,"base_symbol"),quoteSymbol:oe(e,"quote_symbol"),priceAsset:oe(e,"price_asset"),feedId:Dd(e,"feed_id"),priceFeed:oe(e,"price_feed"),isListed:Bi(e,"is_listed"),isPaused:Bi(e,"is_paused"),isDone:Bi(e,"is_done"),status:xd(e),oracleFeeWei:c$6(e.oracle_fee_wei,"oracle_fee_wei"),contracts:{trading:Xt(n,"trading"),tradingStorage:Xt(n,"trading_storage"),pairsStorage:Xt(n,"pairs_storage"),pairInfos:Xt(n,"pair_infos")},constraints:r,fees:{opening:Ja(mt(i,"opening")),closing:Ja(mt(i,"closing"))}}}function Ya(e){let n={pairIndex:b$2.from(ei(e,"pair_index")),longOpenInterest:j$1.fromDecimal(oe(e,"oi_long")),shortOpenInterest:j$1.fromDecimal(oe(e,"oi_short")),oiMax:j$1.fromDecimal(oe(e,"oi_max")),oiDelta:z.fromRaw(oe(e,"oi_delta")),lastFunding1h:z.fromRaw(oe(e,"last_funding_1h")),lastFunding8h:z.fromRaw(oe(e,"last_funding_8h")),lastFunding24h:z.fromRaw(oe(e,"last_funding_24h")),lastFunding1y:z.fromRaw(oe(e,"last_funding_1y")),fundingFeeLong:z.fromRaw(oe(e,"funding_fee_long")),fundingFeeShort:z.fromRaw(oe(e,"funding_fee_short")),fundingFeeRate:z.fromRaw(oe(e,"funding_fee_rate")),fundingRate1h:z.fromRaw(oe(e,"funding_rate_1h")),fundingRate8h:z.fromRaw(oe(e,"funding_rate_8h")),fundingRate24h:z.fromRaw(oe(e,"funding_rate_24h")),fundingRate1y:z.fromRaw(oe(e,"funding_rate_1y")),cumulativeVolume:j$1.fromDecimal(oe(e,"cumulative_volume")),volume24h:j$1.fromDecimal(oe(e,"volume_24h"))},t=Cd(e,"raw_state");return t!==void 0&&(n.rawState=Td(t)),n}function xd(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 Ja(e){return {makerFeeP:s.fromRaw(Ye(e,"maker_fee_p")),takerFeeP:s.fromRaw(Ye(e,"taker_fee_p")),usageFeeP:s.fromRaw(Ye(e,"usage_fee_p")),utilizationThresholdP:u.fromRaw(Ye(e,"utilization_threshold_p")),makerMaxLeverage:k$1.fromRaw(Ye(e,"maker_max_leverage")),vaultFeePercent:t.fromRaw(Ye(e,"vault_fee_percent"))}}function Td(e){let n={accPerOiLong:l.fromRaw(Je(e,"acc_per_oi_long")),accPerOiShort:l.fromRaw(Je(e,"acc_per_oi_short")),lastFundingRate:l.fromRaw(Je(e,"last_funding_rate")),maxFundingFeePerBlock:m$1.fromRaw(Je(e,"max_funding_fee_per_block")),springFactor:m$1.fromRaw(Je(e,"spring_factor")),hillInflectionPoint:l.fromRaw(Je(e,"hill_inflection_point")),hillPosScale:o$2.fromRaw(Zt(e,"hill_pos_scale",0,65535)),hillNegScale:o$2.fromRaw(Zt(e,"hill_neg_scale",0,65535)),sFactorUpScaleP:o$2.fromRaw(Zt(e,"s_factor_up_scale_p",0,65535)),sFactorDownScaleP:o$2.fromRaw(Zt(e,"s_factor_down_scale_p",0,65535)),lastOiDelta:n$1.fromRaw(Je(e,"last_oi_delta")),lastUpdateBlock:Id(e,"last_update_block",Ad),asOfBlock:Xa(e,"as_of_block"),lastTradePrice:i$1.fromRaw(Je(e,"last_trade_price")),oiLong:m$1.fromRaw(Je(e,"oi_long")),oiShort:m$1.fromRaw(Je(e,"oi_short")),oiCap:p$1.fromRaw(Je(e,"oi_cap"))},t=$i(e,"group_collateral_long");t!==void 0&&(n.groupCollateralLong=g.fromRaw(t));let i=$i(e,"group_collateral_short");return i!==void 0&&(n.groupCollateralShort=g.fromRaw(i)),n}function mt(e,n){let t=e[n];return (typeof t!="object"||t===null||Array.isArray(t))&&Le(`${n} must be an object`),t}function Cd(e,n){let t=e[n];if(t!=null)return (typeof t!="object"||Array.isArray(t))&&Le(`${n} must be an object`),t}function oe(e,n){let t=e[n];return typeof t!="string"&&Le(`${n} must be a string`),t}function Le(e,n){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:0},...n!==void 0?{cause:n}:{}})}function Xt(e,n){return c$4(e[n],n,Le)}function Dd(e,n){return f$3(e[n],n,Le)}function ei(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&Le(`${n} must be an integer`),t}function Bi(e,n){let t=e[n];return typeof t!="boolean"&&Le(`${n} must be a boolean`),t}function Ye(e,n){let t=e[n];return typeof t=="string"||typeof t=="bigint"?t:c$6(t,n)}function Vd(e,n){let t=e[n];return typeof t!="string"&&Le(`${n} must be a string`),t}function Je(e,n){return c$6(Vd(e,n),n)}function $i(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&Le(`${n} must be a string`),t}function Zt(e,n,t,i){let r=e[n];return Qa(r,n,t,i)}function Hi(e,n,t,i){let r=e[n];if(r!=null)return Qa(r,n,t,i)}function Qa(e,n,t,i){return (typeof e!="number"||!Number.isSafeInteger(e))&&Le(`${n} must be a safe integer`),(e<t||e>i)&&Le(`${n} out of range`),BigInt(e)}function Xa(e,n){let t=c$6(e[n],n);return t<0n&&Le(`${n} must be unsigned`),t}function Id(e,n,t){let i=Xa(e,n);return i>t&&Le(`${n} out of range`),i}var Od=new Set(["open","close","remove_collateral","unknown"]),Md=new Set(["market","limit","stop","automation","remove_collateral","unknown"]),_d=new Set(["pending_execution","timeout_available","executed","canceled","timed_out","unknown"]);function io(e$1,n){let t=Nd(e$1.action),i=Fd(e$1.order_type),r=Ld(e$1.status),a={orderId:f$1.parse(ro(e$1,"order_id")),wallet:ao(e$1,"wallet",n.chainId),action:t.value,orderType:i.value,status:r.value,positionRef:Ed(e$1,"position_ref",n.chainId),isPending:ji(e$1,"is_pending"),isCancelled:ji(e$1,"is_cancelled"),timeoutAvailable:ji(e$1,"timeout_available"),timestamp:d$1(e$1.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=eo(e$1,"pair_index");o!==void 0&&(a.pairIndex=b$2.from(o));let c=Vn(e$1,"timeout_block");c!==void 0&&(a.timeoutBlock=c);let s=Dn(e$1,"trade_id");s!==void 0&&(a.tradeId=e.parse(s));let u=Dn(e$1,"initiated_trade_id")??s;u!==void 0&&(a.initiatedTradeId=e.parse(u));let d=Dn(e$1,"terminal_trade_id");d!==void 0&&(a.terminalTradeId=e.parse(d));let f=Dn(e$1,"initiated_event_type");f!==void 0&&(a.initiatedEventType=f);let l=Dn(e$1,"terminal_event_type");l!==void 0&&(a.terminalEventType=l);let g=Dn(e$1,"latest_event_type");g!==void 0&&(a.latestEventType=g);let b=Dn(e$1,"limit_index");b!==void 0&&(a.limitIndex=d$2.parseApi(b));let y=Za(e$1,"initiated_tx_hash",n.chainId);y!==void 0&&(a.initiatedTxHash=y);let x=Za(e$1,"executed_tx_hash",n.chainId);x!==void 0&&(a.executedTxHash=x);let C=Vn(e$1,"initiated_block");C!==void 0&&(a.initiatedBlock=C);let L=Vn(e$1,"executed_block");L!==void 0&&(a.executedBlock=L);let re=Vn(e$1,"initiated_tx_index");re!==void 0&&(a.initiatedTxIndex=re);let ne=Vn(e$1,"initiated_log_index");ne!==void 0&&(a.initiatedLogIndex=ne);let we=Vn(e$1,"executed_tx_index");we!==void 0&&(a.executedTxIndex=we);let be=Vn(e$1,"executed_log_index");be!==void 0&&(a.executedLogIndex=be);let Xe=eo(e$1,"cancel_reason");Xe!==void 0&&(a.cancelReason=Xe);let W=to(e$1,"requested_remove_amount"),le=to(e$1,"executed_remove_amount");return (W!==void 0||le!==void 0)&&(a.removeCollateral={adjustedAmountSource:"order_response"},W!==void 0&&(a.removeCollateral.requestedCollateral=W),le!==void 0&&(a.removeCollateral.executedCollateral=le)),a}function Ed(e$1,n,t){let i=e$1[n];if(i===null)return null;(i===void 0||typeof i!="object"||Array.isArray(i))&&ln(`${n} must be an object or null`,t);let r=i;return {wallet:ao(r,"wallet",t),pairIndex:b$2.from(no(r,"pair_index")),index:c$3.from(no(r,"index")),tradeId:e.parse(ro(r,"trade_id"))}}function Nd(e){return zi(e,Od,"action")}function Fd(e){return zi(e,Md,"order_type")}function Ld(e){return zi(e,_d,"status")}function zi(e,n,t){return typeof e!="string"&&ln(`${t} must be a string`),n.has(e)?{value:e}:{value:"unknown",raw:e}}function ro(e,n){let t=e[n];return typeof t!="string"&&ln(`${n} must be a string`),t}function Dn(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&ln(`${n} must be a string`),t}function ln(e,n=0,t){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function ao(e,n,t=0){return c$4(e[n],n,(i,r)=>ln(i,t,r))}function Za(e,n,t=0){let i=e[n];if(i!=null)return e$1(i,n,(r,a)=>ln(r,t,a))}function eo(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&ln(`${n} must be an integer`),t}function no(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&ln(`${n} must be an integer`),t}function ji(e,n){let t=e[n];return typeof t!="boolean"&&ln(`${n} must be a boolean`),t}function Wd(e,n){let t=e[n];if(t!=null)return typeof t=="string"||typeof t=="bigint"?t:c$6(t,n)}function to(e,n){let t=Wd(e,n);if(t!==void 0)return typeof t=="string"?g.fromDecimal(t):g.fromRaw(t)}function Vn(e,n){let t=e[n];if(t!=null)return c$6(t,n)}function co(e){return {asset:In(e,"asset"),productId:In(e,"product_id"),price:gt(e,"price"),timestamp:d$1(e.block_timestamp,"block_timestamp")}}function uo(e,n){let t=In(e,"asset");if(n.expectedAsset!==void 0&&t!==n.expectedAsset&&on(`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 oo(e,{asset:t});on("price candle pair_index is missing",n.chainId);}let i=b$2.from(fo(e,"pair_index"));n.pairIndex!==void 0&&i!==n.pairIndex&&on(`price candle pair_index mismatch: expected ${n.pairIndex}, received ${i}`,n.chainId);let r=oo(e,{asset:t});return r.pairIndex=i,r}function oo(e,n){let t={asset:n.asset,open:gt(e,"open"),high:gt(e,"high"),low:gt(e,"low"),openTime:d$1(e.open_time,"open_time")},i=so(e,"close");i!==void 0&&(t.close=i);let r=so(e,"head_price");return r!==void 0&&(t.headPrice=r),e.head_time!==void 0&&e.head_time!==null&&(t.headTime=d$1(e.head_time,"head_time")),e.close_time!==void 0&&e.close_time!==null&&(t.closeTime=d$1(e.close_time,"close_time")),t}function lo(e,n){let t=In(e,"asset");n.expectedAsset!==void 0&&t!==n.expectedAsset&&on(`price tick asset mismatch: expected ${n.expectedAsset}, received ${t}`,n.chainId);let i={asset:t,productId:In(e,"product_id"),price:gt(e,"price"),blockNumber:c$6(e.block_number,"block_number"),txIndex:c$6(e.tx_index,"tx_index"),logIndex:c$6(e.log_index,"log_index"),timestamp:d$1(e.block_timestamp,"block_timestamp")};if(e.publish_id!==void 0&&e.publish_id!==null&&(i.publishId=In(e,"publish_id")),e.pair_index===void 0&&on("price tick pair_index is missing",n.chainId),e.pair_index===null&&n.expectedPairIndex!==void 0&&on("price tick pair_index is missing",n.chainId),e.pair_index!==null){let r=b$2.from(fo(e,"pair_index"));n.expectedPairIndex!==void 0&&r!==n.expectedPairIndex&&on(`price tick pair_index mismatch: expected ${n.expectedPairIndex}, received ${r}`,n.chainId),i.pairIndex=r;}return i}function on(e,n=0){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:n}})}function In(e,n){let t=e[n];return typeof t!="string"&&on(`${n} must be a string`),t}function fo(e,n){let t=e[n];return (typeof t!="number"||!Number.isInteger(t))&&on(`${n} must be an integer`),t}function gt(e,n){return i$1.fromDecimal(In(e,n))}function so(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&on(`${n} must be a string`),i$1.fromDecimal(t)}function mo(e){let n=ni(e,"rpc_available"),t=ni(e,"postgres_available"),i=ni(e,"cache_available"),r=ni(e,"degraded"),a=$d(e,"degraded_reasons"),o={network:po(e,"network"),apiTime:d$1(e.api_time,"api_time"),rpcAvailable:n,postgresAvailable:t,cacheAvailable:i,degraded:r,degradedReasons:a,ok:!r&&n&&t&&i,apiSchemaHash:po(e,"api_schema_hash"),readiness:Hd({rpcAvailable:n,postgresAvailable:t,cacheAvailable:i,degradedReasons:a})},c=e$3(e.chain_head_block,"chain_head_block");c!==void 0&&(o.chainHeadBlock=c);let s=e$3(e.indexed_block,"indexed_block");s!==void 0&&(o.indexedBlock=s);let u=e$3(e.lag_blocks,"lag_blocks");return u!==void 0&&(o.lagBlocks=u),o}function Hd(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 po(e,n){let t=e[n];return typeof t!="string"&&Gi(`${n} must be a string`),t}function ni(e,n){let t=e[n];return typeof t!="boolean"&&Gi(`${n} must be a boolean`),t}function $d(e,n){let t=e[n];return (!Array.isArray(t)||t.some(i=>typeof i!="string"))&&Gi(`${n} must be a string array`),[...t]}function Gi(e,n){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:0},...{}})}function go(e$1,n){let t=ho(e$1,"trade_id");t!==e.toString(n.tradeId)&&Qn(`trade event response trade_id mismatch: expected ${e.toString(n.tradeId)}, received ${t}`,n.chainId);let i=e$1.events;return Array.isArray(i)||Qn("events must be an array",n.chainId),{tradeId:n.tradeId,events:i.map(r=>jd(r,n.tradeId,n.chainId))}}function jd(e,n,t=0){let i={id:c$6(e.id,"id"),tradeId:n,time:d$1(e.time,"time"),eventType:ho(e,"event_type"),blockNumber:c$6(e.block_number,"block_number"),txIndex:c$6(e.tx_index,"tx_index"),logIndex:c$6(e.log_index,"log_index")},r=zd(e,"transaction_hash",t);r!==void 0&&(i.txHash=r);let a=Se(e,"order_id");a!==void 0&&(i.orderId=f$1.parse(a));let o=Se(e,"collateral");o!==void 0&&(i.collateral=g.fromDecimal(o));let c=Se(e,"leverage");c!==void 0&&(i.leverage=k$1.fromDecimal(c));let s=Se(e,"open_price");s!==void 0&&(i.openPrice=i$1.fromDecimal(s));let u=Se(e,"close_price");u!==void 0&&(i.closePrice=i$1.fromDecimal(u));let d=Se(e,"tp");d!==void 0&&(i.takeProfit=i$1.fromDecimal(d));let f=Se(e,"sl");f!==void 0&&(i.stopLoss=i$1.fromDecimal(f));let l=Se(e,"percentage_closed");l!==void 0&&(i.percentageClosed=r$1.fromDecimal(l));let g$1=Se(e,"percent_profit");g$1!==void 0&&(i.percentProfit=a$9(g$1));let b=Se(e,"usdc_sent_to_trader");b!==void 0&&(i.collateralSentToTrader=g.fromDecimal(b));let y=Se(e,"pnl_delta_usdc");y!==void 0&&(i.pnlDelta=h$1.fromDecimal(y));let x=Se(e,"top_up_amount");x!==void 0&&(i.topUpAmount=g.fromDecimal(x));let C=Se(e,"remove_amount");C!==void 0&&(i.removeAmount=g.fromDecimal(C));let L=Se(e,"new_leverage");L!==void 0&&(i.newLeverage=k$1.fromDecimal(L));let re=Se(e,"wanted_price");re!==void 0&&(i.wantedPrice=i$1.fromDecimal(re));let ne=Gd(e,"cancel_reason");return ne!==void 0&&(i.cancelReason=ne),i}function ho(e,n){let t=e[n];return typeof t!="string"&&Qn(`${n} must be a string`),t}function Se(e,n){let t=e[n];if(t!=null)return typeof t!="string"&&Qn(`${n} must be a string`),t}function Qn(e,n=0,t){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:n},...t!==void 0?{cause:t}:{}})}function zd(e,n,t=0){let i=e[n];if(i!=null)return e$1(i,n,(r,a)=>Qn(r,t,a))}function Gd(e,n){let t=e[n];if(t!=null)return (typeof t!="number"||!Number.isInteger(t))&&Qn(`${n} must be an integer`),t}var Yd="read-plane",Sn=100,Ki=100,Qd=4,wo=5e3,Xd=/^(?:0|[1-9]\d*)$/;function fn(e,n){return {...e,limit:e?.limit??n}}function bo(e,n){let t={};return e.asset!==void 0&&(t.asset=e.asset),n!==void 0&&(t.pair_index=b$2.toNumber(n)),t}function Rn(e,n,t="pairIndex is invalid"){try{return b$2.from(e)}catch(i){return Oe(t,n,i)}}function Yi(e,n,t="tradeIndex is invalid"){try{return c$3.from(e)}catch(i){return Oe(t,n,i)}}function vo(e$1,n,t="tradeId is invalid"){try{if(typeof e$1!="string")throw new Error("TradeId must be a string");return e.parse(e$1)}catch(i){return Oe(t,n,i)}}function Qi(e$1,n){let t=vo(e$1,n),i=e.toString(t);return Xd.test(i)?e.parse(BigInt(i).toString()):Oe("tradeId must be a decimal API id",n,new Error("TradeId must be a decimal API id"))}function Zd(e,n,t="orderId is invalid"){try{if(typeof e!="string")throw new Error("OrderId must be a string");return f$1.parse(e)}catch(i){return Oe(t,n,i)}}function yo(e,n){if(e.pairIndex!==void 0)return Rn(e.pairIndex,n,"price selector pairIndex is invalid")}function Po(e$1){let{raw:n,chainId:t,onEvent:i}=e$1,r=a$2(i),a=s=>ko(t,s);function o(s,u,d,f){if(s==="status.get")return;let l=u.readiness;if(l===void 0||l.status==="ready")return;let g=l.unsafe_reasons??[],b=l.degraded_reasons??[],y=l.status==="unsafe"?g.length>0?g:b.length>0?b:[l.status]:l.status!=="degraded"?g.length>0?g:b.length>0?b:[l.status]:g,x=b.length>0?b:l.status==="degraded"?[l.status]:[],C={apiFreshness:d};d$5({policy:f?.readinessPolicy??"strict",chainId:t,degradedReasons:x,unsafeReasons:y,diagnostics:C,...r!==void 0?{onEvent:r}:{}});}let c={markets:{list:async s=>{let u=await n.markets.list(s);return a(()=>{let d=c$5(u.freshness,b$1["markets.list"]);return o("markets.list",u,d,s),{data:u.data.map(Ui),freshness:d}})},get:async(s,u)=>{let d=Rn(s,t),f=await n.markets.get(b$2.toNumber(d),u);return a(()=>{let l=c$5(f.freshness,b$1["markets.get"]);return o("markets.get",f,l,u),{data:Ui(f.data),freshness:l}})},state:async(s,u)=>{let d=Rn(s,t),f=await n.markets.state(b$2.toNumber(d),u);return a(()=>{let l=c$5(f.freshness,b$1["markets.state"]);return o("markets.state",f,l,u),{data:Ya(f.data),freshness:l}})}},prices:{head:async s=>{let u=await n.prices.head(s);return a(()=>{let d=c$5(u.freshness,b$1["prices.head"]);return o("prices.head",u,d,s),{data:u.data.map(co),freshness:d}})},candles:async(s,u)=>{let d=yo(s,t),f={...bo(s,d),from:Ao(s.from,"from"),interval:s.interval},l=Ji(s.to,"to");l!==void 0&&(f.to=l);let g={chainId:t};d!==void 0&&(g.pairIndex=d),s.asset!==void 0&&(g.expectedAsset=s.asset);let b=await n.prices.candles(f,u);return a(()=>{let y=c$5(b.freshness,b$1["prices.candles"]);return o("prices.candles",b,y,u),{data:b.data.map(x=>uo(x,g)),freshness:y}})},ticks:async(s,u)=>{let d=yo(s,t),f=bo(s,d),l=Ji(s.from,"from");l!==void 0&&(f.from=l);let g=Ji(s.to,"to");g!==void 0&&(f.to=g),u?.cursor!==void 0&&(f.cursor=u.cursor),u?.limit!==void 0&&(f.limit=u.limit);let b={chainId:t};d!==void 0&&(b.expectedPairIndex=d),s.asset!==void 0&&(b.expectedAsset=s.asset);let y=await n.prices.ticks(f,u);return a(()=>{let x=c$5(y.freshness,b$1["prices.ticks"]);return o("prices.ticks",y,x,u),{data:y.data.map(C=>lo(C,b)),freshness:x,pagination:e$2(y.pagination)}})},ticksPages:(s,u)=>f$2(d=>c.prices.ticks(s,d),fn(u,wo)),ticksIterator:(s,u)=>g$3(d=>c.prices.ticks(s,d),fn(u,wo))},account:{positions:async(s,u)=>{let d=await n.account.positions(s,u);return a(()=>{let f=c$5(d.freshness,b$1["account.positions"]);return o("account.positions",d,f,u),On(d,{data:d.data.map(l=>Qt(l,{wallet:s,chainId:t})),freshness:f,pagination:e$2(d.pagination)})})},position:async(s,u,d)=>{let f={...u,pairIndex:Rn(u.pairIndex,t),index:Yi(u.index,t),...u.tradeId!==void 0?{tradeId:Qi(u.tradeId,t)}:{}};if(f.tradeId===void 0)return el(n,s,f,t,o,d);let l=await n.account.position(s,{pairIndex:b$2.toNumber(f.pairIndex),index:c$3.toNumber(f.index),tradeId:e.toString(f.tradeId)},d);return a(()=>{let g=c$5(l.freshness,b$1["account.position"]);return o("account.position",l,g,d),On(l,{data:Ro(l.data,{wallet:s,chainId:t,expectedRef:f}),freshness:g})})},positionsBatch:async(s,u,d)=>{let f=u.map(W=>({...W,pairIndex:Rn(W.pairIndex,t),index:Yi(W.index,t),tradeId:Qi(W.tradeId,t)})),l=Math.max(1,Math.ceil(f.length/Ki)),g=new Array(l),b=new Array(l),y=new Array(l),x=0,C=false,L=async W=>{let le=f.slice(W*Ki,(W+1)*Ki),ye=await n.account.positionsBatch(s,le.map(Q=>rl(Q,t)),d);a(()=>{let Q=c$5(ye.freshness,b$1["account.positionsBatch"]);o("account.positionsBatch",ye,Q,d),ye.data.length!==le.length&&Oe("account position batch lookup response length mismatch",t),g[W]=ye.data.map((H,p)=>{let w=le[p];return w===void 0&&Oe("account position batch lookup response length mismatch",t),Ro(H,{wallet:s,chainId:t,expectedRef:w})}),b[W]=Q,y[W]=ye.diagnostics;});},re=async()=>{for(;!C;){let W=x;if(x+=1,W>=l)return;try{await L(W);}catch(le){throw C=true,le}}};await Promise.all(Array.from({length:Math.min(Qd,l)},re));let ne=g.flatMap(W=>W??[]),we=b.filter(W=>W!==void 0),be=y.find(W=>W!==void 0),Xe={data:ne,freshness:tl(we,b$1["account.positionsBatch"].maxLagBlocks)};return be===void 0?Xe:{...Xe,diagnostics:be}},positionsPages:(s,u)=>f$2(d=>c.account.positions(s,d),fn(u,Sn)),positionsIterator:(s,u)=>g$3(d=>c.account.positions(s,d),fn(u,Sn)),orders:async(s,u)=>{let d=await n.account.orders(s,u);return a(()=>{let f=c$5(d.freshness,b$1["account.orders"]);return o("account.orders",d,f,u),On(d,{data:d.data.map(l=>Ga(l,{wallet:s,freshness:f,chainId:t})),freshness:f,pagination:e$2(d.pagination)})})},ordersPages:(s,u)=>f$2(d=>c.account.orders(s,d),fn(u,Sn)),ordersIterator:(s,u)=>g$3(d=>c.account.orders(s,d),fn(u,Sn)),trades:async(s,u)=>{let d=await n.account.trades(s,u);return a(()=>{let f=c$5(d.freshness,b$1["account.trades"]);return o("account.trades",d,f,u),On(d,{data:d.data.map(l=>Ka(l,{wallet:s})),freshness:f,pagination:e$2(d.pagination)})})},tradesPages:(s,u)=>f$2(d=>c.account.trades(s,d),fn(u,Sn)),tradesIterator:(s,u)=>g$3(d=>c.account.trades(s,d),fn(u,Sn))},orders:{get:async(s,u)=>{let d=Zd(s,t),f=await n.orders.get(f$1.toString(d),u);return a(()=>{let l=c$5(f.freshness,b$1["orders.get"]);return o("orders.get",f,l,u),On(f,{data:io(f.data,{chainId:t}),freshness:l})})}},trades:{events:async(s,u,d)=>{let f=vo(s,t),l=await n.trades.events(e.toString(f),u,d);return a(()=>{let g=c$5(l.freshness,b$1["trades.events"]);return o("trades.events",l,g,d),On(l,{data:go(l.data,{tradeId:f,chainId:t}),freshness:g,pagination:e$2(l.pagination)})})},eventsPages:(s,u,d)=>cl(c,s,u,d),eventsIterator:(s,u,d)=>g$3(async f=>{let l=await c.trades.events(s,u,f);return {...l,data:l.data.events}},d??{})},status:{get:async s=>{let u=await n.status.get(s);return a(()=>({data:mo(u.data),freshness:c$5(u.freshness,b$1["status.get"])}))}}};return c}async function el(e,n,t,i,r,a){let o;for(;;){let c=fn(a,Sn);o!==void 0&&(c.cursor=o);let s=await e.account.positions(n,c),u=ko(i,()=>{let d=c$5(s.freshness,b$1["account.positions"]);r("account.positions",s,d,a);for(let f of s.data){let l=Qt(f,{wallet:n,chainId:i});if(nl(l,t,i)&&l.kind==="open_position")return On(s,{data:{ref:{pairIndex:l.pairIndex,index:l.index,tradeId:l.tradeId},status:"found",position:l,pendingReasons:l.pendingReasons},freshness:d})}});if(u!==void 0)return u;if(!s.pagination.has_next||s.pagination.next_cursor===null)break;o=s.pagination.next_cursor;}Oe("account position lookup requires tradeId when no matching position is listed",i);}function ko(e,n){try{return n()}catch(t){if(isDomfiError(t)&&t.code!=="VALIDATION_ERROR")throw t;return Oe("read-plane response validation failed",e,t)}}function nl(e,n,t){if(e.pairIndex===void 0||e.index===void 0)return false;let i=Rn(n.pairIndex,t);return b$2.toNumber(e.pairIndex)===b$2.toNumber(i)&&c$3.toNumber(e.index)===c$3.toNumber(n.index)}function Ji(e,n){if(e!==void 0)return Ao(e,n)}function Ao(e,n){return typeof e=="bigint"?e.toString():a$5(e,n).toString()}function On(e,n){let t=e.diagnostics;return t===void 0?n:{...n,diagnostics:t}}function tl(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=il(n);return i.lagBlocks!==void 0&&r!==void 0&&i.lagBlocks>r&&(i.isStale=true),i}function il(e){if(e!==void 0)return BigInt(e)}function rl(e$1,n){let t=Rn(e$1.pairIndex,n),i=Yi(e$1.index,n),r=Qi(e$1.tradeId,n);return {pair_index:b$2.toNumber(t),index:c$3.toNumber(i),trade_id:e.toString(r)}}function Ro(e$1,n){let t=al(e$1.status,n.chainId),i={pairIndex:b$2.from(e$1.ref.pair_index),index:c$3.from(e$1.ref.index),tradeId:e.parse(e$1.ref.trade_id)};n.expectedRef!==void 0&&xo(i,n.expectedRef,n.chainId);let r=e$1.position===null?void 0:Qt(e$1.position,n);t==="found"&&r===void 0&&Oe("account position lookup status found without position",n.chainId),t!=="found"&&r!==void 0&&Oe("account position lookup non-found status with position",n.chainId),t==="found"&&r!==void 0&&ol(r,i,n.chainId);let a=e$1.pending_reasons.map(sl);return t==="pending"&&a.length===0&&a.push("unknown_pending_mutation"),{ref:i,status:t,...r!==void 0?{position:r}:{},pendingReasons:a}}function al(e,n){if(e==="found"||e==="missing"||e==="pending")return e;Oe(`unknown account position lookup status: ${e}`,n);}function xo(e$1,n,t){let i=Rn(n.pairIndex,t);(b$2.toNumber(e$1.pairIndex)!==b$2.toNumber(i)||c$3.toNumber(e$1.index)!==c$3.toNumber(n.index)||n.tradeId!==void 0&&e.toString(e$1.tradeId)!==e.toString(n.tradeId))&&Oe("account position lookup ref mismatch",t);}function ol(e,n,t){e.kind!=="open_position"&&Oe("account position lookup found non-open position",t),xo({pairIndex:e.pairIndex,index:e.index,tradeId:e.tradeId},n,t);}function Oe(e,n,t){throw new ValidationError({message:e,diagnostics:{sdkVersion:a$1,sourceTag:Yd,chainId:n},...t!==void 0?{cause:t}:{}})}function sl(e){return e==="being_market_closed"||e==="remove_collateral_pending"||e==="trigger_pending"||e==="read_model_not_ready"?e:"unknown_pending_mutation"}function cl(e,n,t,i){return f$2(r=>e.trades.events(n,t,r),i??{})}function To(e){let n={};for(let[t,i]of Object.entries(e))i!==void 0&&(n[t]=i);return n}function ht(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 ul(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 dl(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),To(t)}function ll(e,n){return {wallet:e,pairIndex:n.pairIndex,index:n.index,trade_id:n.tradeId}}function Co(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",To(t),i),ticks:(t,i)=>n("prices.ticks",dl(t,i),i)},account:{positions:(t,i)=>n("account.positions",ht(t,i),i),position:(t,i,r)=>n("account.position",ll(t,i),r),positionsBatch:(t,i,r)=>n("account.positionsBatch",{wallet:t,positions:i},r),orders:(t,i)=>n("account.orders",ht(t,i),i),trades:(t,i)=>n("account.trades",ht(t,i),i)},orders:{get:(t,i)=>n("orders.get",{orderId:t},i)},trades:{events:(t,i,r)=>n("trades.events",ul(t,i.wallet,r),r)},vault:{stats:t=>n("vault.stats",{},t),account:(t,i)=>n("vault.account",ht(t,i),i),accountHistory:(t,i)=>n("vault.accountHistory",ht(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 wt(){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 ti(e){if(e===void 0)return {run:c=>c()};let n=e,t=0,i=[];function r(){let c=false;return ()=>{c||(c=true,t-=1,a());}}function a(){for(;t<n&&i.length>0;){let c=i.shift();if(c===void 0)return;if(c.signal?.aborted===true){c.reject(wt());continue}t+=1,c.resolve(r());}}function o(c){return c?.aborted===true?Promise.reject(wt()):t<n?(t+=1,Promise.resolve(r())):new Promise((s,u)=>{let d={resolve:l=>{f(),s(l);},reject:l=>{f(),u(l);},...c!==void 0?{signal:c}:{},abort:()=>{let l=i.indexOf(d);l>=0&&i.splice(l,1),d.reject(wt());}};function f(){c?.removeEventListener("abort",d.abort);}c?.addEventListener("abort",d.abort,{once:true}),i.push(d);})}return {async run(c,s){let u=await o(s);if(s?.aborted===true)throw u(),wt();if(s===void 0)try{return await c()}finally{u();}let d=s;return await new Promise((f,l)=>{let g=false;function b(C){g||(g=true,d.removeEventListener("abort",y),u(),C());}function y(){b(()=>l(wt()));}if(d.addEventListener("abort",y,{once:true}),d.aborted===true){y();return}let x;try{x=Promise.resolve(c());}catch(C){b(()=>l(C));return}x.then(C=>b(()=>f(C)),C=>b(()=>l(C)));})}}}var Do=["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 ke(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 ii={"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/${ke(e,"pairIndex")}`},"markets.state":{method:"GET",operationId:"getMarketState",schemaName:"MarketStateApiResponse",domain:true,paginated:"none",openapiPath:"/markets/{pairIndex}/state",pathParams:["pairIndex"],queryParams:[],path:e=>`/markets/${ke(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/${ke(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/${ke(e,"wallet")}/positions/${ke(e,"pairIndex")}/${ke(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/${ke(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/${ke(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/${ke(e,"wallet")}/trades`},"orders.get":{method:"GET",operationId:"getOrder",schemaName:"OrderApiResponse",domain:true,paginated:"none",openapiPath:"/orders/{orderId}",pathParams:["orderId"],queryParams:[],path:e=>`/orders/${ke(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/${ke(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/${ke(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/${ke(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/${ke(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/${ke(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/${ke(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/${ke(e,"address")}`},"status.get":{method:"GET",operationId:"getStatus",schemaName:"StatusApiResponse",domain:true,paginated:"none",openapiPath:"/status",pathParams:[],queryParams:[],path:()=>"/status"}};var fl="read-plane",Eo=Symbol("domfi.retryAfterDelayMs"),pl=100,ml=5e3,gl=.25,Vo;function hl(){return Vo??=Promise.all([import('valibot'),import('./rawSchemas-MAT7EZCV.js')]).then(([e,n])=>({parse:e.parse,rawSchemas:n.rawSchemas})),Vo}var wl=Do.reduce((e,n)=>{let t=ii[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 Pn(e,n){let t={sdkVersion:a$1,sourceTag:fl,chainId:e};return n!==void 0&&(t.requestId=n),t}function Xn(e,n,t){return new ValidationError({message:n,diagnostics:Pn(e),...t!==void 0?{cause:t}:{}})}function No(e){return e.trim().replace(/\/+$/,"")}function bl(e,n){let t=No(e);if(t.length===0)throw Xn(n,"baseUrl must be a non-empty absolute http(s) URL",e);if(t.includes("?")||t.includes("#"))throw Xn(n,"baseUrl must not include query parameters or a fragment",e);let i;try{i=new URL(t);}catch(r){throw Xn(n,"baseUrl must be a valid absolute http(s) URL",r)}if(i.protocol!=="http:"&&i.protocol!=="https:")throw Xn(n,"baseUrl must use http: or https:",e);if(i.search!==""||i.hash!=="")throw Xn(n,"baseUrl must not include query parameters or a fragment",e);return t}function yl(e){let n=No(e);return n.endsWith("/v2")?n.slice(0,-3):n}function Rl(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 vl(e,n,t,i){let r=ii[t],a=r.base==="api"?n:e,o=wl[t],c=o.length>0?Rl(o,i):"";return `${a}${r.path(i)}${c}`}async function Pl(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 vn(e){return new TimeoutError({message:"REST request timed out",diagnostics:Pn(e)})}function ri(e,n){return new AbortError({message:"REST request aborted",diagnostics:Pn(e),cause:n})}function Zn(){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 Xi(e){return e instanceof Error&&e.name==="AbortError"}function oi(e){return e?.aborted===true}function Fo(e){return e instanceof 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 kl(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Io(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 Al(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 xl(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>0))throw new ValidationError({message:`${n} must be a positive integer`,diagnostics:Pn(t)})}function Tl(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>=0))throw new ValidationError({message:`${n} must be a non-negative integer`,diagnostics:Pn(t)})}function So(e,n,t){if(e!==void 0&&!(Number.isFinite(e)&&e>0))throw new ValidationError({message:`${n} must be a finite positive number`,diagnostics:Pn(t),cause:e})}function Zi(e,n,t,i){try{return i()}catch(r){throw Xn(e,`failed to ${t} for REST route ${n}`,r)}}function Cl(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&&kl(t.details)&&(i.details=t.details),i}function Dl(e,n){let t=Cl(e.body),i=t?.requestId??Io(e.headers,"x-request-id"),r=e.status===429||e.status>=500,a={message:t?.message??`REST request failed with HTTP ${e.status}`,diagnostics:Pn(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 ApiError(a);if(e.status===429){let c=Al(Io(e.headers,"retry-after"));c!==void 0&&(o[Eo]=c);}return o}function Vl(e){return e instanceof ApiError||Fo(e)?e.transient:e instanceof TimeoutError}function Il(e,n){let t=Math.min(pl*2**n,ml),i=Math.random()*t*gl,r=e?.[Eo];return Math.ceil(Math.max(t+i,r??0))}function Sl(e){return e!==void 0&&e>0?e:void 0}function er(e){if(e!==void 0)return Math.max(0,Math.floor(e-Date.now()))}function Ol(e,n){return e<=0?Promise.resolve():oi(n)?Promise.reject(Zn()):new Promise((t,i)=>{let r=setTimeout(()=>{a(),t();},e);function a(){clearTimeout(r),n?.removeEventListener("abort",o);}function o(){a(),i(Zn());}n?.addEventListener("abort",o,{once:true});})}async function Ml(e,n,t,i){let r=n.signal,a=t!==void 0&&t>0;if(!a&&r===void 0)return e(n);if(oi(r))throw Zn();let o=new AbortController,c,s=false,u,d,f={...n,signal:o.signal},l=[];if(r!==void 0){let g=new Promise((y,x)=>{d=x;}),b=()=>{o.abort(r.reason),d?.(Zn());};l.push(g),r.aborted?b():(r.addEventListener("abort",b,{once:true}),c=()=>{r.removeEventListener("abort",b);});}if(a){let g=new Promise((b,y)=>{u=setTimeout(()=>{s=true,o.abort(),y(vn(i));},t);});l.push(g);}try{l.unshift(e(f));let g=await Promise.race(l);if(s)throw vn(i);if(oi(r))throw Zn();return g}catch(g){throw s?vn(i):g}finally{u!==void 0&&clearTimeout(u),c?.();}}function Lo({baseUrl:e,chainId:n,requestTransport:t=Pl,defaultTimeoutMs:i,maxConcurrentRequests:r,retryBudget:a,onEvent:o}){xl(r,"maxConcurrentRequests",n),Tl(a,"retryBudget",n),So(i,"defaultTimeoutMs",n);let c=bl(e,n),s=yl(c),u=Pn(n),d=ti(r);return {async request(f,l,g={}){So(g.timeoutMs,"timeoutMs",n);let b=l,y=Zi(n,f,"build URL",()=>vl(c,s,f,b)),x=g.timeoutMs??i,C=ii[f],L={method:C.method,url:y},re="body"in C?Zi(n,f,"build request body",()=>C.body(b)):void 0;re!==void 0&&(L.headers={"content-type":"application/json"},L.body=Zi(n,f,"serialize request body",()=>JSON.stringify(re))),g.signal!==void 0&&(L.signal=g.signal),x!==void 0&&(L.timeoutMs=x);let ne=Sl(x),we=ne===void 0?void 0:Date.now()+ne,be=async()=>{let W=we===void 0?x:er(we);if(W!==void 0&&W<=0)throw vn(n);let le=L;if(W!==x&&(le={...L},W!==void 0&&(le.timeoutMs=W)),oi(g.signal))throw ri(n,Zn());o?.({type:"rest_request",diagnostics:u,url:y});let ye;try{ye=await Ml(t,le,W,n);}catch(H){throw H instanceof TimeoutError?H:g.signal?.aborted===true||Xi(H)?ri(n,H):Fo(H)?H:new TransportError({message:"REST transport failed",diagnostics:u,cause:H,transient:true})}if(o?.({type:"rest_response",diagnostics:u,url:y,status:ye.status}),ye.status<200||ye.status>=300)throw Dl(ye,n);let Q;try{Q=JSON.parse(ye.body);}catch(H){throw new ValidationError({message:"REST response was not valid JSON",diagnostics:u,cause:H})}try{let{parse:H,rawSchemas:p}=await hl();return H(p[f],Q)}catch(H){throw new ValidationError({message:`REST response for ${f} did not match the raw schema`,diagnostics:u,cause:H})}};return (async()=>{let W=a??0,le=0,ye=async()=>{let Q=er(we);if(Q===void 0)return d.run(be,g.signal);if(Q<=0)throw vn(n);let H=new AbortController,p=false,w,k=setTimeout(()=>{p=true,H.abort();},Q),A=()=>{clearTimeout(k),w?.();};if(g.signal!==void 0){let P=()=>{H.abort(g.signal?.reason);};g.signal.aborted?P():(g.signal.addEventListener("abort",P,{once:true}),w=()=>{g.signal?.removeEventListener("abort",P);});}try{return await d.run(async()=>(A(),be()),H.signal)}catch(P){throw p?vn(n):P}finally{A();}};for(;;)try{return await ye()}catch(Q){if(Q instanceof AbortError)throw Q;if(g.signal?.aborted===true||Xi(Q))throw ri(n,Q);if(!Vl(Q)||W<=0)throw Q;let H=er(we);if(H!==void 0&&H<=0)throw Q instanceof TimeoutError?Q:vn(n);W-=1;let p=Il(Q,le);le+=1;try{let w=H===void 0?p:Math.min(p,H);await Ol(w,g.signal);}catch(w){throw Xi(w)?ri(n,w):w}if(H!==void 0&&p>=H)throw vn(n)}})()}}}var ql="delegation-runtime",Ho="0x0000000000000000000000000000000000000000",Bl=/^0x[0-9a-fA-F]{40}$/,Hl=2n**256n-1n,$l={Delegation:[{name:"delegator",type:"address"},{name:"delegate",type:"address"},{name:"nonce",type:"uint256"},{name:"expiry",type:"uint256"}]};function $e(e){let n={sdkVersion:a$1,sourceTag:ql,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function kn(e,n,t){throw new ValidationError({message:n,diagnostics:$e(e),...{}})}function ci(e,n,t){return new AbortError({message:n,diagnostics:$e(e),...t!==void 0?{cause:t}:{}})}function ui(e,n,t){throw ci(e,n,t)}function $o(e,n,t){return new TimeoutError({message:n,diagnostics:$e(e),...t!==void 0?{cause:t}:{}})}function Ul(e,n,t){throw new ContractRevertError({message:`delegation ${n} reverted`,diagnostics:$e(e),cause:t})}function tr(e){return e instanceof AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function di(e,n,t){n?.aborted===true&&ui(e,t,n.reason);}function sn(e,n,t){n.toLowerCase()===Ho&&kn(e,`${t} cannot be the zero address`);}function si(e,n,t){(typeof n!="bigint"||n<0n||n>Hl)&&kn(e,`${t} must be a uint256 bigint`);}function Uo(e,n){return Object.prototype.hasOwnProperty.call(e,n)}function jl(e,n,t){if(!(typeof n!="object"||n===null))for(let i of ["delegation","trader","readinessPolicy","timeoutMs","maxOracleFeeWei","skipApprovalCheck"])Uo(n,i)&&kn(e,`${t} options cannot include ${i}`);}function jo(e,n,t){typeof n!="object"||n===null||Uo(n,"readinessPolicy")&&kn(e,`${t} options cannot include readinessPolicy`);}function ir(e){let n=e.chain.contracts.DomfiTrading;return n!==void 0?n:kn(e,"chain profile is missing DomfiTrading contract address")}function zo(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 Go(e,n,t="delegation write"){if(n!==void 0)return e.wrapWalletClient?.(n)??n;if(e.walletClient!==void 0)return e.walletClient;throw new MissingWalletClientError({message:`${t} requires a wallet client`,diagnostics:$e(e),hint:"Pass walletClient to createDomfiClient or delegation.sign()."})}function zl(e,n,t){let i=zo(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new WalletAccountMismatchError({message:`wallet client account ${i} does not match delegator ${t}`,diagnostics:$e(e),hint:"Sign delegation typed data with the delegator account."})}function Ko(e,n){let t=n.chain?.id;if(!(t===void 0||t===e.chain.chainId))throw new WalletChainMismatchError({message:`wallet client chain ${t} does not match DomFi chain ${e.chain.chainId}`,diagnostics:$e(e),hint:"Use a wallet client connected to the same chain as createDomfiClient."})}function Gl(e,n,t){let i=zo(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new WalletAccountMismatchError({message:`wallet client account ${i} does not match requested account ${t}`,diagnostics:$e(e),hint:"Use the connected wallet account or pass the matching account option."})}function Jo(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 Kl(e,n,t){return {hash:n,pollingInterval:b(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 Jl(e,n){let t=f(e,"delegation receipt wait"),i=t.waitForTransactionReceipt,r=d({wait:async a=>{di(e,a?.signal,"delegation receipt wait was aborted");try{return await c$2(t,n,()=>i(Kl(e,n,a)),a?.signal)}catch(o){throw (a?.signal?.aborted===true||tr(o))&&ui(e,"delegation receipt wait was aborted",o),o}},mapAbort:a=>ci(e,"delegation receipt wait was aborted",a)});return {kind:"receipt",hash:n,waitReceipt:r}}async function Wo(e,n,t,i,r){jo(e,r,n),di(e,r?.signal,"delegation read was aborted"),g$2(r?.timeoutMs,"timeoutMs",$e(e));let a$1=f(e,n),o=k({...r?.signal!==void 0?{signal:r.signal}:{},...r?.timeoutMs!==void 0?{timeoutMs:r.timeoutMs}:{},diagnostics:$e(e)});try{return await o.runAttempt(async c=>a$1.readContract({address:ir(e),abi:a.DomfiTrading,functionName:t,args:i,...c!==void 0?{signal:c}:{}}),c=>ci(e,"delegation read was aborted",c),c=>$o(e,"delegation read timed out",c))}catch(c){throw (r?.signal?.aborted===true||tr(c))&&ui(e,"delegation read was aborted",c),c}}function Yl(e,n,t){return typeof n=="string"&&Bl.test(n)?n:kn(e,`${t} read returned a malformed address`)}function Ql(e,n,t){return typeof n=="bigint"?n:kn(e,`${t} read returned a malformed bigint`)}async function nr(e,n,t,i){di(e,i?.signal,"delegation write was aborted"),jl(e,i,`delegation.${n}`),f(e,`delegation.${n}`);let r=Go(e,void 0,`delegation.${n}`),a$1=h(e,i?.account,`delegation.${n}`);Ko(e,r),Gl(e,r,a$1);try{let o=await r.writeContract({address:ir(e),abi:a.DomfiTrading,functionName:n,args:t,account:Jo(r,a$1),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 Jl(e,o)}catch(o){throw (i?.signal?.aborted===true||tr(o))&&ui(e,"delegation write was aborted",o),isContractRevertLikeError(o)&&Ul(e,n,o),o}}function Xl(e,n){return /^0x[0-9a-fA-F]{130}$/.test(n)||kn(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 rr(e){async function n(r,a){sn(e,r,"trader");let o=Yl(e,await Wo(e,"delegation.getDelegate","delegations",[r],a),"delegations");return o.toLowerCase()===Ho?void 0:o}async function t(r,a){return sn(e,r,"trader"),Ql(e,await Wo(e,"delegation.getNonce","delegatableNonces",[r],a),"delegatableNonces")}async function i(r,a){sn(e,r.delegator,"delegator"),sn(e,r.delegate,"delegate"),jo(e,a,"delegation.typedData"),di(e,a?.signal,"delegation typed data build was aborted"),g$2(a?.timeoutMs,"timeoutMs",$e(e)),si(e,r.expiry,"expiry");let o=r.nonce===void 0?await t(r.delegator,a):r.nonce;return si(e,o,"nonce"),{domain:{name:"Domination Finance",version:"1",chainId:e.chain.chainId,verifyingContract:ir(e)},primaryType:"Delegation",types:$l,message:{delegator:r.delegator,delegate:r.delegate,nonce:o,expiry:r.expiry}}}return {getDelegate:n,isDelegateFor:async(r,a,o)=>(sn(e,a,"delegate"),(await n(r,o))?.toLowerCase()===a.toLowerCase()),getNonce:t,setDelegate:async(r,a)=>(sn(e,r,"delegate"),nr(e,"setDelegate",[r],a)),removeDelegate:r=>nr(e,"removeDelegate",[],r),typedData:i,sign:async(r,a,o)=>{sn(e,r.delegator,"delegator"),sn(e,r.delegate,"delegate");let c=Go(e,a,"delegation signing");zl(e,c,r.delegator),Ko(e,c);let s=await i(r,o),d=await k({...o?.signal!==void 0?{signal:o.signal}:{},...o?.timeoutMs!==void 0?{timeoutMs:o.timeoutMs}:{},diagnostics:$e(e)}).runAttempt(async f=>c.signTypedData({...s,account:Jo(c,r.delegator),...f!==void 0?{signal:f}:{}}),f=>ci(e,"delegation signing was aborted",f),f=>$o(e,"delegation signing timed out",f));return {...s.message,signature:d}},setDelegateWithSignature:async(r,a)=>{sn(e,r.delegator,"delegator"),sn(e,r.delegate,"delegate");let{v:o,r:c,s}=Xl(e,r.signature);return si(e,r.nonce,"nonce"),si(e,r.expiry,"expiry"),nr(e,"setDelegateWithSignature",[r.delegator,r.delegate,r.nonce,r.expiry,o,c,s],a)}}}var Zl=new Set(["estimateGas","estimateContractGas","getBlock","multicall","readContract","sendTransaction","signTypedData","simulateContract","writeContract"]);function ef(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 nf(e,n){let t=new Map;return new Proxy(e,{get(i,r){let a=Reflect.get(i,r,i);if(!Zl.has(r)||typeof a!="function")return a;let o=t.get(r);if(o!==void 0&&o.value===a)return o.wrapper;let c=(...s)=>n.run(()=>Promise.resolve(a.apply(i,s)),ef(s));return t.set(r,{value:a,wrapper:c}),c}})}function Yo(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=nf(t,e);return n.set(t,r),r}}var rf=/^[A-Z0-9]{4,16}$/,af=0xffffffffffffffffn;function of(e){return {sdkVersion:a$1,sourceTag:"referrals",chainId:e?.chainId??0}}function bt(e,n,t){throw new ValidationError({message:e,diagnostics:of(t),...n!==void 0?{cause:n}:{}})}function sf(e){return (n,t)=>bt(n,t,e)}function cf(e,n,t){try{return c$6(e,n)}catch(i){let r=i instanceof Error?i.message:`${n} must be an integer`;bt(r,i,t);}}function Qo(e,n,t){try{return d$1(e,n)}catch(i){let r=i instanceof Error?i.message:`${n} invalid timestamp`;bt(r,i,t);}}function yt(e,n){let t=e.trim().toUpperCase();return rf.test(t)||bt("referral code must be 4-16 uppercase alphanumeric characters",void 0,n),t}function uf(e,n){let t=cf(e,"referral code_id",n);return (t<0n||t>af)&&bt("referral code_id must fit in uint64",void 0,n),t}function ar(e,n){return {codeId:uf(e.code_id,n),code:yt(e.code,n),createdAt:Qo(e.created_at,"referral created_at",n)}}function Xo(e,n){return {referee:c$4(e.referee,"referee",sf(n)),code:yt(e.code,n),boundAt:Qo(e.bound_at,"referral bound_at",n)}}function or(e){return e instanceof ApiError&&e.httpStatus===404}function Zo(e){let n={chainId:e.chainId};async function t(a,o){let c=yt(a,n);return ar(await e.raw.referrals.lookup(c,o),n)}async function i(a,o){try{return Xo(await e.raw.referrals.getBinding(a,o),n)}catch(c){if(or(c))return null;throw c}}async function r(a,o){try{return ar(await e.raw.referrals.getCode(a,o),n)}catch(c){if(or(c))return null;throw c}}return {lookup:t,getBinding:i,getCode:r,async checkEligibility(a,o){let c;try{c=yt(a.code,n);}catch(f){let l=f instanceof Error?f.message:"invalid referral code";return {status:a$3.InvalidCode,code:a.code,message:l}}let s;try{s=await t(c,o);}catch(f){if(or(f))return {status:a$3.CodeNotFound,code:c};throw f}let u=await i(a.account,o);if(u!==null)return {status:a$3.AlreadyBound,binding:u};let d=await r(a.account,o);return d!==null&&d.codeId===s.codeId?{status:a$3.SelfReferral,referral:s,ownCode:d}:{status:a$3.Usable,referral:s}}}}var is=a.IERC20,gf="token-runtime";function Rt(e){let n={sdkVersion:a$1,sourceTag:gf,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function es(e,n,t){throw new ValidationError({message:n,diagnostics:Rt(e),...t!==void 0?{cause:t}:{}})}function rs(e,n,t){if(typeof t!="bigint")return es(e,`${n} read returned invalid data`);try{return g.fromRaw(t)}catch(i){return es(e,`${n} read returned invalid data`,i)}}function li(e,n,t="token approval was aborted"){return new AbortError({message:t,diagnostics:Rt(e),cause:n})}function as(e,n,t="token read timed out"){return new TimeoutError({message:t,diagnostics:Rt(e),...n!==void 0?{cause:n}:{}})}function hf(e,n){return new ContractRevertError({message:"token approval reverted",diagnostics:Rt(e),cause:n})}function wf(e){return e instanceof AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function bf(e,n,t="token approval was aborted"){if(n?.aborted===true)throw li(e,n.reason,t)}function sr(e){return e.chain.collateral.tokenAddress}function yf(e,n,t){return {hash:n,pollingInterval:b(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 Rf(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 os(e,n,t,i,r){let a=Rt(e);g$2(r?.timeoutMs,"timeoutMs",a);let o=k({...r?.signal!==void 0?{signal:r.signal}:{},...r?.timeoutMs!==void 0?{timeoutMs:r.timeoutMs}:{},diagnostics:a}),c=f(e,n);return o.runAttempt(s=>c.readContract({address:sr(e),abi:is,functionName:t,args:i,...s!==void 0?{signal:s}:{}}),s=>li(e,s,"token read was aborted"),s=>as(e,s))}async function ns(e,n,t,i,r){let a=await os(e,n,"allowance",[t,i],r);return rs(e,n,a)}function cr(e){return {balanceOf:async(n,t)=>{let i=await os(e,"token.balanceOf","balanceOf",[n],t);return rs(e,"token.balanceOf",i)},allowance:(n,t,i)=>ns(e,"token.allowance",n,t??e.chain.collateral.tradingStorageSpender,i),approvalNeed:async(n,t,i,r)=>{let a=await ns(e,"token.approvalNeed",n,t,r);return {owner:n,token:sr(e),spender:t,currentAllowance:a,requiredAllowance:i,action:g.toRaw(a)>=g.toRaw(i)?"none":"approve"}},approve:async(n,t,i$1)=>{bf(e,i$1?.signal);let r=f(e,"token.approve"),a=g$1(e,"token.approve"),o=h(e,i$1?.account,"token.approve");i(e,o);let c=Rf(a,o),s;try{s=await a.writeContract({address:sr(e),abi:is,functionName:"approve",args:[n,g.toRaw(t)],account:c,chain:null,...i$1?.gas!==void 0?{gas:i$1.gas}:{},...i$1?.nonce!==void 0?{nonce:i$1.nonce}:{},...i$1?.maxFeePerGas!==void 0?{maxFeePerGas:i$1.maxFeePerGas}:{},...i$1?.signal!==void 0?{signal:i$1.signal}:{}});}catch(d){throw i$1?.signal?.aborted===true||wf(d)?li(e,d):isContractRevertLikeError(d)?hf(e,d):d}let u=d({wait:d=>c$2(r,s,()=>r.waitForTransactionReceipt(yf(e,s,d)),d?.signal),mapAbort:d=>li(e,d),mapTimeout:d=>as(e,d,"token approval receipt wait timed out")});return {kind:"receipt",hash:s,waitReceipt:u}}}}var Af="valuation",fs="0x0000000000000000000000000000000000000000",lr=`0x${"00".repeat(32)}`,nt=300*1e3,ps=60*1e3,ms=300*1e3;function vt(e){return {sdkVersion:a$1,sourceTag:Af,chainId:e.chain.chainId,...e.chain.registryAddress!==void 0?{registryAddress:e.chain.registryAddress}:{}}}function ce(e,n,t){throw new ValidationError({message:n,diagnostics:vt(e),...t!==void 0?{cause:t}:{}})}function xf(e,n){return n instanceof AbortError?n:new AbortError({message:"valuation read was aborted",diagnostics:vt(e),...n!==void 0?{cause:n}:{}})}function Tf(e,n){return new TimeoutError({message:"valuation read timed out",diagnostics:vt(e),...n!==void 0?{cause:n}:{}})}function Cf(e,n){return n===void 0?e:{...e??{},signal:n}}function fr(e,n,t){return k({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:vt(e)}).runAttempt(r=>t(Cf(n,r)),r=>xf(e,r),r=>Tf(e,r))}function bi(e){if(e.publicClient!==void 0)return e.publicClient;throw new MissingPublicClientError({message:"valuation requires a public client",diagnostics:vt(e),hint:"Pass publicClient to createDomfiClient."})}function Df(e){return b$4(e,{bytes:32,allowEmpty:false})}function tt(e){return Df(e)&&e!==lr}function fi(e,n){return f$3(n,"pair oracle feed",()=>ce(e,"pair oracle feed read returned invalid data"))}function Qe(e){return `${e.wallet.toLowerCase()}:${b$2.toNumber(e.pairIndex)}:${c$3.toNumber(e.index)}`}function Re(e,n){let t=e.chain.contracts[n];return t===void 0?ce(e,`chain profile is missing ${n} contract address`):c$4(t,`${n} contract address`,(i,r)=>ce(e,i,r))}function un(e,n){return typeof n.readContract!="function"&&ce(e,"public client is missing readContract"),n.readContract}function gs(e,n){return typeof n.getBlock!="function"&&ce(e,"public client is missing getBlock"),n.getBlock}function Vf(e){let n=e.multicall;return typeof n=="function"?n:void 0}function se(e,n,t){if(Array.isArray(e))return e[t];if(typeof e=="object"&&e!==null&&n in e)return e[n]}function Ue(e,n,t){return typeof n=="bigint"?n:ce(e,`${t} read returned invalid data`)}function cn(e,n,t){return typeof n=="number"&&Number.isInteger(n)?n:typeof n=="bigint"&&n>=0n&&n<=BigInt(Number.MAX_SAFE_INTEGER)?Number(n):ce(e,`${t} read returned invalid data`)}function If(e,n,t){return c$4(n,t,()=>ce(e,`${t} read returned invalid data`))}function hs(e,n,t){return typeof n=="boolean"?n:ce(e,`${t} read returned invalid data`)}function pr(e,n){let t={};return e!==void 0&&(t.blockNumber=e),n!==void 0&&(t.signal=n,t.requestOptions={signal:n}),t}function ws(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 cs(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 bs(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 it(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 mr(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 We(e,n,t){let i=`${e.chain.chainId}:${n.toLowerCase()}`;return t===void 0?i:`${i}:${t}`}function Sf(e,n){return e.toLowerCase()===n.toLowerCase()}function ys(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(c=>{throw e.get(n)===o&&e.delete(n),c}),e.set(n,o),o.value}function pi(e,n){let t=e.get(n);if(t!==void 0){if(t.expiresAt>Date.now())return t.value;e.delete(n);}}function Of(e,n,t,i){e.set(n,{value:Promise.resolve(i),expiresAt:Date.now()+t});}function An(e,n,t,i,r,a){e?.generation===n&&Of(t,i,r,a);}function Rs(e,n,t){e!==void 0&&e.generation===n&&e.feedInfoUnsupportedByContract.add(t);}function Mf(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 vs(e){let n=Mf(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 _f(e,n){return {collateralRaw:Ue(e,se(n,"collateral",0),"open trade collateral"),openPriceRaw:Ue(e,se(n,"openPrice",1),"open trade openPrice"),tpRaw:Ue(e,se(n,"tp",2),"open trade tp"),slRaw:Ue(e,se(n,"sl",3),"open trade sl"),trader:If(e,se(n,"trader",4),"open trade trader"),leverageRaw:cn(e,se(n,"leverage",5),"open trade leverage"),pairIndex:cn(e,se(n,"pairIndex",6),"open trade pairIndex"),index:cn(e,se(n,"index",7),"open trade index"),buy:hs(e,se(n,"buy",8),"open trade buy")}}function Ef(e,n,t){if(t.trader===fs||t.collateralRaw===0n)return;let i=b$2.toNumber(n.pairIndex),r=c$3.toNumber(n.index);t.pairIndex===i&&t.index===r||ce(e,"onchain trade slot does not match requested position");}function gr(e,n,t){let i=_f(e,t);return Ef(e,n,i),i}function Ps(e,n){return {tradeIdRaw:Ue(e,se(n,"tradeId",0),"open trade info tradeId"),oiNotionalRaw:Ue(e,se(n,"oiNotional",1),"open trade info oiNotional"),tpLastUpdatedRaw:Ue(e,se(n,"tpLastUpdated",2),"open trade info tpLastUpdated"),slLastUpdatedRaw:Ue(e,se(n,"slLastUpdated",3),"open trade info slLastUpdated"),initialLeverageRaw:cn(e,se(n,"initialLeverage",4),"open trade info initialLeverage"),createdAt:cn(e,se(n,"createdAt",5),"open trade info createdAt"),beingMarketClosed:hs(e,se(n,"beingMarketClosed",6),"open trade info beingMarketClosed")}}function Nf(e,n,t,i,r){return {address:Re(e,"DomfiTradingStorage"),abi:a.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,t,i],...r}}function Ff(e,n,t,i,r){return {address:Re(e,"DomfiTradingStorage"),abi:a.DomfiTradingStorage,functionName:"getOpenTradeInfo",args:[n.wallet,t,i],...r}}function ks(e,n,t){return {address:Re(e,"DomfiPairsStorage"),abi:a.DomfiPairsStorage,functionName:"getFeedInfo",args:[n],...t}}function mi(e,n,t){return {address:Re(e,"DomfiPairsStorage"),abi:a.DomfiPairsStorage,functionName:"pairFeed",args:[n],...t}}function As(e,n,t){return {address:Re(e,"DomfiOracle"),abi:a.DomfiOracle,functionName:"getValue",args:[n],...t}}function xs(e,n,t){return {address:Re(e,"DomfiPairsStorage"),abi:a.DomfiPairsStorage,functionName:"pairMaxLeverage",args:[n],...t}}function ur(e,n){return {address:Re(e,"DomfiPairInfos"),abi:a.DomfiPairInfos,functionName:"liqMarginThresholdP",...n}}function Lf(e,n,t,i,r,a$1){return {address:Re(e,"DomfiPairInfos"),abi:a.DomfiPairInfos,functionName:"getTradeFundingFee",args:[n.wallet,t,i,r.buy,r.collateralRaw,r.leverageRaw],...a$1}}function us(e){let{slot:n,oracle:t,fundingFeeRaw:i,pairMaxLeverageRaw:r,liqMarginThresholdP:a}=e,o=m$2({collateralRaw:n.collateralRaw,leverageRaw:n.leverageRaw,maxLeverageRaw:r,liqMarginThresholdP:a});return {oracle:t,fundingFeeRaw:i,pairMaxLeverageRaw:r,liquidationPriceRaw:n$2({openPriceRaw:n.openPriceRaw,buy:n.buy,collateralRaw:n.collateralRaw,leverageRaw:n.leverageRaw,fundingFeeRaw:i,maxLeverageRaw:r,liqMarginThresholdP:a}),liquidationMarginRaw:o}}function Wf(e){let n=new Map;for(let t of e)n.set(Qe(t.position),t.fundingFeeRaw);return n}function ds(e,n,t){let i=n.get(Qe(t));return i!==void 0?i:ce(e,"provided funding fee missing for position")}async function gi(e,n,t,i,r,a){let o=Re(e,"DomfiPairsStorage"),c=r?it(e,a):void 0,s=a,u=We(e,o),d=We(e,o,t),f=c===void 0?void 0:pi(c.feedByPair,d);if(f!==void 0)return {feed:await f,cacheable:true};let l=c?.feedInfoUnsupportedByContract.has(u)===true,g=false;if(!l)try{let x=await un(e,n)(ks(e,t,i)),C=se(x,"",0);if(tt(C))return c!==void 0&&An(c,s,c.feedByPair,d,nt,C),{feed:C,cacheable:!0}}catch(x){vs(x)&&(l=true,g=c!==void 0);}let b=await un(e,n)(mi(e,t,i)),y=fi(e,b);return l&&tt(y)?(c!==void 0&&(g&&Rs(c,s,u),An(c,s,c.feedByPair,d,nt,y)),{feed:y,cacheable:true}):{feed:y,cacheable:false}}async function Ts(e,n,t,i,r=false,a){let{feed:o}=await gi(e,n,t,i,r,a);return hi(e,n,o,i)}function Cs(e,n,t){let i=Ue(e,se(t,"value",0),"oracle value");return i<=0n&&ce(e,"oracle value read returned non-positive price"),{feed:n,priceRaw:i,timestampMs:Ue(e,se(t,"timestamp",1),"oracle timestamp")}}async function hi(e,n,t,i){t===lr&&ce(e,"pair oracle feed is not configured");let r=await un(e,n)(As(e,t,i));return Cs(e,t,r)}async function dr(e,n,t,i,r,a){let o=Re(e,"DomfiPairsStorage"),c=r?it(e,a):void 0,s=We(e,o,t),u=async()=>{let d=await un(e,n)(xs(e,t,i));return cn(e,d,"pair max leverage")};return c===void 0?u():ys(c.maxLeverageByPair,s,ps,u)}async function wi(e,n,t,i=false,r){let a=Re(e,"DomfiPairInfos"),o=i?it(e,r):void 0,c=We(e,a),s=async()=>{let u=await un(e,n)(ur(e,t));return cn(e,u,"liquidation margin threshold")};return o===void 0?s():ys(o.liqMarginThresholdP,c,ms,s)}function qf(e){if(typeof e!="object"||e===null||!("status"in e))return e;let n=e;return n.status==="success"?n.result:void 0}function Bf(e){if(typeof e!="object"||e===null||!("status"in e))return;let n=e;return n.status==="failure"?n.error:void 0}function Mn(e,n,t,i){return n.has(t)||ce(e,i),n.get(t)}async function ls(e,n,t,i,r){let a=[...new Set(t)],o=a.filter(s=>!n.has(s));if(o.length>0){let s=i(o).catch(u=>{for(let d of o)n.delete(d);throw u});for(let u of o)n.set(u,s.then(d=>d.has(u)?d.get(u):(n.delete(u),ce(e,r(u))),d=>{throw n.delete(u),d}));}let c=await Promise.all(a.map(async s=>{let u=n.get(s);return u===void 0&&ce(e,r(s)),[s,await u]}));return new Map(c)}async function Hf(e,n,t){let i=bi(e),r=await gs(e,i)(ws(n)),a=n?.blockTag==="latest"?r.number:n?.blockTag??r.number,o=pr(a,t??n?.signal),c=n?.blockTag===void 0||n.blockTag==="latest",s=c?bs(e).generation:void 0,u=Vf(i),d=new Map,f=new Map,l=new Map,g,b=Promise.resolve(),y=()=>c?it(e,s):void 0,x=()=>We(e,Re(e,"DomfiPairInfos")),C=m=>(g=m.catch(h=>{throw g=void 0,h}),g),L=()=>{let m=y(),h=m===void 0?void 0:pi(m.liqMarginThresholdP,x());return h===void 0?void 0:C(h)},re=m=>{let h=y();h!==void 0&&An(h,s,h.liqMarginThresholdP,x(),ms,m),g=Promise.resolve(m);},ne=(m,h,R)=>a===void 0?R():cs(m,h,R),we=m=>{let h=()=>{if(!c)return gi(e,i,m,o,c);let v=b.then(()=>gi(e,i,m,o,c,s));return b=v.then(()=>{},()=>{}),v};if(a===void 0)return h();let R=d.get(m);if(R!==void 0)return R;let V=h().then(v=>(v.cacheable?d.set(m,Promise.resolve(v)):d.delete(m),v),v=>{throw d.delete(m),v});return d.set(m,V),V},be=async m=>(await we(m)).feed,Xe=m=>ne(l,m,()=>dr(e,i,m,o,c,s)),W=()=>a===void 0?wi(e,i,o,c,s):g!==void 0?g:C(wi(e,i,o,c,s)),le=m=>be(m).then(h=>a===void 0?hi(e,i,h,o):cs(f,h,()=>hi(e,i,h,o))),ye=async m=>{let h=[...new Set(m)],R=Re(e,"DomfiPairsStorage"),V=s,v=()=>c?it(e,V):void 0,M=We(e,R),D=new Map,T=[],E=(I,$)=>{D.set(I,$),a!==void 0&&$.cacheable&&d.set(I,Promise.resolve($));},j=()=>{let I=new Map;for(let $ of h){let N=D.get($);N===void 0&&ce(e,"pair oracle feed read returned no result"),I.set($,N.feed);}return I};for(let I of h){let $=a===void 0?void 0:d.get(I);if($!==void 0){D.set(I,await $);continue}let N=v(),z=N===void 0?void 0:pi(N.feedByPair,We(e,R,I));if(z!==void 0){E(I,{feed:await z,cacheable:true});continue}T.push(I);}if(T.length===0)return j();let ue=async I=>{let $=await un(e,i)(mi(e,I,o));return fi(e,$)};if(v()?.feedInfoUnsupportedByContract.has(M)===true){if(u===void 0||a===void 0){for(let N of T){let z=await ue(N),Z=tt(z),Y=v();Z&&Y!==void 0&&An(Y,V,Y.feedByPair,We(e,R,N),nt,z),E(N,{feed:z,cacheable:Z});}return j()}let I=await u({contracts:T.map(N=>mi(e,N,o)),allowFailure:false,...o});I.length!==T.length&&ce(e,"pair oracle feed read returned no result");let $=[];I.forEach((N,z)=>{let Z=T[z];if(Z===void 0)return;let Y=fi(e,N);$.push({pairIndex:Z,feed:Y,cacheable:tt(Y)});});for(let{pairIndex:N,feed:z,cacheable:Z}of $){let Y=v();Z&&Y!==void 0&&An(Y,V,Y.feedByPair,We(e,R,N),nt,z),E(N,{feed:z,cacheable:Z});}return j()}if(u===void 0||a===void 0){for(let I of T){let $=await gi(e,i,I,o,c,s);E(I,$);}return j()}let Ve=await u({contracts:T.map(I=>ks(e,I,o)),allowFailure:true,...o});Ve.length!==T.length&&ce(e,"pair oracle feed read returned no result");let K=[],O=new Set;if(Ve.forEach((I,$)=>{let N=T[$];if(N===void 0)return;let z=se(qf(I),"",0);if(tt(z)){let Y=v();Y!==void 0&&An(Y,V,Y.feedByPair,We(e,R,N),nt,z),E(N,{feed:z,cacheable:true});return}let Z=Bf(I);Z!==void 0&&vs(Z)&&O.add(N),K.push(N);}),K.length>0){let I=await u({contracts:K.map(N=>mi(e,N,o)),allowFailure:false,...o});I.length!==K.length&&ce(e,"pair oracle feed read returned no result");let $=[];if(I.forEach((N,z)=>{let Z=K[z];if(Z===void 0)return;let Y=fi(e,N);$.push({pairIndex:Z,feed:Y,cacheable:O.has(Z)&&tt(Y)});}),v()!==void 0&&$.some(N=>N.cacheable)){let N=v();Rs(N,V,M);}for(let{pairIndex:N,feed:z,cacheable:Z}of $){let Y=v();Z&&Y!==void 0&&An(Y,V,Y.feedByPair,We(e,R,N),nt,z),E(N,{feed:z,cacheable:Z});}}return j()},Q=m=>ls(e,l,m,async h=>{let R=Re(e,"DomfiPairsStorage"),V=s,v=()=>c?it(e,V):void 0,M=new Map,D=[];for(let E of h){let j=v(),ue=j===void 0?void 0:pi(j.maxLeverageByPair,We(e,R,E));ue===void 0?D.push(E):M.set(E,await ue);}if(D.length===0)return M;if(u===void 0||a===void 0){let E=await Promise.all(D.map(async j=>[j,await dr(e,i,j,o,c,s)]));for(let[j,ue]of E)M.set(j,ue);return M}let T=await u({contracts:D.map(E=>xs(e,E,o)),allowFailure:false,...o});return D.forEach((E,j)=>{let ue=cn(e,T[j],"pair max leverage");M.set(E,ue);let ae=v();ae!==void 0&&An(ae,V,ae.maxLeverageByPair,We(e,R,E),ps,ue);}),M},h=>`pair max leverage loader omitted requested pair ${h}`),H=async m=>{let h=await ye(m),R=[...new Set([...h.values()])];for(let v of R)v===lr&&ce(e,"pair oracle feed is not configured");let V=await ls(e,f,R,async v=>{if(u===void 0||a===void 0)return new Map(await Promise.all(v.map(async D=>[D,await hi(e,i,D,o)])));let M=await u({contracts:v.map(D=>As(e,D,o)),allowFailure:false,...o});return new Map(v.map((D,T)=>[D,Cs(e,D,M[T])]))},v=>`oracle value loader omitted requested feed ${v}`);return new Map([...h.entries()].map(([v,M])=>[v,Mn(e,V,M,`oracle value loader omitted requested feed ${M}`)]))},p=async(m,h)=>{let R=new Map(h),V=m.filter(M=>!R.has(M));if(V.length===0)return R;let v=await H(V);for(let[M,D]of v)R.set(M,D);return R},w=async m=>{if(u===void 0||a===void 0)return Promise.all(m.map(D=>Uf(e,D,n,P)));let h=[],R=new Set;for(let D of m){let T=Qe(D);R.has(T)||(R.add(T),h.push(D));}let V=h.flatMap(D=>{let T=b$2.toNumber(D.pairIndex),E=c$3.toNumber(D.index);return [Nf(e,D,T,E,o),Ff(e,D,T,E,o)]}),v=await u({contracts:V,allowFailure:false,...o}),M=new Map;return h.forEach((D,T)=>{M.set(Qe(D),{slot:gr(e,D,v[T*2]),info:Ps(e,v[T*2+1]),block:P.block,...P.readBlockNumber!==void 0?{readBlockNumber:P.readBlockNumber}:{}});}),m.map(D=>Mn(e,M,Qe(D),"onchain identity read returned no result"))},k=async(m,h)=>{if(m.length===0)return [];if(u===void 0||a===void 0)return Promise.all(m.map(({position:O,identity:I})=>jf(e,O,I,P,h?.get(b$2.toNumber(O.pairIndex)))));let R=[],V=new Set;for(let O of m){let I=Qe(O.position);V.has(I)||(V.add(I),R.push(O));}let v=R.map(({position:O})=>b$2.toNumber(O.pairIndex)),[M,D]=await Promise.all([Q(v),h===void 0?H(v):p(v,h)]),T=g??L(),E=T===void 0,j=R.flatMap(({position:O,identity:I})=>{let $=b$2.toNumber(O.pairIndex),N=c$3.toNumber(O.index);return [Lf(e,O,$,N,I.slot,o)]}),ue=await u({contracts:[...E?[ur(e,o)]:[],...j],allowFailure:false,...o}),ae=E?cn(e,ue[0],"liquidation margin threshold"):await T;E&&re(ae);let Ve=E?1:0,K=new Map;return R.forEach(({position:O,identity:I},$)=>{let N=b$2.toNumber(O.pairIndex),z=I.slot,Z=Ue(e,se(ue[$+Ve],"",0),"trade funding fee"),Y=Mn(e,M,N,`pair max leverage loader omitted requested pair ${N}`),Wc=Mn(e,D,N,`oracle value loader omitted requested pair ${N}`),qc=m$2({collateralRaw:z.collateralRaw,leverageRaw:z.leverageRaw,maxLeverageRaw:Y,liqMarginThresholdP:ae});K.set(Qe(O),{oracle:Wc,fundingFeeRaw:Z,pairMaxLeverageRaw:Y,liquidationPriceRaw:n$2({openPriceRaw:z.openPriceRaw,buy:z.buy,collateralRaw:z.collateralRaw,leverageRaw:z.leverageRaw,fundingFeeRaw:Z,maxLeverageRaw:Y,liqMarginThresholdP:ae}),liquidationMarginRaw:qc});}),m.map(({position:O})=>Mn(e,K,Qe(O),"onchain valuation read returned no result"))},A=async(m,h,R)=>{if(m.length===0)return [];let V=Wf(h);if(u===void 0||a===void 0)return Promise.all(m.map(async({position:K,identity:O})=>{let I=b$2.toNumber(K.pairIndex),$=O.slot,N=ds(e,V,K),[z,Z,Y]=await Promise.all([R?.get(I)??P.readOracleByPair(I),P.readPairMaxLeverage(I),P.readLiqMarginThresholdP?.()??wi(e,i,o)]);return us({slot:$,oracle:z,fundingFeeRaw:N,pairMaxLeverageRaw:Z,liqMarginThresholdP:Y})}));let v=[],M=new Set;for(let K of m){let O=Qe(K.position);M.has(O)||(M.add(O),v.push(K));}let D=v.map(({position:K})=>b$2.toNumber(K.pairIndex)),[T,E]=await Promise.all([Q(D),R===void 0?H(D):p(D,R)]),j=g??L(),ue=j===void 0,ae=ue?cn(e,(await u({contracts:[ur(e,o)],allowFailure:false,...o}))[0],"liquidation margin threshold"):await j;ue&&re(ae);let Ve=new Map;for(let{position:K,identity:O}of v){let I=b$2.toNumber(K.pairIndex),$=O.slot,N=ds(e,V,K),z=Mn(e,T,I,`pair max leverage loader omitted requested pair ${I}`),Z=Mn(e,E,I,`oracle value loader omitted requested pair ${I}`);Ve.set(Qe(K),us({slot:$,oracle:Z,fundingFeeRaw:N,pairMaxLeverageRaw:z,liqMarginThresholdP:ae}));}return m.map(({position:K})=>{let O=Ve.get(Qe(K));return O!==void 0?O:ce(e,"onchain valuation read returned no result")})},P={block:{...r.number!==void 0?{number:r.number}:{},timestampMs:r.timestamp*1000n},...a!==void 0?{readBlockNumber:a}:{},commonReadOpts:o,useLatestConfigCache:c,readFeed:be,readPairMaxLeverage:Xe,readLiqMarginThresholdP:W,readOracleByPair:le,readIdentities:w,readValuations:k,readValuationsWithFundingFees:A};return P}async function yi(e,n){return fr(e,n,t=>Hf(e,t,n?.signal))}async function $f(e,n,t,i){let r=bi(e),a$1=b$2.toNumber(n.pairIndex),o=c$3.toNumber(n.index),c=i??await yi(e,t),s=c.commonReadOpts,[u,d]=await Promise.all([un(e,r)({address:Re(e,"DomfiTradingStorage"),abi:a.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,a$1,o],...s}),un(e,r)({address:Re(e,"DomfiTradingStorage"),abi:a.DomfiTradingStorage,functionName:"getOpenTradeInfo",args:[n.wallet,a$1,o],...s})]);return {slot:gr(e,n,u),info:Ps(e,d),block:c.block,...c.readBlockNumber!==void 0?{readBlockNumber:c.readBlockNumber}:{}}}async function Uf(e,n,t,i){return fr(e,t,r=>$f(e,n,r,i))}async function jf(e,n,t,i,r){let a$1=bi(e),o=b$2.toNumber(n.pairIndex),c=c$3.toNumber(n.index),s=i?.commonReadOpts??pr(t.readBlockNumber),u=t.slot,[d,f,l,g]=await Promise.all([r??i?.readOracleByPair(o)??Ts(e,a$1,o,s,false),un(e,a$1)({address:Re(e,"DomfiPairInfos"),abi:a.DomfiPairInfos,functionName:"getTradeFundingFee",args:[n.wallet,o,c,u.buy,u.collateralRaw,u.leverageRaw],...s}),i?.readPairMaxLeverage(o)??dr(e,a$1,o,s,false),i?.readLiqMarginThresholdP?.()??wi(e,a$1,s)]),b=l,y=Ue(e,se(f,"",0),"trade funding fee"),x=m$2({collateralRaw:u.collateralRaw,leverageRaw:u.leverageRaw,maxLeverageRaw:b,liqMarginThresholdP:g});return {oracle:d,fundingFeeRaw:y,pairMaxLeverageRaw:b,liquidationPriceRaw:n$2({openPriceRaw:u.openPriceRaw,buy:u.buy,collateralRaw:u.collateralRaw,leverageRaw:u.leverageRaw,fundingFeeRaw:y,maxLeverageRaw:b,liqMarginThresholdP:g}),liquidationMarginRaw:x}}async function zf(e,n,t){let i=bi(e),r=b$2.toNumber(n.pairIndex),a$1=c$3.toNumber(n.index),o=await gs(e,i)(ws(t)),c=t?.blockTag==="latest"?o.number:t?.blockTag??o.number,s=pr(c,t?.signal),u=await un(e,i)({address:Re(e,"DomfiTradingStorage"),abi:a.DomfiTradingStorage,functionName:"getOpenTrade",args:[n.wallet,r,a$1],...s}),d=gr(e,n,u),f=t?.blockTag===void 0||t.blockTag==="latest",l=d.trader===fs||d.collateralRaw===0n||!Sf(d.trader,n.wallet)?void 0:await Ts(e,i,r,s,f,f?bs(e).generation:void 0);return {slot:d,block:{...o.number!==void 0?{number:o.number}:{},timestampMs:o.timestamp*1000n},...l!==void 0?{oracle:l}:{}}}async function Ds(e,n,t){return fr(e,t,i=>zf(e,n,i))}var _n={sdkVersion:a$1,sourceTag:"valuation-watch",chainId:0},Jf=3e4;function Ss(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 hr(e){return Ss(e)?e:new ValidationError({message:e instanceof Error?e.message:"valuation watcher poll failed",diagnostics:_n,...e!==void 0?{cause:e}:{}})}function Yf(e){return new AbortError({message:"valuation watcher was aborted",diagnostics:_n,...e!==void 0?{cause:e}:{}})}function Qf(e){return new TimeoutError({message:"valuation watcher poll timed out",diagnostics:_n,...e!==void 0?{cause:e}:{}})}function Me(e){return [e.chainId,e.wallet.toLowerCase(),e.pairIndex,e.index,e.tradeId].join(":")}function Xf(e){let n=new Set,t=[];for(let i of e){let r=Me(i);n.has(r)||(n.add(r),t.push(i));}return t}function Zf(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 ep(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 wr(e,n){let t=Math.max(0,n-1),i=Math.max(e,Jf),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 br(e,n){return `${n}:${Me(e)}`}function rt(){return new ValidationError({message:"valuation watcher bulk poll returned no result",diagnostics:_n})}function Vs(e,n){return Ss(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 np(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 tp(e){if(e===null)return false;let n=typeof e;return n!=="object"&&n!=="function"?false:typeof e.catch=="function"}function ip(e){if(e===null)return false;let n=typeof e;return n!=="object"&&n!=="function"?false:typeof e.then=="function"}function yr(e,n){try{let t=e(n);tp(t)?t.catch(()=>{}):ip(t)&&t.then(void 0,()=>{});}catch{return}}function Os(e){let n=new Map,t=p=>{let w=Zf(p),k=ep(w),A=n.get(k);if(A!==void 0)return A;let P={key:k,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(k,P),P},i=async(p,w)=>{if(w<=0)return;let k;await new Promise(A=>{let P=setTimeout(A,w);k=()=>{clearTimeout(P),A();},p.wake=k;}).finally(()=>{p.wake===k&&(p.wake=void 0);});},r=(p,w)=>{p.stopped||yr(p.cb,{type:"error",error:w});},a=(p,w)=>{let k=p.get(Me(w));if(k===void 0)throw rt();return k},o=(p,w)=>{if(!p.stopped){if(p.kind==="single"){let k=p.positions[0];if(k===void 0)throw rt();yr(p.cb,{type:"snapshot",data:a(w,k)});return}yr(p.cb,{type:"snapshot",data:p.positions.map(k=>a(w,k))});}},c=async(p,w,k$1)=>{let A=new Map;if(w.length===0)return A;let m=await k({signal:k$1.signal,diagnostics:_n,...p.opts.timeoutMs!==void 0?{timeoutMs:p.opts.timeoutMs}:{}}).runAttempt(R=>e.positionSnapshots(w,np(p.opts,R)),Yf,Qf);if(m.length!==w.length)throw rt();let h=new Set(w.map(Me));for(let R of m){let V=Me(R.position);if(!h.has(V))throw rt();A.has(V)||A.set(V,R);}for(let R of h)if(!A.has(R))throw rt();return A},s=(p,w)=>{let A=Date.now()+w.intervalMs,P=Math.max(1,Math.floor(w.intervalMs/10)),m;for(let h of p.subscribers)h===w||h.stopped||h.intervalMs!==w.intervalMs||h.nextDueAt<A||h.nextDueAt-A>P||(m=m===void 0?h.nextDueAt:Math.min(m,h.nextDueAt));return m??A},u=(p,w)=>Math.max(w.nextDueAt,p.retryAfterByIntervalMs.get(w.intervalMs)??0),d=(p,w,k,A={})=>{if(w.stopped)return;let P=A.clearIntervalState??true;try{o(w,k),w.failureCount=0,w.isolated=!1,y(p,w),P&&(p.failureCountByIntervalMs.delete(w.intervalMs),p.retryAfterByIntervalMs.delete(w.intervalMs));}catch(m){r(w,hr(m)),w.failureCount+=1;}w.nextDueAt=s(p,w);},f=(p,w,k=false)=>{let A=p.filter(h=>!h.stopped),P=new Map;if(A.length===0)return P;let m=new Map;for(let h of A){h.failureCount+=1,k&&(h.isolated=true);let R=m.get(h.intervalMs)??[];R.push(h),m.set(h.intervalMs,R);}for(let[h,R]of m){let V=Math.max(...R.map(D=>D.failureCount)),v=wr(h,V);for(let D of R)r(D,w);let M=Date.now()+v;P.set(h,M);for(let D of R)D.nextDueAt=M;}return P},l=(p,w)=>{for(let[k,A]of w)p.retryAfterByIntervalMs.set(k,A);},g=(p,w)=>p.filter(k=>!k.stopped&&k.positions.some(A=>Me(A)===w)),b=(p,w,k)=>{let A=0,P=0;for(let m of w){let h=p.isolatedPositionByKey.get(br(m,k));h!==void 0&&(A=Math.max(A,h.failureCount),P=Math.max(P,h.retryAfterAt));}return A>0||P>0?{failureCount:A,retryAfterAt:P}:void 0},y=(p,w)=>{for(let k of w.positions)p.isolatedPositionByKey.delete(br(k,w.intervalMs));},x=(p,w,k,A)=>{for(let[P,m]of A)for(let h of k){let R=0;for(let v of w)v.intervalMs===P&&v.positions.some(M=>Me(M)===h)&&(R=Math.max(R,v.failureCount));if(R===0)continue;let V={failureCount:R,retryAfterAt:m};p.isolatedPositionByKey.set(`${P}:${h}`,V);for(let v of p.subscribers)v.stopped||v.intervalMs!==P||v.positions.some(M=>Me(M)===h)&&(v.isolated=true,v.failureCount=Math.max(v.failureCount,V.failureCount),v.nextDueAt=Math.max(v.nextDueAt,V.retryAfterAt));}},C=(p,w=Date.now())=>{let k=new Set,A=new Set;for(let m of p.subscribers)if(!m.stopped){k.add(m.intervalMs);for(let h of m.positions)A.add(br(h,m.intervalMs));}let P=new Set([...p.failureCountByIntervalMs.keys(),...p.retryAfterByIntervalMs.keys()]);for(let m of P)k.has(m)||(p.retryAfterByIntervalMs.get(m)??0)>w||(p.failureCountByIntervalMs.delete(m),p.retryAfterByIntervalMs.delete(m));for(let[m,h]of p.isolatedPositionByKey)A.has(m)||h.retryAfterAt>w||p.isolatedPositionByKey.delete(m);},re=(p,w)=>{let k=new Map;for(let A of w){if(A.subscriber.stopped)continue;let P=k.get(A.subscriber.intervalMs)??new Map,m=P.get(A.subscriber);P.set(A.subscriber,{incrementSubscriberFailure:A.incrementSubscriberFailure||m?.incrementSubscriberFailure===true}),k.set(A.subscriber.intervalMs,P);}for(let[A,P]of k){let m=Math.max((p.failureCountByIntervalMs.get(A)??0)+1,...[...P].map(([R,V])=>R.failureCount+(V.incrementSubscriberFailure?1:0))),h=Date.now()+wr(A,m);p.failureCountByIntervalMs.set(A,m),p.retryAfterByIntervalMs.set(A,h);for(let R of P.keys())R.failureCount=Math.max(R.failureCount,m),R.nextDueAt=Math.max(R.nextDueAt,h);}},ne=(p,w,k)=>{let A=w.filter(m=>!m.stopped),P=new Map;for(let m of A){let h=P.get(m.intervalMs)??[];h.push(m),P.set(m.intervalMs,h);}for(let[m,h]of P){let R=(p.failureCountByIntervalMs.get(m)??0)+1;p.failureCountByIntervalMs.set(m,R);for(let V of h)V.failureCount=Math.max(V.failureCount,R-1);}l(p,f(A,k));for(let[m,h]of P)p.failureCountByIntervalMs.set(m,Math.max(...h.map(R=>R.failureCount)));},we=(p,w,k)=>{p.currentController=w,p.currentSubscribers=new Set(k.filter(A=>!A.stopped));},be=(p,w)=>{p.currentController===w&&(p.currentController=void 0,p.currentSubscribers=void 0);},Xe=(p,w)=>{let k=p.currentSubscribers;if(!(k===void 0||k.size===0)){for(let A of k)if(!A.stopped)return;p.currentController?.abort(w),p.wake?.();}},W=async(p,w,k,A)=>{let P=()=>w.some(T=>!T.stopped);if(!P())return;let m=Xf(w.filter(T=>!T.stopped).flatMap(T=>T.positions)),h=new Map(A),R=new Map;for(let T of m){if(!P())return;let E=Me(T);if(h.has(E))continue;let j=()=>g(w,E),ue=j();if(ue.length===0)continue;let ae=E,Ve=new AbortController,K=()=>Ve.abort(k.signal.reason);k.signal.addEventListener("abort",K,{once:true}),we(p,Ve,ue);try{let I=(await c(p,[T],Ve)).get(ae);if(I===void 0)throw rt();h.set(ae,I);}catch(O){if(j().length===0)continue;if(!P())return;let I=hr(O);R.set(ae,{error:I,isolate:Vs(O,I)});}finally{k.signal.removeEventListener("abort",K),be(p,Ve);}}let V=new Map,v=new Map,M=[],D=new Set;for(let T of w)T.stopped||T.positions.some(E=>{let j=R.get(Me(E));return j!==void 0&&!j.isolate})&&D.add(T.intervalMs);for(let T of w){if(T.stopped)continue;let E=T.positions.map(O=>({key:Me(O),error:R.get(Me(O))})).filter(O=>O.error!==void 0);if(E.length===0){d(p,T,h,{clearIntervalState:!D.has(T.intervalMs)});continue}let j=E.filter(O=>O.error.isolate),ue=E.filter(O=>!O.error.isolate);if(ue.length>0&&M.push({subscriber:T,incrementSubscriberFailure:j.length===0}),j.length===0){let O=ue[0]?.error;if(O===void 0)continue;let I=`${O.error.code}:${O.error.message}`,$=v.get(I)??{error:O.error,subscribers:[]};$.subscribers.push(T),v.set(I,$);continue}let ae=j[0]?.error;if(ae===void 0)continue;let Ve=`${ae.isolate}:${ae.error.code}:${ae.error.message}`,K=V.get(Ve)??{error:ae.error,isolate:ae.isolate,positionKeys:new Set,subscribers:[]};for(let O of j)K.positionKeys.add(O.key);K.subscribers.push(T),V.set(Ve,K);}for(let T of v.values())for(let E of T.subscribers)r(E,T.error);for(let T of V.values())if(T.isolate){let E=f(T.subscribers,T.error,true);x(p,T.subscribers,T.positionKeys,E);}else ne(p,T.subscribers,T.error);M.length>0&&re(p,M);},le=async(p,w)=>{let k=w.filter(m=>m.isolated),A=w.filter(m=>!m.isolated),P;if(A.length>0){let m=[],h=new Set;for(let V of A)if(!V.stopped)for(let v of V.positions){let M=Me(v);h.has(M)||(h.add(M),m.push(v));}let R=new AbortController;we(p,R,A);try{let V=await c(p,m,R);P=V;for(let v of A)v.stopped||d(p,v,V);}catch(V){let v=A.filter(D=>!D.stopped);if(v.length===0)return;let M=hr(V);if(Vs(V,M))if(m.length>1)await W(p,v,R);else {let D=new Set(m.map(Me)),T=f(v,M,true);x(p,v,D,T);}else ne(p,v,M);}finally{be(p,R);}}if(k.length>0){let m=new AbortController;we(p,m,k);try{await W(p,k,m,P);}finally{be(p,m);}}},ye=async p=>{try{for(await Promise.resolve();p.subscribers.size>0;){let w=Date.now();C(p,w);let k=[...p.subscribers].filter(m=>!m.stopped),A=Math.min(...k.map(m=>u(p,m)));if(A>w){await i(p,A-w);continue}let P=k.filter(m=>u(p,m)<=w);await le(p,P);}}finally{p.currentController?.abort(),p.currentSubscribers=void 0,p.running=false,p.wake=void 0,p.subscribers.size===0&&n.delete(p.key);}},Q=p=>{if(p.running){p.wake?.();return}p.running=true,ye(p);},H=(p,w,k,A)=>{let P=i$2(k?.intervalMs,_n);g$2(k?.timeoutMs,"timeoutMs",_n);let m=k?.signal;if(m?.aborted===true)return {stop:()=>{}};let h=t(k),R=Date.now();C(h,R);let V=k?.emitImmediately??true,v=b(h,w,P),M=Math.max(R+(!V||h.currentController!==void 0?P:0),h.retryAfterByIntervalMs.get(P)??0,v?.retryAfterAt??0),D,T={kind:p,positions:[...w],cb:A,intervalMs:P,nextDueAt:M,failureCount:v?.failureCount??0,isolated:v!==void 0,stopped:false,stop:()=>{}},E=()=>{T.stopped||(T.stopped=true,h.subscribers.delete(T),D!==void 0&&m?.removeEventListener("abort",D),C(h),h.subscribers.size===0?(h.currentController?.abort(m?.reason),h.wake?.()):Xe(h,m?.reason));};return T.stop=E,m!==void 0&&(D=E,m.addEventListener("abort",D,{once:true})),h.subscribers.add(T),Q(h),{stop:E}};return {watchPositionSnapshot(p,w,k){return H("single",[p],w,k)},watchPositionSnapshots(p,w,k){return H("many",p,w,k)}}}var op="valuation",sp="0x0000000000000000000000000000000000000000",cp=100,up=4,qs=3e4,Rr=new WeakMap;function Bs(e){let n=Rr.get(e);if(n!==void 0)return n;let t={apiSchema:void 0,marketByPair:new Map};return Rr.set(e,t),t}function dp(e){Rr.delete(e);}function Hs(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 lp(e,n){return `${e}:${n?.readinessPolicy??"strict"}`}function fp(e,n,t){let i=Bs(e),r=Hs(i.apiSchema,t);if(r!==void 0)return r;let a={promise:void 0,expiresAt:Date.now()+qs,signal:t?.signal,timeoutMs:t?.timeoutMs,settled:false},o=n(t).then(c=>{let s=b$3({...c.data.apiSchemaHash!==void 0?{apiSchemaHash:c.data.apiSchemaHash}:{}});return (c.freshness.isStale||s.status!=="supported")&&i.apiSchema===a?i.apiSchema=void 0:a.settled=true,s},c=>{throw i.apiSchema===a&&(i.apiSchema=void 0),c});return a.promise=o,i.apiSchema=a,o}function pp(e,n,t,i){let r=Bs(e),a=lp(n,i),o=Hs(r.marketByPair.get(a),i);if(o!==void 0)return o;let c={promise:void 0,expiresAt:Date.now()+qs,signal:i?.signal,timeoutMs:i?.timeoutMs,settled:false},s=t(b$2.from(n),i).then(u=>(b$2.toNumber(u.data.pairIndex)!==n&&(r.marketByPair.get(a)===c&&r.marketByPair.delete(a),he(e,"REST market metadata pairIndex does not match requested pair")),u.freshness.isStale&&r.marketByPair.get(a)===c?r.marketByPair.delete(a):c.settled=true,u),u=>{throw r.marketByPair.get(a)===c&&r.marketByPair.delete(a),u});return c.promise=s,r.marketByPair.set(a,c),s}function vi(e){let n={sdkVersion:a$1,sourceTag:op,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function he(e,n){throw new ValidationError({message:n,diagnostics:vi(e)})}function mp(e,n){return n instanceof AbortError?n:new AbortError({message:"valuation read was aborted",diagnostics:vi(e),...n!==void 0?{cause:n}:{}})}function gp(e,n){return new TimeoutError({message:"valuation read timed out",diagnostics:vi(e),...n!==void 0?{cause:n}:{}})}function hp(e,n){return n===void 0?e:{...e??{},signal:n}}function Ri(e,n,t){return k({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:vi(e)}).runAttempt(r=>t(hp(n,r)),r=>mp(e,r),r=>gp(e,r))}function $s(e,n,t){let i=BigInt(e.chain.oracleStaleThresholdMs??6e4);return t===void 0||t<=0n||t>n||n-t>i}function Pt(e$1,n){return e.toString(e$1)===e.toString(n)}function vr(e$1){let n=e.toString(e$1);if(/^(?:0|[1-9]\d*)$/.test(n))return BigInt(n).toString()}function At(e,n){return e.toLowerCase()===n.toLowerCase()}function Us(e,n){n.chainId!==e.chain.chainId&&he(e,`position chain ${n.chainId} does not match SDK chain ${e.chain.chainId}`);}function js(e,n){return n?.chunkSize===void 0?25:((!Number.isFinite(n.chunkSize)||n.chunkSize<=0)&&he(e,"chunkSize must be a finite positive number"),Math.min(cp,Math.max(1,Math.floor(n.chunkSize))))}function xn(e,n){e.includes(n)||e.push(n);}function wp(e,n){return e.kind==="open_position"&&At(e.wallet,n.wallet)&&e.pairIndex===n.pairIndex&&e.index===n.index&&Pt(e.tradeId,n.tradeId)}function bp(e,n){return e.kind!=="pending_position"||!At(e.wallet,n.wallet)?false:e.targetTradeId!==void 0&&Pt(e.targetTradeId,n.tradeId)||e.tradeId!==void 0&&Pt(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 yp(e,n){if(!(!e.isPending||e.isCancelled)&&At(e.wallet,n.wallet)&&!(e.pairIndex!==void 0&&e.pairIndex!==n.pairIndex)&&!(e.tradeId!==void 0&&!Pt(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 kt(e){return e instanceof ReadModelNotReadyError||typeof e=="object"&&e!==null&&"code"in e&&e.code==="READ_MODEL_NOT_READY"}function at(){return {matched:false,pendingReasons:["read_model_not_ready"]}}function zs(e,n){let t=[];for(let r of e.pendingReasons)xn(t,r);e.status==="missing"&&xn(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 Rp(e,n,t){if(vr(n.tradeId)===void 0)return at();if(typeof e.api.account.position=="function")try{let c=await e.api.account.position(n.wallet,{pairIndex:n.pairIndex,index:n.index,tradeId:n.tradeId},t);return zs(c.data,c.freshness)}catch(c){if(!kt(c))throw c;return at()}let i=[],r,a=false,o;try{for await(let c of e.api.account.positionsPages(n.wallet,t)){r=r??c.freshness;for(let s of c.data){if(wp(s,n)&&s.kind==="open_position"){a=!0,o=s,r=c.freshness;for(let u of s.pendingReasons)xn(i,u);}if(bp(s,n))for(let u of s.pendingReasons)xn(i,u);}}for await(let c of e.api.account.ordersPages(n.wallet,t)){r=r??c.freshness;for(let s of c.data){let u=yp(s,n);u!==void 0&&xn(i,u);}}}catch(c){if(!kt(c))throw c;xn(i,"read_model_not_ready");}return a||xn(i,"read_model_not_ready"),{matched:a,...o!==void 0?{position:o}:{},...r!==void 0?{freshness:r}:{},pendingReasons:i}}async function vp(e,n,t){if(typeof e.api.account.positionsBatch!="function")return;let i=new Array(n.length),r=new Map;n.forEach((d,f)=>{if(vr(d.tradeId)===void 0){i[f]=at();return}let l=d.wallet.toLowerCase(),g=r.get(l)??{wallet:d.wallet,positions:[],indexes:[]};g.positions.push(d),g.indexes.push(f),r.set(l,g);});let a=Array.from(r.values()),o=0,c=false,s=async d=>{try{let f=await e.api.account.positionsBatch(d.wallet,d.positions.map(l=>({pairIndex:l.pairIndex,index:l.index,tradeId:l.tradeId})),t);for(let l=0;l<d.indexes.length;l++){let g=d.indexes[l];g!==void 0&&(i[g]=f.data[l]===void 0?at():zs(f.data[l],f.freshness));}}catch(f){if(!kt(f))throw f;for(let l of d.indexes)i[l]=at();}},u=async()=>{for(;!c;){let d=a[o];if(o+=1,d===void 0)return;try{await s(d);}catch(f){throw c=true,f}}};return await Promise.all(Array.from({length:Math.min(up,a.length)},u)),i}function Gs(e,n,t,i,r,a,o){let c=$s(e,t,i),s={valuationBlockTimestamp:new Date(Number(t)).toISOString(),markSource:a,isStale:c||r?.isStale===true||o?.isStale===true};return n!==void 0&&(s.valuationBlock=n),i!==void 0&&(s.markTimestampMs=i),a==="onchain_oracle"&&i!==void 0&&(s.oracleTimestampMs=i),r!==void 0&&(s.apiFreshness=r),o!==void 0&&(s.markApiFreshness=o),s}function Pp(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 Ks(e,n){let{slot:t}=n;if(t.trader===sp||t.collateralRaw===0n||!At(t.trader,e.wallet))return {status:"closed_or_stale",position:e,reason:"gone"};let i=vr(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 kp(e,n,t,i,r){r.oracle.priceRaw<=0n&&he(e,"valuation mark price must be positive"),i.info.beingMarketClosed&&xn(t.pendingReasons,"being_market_closed");let{slot:a}=i,o=r.markSource??"onchain_oracle",c=Gs(e,i.block.number,i.block.timestampMs,r.oracle.timestampMs,t.freshness,o,r.markApiFreshness),s=k$2({openPriceRaw:a.openPriceRaw,markPriceRaw:r.oracle.priceRaw,buy:a.buy,leverageRaw:a.leverageRaw,initialLeverageRaw:i.info.initialLeverageRaw}),u=l$1({collateralRaw:a.collateralRaw,percentProfitRaw:s,fundingFeeRaw:r.fundingFeeRaw,liquidationMarginRaw:r.liquidationMarginRaw});return {status:"live",position:n,collateral:g.fromRaw(a.collateralRaw),leverage:k$1.fromRaw(BigInt(a.leverageRaw)),...r.liquidationPriceRaw!==void 0?{liquidationPrice:i$1.fromRaw(r.liquidationPriceRaw)}:{},fundingFee:h$1.fromRaw(r.fundingFeeRaw),markPrice:i$1.fromRaw(r.oracle.priceRaw),markSource:o,markValue:g.fromRaw(u),unrealizedPnl:h$1.fromRaw(o$1({collateralRaw:a.collateralRaw,markValueRaw:u})),actionability:Pp(t,c),pendingReasons:t.pendingReasons,freshness:c}}async function Ap(e,n,t,i,r){let a=await nc(e,n,t,i,r);return Js(e,a)}async function xp(e,n,t,i,r){return Us(e,n),Ri(e,t,a=>Ap(e,n,a,i,r))}function Js(e,n){return n.kind==="snapshot"?n.snapshot:kp(e,n.position,n.discovery,n.identity,n.valuation)}function Ys(e,n){return {resolveValuations:t=>n.readValuations(t.map(({position:i,identity:r})=>({position:i,identity:r})))}}function De(e){return {kind:"fallback",reason:e}}function _s(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 Tp(e,n,t){let i=t.slot;return At(n.wallet,e.wallet)&&b$2.toNumber(n.pairIndex)===b$2.toNumber(e.pairIndex)&&c$3.toNumber(n.index)===c$3.toNumber(e.index)&&Pt(n.tradeId,e.tradeId)&&n.side==="long"===i.buy&&g.toRaw(n.collateral)===i.collateralRaw&&k$1.toRaw(n.leverage)===BigInt(i.leverageRaw)&&i$1.toRaw(n.openPrice)===i.openPriceRaw}function Es(e){if(kt(e))return "read_model_not_ready";if(e instanceof TimeoutError||e instanceof TransportError&&e.transient)return "transient_error";if(e instanceof 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 Cp(e,n,t,i){if(t.length===0)return {kind:"apply",candidates:[]};if(n.readBlockNumber===void 0)return De("read_model_not_ready");for(let c of t){let s=c.discovery.position;if(s===void 0||!Tp(c.position,s,c.identity))return De("read_model_not_ready")}let r=e.api,a=r.status?.get,o=r.markets?.state;if(typeof a!="function"||typeof o!="function")return De("api_unavailable");try{let c=await fp(e,a,i);if(c.status!=="supported")return De("api_schema_unsupported");let s=[...new Set(t.map(({position:l})=>b$2.toNumber(l.pairIndex)))],u=new Map,d=s.map(l=>{let g=o(b$2.from(l),i);return g.catch(()=>{}),g});for(let l=0;l<s.length;l+=1){let g=s[l],b=d[l];(g===void 0||b===void 0)&&he(e,"market state read omitted a requested pair");let y;try{y=await b;}catch(C){let L=Es(C);if(L!==void 0)return De(L);throw C}let x=c$7(y.data,{schema:c});if(x.status!=="ok")return De(_s(x.reason));if(x.input.rawState.asOfBlock!==n.readBlockNumber)return De("read_model_not_ready");u.set(g,x.input.rawState);}let f=[];for(let l of t){let g$1=l.discovery.position;if(g$1===void 0)return De("read_model_not_ready");let b=d$4(g$1,{schema:c});if(b.status!=="ok")return De(_s(b.reason));let y=l.identity.slot,x=b$2.toNumber(l.position.pairIndex),C=u.get(x);if(C===void 0)return De("missing_raw_state");f.push({position:l.position,fundingFeeRaw:a$8({initialAccFunding:b.input.initialAccFundingRaw,endAccFunding:y.buy?C.accPerOiLong:C.accPerOiShort,collateral:g.fromRaw(y.collateralRaw),leverage:k$1.fromRaw(BigInt(y.leverageRaw))})});}return {kind:"apply",candidates:f}}catch(c){let s=Es(c);if(s!==void 0)return De(s);throw c}}var Dp=new Set([404,408,429,502,503,504]);function Qs(e){return e?.markSource!=="rest_fallback"}function Ns(e){return e?.markSource==="onchain_oracle"?false:e?.blockTag===void 0||e.blockTag==="latest"}function Vp(e){if(kt(e))return "read_model_not_ready";if(e instanceof TransportError)return e.transient?"transient_error":void 0;if(e instanceof ApiError){if(e.transient)return "transient_error";if(e.httpStatus!==void 0&&Dp.has(e.httpStatus))return "api_unavailable"}}function Ip(e,n,t){return !n.isStale&&!t?e:{...e,isStale:true}}function Sp(e){let n=Date.parse(e);return Number.isFinite(n)?BigInt(n):void 0}async function Op(e,n,t){let i=Qs(t),r=e.api,a=r.prices?.head,o=r.markets?.get;if(typeof a!="function"||typeof o!="function"){if(i)return De("api_unavailable");he(e,"REST mark price APIs are unavailable");}let c=await a(t),s=new Map(c.data.map(l=>[l.asset,l])),u=[...new Set(n.map(({position:l})=>b$2.toNumber(l.pairIndex)))],d=await Promise.all(u.map(async l=>{let g=await pp(e,l,o,t),b=s.get(g.data.priceAsset);if(b===void 0){if(i)return De("rest_mark_missing");he(e,`REST mark price is unavailable for market price asset ${g.data.priceAsset}`);}let y=Sp(b.timestamp);y===void 0&&he(e,"REST mark price timestamp is invalid");let x=i$1.toRaw(b.price);x<=0n&&he(e,"REST mark price must be positive");let C=n.find(({position:ne})=>b$2.toNumber(ne.pairIndex)===l);C===void 0&&he(e,"REST mark price pair lookup failed");let L=$s(e,C.identity.block.timestampMs,y),re=Ip(c.freshness,g.freshness,L);return re.isStale&&i?De("stale_rest_mark"):[l,{feed:g.data.feedId,priceRaw:x,timestampMs:y,freshness:re}]})),f=new Map;for(let l of d){if("kind"in l)return l;f.set(l[0],l[1]);}return {kind:"apply",marks:f}}async function Xs(e,n,t){try{return await Op(e,n,t)}catch(i){let r=Vp(i);if(Qs(t)&&r!==void 0)return De(r);throw i}}function Zs(e,n,t){return e.map((i,r)=>{let a=n[r];if(a===void 0)return i;let o=t.get(b$2.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 Mp(e,n,t){let i=Ys(e,n);return {resolveValuations:async(r,a)=>{if(r.length===0)return [];let o=await Xs(e,r,a??t);if(o.kind==="fallback")return i.resolveValuations(r,a);let c=await n.readValuations(r.map(({position:s,identity:u})=>({position:s,identity:u})),o.marks);return Zs(c,r,o.marks)}}}function ec(e,n,t){let i=Ys(e,n),r=a=>Ns(a)?Mp(e,n,a):i;return {resolveValuations:async(a,o)=>{if(a.length===0)return [];let c=o??t,s=await Cp(e,n,a,c);if(s.kind==="fallback"||s.candidates.length!==a.length)return r(c).resolveValuations(a,o);let u=s.candidates,d=a.map(({position:b,identity:y})=>({position:b,identity:y})),f=b=>n.readValuationsWithFundingFees(d,u,b);if(!Ns(c))return f();let l=await Xs(e,a,c);if(l.kind==="fallback")return f();let g=await f(l.marks);return Zs(g,a,l.marks)}}}async function nc(e,n,t,i,r){let a=r===void 0?yi(e,t):Promise.resolve(r),[o,c]=await Promise.all([Rp(e,n,t),a.then(g=>g.readIdentities([n]))]),s=await a,u=c[0];u===void 0&&he(e,"onchain identity read returned no result");let d=Ks(n,u);if(d!==void 0)return {kind:"snapshot",snapshot:d};let l=(await ec(e,s,t).resolveValuations([{position:n,discovery:o,identity:u}],t))[0];return l===void 0&&he(e,"onchain valuation read returned no result"),{kind:"live",position:n,discovery:o,identity:u,valuation:l}}async function _p(e,n,t){let i=await Ds(e,n,t),r=i.oracle===void 0?"unavailable":"onchain_oracle";return {status:"unverified_slot",slot:n,displayOnly:true,markSource:r,freshness:Gs(e,i.block.number,i.block.timestampMs,i.oracle?.timestampMs,void 0,r)}}async function tc(e,n,t){return Ri(e,t,i=>_p(e,n,i))}async function Ep(e,n,t){let i,r=()=>(i=i??yi(e,t),i),a=js(e,t),o=[];for(let c=0;c<n.length;c+=a){let s=n.slice(c,c+a),u=await vp(e,s,t),d=await r();if(u===void 0){o.push(...await Promise.all(s.map(y=>nc(e,y,t,void 0,d))));continue}let f=await d.readIdentities(s);f.length!==s.length&&he(e,"onchain identity read returned no result");let l=new Array(s.length),g=[];s.forEach((y,x)=>{let C=f[x];C===void 0&&he(e,"onchain identity read returned no result");let L=Ks(y,C);if(L!==void 0){l[x]={kind:"snapshot",snapshot:L};return}g.push({position:y,identity:C,discovery:u[x]??at(),index:x});});let b=await ec(e,d,t).resolveValuations(g,t);b.length!==g.length&&he(e,"onchain valuation read returned no result"),g.forEach((y,x)=>{let C=b[x];C===void 0&&he(e,"onchain valuation read returned no result"),l[y.index]={kind:"live",position:y.position,discovery:y.discovery,identity:y.identity,valuation:C};}),o.push(...Array.from({length:s.length},(y,x)=>{let C=l[x];return C===void 0&&he(e,"onchain valuation read returned no result"),C}));}return o}async function Np(e,n,t){return (await Ep(e,n,t)).map(r=>Js(e,r))}async function Fp(e,n,t){for(let i of n)Us(e,i);return n.length===0?(js(e,t),Ri(e,t,async()=>[])):Ri(e,t,i=>Np(e,n,i))}function ic(e){let n={clearConfigCache:()=>{mr(e),dp(e);},positionSnapshot:(i,r)=>xp(e,i,r),unverifiedSlotSnapshot:(i,r)=>tc(e,i,r),positionSnapshots:(i,r)=>Fp(e,i,r)},t=Os(n);return n.watchPositionSnapshot=((i,r,a)=>{let o=typeof r=="function"?void 0:r,c=typeof r=="function"?r:a;return typeof c!="function"&&he(e,"valuation.watchPositionSnapshot requires a callback"),t.watchPositionSnapshot(i,o,c)}),n.watchPositionSnapshots=((i,r,a)=>{let o=typeof r=="function"?void 0:r,c=typeof r=="function"?r:a;return typeof c!="function"&&he(e,"valuation.watchPositionSnapshots requires a callback"),t.watchPositionSnapshots(i,o,c)}),n}function rc(e){return {clearConfigCache:()=>mr(e),unverifiedSlotSnapshot:(n,t)=>tc(e,n,t)}}var Gp="vault-send",Kp=1000000000000000000n,ac=Kp*100n;function mc(e){let n={sdkVersion:a$1,sourceTag:Gp,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function qe(e,n,t,i){return {message:n,diagnostics:mc(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function gc(e,n,t,i){throw new ContractRevertError({...qe(e,n,void 0,t),...i!==void 0?{hash:i}:{}})}function je(e,n,t,i){throw new ValidationError(qe(e,n,t,i))}function Ar(e,n,t){return c$4(n,t,(i,r)=>je(e,i,void 0,r))}function Jp(e,n){if(e.walletClient!==void 0)return e.walletClient;throw new MissingWalletClientError(qe(e,`${n} requires a wallet client`,"Pass walletClient to createDomfiClient."))}function hc(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new MissingPublicClientError(qe(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function oc(e){if(e.publicClient!==void 0)return e.publicClient;throw new MissingPublicClientError(qe(e,"prepared vault send requires a public client for approval revalidation","Pass publicClient to createDomfiClient."))}function wc(e){if(e.raw!==void 0)return {chain:e.chain,vault:m({raw:e.raw,chainId:e.chain.chainId,...e.onEvent!==void 0?{onEvent:e.onEvent}:{}})}}function Pr(e,n){let t=wc(e);if(t!==void 0)return t;throw new MissingApiClientError(qe(e,`${n} requires an API client`,"Create the client with API support."))}function Yp(e,n){if(e.raw===void 0)throw new MissingApiClientError(qe(e,`${n} requires an API client`,"Create the client with API support."));let t=m({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 Qp(e){return e?.maxAttempts!==void 0?Math.max(0,e.maxAttempts):1}function Xp(e,n){return {signal:n,...e?.timeoutMs!==void 0?{timeoutMs:e.timeoutMs}:{},...e?.readinessPolicy!==void 0?{readinessPolicy:e.readinessPolicy}:{}}}function Zp(e,n){return e!==void 0&&e.toLowerCase()===n.toLowerCase()}function em(e,n){a$7(n,e.chain),b(e.chain,n?.pollingIntervalMs),En(e,n?.signal),hc(e,"vault transaction receipt");}function nm(e,n$1,t,i){let a=wc(e)?.vault.transactionEvents;if(a===void 0)return;let o=false,c,s,u=[],d=false,f,l=new AbortController,g=Qp(i),b=i$2(i?.intervalMs,mc(e)),y=p(n$1),x=()=>{f!==void 0&&(i?.signal?.removeEventListener("abort",f),f=void 0);};i?.signal!==void 0&&(f=()=>l.abort(i.signal?.reason),i.signal.aborted?l.abort(i.signal.reason):i.signal.addEventListener("abort",f,{once:true}));let C=async()=>{b<=0||o||await new Promise(L=>{s=L,c=setTimeout(()=>{c=void 0,s=void 0,L();},b);});};return (async()=>{let L=0;for(;!o&&L<g;){if(L+=1,u=(await a(t,Xp(i,l.signal))).data.events.filter(ne=>Zp(ne.txHash,t)&&ne.opType===y),u.length>0||L>=g)return;await C();}})().catch(L=>{n(L)&&(d=true);}).finally(x),{events:()=>u,unavailable:()=>d,stop:()=>{o=true,l.abort(),c!==void 0&&(clearTimeout(c),c=void 0),s!==void 0&&(s(),s=void 0),x();}}}function xt(e,n){return new AbortError(qe(e,"vault tracking was aborted",void 0,n))}function tm(e,n,t){return new TimeoutError(qe(e,n,void 0,t))}function sc(e){return e instanceof AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function En(e,n){if(n?.aborted===true)throw xt(e,n.reason)}function Tr(e,n){return n===void 0?e:{...e,signal:n}}function Cr(e,n){return typeof n.readContract!="function"&&je(e,"public client is missing readContract"),n.readContract}function im(e,n){return typeof n.sendTransaction=="function"?n.sendTransaction:()=>je(e,"wallet client is missing sendTransaction")}function rm(e,n){return typeof n.waitForTransactionReceipt=="function"?n.waitForTransactionReceipt:()=>je(e,"public client is missing waitForTransactionReceipt")}function kr(e,n,t){t.status==="reverted"&&gc(e,"vault transaction reverted",void 0,n);}function cc(e,n){return e.toLowerCase()===n.toLowerCase()}function am(e,n){return (e+n-1n)/n}function om(e){return decodeFunctionData({abi:a.DomfiVault,data:e.data})}function sm(e){if(!(e.verb!=="mint"&&e.verb!=="withdraw"&&e.verb!=="mintWithDiscountAndLock"))return om(e)}function xr(e,n,t){let i=n.args[t];return typeof i=="bigint"?i:je(e,`${n.functionName} calldata argument ${t} is invalid`)}function cm(e,n,t){let i=n.args[t];return typeof i=="number"?i:je(e,`${n.functionName} calldata argument ${t} is invalid`)}async function ot(e,n,t,i){let r=await Cr(e,n)(Tr(t,i));return typeof r=="bigint"?r:je(e,`${t.functionName} read returned invalid data`)}async function uc(e,n,t,i){let r=await Cr(e,n)(Tr(t,i));return Ar(e,r,`${t.functionName} read result`)}async function um(e,n,t,i){let r=await Cr(e,n)(Tr(t,i));return typeof r=="boolean"?r:je(e,`${t.functionName} read returned invalid data`)}async function bc(e,n,t,i,r){return ot(e,n,{address:t,abi:a.DomfiVault,functionName:"previewMint",args:[i]},r)}async function dm(e,n,t,i,r){return ot(e,n,{address:t,abi:a.DomfiVault,functionName:"previewWithdraw",args:[i]},r)}async function lm(e,n,t,i,r,a$1){let o=await bc(e,n,t,i,a$1),c=await ot(e,n,{address:t,abi:a.DomfiVault,functionName:"collateralizationP"},a$1),s=await ot(e,n,{address:t,abi:a.DomfiVault,functionName:"lockDiscountP",args:[c,r]},a$1);return am(o*ac,ac+s)}async function fm(e,n,t,i,r,a){return i?.functionName==="mint"||i?.functionName==="mintWithSlippage"?bc(e,n,t.to,xr(e,i,0),a):i?.functionName==="mintWithDiscountAndLock"?lm(e,n,t.to,xr(e,i,0),cm(e,i,1),a):w.toRaw(r.requiredAllowance)}async function pm(e,n,t,i,r,a){return i?.functionName==="withdraw"?dm(e,n,t.to,xr(e,i,0),a):x.toRaw(r.requiredAllowance)}async function mm(e,n,t,i,r,a$1){if(En(e,a$1),r.kind==="asset"){let u=await fm(e,n,t,i,r,a$1);await ot(e,n,{address:r.token,abi:a.IERC20,functionName:"allowance",args:[r.owner,r.spender]},a$1)<u&&je(e,"vault asset allowance is below the amount required for this prepared transaction");return}if(r.kind==="share"){let u=await pm(e,n,t,i,r,a$1);await ot(e,n,{address:r.token,abi:a.IERC20,functionName:"allowance",args:[r.owner,r.spender]},a$1)<u&&je(e,"vault share allowance is below the amount required for this prepared transaction");return}let[o,c]=await Promise.all([uc(e,n,{address:r.token,abi:a.DomfiLockedDepositNft,functionName:"ownerOf",args:[r.depositId]},a$1),uc(e,n,{address:r.token,abi:a.DomfiLockedDepositNft,functionName:"getApproved",args:[r.depositId]},a$1)]);cc(o,r.spender)||cc(c,r.spender)||await um(e,n,{address:r.token,abi:a.DomfiLockedDepositNft,functionName:"isApprovedForAll",args:[o,r.spender]},a$1)||je(e,"vault NFT approval is missing for this prepared transaction");}async function gm(e,n,t){if(En(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"))&&oc(e),je(e,"prepared vault transaction has unchecked approvals","Prepare with a public client and account before sending.")),n.requiredApprovals.approvals.length===0)return;let i=oc(e),r=sm(n);for(let a of n.requiredApprovals.approvals)await mm(e,i,n,r,a,t);En(e,t);}function yc(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 hm(e,n,t,i,r){let a=i?.account===void 0?void 0:Ar(e,i.account,`${r} account`);if(t!==void 0&&a!==void 0){if(t.toLowerCase()!==a.toLowerCase())throw new WalletAccountMismatchError(qe(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??yc(n);if(o!==void 0)return Ar(e,o,`${r} account`);throw new MissingAccountError(qe(e,`${r} requires an account`,"Pass account to createDomfiClient, pass opts.account, or use a connected wallet client."))}function wm(e,n){let t=n.chain?.id;if(!(t===void 0||t===e.chain.chainId))throw new WalletChainMismatchError(qe(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 bm(e,n,t){let i=yc(n);if(!(i===void 0||i.toLowerCase()===t.toLowerCase()))throw new WalletAccountMismatchError(qe(e,`wallet client account ${i} does not match requested account ${t}`,"Use the connected wallet account or pass the matching account option."))}function ym(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 Rm(e,n,t,i){En(e,i?.signal),a$7(i,e.chain);let r=rm(e,n),a=b(e.chain,i?.pollingIntervalMs),o=c$2(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((c,s)=>{let u=()=>s(xt(e,i.signal?.reason));i.signal?.addEventListener("abort",u,{once:true}),o.then(c,s).finally(()=>{i.signal?.removeEventListener("abort",u);});})}function vm(e,n,t){let i=d({wait:r=>Rm(e,hc(e,"vault transaction receipt"),t,r),mapAbort:r=>xt(e,r),mapTimeout:r=>tm(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 kr(e,t,a),Jn(a,{chain:e.chain,verb:n})},waitIndexed:async r$1=>{o(Pr(e,"vault transaction indexing"),r$1);let a=await i(r$1);kr(e,t,a);let o$1=Jn(a,{chain:e.chain,verb:n});return r(Pr(e,"vault transaction indexing"),o$1,r$1)},track:async r$1=>{let a=Pr(e,"vault transaction tracking");o(a,r$1),em(e,r$1);let o$1=nm(e,n,t,r$1);try{let c=await i(r$1);kr(e,t,c);let s=Jn(c,{chain:e.chain,verb:n});En(e,r$1?.signal);let u=o$1?.events().find(l=>q(l,s));if(u!==void 0&&q(u,s))return {receipt:c,outcome:s,indexed:{outcome:s,event:u}};o$1?.stop();let d=o$1?.unavailable()===!0?Yp(e,"vault transaction tracking"):a,f=await r(d,s,r$1);return {receipt:c,outcome:s,indexed:f}}finally{o$1?.stop();}}}}async function Rc(e,n,t){En(e,t?.signal);let i="prepared vault send",r=Jp(e,i),a=hm(e,r,n.preparedAccount,t,i);wm(e,r),bm(e,r,a);let o=ym(r,a),c=im(e,r);try{await gm(e,n,t?.signal);}catch(s){throw t?.signal?.aborted===true||sc(s)?xt(e,s):s}try{let s=await c({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 vm(e,n.verb,s)}catch(s){if(t?.signal?.aborted===true||sc(s))throw xt(e,s);if(isDomfiError(s))throw s;if(isContractRevertLikeError(s))return gc(e,"prepared vault send reverted",s);throw s}}var Im="vault-prepare",Sm=1000000000000000000n,vc=Sm*100n,Om=65535,Mm=4294967295,_m=2n**256n-1n,Pc=10080*60,kc=365*24*60*60;function Tc(e){let n={sdkVersion:a$1,sourceTag:Im,chainId:e.chain.chainId};return e.chain.registryAddress!==void 0&&(n.registryAddress=e.chain.registryAddress),n}function Nn(e,n,t,i){return {message:n,diagnostics:Tc(e),...t!==void 0?{hint:t}:{},...i!==void 0?{cause:i}:{}}}function ze(e,n,t,i){throw new ValidationError(Nn(e,n,t,i))}function Em(e,n,t){throw new ContractRevertError(Nn(e,n,void 0,t))}function ki(e,n,t){return new AbortError(Nn(e,n,void 0,t))}function Nm(e,n,t){return new TimeoutError(Nn(e,n,void 0,t))}function Fm(e){return e instanceof AbortError||e instanceof Error&&e.name==="AbortError"?true:typeof e=="object"&&e!==null&&"code"in e&&e.code==="ABORTED"}function Lm(e,n,t){if(n?.aborted===true)throw ki(e,t,n.reason)}function Cc(e,n){let t=Tc(e);g$2(n?.timeoutMs,"timeoutMs",t);let i=k({...n?.signal!==void 0?{signal:n.signal}:{},...n?.timeoutMs!==void 0?{timeoutMs:n.timeoutMs}:{},diagnostics:t});return i.throwIfAborted(r=>ki(e,"vault prepare read was aborted",r)),i}function Tt(e,n,t,i="vault prepare read was aborted",r="vault prepare read timed out"){return Cc(e,n).runAttempt(t,o=>ki(e,i,o),o=>Nm(e,r,o))}function Ai(e,n){return n===void 0?e:{...e,signal:n}}function Wm(e){return typeof e=="object"&&e!==null&&"code"in e&&"kind"in e&&"diagnostics"in e}function xi(e,n){if(e.publicClient!==void 0)return e.publicClient;throw new MissingPublicClientError(Nn(e,`${n} requires a public client`,"Pass publicClient to createDomfiClient."))}function Dc(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 Vc(e,n){let t=n?.account??e.account??Dc(e.walletClient);return t===void 0?void 0:Fn(e,t,"vault prepare account")}function qm(e,n,t){let i=t?.account===void 0?void 0:Fn(e,t.account,"prepared vault simulation account");if(n!==void 0&&i!==void 0){if(n.toLowerCase()!==i.toLowerCase())throw new WalletAccountMismatchError(Nn(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??Dc(e.walletClient);if(r!==void 0)return Fn(e,r,"prepared vault simulation account");throw new MissingAccountError(Nn(e,"prepared vault simulation requires an account","Pass opts.account or prepare with an account."))}function Ct(e,n){let t=e.chain.contracts[n];return t!==void 0?Fn(e,t,`${n} contract address`):ze(e,`chain profile is missing ${n} contract address`)}function Bm(e){let n=e.chain.collateral.vaultSpender;return n!==void 0?Fn(e,n,"collateral.vaultSpender"):ze(e,"chain profile is missing collateral.vaultSpender")}function Ic(e){return Fn(e,e.chain.collateral.tokenAddress,"collateral.tokenAddress")}function Fn(e,n,t){return c$4(n,t,(i,r)=>ze(e,i,void 0,r))}function Or(e,n){return typeof n.readContract!="function"&&ze(e,"public client is missing readContract"),n.readContract}function Mr(e){let n=e.multicall;return typeof n=="function"?n:void 0}function Hm(e,n){return typeof n.simulateContract!="function"&&ze(e,"public client is missing simulateContract"),n.simulateContract}function $m(e,n,t){try{return encodeFunctionData({abi:a.DomfiVault,functionName:n,args:t})}catch(i){return ze(e,`vault ${n} parameters are invalid`,void 0,i)}}function Um(e,n){return n===void 0?void 0:a$6(n,{chainId:e.chain.chainId})}function jm(e,n){return n===void 0?e:`${e}${n.slice(2)}`}function Pi(e){return Object.freeze(e.slice())}function zm(e){return Object.freeze({status:"checked",approvals:Pi(e)})}function Dr(){return Object.freeze({status:"unchecked"})}function Vr(e){return Object.freeze({code:"VAULT_APPROVALS_UNCHECKED",message:e,severity:"warning"})}function Ir(e,n){return e.toLowerCase()===n.toLowerCase()}function Sc(e,n){return e>=n?"none":"approve"}function Gm(e,n,t){(!Number.isInteger(n)||n<0||n>Om)&&ze(e,`${t} must be a uint16`);}function Km(e,n,t){(!Number.isInteger(n)||n<0||n>Mm)&&ze(e,`${t} must be a uint32`);}function Oc(e,n){Km(e,n,"lockDurationSeconds"),(n<Pc||n>kc)&&ze(e,`lockDurationSeconds must be between ${Pc} and ${kc} seconds`,"DomfiVault requires lock durations from 1 week through 365 days.");}function Jm(e,n,t){(n<0n||n>_m)&&ze(e,`${t} must be a uint256`);}function Ym(e,n){return (e+n-1n)/n}async function st(e,n,t,i){let r=await Tt(e,i,a=>Or(e,n)(Ai(t,a)));return Sr(e,r,t.functionName)}async function Qm(e,n,t,i){let r=await Tt(e,i,a=>Or(e,n)(Ai(t,a)));return Zm(e,r,t.functionName)}async function Xm(e,n,t,i){return Tt(e,i,r=>Or(e,n)(Ai(t,r)))}async function Mc(e,n,t,i){let r=Mr(n);return r===void 0?[]:Tt(e,i,a=>r(Ai(t,a)))}function Sr(e,n,t){return typeof n=="bigint"?n:ze(e,`${t} read returned invalid data`)}function Ac(e,n,t){return Fn(e,n,`${t} read result`)}function Zm(e,n,t){return typeof n=="boolean"?n:ze(e,`${t} read returned invalid data`)}async function _c(e,n,t,i,r){return st(e,n,{address:t,abi:a.DomfiVault,functionName:"previewMint",args:[i]},r)}async function eg(e,n,t,i,r){return st(e,n,{address:t,abi:a.DomfiVault,functionName:"previewWithdraw",args:[i]},r)}async function ng(e,n,t,i,r,a$1){let o=[{address:t,abi:a.DomfiVault,functionName:"previewMint",args:[i]},{address:t,abi:a.DomfiVault,functionName:"collateralizationP"}],c=Mr(n),[s,u]=c===void 0?await Promise.all([_c(e,n,t,i,a$1),st(e,n,o[1],a$1)]):await Mc(e,n,{contracts:o,allowFailure:false},a$1),d=Sr(e,s,"previewMint"),f=Sr(e,u,"collateralizationP"),l=await st(e,n,{address:t,abi:a.DomfiVault,functionName:"lockDiscountP",args:[f,r]},a$1);return Ym(d*vc,vc+l)}function tg(e,n,t,i,r){return Object.freeze({kind:"asset",token:Ic(e),owner:n,spender:t,currentAllowance:w.fromRaw(r),requiredAllowance:w.fromRaw(i),action:Sc(r,i)})}function ig(e,n,t,i,r){return Object.freeze({kind:"share",token:e,owner:n,spender:t,currentAllowance:x.fromRaw(r),requiredAllowance:x.fromRaw(i),action:Sc(r,i)})}async function rg(e,n,t,i,r){let a$1=Ct(e,"DomfiLockedDepositNft"),o=[{address:a$1,abi:a.DomfiLockedDepositNft,functionName:"ownerOf",args:[i]},{address:a$1,abi:a.DomfiLockedDepositNft,functionName:"getApproved",args:[i]}],c=Mr(n),[s,u]=c===void 0?await Promise.all(o.map(y=>Xm(e,n,y,r))):await Mc(e,n,{contracts:o,allowFailure:false},r),d=Ac(e,s,"ownerOf"),f=Ac(e,u,"getApproved"),l=Ir(d,t),g=Ir(f,t);if(l||g)return Object.freeze({kind:"nft",token:a$1,owner:d,spender:t,depositId:i,currentApproved:f,operatorApproved:false,action:"none"});let b=await Qm(e,n,{address:a$1,abi:a.DomfiLockedDepositNft,functionName:"isApprovedForAll",args:[d,t]},r);return Object.freeze({kind:"nft",token:a$1,owner:d,spender:t,depositId:i,currentApproved:f,operatorApproved:b,action:b?"none":"approve"})}async function ag(e,n,t,i){if(i?.skipApprovalCheck===true)return {requiredApprovals:Dr(),warnings:[Vr("Vault approval checks were skipped because skipApprovalCheck was set.")]};if(e.publicClient===void 0)return {requiredApprovals:Dr(),warnings:[Vr("Vault approval checks were skipped because no public client is configured.")]};let r=e.publicClient,a$1=Vc(e,i);if(a$1===void 0)return {requiredApprovals:Dr(),warnings:[Vr("Vault approval checks were skipped because no account is resolved.")]};let o=[];for(let c of t)if(c.kind==="asset"){let s=(async()=>typeof c.requiredRaw=="function"?await c.requiredRaw():c.requiredRaw)(),u=(async()=>{let g=Bm(e),b=await st(e,r,{address:Ic(e),abi:a.IERC20,functionName:"allowance",args:[a$1,g]},i);return {spender:g,currentRaw:b}})();u.catch(()=>{});let d=await s,{spender:f,currentRaw:l}=await u;o.push(tg(e,a$1,f,d,l));}else if(c.kind==="share"){if(!Ir(a$1,c.owner)){let s=(async()=>typeof c.requiredRaw=="function"?await c.requiredRaw():c.requiredRaw)(),u=st(e,r,{address:n,abi:a.IERC20,functionName:"allowance",args:[c.owner,a$1]},i);u.catch(()=>{});let d=await s,f=await u;o.push(ig(n,c.owner,a$1,d,f));}}else o.push(await rg(e,r,a$1,c.depositId,i));return {requiredApprovals:zm(o),warnings:[]}}function og(e){return e.status==="checked"?e.approvals.slice():[]}function sg(e){return Object.freeze({kind:e.kind,params:Object.freeze({...e.params})})}async function cg(e,n,t,i,r,a$1,o,c){Lm(e,c?.signal,"prepared vault simulation was aborted");let s=xi(e,"prepared vault simulation"),u=qm(e,o,c),d=n.value;try{let f=await Tt(e,c,l=>Hm(e,s)({address:n.to,abi:a.DomfiVault,functionName:t,args:i,account:u,...d!==void 0?{value:d}:{},...r!==void 0?{dataSuffix:r}:{},...l!==void 0?{signal:l}:{}}),"prepared vault simulation was aborted","prepared vault simulation timed out");return {verb:n.verb,request:{to:n.to,data:n.data,account:u,...d!==void 0?{value:d}:{}},...f.result!==void 0?{result:f.result}:{},warnings:Pi(a$1)}}catch(f){if(c?.signal?.aborted===true||Fm(f))throw ki(e,"prepared vault simulation was aborted",f);if(Wm(f))throw f;if(isContractRevertLikeError(f))return Em(e,"prepared vault simulation reverted",f);throw f}}async function pn(e,n,t){Cc(e,t);let i=Ct(e,"DomfiVault"),r=Vc(e,t),a=$m(e,n.functionName,n.args),o=Um(e,n.referralCodeId),c=jm(a,o),{requiredApprovals:s,warnings:u}=await ag(e,i,n.approvalPlans??[],t),d=sg(n.normalizedParams),f=Object.freeze({normalizedParams:d,approvals:Pi(og(s)),warnings:Pi(u)}),l=Object.freeze({verb:n.verb,to:i,data:c,requiredApprovals:s,summary:async()=>f,simulate:async g=>cg(e,l,n.functionName,n.args,o,u,r,g),send:async g=>Rc(e,l,g),...r!==void 0?{preparedAccount:r}:{}});return l}async function _r(e,n,t){let i=w.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 pn(e,{verb:"deposit",functionName:n.minShares===void 0?"deposit":"depositWithSlippage",args:n.minShares===void 0?[i,n.receiver]:[i,n.receiver,x.toRaw(n.minShares)],normalizedParams:{kind:"deposit",params:r},approvalPlans:[{kind:"asset",requiredRaw:i}],...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}},t)}async function Er(e,n,t){let i=Ct(e,"DomfiVault"),r=x.toRaw(n.shares),a=n.maxAssets===void 0?{shares:n.shares,receiver:n.receiver}:{shares:n.shares,receiver:n.receiver,maxAssets:n.maxAssets};return pn(e,{verb:"mint",functionName:n.maxAssets===void 0?"mint":"mintWithSlippage",args:n.maxAssets===void 0?[r,n.receiver]:[r,n.receiver,w.toRaw(n.maxAssets)],normalizedParams:{kind:"mint",params:a},approvalPlans:[{kind:"asset",requiredRaw:async()=>{let o=xi(e,"vault.prepareMint approval preview");return _c(e,o,i,r,t)}}]},t)}async function Nr(e,n,t){let i=x.toRaw(n.shares);return pn(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 Fr(e,n,t){Gm(e,n.unlockEpoch,"unlockEpoch");let i=x.toRaw(n.shares);return pn(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 Lr(e,n,t){let i=Ct(e,"DomfiVault"),r=w.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 pn(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,x.toRaw(n.maxShares)],normalizedParams:{kind:"withdraw",params:a},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:n.maxShares!==void 0?x.toRaw(n.maxShares):async()=>{let o=xi(e,"vault.prepareWithdraw approval preview");return eg(e,o,i,r,t)}}]},t)}async function Wr(e,n,t){let i=x.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 pn(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,w.toRaw(n.minAssets)],normalizedParams:{kind:"redeem",params:r},approvalPlans:[{kind:"share",owner:n.owner,requiredRaw:i}]},t)}async function qr(e,n,t){Oc(e,n.lockDurationSeconds);let i=w.toRaw(n.assets),r={assets:n.assets,lockDurationSeconds:n.lockDurationSeconds,receiver:n.receiver,minShares:n.minShares,...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}};return pn(e,{verb:"depositWithDiscountAndLock",functionName:"depositWithDiscountAndLock",args:[i,n.lockDurationSeconds,n.receiver,x.toRaw(n.minShares)],normalizedParams:{kind:"depositWithDiscountAndLock",params:r},approvalPlans:[{kind:"asset",requiredRaw:i}],...n.referralCodeId!==void 0?{referralCodeId:n.referralCodeId}:{}},t)}async function Br(e,n,t){Oc(e,n.lockDurationSeconds);let i=Ct(e,"DomfiVault"),r=x.toRaw(n.shares);return pn(e,{verb:"mintWithDiscountAndLock",functionName:"mintWithDiscountAndLock",args:[r,n.lockDurationSeconds,n.receiver,w.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=xi(e,"vault.prepareMintWithDiscountAndLock approval preview");return ng(e,a,i,r,n.lockDurationSeconds,t)}}]},t)}async function Hr(e,n,t){return Jm(e,n.depositId,"depositId"),pn(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 mn(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 gn(e){return {...e?.account!==void 0?{account:e.account}:{},...e?.signal!==void 0?{signal:e.signal}:{}}}function Ec(e){return {...m({raw:e.raw,chainId:e.chain.chainId,...e.onEvent!==void 0?{onEvent:e.onEvent}:{}}),prepareDeposit:(n,t)=>_r(e,n,t),prepareMint:(n,t)=>Er(e,n,t),prepareMakeWithdrawRequest:(n,t)=>Nr(e,n,t),prepareCancelWithdrawRequest:(n,t)=>Fr(e,n,t),prepareWithdraw:(n,t)=>Lr(e,n,t),prepareRedeem:(n,t)=>Wr(e,n,t),prepareDepositWithDiscountAndLock:(n,t)=>qr(e,n,t),prepareMintWithDiscountAndLock:(n,t)=>Br(e,n,t),prepareUnlockDeposit:(n,t)=>Hr(e,n,t),deposit:async(n,t)=>(await _r(e,n,gn(t))).send(mn(t)),mint:async(n,t)=>(await Er(e,n,gn(t))).send(mn(t)),makeWithdrawRequest:async(n,t)=>(await Nr(e,n,gn(t))).send(mn(t)),cancelWithdrawRequest:async(n,t)=>(await Fr(e,n,gn(t))).send(mn(t)),withdraw:async(n,t)=>(await Lr(e,n,gn(t))).send(mn(t)),redeem:async(n,t)=>(await Wr(e,n,gn(t))).send(mn(t)),depositWithDiscountAndLock:async(n,t)=>(await qr(e,n,gn(t))).send(mn(t)),mintWithDiscountAndLock:async(n,t)=>(await Br(e,n,gn(t))).send(mn(t)),unlockDeposit:async(n,t)=>(await Hr(e,n,gn(t))).send(mn(t))}}function _e(e,n,t,i){throw new ValidationError({message:n,diagnostics:{sdkVersion:a$1,sourceTag:"runtime-guards",chainId:e},...t!==void 0?{cause:t}:{},...i!==void 0?{hint:i}:{}})}function $r(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function Ti(e,n,t,i=false){typeof n=="string"&&(i||n.length>0)||_e(e,`${t} must be a string`,n);}function Nc(e,n,t,i={}){if(typeof n=="number"&&Number.isInteger(n)){i.positive===true&&n<=0&&_e(e,`${t} must be a positive integer`,n),i.nonNegative===true&&n<0&&_e(e,`${t} must be a non-negative integer`,n);return}_e(e,`${t} must be a finite integer`,n);}function ug(e,n,t){n!==void 0&&(typeof n=="number"&&Number.isFinite(n)&&n>0||_e(e,`${t} must be a finite positive number`,n));}function dg(e,n,t){n!==void 0&&(typeof n=="number"&&Number.isFinite(n)&&n>=0||_e(e,`${t} must be a finite non-negative number`,n));}function Dt(e,n,t){a$4(n)||_e(e,`${t} must be a 20-byte hex address`,n);}function lg(e,n){if(Ti(e,n,"chain.apiBaseUrl"),typeof n!="string")return;(n.includes("?")||n.includes("#"))&&_e(e,"chain.apiBaseUrl must not include query parameters or a fragment",n);let t;try{t=new URL(n);}catch(i){_e(e,"chain.apiBaseUrl must be a valid absolute http(s) URL",i);}t.protocol!=="http:"&&t.protocol!=="https:"&&_e(e,"chain.apiBaseUrl must use http: or https:",n);}function fg(e){let n=e;$r(n)||_e(0,"chain profile must be an object",n);let t=n.chainId,i=typeof t=="number"&&Number.isInteger(t)?t:0;Ti(i,n.id,"chain.id"),Nc(i,t,"chain.chainId",{positive:true}),Ti(i,n.name,"chain.name"),n.apiBaseUrl!==void 0&&lg(i,n.apiBaseUrl),Dt(i,n.registryAddress,"chain.registryAddress"),$r(n.contracts)||_e(i,"chain.contracts must be an object",n.contracts);for(let[r,a]of Object.entries(n.contracts))Dt(i,a,`chain.contracts.${r}`);return $r(n.collateral)||_e(i,"chain.collateral must be an object",n.collateral),Ti(i,n.collateral.symbol,"chain.collateral.symbol"),Nc(i,n.collateral.decimals,"chain.collateral.decimals",{nonNegative:true}),Dt(i,n.collateral.tokenAddress,"chain.collateral.tokenAddress"),Dt(i,n.collateral.tradingStorageSpender,"chain.collateral.tradingStorageSpender"),n.collateral.vaultSpender!==void 0&&Dt(i,n.collateral.vaultSpender,"chain.collateral.vaultSpender"),dg(i,n.oracleStaleThresholdMs,"chain.oracleStaleThresholdMs"),ug(i,n.blockTimeMs,"chain.blockTimeMs"),e}function pg(e){return e==="mainnet"||e==="base"||e===8453?c.mainnet:e==="testnet"||e==="base-sepolia"||e===84532?c.testnet:typeof e=="object"&&e!==null?fg(e):_e(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 Fc(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>0))throw new ValidationError({message:`transport.${n} must be a positive integer`,diagnostics:{sdkVersion:a$1,sourceTag:"runtime-guards",chainId:t}})}function mg(e,n,t){if(e!==void 0&&!(Number.isInteger(e)&&e>=0))throw new ValidationError({message:`transport.${n} must be a non-negative integer`,diagnostics:{sdkVersion:a$1,sourceTag:"runtime-guards",chainId:t}})}function gg(e,n){Fc(e?.maxConcurrentRest,"maxConcurrentRest",n),Fc(e?.maxConcurrentRpc,"maxConcurrentRpc",n),mg(e?.retryBudget,"retryBudget",n);}function hg(e,n){let t={chain:e},i=n.transport?.maxConcurrentRpc===void 0?void 0:ti(n.transport.maxConcurrentRpc),r=Yo(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 wg(e){return ic(e)}function Lc(){return {sdkCompatibility:async()=>c$1()}}function bg(e){let n=pg(e.chain);gg(e.transport,n.chainId);let t=hg(n,e);if(e.api===false){let C=j(t);return {chain:n,token:cr(t),delegation:rr(t),trading:C,valuation:rc(t),system:Lc()}}let i=e.api??{},r=i.baseUrl??n.apiBaseUrl,a=a$2(e.onEvent);if(r===void 0)throw new ValidationError({message:"API baseUrl is required for API-enabled DomFi clients",diagnostics:{sdkVersion:a$1,sourceTag:"read-plane",chainId:n.chainId},hint:"Pass api.baseUrl or use a DomfiChainProfile with apiBaseUrl."});let o=Lo({...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}:{}}),c=Co(o),s=Po({raw:c,chainId:n.chainId,...a!==void 0?{onEvent:a}:{}}),u=Zo({raw:c,chainId:n.chainId}),d={...Lc(),apiStatus:C=>s.status.get(C)},f={...t,api:s},l=cr(f),g=rr(f),b=j(f),y=Ec({...f,raw:c,...a!==void 0?{onEvent:a}:{}}),x=za(f,b,l,y);return {chain:n,token:l,delegation:g,trading:b,valuation:wg(f),system:d,api:s,raw:c,actions:x,vault:y,referrals:u}}export{bg as createDomfiClient};
package/dist/math.cjs ADDED
@@ -0,0 +1 @@
1
+ 'use strict';var units=require('@domfi/sdk/units');var v=100n,P=1000000n,R=1000000000000n,f=1000000000000000000n,N=10000000000000n,h=900n,te="domfi-core@a8bba32d92af1f44ae625e839e4ca420aefe89c2";var ne=/^(?:0|[1-9]\d*)(?:\.\d+)?$/,oe=/^(?:0|[1-9]\d*)$/;function ae(e,t,r){if(e.startsWith("-")||e.startsWith("+"))throw new Error(`${r} must be unsigned`);if(!ne.test(e))throw new Error(`invalid ${r}`);let[n="0",a=""]=e.split(".");if(a.length>t)throw new Error(`too many fractional digits: expected ${t}`);let o=10n**BigInt(t),i=a.length===0?0n:BigInt(a.padEnd(t,"0"));return BigInt(n)*o+i}function ie(e,t){if(typeof e=="string"&&!oe.test(e))throw new Error(`invalid ${t} raw integer`);let r=typeof e=="bigint"?e:BigInt(e);if(r<0n)throw new Error(`${t} must be unsigned`);return r}var x={fromRaw(e){return ie(e,"percent")},fromDecimal(e){return ae(e,6,"percent")},toRaw(e){return e},toRawString(e){return e.toString()}},k=units.UsdP6;function le(e){if(typeof e=="bigint")return x.fromRaw(e);let t=e.endsWith("%")?e.slice(0,-1):e;return x.fromDecimal(t)}var ce=/^(?:0|[1-9]\d*)(?:\.\d+)?$/,se=/^-?(?:0|[1-9]\d*)(?:\.\d+)?$/,W=/^(?:0|[1-9]\d*)$/,ge=/^-?(?:0|[1-9]\d*)$/;function pe(e,t){if(!(t?se:ce).test(e))throw new Error(`invalid decimal string: ${e}`);let n=e.startsWith("-"),a=n?e.slice(1):e,[o="0",i=""]=a.split(".");return {negative:n,whole:o,fraction:i}}function me(e,t){if(!(t?ge:W).test(e))throw new Error(`invalid raw integer: ${e}`);return BigInt(e)}function Pe(e,t){return t===void 0?e.toString():new Intl.NumberFormat(t).format(e)}function de(e){return e===void 0?".":new Intl.NumberFormat(e).formatToParts(1.1).find(t=>t.type==="decimal")?.value??"."}function ue(e,t,r,n){let a=n?.decimals??r;if(!Number.isInteger(a)||a<0)throw new Error("decimals must be a non-negative integer");let o=e<0n,i=o?-e:e,g=i/t,p=r===0?"":(i%t).toString().padStart(r,"0"),d=a<=r?p.slice(0,a):p.padEnd(a,"0");n?.trimTrailingZeros!==false&&(d=d.replace(/0+$/,""));let C=Pe(g,n?.locale),ee=d.length===0?C:`${C}${de(n?.locale)}${d}`;return `${o?"-":""}${n?.symbol??""}${ee}`}function M(e,t,r){return {from(n){if(!Number.isInteger(n)||n<t||n>r)throw new Error(`${e} out of range`);return n},toNumber(n){return n}}}function u(e,t,r=0n,n){let a=o=>{let i=typeof o=="bigint"?o:me(o,r<0n);if(i<r)throw new Error("value below minimum");if(n!==void 0&&i>n)throw new Error("value above maximum");return i};return {fromDecimal(o){let{negative:i,whole:g,fraction:p}=pe(o,r<0n);if(p.length>t)throw new Error(`too many fractional digits: expected ${t}`);let d=BigInt(g)*e+BigInt(p.padEnd(t,"0")||"0");return a(i?-d:d)},fromRaw:a,toRaw(o){return o},toRawString(o){return o.toString()},format(o,i){return ue(o,e,t,i)}}}var X=2n**32n-1n,we=2n**192n-1n,S=2n**256n-1n,D=-(2n**255n),B=2n**255n-1n,fe=Object.assign(M("TriggerOrderIndex",0,255),{parseApi(e){if(!W.test(e))throw new Error("TriggerOrderIndex out of range");return fe.from(Number(e))}}),s=u(1000000n,6,0n,S),m=u(1000000000000000000n,18,0n,we),c=u(100n,2,0n,X),O=u(1000000000000000000n,18,D,B),y=u(1000000000000000000n,18,0n,S),V=u(1000000n,6,D,B),T=Object.assign(u(1000000n,6,0n,S),{fromDollar(e){return T.fromDecimal(e.startsWith("$")?e.slice(1):e)}}),q=Object.assign(u(100n,2,1n,9999n),{fromBps(e){return q.fromRaw(e)}}),z=Object.assign(u(100n,2,1n,10000n),{full(){return z.fromRaw(10000n)}}),E=u(1000000n,6),L=u(1n,0,0n,100n);function l(e,t){if(e<=0n)throw new Error(`${t} must be positive`)}function b(e){return e<0n?-e:e}function w(e,t,r){if(r<=0n)throw new Error("denominator must be positive");let n=e*t,a=n/r,o=n%r;return n>0n&&o!==0n?a+1n:a}function ve(e){return e<0n?-e:e}function Z(e){if(e<0n)throw new Error("price underflow");return m.fromRaw(e)}function A(e){if(e<=0n)throw new Error("computed trigger price must be positive");return m.fromRaw(e)}function I(e){if(e==="long")return true;if(e==="short")return false;throw new Error("direction must be long or short")}function $(e){let t=m.toRaw(e.openPrice),r=m.toRaw(e.currentPrice),n=c.toRaw(e.leverage),a=c.toRaw(e.initialLeverage);l(t,"openPrice"),l(n,"leverage"),l(a,"initialLeverage");let o=n>a?n:a,i=h*P*n/o,p=(e.buy?r-t:t-r)*P*n/t;return {pRaw:p>i?i:p,maxPnlPRaw:i}}function Re(e){let t=m.toRaw(e.basePrice),r=c.toRaw(e.leverage);l(t,"basePrice"),l(r,"leverage");let n=t*x.toRaw(e.pnlPercent)/P/r,a=I(e.direction);return A(a?t+n:n<=t?t-n:0n)}function xe(e){let t=m.toRaw(e.basePrice),r=c.toRaw(e.leverage);l(t,"basePrice"),l(r,"leverage");let n=t*x.toRaw(e.pnlPercent)/P/r,a=I(e.direction);return A(a?n<=t?t-n:0n:t+n)}function be(e){let t=m.toRaw(e.basePrice);l(t,"basePrice");let r=t*x.toRaw(e.priceDeltaPercent)/(100n*P),n=I(e.direction);return A(n?t+r:r<=t?t-r:0n)}function Ie(e){let t=m.toRaw(e.basePrice);l(t,"basePrice");let r=t*x.toRaw(e.priceDeltaPercent)/(100n*P),n=I(e.direction);return A(n?r<=t?t-r:0n:t+r)}function H(e){let t=m.toRaw(e.openPrice),r=c.toRaw(e.leverage),n=c.toRaw(e.initialLeverage);l(t,"openPrice"),l(r,"leverage"),l(n,"initialLeverage");let a=r>n?r:n,o=h*P*r/a;return m.fromRaw(t*o/P/r)}function J(e){let t=m.toRaw(e.openPrice),r=c.toRaw(e.leverage);return l(t,"openPrice"),l(r,"leverage"),m.fromRaw(t*L.toRaw(e.maxSlP)/r)}function Ce(e){let t=m.toRaw(e.openPrice),r=m.toRaw(e.takeProfit),n=c.toRaw(e.leverage),a=I(e.direction),{pRaw:o,maxPnlPRaw:i}=$({openPrice:e.openPrice,currentPrice:e.takeProfit,buy:a,leverage:e.leverage,initialLeverage:e.initialLeverage});if(r===0n||o===i){let g=t*ve(i)/P/n;return Z(a?t+g:g<=t?t-g:0n)}return e.takeProfit}function Ue(e){let t=m.toRaw(e.openPrice),r=L.toRaw(e.maxSlP),n=c.toRaw(e.leverage),a=m.toRaw(e.stopLoss),o=I(e.direction),{pRaw:i}=$({openPrice:e.openPrice,currentPrice:e.stopLoss,buy:o,leverage:e.leverage,initialLeverage:e.initialLeverage});if(a>0n&&i<r*P*-1n){let g=t*r/n;return Z(o?t-g:t+g)}return e.stopLoss}function _e(e){let t=L.toRaw(e.maxSlP),r=m.toRaw(e.stopLoss),n=I(e.direction),{pRaw:a}=$({openPrice:e.openPrice,currentPrice:e.stopLoss,buy:n,leverage:e.leverage,initialLeverage:e.initialLeverage});return r>0n&&a<t*P*-1n?m.fromRaw(0n):e.stopLoss}function he(e){let t=m.toRaw(e.openPrice),r=c.toRaw(e.leverage),n=c.toRaw(e.initialLeverage);l(t,"openPrice"),l(r,"leverage"),l(n,"initialLeverage");let a=I(e.direction);if(e.takeProfit!==void 0){let o=m.toRaw(e.takeProfit);if(o!==0n){if(a?o<=t:o>=t)return {status:"violation",code:"tp_wrong_side",message:"take profit is on the wrong side of open price"};let i=m.toRaw(H(e));if(a?o>t+i:o<t-i)return {status:"violation",code:"tp_exceeds_max_distance",message:"take profit exceeds max gain distance"}}}if(e.stopLoss!==void 0){let o=m.toRaw(e.stopLoss);if(o!==0n){if(a?o>=t:o<=t)return {status:"violation",code:"sl_wrong_side",message:"stop loss is on the wrong side of open price"};let i=m.toRaw(J(e));if(a?o<t-i:o>t+i)return {status:"violation",code:"sl_exceeds_max_distance",message:"stop loss exceeds max loss distance"}}}return {status:"ok"}}function Le(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage);return l(r,"leverage"),k.fromRaw(t*r/v)}function Se(e){let t=k.toRaw(e.notionalUsd),r=c.toRaw(e.leverage);return l(r,"leverage"),s.fromRaw(w(t,v,r))}function K(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage),n=s.toRaw(e.topUpAmount);l(t,"collateral"),l(r,"leverage"),l(n,"topUpAmount");let a=w(t,r,100n),o=t+n,i=a*P,g=o*10000n,p=i/g,d=n;if(p<=0n)throw new Error("newLeverage must be positive");if(i%g!==0n){if(p+=1n,o=a*100n/p,o<=t)throw new Error("topUpAmount cannot produce valid collateral");d=o-t;}return {newLeverage:c.fromRaw(p),newCollateral:s.fromRaw(o),effectiveAmount:s.fromRaw(d)}}function ye(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage),n=c.toRaw(e.targetLeverage);if(l(t,"collateral"),l(r,"leverage"),l(n,"targetLeverage"),n>=r)throw new Error("targetLeverage must be below current leverage to add collateral");let o=w(t,r,100n)*100n,i=o/(t+1n),g=n<i?n:i;if(g<=0n)throw new Error("targetLeverage not reachable by adding collateral");let d=w(o,1n,g)-t;if(d<=0n)throw new Error("targetLeverage not reachable by adding collateral");return {...K({collateral:e.collateral,leverage:e.leverage,topUpAmount:s.fromRaw(d)}),requestedAmount:s.fromRaw(d)}}function Te(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage),n=c.toRaw(e.targetLeverage);if(l(t,"collateral"),l(r,"leverage"),l(n,"targetLeverage"),n<=r)throw new Error("targetLeverage must be above current leverage to remove collateral");let o=w(t,r,100n)*100n,i=o/(n+1n)+1n,g=t-i;if(g<=0n)throw new Error("targetLeverage not reachable by removing collateral");let p=o/i;if(p<=r)throw new Error("targetLeverage not reachable by removing collateral");if(o%i!==0n&&o/p>=t)throw new Error("targetLeverage not reachable by removing collateral");return {...Q({collateral:e.collateral,leverage:e.leverage,removeAmount:s.fromRaw(g)}),requestedAmount:s.fromRaw(g)}}function Q(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage),n=s.toRaw(e.removeAmount);if(l(t,"collateral"),l(r,"leverage"),l(n,"removeAmount"),n>=t)throw new Error("removeAmount must be below collateral");let a=w(t,r,100n),o=t-n,i=a*P,g=o*10000n,p=i/g,d=n;if(p<=0n)throw new Error("newLeverage must be positive");if(i%g!==0n){if(o=a*100n/p,o>=t)throw new Error("removeAmount cannot produce valid collateral");d=t-o;}return {newLeverage:c.fromRaw(p),newCollateral:s.fromRaw(o),effectiveAmount:s.fromRaw(d)}}function j(e,t){if(typeof e=="bigint")return e;if(!Number.isSafeInteger(e))throw new Error(`${t} must be a safe integer`);return BigInt(e)}function F(e,t){let r=j(e,t);if(r<0n)throw new Error(`${t} must be non-negative`);return r}function ke(e){if(e.openPriceRaw<=0n)throw new Error("openPriceRaw must be positive");let t=j(e.leverageRaw,"leverageRaw"),r=j(e.initialLeverageRaw,"initialLeverageRaw");l(t,"leverageRaw"),l(r,"initialLeverageRaw");let n=t>r?t:r,a=h*P*t/n,i=(e.buy?e.markPriceRaw-e.openPriceRaw:e.openPriceRaw-e.markPriceRaw)*P*t/e.openPriceRaw;return i>a?a:i}function Ee(e){let t=e.collateralRaw,r=t+t*e.percentProfitRaw/P/100n-e.fundingFeeRaw;return r<=e.liquidationMarginRaw?0n:r}function Y(e){if(e.collateralRaw<0n)throw new Error("collateralRaw must be non-negative");let t=F(e.leverageRaw,"leverageRaw"),r=F(e.maxLeverageRaw,"maxLeverageRaw"),n=F(e.liqMarginThresholdP,"liqMarginThresholdP");if(r===0n)throw new Error("maxLeverageRaw must be positive");let a=n*t*P/r;return e.collateralRaw*a/(100n*P)}function Ae(e){let t=F(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(t===0n)throw new Error("leverageRaw must be positive");let r=Y(e),n=e.collateralRaw-r-e.fundingFeeRaw;if(n<0n)throw new Error("targetCollateralAfterFees must be non-negative");let a=w(e.openPriceRaw,n*v,e.collateralRaw*t),o=e.buy?e.openPriceRaw-a:e.openPriceRaw+a;return o>0n?o:0n}function Fe(e){return e.markValueRaw-e.collateralRaw}function Ne(e){if(e.collateralRaw<=0n)throw new Error("collateralRaw must be positive");let t=e.markValueRaw-e.collateralRaw,r=-100n*P,n=t*P*100n/e.collateralRaw;return n<r?r:n}function Me(e){let t=O.toRaw(e.initialAccFunding),r=O.toRaw(e.endAccFunding),n=s.toRaw(e.collateral),a=c.toRaw(e.leverage);if(n<0n)throw new Error("collateral must be non-negative");if(a<=0n)throw new Error("leverage must be positive");let o=r-t,i=o*(n*a)/f/v;return i!==0n?i:o>0n?1n:0n}function De(e){let t=s.toRaw(e.collateral),r=c.toRaw(e.leverage),n=E.toRaw(e.feeP);if(t<0n)throw new Error("collateral must be non-negative");if(r<=0n)throw new Error("leverage must be positive");if(n<0n)throw new Error("feeP must be non-negative");let a=t*r/v;return s.fromRaw(a*n/P/100n)}function Be(e){let t=V.toRaw(e.tradeSize),r=V.toRaw(e.oiDelta),n=c.toRaw(e.leverage),a=E.toRaw(e.makerFeeP),o=E.toRaw(e.takerFeeP),i=c.toRaw(e.makerMaxLeverage);if(a<0n)throw new Error("makerFeeP must be non-negative");if(o<0n)throw new Error("takerFeeP must be non-negative");let g=0n,p=0n;return r*t<0n&&n<=i?r*(r+t)>=0n?g=b(t):(g=b(r),p=b(r+t)):p=b(t),s.fromRaw((a*g+o*p)/P/100n)}function Oe(e){let t=m.toRaw(e.price);if(t===0n)return {priceAfterImpact:m.fromRaw(0n),priceImpactP:0n};let r=y.toRaw(e.oiLong)*t/f/R,n=y.toRaw(e.oiShort)*t/f/R,a=s.toRaw(e.collateral)*c.toRaw(e.leverage)/100n;e.isOpen?e.isLong?r=r+a:n=n+a:e.isLong?r=r>=a?r-a:0n:n=n>=a?n-a:0n;let o=r+n,i=o>0n?(r-n)/o:0n,g=N*((f+b(i)*R)/f),p=w(t,g,f),d=e.isOpen?e.isLong?t+p:t-p:e.isLong?t-p:t+p,C=b(t-d)*100000000000000000000n/t;return {priceAfterImpact:m.fromRaw(d),priceImpactP:C}}function _(e,t){return t===void 0?{status:"ok",code:e}:{status:"ok",code:e,message:t}}function U(e,t){return {status:"violation",code:e,severity:"error",message:t}}function Ve(e){let t=c.toRaw(e.leverage),r=c.toRaw(e.minLeverage),n=c.toRaw(e.maxLeverage);return t<r?U("leverage_below_min","leverage is below market minimum"):t>n?U("leverage_above_max","leverage is above market maximum"):_("leverage_bounds")}function qe(e){let t=T.toRaw(e.notionalUsd),r=s.toRaw(e.minPositionSize);return t<r?U("position_size_below_min","position size is below market minimum"):_("minimum_position_size")}function ze(e){return s.toRaw(e.collateral)>s.toRaw(e.maxAllowedCollateral)?U("collateral_above_max","collateral is above market maximum"):_("max_collateral")}function $e(e){let t=y.toRaw(e.currentSideOi)*m.toRaw(e.price)/f,r=T.toRaw(e.requestedNotional)*R,n=T.toRaw(e.oiCap)*R;return t+r>n?U("oi_cap_exceeded","open interest cap would be exceeded"):_("oi_cap")}function je(e){return e.currentGroupCollateral===void 0?{status:"unchecked",code:"group_collateral_cap",reason:"missing_group_collateral"}:s.toRaw(e.currentGroupCollateral)+s.toRaw(e.requestedCollateral)>s.toRaw(e.groupMaxCollateral)?U("group_collateral_cap_exceeded","group collateral cap would be exceeded"):_("group_collateral_cap")}function We(e){let t=q.toRaw(e.slippage),r=L.toRaw(e.maxSlP)*100n;return t>r?U("slippage_above_max","slippage is above market maximum"):_("slippage_bounds")}function Ge(e){return z.toRaw(e.closePercent),_("close_percent_bounds")}exports.BASE_SPREAD_P=N;exports.MAX_GAIN_P=h;exports.PRECISION_12=R;exports.PRECISION_18=f;exports.PRECISION_2=v;exports.PRECISION_6=P;exports.PercentP6=x;exports.UsdP6=k;exports.checkClosePercentBounds=Ge;exports.checkGroupCollateralCap=je;exports.checkLeverageBounds=Ve;exports.checkMaxCollateral=ze;exports.checkMinimumPositionSize=qe;exports.checkOiCap=$e;exports.checkSlippageBounds=We;exports.collateralFromNotional=Se;exports.correctSl=Ue;exports.correctToNullSl=_e;exports.correctTp=Ce;exports.currentPercentProfit=ke;exports.leverageAfterRemoveCollateral=Q;exports.leverageAfterTopUp=K;exports.liquidationMarginRaw=Y;exports.liquidationPriceRaw=Ae;exports.markValueFromPercentProfit=Ee;exports.mathParityTarget=te;exports.maxSlDistance=J;exports.maxTpDistance=H;exports.notionalFromCollateral=Le;exports.openingFee=Be;exports.parseUnsignedPercentToP6=le;exports.positionFundingFeeRaw=Me;exports.priceImpact=Oe;exports.removeCollateralToReachLeverage=Te;exports.slPriceFromPnlPercent=xe;exports.slPriceFromPriceDelta=Ie;exports.topUpToReachLeverage=ye;exports.tpPriceFromPnlPercent=Re;exports.tpPriceFromPriceDelta=be;exports.tradeFee=De;exports.unrealizedPnlFromMarkValue=Fe;exports.unrealizedPnlPercentFromMarkValue=Ne;exports.validateTriggerPrices=he;