@wormhole-foundation/wormhole-connect 1.1.8 → 1.1.9-beta.0-development

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 (134) hide show
  1. package/dist/assets/{algorand-Bg-MfjsH.js → algorand-vDDEz6KP.js} +2 -2
  2. package/dist/assets/{ccip-atE20ZEL.js → ccip-B1JPJPOY.js} +1 -1
  3. package/dist/assets/{cosmwasm-xANzAboS.js → cosmwasm-DP4CIVSM.js} +2 -2
  4. package/dist/assets/{evm-B20gvxWA.js → evm-BB3755Wr.js} +1 -1
  5. package/dist/assets/{evm-DiRlPnyB.js → evm-FvO3h1wl.js} +4 -4
  6. package/dist/assets/{index-C6qclzFA.js → index-B1mp7Z63.js} +1 -1
  7. package/dist/assets/{index-eLk_b8u9.js → index-BU0ECMia.js} +1 -1
  8. package/dist/assets/{index-DyD6kblh.js → index-BbJVBTsE.js} +1 -1
  9. package/dist/assets/{index-BYxgRLLh.js → index-BhEp9mlK.js} +1 -1
  10. package/dist/assets/{index-D3WFv54i.js → index-Bvun80fl.js} +1 -1
  11. package/dist/assets/{index-jD6ZZ5Tu.js → index-Bz-32kSJ.js} +1 -1
  12. package/dist/assets/{index-CLcPjTbq.js → index-CVb8oZT5.js} +2 -2
  13. package/dist/assets/index-DP2zLB5d.js +5 -0
  14. package/dist/assets/index-Dp6gvGvL.js +2 -0
  15. package/dist/assets/{index-CxijOPcm.js → index-re-SltAL.js} +1 -1
  16. package/dist/assets/{index-DOuohql9.js → index-tGkAuFX0.js} +1 -1
  17. package/dist/assets/{index.es-BxGbRBbk.js → index.es-D8YphuI4.js} +2 -2
  18. package/dist/assets/{solana-DOaiyZir.js → solana-Bc-ePjuF.js} +1 -1
  19. package/dist/assets/{sui-mXOoFb4M.js → sui-DVNpNCUB.js} +4 -4
  20. package/dist/assets/{unsignedTransaction-0WUum9tP.js → unsignedTransaction-CPy_oMd2.js} +1 -1
  21. package/dist/assets/unsignedTransaction-arVvzoJx.js +1 -0
  22. package/dist/main.js +58 -58
  23. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  24. package/dist/src/config/testnet/tokens.d.ts.map +1 -1
  25. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  26. package/dist/src/icons/Chains/WORLD.d.ts.map +1 -1
  27. package/dist/src/icons/TokenIcons.d.ts.map +1 -1
  28. package/dist/src/icons/Tokens/WORLD.d.ts +4 -0
  29. package/dist/src/icons/Tokens/WORLD.d.ts.map +1 -0
  30. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  31. package/lib/{algorand-DUcbNcTT.mjs → algorand-CprzAHj4.mjs} +3 -3
  32. package/lib/{algorand-BvtlkYvW.js → algorand-D2kn_YCP.js} +1 -1
  33. package/lib/{aptos-B4rlOyU6.mjs → aptos-Cbdd7TGX.mjs} +3 -3
  34. package/lib/{aptos-BhgRAjHC.js → aptos-CooxpMkq.js} +2 -2
  35. package/lib/{aptos-nQowjIcb.mjs → aptos-CxfujMIg.mjs} +1 -1
  36. package/lib/{aptos-DhzeFi4o.js → aptos-D4EZf1pL.js} +1 -1
  37. package/lib/{ccip-jzRXPLFO.mjs → ccip-B7sQsroM.mjs} +1 -1
  38. package/lib/{ccip-BGUsNrsA.js → ccip-l4G3agzc.js} +1 -1
  39. package/lib/{cosmwasm-CGeqw6cI.js → cosmwasm-CzoZmAov.js} +2 -2
  40. package/lib/{cosmwasm-DrywDSkp.mjs → cosmwasm-r9Dcfq2_.mjs} +6 -6
  41. package/lib/{events-DuoZYNKO.mjs → events-BD3jHr55.mjs} +1 -1
  42. package/lib/{events-COjha8bx.js → events-DPG_k7aT.js} +1 -1
  43. package/lib/{evm-BBDClE2g.js → evm-CWPWco3x.js} +4 -4
  44. package/lib/{evm-BuIItcEA.mjs → evm-CqZH4qDI.mjs} +12 -12
  45. package/lib/{evm-CYnUn08H.js → evm-DA0UVqiZ.js} +1 -1
  46. package/lib/{evm-CEj34i-Y.mjs → evm-MLYkwdYo.mjs} +7 -7
  47. package/lib/{index-CdExxm-8.mjs → index-1P7DtP2r.mjs} +2 -2
  48. package/lib/{index-CJEjOaWr.mjs → index-5sE8OCOP.mjs} +1 -1
  49. package/lib/{index-NNKFqYq6.js → index-B2ALlGbm.js} +1 -1
  50. package/lib/{index-BJvQdk3o.js → index-B72tCThM.js} +7 -7
  51. package/lib/{index-CWM3H2LC.js → index-B9-xYyXd.js} +1 -1
  52. package/lib/{index-Bbhbkgfa.mjs → index-B9mhdAdq.mjs} +2 -2
  53. package/lib/{index-D9h0sJ3x.mjs → index-BA3kjRAK.mjs} +1 -1
  54. package/lib/{index-BIVNmWjC.js → index-BKK6e2Zn.js} +1 -1
  55. package/lib/{index-CRv6XxH6.mjs → index-BYIBymjK.mjs} +2 -2
  56. package/lib/{index-Cyjyg63s.js → index-BbDtFGWT.js} +1 -1
  57. package/lib/{index-DKptU_Hc.mjs → index-Bp9D0p75.mjs} +4 -4
  58. package/lib/{index-uAstvLd8.mjs → index-Bt79Gcg4.mjs} +2 -2
  59. package/lib/{index-Dc5wV51P.mjs → index-BwifXygO.mjs} +218 -125
  60. package/lib/{index-B6AFQ_fB.js → index-C-_dVgsh.js} +1 -1
  61. package/lib/{index-Bh9u5bZu.mjs → index-C41sqz-E.mjs} +2 -2
  62. package/lib/{index-B2JFHCjY.js → index-CGpV5u19.js} +1 -1
  63. package/lib/{index-BTncL8og.js → index-CRM9RIQm.js} +1 -1
  64. package/lib/{index-B-LwhonE.js → index-CT6UJ_EL.js} +1 -1
  65. package/lib/{index-CTHiXye2.js → index-CWJxT6vs.js} +1 -1
  66. package/lib/{index-Ds_oSleh.js → index-CgdZLNBr.js} +1 -1
  67. package/lib/{index-CjexIr7B.mjs → index-Ch4JHScc.mjs} +2 -2
  68. package/lib/{index-BJuAlURA.mjs → index-CjBfG1PD.mjs} +3 -3
  69. package/lib/index-CuMsUIvK.js +5 -0
  70. package/lib/{index-Cdpg2Kj3.mjs → index-CzSNeEZ7.mjs} +2 -2
  71. package/lib/{index-BXkKxPSN.mjs → index-D0i-3BNU.mjs} +2 -2
  72. package/lib/{index-a5wU3oUB.js → index-D2NQOwWl.js} +1 -1
  73. package/lib/{index-vjvft509.js → index-D6IvMYTY.js} +1 -1
  74. package/lib/{index-CXIAreWV.js → index-D6_pFYbp.js} +1 -1
  75. package/lib/{index-BISC0EuN.mjs → index-D7o-xpfy.mjs} +2 -2
  76. package/lib/index-DG-zySXj.js +1 -0
  77. package/lib/index-DPkB79ju.mjs +3816 -0
  78. package/lib/{index-DcurocLc.mjs → index-DTDgv8BR.mjs} +2 -2
  79. package/lib/{index-DdeuHj0J.mjs → index-D_HXrfx2.mjs} +1 -1
  80. package/lib/{index-qoWS15WJ.mjs → index-DfZldCn-.mjs} +4 -4
  81. package/lib/{index-D9fbH3oE.mjs → index-Dfq8cOSZ.mjs} +11 -11
  82. package/lib/{index-A72nDBhY.mjs → index-DgCVdoY_.mjs} +1 -1
  83. package/lib/{index-BuGRcK_Q.js → index-DsaeOVzT.js} +1 -1
  84. package/lib/{index-8IabBseN.js → index-DtJmfQmV.js} +1 -1
  85. package/lib/{index-D5tJ7kz1.js → index-HoGFMJt0.js} +1 -1
  86. package/lib/{index-BeJsTgpu.mjs → index-JEf11FIl.mjs} +4 -4
  87. package/lib/{index-D7uCV0-2.mjs → index-LhBPWv5M.mjs} +140 -149
  88. package/lib/{index-DlnKgVH2.js → index-LnwD-DoX.js} +1 -1
  89. package/lib/{index-HLOU4jOA.mjs → index-QA9dpScn.mjs} +2 -2
  90. package/lib/{index-Bi4OJr6O.js → index-ZlQhJUEX.js} +1 -1
  91. package/lib/index-qXJjecnK.js +5 -0
  92. package/lib/{index-DEi8dfu-.js → index-ruz_whBI.js} +1 -1
  93. package/lib/{index.es-tj48a6VI.mjs → index.es-DpTW5wIE.mjs} +5 -5
  94. package/lib/{index.es-ex5QzFoQ.js → index.es-Pku98btF.js} +2 -2
  95. package/lib/index.js +1 -1
  96. package/lib/index.mjs +2 -2
  97. package/lib/{keccak-CVFfUSfU.mjs → keccak-DWESGy_C.mjs} +1 -1
  98. package/lib/{keccak-CzODwJ6V.js → keccak-Rx7RS8L6.js} +1 -1
  99. package/lib/{pbkdf2-DLmVRSHA.js → pbkdf2-6hG-XBJs.js} +1 -1
  100. package/lib/{pbkdf2-GUTNazYD.mjs → pbkdf2-BVpVer9L.mjs} +1 -1
  101. package/lib/{signer-rbcgQjZj.js → signer-DhWIDOWp.js} +1 -1
  102. package/lib/{signer-Cqs1I7RB.mjs → signer-Dz4VN8ZI.mjs} +1 -1
  103. package/lib/solana-B6zAgqCg.mjs +16 -0
  104. package/lib/{solana-DoqT3pca.js → solana-BWM14UIk.js} +1 -1
  105. package/lib/solana-CKkJ-kf3.js +1 -0
  106. package/lib/{solana-7ZFkKRtX.mjs → solana-Dvddqnn3.mjs} +4 -4
  107. package/lib/{solanaEmbed.esm-Bkti_f5v.js → solanaEmbed.esm-Ghqj1fn8.js} +1 -1
  108. package/lib/{solanaEmbed.esm-LdO_IpPZ.mjs → solanaEmbed.esm-qmqvaX26.mjs} +3 -3
  109. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  110. package/lib/src/config/testnet/tokens.d.ts.map +1 -1
  111. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  112. package/lib/src/icons/Chains/WORLD.d.ts.map +1 -1
  113. package/lib/src/icons/TokenIcons.d.ts.map +1 -1
  114. package/lib/src/icons/Tokens/WORLD.d.ts +4 -0
  115. package/lib/src/icons/Tokens/WORLD.d.ts.map +1 -0
  116. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  117. package/lib/{sui-DfRirJoo.js → sui-BAoaV0fk.js} +1 -1
  118. package/lib/{sui-Df7REI6I.js → sui-COMAcPz7.js} +2 -2
  119. package/lib/{sui-Ch7mNd_P.mjs → sui-DKW6LQmE.mjs} +74 -75
  120. package/lib/{sui-BffnXOND.mjs → sui-DWDf6r1T.mjs} +1 -1
  121. package/lib/{unsignedTransaction-CvjJdjtG.js → unsignedTransaction-B9dxNqAu.js} +1 -1
  122. package/lib/unsignedTransaction-BD81leu1.mjs +16 -0
  123. package/lib/unsignedTransaction-DzSLsK-p.js +1 -0
  124. package/lib/{unsignedTransaction-CsCwFMvo.mjs → unsignedTransaction-T9pxJxVn.mjs} +4 -4
  125. package/package.json +17 -17
  126. package/dist/assets/index-CKe5Sopa.js +0 -2
  127. package/dist/src/utils/repairVaa.d.ts +0 -4
  128. package/dist/src/utils/repairVaa.d.ts.map +0 -1
  129. package/lib/index-BsHKXTKU.js +0 -1
  130. package/lib/index-DgbQ-dwi.js +0 -5
  131. package/lib/solana-BYPpXpJs.js +0 -1
  132. package/lib/solana-CcjhlsWI.mjs +0 -16
  133. package/lib/src/utils/repairVaa.d.ts +0 -4
  134. package/lib/src/utils/repairVaa.d.ts.map +0 -1
@@ -1 +1 @@
1
- var d=Object.defineProperty;var h=(i,e,r)=>e in i?d(i,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[e]=r;var o=(i,e,r)=>h(i,typeof e!="symbol"?e+"":e,r);import{b2 as m,cV as w,aI as g,c3 as p}from"../main.js";import{S as u}from"./sui-mXOoFb4M.js";import"./pbkdf2-DaCbRHcv.js";class c{constructor(e,r,t,n){o(this,"network");o(this,"chain");o(this,"provider");o(this,"contracts");o(this,"chainId");o(this,"coreBridgePackageId");this.network=e,this.chain=r,this.provider=t,this.contracts=n,this.chainId=m(r);const s=n.coreBridge;if(!s)throw new Error(`CoreBridge contract Address for chain ${r} not found`);this.coreBridgePackageId=s}getGuardianSet(e){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,r){const[t,n]=await u.chainFromRpc(e),s=r[n];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} !== ${t}`);return new c(t,n,e,s.contracts)}async*verifyMessage(e,r){throw new Error("Method not implemented.")}async*publishMessage(e,r){throw new Error("Method not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(t=>({emitter:t.emitterAddress,sequence:t.sequence,chain:this.chain}))}async getGuardianSetIndex(){throw new Error("Method not implemented.")}async parseMessages(e){var n;const t=(n=(await this.provider.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showInput:!0}})).events)==null?void 0:n.filter(s=>s.type.endsWith("WormholeMessage"));if(!t||t.length==0)throw new Error("WormholeMessage not found");return t.map(s=>{const a=s.parsedJson;return w("Uint8Array",{emitterChain:this.chain,emitterAddress:new g(a.sender).toUniversalAddress(),sequence:BigInt(a.sequence),guardianSet:0,timestamp:Number(a.timestamp),consistencyLevel:a.consistency_level,nonce:a.nonce,signatures:[],payload:new Uint8Array(a.payload)})})}}p("Sui","WormholeCore",c);export{c as SuiWormholeCore};
1
+ var d=Object.defineProperty;var h=(i,e,r)=>e in i?d(i,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):i[e]=r;var o=(i,e,r)=>h(i,typeof e!="symbol"?e+"":e,r);import{b2 as m,cV as w,aI as g,c3 as p}from"../main.js";import{S as u}from"./sui-DVNpNCUB.js";import"./pbkdf2-DaCbRHcv.js";class c{constructor(e,r,t,n){o(this,"network");o(this,"chain");o(this,"provider");o(this,"contracts");o(this,"chainId");o(this,"coreBridgePackageId");this.network=e,this.chain=r,this.provider=t,this.contracts=n,this.chainId=m(r);const s=n.coreBridge;if(!s)throw new Error(`CoreBridge contract Address for chain ${r} not found`);this.coreBridgePackageId=s}getGuardianSet(e){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,r){const[t,n]=await u.chainFromRpc(e),s=r[n];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} !== ${t}`);return new c(t,n,e,s.contracts)}async*verifyMessage(e,r){throw new Error("Method not implemented.")}async*publishMessage(e,r){throw new Error("Method not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(t=>({emitter:t.emitterAddress,sequence:t.sequence,chain:this.chain}))}async getGuardianSetIndex(){throw new Error("Method not implemented.")}async parseMessages(e){var n;const t=(n=(await this.provider.getTransactionBlock({digest:e,options:{showEvents:!0,showEffects:!0,showInput:!0}})).events)==null?void 0:n.filter(s=>s.type.endsWith("WormholeMessage"));if(!t||t.length==0)throw new Error("WormholeMessage not found");return t.map(s=>{const a=s.parsedJson;return w("Uint8Array",{emitterChain:this.chain,emitterAddress:new g(a.sender).toUniversalAddress(),sequence:BigInt(a.sequence),guardianSet:0,timestamp:Number(a.timestamp),consistencyLevel:a.consistency_level,nonce:a.nonce,signatures:[],payload:new Uint8Array(a.payload)})})}}p("Sui","WormholeCore",c);export{c as SuiWormholeCore};
@@ -1 +1 @@
1
- var N=Object.defineProperty;var W=(h,t,e)=>t in h?N(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var c=(h,t,e)=>W(h,typeof t!="symbol"?t+"":t,e);import"./index-eLk_b8u9.js";import{C as p,G as v}from"./cosmwasm-xANzAboS.js";import{b as o,c as g,C as x}from"./unsignedTransaction-0WUum9tP.js";import{am as u,aG as d,b2 as B,cp as S,a_ as a,bZ as E,ck as q,b_ as k,c3 as I,b3 as D}from"../main.js";import"./pbkdf2-DaCbRHcv.js";import"./keccak-CT2-a1US.js";import"./sha3-C-K85jAV.js";import"./index-kXg7_kw1.js";class y{constructor(t,e,r,s){c(this,"network");c(this,"chain");c(this,"rpc");c(this,"contracts");c(this,"tokenBridge");c(this,"translator");this.network=t,this.chain=e,this.rpc=r,this.contracts=s;const n=this.contracts.tokenBridge;if(!n)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);if(this.tokenBridge=n,this.translator=this.contracts.translator,this.translator!==void 0&&this.translator==="")throw new Error("Translator address may be undefined but not empty string")}static async fromRpc(t,e){const[r,s]=await p.chainFromRpc(t),n=e[s];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new y(r,s,t,e[s].contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{}return!1}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(t.chain===this.chain)throw new Error(`Expected foreign chain, got ${t.chain}`);if(u(t.address))throw new Error("Native asset cannot be a wrapped asset");const e=d.encode(t.address.toUniversalAddress().toUint8Array()),{address:r}=await this.rpc.queryContractSmart(this.tokenBridge,{wrapped_registry:{chain:B(t.chain),address:e}});return S(this.chain,r)}async getOriginalAsset(t){let e=new a(t);e.denomType==="factory"&&(e=v.factoryToCw20(e));const r=await this.rpc.queryContractSmart(e.toString(),{wrapped_asset_info:{}}),s=E(r.asset_chain),n=d.decode(r.asset_address);return{chain:s,address:new q(new Uint8Array(n))}}async getTokenUniversalAddress(t){return new a(t).toUniversalAddress()}async getTokenNativeAddress(t,e){return new a(e).toNative()}async isTransferCompleted(t){const e=d.encode(k(t));return(await this.rpc.queryContractSmart(this.tokenBridge,{is_vaa_redeemed:{vaa:e}})).is_redeemed}async*createAttestation(t,e){if(!e)throw new Error("Payer required to create attestation");const r=new a(t).toString(),s=new a(e).toString(),n=0,w=u(t)?{native_token:{denom:p.getNativeDenom(this.network,this.chain)}}:{token:{contract_addr:r}};yield this.createUnsignedTx({msgs:[o(s,this.tokenBridge,{create_asset_meta:{asset_info:w,nonce:n}})],fee:g(this.network,this.chain),memo:"Wormhole - Create Attestation"},"TokenBridge.createAttestation")}async*submitAttestation(t,e){if(!e)throw new Error("Payer required to submit attestation");const r=new a(e).toString();yield this.createUnsignedTx({msgs:[o(r,this.tokenBridge,{submit_vaa:{data:k(t)}})],fee:g(this.network,this.chain),memo:"Wormhole - Submit Attestation"},"TokenBridge.submitAttestation")}async*transfer(t,e,r,s,n){const w=Math.round(Math.random()*1e5),f="0",C=B(e.chain),b=d.encode(e.address.toUniversalAddress().toUint8Array()),U=p.getNativeDenom(this.network,this.chain),_=u(r);let i=_?U:r.toString();i.startsWith("factory")&&(i=v.factoryToCw20(new a(i)).toString());const l=new a(t).toString(),A=m=>{const T={asset:{amount:s.toString(),info:m},recipient_chain:C,recipient:b,fee:f,nonce:w};return n?{initiate_transfer_with_payload:{...T,payload:d.encode(n)}}:{initiate_transfer:T}};if(_){const m=[o(l,this.tokenBridge,{deposit_tokens:{}},[{amount:s.toString(),denom:i}]),o(l,this.tokenBridge,A({native_token:{denom:i}}))];yield this.createUnsignedTx({msgs:m,fee:g(this.network,this.chain),memo:"Wormhole - Initiate Native Transfer"},"TokenBridge.transferNative")}else{const m=[o(l,i,{increase_allowance:{spender:this.tokenBridge,amount:s.toString(),expires:{never:{}}}}),o(l,this.tokenBridge,A({token:{contract_addr:i}}),[{amount:s.toString(),denom:i}])];yield this.createUnsignedTx({msgs:m,fee:g(this.network,this.chain),memo:"Wormhole - Initiate Transfer"},"TokenBridge.transfer")}}async*redeem(t,e,r=!0){const s=d.encode(k(e)),n=new a(t).toString(),f=this.translator&&new a(this.translator).toUniversalAddress().equals(e.payload.to.address)?o(n,this.translator,{complete_transfer_and_convert:{vaa:s}}):o(n,this.tokenBridge,{submit_vaa:{data:s}});yield this.createUnsignedTx({msgs:[f],fee:g(this.network,this.chain),memo:"Wormhole - Complete Transfer"},"TokenBridge.redeem")}async parseTransactionDetails(t){throw new Error("Not implemented")}async getWrappedNative(){return S(this.chain,p.getNativeDenom(this.network,this.chain))}createUnsignedTx(t,e,r=!1){return new x(t,this.network,this.chain,e,r)}}I(D,"TokenBridge",y);export{y as CosmwasmTokenBridge};
1
+ var N=Object.defineProperty;var W=(h,t,e)=>t in h?N(h,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):h[t]=e;var c=(h,t,e)=>W(h,typeof t!="symbol"?t+"":t,e);import"./index-BU0ECMia.js";import{C as p,G as v}from"./cosmwasm-DP4CIVSM.js";import{b as o,c as g,C as x}from"./unsignedTransaction-CPy_oMd2.js";import{am as u,aG as d,b2 as B,cp as S,a_ as a,bZ as E,ck as q,b_ as k,c3 as I,b3 as D}from"../main.js";import"./pbkdf2-DaCbRHcv.js";import"./keccak-CT2-a1US.js";import"./sha3-C-K85jAV.js";import"./index-kXg7_kw1.js";class y{constructor(t,e,r,s){c(this,"network");c(this,"chain");c(this,"rpc");c(this,"contracts");c(this,"tokenBridge");c(this,"translator");this.network=t,this.chain=e,this.rpc=r,this.contracts=s;const n=this.contracts.tokenBridge;if(!n)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);if(this.tokenBridge=n,this.translator=this.contracts.translator,this.translator!==void 0&&this.translator==="")throw new Error("Translator address may be undefined but not empty string")}static async fromRpc(t,e){const[r,s]=await p.chainFromRpc(t),n=e[s];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new y(r,s,t,e[s].contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{}return!1}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(t.chain===this.chain)throw new Error(`Expected foreign chain, got ${t.chain}`);if(u(t.address))throw new Error("Native asset cannot be a wrapped asset");const e=d.encode(t.address.toUniversalAddress().toUint8Array()),{address:r}=await this.rpc.queryContractSmart(this.tokenBridge,{wrapped_registry:{chain:B(t.chain),address:e}});return S(this.chain,r)}async getOriginalAsset(t){let e=new a(t);e.denomType==="factory"&&(e=v.factoryToCw20(e));const r=await this.rpc.queryContractSmart(e.toString(),{wrapped_asset_info:{}}),s=E(r.asset_chain),n=d.decode(r.asset_address);return{chain:s,address:new q(new Uint8Array(n))}}async getTokenUniversalAddress(t){return new a(t).toUniversalAddress()}async getTokenNativeAddress(t,e){return new a(e).toNative()}async isTransferCompleted(t){const e=d.encode(k(t));return(await this.rpc.queryContractSmart(this.tokenBridge,{is_vaa_redeemed:{vaa:e}})).is_redeemed}async*createAttestation(t,e){if(!e)throw new Error("Payer required to create attestation");const r=new a(t).toString(),s=new a(e).toString(),n=0,w=u(t)?{native_token:{denom:p.getNativeDenom(this.network,this.chain)}}:{token:{contract_addr:r}};yield this.createUnsignedTx({msgs:[o(s,this.tokenBridge,{create_asset_meta:{asset_info:w,nonce:n}})],fee:g(this.network,this.chain),memo:"Wormhole - Create Attestation"},"TokenBridge.createAttestation")}async*submitAttestation(t,e){if(!e)throw new Error("Payer required to submit attestation");const r=new a(e).toString();yield this.createUnsignedTx({msgs:[o(r,this.tokenBridge,{submit_vaa:{data:k(t)}})],fee:g(this.network,this.chain),memo:"Wormhole - Submit Attestation"},"TokenBridge.submitAttestation")}async*transfer(t,e,r,s,n){const w=Math.round(Math.random()*1e5),f="0",C=B(e.chain),b=d.encode(e.address.toUniversalAddress().toUint8Array()),U=p.getNativeDenom(this.network,this.chain),_=u(r);let i=_?U:r.toString();i.startsWith("factory")&&(i=v.factoryToCw20(new a(i)).toString());const l=new a(t).toString(),A=m=>{const T={asset:{amount:s.toString(),info:m},recipient_chain:C,recipient:b,fee:f,nonce:w};return n?{initiate_transfer_with_payload:{...T,payload:d.encode(n)}}:{initiate_transfer:T}};if(_){const m=[o(l,this.tokenBridge,{deposit_tokens:{}},[{amount:s.toString(),denom:i}]),o(l,this.tokenBridge,A({native_token:{denom:i}}))];yield this.createUnsignedTx({msgs:m,fee:g(this.network,this.chain),memo:"Wormhole - Initiate Native Transfer"},"TokenBridge.transferNative")}else{const m=[o(l,i,{increase_allowance:{spender:this.tokenBridge,amount:s.toString(),expires:{never:{}}}}),o(l,this.tokenBridge,A({token:{contract_addr:i}}),[{amount:s.toString(),denom:i}])];yield this.createUnsignedTx({msgs:m,fee:g(this.network,this.chain),memo:"Wormhole - Initiate Transfer"},"TokenBridge.transfer")}}async*redeem(t,e,r=!0){const s=d.encode(k(e)),n=new a(t).toString(),f=this.translator&&new a(this.translator).toUniversalAddress().equals(e.payload.to.address)?o(n,this.translator,{complete_transfer_and_convert:{vaa:s}}):o(n,this.tokenBridge,{submit_vaa:{data:s}});yield this.createUnsignedTx({msgs:[f],fee:g(this.network,this.chain),memo:"Wormhole - Complete Transfer"},"TokenBridge.redeem")}async parseTransactionDetails(t){throw new Error("Not implemented")}async getWrappedNative(){return S(this.chain,p.getNativeDenom(this.network,this.chain))}createUnsignedTx(t,e,r=!1){return new x(t,this.network,this.chain,e,r)}}I(D,"TokenBridge",y);export{y as CosmwasmTokenBridge};
@@ -1,5 +1,5 @@
1
- var Zr=Object.defineProperty;var Yr=(t,e,r)=>e in t?Zr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var C=(t,e,r)=>Yr(t,typeof e!="symbol"?e+"":e,r);import{s as Qr,az as en,d0 as ft,aF as tn,d1 as hr,d2 as ke,bg as rn,cj as nt,bZ as nn,ck as nr,b2 as ce,aI as ge,am as oe,bW as sn,cp as ir,cm as an,d3 as on,b_ as ht,aG as cn,ae as De,a$ as un,cA as sr,d4 as dn,aH as ar,c3 as gr}from"../main.js";import{g as tt,a as gt,i as ze,S as Q,b as H,p as ln,c as fn,d as it,u as Ve,e as pr,f as hn,h as He,j as gn,k as pn}from"./sui-mXOoFb4M.js";import"./index-D3WFv54i.js";import"./pbkdf2-DaCbRHcv.js";class yr{constructor(e,r,n,i,s=!1){C(this,"transaction");C(this,"network");C(this,"chain");C(this,"description");C(this,"parallelizable");this.transaction=e,this.network=r,this.chain=n,this.description=i,this.parallelizable=s}}class yn extends TypeError{constructor(e,r){let n;const{message:i,explanation:s,...c}=e,{path:a}=e,o=a.length===0?i:`At path: ${a.join(".")} -- ${i}`;super(s??o),s!=null&&(this.cause=o),Object.assign(this,c),this.name=this.constructor.name,this.failures=()=>n??(n=[e,...r()])}}function mn(t){return L(t)&&typeof t[Symbol.iterator]=="function"}function L(t){return typeof t=="object"&&t!=null}function W(t){return typeof t=="symbol"?t.toString():typeof t=="string"?JSON.stringify(t):`${t}`}function wn(t){const{done:e,value:r}=t.next();return e?void 0:r}function bn(t,e,r,n){if(t===!0)return;t===!1?t={}:typeof t=="string"&&(t={message:t});const{path:i,branch:s}=e,{type:c}=r,{refinement:a,message:o=`Expected a value of type \`${c}\`${a?` with refinement \`${a}\``:""}, but received: \`${W(n)}\``}=t;return{value:n,type:c,refinement:a,key:i[i.length-1],path:i,branch:s,...t,message:o}}function*or(t,e,r,n){mn(t)||(t=[t]);for(const i of t){const s=bn(i,e,r,n);s&&(yield s)}}function*vt(t,e,r={}){const{path:n=[],branch:i=[t],coerce:s=!1,mask:c=!1}=r,a={path:n,branch:i};if(s&&(t=e.coercer(t,a),c&&e.type!=="type"&&L(e.schema)&&L(t)&&!Array.isArray(t)))for(const d in t)e.schema[d]===void 0&&delete t[d];let o="valid";for(const d of e.validator(t,a))d.explanation=r.message,o="not_valid",yield[d,void 0];for(let[d,u,g]of e.entries(t,a)){const m=vt(u,g,{path:d===void 0?n:[...n,d],branch:d===void 0?i:[...i,u],coerce:s,mask:c,message:r.message});for(const y of m)y[0]?(o=y[0].refinement!=null?"not_refined":"not_valid",yield[y[0],void 0]):s&&(u=y[1],d===void 0?t=u:t instanceof Map?t.set(d,u):t instanceof Set?t.add(u):L(t)&&(u!==void 0||d in t)&&(t[d]=u))}if(o!=="not_valid")for(const d of e.refiner(t,a))d.explanation=r.message,o="not_refined",yield[d,void 0];o==="valid"&&(yield[void 0,t])}class te{constructor(e){const{type:r,schema:n,validator:i,refiner:s,coercer:c=o=>o,entries:a=function*(){}}=e;this.type=r,this.schema=n,this.entries=a,this.coercer=c,i?this.validator=(o,d)=>{const u=i(o,d);return or(u,d,this,o)}:this.validator=()=>[],s?this.refiner=(o,d)=>{const u=s(o,d);return or(u,d,this,o)}:this.refiner=()=>[]}assert(e,r){return pt(e,this,r)}create(e,r){return mr(e,this,r)}is(e){return F(e,this)}mask(e,r){return wr(e,this,r)}validate(e,r={}){return Ce(e,this,r)}}function pt(t,e,r){const n=Ce(t,e,{message:r});if(n[0])throw n[0]}function mr(t,e,r){const n=Ce(t,e,{coerce:!0,message:r});if(n[0])throw n[0];return n[1]}function wr(t,e,r){const n=Ce(t,e,{coerce:!0,mask:!0,message:r});if(n[0])throw n[0];return n[1]}function F(t,e){return!Ce(t,e)[0]}function Ce(t,e,r={}){const n=vt(t,e,r),i=wn(n);return i[0]?[new yn(i[0],function*(){for(const c of n)c[0]&&(yield c[0])}),void 0]:[void 0,i[1]]}function Ae(...t){const e=t[0].type==="type",r=t.map(i=>i.schema),n=Object.assign({},...r);return e?Tn(n):p(n)}function G(t,e){return new te({type:t,schema:null,validator:e})}function yt(){return G("any",()=>!0)}function I(t){return new te({type:"array",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[r,n]of e.entries())yield[r,n,t]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||`Expected an array value, but received: ${W(e)}`}})}function Sn(){return G("bigint",t=>typeof t=="bigint")}function D(){return G("boolean",t=>typeof t=="boolean")}function ee(){return G("integer",t=>typeof t=="number"&&!isNaN(t)&&Number.isInteger(t)||`Expected an integer, but received: ${W(t)}`)}function T(t){const e=W(t),r=typeof t;return new te({type:"literal",schema:r==="string"||r==="number"||r==="boolean"?t:null,validator(n){return n===t||`Expected the literal \`${e}\`, but received: ${W(n)}`}})}function br(){return G("never",()=>!1)}function B(t){return new te({...t,validator:(e,r)=>e===null||t.validator(e,r),refiner:(e,r)=>e===null||t.refiner(e,r)})}function ye(){return G("number",t=>typeof t=="number"&&!isNaN(t)||`Expected a number, but received: ${W(t)}`)}function p(t){const e=t?Object.keys(t):[],r=br();return new te({type:"object",schema:t||null,*entries(n){if(t&&L(n)){const i=new Set(Object.keys(n));for(const s of e)i.delete(s),yield[s,n[s],t[s]];for(const s of i)yield[s,n[s],r]}},validator(n){return L(n)||`Expected an object, but received: ${W(n)}`},coercer(n){return L(n)?{...n}:n}})}function S(t){return new te({...t,validator:(e,r)=>e===void 0||t.validator(e,r),refiner:(e,r)=>e===void 0||t.refiner(e,r)})}function Y(t,e){return new te({type:"record",schema:null,*entries(r){if(L(r))for(const n in r){const i=r[n];yield[n,n,t],yield[n,i,e]}},validator(r){return L(r)||`Expected an object, but received: ${W(r)}`}})}function h(){return G("string",t=>typeof t=="string"||`Expected a string, but received: ${W(t)}`)}function Sr(t){const e=br();return new te({type:"tuple",schema:null,*entries(r){if(Array.isArray(r)){const n=Math.max(t.length,r.length);for(let i=0;i<n;i++)yield[i,r[i],t[i]||e]}},validator(r){return Array.isArray(r)||`Expected an array, but received: ${W(r)}`}})}function Tn(t){const e=Object.keys(t);return new te({type:"type",schema:t,*entries(r){if(L(r))for(const n of e)yield[n,r[n],t[n]]},validator(r){return L(r)||`Expected an object, but received: ${W(r)}`},coercer(r){return L(r)?{...r}:r}})}function $(t){const e=t.map(r=>r.type).join(" | ");return new te({type:"union",schema:null,coercer(r){for(const n of t){const[i,s]=n.validate(r,{coerce:!0});if(!i)return s}return r},validator(r,n){const i=[];for(const s of t){const[...c]=vt(r,s,n),[a]=c;if(a[0])for(const[o]of c)o&&i.push(o);else return[]}return[`Expected the value to satisfy a union of \`${e}\`, but received: ${W(r)}`,...i]}})}function Tr(){return G("unknown",()=>!0)}const kt=$([p({AddressOwner:h()}),p({ObjectOwner:h()}),p({Shared:p({initial_shared_version:B(h())})}),T("Immutable")]);G("SuiJsonValue",()=>!0);const vn=$([p({u32:h()}),p({u64:h()}),p({f64:h()})]);p({attributes:Y(h(),B(vn)),featureFlags:Y(h(),D()),maxSupportedProtocolVersion:h(),minSupportedProtocolVersion:h(),protocolVersion:h()});$([h(),T("package")]);const de=p({digest:h(),objectId:h(),version:$([ye(),h(),Sn()])});p({owner:kt,reference:de});p({objectId:h(),sequenceNumber:h()});p({payment:I(de),owner:h(),price:h(),budget:h()});const kn=Ae(de,p({type:h(),owner:kt,previousTransaction:h()})),In=Y(h(),yt()),jn=Y(h(),Tr()),En=p({type:h(),fields:In,hasPublicTransfer:D()}),On=p({disassembled:jn}),An=$([Ae(En,p({dataType:T("moveObject")})),Ae(On,p({dataType:T("package")}))]),_n=p({type:h(),hasPublicTransfer:D(),version:h(),bcsBytes:h()}),xn=p({id:h(),moduleMap:Y(h(),h())}),Bn=$([Ae(_n,p({dataType:T("moveObject")})),Ae(xn,p({dataType:T("package")}))]);BigInt(1e9);const vr=p({code:h(),error:S(h()),object_id:S(h()),parent_object_id:S(h()),version:S(h()),digest:S(h())}),Cn=p({data:B(S(Y(h(),h()))),error:B(S(vr))}),$n=$([Cn,S(Y(h(),h()))]),kr=p({objectId:h(),version:h(),digest:h(),type:B(S(h())),content:B(S(An)),bcs:B(S(Bn)),owner:B(S(kt)),previousTransaction:B(S(h())),storageRebate:B(S(h())),display:B(S($n))});p({showType:B(S(D())),showContent:B(S(D())),showBcs:B(S(D())),showOwner:B(S(D())),showPreviousTransaction:B(S(D())),showStorageRebate:B(S(D())),showDisplay:B(S(D()))});$([T("Exists"),T("notExists"),T("Deleted")]);I(kn);const Un=p({data:B(S(kr)),error:B(S(vr))});function Rn(t){return t.data}function Pn(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){const e=t.error;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function cr(t){if("reference"in t)return t.reference;const e=Rn(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Pn(t)}p({objectId:h(),atCheckpoint:S(ye())});p({data:I(Un),nextCursor:S(B(h())),hasNextPage:D()});$([p({details:kr,status:T("VersionFound")}),p({details:h(),status:T("ObjectNotExists")}),p({details:de,status:T("ObjectDeleted")}),p({details:Sr([h(),ye()]),status:T("VersionNotFound")}),p({details:p({asked_version:ye(),latest_version:ye(),object_id:h()}),status:T("VersionTooHigh")})]);const Mn=$([h(),p({Object:h()})]);I(Mn);const Nn=p({address:h(),name:h()}),Dn=$([T("Private"),T("Public"),T("Friend")]),It=p({abilities:I(h())}),zn=p({constraints:It,isPhantom:D()}),Vn=p({TypeParameter:ye()}),st=Sr([p({module:h(),package:h(),function:h()}),h()]);p({rank3Days:I(st),rank7Days:I(st),rank30Days:I(st)});function Ir(t){if(!t)return!1;if(typeof t=="string"||F(t,Vn)||jr(t))return!0;if(typeof t!="object")return!1;const e=t;return!!(F(e.Reference,Se)||F(e.MutableReference,Se)||F(e.Vector,Se))}const Se=G("SuiMoveNormalizedType",Ir);function jr(t){if(!t||typeof t!="object")return!1;const e=t;if(!e.Struct||typeof e.Struct!="object")return!1;const r=e.Struct;return!(typeof r.address!="string"||typeof r.module!="string"||typeof r.name!="string"||!Array.isArray(r.typeArguments)||!r.typeArguments.every(n=>Ir(n)))}G("SuiMoveNormalizedStructType",jr);const Fn=p({visibility:Dn,isEntry:D(),typeParameters:I(It),parameters:I(Se),return:I(Se)}),Gn=p({name:h(),type:Se}),Ln=p({abilities:It,typeParameters:I(zn),fields:I(Gn)}),Wn=p({fileFormatVersion:ye(),address:h(),name:h(),friends:I(Nn),structs:Y(h(),Ln),exposedFunctions:Y(h(),Fn)});Y(h(),Wn);function mt(t){return typeof t=="object"&&"MutableReference"in t?t.MutableReference:void 0}function Er(t){return typeof t=="object"&&"Reference"in t?t.Reference:void 0}function jt(t){if(typeof t=="object"&&"Struct"in t)return t;const e=Er(t),r=mt(t);if(typeof e=="object"&&"Struct"in e)return e;if(typeof r=="object"&&"Struct"in r)return r}function Kn(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),r=0;r<e.length;r++)e[r]=255;for(var n=0;n<t.length;n++){var i=t.charAt(n),s=i.charCodeAt(0);if(e[s]!==255)throw new TypeError(i+" is ambiguous");e[s]=n}var c=t.length,a=t.charAt(0),o=Math.log(c)/Math.log(256),d=Math.log(256)/Math.log(c);function u(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,b=0,f=0,j=y.length;f!==j&&y[f]===0;)f++,w++;for(var _=(j-f)*d+1>>>0,U=new Uint8Array(_);f!==j;){for(var E=y[f],k=0,R=_-1;(E!==0||k<b)&&R!==-1;R--,k++)E+=256*U[R]>>>0,U[R]=E%c>>>0,E=E/c>>>0;if(E!==0)throw new Error("Non-zero carry");b=k,f++}for(var K=_-b;K!==_&&U[K]===0;)K++;for(var we=a.repeat(w);K<_;++K)we+=t.charAt(U[K]);return we}function g(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;for(var w=0,b=0,f=0;y[w]===a;)b++,w++;for(var j=(y.length-w)*o+1>>>0,_=new Uint8Array(j);y[w];){var U=e[y.charCodeAt(w)];if(U===255)return;for(var E=0,k=j-1;(U!==0||E<f)&&k!==-1;k--,E++)U+=c*_[k]>>>0,_[k]=U%256>>>0,U=U/256>>>0;if(U!==0)throw new Error("Non-zero carry");f=E,w++}for(var R=j-f;R!==j&&_[R]===0;)R++;for(var K=new Uint8Array(b+(j-R)),we=b;R!==j;)K[we++]=_[R++];return K}function m(y){var w=g(y);if(w)return w;throw new Error("Non-base"+c+" character")}return{encode:u,decodeUnsafe:g,decode:m}}var Jn=Kn;const Hn=Jn,Xn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var qn=Hn(Xn);const Or=Qr(qn),$e=t=>Or.encode(t),Et=t=>Or.decode(t);function le(t){return Uint8Array.from(atob(t),e=>e.charCodeAt(0))}const at=8192;function Ue(t){if(t.length<at)return btoa(String.fromCharCode(...t));let e="";for(var r=0;r<t.length;r+=at){const n=t.slice(r,r+at);e+=String.fromCharCode(...n)}return btoa(e)}function rt(t){var i;const e=t.startsWith("0x")?t.slice(2):t,n=((i=(e.length%2===0?e:`0${e}}`).match(/.{2}/g))==null?void 0:i.map(s=>parseInt(s,16)))??[];return Uint8Array.from(n)}function Re(t){return t.reduce((e,r)=>e+r.toString(16).padStart(2,"0"),"")}function Ot(t){let e=[],r=0;if(t===0)return[0];for(;t>0;)e[r]=t&127,(t>>=7)&&(e[r]|=128),r+=1;return e}function Zn(t){let e=0,r=0,n=0;for(;;){let i=t[n];if(n+=1,e|=(i&127)<<r,!(i&128))break;r+=7}return{value:e,length:n}}class Ar{constructor(e){this.bytePosition=0,this.dataView=new DataView(e.buffer)}shift(e){return this.bytePosition+=e,this}read8(){let e=this.dataView.getUint8(this.bytePosition);return this.shift(1),e}read16(){let e=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),e}read32(){let e=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),e}read64(){let e=this.read32(),n=this.read32().toString(16)+e.toString(16).padStart(8,"0");return BigInt("0x"+n).toString(10)}read128(){let e=BigInt(this.read64()),n=BigInt(this.read64()).toString(16)+e.toString(16).padStart(16,"0");return BigInt("0x"+n).toString(10)}read256(){let e=BigInt(this.read128()),n=BigInt(this.read128()).toString(16)+e.toString(16).padStart(32,"0");return BigInt("0x"+n).toString(10)}readBytes(e){let r=this.bytePosition+this.dataView.byteOffset,n=new Uint8Array(this.dataView.buffer,r,e);return this.shift(e),n}readULEB(){let e=this.bytePosition+this.dataView.byteOffset,r=new Uint8Array(this.dataView.buffer,e),{value:n,length:i}=Zn(r);return this.shift(i),n}readVec(e){let r=this.readULEB(),n=[];for(let i=0;i<r;i++)n.push(e(this,i,r));return n}}function Yn(t,e){switch(e){case"base58":return $e(t);case"base64":return Ue(t);case"hex":return Re(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Qn(t,e){switch(e){case"base58":return Et(t);case"base64":return le(t);case"hex":return rt(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function At(t,e=["<",">"]){const[r,n]=e,i=[];let s="",c=0;for(let a=0;a<t.length;a++){const o=t[a];if(o===r&&c++,o===n&&c--,c===0&&o===","){i.push(s.trim()),s="";continue}s+=o}return i.push(s.trim()),i}class _r{constructor({size:e=1024,maxSize:r,allocateSize:n=1024}={}){this.bytePosition=0,this.size=e,this.maxSize=r||e,this.allocateSize=n,this.dataView=new DataView(new ArrayBuffer(e))}ensureSizeOrGrow(e){const r=this.bytePosition+e;if(r>this.size){const n=Math.min(this.maxSize,this.size+this.allocateSize);if(r>n)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${r}`);this.size=n;const i=new ArrayBuffer(this.size);new Uint8Array(i).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(i)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return ot(BigInt(e),8).forEach(r=>this.write8(r)),this}write128(e){return ot(BigInt(e),16).forEach(r=>this.write8(r)),this}write256(e){return ot(BigInt(e),32).forEach(r=>this.write8(r)),this}writeULEB(e){return Ot(e).forEach(r=>this.write8(r)),this}writeVec(e,r){return this.writeULEB(e.length),Array.from(e).forEach((n,i)=>r(this,n,i,e.length)),this}*[Symbol.iterator](){for(let e=0;e<this.bytePosition;e++)yield this.dataView.getUint8(e);return this.toBytes()}toBytes(){return new Uint8Array(this.dataView.buffer.slice(0,this.bytePosition))}toString(e){return Yn(this.toBytes(),e)}}function ot(t,e){let r=new Uint8Array(e),n=0;for(;t>0;)r[n]=Number(t%BigInt(256)),t=t/BigInt(256),n+=1;return r}var xr=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},X=(t,e,r)=>(xr(t,e,"read from private field"),r?r.call(t):e.get(t)),Xe=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},qe=(t,e,r,n)=>(xr(t,e,"write to private field"),e.set(t,r),r),be,Ie,Fe,ae;const Br=class{constructor(t){Xe(this,be,void 0),Xe(this,Ie,void 0),this.name=t.name,this.read=t.read,this.serializedSize=t.serializedSize??(()=>null),qe(this,be,t.write),qe(this,Ie,t.serialize??((e,r)=>{const n=new _r({size:this.serializedSize(e)??void 0,...r});return X(this,be).call(this,e,n),n.toBytes()})),this.validate=t.validate??(()=>{})}write(t,e){this.validate(t),X(this,be).call(this,t,e)}serialize(t,e){return this.validate(t),new ei(this,X(this,Ie).call(this,t,e))}parse(t){const e=new Ar(t);return this.read(e)}transform({name:t,input:e,output:r}){return new Br({name:t??this.name,read:n=>r(this.read(n)),write:(n,i)=>X(this,be).call(this,e(n),i),serializedSize:n=>this.serializedSize(e(n)),serialize:(n,i)=>X(this,Ie).call(this,e(n),i),validate:n=>this.validate(e(n))})}};let q=Br;be=new WeakMap;Ie=new WeakMap;const Cr=Symbol.for("@mysten/serialized-bcs");function _t(t){return!!t&&typeof t=="object"&&t[Cr]===!0}class ei{constructor(e,r){Xe(this,Fe,void 0),Xe(this,ae,void 0),qe(this,Fe,e),qe(this,ae,r)}get[Cr](){return!0}toBytes(){return X(this,ae)}toHex(){return Re(X(this,ae))}toBase64(){return Ue(X(this,ae))}toBase58(){return $e(X(this,ae))}parse(){return X(this,Fe).parse(X(this,ae))}}Fe=new WeakMap;ae=new WeakMap;function Ze({size:t,...e}){return new q({...e,serializedSize:()=>t})}function ct({readMethod:t,writeMethod:e,...r}){return Ze({...r,read:n=>n[t](),write:(n,i)=>i[e](n),validate:n=>{var i;if(n<0||n>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${n}. Expected value in range 0-${r.maxValue}`);(i=r.validate)==null||i.call(r,n)}})}function ut({readMethod:t,writeMethod:e,...r}){return Ze({...r,read:n=>n[t](),write:(n,i)=>i[e](BigInt(n)),validate:n=>{var s;const i=BigInt(n);if(i<0||i>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${i}. Expected value in range 0-${r.maxValue}`);(s=r.validate)==null||s.call(r,i)}})}function ti({serialize:t,...e}){const r=new q({...e,serialize:t,write:(n,i)=>{for(const s of r.serialize(n).toBytes())i.write8(s)}});return r}function ri({toBytes:t,fromBytes:e,...r}){return new q({...r,read:n=>{const i=n.readULEB(),s=n.readBytes(i);return e(s)},write:(n,i)=>{const s=t(n);i.writeULEB(s.length);for(let c=0;c<s.length;c++)i.write8(s[c])},serialize:n=>{const i=t(n),s=Ot(i.length),c=new Uint8Array(s.length+i.length);return c.set(s,0),c.set(i,s.length),c},validate:n=>{var i;if(typeof n!="string")throw new TypeError(`Invalid ${r.name} value: ${n}. Expected string`);(i=r.validate)==null||i.call(r,n)}})}function ni(t){let e=null;function r(){return e||(e=t()),e}return new q({name:"lazy",read:n=>r().read(n),serializedSize:n=>r().serializedSize(n),write:(n,i)=>r().write(n,i),serialize:(n,i)=>r().serialize(n,i).toBytes()})}const l={u8(t){return ct({name:"u8",readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...t})},u16(t){return ct({name:"u16",readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...t})},u32(t){return ct({name:"u32",readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...t})},u64(t){return ut({name:"u64",readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...t})},u128(t){return ut({name:"u128",readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...t})},u256(t){return ut({name:"u256",readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...t})},bool(t){return Ze({name:"bool",size:1,read:e=>e.read8()===1,write:(e,r)=>r.write8(e?1:0),...t,validate:e=>{var r;if((r=t==null?void 0:t.validate)==null||r.call(t,e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(t){return ti({name:"uleb128",read:e=>e.readULEB(),serialize:e=>Uint8Array.from(Ot(e)),...t})},bytes(t,e){return Ze({name:`bytes[${t}]`,size:t,read:r=>r.readBytes(t),write:(r,n)=>{for(let i=0;i<t;i++)n.write8(r[i]??0)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t)throw new TypeError(`Expected array of length ${t}, found ${r.length}`)}})},string(t){return ri({name:"string",toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...t})},fixedArray(t,e,r){return new q({name:`${e.name}[${t}]`,read:n=>{const i=new Array(t);for(let s=0;s<t;s++)i[s]=e.read(n);return i},write:(n,i)=>{for(const s of n)e.write(s,i)},...r,validate:n=>{var i;if((i=r==null?void 0:r.validate)==null||i.call(r,n),!("length"in n))throw new TypeError(`Expected array, found ${typeof n}`);if(n.length!==t)throw new TypeError(`Expected array of length ${t}, found ${n.length}`)}})},option(t){return l.enum(`Option<${t.name}>`,{None:null,Some:t}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>"Some"in e?e.Some:null})},vector(t,e){return new q({name:`vector<${t.name}>`,read:r=>{const n=r.readULEB(),i=new Array(n);for(let s=0;s<n;s++)i[s]=t.read(r);return i},write:(r,n)=>{n.writeULEB(r.length);for(const i of r)t.write(i,n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`)}})},tuple(t,e){return new q({name:`(${t.map(r=>r.name).join(", ")})`,serializedSize:r=>{let n=0;for(let i=0;i<t.length;i++){const s=t[i].serializedSize(r[i]);if(s==null)return null;n+=s}return n},read:r=>{const n=[];for(const i of t)n.push(i.read(r));return n},write:(r,n)=>{for(let i=0;i<t.length;i++)t[i].write(r[i],n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!Array.isArray(r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t.length)throw new TypeError(`Expected array of length ${t.length}, found ${r.length}`)}})},struct(t,e,r){const n=Object.entries(e);return new q({name:t,serializedSize:i=>{let s=0;for(const[c,a]of n){const o=a.serializedSize(i[c]);if(o==null)return null;s+=o}return s},read:i=>{const s={};for(const[c,a]of n)s[c]=a.read(i);return s},write:(i,s)=>{for(const[c,a]of n)a.write(i[c],s)},...r,validate:i=>{var s;if((s=r==null?void 0:r.validate)==null||s.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})},enum(t,e,r){const n=Object.entries(e);return new q({name:t,read:i=>{const s=i.readULEB(),[c,a]=n[s];return{[c]:(a==null?void 0:a.read(i))??!0}},write:(i,s)=>{const[c,a]=Object.entries(i)[0];for(let o=0;o<n.length;o++){const[d,u]=n[o];if(d===c){s.writeULEB(o),u==null||u.write(a,s);return}}},...r,validate:i=>{var a;if((a=r==null?void 0:r.validate)==null||a.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`);const s=Object.keys(i);if(s.length!==1)throw new TypeError(`Expected object with one key, found ${s.length}`);const[c]=s;if(!Object.hasOwn(e,c))throw new TypeError(`Invalid enum variant ${c}`)}})},map(t,e){return l.vector(l.tuple([t,e])).transform({name:`Map<${t.name}, ${e.name}>`,input:r=>[...r.entries()],output:r=>{const n=new Map;for(const[i,s]of r)n.set(i,s);return n}})},generic(t,e){return(...r)=>e(...r).transform({name:`${e.name}<${r.map(n=>n.name).join(", ")}>`,input:n=>n,output:n=>n})},lazy(t){return ni(t)}},ii=32,je=class{constructor(t){if(this.types=new Map,this.counter=0,t instanceof je){this.schema=t.schema,this.types=new Map(t.types);return}if(this.schema=t,this.registerAddressType(je.ADDRESS,t.addressLength,t.addressEncoding),this.registerVectorType(t.vectorType),t.types&&t.types.structs)for(let e of Object.keys(t.types.structs))this.registerStructType(e,t.types.structs[e]);if(t.types&&t.types.enums)for(let e of Object.keys(t.types.enums))this.registerEnumType(e,t.types.enums[e]);if(t.types&&t.types.aliases)for(let e of Object.keys(t.types.aliases))this.registerAlias(e,t.types.aliases[e]);t.withPrimitives!==!1&&si(this)}tempKey(){return`bcs-struct-${++this.counter}`}ser(t,e,r){if(typeof t=="string"||Array.isArray(t)){const{name:n,params:i}=this.parseTypeName(t);return this.getTypeInterface(n).encode(this,e,r,i)}if(typeof t=="object"){const n=this.tempKey();return new je(this).registerStructType(n,t).ser(n,e,r)}throw new Error(`Incorrect type passed into the '.ser()' function.
1
+ var Zr=Object.defineProperty;var Yr=(t,e,r)=>e in t?Zr(t,e,{enumerable:!0,configurable:!0,writable:!0,value:r}):t[e]=r;var M=(t,e,r)=>Yr(t,typeof e!="symbol"?e+"":e,r);import{s as Qr,az as en,d0 as ft,aF as tn,d1 as hr,d2 as ke,bg as rn,cj as nt,bZ as nn,ck as nr,b2 as ce,aI as ge,am as oe,bW as sn,cp as ir,cm as an,d3 as on,b_ as ht,aG as cn,ae as De,a$ as un,cA as sr,d4 as dn,aH as ar,c3 as gr}from"../main.js";import{g as tt,a as gt,i as Ve,S as Q,b as H,p as ln,c as fn,d as it,u as ze,e as pr,f as hn,h as He,j as gn,k as pn}from"./sui-DVNpNCUB.js";import"./index-Bvun80fl.js";import{S as yr}from"./unsignedTransaction-arVvzoJx.js";import"./pbkdf2-DaCbRHcv.js";class yn extends TypeError{constructor(e,r){let n;const{message:i,explanation:s,...c}=e,{path:a}=e,o=a.length===0?i:`At path: ${a.join(".")} -- ${i}`;super(s??o),s!=null&&(this.cause=o),Object.assign(this,c),this.name=this.constructor.name,this.failures=()=>n??(n=[e,...r()])}}function mn(t){return L(t)&&typeof t[Symbol.iterator]=="function"}function L(t){return typeof t=="object"&&t!=null}function W(t){return typeof t=="symbol"?t.toString():typeof t=="string"?JSON.stringify(t):`${t}`}function wn(t){const{done:e,value:r}=t.next();return e?void 0:r}function bn(t,e,r,n){if(t===!0)return;t===!1?t={}:typeof t=="string"&&(t={message:t});const{path:i,branch:s}=e,{type:c}=r,{refinement:a,message:o=`Expected a value of type \`${c}\`${a?` with refinement \`${a}\``:""}, but received: \`${W(n)}\``}=t;return{value:n,type:c,refinement:a,key:i[i.length-1],path:i,branch:s,...t,message:o}}function*or(t,e,r,n){mn(t)||(t=[t]);for(const i of t){const s=bn(i,e,r,n);s&&(yield s)}}function*vt(t,e,r={}){const{path:n=[],branch:i=[t],coerce:s=!1,mask:c=!1}=r,a={path:n,branch:i};if(s&&(t=e.coercer(t,a),c&&e.type!=="type"&&L(e.schema)&&L(t)&&!Array.isArray(t)))for(const d in t)e.schema[d]===void 0&&delete t[d];let o="valid";for(const d of e.validator(t,a))d.explanation=r.message,o="not_valid",yield[d,void 0];for(let[d,u,g]of e.entries(t,a)){const m=vt(u,g,{path:d===void 0?n:[...n,d],branch:d===void 0?i:[...i,u],coerce:s,mask:c,message:r.message});for(const y of m)y[0]?(o=y[0].refinement!=null?"not_refined":"not_valid",yield[y[0],void 0]):s&&(u=y[1],d===void 0?t=u:t instanceof Map?t.set(d,u):t instanceof Set?t.add(u):L(t)&&(u!==void 0||d in t)&&(t[d]=u))}if(o!=="not_valid")for(const d of e.refiner(t,a))d.explanation=r.message,o="not_refined",yield[d,void 0];o==="valid"&&(yield[void 0,t])}class te{constructor(e){const{type:r,schema:n,validator:i,refiner:s,coercer:c=o=>o,entries:a=function*(){}}=e;this.type=r,this.schema=n,this.entries=a,this.coercer=c,i?this.validator=(o,d)=>{const u=i(o,d);return or(u,d,this,o)}:this.validator=()=>[],s?this.refiner=(o,d)=>{const u=s(o,d);return or(u,d,this,o)}:this.refiner=()=>[]}assert(e,r){return pt(e,this,r)}create(e,r){return mr(e,this,r)}is(e){return F(e,this)}mask(e,r){return wr(e,this,r)}validate(e,r={}){return Ce(e,this,r)}}function pt(t,e,r){const n=Ce(t,e,{message:r});if(n[0])throw n[0]}function mr(t,e,r){const n=Ce(t,e,{coerce:!0,message:r});if(n[0])throw n[0];return n[1]}function wr(t,e,r){const n=Ce(t,e,{coerce:!0,mask:!0,message:r});if(n[0])throw n[0];return n[1]}function F(t,e){return!Ce(t,e)[0]}function Ce(t,e,r={}){const n=vt(t,e,r),i=wn(n);return i[0]?[new yn(i[0],function*(){for(const c of n)c[0]&&(yield c[0])}),void 0]:[void 0,i[1]]}function Ae(...t){const e=t[0].type==="type",r=t.map(i=>i.schema),n=Object.assign({},...r);return e?Tn(n):p(n)}function G(t,e){return new te({type:t,schema:null,validator:e})}function yt(){return G("any",()=>!0)}function I(t){return new te({type:"array",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[r,n]of e.entries())yield[r,n,t]},coercer(e){return Array.isArray(e)?e.slice():e},validator(e){return Array.isArray(e)||`Expected an array value, but received: ${W(e)}`}})}function Sn(){return G("bigint",t=>typeof t=="bigint")}function D(){return G("boolean",t=>typeof t=="boolean")}function ee(){return G("integer",t=>typeof t=="number"&&!isNaN(t)&&Number.isInteger(t)||`Expected an integer, but received: ${W(t)}`)}function T(t){const e=W(t),r=typeof t;return new te({type:"literal",schema:r==="string"||r==="number"||r==="boolean"?t:null,validator(n){return n===t||`Expected the literal \`${e}\`, but received: ${W(n)}`}})}function br(){return G("never",()=>!1)}function B(t){return new te({...t,validator:(e,r)=>e===null||t.validator(e,r),refiner:(e,r)=>e===null||t.refiner(e,r)})}function ye(){return G("number",t=>typeof t=="number"&&!isNaN(t)||`Expected a number, but received: ${W(t)}`)}function p(t){const e=t?Object.keys(t):[],r=br();return new te({type:"object",schema:t||null,*entries(n){if(t&&L(n)){const i=new Set(Object.keys(n));for(const s of e)i.delete(s),yield[s,n[s],t[s]];for(const s of i)yield[s,n[s],r]}},validator(n){return L(n)||`Expected an object, but received: ${W(n)}`},coercer(n){return L(n)?{...n}:n}})}function S(t){return new te({...t,validator:(e,r)=>e===void 0||t.validator(e,r),refiner:(e,r)=>e===void 0||t.refiner(e,r)})}function Y(t,e){return new te({type:"record",schema:null,*entries(r){if(L(r))for(const n in r){const i=r[n];yield[n,n,t],yield[n,i,e]}},validator(r){return L(r)||`Expected an object, but received: ${W(r)}`}})}function h(){return G("string",t=>typeof t=="string"||`Expected a string, but received: ${W(t)}`)}function Sr(t){const e=br();return new te({type:"tuple",schema:null,*entries(r){if(Array.isArray(r)){const n=Math.max(t.length,r.length);for(let i=0;i<n;i++)yield[i,r[i],t[i]||e]}},validator(r){return Array.isArray(r)||`Expected an array, but received: ${W(r)}`}})}function Tn(t){const e=Object.keys(t);return new te({type:"type",schema:t,*entries(r){if(L(r))for(const n of e)yield[n,r[n],t[n]]},validator(r){return L(r)||`Expected an object, but received: ${W(r)}`},coercer(r){return L(r)?{...r}:r}})}function C(t){const e=t.map(r=>r.type).join(" | ");return new te({type:"union",schema:null,coercer(r){for(const n of t){const[i,s]=n.validate(r,{coerce:!0});if(!i)return s}return r},validator(r,n){const i=[];for(const s of t){const[...c]=vt(r,s,n),[a]=c;if(a[0])for(const[o]of c)o&&i.push(o);else return[]}return[`Expected the value to satisfy a union of \`${e}\`, but received: ${W(r)}`,...i]}})}function Tr(){return G("unknown",()=>!0)}const kt=C([p({AddressOwner:h()}),p({ObjectOwner:h()}),p({Shared:p({initial_shared_version:B(h())})}),T("Immutable")]);G("SuiJsonValue",()=>!0);const vn=C([p({u32:h()}),p({u64:h()}),p({f64:h()})]);p({attributes:Y(h(),B(vn)),featureFlags:Y(h(),D()),maxSupportedProtocolVersion:h(),minSupportedProtocolVersion:h(),protocolVersion:h()});C([h(),T("package")]);const de=p({digest:h(),objectId:h(),version:C([ye(),h(),Sn()])});p({owner:kt,reference:de});p({objectId:h(),sequenceNumber:h()});p({payment:I(de),owner:h(),price:h(),budget:h()});const kn=Ae(de,p({type:h(),owner:kt,previousTransaction:h()})),In=Y(h(),yt()),jn=Y(h(),Tr()),En=p({type:h(),fields:In,hasPublicTransfer:D()}),On=p({disassembled:jn}),An=C([Ae(En,p({dataType:T("moveObject")})),Ae(On,p({dataType:T("package")}))]),_n=p({type:h(),hasPublicTransfer:D(),version:h(),bcsBytes:h()}),xn=p({id:h(),moduleMap:Y(h(),h())}),Bn=C([Ae(_n,p({dataType:T("moveObject")})),Ae(xn,p({dataType:T("package")}))]);BigInt(1e9);const vr=p({code:h(),error:S(h()),object_id:S(h()),parent_object_id:S(h()),version:S(h()),digest:S(h())}),Cn=p({data:B(S(Y(h(),h()))),error:B(S(vr))}),$n=C([Cn,S(Y(h(),h()))]),kr=p({objectId:h(),version:h(),digest:h(),type:B(S(h())),content:B(S(An)),bcs:B(S(Bn)),owner:B(S(kt)),previousTransaction:B(S(h())),storageRebate:B(S(h())),display:B(S($n))});p({showType:B(S(D())),showContent:B(S(D())),showBcs:B(S(D())),showOwner:B(S(D())),showPreviousTransaction:B(S(D())),showStorageRebate:B(S(D())),showDisplay:B(S(D()))});C([T("Exists"),T("notExists"),T("Deleted")]);I(kn);const Un=p({data:B(S(kr)),error:B(S(vr))});function Rn(t){return t.data}function Pn(t){if(t.error&&"object_id"in t.error&&"version"in t.error&&"digest"in t.error){const e=t.error;return{objectId:e.object_id,version:e.version,digest:e.digest}}}function cr(t){if("reference"in t)return t.reference;const e=Rn(t);return e?{objectId:e.objectId,version:e.version,digest:e.digest}:Pn(t)}p({objectId:h(),atCheckpoint:S(ye())});p({data:I(Un),nextCursor:S(B(h())),hasNextPage:D()});C([p({details:kr,status:T("VersionFound")}),p({details:h(),status:T("ObjectNotExists")}),p({details:de,status:T("ObjectDeleted")}),p({details:Sr([h(),ye()]),status:T("VersionNotFound")}),p({details:p({asked_version:ye(),latest_version:ye(),object_id:h()}),status:T("VersionTooHigh")})]);const Mn=C([h(),p({Object:h()})]);I(Mn);const Nn=p({address:h(),name:h()}),Dn=C([T("Private"),T("Public"),T("Friend")]),It=p({abilities:I(h())}),Vn=p({constraints:It,isPhantom:D()}),zn=p({TypeParameter:ye()}),st=Sr([p({module:h(),package:h(),function:h()}),h()]);p({rank3Days:I(st),rank7Days:I(st),rank30Days:I(st)});function Ir(t){if(!t)return!1;if(typeof t=="string"||F(t,zn)||jr(t))return!0;if(typeof t!="object")return!1;const e=t;return!!(F(e.Reference,Se)||F(e.MutableReference,Se)||F(e.Vector,Se))}const Se=G("SuiMoveNormalizedType",Ir);function jr(t){if(!t||typeof t!="object")return!1;const e=t;if(!e.Struct||typeof e.Struct!="object")return!1;const r=e.Struct;return!(typeof r.address!="string"||typeof r.module!="string"||typeof r.name!="string"||!Array.isArray(r.typeArguments)||!r.typeArguments.every(n=>Ir(n)))}G("SuiMoveNormalizedStructType",jr);const Fn=p({visibility:Dn,isEntry:D(),typeParameters:I(It),parameters:I(Se),return:I(Se)}),Gn=p({name:h(),type:Se}),Ln=p({abilities:It,typeParameters:I(Vn),fields:I(Gn)}),Wn=p({fileFormatVersion:ye(),address:h(),name:h(),friends:I(Nn),structs:Y(h(),Ln),exposedFunctions:Y(h(),Fn)});Y(h(),Wn);function mt(t){return typeof t=="object"&&"MutableReference"in t?t.MutableReference:void 0}function Er(t){return typeof t=="object"&&"Reference"in t?t.Reference:void 0}function jt(t){if(typeof t=="object"&&"Struct"in t)return t;const e=Er(t),r=mt(t);if(typeof e=="object"&&"Struct"in e)return e;if(typeof r=="object"&&"Struct"in r)return r}function Kn(t){if(t.length>=255)throw new TypeError("Alphabet too long");for(var e=new Uint8Array(256),r=0;r<e.length;r++)e[r]=255;for(var n=0;n<t.length;n++){var i=t.charAt(n),s=i.charCodeAt(0);if(e[s]!==255)throw new TypeError(i+" is ambiguous");e[s]=n}var c=t.length,a=t.charAt(0),o=Math.log(c)/Math.log(256),d=Math.log(256)/Math.log(c);function u(y){if(y instanceof Uint8Array||(ArrayBuffer.isView(y)?y=new Uint8Array(y.buffer,y.byteOffset,y.byteLength):Array.isArray(y)&&(y=Uint8Array.from(y))),!(y instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(y.length===0)return"";for(var w=0,b=0,f=0,j=y.length;f!==j&&y[f]===0;)f++,w++;for(var _=(j-f)*d+1>>>0,$=new Uint8Array(_);f!==j;){for(var E=y[f],k=0,U=_-1;(E!==0||k<b)&&U!==-1;U--,k++)E+=256*$[U]>>>0,$[U]=E%c>>>0,E=E/c>>>0;if(E!==0)throw new Error("Non-zero carry");b=k,f++}for(var K=_-b;K!==_&&$[K]===0;)K++;for(var we=a.repeat(w);K<_;++K)we+=t.charAt($[K]);return we}function g(y){if(typeof y!="string")throw new TypeError("Expected String");if(y.length===0)return new Uint8Array;for(var w=0,b=0,f=0;y[w]===a;)b++,w++;for(var j=(y.length-w)*o+1>>>0,_=new Uint8Array(j);y[w];){var $=e[y.charCodeAt(w)];if($===255)return;for(var E=0,k=j-1;($!==0||E<f)&&k!==-1;k--,E++)$+=c*_[k]>>>0,_[k]=$%256>>>0,$=$/256>>>0;if($!==0)throw new Error("Non-zero carry");f=E,w++}for(var U=j-f;U!==j&&_[U]===0;)U++;for(var K=new Uint8Array(b+(j-U)),we=b;U!==j;)K[we++]=_[U++];return K}function m(y){var w=g(y);if(w)return w;throw new Error("Non-base"+c+" character")}return{encode:u,decodeUnsafe:g,decode:m}}var Jn=Kn;const Hn=Jn,Xn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var qn=Hn(Xn);const Or=Qr(qn),$e=t=>Or.encode(t),Et=t=>Or.decode(t);function le(t){return Uint8Array.from(atob(t),e=>e.charCodeAt(0))}const at=8192;function Ue(t){if(t.length<at)return btoa(String.fromCharCode(...t));let e="";for(var r=0;r<t.length;r+=at){const n=t.slice(r,r+at);e+=String.fromCharCode(...n)}return btoa(e)}function rt(t){var i;const e=t.startsWith("0x")?t.slice(2):t,n=((i=(e.length%2===0?e:`0${e}}`).match(/.{2}/g))==null?void 0:i.map(s=>parseInt(s,16)))??[];return Uint8Array.from(n)}function Re(t){return t.reduce((e,r)=>e+r.toString(16).padStart(2,"0"),"")}function Ot(t){let e=[],r=0;if(t===0)return[0];for(;t>0;)e[r]=t&127,(t>>=7)&&(e[r]|=128),r+=1;return e}function Zn(t){let e=0,r=0,n=0;for(;;){let i=t[n];if(n+=1,e|=(i&127)<<r,!(i&128))break;r+=7}return{value:e,length:n}}class Ar{constructor(e){this.bytePosition=0,this.dataView=new DataView(e.buffer)}shift(e){return this.bytePosition+=e,this}read8(){let e=this.dataView.getUint8(this.bytePosition);return this.shift(1),e}read16(){let e=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),e}read32(){let e=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),e}read64(){let e=this.read32(),n=this.read32().toString(16)+e.toString(16).padStart(8,"0");return BigInt("0x"+n).toString(10)}read128(){let e=BigInt(this.read64()),n=BigInt(this.read64()).toString(16)+e.toString(16).padStart(16,"0");return BigInt("0x"+n).toString(10)}read256(){let e=BigInt(this.read128()),n=BigInt(this.read128()).toString(16)+e.toString(16).padStart(32,"0");return BigInt("0x"+n).toString(10)}readBytes(e){let r=this.bytePosition+this.dataView.byteOffset,n=new Uint8Array(this.dataView.buffer,r,e);return this.shift(e),n}readULEB(){let e=this.bytePosition+this.dataView.byteOffset,r=new Uint8Array(this.dataView.buffer,e),{value:n,length:i}=Zn(r);return this.shift(i),n}readVec(e){let r=this.readULEB(),n=[];for(let i=0;i<r;i++)n.push(e(this,i,r));return n}}function Yn(t,e){switch(e){case"base58":return $e(t);case"base64":return Ue(t);case"hex":return Re(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Qn(t,e){switch(e){case"base58":return Et(t);case"base64":return le(t);case"hex":return rt(t);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function At(t,e=["<",">"]){const[r,n]=e,i=[];let s="",c=0;for(let a=0;a<t.length;a++){const o=t[a];if(o===r&&c++,o===n&&c--,c===0&&o===","){i.push(s.trim()),s="";continue}s+=o}return i.push(s.trim()),i}class _r{constructor({size:e=1024,maxSize:r,allocateSize:n=1024}={}){this.bytePosition=0,this.size=e,this.maxSize=r||e,this.allocateSize=n,this.dataView=new DataView(new ArrayBuffer(e))}ensureSizeOrGrow(e){const r=this.bytePosition+e;if(r>this.size){const n=Math.min(this.maxSize,this.size+this.allocateSize);if(r>n)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${r}`);this.size=n;const i=new ArrayBuffer(this.size);new Uint8Array(i).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(i)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return ot(BigInt(e),8).forEach(r=>this.write8(r)),this}write128(e){return ot(BigInt(e),16).forEach(r=>this.write8(r)),this}write256(e){return ot(BigInt(e),32).forEach(r=>this.write8(r)),this}writeULEB(e){return Ot(e).forEach(r=>this.write8(r)),this}writeVec(e,r){return this.writeULEB(e.length),Array.from(e).forEach((n,i)=>r(this,n,i,e.length)),this}*[Symbol.iterator](){for(let e=0;e<this.bytePosition;e++)yield this.dataView.getUint8(e);return this.toBytes()}toBytes(){return new Uint8Array(this.dataView.buffer.slice(0,this.bytePosition))}toString(e){return Yn(this.toBytes(),e)}}function ot(t,e){let r=new Uint8Array(e),n=0;for(;t>0;)r[n]=Number(t%BigInt(256)),t=t/BigInt(256),n+=1;return r}var xr=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},X=(t,e,r)=>(xr(t,e,"read from private field"),r?r.call(t):e.get(t)),Xe=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},qe=(t,e,r,n)=>(xr(t,e,"write to private field"),e.set(t,r),r),be,Ie,Fe,ae;const Br=class{constructor(t){Xe(this,be,void 0),Xe(this,Ie,void 0),this.name=t.name,this.read=t.read,this.serializedSize=t.serializedSize??(()=>null),qe(this,be,t.write),qe(this,Ie,t.serialize??((e,r)=>{const n=new _r({size:this.serializedSize(e)??void 0,...r});return X(this,be).call(this,e,n),n.toBytes()})),this.validate=t.validate??(()=>{})}write(t,e){this.validate(t),X(this,be).call(this,t,e)}serialize(t,e){return this.validate(t),new ei(this,X(this,Ie).call(this,t,e))}parse(t){const e=new Ar(t);return this.read(e)}transform({name:t,input:e,output:r}){return new Br({name:t??this.name,read:n=>r(this.read(n)),write:(n,i)=>X(this,be).call(this,e(n),i),serializedSize:n=>this.serializedSize(e(n)),serialize:(n,i)=>X(this,Ie).call(this,e(n),i),validate:n=>this.validate(e(n))})}};let q=Br;be=new WeakMap;Ie=new WeakMap;const Cr=Symbol.for("@mysten/serialized-bcs");function _t(t){return!!t&&typeof t=="object"&&t[Cr]===!0}class ei{constructor(e,r){Xe(this,Fe,void 0),Xe(this,ae,void 0),qe(this,Fe,e),qe(this,ae,r)}get[Cr](){return!0}toBytes(){return X(this,ae)}toHex(){return Re(X(this,ae))}toBase64(){return Ue(X(this,ae))}toBase58(){return $e(X(this,ae))}parse(){return X(this,Fe).parse(X(this,ae))}}Fe=new WeakMap;ae=new WeakMap;function Ze({size:t,...e}){return new q({...e,serializedSize:()=>t})}function ct({readMethod:t,writeMethod:e,...r}){return Ze({...r,read:n=>n[t](),write:(n,i)=>i[e](n),validate:n=>{var i;if(n<0||n>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${n}. Expected value in range 0-${r.maxValue}`);(i=r.validate)==null||i.call(r,n)}})}function ut({readMethod:t,writeMethod:e,...r}){return Ze({...r,read:n=>n[t](),write:(n,i)=>i[e](BigInt(n)),validate:n=>{var s;const i=BigInt(n);if(i<0||i>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${i}. Expected value in range 0-${r.maxValue}`);(s=r.validate)==null||s.call(r,i)}})}function ti({serialize:t,...e}){const r=new q({...e,serialize:t,write:(n,i)=>{for(const s of r.serialize(n).toBytes())i.write8(s)}});return r}function ri({toBytes:t,fromBytes:e,...r}){return new q({...r,read:n=>{const i=n.readULEB(),s=n.readBytes(i);return e(s)},write:(n,i)=>{const s=t(n);i.writeULEB(s.length);for(let c=0;c<s.length;c++)i.write8(s[c])},serialize:n=>{const i=t(n),s=Ot(i.length),c=new Uint8Array(s.length+i.length);return c.set(s,0),c.set(i,s.length),c},validate:n=>{var i;if(typeof n!="string")throw new TypeError(`Invalid ${r.name} value: ${n}. Expected string`);(i=r.validate)==null||i.call(r,n)}})}function ni(t){let e=null;function r(){return e||(e=t()),e}return new q({name:"lazy",read:n=>r().read(n),serializedSize:n=>r().serializedSize(n),write:(n,i)=>r().write(n,i),serialize:(n,i)=>r().serialize(n,i).toBytes()})}const l={u8(t){return ct({name:"u8",readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...t})},u16(t){return ct({name:"u16",readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...t})},u32(t){return ct({name:"u32",readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...t})},u64(t){return ut({name:"u64",readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...t})},u128(t){return ut({name:"u128",readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...t})},u256(t){return ut({name:"u256",readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...t})},bool(t){return Ze({name:"bool",size:1,read:e=>e.read8()===1,write:(e,r)=>r.write8(e?1:0),...t,validate:e=>{var r;if((r=t==null?void 0:t.validate)==null||r.call(t,e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(t){return ti({name:"uleb128",read:e=>e.readULEB(),serialize:e=>Uint8Array.from(Ot(e)),...t})},bytes(t,e){return Ze({name:`bytes[${t}]`,size:t,read:r=>r.readBytes(t),write:(r,n)=>{for(let i=0;i<t;i++)n.write8(r[i]??0)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t)throw new TypeError(`Expected array of length ${t}, found ${r.length}`)}})},string(t){return ri({name:"string",toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...t})},fixedArray(t,e,r){return new q({name:`${e.name}[${t}]`,read:n=>{const i=new Array(t);for(let s=0;s<t;s++)i[s]=e.read(n);return i},write:(n,i)=>{for(const s of n)e.write(s,i)},...r,validate:n=>{var i;if((i=r==null?void 0:r.validate)==null||i.call(r,n),!("length"in n))throw new TypeError(`Expected array, found ${typeof n}`);if(n.length!==t)throw new TypeError(`Expected array of length ${t}, found ${n.length}`)}})},option(t){return l.enum(`Option<${t.name}>`,{None:null,Some:t}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>"Some"in e?e.Some:null})},vector(t,e){return new q({name:`vector<${t.name}>`,read:r=>{const n=r.readULEB(),i=new Array(n);for(let s=0;s<n;s++)i[s]=t.read(r);return i},write:(r,n)=>{n.writeULEB(r.length);for(const i of r)t.write(i,n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`)}})},tuple(t,e){return new q({name:`(${t.map(r=>r.name).join(", ")})`,serializedSize:r=>{let n=0;for(let i=0;i<t.length;i++){const s=t[i].serializedSize(r[i]);if(s==null)return null;n+=s}return n},read:r=>{const n=[];for(const i of t)n.push(i.read(r));return n},write:(r,n)=>{for(let i=0;i<t.length;i++)t[i].write(r[i],n)},...e,validate:r=>{var n;if((n=e==null?void 0:e.validate)==null||n.call(e,r),!Array.isArray(r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==t.length)throw new TypeError(`Expected array of length ${t.length}, found ${r.length}`)}})},struct(t,e,r){const n=Object.entries(e);return new q({name:t,serializedSize:i=>{let s=0;for(const[c,a]of n){const o=a.serializedSize(i[c]);if(o==null)return null;s+=o}return s},read:i=>{const s={};for(const[c,a]of n)s[c]=a.read(i);return s},write:(i,s)=>{for(const[c,a]of n)a.write(i[c],s)},...r,validate:i=>{var s;if((s=r==null?void 0:r.validate)==null||s.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})},enum(t,e,r){const n=Object.entries(e);return new q({name:t,read:i=>{const s=i.readULEB(),[c,a]=n[s];return{[c]:(a==null?void 0:a.read(i))??!0}},write:(i,s)=>{const[c,a]=Object.entries(i)[0];for(let o=0;o<n.length;o++){const[d,u]=n[o];if(d===c){s.writeULEB(o),u==null||u.write(a,s);return}}},...r,validate:i=>{var a;if((a=r==null?void 0:r.validate)==null||a.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`);const s=Object.keys(i);if(s.length!==1)throw new TypeError(`Expected object with one key, found ${s.length}`);const[c]=s;if(!Object.hasOwn(e,c))throw new TypeError(`Invalid enum variant ${c}`)}})},map(t,e){return l.vector(l.tuple([t,e])).transform({name:`Map<${t.name}, ${e.name}>`,input:r=>[...r.entries()],output:r=>{const n=new Map;for(const[i,s]of r)n.set(i,s);return n}})},generic(t,e){return(...r)=>e(...r).transform({name:`${e.name}<${r.map(n=>n.name).join(", ")}>`,input:n=>n,output:n=>n})},lazy(t){return ni(t)}},ii=32,je=class{constructor(t){if(this.types=new Map,this.counter=0,t instanceof je){this.schema=t.schema,this.types=new Map(t.types);return}if(this.schema=t,this.registerAddressType(je.ADDRESS,t.addressLength,t.addressEncoding),this.registerVectorType(t.vectorType),t.types&&t.types.structs)for(let e of Object.keys(t.types.structs))this.registerStructType(e,t.types.structs[e]);if(t.types&&t.types.enums)for(let e of Object.keys(t.types.enums))this.registerEnumType(e,t.types.enums[e]);if(t.types&&t.types.aliases)for(let e of Object.keys(t.types.aliases))this.registerAlias(e,t.types.aliases[e]);t.withPrimitives!==!1&&si(this)}tempKey(){return`bcs-struct-${++this.counter}`}ser(t,e,r){if(typeof t=="string"||Array.isArray(t)){const{name:n,params:i}=this.parseTypeName(t);return this.getTypeInterface(n).encode(this,e,r,i)}if(typeof t=="object"){const n=this.tempKey();return new je(this).registerStructType(n,t).ser(n,e,r)}throw new Error(`Incorrect type passed into the '.ser()' function.
2
2
  ${JSON.stringify(t)}`)}de(t,e,r){if(typeof e=="string")if(r)e=Qn(e,r);else throw new Error("To pass a string to `bcs.de`, specify encoding");if(typeof t=="string"||Array.isArray(t)){const{name:n,params:i}=this.parseTypeName(t);return this.getTypeInterface(n).decode(this,e,i)}if(typeof t=="object"){const n=new je(this),i=this.tempKey();return n.registerStructType(i,t).de(i,e,r)}throw new Error(`Incorrect type passed into the '.de()' function.
3
3
  ${JSON.stringify(t)}`)}hasType(t){return this.types.has(t)}registerAlias(t,e){return this.types.set(t,e),this}registerType(t,e,r,n=()=>!0){const{name:i,params:s}=this.parseTypeName(t);return this.types.set(i,{encode(c,a,o,d){const u=s.reduce((g,m,y)=>Object.assign(g,{[m]:d[y]}),{});return this._encodeRaw.call(c,new _r(o),a,d,u)},decode(c,a,o){const d=s.reduce((u,g,m)=>Object.assign(u,{[g]:o[m]}),{});return this._decodeRaw.call(c,new Ar(a),o,d)},_encodeRaw(c,a,o,d){if(n(a))return e.call(this,c,a,o,d);throw new Error(`Validation failed for type ${i}, data: ${a}`)},_decodeRaw(c,a,o){return r.call(this,c,a,o)}}),this}registerBcsType(t,e){return this.registerType(t,(r,n,i)=>{const s=i.map(c=>new q({name:String(c),write:(a,o)=>{const{name:d,params:u}=this.parseTypeName(c),g=this.getTypeInterface(d),m=u.reduce((y,w,b)=>Object.assign(y,{[w]:i[b]}),{});return g._encodeRaw.call(this,o,a,u,m)},read:()=>{throw new Error("Not implemented")}}));return e(...s).write(n,r),r},(r,n)=>{const i=n.map(s=>new q({name:String(s),write:(c,a)=>{throw new Error("Not implemented")},read:c=>{const{name:a,params:o}=this.parseTypeName(s),d=this.getTypeInterface(a),u=o.reduce((g,m,y)=>Object.assign(g,{[m]:n[y]}),{});return d._decodeRaw.call(this,c,o,u)}}));return e(...i).read(r)}),this}registerAddressType(t,e,r="hex"){switch(r){case"base64":return this.registerType(t,function(i,s){return le(s).reduce((c,a)=>c.write8(a),i)},function(i){return Ue(i.readBytes(e))});case"hex":return this.registerType(t,function(i,s){return rt(s).reduce((c,a)=>c.write8(a),i)},function(i){return Re(i.readBytes(e))});default:throw new Error("Unsupported encoding! Use either hex or base64")}}registerVectorType(t){let{name:e,params:r}=this.parseTypeName(t);if(r.length>1)throw new Error("Vector can have only one type parameter; got "+e);return this.registerType(t,function(i,s,c,a){return i.writeVec(s,(o,d)=>{let u=c[0];if(!u)throw new Error(`Incorrect number of type parameters passed a to vector '${t}'`);let{name:g,params:m}=this.parseTypeName(u);if(this.hasType(g))return this.getTypeInterface(g)._encodeRaw.call(this,o,d,m,a);if(!(g in a))throw new Error(`Unable to find a matching type definition for ${g} in vector; make sure you passed a generic`);let{name:y,params:w}=this.parseTypeName(a[g]);return this.getTypeInterface(y)._encodeRaw.call(this,o,d,w,a)})},function(i,s,c){return i.readVec(a=>{let o=s[0];if(!o)throw new Error(`Incorrect number of type parameters passed to a vector '${t}'`);let{name:d,params:u}=this.parseTypeName(o);if(this.hasType(d))return this.getTypeInterface(d)._decodeRaw.call(this,a,u,c);if(!(d in c))throw new Error(`Unable to find a matching type definition for ${d} in vector; make sure you passed a generic`);let{name:g,params:m}=this.parseTypeName(c[d]);return this.getTypeInterface(g)._decodeRaw.call(this,a,m,c)})})}registerStructType(t,e){for(let c in e){let a=this.tempKey(),o=e[c];!Array.isArray(o)&&typeof o!="string"&&(e[c]=a,this.registerStructType(a,o))}let r=Object.freeze(e),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(t);return this.registerType(t,function(a,o,d,u){if(!o||o.constructor!==Object)throw new Error(`Expected ${i} to be an Object, got: ${o}`);if(d.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${d.length}`);for(let g of n){if(!(g in o))throw new Error(`Struct ${i} requires field ${g}:${r[g]}`);const{name:m,params:y}=this.parseTypeName(r[g]);if(!s.includes(m))this.getTypeInterface(m)._encodeRaw.call(this,a,o[g],y,u);else{const w=s.indexOf(m);let{name:b,params:f}=this.parseTypeName(d[w]);if(this.hasType(b)){this.getTypeInterface(b)._encodeRaw.call(this,a,o[g],f,u);continue}if(!(b in u))throw new Error(`Unable to find a matching type definition for ${b} in ${i}; make sure you passed a generic`);let{name:j,params:_}=this.parseTypeName(u[b]);this.getTypeInterface(j)._encodeRaw.call(this,a,o[g],_,u)}}return a},function(a,o,d){if(o.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${o.length}`);let u={};for(let g of n){const{name:m,params:y}=this.parseTypeName(r[g]);if(!s.includes(m))u[g]=this.getTypeInterface(m)._decodeRaw.call(this,a,y,d);else{const w=s.indexOf(m);let{name:b,params:f}=this.parseTypeName(o[w]);if(this.hasType(b)){u[g]=this.getTypeInterface(b)._decodeRaw.call(this,a,f,d);continue}if(!(b in d))throw new Error(`Unable to find a matching type definition for ${b} in ${i}; make sure you passed a generic`);let{name:j,params:_}=this.parseTypeName(d[b]);u[g]=this.getTypeInterface(j)._decodeRaw.call(this,a,_,d)}}return u})}registerEnumType(t,e){for(let c in e){let a=this.tempKey(),o=e[c];o!==null&&!Array.isArray(o)&&typeof o!="string"&&(e[c]=a,this.registerStructType(a,o))}let r=Object.freeze(e),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(t);return this.registerType(t,function(a,o,d,u){if(!o)throw new Error(`Unable to write enum "${i}", missing data.
4
4
  Received: "${o}"`);if(typeof o!="object")throw new Error(`Incorrect data passed into enum "${i}", expected object with properties: "${n.join(" | ")}".
5
- Received: "${JSON.stringify(o)}"`);let g=Object.keys(o)[0];if(g===void 0)throw new Error(`Empty object passed as invariant of the enum "${i}"`);let m=n.indexOf(g);if(m===-1)throw new Error(`Unknown invariant of the enum "${i}", allowed values: "${n.join(" | ")}"; received "${g}"`);let y=n[m],w=r[y];if(a.write8(m),w===null)return a;let b=s.indexOf(w),f=b===-1?w:d[b];{let{name:j,params:_}=this.parseTypeName(f);return this.getTypeInterface(j)._encodeRaw.call(this,a,o[g],_,u)}},function(a,o,d){let u=a.readULEB(),g=n[u],m=r[g];if(u===-1)throw new Error(`Decoding type mismatch, expected enum "${i}" invariant index, received "${u}"`);if(m===null)return{[g]:!0};let y=s.indexOf(m),w=y===-1?m:o[y];{let{name:b,params:f}=this.parseTypeName(w);return{[g]:this.getTypeInterface(b)._decodeRaw.call(this,a,f,d)}}})}getTypeInterface(t){let e=this.types.get(t);if(typeof e=="string"){let r=[];for(;typeof e=="string";){if(r.includes(e))throw new Error(`Recursive definition found: ${r.join(" -> ")} -> ${e}`);r.push(e),e=this.types.get(e)}}if(e===void 0)throw new Error(`Type ${t} is not registered`);return e}parseTypeName(t){if(Array.isArray(t)){let[a,...o]=t;return{name:a,params:o}}if(typeof t!="string")throw new Error(`Illegal type passed as a name of the type: ${t}`);let[e,r]=this.schema.genericSeparators||["<",">"],n=t.indexOf(e),i=Array.from(t).reverse().indexOf(r);if(n===-1&&i===-1)return{name:t,params:[]};if(n===-1||i===-1)throw new Error(`Unclosed generic in name '${t}'`);let s=t.slice(0,n),c=At(t.slice(n+1,t.length-i-1),this.schema.genericSeparators);return{name:s,params:c}}};let x=je;x.U8="u8";x.U16="u16";x.U32="u32";x.U64="u64";x.U128="u128";x.U256="u256";x.BOOL="bool";x.VECTOR="vector";x.ADDRESS="address";x.STRING="string";x.HEX="hex-string";x.BASE58="base58-string";x.BASE64="base64-string";function si(t){t.registerType(x.U8,function(e,r){return e.write8(r)},function(e){return e.read8()},e=>e<256),t.registerType(x.U16,function(e,r){return e.write16(r)},function(e){return e.read16()},e=>e<65536),t.registerType(x.U32,function(e,r){return e.write32(r)},function(e){return e.read32()},e=>e<=4294967296n),t.registerType(x.U64,function(e,r){return e.write64(r)},function(e){return e.read64()}),t.registerType(x.U128,function(e,r){return e.write128(r)},function(e){return e.read128()}),t.registerType(x.U256,function(e,r){return e.write256(r)},function(e){return e.read256()}),t.registerType(x.BOOL,function(e,r){return e.write8(r)},function(e){return e.read8().toString(10)==="1"}),t.registerType(x.STRING,function(e,r){return e.writeVec(Array.from(r),(n,i)=>n.write8(i.charCodeAt(0)))},function(e){return e.readVec(r=>r.read8()).map(r=>String.fromCharCode(Number(r))).join("")},e=>!0),t.registerType(x.HEX,function(e,r){return e.writeVec(Array.from(rt(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return Re(new Uint8Array(r))}),t.registerType(x.BASE58,function(e,r){return e.writeVec(Array.from(Et(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return $e(new Uint8Array(r))}),t.registerType(x.BASE64,function(e,r){return e.writeVec(Array.from(le(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return Ue(new Uint8Array(r))})}function ai(){return{genericSeparators:["<",">"],vectorType:"vector",addressLength:ii,addressEncoding:"hex"}}const xt=32;function oi(t){return ui(t)&&di(t)===xt}function ci(t){return t.includes("::")?$r(t):t}function $r(t){const[e,r]=t.split("::"),n=t.slice(e.length+r.length+4),i=n.includes("<")?n.slice(0,n.indexOf("<")):n,s=n.includes("<")?At(n.slice(n.indexOf("<")+1,n.lastIndexOf(">"))).map(c=>ci(c.trim())):[];return{address:N(e),module:r,name:i,typeParams:s}}function N(t,e=!1){let r=t.toLowerCase();return!e&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(xt*2,"0")}`}function Te(t,e=!1){return N(t,e)}function ui(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function di(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}BigInt(1e9);const Bt="0x1",Ur="0x2",pe=Te("0x6"),Ge=`${Ur}::sui::SUI`;Te("0x5");const li="object",fi="ID",hi="ascii",gi="String",pi="string",yi="String",mi="option",wi="Option",bi={address:Ur,module:li,name:fi},Si={address:Bt,module:hi,name:gi},Ti={address:Bt,module:pi,name:yi},vi={address:Bt,module:mi,name:wi},Pe=(t,e)=>t.address===e.address&&t.module===e.module&&t.name===e.name;function ki(t){var r;const e=(r=jt(t))==null?void 0:r.Struct;return(e==null?void 0:e.address)==="0x2"&&(e==null?void 0:e.module)==="tx_context"&&(e==null?void 0:e.name)==="TxContext"}function dt(t,e){if(!(typeof e>"u")&&typeof e!==t)throw new Error(`Expect ${e} to be ${t}, received ${typeof e}`)}const Ii=["Address","Bool","U8","U16","U32","U64","U128","U256"];function wt(t,e){if(typeof t=="string"&&Ii.includes(t)){if(t in["U8","U16","U32","U64","U128","U256"])dt("number",e);else if(t==="Bool")dt("boolean",e);else if(t==="Address"&&(dt("string",e),e&&!oi(e)))throw new Error("Invalid Sui Address");return t.toLowerCase()}else if(typeof t=="string")throw new Error(`Unknown pure normalized type ${JSON.stringify(t,null,2)}`);if("Vector"in t){if((e===void 0||typeof e=="string")&&t.Vector==="U8")return"string";if(e!==void 0&&!Array.isArray(e))throw new Error(`Expect ${e} to be a array, received ${typeof e}`);const r=wt(t.Vector,e?e[0]:void 0);return r===void 0?void 0:`vector<${r}>`}if("Struct"in t){if(Pe(t.Struct,Si))return"string";if(Pe(t.Struct,Ti))return"utf8string";if(Pe(t.Struct,bi))return"address";if(Pe(t.Struct,vi)){const r={Vector:t.Struct.typeArguments[0]};return wt(r,e)}}}const ji=/^vector<(.+)>$/,Ei=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class ne{static parseFromStr(e,r=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const n=e.match(ji);if(n)return{vector:ne.parseFromStr(n[1],r)};const i=e.match(Ei);if(i)return{struct:{address:r?N(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:ne.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,r=!1){return At(e).map(n=>ne.parseFromStr(n,r))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${ne.tagToString(e.vector)}>`;if("struct"in e){const r=e.struct,n=r.typeParams.map(ne.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}}const A=new x({...ai(),types:{enums:{"Option<T>":{None:null,Some:"T"}}}});function Rr(t){return l.u64({name:"unsafe_u64",...t}).transform({input:e=>e,output:e=>Number(e)})}function Oi(t){return l.enum("Option",{None:null,Some:t})}function Ct(t){return t.transform({input:e=>({[e.kind]:e}),output:e=>{const r=Object.keys(e)[0];return{kind:r,...e[r]}}})}const Z=l.bytes(xt).transform({input:t=>typeof t=="string"?rt(N(t)):t,output:t=>N(Re(t))}),$t=l.vector(l.u8()).transform({name:"ObjectDigest",input:t=>Et(t),output:t=>$e(new Uint8Array(t))}),_e=l.struct("SuiObjectRef",{objectId:Z,version:l.u64(),digest:$t}),Ut=l.struct("SharedObjectRef",{objectId:Z,initialSharedVersion:l.u64(),mutable:l.bool()}),Ye=l.enum("ObjectArg",{ImmOrOwned:_e,Shared:Ut,Receiving:_e}),Rt=l.enum("CallArg",{Pure:l.vector(l.u8()),Object:Ye,ObjVec:l.vector(Ye)}),ve=l.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:l.lazy(()=>ve),struct:l.lazy(()=>Vt),u16:null,u32:null,u256:null}),J=Ct(l.enum("Argument",{GasCoin:null,Input:l.struct("Input",{index:l.u16()}),Result:l.struct("Result",{index:l.u16()}),NestedResult:l.struct("NestedResult",{index:l.u16(),resultIndex:l.u16()})})),Pt=l.struct("ProgrammableMoveCall",{package:Z,module:l.string(),function:l.string(),type_arguments:l.vector(ve),arguments:l.vector(J)}).transform({input:t=>{const[e,r,n]=t.target.split("::"),i=t.typeArguments.map(s=>ne.parseFromStr(s,!0));return{package:N(e),module:r,function:n,type_arguments:i,arguments:t.arguments}},output:t=>({target:[t.package,t.module,t.function].join("::"),arguments:t.arguments,typeArguments:t.type_arguments.map(ne.tagToString)})}),Mt=Ct(l.enum("Transaction",{MoveCall:Pt,TransferObjects:l.struct("TransferObjects",{objects:l.vector(J),address:J}),SplitCoins:l.struct("SplitCoins",{coin:J,amounts:l.vector(J)}),MergeCoins:l.struct("MergeCoins",{destination:J,sources:l.vector(J)}),Publish:l.struct("Publish",{modules:l.vector(l.vector(l.u8())),dependencies:l.vector(Z)}),MakeMoveVec:l.struct("MakeMoveVec",{type:Oi(ve),objects:l.vector(J)}),Upgrade:l.struct("Upgrade",{modules:l.vector(l.vector(l.u8())),dependencies:l.vector(Z),packageId:Z,ticket:J})})),Nt=l.struct("ProgrammableTransaction",{inputs:l.vector(Rt),transactions:l.vector(Mt)}),Dt=l.enum("TransactionKind",{ProgrammableTransaction:Nt,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),zt=l.enum("TransactionExpiration",{None:null,Epoch:Rr()}),Vt=l.struct("StructTag",{address:Z,module:l.string(),name:l.string(),typeParams:l.vector(ve)}),Ft=l.struct("GasData",{payment:l.vector(_e),owner:Z,price:l.u64(),budget:l.u64()}),Gt=l.struct("TransactionDataV1",{kind:Dt,sender:Z,gasData:Ft,expiration:zt}),Lt=l.enum("TransactionData",{V1:Gt}),Ai=l.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),_i=l.enum("IntentVersion",{V0:null}),xi=l.enum("AppId",{Sui:null}),Bi=l.struct("Intent",{scope:Ai,version:_i,appId:xi}),Ci=l.generic(["T"],t=>l.struct("IntentMessage<T>",{intent:Bi,value:t})),Wt=l.enum("CompressedSignature",{ED25519:l.fixedArray(64,l.u8()),Secp256k1:l.fixedArray(64,l.u8()),Secp256r1:l.fixedArray(64,l.u8()),ZkLogin:l.vector(l.u8())}),Kt=l.enum("PublicKey",{ED25519:l.fixedArray(32,l.u8()),Secp256k1:l.fixedArray(33,l.u8()),Secp256r1:l.fixedArray(33,l.u8()),ZkLogin:l.vector(l.u8())}),Jt=l.struct("MultiSigPkMap",{pubKey:Kt,weight:l.u8()}),Ht=l.struct("MultiSigPublicKey",{pk_map:l.vector(Jt),threshold:l.u16()}),Pr=l.struct("MultiSig",{sigs:l.vector(Wt),bitmap:l.u16(),multisig_pk:Ht}),$i=l.vector(l.u8()).transform({input:t=>typeof t=="string"?le(t):t,output:t=>Ue(new Uint8Array(t))}),Mr=l.struct("SenderSignedTransaction",{intentMessage:Ci(Lt),txSignatures:l.vector($i)}),Nr=l.vector(Mr,{name:"SenderSignedData"}),P={...l,U8:l.u8(),U16:l.u16(),U32:l.u32(),U64:l.u64(),U128:l.u128(),U256:l.u256(),ULEB128:l.uleb128(),Bool:l.bool(),String:l.string(),Address:Z,Argument:J,CallArg:Rt,CompressedSignature:Wt,GasData:Ft,MultiSig:Pr,MultiSigPkMap:Jt,MultiSigPublicKey:Ht,ObjectArg:Ye,ObjectDigest:$t,ProgrammableMoveCall:Pt,ProgrammableTransaction:Nt,PublicKey:Kt,SenderSignedData:Nr,SenderSignedTransaction:Mr,SharedObjectRef:Ut,StructTag:Vt,SuiObjectRef:_e,Transaction:Mt,TransactionData:Lt,TransactionDataV1:Gt,TransactionExpiration:zt,TransactionKind:Dt,TypeTag:ve,ser:A.ser.bind(A),de:A.de.bind(A),getTypeInterface:A.getTypeInterface.bind(A),hasType:A.hasType.bind(A),parseTypeName:A.parseTypeName.bind(A),registerAddressType:A.registerAddressType.bind(A),registerAlias:A.registerAlias.bind(A),registerBcsType:A.registerBcsType.bind(A),registerEnumType:A.registerEnumType.bind(A),registerStructType:A.registerStructType.bind(A),registerType:A.registerType.bind(A),types:A.types};A.registerBcsType("utf8string",()=>l.string({name:"utf8string"}));A.registerBcsType("unsafe_u64",()=>Rr());A.registerBcsType("enumKind",t=>Ct(t));[Z,J,Rt,Wt,Ft,Pr,Jt,Ht,Ye,$t,Pt,Nt,Kt,Nr,Ut,Vt,_e,Mt,Lt,Gt,zt,Dt,ve].forEach(t=>{A.registerBcsType(t.name,()=>t)});const Ui=$([p({ImmOrOwned:de}),p({Shared:p({objectId:h(),initialSharedVersion:$([ee(),h()]),mutable:D()})}),p({Receiving:de})]),Qe=p({Pure:I(ee())}),bt=p({Object:Ui}),et=$([Qe,bt]);function Ri(t,e){return{Pure:Array.from(t instanceof Uint8Array?t:_t(t)?t.toBytes():P.ser(e,t,{maxSize:1/0}).toBytes())}}const V={Pure:Ri,ObjectRef({objectId:t,digest:e,version:r}){return{Object:{ImmOrOwned:{digest:e,version:r,objectId:N(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:r}){return{Object:{Shared:{mutable:e,initialSharedVersion:r,objectId:N(t)}}}},ReceivingRef({objectId:t,digest:e,version:r}){return{Object:{Receiving:{digest:e,version:r,objectId:N(t)}}}}};function ur(t){return typeof t=="string"?N(t):"ImmOrOwned"in t.Object?N(t.Object.ImmOrOwned.objectId):"Receiving"in t.Object?N(t.Object.Receiving.objectId):N(t.Object.Shared.objectId)}function Pi(t){return typeof t=="object"&&"Object"in t&&"Shared"in t.Object?t.Object.Shared:void 0}function Mi(t){var e;return((e=Pi(t))==null?void 0:e.mutable)??!1}function z(t,e){return mr(t,e)}const Ni=t=>$([p({None:$([T(!0),T(null)])}),p({Some:t})]),xe=$([p({kind:T("Input"),index:ee(),value:S(yt()),type:S(T("object"))}),p({kind:T("Input"),index:ee(),value:S(yt()),type:T("pure")})]),Di=[xe,p({kind:T("GasCoin")}),p({kind:T("Result"),index:ee()}),p({kind:T("NestedResult"),index:ee(),resultIndex:ee()})],se=$([...Di]),Dr=p({kind:T("MoveCall"),target:G("target",h().validator),typeArguments:I(h()),arguments:I(se)}),zr=p({kind:T("TransferObjects"),objects:I(se),address:se}),Vr=p({kind:T("SplitCoins"),coin:se,amounts:I(se)}),Fr=p({kind:T("MergeCoins"),destination:se,sources:I(se)}),Gr=p({kind:T("MakeMoveVec"),type:S(Ni(Y(h(),Tr()))),objects:I(se)}),Lr=p({kind:T("Publish"),modules:I(I(ee())),dependencies:I(h())}),Wr=p({kind:T("Upgrade"),modules:I(I(ee())),dependencies:I(h()),packageId:h(),ticket:se}),zi=[Dr,zr,Vr,Fr,Lr,Wr,Gr],Vi=$([...zi]),he={MoveCall(t){return z({kind:"MoveCall",target:t.target,arguments:t.arguments??[],typeArguments:t.typeArguments??[]},Dr)},TransferObjects(t,e){return e.kind==="Input"&&e.type==="pure"&&typeof e.value!="object"&&(e.value=V.Pure(P.Address.serialize(e.value))),z({kind:"TransferObjects",objects:t,address:e},zr)},SplitCoins(t,e){return e.forEach(r=>{r.kind==="Input"&&r.type==="pure"&&typeof r.value!="object"&&(r.value=V.Pure(P.U64.serialize(r.value)))}),z({kind:"SplitCoins",coin:t,amounts:e},Vr)},MergeCoins(t,e){return z({kind:"MergeCoins",destination:t,sources:e},Fr)},Publish({modules:t,dependencies:e}){return z({kind:"Publish",modules:t.map(r=>typeof r=="string"?Array.from(le(r)):r),dependencies:e.map(r=>Te(r))},Lr)},Upgrade({modules:t,dependencies:e,packageId:r,ticket:n}){return z({kind:"Upgrade",modules:t.map(i=>typeof i=="string"?Array.from(le(i)):i),dependencies:e.map(i=>Te(i)),packageId:r,ticket:n},Wr)},MakeMoveVec({type:t,objects:e}){return z({kind:"MakeMoveVec",type:t?{Some:ne.parseFromStr(t)}:{None:null},objects:e},Gr)}};function Fi(t){function e(r,n){return t(r,n)}return e.u8=r=>t(P.U8.serialize(r)),e.u16=r=>t(P.U16.serialize(r)),e.u32=r=>t(P.U32.serialize(r)),e.u64=r=>t(P.U64.serialize(r)),e.u128=r=>t(P.U128.serialize(r)),e.u256=r=>t(P.U256.serialize(r)),e.bool=r=>t(P.Bool.serialize(r)),e.string=r=>t(P.String.serialize(r)),e.address=r=>t(P.Address.serialize(r)),e.id=e.address,e}function Gi(t,e){const r=Array.from(`${t}::`).map(i=>i.charCodeAt(0)),n=new Uint8Array(r.length+e.length);return n.set(r),n.set(e,r.length),en(n,{dkLen:32})}const Li=S(B($([p({Epoch:ee()}),p({None:$([T(!0),T(null)])})]))),dr=G("StringEncodedBigint",t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}}),Wi=p({budget:S(dr),price:S(dr),payment:S(I(de)),owner:S(h())}),Me=p({version:T(1),sender:S(h()),expiration:Li,gasConfig:Wi,inputs:I(xe),transactions:I(Vi)});function lr(t){return N(t).replace("0x","")}class ie{constructor(e){this.version=1,this.sender=e==null?void 0:e.sender,this.expiration=e==null?void 0:e.expiration,this.gasConfig=(e==null?void 0:e.gasConfig)??{},this.inputs=(e==null?void 0:e.inputs)??[],this.transactions=(e==null?void 0:e.transactions)??[]}static fromKindBytes(e){const r=P.TransactionKind.parse(e),n="ProgrammableTransaction"in r?r.ProgrammableTransaction:null;if(!n)throw new Error("Unable to deserialize from bytes.");const i=z({version:1,gasConfig:{},inputs:n.inputs.map((s,c)=>z({kind:"Input",value:s,index:c,type:F(s,Qe)?"pure":"object"},xe)),transactions:n.transactions},Me);return ie.restore(i)}static fromBytes(e){var c;const r=P.TransactionData.parse(e),n=r==null?void 0:r.V1,i="ProgrammableTransaction"in n.kind?(c=n==null?void 0:n.kind)==null?void 0:c.ProgrammableTransaction:null;if(!n||!i)throw new Error("Unable to deserialize from bytes.");const s=z({version:1,sender:n.sender,expiration:n.expiration,gasConfig:n.gasData,inputs:i.inputs.map((a,o)=>z({kind:"Input",value:a,index:o,type:F(a,Qe)?"pure":"object"},xe)),transactions:i.transactions},Me);return ie.restore(s)}static restore(e){pt(e,Me);const r=new ie;return Object.assign(r,e),r}static getDigestFromBytes(e){const r=Gi("TransactionData",e);return $e(r)}build({maxSizeBytes:e=1/0,overrides:r,onlyTransactionKind:n}={}){const i=this.inputs.map(u=>(pt(u.value,et),u.value)),s={ProgrammableTransaction:{inputs:i,transactions:this.transactions}};if(n)return P.TransactionKind.serialize(s,{maxSize:e}).toBytes();const c=(r==null?void 0:r.expiration)??this.expiration,a=(r==null?void 0:r.sender)??this.sender,o={...this.gasConfig,...r==null?void 0:r.gasConfig};if(!a)throw new Error("Missing transaction sender");if(!o.budget)throw new Error("Missing gas budget");if(!o.payment)throw new Error("Missing gas payment");if(!o.price)throw new Error("Missing gas price");const d={sender:lr(a),expiration:c||{None:!0},gasData:{payment:o.payment,owner:lr(this.gasConfig.owner??a),price:BigInt(o.price),budget:BigInt(o.budget)},kind:{ProgrammableTransaction:{inputs:i,transactions:this.transactions}}};return P.TransactionData.serialize({V1:d},{maxSize:e}).toBytes()}getDigest(){const e=this.build({onlyTransactionKind:!1});return ie.getDigestFromBytes(e)}snapshot(){return z(this,Me)}}var Xt=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},O=(t,e,r)=>(Xt(t,e,"read from private field"),r?r.call(t):e.get(t)),re=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},Ne=(t,e,r,n)=>(Xt(t,e,"write to private field"),e.set(t,r),r),M=(t,e,r)=>(Xt(t,e,"access private method"),r),v,Ee,Le,Oe,We,fe,me,qt,Kr,Zt,Jr,Yt,Hr,Qt,Xr,Ke,St;const Ki={maxPureArgumentSize:16*1024,maxTxGas:5e10,maxGasObjects:256,maxTxSizeBytes:128*1024};function Ji(t){const e={kind:"Result",index:t},r=[],n=i=>r[i]??(r[i]={kind:"NestedResult",index:t,resultIndex:i});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,s){if(s in i)return Reflect.get(i,s);if(s===Symbol.iterator)return function*(){let a=0;for(;;)yield n(a),a++};if(typeof s=="symbol")return;const c=parseInt(s,10);if(!(Number.isNaN(c)||c<0))return n(c)}})}function Hi(t){const e=jt(t);return e?e.Struct.address==="0x2"&&e.Struct.module==="transfer"&&e.Struct.name==="Receiving":!1}function Be(t){if(!t.client)throw new Error("No provider passed to Transaction#build, but transaction data was not sufficient to build offline.");return t.client}const Xi=Symbol.for("@mysten/transaction"),lt={maxTxGas:"max_tx_gas",maxGasObjects:"max_gas_payment_objects",maxTxSizeBytes:"max_tx_size_bytes",maxPureArgumentSize:"max_pure_argument_size"},qi=1000n,Zi=50,Yi=(t,e)=>Array.from({length:Math.ceil(t.length/e)},(r,n)=>t.slice(n*e,n*e+e)),Tt=class{constructor(t){re(this,Ee),re(this,Oe),re(this,fe),re(this,qt),re(this,Zt),re(this,Yt),re(this,Qt),re(this,Ke),re(this,v,void 0),Ne(this,v,new ie(t?t.blockData:void 0))}static fromKind(t){const e=new Tt;return Ne(e,v,ie.fromKindBytes(typeof t=="string"?le(t):t)),e}static from(t){const e=new Tt;return typeof t!="string"||!t.startsWith("{")?Ne(e,v,ie.fromBytes(typeof t=="string"?le(t):t)):Ne(e,v,ie.restore(JSON.parse(t))),e}setSender(t){O(this,v).sender=t}setSenderIfNotSet(t){O(this,v).sender||(O(this,v).sender=t)}setExpiration(t){O(this,v).expiration=t}setGasPrice(t){O(this,v).gasConfig.price=String(t)}setGasBudget(t){O(this,v).gasConfig.budget=String(t)}setGasOwner(t){O(this,v).gasConfig.owner=t}setGasPayment(t){O(this,v).gasConfig.payment=t.map(e=>wr(e,de))}get blockData(){return O(this,v).snapshot()}get[Xi](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Fi((t,e)=>_t(t)?M(this,Ee,Le).call(this,"pure",{Pure:Array.from(t.toBytes())}):M(this,Ee,Le).call(this,"pure",t instanceof Uint8Array?V.Pure(t):e?V.Pure(t,e):t))}),this.pure}get gas(){return{kind:"GasCoin"}}object(t){if(typeof t=="object"&&"kind"in t)return t;const e=ur(t),r=O(this,v).inputs.find(n=>n.type==="object"&&e===ur(n.value));return r&&F(r.value,bt)&&"Shared"in r.value.Object&&F(t,bt)&&"Shared"in t.Object&&(r.value.Object.Shared.mutable=r.value.Object.Shared.mutable||t.Object.Shared.mutable),r??M(this,Ee,Le).call(this,"object",typeof t=="string"?N(t):t)}objectRef(...t){return this.object(V.ObjectRef(...t))}receivingRef(...t){return this.object(V.ReceivingRef(...t))}sharedObjectRef(...t){return this.object(V.SharedObjectRef(...t))}add(t){const e=O(this,v).transactions.push(t);return Ji(e-1)}splitCoins(t,e){return this.add(he.SplitCoins(typeof t=="string"?this.object(t):t,e.map(r=>typeof r=="number"||typeof r=="bigint"||typeof r=="string"?this.pure.u64(r):M(this,Oe,We).call(this,r))))}mergeCoins(t,e){return this.add(he.MergeCoins(typeof t=="string"?this.object(t):t,e.map(r=>typeof r=="string"?this.object(r):r)))}publish({modules:t,dependencies:e}){return this.add(he.Publish({modules:t,dependencies:e}))}upgrade({modules:t,dependencies:e,packageId:r,ticket:n}){return this.add(he.Upgrade({modules:t,dependencies:e,packageId:r,ticket:typeof n=="string"?this.object(n):n}))}moveCall({arguments:t,typeArguments:e,target:r}){return this.add(he.MoveCall({arguments:t==null?void 0:t.map(n=>M(this,Oe,We).call(this,n)),typeArguments:e,target:r}))}transferObjects(t,e){return this.add(he.TransferObjects(t.map(r=>typeof r=="string"?this.object(r):r),typeof e=="string"?this.pure.address(e):M(this,Oe,We).call(this,e)))}makeMoveVec({type:t,objects:e}){return this.add(he.MakeMoveVec({type:t,objects:e.map(r=>typeof r=="string"?this.object(r):r)}))}serialize(){return JSON.stringify(O(this,v).snapshot())}async sign(t){const{signer:e,...r}=t,n=await this.build(r);return e.signTransactionBlock(n)}async build(t={}){return await M(this,Ke,St).call(this,t),O(this,v).build({maxSizeBytes:M(this,fe,me).call(this,"maxTxSizeBytes",t),onlyTransactionKind:t.onlyTransactionKind})}async getDigest(t={}){return await M(this,Ke,St).call(this,t),O(this,v).getDigest()}};let ue=Tt;v=new WeakMap;Ee=new WeakSet;Le=function(t,e){const r=O(this,v).inputs.length,n=z({kind:"Input",value:typeof e=="bigint"?String(e):e,index:r,type:t},xe);return O(this,v).inputs.push(n),n};Oe=new WeakSet;We=function(t){return _t(t)?this.pure(t):t};fe=new WeakSet;me=function(t,{protocolConfig:e,limits:r}){if(r&&typeof r[t]=="number")return r[t];if(!e)return Ki[t];const n=e==null?void 0:e.attributes[lt[t]];if(!n)throw new Error(`Missing expected protocol config: "${lt[t]}"`);const i="u64"in n?n.u64:"u32"in n?n.u32:n.f64;if(!i)throw new Error(`Unexpected protocol config value found for: "${lt[t]}"`);return Number(i)};qt=new WeakSet;Kr=function(t){const e=M(this,fe,me).call(this,"maxPureArgumentSize",t);O(this,v).inputs.forEach((r,n)=>{if(F(r.value,Qe)&&r.value.Pure.length>e)throw new Error(`Input at index ${n} is too large, max pure input size is ${e} bytes, got ${r.value.Pure.length} bytes`)})};Zt=new WeakSet;Jr=async function(t){if(O(this,v).gasConfig.payment){const i=M(this,fe,me).call(this,"maxGasObjects",t);if(O(this,v).gasConfig.payment.length>i)throw new Error(`Payment objects exceed maximum amount: ${i}`)}if(t.onlyTransactionKind||O(this,v).gasConfig.payment)return;const e=O(this,v).gasConfig.owner??O(this,v).sender,n=(await Be(t).getCoins({owner:e,coinType:Ge})).data.filter(i=>!O(this,v).inputs.find(c=>F(c.value,et)&&"Object"in c.value&&"ImmOrOwned"in c.value.Object?i.coinObjectId===c.value.Object.ImmOrOwned.objectId:!1)).slice(0,M(this,fe,me).call(this,"maxGasObjects",t)-1).map(i=>({objectId:i.coinObjectId,digest:i.digest,version:i.version}));if(!n.length)throw new Error("No valid gas coins found for the transaction.");this.setGasPayment(n)};Yt=new WeakSet;Hr=async function(t){t.onlyTransactionKind||O(this,v).gasConfig.price||this.setGasPrice(await Be(t).getReferenceGasPrice())};Qt=new WeakSet;Xr=async function(t){const{inputs:e,transactions:r}=O(this,v),n=[],i=[];if(e.forEach(s=>{if(s.type==="object"&&typeof s.value=="string"){i.push({id:N(s.value),input:s});return}}),r.forEach(s=>{if(s.kind==="MoveCall"&&s.arguments.some(a=>a.kind==="Input"&&!F(e[a.index].value,et))&&n.push(s),s.kind==="SplitCoins"&&s.amounts.forEach(c=>{if(c.kind==="Input"){const a=e[c.index];typeof a.value!="object"&&(a.value=V.Pure(P.U64.serialize(a.value)))}}),s.kind==="TransferObjects"&&s.address.kind==="Input"){const c=e[s.address.index];typeof c.value!="object"&&(c.value=V.Pure(P.Address.serialize(c.value)))}}),n.length&&await Promise.all(n.map(async s=>{const[c,a,o]=s.target.split("::"),d=await Be(t).getNormalizedMoveFunction({package:Te(c),module:a,function:o}),g=d.parameters.length>0&&ki(d.parameters.at(-1))?d.parameters.slice(0,d.parameters.length-1):d.parameters;if(g.length!==s.arguments.length)throw new Error("Incorrect number of arguments.");g.forEach((m,y)=>{const w=s.arguments[y];if(w.kind!=="Input")return;const b=e[w.index];if(F(b.value,et))return;const f=b.value,j=wt(m,f);if(j){b.value=V.Pure(f,j);return}if(jt(m)!=null||typeof m=="object"&&"TypeParameter"in m){if(typeof f!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(f,null,2)}`);i.push({id:f,input:b,normalizedType:m});return}throw new Error(`Unknown call arg type ${JSON.stringify(m,null,2)} for value ${JSON.stringify(f,null,2)}`)})})),i.length){const s=[...new Set(i.map(({id:u})=>u))],c=Yi(s,Zi),a=(await Promise.all(c.map(u=>Be(t).multiGetObjects({ids:u,options:{showOwner:!0}})))).flat();let o=new Map(s.map((u,g)=>[u,a[g]]));const d=Array.from(o).filter(([u,g])=>g.error).map(([u,g])=>u);if(d.length)throw new Error(`The following input objects are invalid: ${d.join(", ")}`);i.forEach(({id:u,input:g,normalizedType:m})=>{var f;const y=o.get(u),w=(f=y.data)==null?void 0:f.owner,b=w&&typeof w=="object"&&"Shared"in w?w.Shared.initial_shared_version:void 0;if(b){const j=m!=null&&mt(m)==null&&Er(m)==null,_=Mi(g.value)||j||m!=null&&mt(m)!=null;g.value=V.SharedObjectRef({objectId:u,initialSharedVersion:b,mutable:_})}else m&&Hi(m)?g.value=V.ReceivingRef(cr(y)):g.value=V.ObjectRef(cr(y))})}};Ke=new WeakSet;St=async function(t){if(!t.onlyTransactionKind&&!O(this,v).sender)throw new Error("Missing transaction sender");if(!t.protocolConfig&&!t.limits&&t.client&&(t.protocolConfig=await t.client.getProtocolConfig()),await Promise.all([M(this,Yt,Hr).call(this,t),M(this,Qt,Xr).call(this,t)]),!t.onlyTransactionKind&&(await M(this,Zt,Jr).call(this,t),!O(this,v).gasConfig.budget)){const e=await Be(t).dryRunTransactionBlock({transactionBlock:O(this,v).build({maxSizeBytes:M(this,fe,me).call(this,"maxTxSizeBytes",t),overrides:{gasConfig:{budget:String(M(this,fe,me).call(this,"maxTxGas",t)),payment:[]}}})});if(e.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${e.effects.status.error}`,{cause:e});const r=qi*BigInt(this.blockData.gasConfig.price||1n),n=BigInt(e.effects.gasUsed.computationCost)+r,i=n+BigInt(e.effects.gasUsed.storageCost)-BigInt(e.effects.gasUsed.storageRebate);this.setGasBudget(i>n?i:n)}M(this,qt,Kr).call(this,t)};const fr=async(t,e,r)=>{var c,a,o;if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await tt(t,e);if(!n)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${e}`);const i=(a=(c=n.token_registry.fields)==null?void 0:c.id)==null?void 0:a.id;if(!i)throw new Error("Unable to fetch token registry object ID");const s=tn((o=n.token_registry)==null?void 0:o.type);if(!s)throw new Error("Unable to fetch token registry package ID");return t.getDynamicFieldObject({parentId:i,name:{type:`${s}::token_registry::Key<${r}>`,value:{dummy_field:!1}}})},Je=async(t,e,r,n)=>{var u,g,m,y;const i=await tt(t,e);if(!i)throw new Error("Unable to fetch object fields from token bridge state");const s=(g=(u=i.token_registry)==null?void 0:u.fields)==null?void 0:g.coin_types,c=(y=(m=s==null?void 0:s.fields)==null?void 0:m.id)==null?void 0:y.id;if(!c)throw new Error("Unable to fetch coin types");const a=hr(s==null?void 0:s.type);if(!a)throw new Error("Unable to get key type");const o=await t.getDynamicFieldObject({parentId:c,name:{type:a,value:{addr:[...r],chain:n}}});if(o.error){if(o.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${o.error}`)}const d=gt(o);if(!d)return null;if(!ze(d))throw new Error("What?");return"value"in d?ke(d.value):null};class er{constructor(e,r,n,i){C(this,"network");C(this,"chain");C(this,"provider");C(this,"contracts");C(this,"coreBridgeObjectId");C(this,"tokenBridgeObjectId");C(this,"chainId");this.network=e,this.chain=r,this.provider=n,this.contracts=i,this.chainId=rn.get(e,r);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${r} not found`);const c=this.contracts.coreBridge;if(!c)throw new Error(`Wormhole Token Bridge contract for domain ${r} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=c}static async fromRpc(e,r){const[n,i]=await Q.chainFromRpc(e),s=r[i];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new er(n,i,e,s.contracts)}async isWrappedAsset(e){try{return await this.getOriginalAsset(e),!0}catch{return!1}}async getOriginalAsset(e){let r=e.getCoinType();if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await fr(this.provider,this.tokenBridgeObjectId,r),i=gt(n);if(!i)throw nt(r);if(!ze(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const s=i.value;if(!H(s))throw new Error("Expected fields to be a MoveStruct");const c=ke(s.type);if(r=ke(r),c.includes(`wrapped_asset::WrappedAsset<${r}>`)){const a=s.fields.info;if(!H(a))throw new Error("Expected fields to be a MoveStruct");const o=a.fields.token_address;if(!H(o))throw new Error("Expected fields to be a MoveStruct");if(!ze(o.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const d=o.fields.value;if(!H(d))throw new Error("Expected fields to be a MoveStruct");const u=new Uint8Array(d.fields.data);return{chain:nn(Number(a.fields.token_chain)),address:new nr(u)}}throw nt(r)}async getTokenUniversalAddress(e){let r=e.getCoinType();if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await fr(this.provider,this.tokenBridgeObjectId,r),i=gt(n);if(!i)throw new Error(`Token of type ${r} has not been registered with the token bridge. Has it been attested?`);if(!ze(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const s=i.value;if(!H(s))throw new Error("Expected fields to be a MoveStruct");const c=ke(s.type);if(r=ke(r),c.includes(`native_asset::NativeAsset<${r}>`)){const a=s.fields.token_address;if(!H(a))throw new Error("Expected fields to be a MoveStruct");if(!("value"in a.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const o=a.fields.value;if(!H(o))throw new Error("Expected fields to be a MoveStruct");const d=new Uint8Array(o.fields.data);return new nr(d)}throw new Error(`Token of type ${r} is not a native asset`)}async getTokenNativeAddress(e,r){const n=await Je(this.provider,this.tokenBridgeObjectId,r.toUint8Array(),ce(e));if(!n)throw new Error(`Token ${r.toString()} not found in token registry`);return new ge(n)}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(oe(e.address))throw new Error("Token Address required, 'native' literal not supported");const r=await Je(this.provider,this.tokenBridgeObjectId,e.address.toUniversalAddress().toUint8Array(),ce(e.chain));if(!r)throw nt(sn(e));return ir(this.chain,r)}async isTransferCompleted(e){var a,o,d,u,g,m,y,w;const r=await tt(this.provider,this.tokenBridgeObjectId);if(!r)throw new Error("Unable to fetch object fields from token bridge state");const n=(o=(a=r.consumed_vaas)==null?void 0:a.fields)==null?void 0:o.hashes,i=hr((u=(d=n==null?void 0:n.fields)==null?void 0:d.items)==null?void 0:u.type);if(!i)throw new Error("Unable to get key type");const s=(w=(y=(m=(g=n==null?void 0:n.fields)==null?void 0:g.items)==null?void 0:m.fields)==null?void 0:y.id)==null?void 0:w.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const c=await this.provider.getDynamicFieldObject({parentId:s,name:{type:i,value:{data:[...an(e.hash)]}}});if(!c.error)return!0;if(c.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${c.error}`)}async*createAttestation(e){const r=0n,n=0n,i=e.toString(),s=await this.provider.getCoinMetadata({coinType:i});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${i} not found`);const[c,a]=await this.getPackageIds(),o=new ue,[d]=o.splitCoins(o.gas,[o.pure(r)]),[u]=o.moveCall({target:`${a}::attest_token::attest_token`,arguments:[o.object(this.tokenBridgeObjectId),o.object(s.id),o.pure(n)],typeArguments:[i]});o.moveCall({target:`${c}::publish_message::publish_message`,arguments:[o.object(this.coreBridgeObjectId),d,u,o.object(pe)]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(e,r){const[n,i]=await this.getPackageIds(),s=r.toString(),c=Math.min(e.payload.decimals,8),a=await this.getCoinBuildOutput(n,i,c),o=await ln(a,s);yield this.createUnsignedTx(o,"Sui.TokenBridge.PrepareCreateWrapped");let d="",u="",g="",m="",y="",w=!1;for(;!w;){await new Promise(E=>setTimeout(E,500));const U=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const E of U.data)if("objectChanges"in E){for(const k of E.objectChanges)fn(k)&&k.packageId!==void 0?d=k.packageId:it(k)&&k.objectType.includes("WrappedAssetSetup")?(u=k.objectId,y=k.objectType.split(", ")[1].replace(">","")):it(k)&&k.objectType.includes("UpgradeCap")?g=k.objectId:it(k)&&k.objectType.includes("CoinMetadata")&&(m=k.objectId);if(d!==""&&u!==""&&g!==""&&m!==""){w=!0;break}else d="",u="",g="",m=""}}const b=on(d),f=new ue,[j]=f.moveCall({target:`${n}::vaa::parse_and_verify`,arguments:[f.object(this.coreBridgeObjectId),f.pure(Ve(ht(e))),f.object(pe)]}),[_]=f.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[f.object(this.tokenBridgeObjectId),j]});f.moveCall({target:`${i}::create_wrapped::complete_registration`,arguments:[f.object(this.tokenBridgeObjectId),f.object(m),f.object(u),f.object(g),_],typeArguments:[b,y]}),yield this.createUnsignedTx(f,"Sui.TokenBridge.SubmitAttestation")}async*transfer(e,r,n,i,s){const c=0n,a=0n,d=e.toString(),u=(oe(n)?Ge:n).toString(),g=await Q.getCoins(this.provider,e,u),[m,...y]=g.filter(E=>pr(E.coinType,u));if(m===void 0)throw new Error(`Coins array doesn't contain any coins of type ${u}`);const[w,b]=await this.getPackageIds(),f=new ue,[j]=(()=>{if(u===Ge)return f.splitCoins(f.gas,[f.pure(i)]);{const E=f.object(m.coinObjectId);return y.length&&f.mergeCoins(E,y.map(k=>f.object(k.coinObjectId))),f.splitCoins(E,[f.pure(i)])}})(),[_]=f.splitCoins(f.gas,[f.pure(c)]),[U]=f.moveCall({target:`${b}::state::verified_asset`,arguments:[f.object(this.tokenBridgeObjectId)],typeArguments:[u]});if(s){if(!d)throw new Error("senderAddress is required for transfer with payload");let E=!1;const k=await(async()=>{const rr=await hn(this.provider,w,d);if(rr!==null)return f.object(rr);{const[qr]=f.moveCall({target:`${w}::emitter::new`,arguments:[f.object(this.coreBridgeObjectId)]});return E=!0,qr}})(),[R,K]=f.moveCall({target:`${b}::transfer_tokens_with_payload::prepare_transfer`,arguments:[k,U,j,f.pure(ce(r.chain)),f.pure(r.address.toUint8Array()),f.pure([...s]),f.pure(0)],typeArguments:[u]});f.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[K],typeArguments:[u]});const[we]=f.moveCall({target:`${b}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[f.object(this.tokenBridgeObjectId),R],typeArguments:[u]});f.moveCall({target:`${w}::publish_message::publish_message`,arguments:[f.object(this.coreBridgeObjectId),_,we,f.object(pe)]}),E&&f.transferObjects([k],f.pure(d)),yield this.createUnsignedTx(f,"Sui.TokenBridge.TransferWithPayload")}else{const[E,k]=f.moveCall({target:`${b}::transfer_tokens::prepare_transfer`,arguments:[U,j,f.pure(ce(r.chain)),f.pure(Ve(r.address.toUint8Array())),f.pure(a),f.pure(0)],typeArguments:[u]});f.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[k],typeArguments:[u]});const[R]=f.moveCall({target:`${b}::transfer_tokens::transfer_tokens`,arguments:[f.object(this.tokenBridgeObjectId),E],typeArguments:[u]});f.moveCall({target:`${w}::publish_message::publish_message`,arguments:[f.object(this.coreBridgeObjectId),_,R,f.object(pe)]}),yield this.createUnsignedTx(f,"Sui.TokenBridge.Transfer")}}async*redeem(e,r,n=!0){const i=await Je(this.provider,this.tokenBridgeObjectId,r.payload.token.address.toUint8Array(),ce(r.payload.token.chain));if(!i)throw new Error("Unable to fetch token coinType");const[s,c]=await this.getPackageIds(),a=new ue,[o]=a.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[a.object(this.coreBridgeObjectId),a.pure(Ve(ht(r))),a.object(pe)]}),[d]=a.moveCall({target:`${c}::vaa::verify_only_once`,arguments:[a.object(this.tokenBridgeObjectId),o]}),[u]=a.moveCall({target:`${c}::complete_transfer::authorize_transfer`,arguments:[a.object(this.tokenBridgeObjectId),d],typeArguments:[i]}),[g]=a.moveCall({target:`${c}::complete_transfer::redeem_relayer_payout`,arguments:[u],typeArguments:[i]});a.moveCall({target:`${c}::coin_utils::return_nonzero`,arguments:[g],typeArguments:[i]}),yield this.createUnsignedTx(a,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return ir(this.chain,Ge)}async getPackageIds(){return Promise.all([He(this.provider,this.coreBridgeObjectId),He(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(e,r,n){var a;if(n>8)throw new Error("Decimals is capped at 8");const i=(a=await gn(this.provider,this.tokenBridgeObjectId))==null?void 0:a.replace("0x","");if(!i)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+i+"00020106010000000001090b0031"+n.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[cn.encode(De.decode(s))],dependencies:["0x1","0x2",r,e].map(o=>Te(o))}}createUnsignedTx(e,r,n=!1){return new yr(e,this.network,this.chain,r,n)}}class tr{constructor(e,r,n,i){C(this,"network");C(this,"chain");C(this,"connection");C(this,"contracts");C(this,"tokenBridgeRelayerObjectId");C(this,"coreBridgeObjectId");C(this,"tokenBridgeObjectId");C(this,"fields");this.network=e,this.chain=r,this.connection=n,this.contracts=i;const{tokenBridge:s,tokenBridgeRelayer:c,coreBridge:a}=i;if(!s||!c||!a)throw new Error(`Some object IDs for ${r} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=c,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=a}static async fromRpc(e,r){const[n,i]=await Q.chainFromRpc(e),s=r[i];if(s.network!==n)throw new Error(`Network mismatch for chain ${i}: ${s.network} != ${n}`);return new tr(n,i,e,s.contracts)}async*transfer(e,r,n,i,s){const a=new ge(oe(n)?Q.nativeTokenId(this.network,this.chain).address:n).getCoinType(),{coreBridge:o,tokenBridge:d}=await this.getPackageIds(),u=new ue,g=BigInt(0),[m]=u.splitCoins(u.gas,[u.pure(g)]),[y]=await(async()=>{if(oe(n))return u.splitCoins(u.gas,[u.pure(i)]);{const _=await Q.getCoins(this.connection,e,a),[U,...E]=_.filter(R=>R.coinType===a);if(U===void 0)throw new Error(`Coins array doesn't contain any coins of type ${a}`);const k=u.object(U.coinObjectId);return E.length&&u.mergeCoins(k,E.map(R=>u.object(R.coinObjectId))),u.splitCoins(k,[u.pure(i)])}})(),[w]=u.moveCall({target:`${d}::state::verified_asset`,arguments:[u.object(this.tokenBridgeObjectId)],typeArguments:[a]}),b=await this.getPackageId(),[f]=u.moveCall({target:`${b}::transfer::transfer_tokens_with_relay`,arguments:[u.object(this.tokenBridgeRelayerObjectId),y,w,u.pure.u64(s??0n),u.pure.u16(ce(r.chain)),u.pure.address(De.encode(r.address.toUint8Array(),!0)),u.pure.u32(123)],typeArguments:[a]}),[j]=u.moveCall({target:`${d}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[u.object(this.tokenBridgeObjectId),f],typeArguments:[a]});u.moveCall({target:`${o}::publish_message::publish_message`,arguments:[u.object(this.coreBridgeObjectId),m,j,u.object(pe)]}),yield this.createUnsignedTx(u,"AutomaticTokenBridge.transfer")}async*redeem(e,r){const{coreBridge:n,tokenBridge:i}=await this.getPackageIds(),{address:s,chain:c}=r.payload.token,a=await Je(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),ce(c));if(!a)throw new Error("Unable to fetch token coinType");const o=new ue,[d]=o.moveCall({target:`${n}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure(Ve(ht(r))),o.object(pe)]}),[u]=o.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),d]}),[g]=o.moveCall({target:`${i}::complete_transfer_with_payload::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),u],typeArguments:[a]}),m=await this.getPackageId();o.moveCall({target:`${m}::redeem::complete_transfer`,arguments:[o.object(this.tokenBridgeRelayerObjectId),g],typeArguments:[a]}),yield this.createUnsignedTx(o,"AutomaticTokenBridge.redeem")}async getRelayerFee(e,r){const n=oe(r)?Q.nativeTokenId(this.network,this.chain):r,i=await this.getTokenInfo(n.toString());if(i===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),c=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(un.encode("relayer_fees"))}});if(!c.data||!c.data.content)throw c.error?new Error("Failed to get relayer fees: "+JSON.stringify(c.error)):new Error("Unable to compute relayer fee");const{content:a}=c.data;if(!H(a)||!pn(a.fields.id))throw new Error("Unable to compute relayer fee");const o=await this.connection.getDynamicFieldObject({parentId:a.fields.id.id,name:{type:"u16",value:ce(e)}});if(!o.data||!o.data.content)throw o.error?new Error("Failed to get relayer fees: "+JSON.stringify(c.error)):new Error("Unable to compute relayer fee");const{content:d}=o.data;if(!H(d))throw new Error("Unable to compute relayer fee");const u=await Q.getDecimals(this.chain,this.connection,r.toString()),g=i.swap_rate,m=s.relayer_fee_precision,y=s.swap_rate_precision,w=d.fields.value;return 10n**BigInt(u)*BigInt(w)*BigInt(y)/(BigInt(g)*BigInt(m))}async maxSwapAmount(e){var o,d;const n=(oe(e)?Q.nativeTokenId(this.network,this.chain):e).toString(),i=await this.connection.getCoinMetadata({coinType:n});if(!i)throw new Error("metadata is null");const s=await this.getPackageId(),c=new ue;c.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[c.object(this.tokenBridgeRelayerObjectId),c.pure(i.decimals)],typeArguments:[n]});const a=await this.connection.devInspectTransactionBlock({transactionBlock:c,sender:De.encode(new Uint8Array(32))});if(!a.results||a.results.length==0||!((o=a.results[0])!=null&&o.returnValues)||((d=a.results[0])==null?void 0:d.returnValues.length)!==1)throw Error("swap rate not set");return sr.decode(new Uint8Array(a.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(e,r){var d,u;const i=(oe(e)?Q.nativeTokenId(this.network,this.chain):e).toString(),s=await this.connection.getCoinMetadata({coinType:i});if(!s)throw new Error("metadata is null");const c=await this.getPackageId(),a=new ue;a.moveCall({target:`${c}::redeem::calculate_native_swap_amount_out`,arguments:[a.object(this.tokenBridgeRelayerObjectId),a.pure(r),a.pure(s.decimals)],typeArguments:[i]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:a,sender:De.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!((d=o.results[0])!=null&&d.returnValues)||((u=o.results[0])==null?void 0:u.returnValues.length)!==1)throw Error("swap rate not set");return sr.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const r=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:r})).data.map(s=>{const{address:c,module:a,name:o}=$r(s.objectType).typeParams[0];return new ge([c,a,o].join(dn))})}async isRegisteredToken(e){const r=new ge(oe(e)?Q.nativeTokenId(this.network,this.chain).address:e).unwrap();try{return await this.getTokenInfo(r)!==null}catch(n){console.error(n)}return!1}async getTokenInfo(e){var o;const r=await this.getFields(),i=new ge(r.registered_tokens.type).getPackageId(),s=r.registered_tokens.fields.id.id,c=new ge(e),a=pr(ar,c.unwrap())?ar:c.getCoinType();try{const d=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${i}::registered_tokens::Key<${a}>`,value:{dummy_field:!1}}});if(d.error)throw new Error("Failed to get token info: "+JSON.stringify(d.error));if(!d.data||!d.data.content)throw new Error("Failed to get token info: "+JSON.stringify(d));const{content:u}=d.data;return H(u)&&H(u.fields.value)?u.fields.value.fields:null}catch(d){if((d==null?void 0:d.code)===-32e3&&((o=d.message)!=null&&o.includes("RPC Error")))return console.error(d),null;throw d}}async getFields(){if(!this.fields){const e=await tt(this.connection,this.tokenBridgeRelayerObjectId);if(e===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=e}return this.fields}async getPackageId(){const e=await this.getFields();return new ge(e.registered_tokens.type).getPackageId()}async getPackageIds(){const[e,r]=await Promise.all([He(this.connection,this.coreBridgeObjectId),He(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:e,tokenBridge:r}}createUnsignedTx(e,r,n=!1){return new yr(e,this.network,this.chain,r,n)}}gr("Sui","TokenBridge",er);gr("Sui","AutomaticTokenBridge",tr);export{tr as SuiAutomaticTokenBridge,er as SuiTokenBridge,Je as getTokenCoinType,fr as getTokenFromTokenRegistry};
5
+ Received: "${JSON.stringify(o)}"`);let g=Object.keys(o)[0];if(g===void 0)throw new Error(`Empty object passed as invariant of the enum "${i}"`);let m=n.indexOf(g);if(m===-1)throw new Error(`Unknown invariant of the enum "${i}", allowed values: "${n.join(" | ")}"; received "${g}"`);let y=n[m],w=r[y];if(a.write8(m),w===null)return a;let b=s.indexOf(w),f=b===-1?w:d[b];{let{name:j,params:_}=this.parseTypeName(f);return this.getTypeInterface(j)._encodeRaw.call(this,a,o[g],_,u)}},function(a,o,d){let u=a.readULEB(),g=n[u],m=r[g];if(u===-1)throw new Error(`Decoding type mismatch, expected enum "${i}" invariant index, received "${u}"`);if(m===null)return{[g]:!0};let y=s.indexOf(m),w=y===-1?m:o[y];{let{name:b,params:f}=this.parseTypeName(w);return{[g]:this.getTypeInterface(b)._decodeRaw.call(this,a,f,d)}}})}getTypeInterface(t){let e=this.types.get(t);if(typeof e=="string"){let r=[];for(;typeof e=="string";){if(r.includes(e))throw new Error(`Recursive definition found: ${r.join(" -> ")} -> ${e}`);r.push(e),e=this.types.get(e)}}if(e===void 0)throw new Error(`Type ${t} is not registered`);return e}parseTypeName(t){if(Array.isArray(t)){let[a,...o]=t;return{name:a,params:o}}if(typeof t!="string")throw new Error(`Illegal type passed as a name of the type: ${t}`);let[e,r]=this.schema.genericSeparators||["<",">"],n=t.indexOf(e),i=Array.from(t).reverse().indexOf(r);if(n===-1&&i===-1)return{name:t,params:[]};if(n===-1||i===-1)throw new Error(`Unclosed generic in name '${t}'`);let s=t.slice(0,n),c=At(t.slice(n+1,t.length-i-1),this.schema.genericSeparators);return{name:s,params:c}}};let x=je;x.U8="u8";x.U16="u16";x.U32="u32";x.U64="u64";x.U128="u128";x.U256="u256";x.BOOL="bool";x.VECTOR="vector";x.ADDRESS="address";x.STRING="string";x.HEX="hex-string";x.BASE58="base58-string";x.BASE64="base64-string";function si(t){t.registerType(x.U8,function(e,r){return e.write8(r)},function(e){return e.read8()},e=>e<256),t.registerType(x.U16,function(e,r){return e.write16(r)},function(e){return e.read16()},e=>e<65536),t.registerType(x.U32,function(e,r){return e.write32(r)},function(e){return e.read32()},e=>e<=4294967296n),t.registerType(x.U64,function(e,r){return e.write64(r)},function(e){return e.read64()}),t.registerType(x.U128,function(e,r){return e.write128(r)},function(e){return e.read128()}),t.registerType(x.U256,function(e,r){return e.write256(r)},function(e){return e.read256()}),t.registerType(x.BOOL,function(e,r){return e.write8(r)},function(e){return e.read8().toString(10)==="1"}),t.registerType(x.STRING,function(e,r){return e.writeVec(Array.from(r),(n,i)=>n.write8(i.charCodeAt(0)))},function(e){return e.readVec(r=>r.read8()).map(r=>String.fromCharCode(Number(r))).join("")},e=>!0),t.registerType(x.HEX,function(e,r){return e.writeVec(Array.from(rt(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return Re(new Uint8Array(r))}),t.registerType(x.BASE58,function(e,r){return e.writeVec(Array.from(Et(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return $e(new Uint8Array(r))}),t.registerType(x.BASE64,function(e,r){return e.writeVec(Array.from(le(r)),(n,i)=>n.write8(i))},function(e){let r=e.readVec(n=>n.read8());return Ue(new Uint8Array(r))})}function ai(){return{genericSeparators:["<",">"],vectorType:"vector",addressLength:ii,addressEncoding:"hex"}}const xt=32;function oi(t){return ui(t)&&di(t)===xt}function ci(t){return t.includes("::")?$r(t):t}function $r(t){const[e,r]=t.split("::"),n=t.slice(e.length+r.length+4),i=n.includes("<")?n.slice(0,n.indexOf("<")):n,s=n.includes("<")?At(n.slice(n.indexOf("<")+1,n.lastIndexOf(">"))).map(c=>ci(c.trim())):[];return{address:N(e),module:r,name:i,typeParams:s}}function N(t,e=!1){let r=t.toLowerCase();return!e&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(xt*2,"0")}`}function Te(t,e=!1){return N(t,e)}function ui(t){return/^(0x|0X)?[a-fA-F0-9]+$/.test(t)&&t.length%2===0}function di(t){return/^(0x|0X)/.test(t)?(t.length-2)/2:t.length/2}BigInt(1e9);const Bt="0x1",Ur="0x2",pe=Te("0x6"),Ge=`${Ur}::sui::SUI`;Te("0x5");const li="object",fi="ID",hi="ascii",gi="String",pi="string",yi="String",mi="option",wi="Option",bi={address:Ur,module:li,name:fi},Si={address:Bt,module:hi,name:gi},Ti={address:Bt,module:pi,name:yi},vi={address:Bt,module:mi,name:wi},Pe=(t,e)=>t.address===e.address&&t.module===e.module&&t.name===e.name;function ki(t){var r;const e=(r=jt(t))==null?void 0:r.Struct;return(e==null?void 0:e.address)==="0x2"&&(e==null?void 0:e.module)==="tx_context"&&(e==null?void 0:e.name)==="TxContext"}function dt(t,e){if(!(typeof e>"u")&&typeof e!==t)throw new Error(`Expect ${e} to be ${t}, received ${typeof e}`)}const Ii=["Address","Bool","U8","U16","U32","U64","U128","U256"];function wt(t,e){if(typeof t=="string"&&Ii.includes(t)){if(t in["U8","U16","U32","U64","U128","U256"])dt("number",e);else if(t==="Bool")dt("boolean",e);else if(t==="Address"&&(dt("string",e),e&&!oi(e)))throw new Error("Invalid Sui Address");return t.toLowerCase()}else if(typeof t=="string")throw new Error(`Unknown pure normalized type ${JSON.stringify(t,null,2)}`);if("Vector"in t){if((e===void 0||typeof e=="string")&&t.Vector==="U8")return"string";if(e!==void 0&&!Array.isArray(e))throw new Error(`Expect ${e} to be a array, received ${typeof e}`);const r=wt(t.Vector,e?e[0]:void 0);return r===void 0?void 0:`vector<${r}>`}if("Struct"in t){if(Pe(t.Struct,Si))return"string";if(Pe(t.Struct,Ti))return"utf8string";if(Pe(t.Struct,bi))return"address";if(Pe(t.Struct,vi)){const r={Vector:t.Struct.typeArguments[0]};return wt(r,e)}}}const ji=/^vector<(.+)>$/,Ei=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class ne{static parseFromStr(e,r=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const n=e.match(ji);if(n)return{vector:ne.parseFromStr(n[1],r)};const i=e.match(Ei);if(i)return{struct:{address:r?N(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:ne.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,r=!1){return At(e).map(n=>ne.parseFromStr(n,r))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${ne.tagToString(e.vector)}>`;if("struct"in e){const r=e.struct,n=r.typeParams.map(ne.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}}const A=new x({...ai(),types:{enums:{"Option<T>":{None:null,Some:"T"}}}});function Rr(t){return l.u64({name:"unsafe_u64",...t}).transform({input:e=>e,output:e=>Number(e)})}function Oi(t){return l.enum("Option",{None:null,Some:t})}function Ct(t){return t.transform({input:e=>({[e.kind]:e}),output:e=>{const r=Object.keys(e)[0];return{kind:r,...e[r]}}})}const Z=l.bytes(xt).transform({input:t=>typeof t=="string"?rt(N(t)):t,output:t=>N(Re(t))}),$t=l.vector(l.u8()).transform({name:"ObjectDigest",input:t=>Et(t),output:t=>$e(new Uint8Array(t))}),_e=l.struct("SuiObjectRef",{objectId:Z,version:l.u64(),digest:$t}),Ut=l.struct("SharedObjectRef",{objectId:Z,initialSharedVersion:l.u64(),mutable:l.bool()}),Ye=l.enum("ObjectArg",{ImmOrOwned:_e,Shared:Ut,Receiving:_e}),Rt=l.enum("CallArg",{Pure:l.vector(l.u8()),Object:Ye,ObjVec:l.vector(Ye)}),ve=l.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:l.lazy(()=>ve),struct:l.lazy(()=>zt),u16:null,u32:null,u256:null}),J=Ct(l.enum("Argument",{GasCoin:null,Input:l.struct("Input",{index:l.u16()}),Result:l.struct("Result",{index:l.u16()}),NestedResult:l.struct("NestedResult",{index:l.u16(),resultIndex:l.u16()})})),Pt=l.struct("ProgrammableMoveCall",{package:Z,module:l.string(),function:l.string(),type_arguments:l.vector(ve),arguments:l.vector(J)}).transform({input:t=>{const[e,r,n]=t.target.split("::"),i=t.typeArguments.map(s=>ne.parseFromStr(s,!0));return{package:N(e),module:r,function:n,type_arguments:i,arguments:t.arguments}},output:t=>({target:[t.package,t.module,t.function].join("::"),arguments:t.arguments,typeArguments:t.type_arguments.map(ne.tagToString)})}),Mt=Ct(l.enum("Transaction",{MoveCall:Pt,TransferObjects:l.struct("TransferObjects",{objects:l.vector(J),address:J}),SplitCoins:l.struct("SplitCoins",{coin:J,amounts:l.vector(J)}),MergeCoins:l.struct("MergeCoins",{destination:J,sources:l.vector(J)}),Publish:l.struct("Publish",{modules:l.vector(l.vector(l.u8())),dependencies:l.vector(Z)}),MakeMoveVec:l.struct("MakeMoveVec",{type:Oi(ve),objects:l.vector(J)}),Upgrade:l.struct("Upgrade",{modules:l.vector(l.vector(l.u8())),dependencies:l.vector(Z),packageId:Z,ticket:J})})),Nt=l.struct("ProgrammableTransaction",{inputs:l.vector(Rt),transactions:l.vector(Mt)}),Dt=l.enum("TransactionKind",{ProgrammableTransaction:Nt,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),Vt=l.enum("TransactionExpiration",{None:null,Epoch:Rr()}),zt=l.struct("StructTag",{address:Z,module:l.string(),name:l.string(),typeParams:l.vector(ve)}),Ft=l.struct("GasData",{payment:l.vector(_e),owner:Z,price:l.u64(),budget:l.u64()}),Gt=l.struct("TransactionDataV1",{kind:Dt,sender:Z,gasData:Ft,expiration:Vt}),Lt=l.enum("TransactionData",{V1:Gt}),Ai=l.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),_i=l.enum("IntentVersion",{V0:null}),xi=l.enum("AppId",{Sui:null}),Bi=l.struct("Intent",{scope:Ai,version:_i,appId:xi}),Ci=l.generic(["T"],t=>l.struct("IntentMessage<T>",{intent:Bi,value:t})),Wt=l.enum("CompressedSignature",{ED25519:l.fixedArray(64,l.u8()),Secp256k1:l.fixedArray(64,l.u8()),Secp256r1:l.fixedArray(64,l.u8()),ZkLogin:l.vector(l.u8())}),Kt=l.enum("PublicKey",{ED25519:l.fixedArray(32,l.u8()),Secp256k1:l.fixedArray(33,l.u8()),Secp256r1:l.fixedArray(33,l.u8()),ZkLogin:l.vector(l.u8())}),Jt=l.struct("MultiSigPkMap",{pubKey:Kt,weight:l.u8()}),Ht=l.struct("MultiSigPublicKey",{pk_map:l.vector(Jt),threshold:l.u16()}),Pr=l.struct("MultiSig",{sigs:l.vector(Wt),bitmap:l.u16(),multisig_pk:Ht}),$i=l.vector(l.u8()).transform({input:t=>typeof t=="string"?le(t):t,output:t=>Ue(new Uint8Array(t))}),Mr=l.struct("SenderSignedTransaction",{intentMessage:Ci(Lt),txSignatures:l.vector($i)}),Nr=l.vector(Mr,{name:"SenderSignedData"}),R={...l,U8:l.u8(),U16:l.u16(),U32:l.u32(),U64:l.u64(),U128:l.u128(),U256:l.u256(),ULEB128:l.uleb128(),Bool:l.bool(),String:l.string(),Address:Z,Argument:J,CallArg:Rt,CompressedSignature:Wt,GasData:Ft,MultiSig:Pr,MultiSigPkMap:Jt,MultiSigPublicKey:Ht,ObjectArg:Ye,ObjectDigest:$t,ProgrammableMoveCall:Pt,ProgrammableTransaction:Nt,PublicKey:Kt,SenderSignedData:Nr,SenderSignedTransaction:Mr,SharedObjectRef:Ut,StructTag:zt,SuiObjectRef:_e,Transaction:Mt,TransactionData:Lt,TransactionDataV1:Gt,TransactionExpiration:Vt,TransactionKind:Dt,TypeTag:ve,ser:A.ser.bind(A),de:A.de.bind(A),getTypeInterface:A.getTypeInterface.bind(A),hasType:A.hasType.bind(A),parseTypeName:A.parseTypeName.bind(A),registerAddressType:A.registerAddressType.bind(A),registerAlias:A.registerAlias.bind(A),registerBcsType:A.registerBcsType.bind(A),registerEnumType:A.registerEnumType.bind(A),registerStructType:A.registerStructType.bind(A),registerType:A.registerType.bind(A),types:A.types};A.registerBcsType("utf8string",()=>l.string({name:"utf8string"}));A.registerBcsType("unsafe_u64",()=>Rr());A.registerBcsType("enumKind",t=>Ct(t));[Z,J,Rt,Wt,Ft,Pr,Jt,Ht,Ye,$t,Pt,Nt,Kt,Nr,Ut,zt,_e,Mt,Lt,Gt,Vt,Dt,ve].forEach(t=>{A.registerBcsType(t.name,()=>t)});const Ui=C([p({ImmOrOwned:de}),p({Shared:p({objectId:h(),initialSharedVersion:C([ee(),h()]),mutable:D()})}),p({Receiving:de})]),Qe=p({Pure:I(ee())}),bt=p({Object:Ui}),et=C([Qe,bt]);function Ri(t,e){return{Pure:Array.from(t instanceof Uint8Array?t:_t(t)?t.toBytes():R.ser(e,t,{maxSize:1/0}).toBytes())}}const z={Pure:Ri,ObjectRef({objectId:t,digest:e,version:r}){return{Object:{ImmOrOwned:{digest:e,version:r,objectId:N(t)}}}},SharedObjectRef({objectId:t,mutable:e,initialSharedVersion:r}){return{Object:{Shared:{mutable:e,initialSharedVersion:r,objectId:N(t)}}}},ReceivingRef({objectId:t,digest:e,version:r}){return{Object:{Receiving:{digest:e,version:r,objectId:N(t)}}}}};function ur(t){return typeof t=="string"?N(t):"ImmOrOwned"in t.Object?N(t.Object.ImmOrOwned.objectId):"Receiving"in t.Object?N(t.Object.Receiving.objectId):N(t.Object.Shared.objectId)}function Pi(t){return typeof t=="object"&&"Object"in t&&"Shared"in t.Object?t.Object.Shared:void 0}function Mi(t){var e;return((e=Pi(t))==null?void 0:e.mutable)??!1}function V(t,e){return mr(t,e)}const Ni=t=>C([p({None:C([T(!0),T(null)])}),p({Some:t})]),xe=C([p({kind:T("Input"),index:ee(),value:S(yt()),type:S(T("object"))}),p({kind:T("Input"),index:ee(),value:S(yt()),type:T("pure")})]),Di=[xe,p({kind:T("GasCoin")}),p({kind:T("Result"),index:ee()}),p({kind:T("NestedResult"),index:ee(),resultIndex:ee()})],se=C([...Di]),Dr=p({kind:T("MoveCall"),target:G("target",h().validator),typeArguments:I(h()),arguments:I(se)}),Vr=p({kind:T("TransferObjects"),objects:I(se),address:se}),zr=p({kind:T("SplitCoins"),coin:se,amounts:I(se)}),Fr=p({kind:T("MergeCoins"),destination:se,sources:I(se)}),Gr=p({kind:T("MakeMoveVec"),type:S(Ni(Y(h(),Tr()))),objects:I(se)}),Lr=p({kind:T("Publish"),modules:I(I(ee())),dependencies:I(h())}),Wr=p({kind:T("Upgrade"),modules:I(I(ee())),dependencies:I(h()),packageId:h(),ticket:se}),Vi=[Dr,Vr,zr,Fr,Lr,Wr,Gr],zi=C([...Vi]),he={MoveCall(t){return V({kind:"MoveCall",target:t.target,arguments:t.arguments??[],typeArguments:t.typeArguments??[]},Dr)},TransferObjects(t,e){return e.kind==="Input"&&e.type==="pure"&&typeof e.value!="object"&&(e.value=z.Pure(R.Address.serialize(e.value))),V({kind:"TransferObjects",objects:t,address:e},Vr)},SplitCoins(t,e){return e.forEach(r=>{r.kind==="Input"&&r.type==="pure"&&typeof r.value!="object"&&(r.value=z.Pure(R.U64.serialize(r.value)))}),V({kind:"SplitCoins",coin:t,amounts:e},zr)},MergeCoins(t,e){return V({kind:"MergeCoins",destination:t,sources:e},Fr)},Publish({modules:t,dependencies:e}){return V({kind:"Publish",modules:t.map(r=>typeof r=="string"?Array.from(le(r)):r),dependencies:e.map(r=>Te(r))},Lr)},Upgrade({modules:t,dependencies:e,packageId:r,ticket:n}){return V({kind:"Upgrade",modules:t.map(i=>typeof i=="string"?Array.from(le(i)):i),dependencies:e.map(i=>Te(i)),packageId:r,ticket:n},Wr)},MakeMoveVec({type:t,objects:e}){return V({kind:"MakeMoveVec",type:t?{Some:ne.parseFromStr(t)}:{None:null},objects:e},Gr)}};function Fi(t){function e(r,n){return t(r,n)}return e.u8=r=>t(R.U8.serialize(r)),e.u16=r=>t(R.U16.serialize(r)),e.u32=r=>t(R.U32.serialize(r)),e.u64=r=>t(R.U64.serialize(r)),e.u128=r=>t(R.U128.serialize(r)),e.u256=r=>t(R.U256.serialize(r)),e.bool=r=>t(R.Bool.serialize(r)),e.string=r=>t(R.String.serialize(r)),e.address=r=>t(R.Address.serialize(r)),e.id=e.address,e}function Gi(t,e){const r=Array.from(`${t}::`).map(i=>i.charCodeAt(0)),n=new Uint8Array(r.length+e.length);return n.set(r),n.set(e,r.length),en(n,{dkLen:32})}const Li=S(B(C([p({Epoch:ee()}),p({None:C([T(!0),T(null)])})]))),dr=G("StringEncodedBigint",t=>{if(!["string","number","bigint"].includes(typeof t))return!1;try{return BigInt(t),!0}catch{return!1}}),Wi=p({budget:S(dr),price:S(dr),payment:S(I(de)),owner:S(h())}),Me=p({version:T(1),sender:S(h()),expiration:Li,gasConfig:Wi,inputs:I(xe),transactions:I(zi)});function lr(t){return N(t).replace("0x","")}class ie{constructor(e){this.version=1,this.sender=e==null?void 0:e.sender,this.expiration=e==null?void 0:e.expiration,this.gasConfig=(e==null?void 0:e.gasConfig)??{},this.inputs=(e==null?void 0:e.inputs)??[],this.transactions=(e==null?void 0:e.transactions)??[]}static fromKindBytes(e){const r=R.TransactionKind.parse(e),n="ProgrammableTransaction"in r?r.ProgrammableTransaction:null;if(!n)throw new Error("Unable to deserialize from bytes.");const i=V({version:1,gasConfig:{},inputs:n.inputs.map((s,c)=>V({kind:"Input",value:s,index:c,type:F(s,Qe)?"pure":"object"},xe)),transactions:n.transactions},Me);return ie.restore(i)}static fromBytes(e){var c;const r=R.TransactionData.parse(e),n=r==null?void 0:r.V1,i="ProgrammableTransaction"in n.kind?(c=n==null?void 0:n.kind)==null?void 0:c.ProgrammableTransaction:null;if(!n||!i)throw new Error("Unable to deserialize from bytes.");const s=V({version:1,sender:n.sender,expiration:n.expiration,gasConfig:n.gasData,inputs:i.inputs.map((a,o)=>V({kind:"Input",value:a,index:o,type:F(a,Qe)?"pure":"object"},xe)),transactions:i.transactions},Me);return ie.restore(s)}static restore(e){pt(e,Me);const r=new ie;return Object.assign(r,e),r}static getDigestFromBytes(e){const r=Gi("TransactionData",e);return $e(r)}build({maxSizeBytes:e=1/0,overrides:r,onlyTransactionKind:n}={}){const i=this.inputs.map(u=>(pt(u.value,et),u.value)),s={ProgrammableTransaction:{inputs:i,transactions:this.transactions}};if(n)return R.TransactionKind.serialize(s,{maxSize:e}).toBytes();const c=(r==null?void 0:r.expiration)??this.expiration,a=(r==null?void 0:r.sender)??this.sender,o={...this.gasConfig,...r==null?void 0:r.gasConfig};if(!a)throw new Error("Missing transaction sender");if(!o.budget)throw new Error("Missing gas budget");if(!o.payment)throw new Error("Missing gas payment");if(!o.price)throw new Error("Missing gas price");const d={sender:lr(a),expiration:c||{None:!0},gasData:{payment:o.payment,owner:lr(this.gasConfig.owner??a),price:BigInt(o.price),budget:BigInt(o.budget)},kind:{ProgrammableTransaction:{inputs:i,transactions:this.transactions}}};return R.TransactionData.serialize({V1:d},{maxSize:e}).toBytes()}getDigest(){const e=this.build({onlyTransactionKind:!1});return ie.getDigestFromBytes(e)}snapshot(){return V(this,Me)}}var Xt=(t,e,r)=>{if(!e.has(t))throw TypeError("Cannot "+r)},O=(t,e,r)=>(Xt(t,e,"read from private field"),r?r.call(t):e.get(t)),re=(t,e,r)=>{if(e.has(t))throw TypeError("Cannot add the same private member more than once");e instanceof WeakSet?e.add(t):e.set(t,r)},Ne=(t,e,r,n)=>(Xt(t,e,"write to private field"),e.set(t,r),r),P=(t,e,r)=>(Xt(t,e,"access private method"),r),v,Ee,Le,Oe,We,fe,me,qt,Kr,Zt,Jr,Yt,Hr,Qt,Xr,Ke,St;const Ki={maxPureArgumentSize:16*1024,maxTxGas:5e10,maxGasObjects:256,maxTxSizeBytes:128*1024};function Ji(t){const e={kind:"Result",index:t},r=[],n=i=>r[i]??(r[i]={kind:"NestedResult",index:t,resultIndex:i});return new Proxy(e,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,s){if(s in i)return Reflect.get(i,s);if(s===Symbol.iterator)return function*(){let a=0;for(;;)yield n(a),a++};if(typeof s=="symbol")return;const c=parseInt(s,10);if(!(Number.isNaN(c)||c<0))return n(c)}})}function Hi(t){const e=jt(t);return e?e.Struct.address==="0x2"&&e.Struct.module==="transfer"&&e.Struct.name==="Receiving":!1}function Be(t){if(!t.client)throw new Error("No provider passed to Transaction#build, but transaction data was not sufficient to build offline.");return t.client}const Xi=Symbol.for("@mysten/transaction"),lt={maxTxGas:"max_tx_gas",maxGasObjects:"max_gas_payment_objects",maxTxSizeBytes:"max_tx_size_bytes",maxPureArgumentSize:"max_pure_argument_size"},qi=1000n,Zi=50,Yi=(t,e)=>Array.from({length:Math.ceil(t.length/e)},(r,n)=>t.slice(n*e,n*e+e)),Tt=class{constructor(t){re(this,Ee),re(this,Oe),re(this,fe),re(this,qt),re(this,Zt),re(this,Yt),re(this,Qt),re(this,Ke),re(this,v,void 0),Ne(this,v,new ie(t?t.blockData:void 0))}static fromKind(t){const e=new Tt;return Ne(e,v,ie.fromKindBytes(typeof t=="string"?le(t):t)),e}static from(t){const e=new Tt;return typeof t!="string"||!t.startsWith("{")?Ne(e,v,ie.fromBytes(typeof t=="string"?le(t):t)):Ne(e,v,ie.restore(JSON.parse(t))),e}setSender(t){O(this,v).sender=t}setSenderIfNotSet(t){O(this,v).sender||(O(this,v).sender=t)}setExpiration(t){O(this,v).expiration=t}setGasPrice(t){O(this,v).gasConfig.price=String(t)}setGasBudget(t){O(this,v).gasConfig.budget=String(t)}setGasOwner(t){O(this,v).gasConfig.owner=t}setGasPayment(t){O(this,v).gasConfig.payment=t.map(e=>wr(e,de))}get blockData(){return O(this,v).snapshot()}get[Xi](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Fi((t,e)=>_t(t)?P(this,Ee,Le).call(this,"pure",{Pure:Array.from(t.toBytes())}):P(this,Ee,Le).call(this,"pure",t instanceof Uint8Array?z.Pure(t):e?z.Pure(t,e):t))}),this.pure}get gas(){return{kind:"GasCoin"}}object(t){if(typeof t=="object"&&"kind"in t)return t;const e=ur(t),r=O(this,v).inputs.find(n=>n.type==="object"&&e===ur(n.value));return r&&F(r.value,bt)&&"Shared"in r.value.Object&&F(t,bt)&&"Shared"in t.Object&&(r.value.Object.Shared.mutable=r.value.Object.Shared.mutable||t.Object.Shared.mutable),r??P(this,Ee,Le).call(this,"object",typeof t=="string"?N(t):t)}objectRef(...t){return this.object(z.ObjectRef(...t))}receivingRef(...t){return this.object(z.ReceivingRef(...t))}sharedObjectRef(...t){return this.object(z.SharedObjectRef(...t))}add(t){const e=O(this,v).transactions.push(t);return Ji(e-1)}splitCoins(t,e){return this.add(he.SplitCoins(typeof t=="string"?this.object(t):t,e.map(r=>typeof r=="number"||typeof r=="bigint"||typeof r=="string"?this.pure.u64(r):P(this,Oe,We).call(this,r))))}mergeCoins(t,e){return this.add(he.MergeCoins(typeof t=="string"?this.object(t):t,e.map(r=>typeof r=="string"?this.object(r):r)))}publish({modules:t,dependencies:e}){return this.add(he.Publish({modules:t,dependencies:e}))}upgrade({modules:t,dependencies:e,packageId:r,ticket:n}){return this.add(he.Upgrade({modules:t,dependencies:e,packageId:r,ticket:typeof n=="string"?this.object(n):n}))}moveCall({arguments:t,typeArguments:e,target:r}){return this.add(he.MoveCall({arguments:t==null?void 0:t.map(n=>P(this,Oe,We).call(this,n)),typeArguments:e,target:r}))}transferObjects(t,e){return this.add(he.TransferObjects(t.map(r=>typeof r=="string"?this.object(r):r),typeof e=="string"?this.pure.address(e):P(this,Oe,We).call(this,e)))}makeMoveVec({type:t,objects:e}){return this.add(he.MakeMoveVec({type:t,objects:e.map(r=>typeof r=="string"?this.object(r):r)}))}serialize(){return JSON.stringify(O(this,v).snapshot())}async sign(t){const{signer:e,...r}=t,n=await this.build(r);return e.signTransactionBlock(n)}async build(t={}){return await P(this,Ke,St).call(this,t),O(this,v).build({maxSizeBytes:P(this,fe,me).call(this,"maxTxSizeBytes",t),onlyTransactionKind:t.onlyTransactionKind})}async getDigest(t={}){return await P(this,Ke,St).call(this,t),O(this,v).getDigest()}};let ue=Tt;v=new WeakMap;Ee=new WeakSet;Le=function(t,e){const r=O(this,v).inputs.length,n=V({kind:"Input",value:typeof e=="bigint"?String(e):e,index:r,type:t},xe);return O(this,v).inputs.push(n),n};Oe=new WeakSet;We=function(t){return _t(t)?this.pure(t):t};fe=new WeakSet;me=function(t,{protocolConfig:e,limits:r}){if(r&&typeof r[t]=="number")return r[t];if(!e)return Ki[t];const n=e==null?void 0:e.attributes[lt[t]];if(!n)throw new Error(`Missing expected protocol config: "${lt[t]}"`);const i="u64"in n?n.u64:"u32"in n?n.u32:n.f64;if(!i)throw new Error(`Unexpected protocol config value found for: "${lt[t]}"`);return Number(i)};qt=new WeakSet;Kr=function(t){const e=P(this,fe,me).call(this,"maxPureArgumentSize",t);O(this,v).inputs.forEach((r,n)=>{if(F(r.value,Qe)&&r.value.Pure.length>e)throw new Error(`Input at index ${n} is too large, max pure input size is ${e} bytes, got ${r.value.Pure.length} bytes`)})};Zt=new WeakSet;Jr=async function(t){if(O(this,v).gasConfig.payment){const i=P(this,fe,me).call(this,"maxGasObjects",t);if(O(this,v).gasConfig.payment.length>i)throw new Error(`Payment objects exceed maximum amount: ${i}`)}if(t.onlyTransactionKind||O(this,v).gasConfig.payment)return;const e=O(this,v).gasConfig.owner??O(this,v).sender,n=(await Be(t).getCoins({owner:e,coinType:Ge})).data.filter(i=>!O(this,v).inputs.find(c=>F(c.value,et)&&"Object"in c.value&&"ImmOrOwned"in c.value.Object?i.coinObjectId===c.value.Object.ImmOrOwned.objectId:!1)).slice(0,P(this,fe,me).call(this,"maxGasObjects",t)-1).map(i=>({objectId:i.coinObjectId,digest:i.digest,version:i.version}));if(!n.length)throw new Error("No valid gas coins found for the transaction.");this.setGasPayment(n)};Yt=new WeakSet;Hr=async function(t){t.onlyTransactionKind||O(this,v).gasConfig.price||this.setGasPrice(await Be(t).getReferenceGasPrice())};Qt=new WeakSet;Xr=async function(t){const{inputs:e,transactions:r}=O(this,v),n=[],i=[];if(e.forEach(s=>{if(s.type==="object"&&typeof s.value=="string"){i.push({id:N(s.value),input:s});return}}),r.forEach(s=>{if(s.kind==="MoveCall"&&s.arguments.some(a=>a.kind==="Input"&&!F(e[a.index].value,et))&&n.push(s),s.kind==="SplitCoins"&&s.amounts.forEach(c=>{if(c.kind==="Input"){const a=e[c.index];typeof a.value!="object"&&(a.value=z.Pure(R.U64.serialize(a.value)))}}),s.kind==="TransferObjects"&&s.address.kind==="Input"){const c=e[s.address.index];typeof c.value!="object"&&(c.value=z.Pure(R.Address.serialize(c.value)))}}),n.length&&await Promise.all(n.map(async s=>{const[c,a,o]=s.target.split("::"),d=await Be(t).getNormalizedMoveFunction({package:Te(c),module:a,function:o}),g=d.parameters.length>0&&ki(d.parameters.at(-1))?d.parameters.slice(0,d.parameters.length-1):d.parameters;if(g.length!==s.arguments.length)throw new Error("Incorrect number of arguments.");g.forEach((m,y)=>{const w=s.arguments[y];if(w.kind!=="Input")return;const b=e[w.index];if(F(b.value,et))return;const f=b.value,j=wt(m,f);if(j){b.value=z.Pure(f,j);return}if(jt(m)!=null||typeof m=="object"&&"TypeParameter"in m){if(typeof f!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(f,null,2)}`);i.push({id:f,input:b,normalizedType:m});return}throw new Error(`Unknown call arg type ${JSON.stringify(m,null,2)} for value ${JSON.stringify(f,null,2)}`)})})),i.length){const s=[...new Set(i.map(({id:u})=>u))],c=Yi(s,Zi),a=(await Promise.all(c.map(u=>Be(t).multiGetObjects({ids:u,options:{showOwner:!0}})))).flat();let o=new Map(s.map((u,g)=>[u,a[g]]));const d=Array.from(o).filter(([u,g])=>g.error).map(([u,g])=>u);if(d.length)throw new Error(`The following input objects are invalid: ${d.join(", ")}`);i.forEach(({id:u,input:g,normalizedType:m})=>{var f;const y=o.get(u),w=(f=y.data)==null?void 0:f.owner,b=w&&typeof w=="object"&&"Shared"in w?w.Shared.initial_shared_version:void 0;if(b){const j=m!=null&&mt(m)==null&&Er(m)==null,_=Mi(g.value)||j||m!=null&&mt(m)!=null;g.value=z.SharedObjectRef({objectId:u,initialSharedVersion:b,mutable:_})}else m&&Hi(m)?g.value=z.ReceivingRef(cr(y)):g.value=z.ObjectRef(cr(y))})}};Ke=new WeakSet;St=async function(t){if(!t.onlyTransactionKind&&!O(this,v).sender)throw new Error("Missing transaction sender");if(!t.protocolConfig&&!t.limits&&t.client&&(t.protocolConfig=await t.client.getProtocolConfig()),await Promise.all([P(this,Yt,Hr).call(this,t),P(this,Qt,Xr).call(this,t)]),!t.onlyTransactionKind&&(await P(this,Zt,Jr).call(this,t),!O(this,v).gasConfig.budget)){const e=await Be(t).dryRunTransactionBlock({transactionBlock:O(this,v).build({maxSizeBytes:P(this,fe,me).call(this,"maxTxSizeBytes",t),overrides:{gasConfig:{budget:String(P(this,fe,me).call(this,"maxTxGas",t)),payment:[]}}})});if(e.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${e.effects.status.error}`,{cause:e});const r=qi*BigInt(this.blockData.gasConfig.price||1n),n=BigInt(e.effects.gasUsed.computationCost)+r,i=n+BigInt(e.effects.gasUsed.storageCost)-BigInt(e.effects.gasUsed.storageRebate);this.setGasBudget(i>n?i:n)}P(this,qt,Kr).call(this,t)};const fr=async(t,e,r)=>{var c,a,o;if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await tt(t,e);if(!n)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${e}`);const i=(a=(c=n.token_registry.fields)==null?void 0:c.id)==null?void 0:a.id;if(!i)throw new Error("Unable to fetch token registry object ID");const s=tn((o=n.token_registry)==null?void 0:o.type);if(!s)throw new Error("Unable to fetch token registry package ID");return t.getDynamicFieldObject({parentId:i,name:{type:`${s}::token_registry::Key<${r}>`,value:{dummy_field:!1}}})},Je=async(t,e,r,n)=>{var u,g,m,y;const i=await tt(t,e);if(!i)throw new Error("Unable to fetch object fields from token bridge state");const s=(g=(u=i.token_registry)==null?void 0:u.fields)==null?void 0:g.coin_types,c=(y=(m=s==null?void 0:s.fields)==null?void 0:m.id)==null?void 0:y.id;if(!c)throw new Error("Unable to fetch coin types");const a=hr(s==null?void 0:s.type);if(!a)throw new Error("Unable to get key type");const o=await t.getDynamicFieldObject({parentId:c,name:{type:a,value:{addr:[...r],chain:n}}});if(o.error){if(o.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${o.error}`)}const d=gt(o);if(!d)return null;if(!Ve(d))throw new Error("What?");return"value"in d?ke(d.value):null};class er{constructor(e,r,n,i){M(this,"network");M(this,"chain");M(this,"provider");M(this,"contracts");M(this,"coreBridgeObjectId");M(this,"tokenBridgeObjectId");M(this,"chainId");this.network=e,this.chain=r,this.provider=n,this.contracts=i,this.chainId=rn.get(e,r);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${r} not found`);const c=this.contracts.coreBridge;if(!c)throw new Error(`Wormhole Token Bridge contract for domain ${r} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=c}static async fromRpc(e,r){const[n,i]=await Q.chainFromRpc(e),s=r[i];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new er(n,i,e,s.contracts)}async isWrappedAsset(e){try{return await this.getOriginalAsset(e),!0}catch{return!1}}async getOriginalAsset(e){let r=e.getCoinType();if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await fr(this.provider,this.tokenBridgeObjectId,r),i=gt(n);if(!i)throw nt(r);if(!Ve(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const s=i.value;if(!H(s))throw new Error("Expected fields to be a MoveStruct");const c=ke(s.type);if(r=ke(r),c.includes(`wrapped_asset::WrappedAsset<${r}>`)){const a=s.fields.info;if(!H(a))throw new Error("Expected fields to be a MoveStruct");const o=a.fields.token_address;if(!H(o))throw new Error("Expected fields to be a MoveStruct");if(!Ve(o.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const d=o.fields.value;if(!H(d))throw new Error("Expected fields to be a MoveStruct");const u=new Uint8Array(d.fields.data);return{chain:nn(Number(a.fields.token_chain)),address:new nr(u)}}throw nt(r)}async getTokenUniversalAddress(e){let r=e.getCoinType();if(!ft(r))throw new Error(`Invalid Sui type: ${r}`);const n=await fr(this.provider,this.tokenBridgeObjectId,r),i=gt(n);if(!i)throw new Error(`Token of type ${r} has not been registered with the token bridge. Has it been attested?`);if(!Ve(i))throw new Error("Expected fields to be a MoveStruct");if(!("value"in i))throw new Error("Expected a `value` key in fields of MoveStruct");const s=i.value;if(!H(s))throw new Error("Expected fields to be a MoveStruct");const c=ke(s.type);if(r=ke(r),c.includes(`native_asset::NativeAsset<${r}>`)){const a=s.fields.token_address;if(!H(a))throw new Error("Expected fields to be a MoveStruct");if(!("value"in a.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const o=a.fields.value;if(!H(o))throw new Error("Expected fields to be a MoveStruct");const d=new Uint8Array(o.fields.data);return new nr(d)}throw new Error(`Token of type ${r} is not a native asset`)}async getTokenNativeAddress(e,r){const n=await Je(this.provider,this.tokenBridgeObjectId,r.toUint8Array(),ce(e));if(!n)throw new Error(`Token ${r.toString()} not found in token registry`);return new ge(n)}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(oe(e.address))throw new Error("Token Address required, 'native' literal not supported");const r=await Je(this.provider,this.tokenBridgeObjectId,e.address.toUniversalAddress().toUint8Array(),ce(e.chain));if(!r)throw nt(sn(e));return ir(this.chain,r)}async isTransferCompleted(e){var a,o,d,u,g,m,y,w;const r=await tt(this.provider,this.tokenBridgeObjectId);if(!r)throw new Error("Unable to fetch object fields from token bridge state");const n=(o=(a=r.consumed_vaas)==null?void 0:a.fields)==null?void 0:o.hashes,i=hr((u=(d=n==null?void 0:n.fields)==null?void 0:d.items)==null?void 0:u.type);if(!i)throw new Error("Unable to get key type");const s=(w=(y=(m=(g=n==null?void 0:n.fields)==null?void 0:g.items)==null?void 0:m.fields)==null?void 0:y.id)==null?void 0:w.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const c=await this.provider.getDynamicFieldObject({parentId:s,name:{type:i,value:{data:[...an(e.hash)]}}});if(!c.error)return!0;if(c.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${c.error}`)}async*createAttestation(e){const r=0n,n=0n,i=e.toString(),s=await this.provider.getCoinMetadata({coinType:i});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${i} not found`);const[c,a]=await this.getPackageIds(),o=new ue,[d]=o.splitCoins(o.gas,[o.pure(r)]),[u]=o.moveCall({target:`${a}::attest_token::attest_token`,arguments:[o.object(this.tokenBridgeObjectId),o.object(s.id),o.pure(n)],typeArguments:[i]});o.moveCall({target:`${c}::publish_message::publish_message`,arguments:[o.object(this.coreBridgeObjectId),d,u,o.object(pe)]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(e,r){const[n,i]=await this.getPackageIds(),s=r.toString(),c=Math.min(e.payload.decimals,8),a=await this.getCoinBuildOutput(n,i,c),o=await ln(a,s);yield this.createUnsignedTx(o,"Sui.TokenBridge.PrepareCreateWrapped");let d="",u="",g="",m="",y="",w=!1;for(;!w;){await new Promise(E=>setTimeout(E,500));const $=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const E of $.data)if("objectChanges"in E){for(const k of E.objectChanges)fn(k)&&k.packageId!==void 0?d=k.packageId:it(k)&&k.objectType.includes("WrappedAssetSetup")?(u=k.objectId,y=k.objectType.split(", ")[1].replace(">","")):it(k)&&k.objectType.includes("UpgradeCap")?g=k.objectId:it(k)&&k.objectType.includes("CoinMetadata")&&(m=k.objectId);if(d!==""&&u!==""&&g!==""&&m!==""){w=!0;break}else d="",u="",g="",m=""}}const b=on(d),f=new ue,[j]=f.moveCall({target:`${n}::vaa::parse_and_verify`,arguments:[f.object(this.coreBridgeObjectId),f.pure(ze(ht(e))),f.object(pe)]}),[_]=f.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[f.object(this.tokenBridgeObjectId),j]});f.moveCall({target:`${i}::create_wrapped::complete_registration`,arguments:[f.object(this.tokenBridgeObjectId),f.object(m),f.object(u),f.object(g),_],typeArguments:[b,y]}),yield this.createUnsignedTx(f,"Sui.TokenBridge.SubmitAttestation")}async*transfer(e,r,n,i,s){const c=0n,a=0n,d=e.toString(),u=(oe(n)?Ge:n).toString(),g=await Q.getCoins(this.provider,e,u),[m,...y]=g.filter(E=>pr(E.coinType,u));if(m===void 0)throw new Error(`Coins array doesn't contain any coins of type ${u}`);const[w,b]=await this.getPackageIds(),f=new ue,[j]=(()=>{if(u===Ge)return f.splitCoins(f.gas,[f.pure(i)]);{const E=f.object(m.coinObjectId);return y.length&&f.mergeCoins(E,y.map(k=>f.object(k.coinObjectId))),f.splitCoins(E,[f.pure(i)])}})(),[_]=f.splitCoins(f.gas,[f.pure(c)]),[$]=f.moveCall({target:`${b}::state::verified_asset`,arguments:[f.object(this.tokenBridgeObjectId)],typeArguments:[u]});if(s){if(!d)throw new Error("senderAddress is required for transfer with payload");let E=!1;const k=await(async()=>{const rr=await hn(this.provider,w,d);if(rr!==null)return f.object(rr);{const[qr]=f.moveCall({target:`${w}::emitter::new`,arguments:[f.object(this.coreBridgeObjectId)]});return E=!0,qr}})(),[U,K]=f.moveCall({target:`${b}::transfer_tokens_with_payload::prepare_transfer`,arguments:[k,$,j,f.pure(ce(r.chain)),f.pure(r.address.toUint8Array()),f.pure([...s]),f.pure(0)],typeArguments:[u]});f.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[K],typeArguments:[u]});const[we]=f.moveCall({target:`${b}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[f.object(this.tokenBridgeObjectId),U],typeArguments:[u]});f.moveCall({target:`${w}::publish_message::publish_message`,arguments:[f.object(this.coreBridgeObjectId),_,we,f.object(pe)]}),E&&f.transferObjects([k],f.pure(d)),yield this.createUnsignedTx(f,"Sui.TokenBridge.TransferWithPayload")}else{const[E,k]=f.moveCall({target:`${b}::transfer_tokens::prepare_transfer`,arguments:[$,j,f.pure(ce(r.chain)),f.pure(ze(r.address.toUint8Array())),f.pure(a),f.pure(0)],typeArguments:[u]});f.moveCall({target:`${b}::coin_utils::return_nonzero`,arguments:[k],typeArguments:[u]});const[U]=f.moveCall({target:`${b}::transfer_tokens::transfer_tokens`,arguments:[f.object(this.tokenBridgeObjectId),E],typeArguments:[u]});f.moveCall({target:`${w}::publish_message::publish_message`,arguments:[f.object(this.coreBridgeObjectId),_,U,f.object(pe)]}),yield this.createUnsignedTx(f,"Sui.TokenBridge.Transfer")}}async*redeem(e,r,n=!0){const i=await Je(this.provider,this.tokenBridgeObjectId,r.payload.token.address.toUint8Array(),ce(r.payload.token.chain));if(!i)throw new Error("Unable to fetch token coinType");const[s,c]=await this.getPackageIds(),a=new ue,[o]=a.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[a.object(this.coreBridgeObjectId),a.pure(ze(ht(r))),a.object(pe)]}),[d]=a.moveCall({target:`${c}::vaa::verify_only_once`,arguments:[a.object(this.tokenBridgeObjectId),o]}),[u]=a.moveCall({target:`${c}::complete_transfer::authorize_transfer`,arguments:[a.object(this.tokenBridgeObjectId),d],typeArguments:[i]}),[g]=a.moveCall({target:`${c}::complete_transfer::redeem_relayer_payout`,arguments:[u],typeArguments:[i]});a.moveCall({target:`${c}::coin_utils::return_nonzero`,arguments:[g],typeArguments:[i]}),yield this.createUnsignedTx(a,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return ir(this.chain,Ge)}async getPackageIds(){return Promise.all([He(this.provider,this.coreBridgeObjectId),He(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(e,r,n){var a;if(n>8)throw new Error("Decimals is capped at 8");const i=(a=await gn(this.provider,this.tokenBridgeObjectId))==null?void 0:a.replace("0x","");if(!i)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+i+"00020106010000000001090b0031"+n.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[cn.encode(De.decode(s))],dependencies:["0x1","0x2",r,e].map(o=>Te(o))}}createUnsignedTx(e,r,n=!1){return new yr(e,this.network,this.chain,r,n)}}class tr{constructor(e,r,n,i){M(this,"network");M(this,"chain");M(this,"connection");M(this,"contracts");M(this,"tokenBridgeRelayerObjectId");M(this,"coreBridgeObjectId");M(this,"tokenBridgeObjectId");M(this,"fields");this.network=e,this.chain=r,this.connection=n,this.contracts=i;const{tokenBridge:s,tokenBridgeRelayer:c,coreBridge:a}=i;if(!s||!c||!a)throw new Error(`Some object IDs for ${r} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=c,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=a}static async fromRpc(e,r){const[n,i]=await Q.chainFromRpc(e),s=r[i];if(s.network!==n)throw new Error(`Network mismatch for chain ${i}: ${s.network} != ${n}`);return new tr(n,i,e,s.contracts)}async*transfer(e,r,n,i,s){const a=new ge(oe(n)?Q.nativeTokenId(this.network,this.chain).address:n).getCoinType(),{coreBridge:o,tokenBridge:d}=await this.getPackageIds(),u=new ue,g=BigInt(0),[m]=u.splitCoins(u.gas,[u.pure(g)]),[y]=await(async()=>{if(oe(n))return u.splitCoins(u.gas,[u.pure(i)]);{const _=await Q.getCoins(this.connection,e,a),[$,...E]=_.filter(U=>U.coinType===a);if($===void 0)throw new Error(`Coins array doesn't contain any coins of type ${a}`);const k=u.object($.coinObjectId);return E.length&&u.mergeCoins(k,E.map(U=>u.object(U.coinObjectId))),u.splitCoins(k,[u.pure(i)])}})(),[w]=u.moveCall({target:`${d}::state::verified_asset`,arguments:[u.object(this.tokenBridgeObjectId)],typeArguments:[a]}),b=await this.getPackageId(),[f]=u.moveCall({target:`${b}::transfer::transfer_tokens_with_relay`,arguments:[u.object(this.tokenBridgeRelayerObjectId),y,w,u.pure.u64(s??0n),u.pure.u16(ce(r.chain)),u.pure.address(De.encode(r.address.toUint8Array(),!0)),u.pure.u32(123)],typeArguments:[a]}),[j]=u.moveCall({target:`${d}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[u.object(this.tokenBridgeObjectId),f],typeArguments:[a]});u.moveCall({target:`${o}::publish_message::publish_message`,arguments:[u.object(this.coreBridgeObjectId),m,j,u.object(pe)]}),yield this.createUnsignedTx(u,"AutomaticTokenBridge.transfer")}async*redeem(e,r){const{coreBridge:n,tokenBridge:i}=await this.getPackageIds(),{address:s,chain:c}=r.payload.token,a=await Je(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),ce(c));if(!a)throw new Error("Unable to fetch token coinType");const o=new ue,[d]=o.moveCall({target:`${n}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure(ze(ht(r))),o.object(pe)]}),[u]=o.moveCall({target:`${i}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),d]}),[g]=o.moveCall({target:`${i}::complete_transfer_with_payload::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),u],typeArguments:[a]}),m=await this.getPackageId();o.moveCall({target:`${m}::redeem::complete_transfer`,arguments:[o.object(this.tokenBridgeRelayerObjectId),g],typeArguments:[a]}),yield this.createUnsignedTx(o,"AutomaticTokenBridge.redeem")}async getRelayerFee(e,r){const n=oe(r)?Q.nativeTokenId(this.network,this.chain):r,i=await this.getTokenInfo(n.toString());if(i===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),c=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(un.encode("relayer_fees"))}});if(!c.data||!c.data.content)throw c.error?new Error("Failed to get relayer fees: "+JSON.stringify(c.error)):new Error("Unable to compute relayer fee");const{content:a}=c.data;if(!H(a)||!pn(a.fields.id))throw new Error("Unable to compute relayer fee");const o=await this.connection.getDynamicFieldObject({parentId:a.fields.id.id,name:{type:"u16",value:ce(e)}});if(!o.data||!o.data.content)throw o.error?new Error("Failed to get relayer fees: "+JSON.stringify(c.error)):new Error("Unable to compute relayer fee");const{content:d}=o.data;if(!H(d))throw new Error("Unable to compute relayer fee");const u=await Q.getDecimals(this.chain,this.connection,r.toString()),g=i.swap_rate,m=s.relayer_fee_precision,y=s.swap_rate_precision,w=d.fields.value;return 10n**BigInt(u)*BigInt(w)*BigInt(y)/(BigInt(g)*BigInt(m))}async maxSwapAmount(e){var o,d;const n=(oe(e)?Q.nativeTokenId(this.network,this.chain):e).toString(),i=await this.connection.getCoinMetadata({coinType:n});if(!i)throw new Error("metadata is null");const s=await this.getPackageId(),c=new ue;c.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[c.object(this.tokenBridgeRelayerObjectId),c.pure(i.decimals)],typeArguments:[n]});const a=await this.connection.devInspectTransactionBlock({transactionBlock:c,sender:De.encode(new Uint8Array(32))});if(!a.results||a.results.length==0||!((o=a.results[0])!=null&&o.returnValues)||((d=a.results[0])==null?void 0:d.returnValues.length)!==1)throw Error("swap rate not set");return sr.decode(new Uint8Array(a.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(e,r){var d,u;const i=(oe(e)?Q.nativeTokenId(this.network,this.chain):e).toString(),s=await this.connection.getCoinMetadata({coinType:i});if(!s)throw new Error("metadata is null");const c=await this.getPackageId(),a=new ue;a.moveCall({target:`${c}::redeem::calculate_native_swap_amount_out`,arguments:[a.object(this.tokenBridgeRelayerObjectId),a.pure(r),a.pure(s.decimals)],typeArguments:[i]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:a,sender:De.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!((d=o.results[0])!=null&&d.returnValues)||((u=o.results[0])==null?void 0:u.returnValues.length)!==1)throw Error("swap rate not set");return sr.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const r=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:r})).data.map(s=>{const{address:c,module:a,name:o}=$r(s.objectType).typeParams[0];return new ge([c,a,o].join(dn))})}async isRegisteredToken(e){const r=new ge(oe(e)?Q.nativeTokenId(this.network,this.chain).address:e).unwrap();try{return await this.getTokenInfo(r)!==null}catch(n){console.error(n)}return!1}async getTokenInfo(e){var o;const r=await this.getFields(),i=new ge(r.registered_tokens.type).getPackageId(),s=r.registered_tokens.fields.id.id,c=new ge(e),a=pr(ar,c.unwrap())?ar:c.getCoinType();try{const d=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${i}::registered_tokens::Key<${a}>`,value:{dummy_field:!1}}});if(d.error)throw new Error("Failed to get token info: "+JSON.stringify(d.error));if(!d.data||!d.data.content)throw new Error("Failed to get token info: "+JSON.stringify(d));const{content:u}=d.data;return H(u)&&H(u.fields.value)?u.fields.value.fields:null}catch(d){if((d==null?void 0:d.code)===-32e3&&((o=d.message)!=null&&o.includes("RPC Error")))return console.error(d),null;throw d}}async getFields(){if(!this.fields){const e=await tt(this.connection,this.tokenBridgeRelayerObjectId);if(e===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=e}return this.fields}async getPackageId(){const e=await this.getFields();return new ge(e.registered_tokens.type).getPackageId()}async getPackageIds(){const[e,r]=await Promise.all([He(this.connection,this.coreBridgeObjectId),He(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:e,tokenBridge:r}}createUnsignedTx(e,r,n=!1){return new yr(e,this.network,this.chain,r,n)}}gr("Sui","TokenBridge",er);gr("Sui","AutomaticTokenBridge",tr);export{tr as SuiAutomaticTokenBridge,er as SuiTokenBridge,Je as getTokenCoinType,fr as getTokenFromTokenRegistry};
@@ -0,0 +1,5 @@
1
+ var Er=Object.defineProperty;var xr=(e,t,r)=>t in e?Er(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r;var F=(e,t,r)=>xr(e,typeof t!="symbol"?t+"":t,r);import{s as Ir,az as jr,d5 as Or,cf as Ar,cd as kr,ce as Bt,ae as _r,cg as Rt,c3 as Cr}from"../main.js";import{S as Nt,u as Pt}from"./sui-DVNpNCUB.js";import{S as $r}from"./unsignedTransaction-arVvzoJx.js";import"./pbkdf2-DaCbRHcv.js";class Mr extends TypeError{constructor(t,r){let n;const{message:i,explanation:s,...a}=t,{path:o}=t,u=o.length===0?i:`At path: ${o.join(".")} -- ${i}`;super(s??u),s!=null&&(this.cause=u),Object.assign(this,a),this.name=this.constructor.name,this.failures=()=>n??(n=[t,...r()])}}function Ur(e){return z(e)&&typeof e[Symbol.iterator]=="function"}function z(e){return typeof e=="object"&&e!=null}function V(e){return typeof e=="symbol"?e.toString():typeof e=="string"?JSON.stringify(e):`${e}`}function Br(e){const{done:t,value:r}=e.next();return t?void 0:r}function Rr(e,t,r,n){if(e===!0)return;e===!1?e={}:typeof e=="string"&&(e={message:e});const{path:i,branch:s}=t,{type:a}=r,{refinement:o,message:u=`Expected a value of type \`${a}\`${o?` with refinement \`${o}\``:""}, but received: \`${V(n)}\``}=e;return{value:n,type:a,refinement:o,key:i[i.length-1],path:i,branch:s,...e,message:u}}function*Dt(e,t,r,n){Ur(e)||(e=[e]);for(const i of e){const s=Rr(i,t,r,n);s&&(yield s)}}function*nt(e,t,r={}){const{path:n=[],branch:i=[e],coerce:s=!1,mask:a=!1}=r,o={path:n,branch:i};if(s&&(e=t.coercer(e,o),a&&t.type!=="type"&&z(t.schema)&&z(e)&&!Array.isArray(e)))for(const d in e)t.schema[d]===void 0&&delete e[d];let u="valid";for(const d of t.validator(e,o))d.explanation=r.message,u="not_valid",yield[d,void 0];for(let[d,l,g]of t.entries(e,o)){const m=nt(l,g,{path:d===void 0?n:[...n,d],branch:d===void 0?i:[...i,l],coerce:s,mask:a,message:r.message});for(const p of m)p[0]?(u=p[0].refinement!=null?"not_refined":"not_valid",yield[p[0],void 0]):s&&(l=p[1],d===void 0?e=l:e instanceof Map?e.set(d,l):e instanceof Set?e.add(l):z(e)&&(l!==void 0||d in e)&&(e[d]=l))}if(u!=="not_valid")for(const d of t.refiner(e,o))d.explanation=r.message,u="not_refined",yield[d,void 0];u==="valid"&&(yield[void 0,e])}class Z{constructor(t){const{type:r,schema:n,validator:i,refiner:s,coercer:a=u=>u,entries:o=function*(){}}=t;this.type=r,this.schema=n,this.entries=o,this.coercer=a,i?this.validator=(u,d)=>{const l=i(u,d);return Dt(l,d,this,u)}:this.validator=()=>[],s?this.refiner=(u,d)=>{const l=s(u,d);return Dt(l,d,this,u)}:this.refiner=()=>[]}assert(t,r){return qe(t,this,r)}create(t,r){return Lt(t,this,r)}is(t){return N(t,this)}mask(t,r){return Kt(t,this,r)}validate(t,r={}){return Ee(t,this,r)}}function qe(e,t,r){const n=Ee(e,t,{message:r});if(n[0])throw n[0]}function Lt(e,t,r){const n=Ee(e,t,{coerce:!0,message:r});if(n[0])throw n[0];return n[1]}function Kt(e,t,r){const n=Ee(e,t,{coerce:!0,mask:!0,message:r});if(n[0])throw n[0];return n[1]}function N(e,t){return!Ee(e,t)[0]}function Ee(e,t,r={}){const n=nt(e,t,r),i=Br(n);return i[0]?[new Mr(i[0],function*(){for(const a of n)a[0]&&(yield a[0])}),void 0]:[void 0,i[1]]}function we(...e){const t=e[0].type==="type",r=e.map(i=>i.schema),n=Object.assign({},...r);return t?Pr(n):h(n)}function P(e,t){return new Z({type:e,schema:null,validator:t})}function Ze(){return P("any",()=>!0)}function v(e){return new Z({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[r,n]of t.entries())yield[r,n,e]},coercer(t){return Array.isArray(t)?t.slice():t},validator(t){return Array.isArray(t)||`Expected an array value, but received: ${V(t)}`}})}function Nr(){return P("bigint",e=>typeof e=="bigint")}function U(){return P("boolean",e=>typeof e=="boolean")}function q(){return P("integer",e=>typeof e=="number"&&!isNaN(e)&&Number.isInteger(e)||`Expected an integer, but received: ${V(e)}`)}function b(e){const t=V(e),r=typeof e;return new Z({type:"literal",schema:r==="string"||r==="number"||r==="boolean"?e:null,validator(n){return n===e||`Expected the literal \`${t}\`, but received: ${V(n)}`}})}function Wt(){return P("never",()=>!1)}function O(e){return new Z({...e,validator:(t,r)=>t===null||e.validator(t,r),refiner:(t,r)=>t===null||e.refiner(t,r)})}function ue(){return P("number",e=>typeof e=="number"&&!isNaN(e)||`Expected a number, but received: ${V(e)}`)}function h(e){const t=e?Object.keys(e):[],r=Wt();return new Z({type:"object",schema:e||null,*entries(n){if(e&&z(n)){const i=new Set(Object.keys(n));for(const s of t)i.delete(s),yield[s,n[s],e[s]];for(const s of i)yield[s,n[s],r]}},validator(n){return z(n)||`Expected an object, but received: ${V(n)}`},coercer(n){return z(n)?{...n}:n}})}function w(e){return new Z({...e,validator:(t,r)=>t===void 0||e.validator(t,r),refiner:(t,r)=>t===void 0||e.refiner(t,r)})}function H(e,t){return new Z({type:"record",schema:null,*entries(r){if(z(r))for(const n in r){const i=r[n];yield[n,n,e],yield[n,i,t]}},validator(r){return z(r)||`Expected an object, but received: ${V(r)}`}})}function f(){return P("string",e=>typeof e=="string"||`Expected a string, but received: ${V(e)}`)}function Jt(e){const t=Wt();return new Z({type:"tuple",schema:null,*entries(r){if(Array.isArray(r)){const n=Math.max(e.length,r.length);for(let i=0;i<n;i++)yield[i,r[i],e[i]||t]}},validator(r){return Array.isArray(r)||`Expected an array, but received: ${V(r)}`}})}function Pr(e){const t=Object.keys(e);return new Z({type:"type",schema:e,*entries(r){if(z(r))for(const n of t)yield[n,r[n],e[n]]},validator(r){return z(r)||`Expected an object, but received: ${V(r)}`},coercer(r){return z(r)?{...r}:r}})}function k(e){const t=e.map(r=>r.type).join(" | ");return new Z({type:"union",schema:null,coercer(r){for(const n of e){const[i,s]=n.validate(r,{coerce:!0});if(!i)return s}return r},validator(r,n){const i=[];for(const s of e){const[...a]=nt(r,s,n),[o]=a;if(o[0])for(const[u]of a)u&&i.push(u);else return[]}return[`Expected the value to satisfy a union of \`${t}\`, but received: ${V(r)}`,...i]}})}function Ht(){return P("unknown",()=>!0)}const it=k([h({AddressOwner:f()}),h({ObjectOwner:f()}),h({Shared:h({initial_shared_version:O(f())})}),b("Immutable")]);P("SuiJsonValue",()=>!0);const Dr=k([h({u32:f()}),h({u64:f()}),h({f64:f()})]);h({attributes:H(f(),O(Dr)),featureFlags:H(f(),U()),maxSupportedProtocolVersion:f(),minSupportedProtocolVersion:f(),protocolVersion:f()});k([f(),b("package")]);const se=h({digest:f(),objectId:f(),version:k([ue(),f(),Nr()])});h({owner:it,reference:se});h({objectId:f(),sequenceNumber:f()});h({payment:v(se),owner:f(),price:f(),budget:f()});const zr=we(se,h({type:f(),owner:it,previousTransaction:f()})),Vr=H(f(),Ze()),Gr=H(f(),Ht()),Fr=h({type:f(),fields:Vr,hasPublicTransfer:U()}),Lr=h({disassembled:Gr}),Kr=k([we(Fr,h({dataType:b("moveObject")})),we(Lr,h({dataType:b("package")}))]),Wr=h({type:f(),hasPublicTransfer:U(),version:f(),bcsBytes:f()}),Jr=h({id:f(),moduleMap:H(f(),f())}),Hr=k([we(Wr,h({dataType:b("moveObject")})),we(Jr,h({dataType:b("package")}))]);BigInt(1e9);const Xt=h({code:f(),error:w(f()),object_id:w(f()),parent_object_id:w(f()),version:w(f()),digest:w(f())}),Xr=h({data:O(w(H(f(),f()))),error:O(w(Xt))}),qr=k([Xr,w(H(f(),f()))]),qt=h({objectId:f(),version:f(),digest:f(),type:O(w(f())),content:O(w(Kr)),bcs:O(w(Hr)),owner:O(w(it)),previousTransaction:O(w(f())),storageRebate:O(w(f())),display:O(w(qr))});h({showType:O(w(U())),showContent:O(w(U())),showBcs:O(w(U())),showOwner:O(w(U())),showPreviousTransaction:O(w(U())),showStorageRebate:O(w(U())),showDisplay:O(w(U()))});k([b("Exists"),b("notExists"),b("Deleted")]);v(zr);const Zr=h({data:O(w(qt)),error:O(w(Xt))});function Yr(e){return e.data}function Qr(e){if(e.error&&"object_id"in e.error&&"version"in e.error&&"digest"in e.error){const t=e.error;return{objectId:t.object_id,version:t.version,digest:t.digest}}}function zt(e){if("reference"in e)return e.reference;const t=Yr(e);return t?{objectId:t.objectId,version:t.version,digest:t.digest}:Qr(e)}h({objectId:f(),atCheckpoint:w(ue())});h({data:v(Zr),nextCursor:w(O(f())),hasNextPage:U()});k([h({details:qt,status:b("VersionFound")}),h({details:f(),status:b("ObjectNotExists")}),h({details:se,status:b("ObjectDeleted")}),h({details:Jt([f(),ue()]),status:b("VersionNotFound")}),h({details:h({asked_version:ue(),latest_version:ue(),object_id:f()}),status:b("VersionTooHigh")})]);const en=k([f(),h({Object:f()})]);v(en);const tn=h({address:f(),name:f()}),rn=k([b("Private"),b("Public"),b("Friend")]),st=h({abilities:v(f())}),nn=h({constraints:st,isPhantom:U()}),sn=h({TypeParameter:ue()}),Ge=Jt([h({module:f(),package:f(),function:f()}),f()]);h({rank3Days:v(Ge),rank7Days:v(Ge),rank30Days:v(Ge)});function Zt(e){if(!e)return!1;if(typeof e=="string"||N(e,sn)||Yt(e))return!0;if(typeof e!="object")return!1;const t=e;return!!(N(t.Reference,le)||N(t.MutableReference,le)||N(t.Vector,le))}const le=P("SuiMoveNormalizedType",Zt);function Yt(e){if(!e||typeof e!="object")return!1;const t=e;if(!t.Struct||typeof t.Struct!="object")return!1;const r=t.Struct;return!(typeof r.address!="string"||typeof r.module!="string"||typeof r.name!="string"||!Array.isArray(r.typeArguments)||!r.typeArguments.every(n=>Zt(n)))}P("SuiMoveNormalizedStructType",Yt);const an=h({visibility:rn,isEntry:U(),typeParameters:v(st),parameters:v(le),return:v(le)}),on=h({name:f(),type:le}),cn=h({abilities:st,typeParameters:v(nn),fields:v(on)}),un=h({fileFormatVersion:ue(),address:f(),name:f(),friends:v(tn),structs:H(f(),cn),exposedFunctions:H(f(),an)});H(f(),un);function Ye(e){return typeof e=="object"&&"MutableReference"in e?e.MutableReference:void 0}function Qt(e){return typeof e=="object"&&"Reference"in e?e.Reference:void 0}function at(e){if(typeof e=="object"&&"Struct"in e)return e;const t=Qt(e),r=Ye(e);if(typeof t=="object"&&"Struct"in t)return t;if(typeof r=="object"&&"Struct"in r)return r}function dn(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),r=0;r<t.length;r++)t[r]=255;for(var n=0;n<e.length;n++){var i=e.charAt(n),s=i.charCodeAt(0);if(t[s]!==255)throw new TypeError(i+" is ambiguous");t[s]=n}var a=e.length,o=e.charAt(0),u=Math.log(a)/Math.log(256),d=Math.log(256)/Math.log(a);function l(p){if(p instanceof Uint8Array||(ArrayBuffer.isView(p)?p=new Uint8Array(p.buffer,p.byteOffset,p.byteLength):Array.isArray(p)&&(p=Uint8Array.from(p))),!(p instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(p.length===0)return"";for(var y=0,S=0,E=0,A=p.length;E!==A&&p[E]===0;)E++,y++;for(var _=(A-E)*d+1>>>0,D=new Uint8Array(_);E!==A;){for(var X=p[E],ne=0,G=_-1;(X!==0||ne<S)&&G!==-1;G--,ne++)X+=256*D[G]>>>0,D[G]=X%a>>>0,X=X/a>>>0;if(X!==0)throw new Error("Non-zero carry");S=ne,E++}for(var Y=_-S;Y!==_&&D[Y]===0;)Y++;for(var Oe=o.repeat(y);Y<_;++Y)Oe+=e.charAt(D[Y]);return Oe}function g(p){if(typeof p!="string")throw new TypeError("Expected String");if(p.length===0)return new Uint8Array;for(var y=0,S=0,E=0;p[y]===o;)S++,y++;for(var A=(p.length-y)*u+1>>>0,_=new Uint8Array(A);p[y];){var D=t[p.charCodeAt(y)];if(D===255)return;for(var X=0,ne=A-1;(D!==0||X<E)&&ne!==-1;ne--,X++)D+=a*_[ne]>>>0,_[ne]=D%256>>>0,D=D/256>>>0;if(D!==0)throw new Error("Non-zero carry");E=X,y++}for(var G=A-E;G!==A&&_[G]===0;)G++;for(var Y=new Uint8Array(S+(A-G)),Oe=S;G!==A;)Y[Oe++]=_[G++];return Y}function m(p){var y=g(p);if(y)return y;throw new Error("Non-base"+a+" character")}return{encode:l,decodeUnsafe:g,decode:m}}var fn=dn;const ln=fn,hn="123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz";var gn=ln(hn);const er=Ir(gn),xe=e=>er.encode(e),ot=e=>er.decode(e);function ae(e){return Uint8Array.from(atob(e),t=>t.charCodeAt(0))}const Fe=8192;function Ie(e){if(e.length<Fe)return btoa(String.fromCharCode(...e));let t="";for(var r=0;r<e.length;r+=Fe){const n=e.slice(r,r+Fe);t+=String.fromCharCode(...n)}return btoa(t)}function Ve(e){var i;const t=e.startsWith("0x")?e.slice(2):e,n=((i=(t.length%2===0?t:`0${t}}`).match(/.{2}/g))==null?void 0:i.map(s=>parseInt(s,16)))??[];return Uint8Array.from(n)}function je(e){return e.reduce((t,r)=>t+r.toString(16).padStart(2,"0"),"")}function ct(e){let t=[],r=0;if(e===0)return[0];for(;e>0;)t[r]=e&127,(e>>=7)&&(t[r]|=128),r+=1;return t}function pn(e){let t=0,r=0,n=0;for(;;){let i=e[n];if(n+=1,t|=(i&127)<<r,!(i&128))break;r+=7}return{value:t,length:n}}class tr{constructor(t){this.bytePosition=0,this.dataView=new DataView(t.buffer)}shift(t){return this.bytePosition+=t,this}read8(){let t=this.dataView.getUint8(this.bytePosition);return this.shift(1),t}read16(){let t=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),t}read32(){let t=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),t}read64(){let t=this.read32(),n=this.read32().toString(16)+t.toString(16).padStart(8,"0");return BigInt("0x"+n).toString(10)}read128(){let t=BigInt(this.read64()),n=BigInt(this.read64()).toString(16)+t.toString(16).padStart(16,"0");return BigInt("0x"+n).toString(10)}read256(){let t=BigInt(this.read128()),n=BigInt(this.read128()).toString(16)+t.toString(16).padStart(32,"0");return BigInt("0x"+n).toString(10)}readBytes(t){let r=this.bytePosition+this.dataView.byteOffset,n=new Uint8Array(this.dataView.buffer,r,t);return this.shift(t),n}readULEB(){let t=this.bytePosition+this.dataView.byteOffset,r=new Uint8Array(this.dataView.buffer,t),{value:n,length:i}=pn(r);return this.shift(i),n}readVec(t){let r=this.readULEB(),n=[];for(let i=0;i<r;i++)n.push(t(this,i,r));return n}}function mn(e,t){switch(t){case"base58":return xe(e);case"base64":return Ie(e);case"hex":return je(e);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function yn(e,t){switch(t){case"base58":return ot(e);case"base64":return ae(e);case"hex":return Ve(e);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function rr(e,t=["<",">"]){const[r,n]=t,i=[];let s="",a=0;for(let o=0;o<e.length;o++){const u=e[o];if(u===r&&a++,u===n&&a--,a===0&&u===","){i.push(s.trim()),s="";continue}s+=u}return i.push(s.trim()),i}class nr{constructor({size:t=1024,maxSize:r,allocateSize:n=1024}={}){this.bytePosition=0,this.size=t,this.maxSize=r||t,this.allocateSize=n,this.dataView=new DataView(new ArrayBuffer(t))}ensureSizeOrGrow(t){const r=this.bytePosition+t;if(r>this.size){const n=Math.min(this.maxSize,this.size+this.allocateSize);if(r>n)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${r}`);this.size=n;const i=new ArrayBuffer(this.size);new Uint8Array(i).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(i)}}shift(t){return this.bytePosition+=t,this}write8(t){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(t)),this.shift(1)}write16(t){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(t),!0),this.shift(2)}write32(t){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(t),!0),this.shift(4)}write64(t){return Le(BigInt(t),8).forEach(r=>this.write8(r)),this}write128(t){return Le(BigInt(t),16).forEach(r=>this.write8(r)),this}write256(t){return Le(BigInt(t),32).forEach(r=>this.write8(r)),this}writeULEB(t){return ct(t).forEach(r=>this.write8(r)),this}writeVec(t,r){return this.writeULEB(t.length),Array.from(t).forEach((n,i)=>r(this,n,i,t.length)),this}*[Symbol.iterator](){for(let t=0;t<this.bytePosition;t++)yield this.dataView.getUint8(t);return this.toBytes()}toBytes(){return new Uint8Array(this.dataView.buffer.slice(0,this.bytePosition))}toString(t){return mn(this.toBytes(),t)}}function Le(e,t){let r=new Uint8Array(t),n=0;for(;e>0;)r[n]=Number(e%BigInt(256)),e=e/BigInt(256),n+=1;return r}var ir=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)},K=(e,t,r)=>(ir(e,t,"read from private field"),r?r.call(e):t.get(e)),Be=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},Re=(e,t,r,n)=>(ir(e,t,"write to private field"),t.set(e,r),r),fe,ge,Ce,ie;const sr=class{constructor(e){Be(this,fe,void 0),Be(this,ge,void 0),this.name=e.name,this.read=e.read,this.serializedSize=e.serializedSize??(()=>null),Re(this,fe,e.write),Re(this,ge,e.serialize??((t,r)=>{const n=new nr({size:this.serializedSize(t)??void 0,...r});return K(this,fe).call(this,t,n),n.toBytes()})),this.validate=e.validate??(()=>{})}write(e,t){this.validate(e),K(this,fe).call(this,e,t)}serialize(e,t){return this.validate(e),new wn(this,K(this,ge).call(this,e,t))}parse(e){const t=new tr(e);return this.read(t)}transform({name:e,input:t,output:r}){return new sr({name:e??this.name,read:n=>r(this.read(n)),write:(n,i)=>K(this,fe).call(this,t(n),i),serializedSize:n=>this.serializedSize(t(n)),serialize:(n,i)=>K(this,ge).call(this,t(n),i),validate:n=>this.validate(t(n))})}};let W=sr;fe=new WeakMap;ge=new WeakMap;const ar=Symbol.for("@mysten/serialized-bcs");function ut(e){return!!e&&typeof e=="object"&&e[ar]===!0}class wn{constructor(t,r){Be(this,Ce,void 0),Be(this,ie,void 0),Re(this,Ce,t),Re(this,ie,r)}get[ar](){return!0}toBytes(){return K(this,ie)}toHex(){return je(K(this,ie))}toBase64(){return Ie(K(this,ie))}toBase58(){return xe(K(this,ie))}parse(){return K(this,Ce).parse(K(this,ie))}}Ce=new WeakMap;ie=new WeakMap;function Ne({size:e,...t}){return new W({...t,serializedSize:()=>e})}function Ke({readMethod:e,writeMethod:t,...r}){return Ne({...r,read:n=>n[e](),write:(n,i)=>i[t](n),validate:n=>{var i;if(n<0||n>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${n}. Expected value in range 0-${r.maxValue}`);(i=r.validate)==null||i.call(r,n)}})}function We({readMethod:e,writeMethod:t,...r}){return Ne({...r,read:n=>n[e](),write:(n,i)=>i[t](BigInt(n)),validate:n=>{var s;const i=BigInt(n);if(i<0||i>r.maxValue)throw new TypeError(`Invalid ${r.name} value: ${i}. Expected value in range 0-${r.maxValue}`);(s=r.validate)==null||s.call(r,i)}})}function bn({serialize:e,...t}){const r=new W({...t,serialize:e,write:(n,i)=>{for(const s of r.serialize(n).toBytes())i.write8(s)}});return r}function Sn({toBytes:e,fromBytes:t,...r}){return new W({...r,read:n=>{const i=n.readULEB(),s=n.readBytes(i);return t(s)},write:(n,i)=>{const s=e(n);i.writeULEB(s.length);for(let a=0;a<s.length;a++)i.write8(s[a])},serialize:n=>{const i=e(n),s=ct(i.length),a=new Uint8Array(s.length+i.length);return a.set(s,0),a.set(i,s.length),a},validate:n=>{var i;if(typeof n!="string")throw new TypeError(`Invalid ${r.name} value: ${n}. Expected string`);(i=r.validate)==null||i.call(r,n)}})}function Tn(e){let t=null;function r(){return t||(t=e()),t}return new W({name:"lazy",read:n=>r().read(n),serializedSize:n=>r().serializedSize(n),write:(n,i)=>r().write(n,i),serialize:(n,i)=>r().serialize(n,i).toBytes()})}const c={u8(e){return Ke({name:"u8",readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...e})},u16(e){return Ke({name:"u16",readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...e})},u32(e){return Ke({name:"u32",readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...e})},u64(e){return We({name:"u64",readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...e})},u128(e){return We({name:"u128",readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...e})},u256(e){return We({name:"u256",readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...e})},bool(e){return Ne({name:"bool",size:1,read:t=>t.read8()===1,write:(t,r)=>r.write8(t?1:0),...e,validate:t=>{var r;if((r=e==null?void 0:e.validate)==null||r.call(e,t),typeof t!="boolean")throw new TypeError(`Expected boolean, found ${typeof t}`)}})},uleb128(e){return bn({name:"uleb128",read:t=>t.readULEB(),serialize:t=>Uint8Array.from(ct(t)),...e})},bytes(e,t){return Ne({name:`bytes[${e}]`,size:e,read:r=>r.readBytes(e),write:(r,n)=>{for(let i=0;i<e;i++)n.write8(r[i]??0)},...t,validate:r=>{var n;if((n=t==null?void 0:t.validate)==null||n.call(t,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==e)throw new TypeError(`Expected array of length ${e}, found ${r.length}`)}})},string(e){return Sn({name:"string",toBytes:t=>new TextEncoder().encode(t),fromBytes:t=>new TextDecoder().decode(t),...e})},fixedArray(e,t,r){return new W({name:`${t.name}[${e}]`,read:n=>{const i=new Array(e);for(let s=0;s<e;s++)i[s]=t.read(n);return i},write:(n,i)=>{for(const s of n)t.write(s,i)},...r,validate:n=>{var i;if((i=r==null?void 0:r.validate)==null||i.call(r,n),!("length"in n))throw new TypeError(`Expected array, found ${typeof n}`);if(n.length!==e)throw new TypeError(`Expected array of length ${e}, found ${n.length}`)}})},option(e){return c.enum(`Option<${e.name}>`,{None:null,Some:e}).transform({input:t=>t==null?{None:!0}:{Some:t},output:t=>"Some"in t?t.Some:null})},vector(e,t){return new W({name:`vector<${e.name}>`,read:r=>{const n=r.readULEB(),i=new Array(n);for(let s=0;s<n;s++)i[s]=e.read(r);return i},write:(r,n)=>{n.writeULEB(r.length);for(const i of r)e.write(i,n)},...t,validate:r=>{var n;if((n=t==null?void 0:t.validate)==null||n.call(t,r),!("length"in r))throw new TypeError(`Expected array, found ${typeof r}`)}})},tuple(e,t){return new W({name:`(${e.map(r=>r.name).join(", ")})`,serializedSize:r=>{let n=0;for(let i=0;i<e.length;i++){const s=e[i].serializedSize(r[i]);if(s==null)return null;n+=s}return n},read:r=>{const n=[];for(const i of e)n.push(i.read(r));return n},write:(r,n)=>{for(let i=0;i<e.length;i++)e[i].write(r[i],n)},...t,validate:r=>{var n;if((n=t==null?void 0:t.validate)==null||n.call(t,r),!Array.isArray(r))throw new TypeError(`Expected array, found ${typeof r}`);if(r.length!==e.length)throw new TypeError(`Expected array of length ${e.length}, found ${r.length}`)}})},struct(e,t,r){const n=Object.entries(t);return new W({name:e,serializedSize:i=>{let s=0;for(const[a,o]of n){const u=o.serializedSize(i[a]);if(u==null)return null;s+=u}return s},read:i=>{const s={};for(const[a,o]of n)s[a]=o.read(i);return s},write:(i,s)=>{for(const[a,o]of n)o.write(i[a],s)},...r,validate:i=>{var s;if((s=r==null?void 0:r.validate)==null||s.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})},enum(e,t,r){const n=Object.entries(t);return new W({name:e,read:i=>{const s=i.readULEB(),[a,o]=n[s];return{[a]:(o==null?void 0:o.read(i))??!0}},write:(i,s)=>{const[a,o]=Object.entries(i)[0];for(let u=0;u<n.length;u++){const[d,l]=n[u];if(d===a){s.writeULEB(u),l==null||l.write(o,s);return}}},...r,validate:i=>{var o;if((o=r==null?void 0:r.validate)==null||o.call(r,i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`);const s=Object.keys(i);if(s.length!==1)throw new TypeError(`Expected object with one key, found ${s.length}`);const[a]=s;if(!Object.hasOwn(t,a))throw new TypeError(`Invalid enum variant ${a}`)}})},map(e,t){return c.vector(c.tuple([e,t])).transform({name:`Map<${e.name}, ${t.name}>`,input:r=>[...r.entries()],output:r=>{const n=new Map;for(const[i,s]of r)n.set(i,s);return n}})},generic(e,t){return(...r)=>t(...r).transform({name:`${t.name}<${r.map(n=>n.name).join(", ")}>`,input:n=>n,output:n=>n})},lazy(e){return Tn(e)}},vn=32,pe=class{constructor(e){if(this.types=new Map,this.counter=0,e instanceof pe){this.schema=e.schema,this.types=new Map(e.types);return}if(this.schema=e,this.registerAddressType(pe.ADDRESS,e.addressLength,e.addressEncoding),this.registerVectorType(e.vectorType),e.types&&e.types.structs)for(let t of Object.keys(e.types.structs))this.registerStructType(t,e.types.structs[t]);if(e.types&&e.types.enums)for(let t of Object.keys(e.types.enums))this.registerEnumType(t,e.types.enums[t]);if(e.types&&e.types.aliases)for(let t of Object.keys(e.types.aliases))this.registerAlias(t,e.types.aliases[t]);e.withPrimitives!==!1&&En(this)}tempKey(){return`bcs-struct-${++this.counter}`}ser(e,t,r){if(typeof e=="string"||Array.isArray(e)){const{name:n,params:i}=this.parseTypeName(e);return this.getTypeInterface(n).encode(this,t,r,i)}if(typeof e=="object"){const n=this.tempKey();return new pe(this).registerStructType(n,e).ser(n,t,r)}throw new Error(`Incorrect type passed into the '.ser()' function.
2
+ ${JSON.stringify(e)}`)}de(e,t,r){if(typeof t=="string")if(r)t=yn(t,r);else throw new Error("To pass a string to `bcs.de`, specify encoding");if(typeof e=="string"||Array.isArray(e)){const{name:n,params:i}=this.parseTypeName(e);return this.getTypeInterface(n).decode(this,t,i)}if(typeof e=="object"){const n=new pe(this),i=this.tempKey();return n.registerStructType(i,e).de(i,t,r)}throw new Error(`Incorrect type passed into the '.de()' function.
3
+ ${JSON.stringify(e)}`)}hasType(e){return this.types.has(e)}registerAlias(e,t){return this.types.set(e,t),this}registerType(e,t,r,n=()=>!0){const{name:i,params:s}=this.parseTypeName(e);return this.types.set(i,{encode(a,o,u,d){const l=s.reduce((g,m,p)=>Object.assign(g,{[m]:d[p]}),{});return this._encodeRaw.call(a,new nr(u),o,d,l)},decode(a,o,u){const d=s.reduce((l,g,m)=>Object.assign(l,{[g]:u[m]}),{});return this._decodeRaw.call(a,new tr(o),u,d)},_encodeRaw(a,o,u,d){if(n(o))return t.call(this,a,o,u,d);throw new Error(`Validation failed for type ${i}, data: ${o}`)},_decodeRaw(a,o,u){return r.call(this,a,o,u)}}),this}registerBcsType(e,t){return this.registerType(e,(r,n,i)=>{const s=i.map(a=>new W({name:String(a),write:(o,u)=>{const{name:d,params:l}=this.parseTypeName(a),g=this.getTypeInterface(d),m=l.reduce((p,y,S)=>Object.assign(p,{[y]:i[S]}),{});return g._encodeRaw.call(this,u,o,l,m)},read:()=>{throw new Error("Not implemented")}}));return t(...s).write(n,r),r},(r,n)=>{const i=n.map(s=>new W({name:String(s),write:(a,o)=>{throw new Error("Not implemented")},read:a=>{const{name:o,params:u}=this.parseTypeName(s),d=this.getTypeInterface(o),l=u.reduce((g,m,p)=>Object.assign(g,{[m]:n[p]}),{});return d._decodeRaw.call(this,a,u,l)}}));return t(...i).read(r)}),this}registerAddressType(e,t,r="hex"){switch(r){case"base64":return this.registerType(e,function(i,s){return ae(s).reduce((a,o)=>a.write8(o),i)},function(i){return Ie(i.readBytes(t))});case"hex":return this.registerType(e,function(i,s){return Ve(s).reduce((a,o)=>a.write8(o),i)},function(i){return je(i.readBytes(t))});default:throw new Error("Unsupported encoding! Use either hex or base64")}}registerVectorType(e){let{name:t,params:r}=this.parseTypeName(e);if(r.length>1)throw new Error("Vector can have only one type parameter; got "+t);return this.registerType(e,function(i,s,a,o){return i.writeVec(s,(u,d)=>{let l=a[0];if(!l)throw new Error(`Incorrect number of type parameters passed a to vector '${e}'`);let{name:g,params:m}=this.parseTypeName(l);if(this.hasType(g))return this.getTypeInterface(g)._encodeRaw.call(this,u,d,m,o);if(!(g in o))throw new Error(`Unable to find a matching type definition for ${g} in vector; make sure you passed a generic`);let{name:p,params:y}=this.parseTypeName(o[g]);return this.getTypeInterface(p)._encodeRaw.call(this,u,d,y,o)})},function(i,s,a){return i.readVec(o=>{let u=s[0];if(!u)throw new Error(`Incorrect number of type parameters passed to a vector '${e}'`);let{name:d,params:l}=this.parseTypeName(u);if(this.hasType(d))return this.getTypeInterface(d)._decodeRaw.call(this,o,l,a);if(!(d in a))throw new Error(`Unable to find a matching type definition for ${d} in vector; make sure you passed a generic`);let{name:g,params:m}=this.parseTypeName(a[d]);return this.getTypeInterface(g)._decodeRaw.call(this,o,m,a)})})}registerStructType(e,t){for(let a in t){let o=this.tempKey(),u=t[a];!Array.isArray(u)&&typeof u!="string"&&(t[a]=o,this.registerStructType(o,u))}let r=Object.freeze(t),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(e);return this.registerType(e,function(o,u,d,l){if(!u||u.constructor!==Object)throw new Error(`Expected ${i} to be an Object, got: ${u}`);if(d.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${d.length}`);for(let g of n){if(!(g in u))throw new Error(`Struct ${i} requires field ${g}:${r[g]}`);const{name:m,params:p}=this.parseTypeName(r[g]);if(!s.includes(m))this.getTypeInterface(m)._encodeRaw.call(this,o,u[g],p,l);else{const y=s.indexOf(m);let{name:S,params:E}=this.parseTypeName(d[y]);if(this.hasType(S)){this.getTypeInterface(S)._encodeRaw.call(this,o,u[g],E,l);continue}if(!(S in l))throw new Error(`Unable to find a matching type definition for ${S} in ${i}; make sure you passed a generic`);let{name:A,params:_}=this.parseTypeName(l[S]);this.getTypeInterface(A)._encodeRaw.call(this,o,u[g],_,l)}}return o},function(o,u,d){if(u.length!==s.length)throw new Error(`Incorrect number of generic parameters passed; expected: ${s.length}, got: ${u.length}`);let l={};for(let g of n){const{name:m,params:p}=this.parseTypeName(r[g]);if(!s.includes(m))l[g]=this.getTypeInterface(m)._decodeRaw.call(this,o,p,d);else{const y=s.indexOf(m);let{name:S,params:E}=this.parseTypeName(u[y]);if(this.hasType(S)){l[g]=this.getTypeInterface(S)._decodeRaw.call(this,o,E,d);continue}if(!(S in d))throw new Error(`Unable to find a matching type definition for ${S} in ${i}; make sure you passed a generic`);let{name:A,params:_}=this.parseTypeName(d[S]);l[g]=this.getTypeInterface(A)._decodeRaw.call(this,o,_,d)}}return l})}registerEnumType(e,t){for(let a in t){let o=this.tempKey(),u=t[a];u!==null&&!Array.isArray(u)&&typeof u!="string"&&(t[a]=o,this.registerStructType(o,u))}let r=Object.freeze(t),n=Object.keys(r),{name:i,params:s}=this.parseTypeName(e);return this.registerType(e,function(o,u,d,l){if(!u)throw new Error(`Unable to write enum "${i}", missing data.
4
+ Received: "${u}"`);if(typeof u!="object")throw new Error(`Incorrect data passed into enum "${i}", expected object with properties: "${n.join(" | ")}".
5
+ Received: "${JSON.stringify(u)}"`);let g=Object.keys(u)[0];if(g===void 0)throw new Error(`Empty object passed as invariant of the enum "${i}"`);let m=n.indexOf(g);if(m===-1)throw new Error(`Unknown invariant of the enum "${i}", allowed values: "${n.join(" | ")}"; received "${g}"`);let p=n[m],y=r[p];if(o.write8(m),y===null)return o;let S=s.indexOf(y),E=S===-1?y:d[S];{let{name:A,params:_}=this.parseTypeName(E);return this.getTypeInterface(A)._encodeRaw.call(this,o,u[g],_,l)}},function(o,u,d){let l=o.readULEB(),g=n[l],m=r[g];if(l===-1)throw new Error(`Decoding type mismatch, expected enum "${i}" invariant index, received "${l}"`);if(m===null)return{[g]:!0};let p=s.indexOf(m),y=p===-1?m:u[p];{let{name:S,params:E}=this.parseTypeName(y);return{[g]:this.getTypeInterface(S)._decodeRaw.call(this,o,E,d)}}})}getTypeInterface(e){let t=this.types.get(e);if(typeof t=="string"){let r=[];for(;typeof t=="string";){if(r.includes(t))throw new Error(`Recursive definition found: ${r.join(" -> ")} -> ${t}`);r.push(t),t=this.types.get(t)}}if(t===void 0)throw new Error(`Type ${e} is not registered`);return t}parseTypeName(e){if(Array.isArray(e)){let[o,...u]=e;return{name:o,params:u}}if(typeof e!="string")throw new Error(`Illegal type passed as a name of the type: ${e}`);let[t,r]=this.schema.genericSeparators||["<",">"],n=e.indexOf(t),i=Array.from(e).reverse().indexOf(r);if(n===-1&&i===-1)return{name:e,params:[]};if(n===-1||i===-1)throw new Error(`Unclosed generic in name '${e}'`);let s=e.slice(0,n),a=rr(e.slice(n+1,e.length-i-1),this.schema.genericSeparators);return{name:s,params:a}}};let j=pe;j.U8="u8";j.U16="u16";j.U32="u32";j.U64="u64";j.U128="u128";j.U256="u256";j.BOOL="bool";j.VECTOR="vector";j.ADDRESS="address";j.STRING="string";j.HEX="hex-string";j.BASE58="base58-string";j.BASE64="base64-string";function En(e){e.registerType(j.U8,function(t,r){return t.write8(r)},function(t){return t.read8()},t=>t<256),e.registerType(j.U16,function(t,r){return t.write16(r)},function(t){return t.read16()},t=>t<65536),e.registerType(j.U32,function(t,r){return t.write32(r)},function(t){return t.read32()},t=>t<=4294967296n),e.registerType(j.U64,function(t,r){return t.write64(r)},function(t){return t.read64()}),e.registerType(j.U128,function(t,r){return t.write128(r)},function(t){return t.read128()}),e.registerType(j.U256,function(t,r){return t.write256(r)},function(t){return t.read256()}),e.registerType(j.BOOL,function(t,r){return t.write8(r)},function(t){return t.read8().toString(10)==="1"}),e.registerType(j.STRING,function(t,r){return t.writeVec(Array.from(r),(n,i)=>n.write8(i.charCodeAt(0)))},function(t){return t.readVec(r=>r.read8()).map(r=>String.fromCharCode(Number(r))).join("")},t=>!0),e.registerType(j.HEX,function(t,r){return t.writeVec(Array.from(Ve(r)),(n,i)=>n.write8(i))},function(t){let r=t.readVec(n=>n.read8());return je(new Uint8Array(r))}),e.registerType(j.BASE58,function(t,r){return t.writeVec(Array.from(ot(r)),(n,i)=>n.write8(i))},function(t){let r=t.readVec(n=>n.read8());return xe(new Uint8Array(r))}),e.registerType(j.BASE64,function(t,r){return t.writeVec(Array.from(ae(r)),(n,i)=>n.write8(i))},function(t){let r=t.readVec(n=>n.read8());return Ie(new Uint8Array(r))})}function xn(){return{genericSeparators:["<",">"],vectorType:"vector",addressLength:vn,addressEncoding:"hex"}}const dt=32;function In(e){return jn(e)&&On(e)===dt}function M(e,t=!1){let r=e.toLowerCase();return!t&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(dt*2,"0")}`}function be(e,t=!1){return M(e,t)}function jn(e){return/^(0x|0X)?[a-fA-F0-9]+$/.test(e)&&e.length%2===0}function On(e){return/^(0x|0X)/.test(e)?(e.length-2)/2:e.length/2}BigInt(1e9);const ft="0x1",or="0x2";be("0x6");const An=`${or}::sui::SUI`;be("0x5");const kn="object",_n="ID",Cn="ascii",$n="String",Mn="string",Un="String",Bn="option",Rn="Option",Nn={address:or,module:kn,name:_n},Pn={address:ft,module:Cn,name:$n},Dn={address:ft,module:Mn,name:Un},zn={address:ft,module:Bn,name:Rn},Ae=(e,t)=>e.address===t.address&&e.module===t.module&&e.name===t.name;function Vn(e){var r;const t=(r=at(e))==null?void 0:r.Struct;return(t==null?void 0:t.address)==="0x2"&&(t==null?void 0:t.module)==="tx_context"&&(t==null?void 0:t.name)==="TxContext"}function Je(e,t){if(!(typeof t>"u")&&typeof t!==e)throw new Error(`Expect ${t} to be ${e}, received ${typeof t}`)}const Gn=["Address","Bool","U8","U16","U32","U64","U128","U256"];function Qe(e,t){if(typeof e=="string"&&Gn.includes(e)){if(e in["U8","U16","U32","U64","U128","U256"])Je("number",t);else if(e==="Bool")Je("boolean",t);else if(e==="Address"&&(Je("string",t),t&&!In(t)))throw new Error("Invalid Sui Address");return e.toLowerCase()}else if(typeof e=="string")throw new Error(`Unknown pure normalized type ${JSON.stringify(e,null,2)}`);if("Vector"in e){if((t===void 0||typeof t=="string")&&e.Vector==="U8")return"string";if(t!==void 0&&!Array.isArray(t))throw new Error(`Expect ${t} to be a array, received ${typeof t}`);const r=Qe(e.Vector,t?t[0]:void 0);return r===void 0?void 0:`vector<${r}>`}if("Struct"in e){if(Ae(e.Struct,Pn))return"string";if(Ae(e.Struct,Dn))return"utf8string";if(Ae(e.Struct,Nn))return"address";if(Ae(e.Struct,zn)){const r={Vector:e.Struct.typeArguments[0]};return Qe(r,t)}}}const Fn=/^vector<(.+)>$/,Ln=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class ee{static parseFromStr(t,r=!1){if(t==="address")return{address:null};if(t==="bool")return{bool:null};if(t==="u8")return{u8:null};if(t==="u16")return{u16:null};if(t==="u32")return{u32:null};if(t==="u64")return{u64:null};if(t==="u128")return{u128:null};if(t==="u256")return{u256:null};if(t==="signer")return{signer:null};const n=t.match(Fn);if(n)return{vector:ee.parseFromStr(n[1],r)};const i=t.match(Ln);if(i)return{struct:{address:r?M(i[1]):i[1],module:i[2],name:i[3],typeParams:i[5]===void 0?[]:ee.parseStructTypeArgs(i[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${t}`)}static parseStructTypeArgs(t,r=!1){return rr(t).map(n=>ee.parseFromStr(n,r))}static tagToString(t){if("bool"in t)return"bool";if("u8"in t)return"u8";if("u16"in t)return"u16";if("u32"in t)return"u32";if("u64"in t)return"u64";if("u128"in t)return"u128";if("u256"in t)return"u256";if("address"in t)return"address";if("signer"in t)return"signer";if("vector"in t)return`vector<${ee.tagToString(t.vector)}>`;if("struct"in t){const r=t.struct,n=r.typeParams.map(ee.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${n?`<${n}>`:""}`}throw new Error("Invalid TypeTag")}}const I=new j({...xn(),types:{enums:{"Option<T>":{None:null,Some:"T"}}}});function cr(e){return c.u64({name:"unsafe_u64",...e}).transform({input:t=>t,output:t=>Number(t)})}function Kn(e){return c.enum("Option",{None:null,Some:e})}function lt(e){return e.transform({input:t=>({[t.kind]:t}),output:t=>{const r=Object.keys(t)[0];return{kind:r,...t[r]}}})}const J=c.bytes(dt).transform({input:e=>typeof e=="string"?Ve(M(e)):e,output:e=>M(je(e))}),ht=c.vector(c.u8()).transform({name:"ObjectDigest",input:e=>ot(e),output:e=>xe(new Uint8Array(e))}),Se=c.struct("SuiObjectRef",{objectId:J,version:c.u64(),digest:ht}),gt=c.struct("SharedObjectRef",{objectId:J,initialSharedVersion:c.u64(),mutable:c.bool()}),Pe=c.enum("ObjectArg",{ImmOrOwned:Se,Shared:gt,Receiving:Se}),pt=c.enum("CallArg",{Pure:c.vector(c.u8()),Object:Pe,ObjVec:c.vector(Pe)}),he=c.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:c.lazy(()=>he),struct:c.lazy(()=>Tt),u16:null,u32:null,u256:null}),L=lt(c.enum("Argument",{GasCoin:null,Input:c.struct("Input",{index:c.u16()}),Result:c.struct("Result",{index:c.u16()}),NestedResult:c.struct("NestedResult",{index:c.u16(),resultIndex:c.u16()})})),mt=c.struct("ProgrammableMoveCall",{package:J,module:c.string(),function:c.string(),type_arguments:c.vector(he),arguments:c.vector(L)}).transform({input:e=>{const[t,r,n]=e.target.split("::"),i=e.typeArguments.map(s=>ee.parseFromStr(s,!0));return{package:M(t),module:r,function:n,type_arguments:i,arguments:e.arguments}},output:e=>({target:[e.package,e.module,e.function].join("::"),arguments:e.arguments,typeArguments:e.type_arguments.map(ee.tagToString)})}),yt=lt(c.enum("Transaction",{MoveCall:mt,TransferObjects:c.struct("TransferObjects",{objects:c.vector(L),address:L}),SplitCoins:c.struct("SplitCoins",{coin:L,amounts:c.vector(L)}),MergeCoins:c.struct("MergeCoins",{destination:L,sources:c.vector(L)}),Publish:c.struct("Publish",{modules:c.vector(c.vector(c.u8())),dependencies:c.vector(J)}),MakeMoveVec:c.struct("MakeMoveVec",{type:Kn(he),objects:c.vector(L)}),Upgrade:c.struct("Upgrade",{modules:c.vector(c.vector(c.u8())),dependencies:c.vector(J),packageId:J,ticket:L})})),wt=c.struct("ProgrammableTransaction",{inputs:c.vector(pt),transactions:c.vector(yt)}),bt=c.enum("TransactionKind",{ProgrammableTransaction:wt,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),St=c.enum("TransactionExpiration",{None:null,Epoch:cr()}),Tt=c.struct("StructTag",{address:J,module:c.string(),name:c.string(),typeParams:c.vector(he)}),vt=c.struct("GasData",{payment:c.vector(Se),owner:J,price:c.u64(),budget:c.u64()}),Et=c.struct("TransactionDataV1",{kind:bt,sender:J,gasData:vt,expiration:St}),xt=c.enum("TransactionData",{V1:Et}),Wn=c.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Jn=c.enum("IntentVersion",{V0:null}),Hn=c.enum("AppId",{Sui:null}),Xn=c.struct("Intent",{scope:Wn,version:Jn,appId:Hn}),qn=c.generic(["T"],e=>c.struct("IntentMessage<T>",{intent:Xn,value:e})),It=c.enum("CompressedSignature",{ED25519:c.fixedArray(64,c.u8()),Secp256k1:c.fixedArray(64,c.u8()),Secp256r1:c.fixedArray(64,c.u8()),ZkLogin:c.vector(c.u8())}),jt=c.enum("PublicKey",{ED25519:c.fixedArray(32,c.u8()),Secp256k1:c.fixedArray(33,c.u8()),Secp256r1:c.fixedArray(33,c.u8()),ZkLogin:c.vector(c.u8())}),Ot=c.struct("MultiSigPkMap",{pubKey:jt,weight:c.u8()}),At=c.struct("MultiSigPublicKey",{pk_map:c.vector(Ot),threshold:c.u16()}),ur=c.struct("MultiSig",{sigs:c.vector(It),bitmap:c.u16(),multisig_pk:At}),Zn=c.vector(c.u8()).transform({input:e=>typeof e=="string"?ae(e):e,output:e=>Ie(new Uint8Array(e))}),dr=c.struct("SenderSignedTransaction",{intentMessage:qn(xt),txSignatures:c.vector(Zn)}),fr=c.vector(dr,{name:"SenderSignedData"}),C={...c,U8:c.u8(),U16:c.u16(),U32:c.u32(),U64:c.u64(),U128:c.u128(),U256:c.u256(),ULEB128:c.uleb128(),Bool:c.bool(),String:c.string(),Address:J,Argument:L,CallArg:pt,CompressedSignature:It,GasData:vt,MultiSig:ur,MultiSigPkMap:Ot,MultiSigPublicKey:At,ObjectArg:Pe,ObjectDigest:ht,ProgrammableMoveCall:mt,ProgrammableTransaction:wt,PublicKey:jt,SenderSignedData:fr,SenderSignedTransaction:dr,SharedObjectRef:gt,StructTag:Tt,SuiObjectRef:Se,Transaction:yt,TransactionData:xt,TransactionDataV1:Et,TransactionExpiration:St,TransactionKind:bt,TypeTag:he,ser:I.ser.bind(I),de:I.de.bind(I),getTypeInterface:I.getTypeInterface.bind(I),hasType:I.hasType.bind(I),parseTypeName:I.parseTypeName.bind(I),registerAddressType:I.registerAddressType.bind(I),registerAlias:I.registerAlias.bind(I),registerBcsType:I.registerBcsType.bind(I),registerEnumType:I.registerEnumType.bind(I),registerStructType:I.registerStructType.bind(I),registerType:I.registerType.bind(I),types:I.types};I.registerBcsType("utf8string",()=>c.string({name:"utf8string"}));I.registerBcsType("unsafe_u64",()=>cr());I.registerBcsType("enumKind",e=>lt(e));[J,L,pt,It,vt,ur,Ot,At,Pe,ht,mt,wt,jt,fr,gt,Tt,Se,yt,xt,Et,St,bt,he].forEach(e=>{I.registerBcsType(e.name,()=>e)});const Yn=k([h({ImmOrOwned:se}),h({Shared:h({objectId:f(),initialSharedVersion:k([q(),f()]),mutable:U()})}),h({Receiving:se})]),De=h({Pure:v(q())}),et=h({Object:Yn}),ze=k([De,et]);function Qn(e,t){return{Pure:Array.from(e instanceof Uint8Array?e:ut(e)?e.toBytes():C.ser(t,e,{maxSize:1/0}).toBytes())}}const R={Pure:Qn,ObjectRef({objectId:e,digest:t,version:r}){return{Object:{ImmOrOwned:{digest:t,version:r,objectId:M(e)}}}},SharedObjectRef({objectId:e,mutable:t,initialSharedVersion:r}){return{Object:{Shared:{mutable:t,initialSharedVersion:r,objectId:M(e)}}}},ReceivingRef({objectId:e,digest:t,version:r}){return{Object:{Receiving:{digest:t,version:r,objectId:M(e)}}}}};function Vt(e){return typeof e=="string"?M(e):"ImmOrOwned"in e.Object?M(e.Object.ImmOrOwned.objectId):"Receiving"in e.Object?M(e.Object.Receiving.objectId):M(e.Object.Shared.objectId)}function ei(e){return typeof e=="object"&&"Object"in e&&"Shared"in e.Object?e.Object.Shared:void 0}function ti(e){var t;return((t=ei(e))==null?void 0:t.mutable)??!1}function B(e,t){return Lt(e,t)}const ri=e=>k([h({None:k([b(!0),b(null)])}),h({Some:e})]),Te=k([h({kind:b("Input"),index:q(),value:w(Ze()),type:w(b("object"))}),h({kind:b("Input"),index:q(),value:w(Ze()),type:b("pure")})]),ni=[Te,h({kind:b("GasCoin")}),h({kind:b("Result"),index:q()}),h({kind:b("NestedResult"),index:q(),resultIndex:q()})],re=k([...ni]),lr=h({kind:b("MoveCall"),target:P("target",f().validator),typeArguments:v(f()),arguments:v(re)}),hr=h({kind:b("TransferObjects"),objects:v(re),address:re}),gr=h({kind:b("SplitCoins"),coin:re,amounts:v(re)}),pr=h({kind:b("MergeCoins"),destination:re,sources:v(re)}),mr=h({kind:b("MakeMoveVec"),type:w(ri(H(f(),Ht()))),objects:v(re)}),yr=h({kind:b("Publish"),modules:v(v(q())),dependencies:v(f())}),wr=h({kind:b("Upgrade"),modules:v(v(q())),dependencies:v(f()),packageId:f(),ticket:re}),ii=[lr,hr,gr,pr,yr,wr,mr],si=k([...ii]),ce={MoveCall(e){return B({kind:"MoveCall",target:e.target,arguments:e.arguments??[],typeArguments:e.typeArguments??[]},lr)},TransferObjects(e,t){return t.kind==="Input"&&t.type==="pure"&&typeof t.value!="object"&&(t.value=R.Pure(C.Address.serialize(t.value))),B({kind:"TransferObjects",objects:e,address:t},hr)},SplitCoins(e,t){return t.forEach(r=>{r.kind==="Input"&&r.type==="pure"&&typeof r.value!="object"&&(r.value=R.Pure(C.U64.serialize(r.value)))}),B({kind:"SplitCoins",coin:e,amounts:t},gr)},MergeCoins(e,t){return B({kind:"MergeCoins",destination:e,sources:t},pr)},Publish({modules:e,dependencies:t}){return B({kind:"Publish",modules:e.map(r=>typeof r=="string"?Array.from(ae(r)):r),dependencies:t.map(r=>be(r))},yr)},Upgrade({modules:e,dependencies:t,packageId:r,ticket:n}){return B({kind:"Upgrade",modules:e.map(i=>typeof i=="string"?Array.from(ae(i)):i),dependencies:t.map(i=>be(i)),packageId:r,ticket:n},wr)},MakeMoveVec({type:e,objects:t}){return B({kind:"MakeMoveVec",type:e?{Some:ee.parseFromStr(e)}:{None:null},objects:t},mr)}};function ai(e){function t(r,n){return e(r,n)}return t.u8=r=>e(C.U8.serialize(r)),t.u16=r=>e(C.U16.serialize(r)),t.u32=r=>e(C.U32.serialize(r)),t.u64=r=>e(C.U64.serialize(r)),t.u128=r=>e(C.U128.serialize(r)),t.u256=r=>e(C.U256.serialize(r)),t.bool=r=>e(C.Bool.serialize(r)),t.string=r=>e(C.String.serialize(r)),t.address=r=>e(C.Address.serialize(r)),t.id=t.address,t}function oi(e,t){const r=Array.from(`${e}::`).map(i=>i.charCodeAt(0)),n=new Uint8Array(r.length+t.length);return n.set(r),n.set(t,r.length),jr(n,{dkLen:32})}const ci=w(O(k([h({Epoch:q()}),h({None:k([b(!0),b(null)])})]))),Gt=P("StringEncodedBigint",e=>{if(!["string","number","bigint"].includes(typeof e))return!1;try{return BigInt(e),!0}catch{return!1}}),ui=h({budget:w(Gt),price:w(Gt),payment:w(v(se)),owner:w(f())}),ke=h({version:b(1),sender:w(f()),expiration:ci,gasConfig:ui,inputs:v(Te),transactions:v(si)});function Ft(e){return M(e).replace("0x","")}class te{constructor(t){this.version=1,this.sender=t==null?void 0:t.sender,this.expiration=t==null?void 0:t.expiration,this.gasConfig=(t==null?void 0:t.gasConfig)??{},this.inputs=(t==null?void 0:t.inputs)??[],this.transactions=(t==null?void 0:t.transactions)??[]}static fromKindBytes(t){const r=C.TransactionKind.parse(t),n="ProgrammableTransaction"in r?r.ProgrammableTransaction:null;if(!n)throw new Error("Unable to deserialize from bytes.");const i=B({version:1,gasConfig:{},inputs:n.inputs.map((s,a)=>B({kind:"Input",value:s,index:a,type:N(s,De)?"pure":"object"},Te)),transactions:n.transactions},ke);return te.restore(i)}static fromBytes(t){var a;const r=C.TransactionData.parse(t),n=r==null?void 0:r.V1,i="ProgrammableTransaction"in n.kind?(a=n==null?void 0:n.kind)==null?void 0:a.ProgrammableTransaction:null;if(!n||!i)throw new Error("Unable to deserialize from bytes.");const s=B({version:1,sender:n.sender,expiration:n.expiration,gasConfig:n.gasData,inputs:i.inputs.map((o,u)=>B({kind:"Input",value:o,index:u,type:N(o,De)?"pure":"object"},Te)),transactions:i.transactions},ke);return te.restore(s)}static restore(t){qe(t,ke);const r=new te;return Object.assign(r,t),r}static getDigestFromBytes(t){const r=oi("TransactionData",t);return xe(r)}build({maxSizeBytes:t=1/0,overrides:r,onlyTransactionKind:n}={}){const i=this.inputs.map(l=>(qe(l.value,ze),l.value)),s={ProgrammableTransaction:{inputs:i,transactions:this.transactions}};if(n)return C.TransactionKind.serialize(s,{maxSize:t}).toBytes();const a=(r==null?void 0:r.expiration)??this.expiration,o=(r==null?void 0:r.sender)??this.sender,u={...this.gasConfig,...r==null?void 0:r.gasConfig};if(!o)throw new Error("Missing transaction sender");if(!u.budget)throw new Error("Missing gas budget");if(!u.payment)throw new Error("Missing gas payment");if(!u.price)throw new Error("Missing gas price");const d={sender:Ft(o),expiration:a||{None:!0},gasData:{payment:u.payment,owner:Ft(this.gasConfig.owner??o),price:BigInt(u.price),budget:BigInt(u.budget)},kind:{ProgrammableTransaction:{inputs:i,transactions:this.transactions}}};return C.TransactionData.serialize({V1:d},{maxSize:t}).toBytes()}getDigest(){const t=this.build({onlyTransactionKind:!1});return te.getDigestFromBytes(t)}snapshot(){return B(this,ke)}}var kt=(e,t,r)=>{if(!t.has(e))throw TypeError("Cannot "+r)},x=(e,t,r)=>(kt(e,t,"read from private field"),r?r.call(e):t.get(e)),Q=(e,t,r)=>{if(t.has(e))throw TypeError("Cannot add the same private member more than once");t instanceof WeakSet?t.add(e):t.set(e,r)},_e=(e,t,r,n)=>(kt(e,t,"write to private field"),t.set(e,r),r),$=(e,t,r)=>(kt(e,t,"access private method"),r),T,me,$e,ye,Me,oe,de,_t,br,Ct,Sr,$t,Tr,Mt,vr,Ue,tt;const di={maxPureArgumentSize:16*1024,maxTxGas:5e10,maxGasObjects:256,maxTxSizeBytes:128*1024};function fi(e){const t={kind:"Result",index:e},r=[],n=i=>r[i]??(r[i]={kind:"NestedResult",index:e,resultIndex:i});return new Proxy(t,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,s){if(s in i)return Reflect.get(i,s);if(s===Symbol.iterator)return function*(){let o=0;for(;;)yield n(o),o++};if(typeof s=="symbol")return;const a=parseInt(s,10);if(!(Number.isNaN(a)||a<0))return n(a)}})}function li(e){const t=at(e);return t?t.Struct.address==="0x2"&&t.Struct.module==="transfer"&&t.Struct.name==="Receiving":!1}function ve(e){if(!e.client)throw new Error("No provider passed to Transaction#build, but transaction data was not sufficient to build offline.");return e.client}const hi=Symbol.for("@mysten/transaction"),He={maxTxGas:"max_tx_gas",maxGasObjects:"max_gas_payment_objects",maxTxSizeBytes:"max_tx_size_bytes",maxPureArgumentSize:"max_pure_argument_size"},gi=1000n,pi=50,mi=(e,t)=>Array.from({length:Math.ceil(e.length/t)},(r,n)=>e.slice(n*t,n*t+t)),rt=class{constructor(e){Q(this,me),Q(this,ye),Q(this,oe),Q(this,_t),Q(this,Ct),Q(this,$t),Q(this,Mt),Q(this,Ue),Q(this,T,void 0),_e(this,T,new te(e?e.blockData:void 0))}static fromKind(e){const t=new rt;return _e(t,T,te.fromKindBytes(typeof e=="string"?ae(e):e)),t}static from(e){const t=new rt;return typeof e!="string"||!e.startsWith("{")?_e(t,T,te.fromBytes(typeof e=="string"?ae(e):e)):_e(t,T,te.restore(JSON.parse(e))),t}setSender(e){x(this,T).sender=e}setSenderIfNotSet(e){x(this,T).sender||(x(this,T).sender=e)}setExpiration(e){x(this,T).expiration=e}setGasPrice(e){x(this,T).gasConfig.price=String(e)}setGasBudget(e){x(this,T).gasConfig.budget=String(e)}setGasOwner(e){x(this,T).gasConfig.owner=e}setGasPayment(e){x(this,T).gasConfig.payment=e.map(t=>Kt(t,se))}get blockData(){return x(this,T).snapshot()}get[hi](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:ai((e,t)=>ut(e)?$(this,me,$e).call(this,"pure",{Pure:Array.from(e.toBytes())}):$(this,me,$e).call(this,"pure",e instanceof Uint8Array?R.Pure(e):t?R.Pure(e,t):e))}),this.pure}get gas(){return{kind:"GasCoin"}}object(e){if(typeof e=="object"&&"kind"in e)return e;const t=Vt(e),r=x(this,T).inputs.find(n=>n.type==="object"&&t===Vt(n.value));return r&&N(r.value,et)&&"Shared"in r.value.Object&&N(e,et)&&"Shared"in e.Object&&(r.value.Object.Shared.mutable=r.value.Object.Shared.mutable||e.Object.Shared.mutable),r??$(this,me,$e).call(this,"object",typeof e=="string"?M(e):e)}objectRef(...e){return this.object(R.ObjectRef(...e))}receivingRef(...e){return this.object(R.ReceivingRef(...e))}sharedObjectRef(...e){return this.object(R.SharedObjectRef(...e))}add(e){const t=x(this,T).transactions.push(e);return fi(t-1)}splitCoins(e,t){return this.add(ce.SplitCoins(typeof e=="string"?this.object(e):e,t.map(r=>typeof r=="number"||typeof r=="bigint"||typeof r=="string"?this.pure.u64(r):$(this,ye,Me).call(this,r))))}mergeCoins(e,t){return this.add(ce.MergeCoins(typeof e=="string"?this.object(e):e,t.map(r=>typeof r=="string"?this.object(r):r)))}publish({modules:e,dependencies:t}){return this.add(ce.Publish({modules:e,dependencies:t}))}upgrade({modules:e,dependencies:t,packageId:r,ticket:n}){return this.add(ce.Upgrade({modules:e,dependencies:t,packageId:r,ticket:typeof n=="string"?this.object(n):n}))}moveCall({arguments:e,typeArguments:t,target:r}){return this.add(ce.MoveCall({arguments:e==null?void 0:e.map(n=>$(this,ye,Me).call(this,n)),typeArguments:t,target:r}))}transferObjects(e,t){return this.add(ce.TransferObjects(e.map(r=>typeof r=="string"?this.object(r):r),typeof t=="string"?this.pure.address(t):$(this,ye,Me).call(this,t)))}makeMoveVec({type:e,objects:t}){return this.add(ce.MakeMoveVec({type:e,objects:t.map(r=>typeof r=="string"?this.object(r):r)}))}serialize(){return JSON.stringify(x(this,T).snapshot())}async sign(e){const{signer:t,...r}=e,n=await this.build(r);return t.signTransactionBlock(n)}async build(e={}){return await $(this,Ue,tt).call(this,e),x(this,T).build({maxSizeBytes:$(this,oe,de).call(this,"maxTxSizeBytes",e),onlyTransactionKind:e.onlyTransactionKind})}async getDigest(e={}){return await $(this,Ue,tt).call(this,e),x(this,T).getDigest()}};let Xe=rt;T=new WeakMap;me=new WeakSet;$e=function(e,t){const r=x(this,T).inputs.length,n=B({kind:"Input",value:typeof t=="bigint"?String(t):t,index:r,type:e},Te);return x(this,T).inputs.push(n),n};ye=new WeakSet;Me=function(e){return ut(e)?this.pure(e):e};oe=new WeakSet;de=function(e,{protocolConfig:t,limits:r}){if(r&&typeof r[e]=="number")return r[e];if(!t)return di[e];const n=t==null?void 0:t.attributes[He[e]];if(!n)throw new Error(`Missing expected protocol config: "${He[e]}"`);const i="u64"in n?n.u64:"u32"in n?n.u32:n.f64;if(!i)throw new Error(`Unexpected protocol config value found for: "${He[e]}"`);return Number(i)};_t=new WeakSet;br=function(e){const t=$(this,oe,de).call(this,"maxPureArgumentSize",e);x(this,T).inputs.forEach((r,n)=>{if(N(r.value,De)&&r.value.Pure.length>t)throw new Error(`Input at index ${n} is too large, max pure input size is ${t} bytes, got ${r.value.Pure.length} bytes`)})};Ct=new WeakSet;Sr=async function(e){if(x(this,T).gasConfig.payment){const i=$(this,oe,de).call(this,"maxGasObjects",e);if(x(this,T).gasConfig.payment.length>i)throw new Error(`Payment objects exceed maximum amount: ${i}`)}if(e.onlyTransactionKind||x(this,T).gasConfig.payment)return;const t=x(this,T).gasConfig.owner??x(this,T).sender,n=(await ve(e).getCoins({owner:t,coinType:An})).data.filter(i=>!x(this,T).inputs.find(a=>N(a.value,ze)&&"Object"in a.value&&"ImmOrOwned"in a.value.Object?i.coinObjectId===a.value.Object.ImmOrOwned.objectId:!1)).slice(0,$(this,oe,de).call(this,"maxGasObjects",e)-1).map(i=>({objectId:i.coinObjectId,digest:i.digest,version:i.version}));if(!n.length)throw new Error("No valid gas coins found for the transaction.");this.setGasPayment(n)};$t=new WeakSet;Tr=async function(e){e.onlyTransactionKind||x(this,T).gasConfig.price||this.setGasPrice(await ve(e).getReferenceGasPrice())};Mt=new WeakSet;vr=async function(e){const{inputs:t,transactions:r}=x(this,T),n=[],i=[];if(t.forEach(s=>{if(s.type==="object"&&typeof s.value=="string"){i.push({id:M(s.value),input:s});return}}),r.forEach(s=>{if(s.kind==="MoveCall"&&s.arguments.some(o=>o.kind==="Input"&&!N(t[o.index].value,ze))&&n.push(s),s.kind==="SplitCoins"&&s.amounts.forEach(a=>{if(a.kind==="Input"){const o=t[a.index];typeof o.value!="object"&&(o.value=R.Pure(C.U64.serialize(o.value)))}}),s.kind==="TransferObjects"&&s.address.kind==="Input"){const a=t[s.address.index];typeof a.value!="object"&&(a.value=R.Pure(C.Address.serialize(a.value)))}}),n.length&&await Promise.all(n.map(async s=>{const[a,o,u]=s.target.split("::"),d=await ve(e).getNormalizedMoveFunction({package:be(a),module:o,function:u}),g=d.parameters.length>0&&Vn(d.parameters.at(-1))?d.parameters.slice(0,d.parameters.length-1):d.parameters;if(g.length!==s.arguments.length)throw new Error("Incorrect number of arguments.");g.forEach((m,p)=>{const y=s.arguments[p];if(y.kind!=="Input")return;const S=t[y.index];if(N(S.value,ze))return;const E=S.value,A=Qe(m,E);if(A){S.value=R.Pure(E,A);return}if(at(m)!=null||typeof m=="object"&&"TypeParameter"in m){if(typeof E!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(E,null,2)}`);i.push({id:E,input:S,normalizedType:m});return}throw new Error(`Unknown call arg type ${JSON.stringify(m,null,2)} for value ${JSON.stringify(E,null,2)}`)})})),i.length){const s=[...new Set(i.map(({id:l})=>l))],a=mi(s,pi),o=(await Promise.all(a.map(l=>ve(e).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat();let u=new Map(s.map((l,g)=>[l,o[g]]));const d=Array.from(u).filter(([l,g])=>g.error).map(([l,g])=>l);if(d.length)throw new Error(`The following input objects are invalid: ${d.join(", ")}`);i.forEach(({id:l,input:g,normalizedType:m})=>{var E;const p=u.get(l),y=(E=p.data)==null?void 0:E.owner,S=y&&typeof y=="object"&&"Shared"in y?y.Shared.initial_shared_version:void 0;if(S){const A=m!=null&&Ye(m)==null&&Qt(m)==null,_=ti(g.value)||A||m!=null&&Ye(m)!=null;g.value=R.SharedObjectRef({objectId:l,initialSharedVersion:S,mutable:_})}else m&&li(m)?g.value=R.ReceivingRef(zt(p)):g.value=R.ObjectRef(zt(p))})}};Ue=new WeakSet;tt=async function(e){if(!e.onlyTransactionKind&&!x(this,T).sender)throw new Error("Missing transaction sender");if(!e.protocolConfig&&!e.limits&&e.client&&(e.protocolConfig=await e.client.getProtocolConfig()),await Promise.all([$(this,$t,Tr).call(this,e),$(this,Mt,vr).call(this,e)]),!e.onlyTransactionKind&&(await $(this,Ct,Sr).call(this,e),!x(this,T).gasConfig.budget)){const t=await ve(e).dryRunTransactionBlock({transactionBlock:x(this,T).build({maxSizeBytes:$(this,oe,de).call(this,"maxTxSizeBytes",e),overrides:{gasConfig:{budget:String($(this,oe,de).call(this,"maxTxGas",e)),payment:[]}}})});if(t.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${t.effects.status.error}`,{cause:t});const r=gi*BigInt(this.blockData.gasConfig.price||1n),n=BigInt(t.effects.gasUsed.computationCost)+r,i=n+BigInt(t.effects.gasUsed.storageCost)-BigInt(t.effects.gasUsed.storageRebate);this.setGasBudget(i>n?i:n)}$(this,_t,br).call(this,e)};const yi=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],wi=Or(yi,[0,1]);class Ut{constructor(t,r,n,i){F(this,"network");F(this,"chain");F(this,"provider");F(this,"contracts");F(this,"usdcId");F(this,"usdcTreasuryId");F(this,"tokenMessengerId");F(this,"tokenMessengerStateId");F(this,"messageTransmitterId");F(this,"messageTransmitterStateId");var d,l,g,m;if(this.network=t,this.chain=r,this.provider=n,this.contracts=i,t==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=Ar.get(this.network,this.chain);if(!s)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:a,messageTransmitterState:o,usdcTreasury:u}=wi(t);if(!((d=i.cctp)!=null&&d.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${r} not found`);if(!((l=i.cctp)!=null&&l.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${r} not found`);this.usdcId=s,this.usdcTreasuryId=u,this.tokenMessengerId=(g=i.cctp)==null?void 0:g.tokenMessenger,this.messageTransmitterId=(m=i.cctp)==null?void 0:m.messageTransmitter,this.tokenMessengerStateId=a,this.messageTransmitterStateId=o}async*transfer(t,r,n){const i=new Xe,s=kr.get(this.network,r.chain),[a,...o]=await Nt.getCoins(this.provider,t,this.usdcId);if(a===void 0)throw new Error("No USDC in wallet");const u=i.object(a.coinObjectId);o.length>0&&i.mergeCoins(u,o.map(l=>i.object(l.coinObjectId)));const[d]=i.splitCoins(u,[n]);i.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[d,i.pure.u32(s),i.pure.address(r.address.toUniversalAddress().toString()),i.object(this.tokenMessengerStateId),i.object(this.messageTransmitterStateId),i.object("0x403"),i.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),yield this.createUnsignedTx(i,"Sui.CircleBridge.Transfer")}async isTransferCompleted(t){const r=new Xe;r.moveCall({target:`${this.messageTransmitterId}::state::is_nonce_used`,arguments:[r.object(this.messageTransmitterStateId),r.pure.u32(t.sourceDomain),r.pure.u64(t.nonce)]});const n=await this.provider.devInspectTransactionBlock({sender:"0x0000000000000000000000000000000000000000000000000000000000000000",transactionBlock:r});try{return!!n.results[0].returnValues[0][0][0]}catch(i){return console.error(`Error reading if nonce was used: ${i}`),!1}}async*redeem(t,r,n){const i=new Xe,[s]=i.moveCall({target:`${this.messageTransmitterId}::receive_message::receive_message`,arguments:[i.pure(Pt(Bt.serialize(r))),i.pure(Pt(_r.decode(n))),i.object(this.messageTransmitterStateId)]});if(!s)throw new Error("Failed to produce receipt");const[a]=i.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::handle_receive_message`,arguments:[s,i.object(this.tokenMessengerStateId),i.object("0x403"),i.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]});if(!a)throw new Error("Failed to produce stamp receipt ticket with burn message");const[o]=i.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::deconstruct_stamp_receipt_ticket_with_burn_message`,arguments:[a]});if(!o)throw new Error("Failed to produce stamp receipt ticket");const[u]=i.moveCall({target:`${this.messageTransmitterId}::receive_message::stamp_receipt`,arguments:[o,i.object(this.messageTransmitterStateId)],typeArguments:[`${this.tokenMessengerId}::message_transmitter_authenticator::MessageTransmitterAuthenticator`]});if(!u)throw new Error("Failed to produce stamped receipt");i.moveCall({target:`${this.messageTransmitterId}::receive_message::complete_receive_message`,arguments:[u,i.object(this.messageTransmitterStateId)]}),yield this.createUnsignedTx(i,"Sui.CircleBridge.Redeem")}async parseTransactionDetails(t){var p;const r=await this.provider.waitForTransactionBlock({digest:t,options:{showEvents:!0,showEffects:!0,showInput:!0}});if(!r)throw new Error("Transaction not found");if(!r.events)throw new Error("Transaction events not found");const n=(p=r.events)==null?void 0:p.find(y=>y.type.includes("send_message::MessageSent"));if(!n)throw new Error("No MessageSent event found");const i=new Uint8Array((n==null?void 0:n.parsedJson).message),[s,a]=Bt.deserialize(i),{payload:o}=s,u=o.messageSender,d=o.mintRecipient,l=Rt(this.network,s.sourceDomain),g=Rt(this.network,s.destinationDomain),m={chain:l,address:o.burnToken};return{from:{chain:l,address:u},to:{chain:g,address:d},token:m,amount:o.amount,message:s,id:{hash:a}}}static async fromRpc(t,r){const[n,i]=await Nt.chainFromRpc(t),s=r[i];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new Ut(n,i,t,s.contracts)}createUnsignedTx(t,r,n=!1){return new $r(t,this.network,this.chain,r,n)}}Cr("Sui","CircleBridge",Ut);export{Ut as SuiCircleBridge};