@wormhole-foundation/wormhole-connect 4.0.0-beta.0-development → 4.0.0-beta.1-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 (205) hide show
  1. package/dist/assets/{aptos-CIKjhZ5R.js → aptos-CaGPw7HM.js} +2 -2
  2. package/dist/assets/create-54a95t1x.js +1 -0
  3. package/dist/assets/{evm-Ky_mCHhS.js → evm-Bv0RsFka.js} +2 -2
  4. package/dist/assets/{index-DW7sWcdW.js → index-B5JfIVKE.js} +1 -1
  5. package/dist/assets/{index-DHLr3HmO.js → index-BCD-VOiF.js} +1 -1
  6. package/dist/assets/index-BwhO0jGm.js +1 -0
  7. package/dist/assets/{index-DpM61P6H.js → index-CMULoTsT.js} +1 -1
  8. package/dist/assets/{index-DZpeOp3V.js → index-CO4HXUmy.js} +1 -1
  9. package/dist/assets/{index-Bg3NWSHL.js → index-COw2RtBx.js} +1 -1
  10. package/dist/assets/{index-DRk-Cj0P.js → index-ClrVAZUa.js} +1 -1
  11. package/dist/assets/{index-D7RgFG0F.js → index-CzQeh-hT.js} +1 -1
  12. package/dist/assets/{index-Csghphw2.js → index-DC4mZtDw.js} +1 -1
  13. package/dist/assets/{index-Cqs_fFht.js → index-DI-xN_q3.js} +1 -1
  14. package/dist/assets/{index-DVbfoP0w.js → index-DRsHBjoG.js} +1 -1
  15. package/dist/assets/{index-CdAFGcxx.js → index-DXcQbQ8r.js} +1 -1
  16. package/dist/assets/{index-DJ52h-dV.js → index-DxHhcWFS.js} +1 -1
  17. package/dist/assets/{index-g9iLhWvp.js → index-GKTf0CV7.js} +1 -1
  18. package/dist/assets/{index-DuR9wYhp.js → index-aoYIFErC.js} +1 -1
  19. package/dist/assets/{index-DfNgilHG.js → index-jixjwN_L.js} +1 -1
  20. package/dist/assets/{solana-jYIeIu4B.js → solana-DpD0VkQS.js} +2 -2
  21. package/dist/assets/{sui-B96bqBVv.js → sui-7K04yY2U.js} +2 -2
  22. package/dist/main.js +75 -75
  23. package/dist/src/components/TokenBalance.d.ts.map +1 -1
  24. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  25. package/dist/src/config/testnet/tokens.d.ts.map +1 -1
  26. package/dist/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
  27. package/dist/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
  28. package/dist/src/hooks/useTokenListWithSearch.d.ts +1 -4
  29. package/dist/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
  30. package/dist/src/routes/operator.d.ts.map +1 -1
  31. package/dist/src/routes/sdkv2/route.d.ts +2 -2
  32. package/dist/src/routes/sdkv2/route.d.ts.map +1 -1
  33. package/dist/src/telemetry/types.d.ts +1 -0
  34. package/dist/src/telemetry/types.d.ts.map +1 -1
  35. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  36. package/dist/src/utils/wrappedNativeTokens.d.ts +12 -0
  37. package/dist/src/utils/wrappedNativeTokens.d.ts.map +1 -0
  38. package/dist/src/views/Terms.d.ts.map +1 -1
  39. package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  40. package/dist/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  41. package/dist/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  42. package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
  43. package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
  44. package/lib/{account-D0Q4K1CI.js → account-24z6tDMM.js} +1 -1
  45. package/lib/{account-BdDruAAr.mjs → account-BcnWVXmg.mjs} +1 -1
  46. package/lib/{address-fSXS9iww.mjs → address-BX2fIOro.mjs} +1 -1
  47. package/lib/{address-BO6rj6uK.js → address-Bc-5yO4D.js} +1 -1
  48. package/lib/{aptos-B1VSCmD9.mjs → aptos-5b4F4UXd.mjs} +4 -4
  49. package/lib/{aptos-DG7QN21P.js → aptos-B_Yz-0gh.js} +1 -1
  50. package/lib/{aptos-BnKScTtI.mjs → aptos-DO_Sexq-.mjs} +7 -7
  51. package/lib/{aptos-B3C7cnvM.js → aptos-DffuIzI0.js} +2 -2
  52. package/lib/{basic-BRYkcAmD.mjs → basic-BclwqsOq.mjs} +4 -4
  53. package/lib/{basic-CN2jAqvS.js → basic-BdiYk8Hf.js} +1 -1
  54. package/lib/{basic-DufHOLGA.js → basic-CuO6iz8a.js} +1 -1
  55. package/lib/{basic-Cw13RoYq.mjs → basic-HasHL_DG.mjs} +4 -4
  56. package/lib/{blake2b-CT6EW399.mjs → blake2b-CVpPk5O9.mjs} +1 -1
  57. package/lib/{blake2b-B_Q_lTGN.js → blake2b-DXExLbRg.js} +1 -1
  58. package/lib/{browser-ponyfill-CnfcLhK-.mjs → browser-ponyfill-DeOApqpH.mjs} +1 -1
  59. package/lib/{browser-ponyfill-DbGoEOBo.js → browser-ponyfill-VhIu9z_I.js} +1 -1
  60. package/lib/{chain-BCKkYvDb.js → chain-BxNUWKZE.js} +1 -1
  61. package/lib/{chain-_dXKRkCE.mjs → chain-CvZsIsLh.mjs} +1 -1
  62. package/lib/{chunk-KJH4KKG6-RA0hChr8.mjs → chunk-KJH4KKG6-BgebMATq.mjs} +2 -2
  63. package/lib/{chunk-KJH4KKG6-BXBLZwfY.js → chunk-KJH4KKG6-DNlN4p21.js} +1 -1
  64. package/lib/{constants-QsbOfMbk.mjs → constants-DnbaS3cF.mjs} +3 -3
  65. package/lib/constants-abC7FLXq.js +1 -0
  66. package/lib/{contract-MkLF5rqi.js → contract-CTycrpaK.js} +1 -1
  67. package/lib/{contract-C_4H8x77.mjs → contract-KYuIk_vR.mjs} +1 -1
  68. package/lib/{core-Cpb3gtg_.js → core-COM78LTW.js} +3 -3
  69. package/lib/{core-ntLR7o2S.mjs → core-DT_3gIqi.mjs} +6 -6
  70. package/lib/{create-naslyPfU.mjs → create-BvzkkBPW.mjs} +1 -1
  71. package/lib/{create-CfgTxAS-.js → create-CGZYy2vu.js} +1 -1
  72. package/lib/{evm-C6xp3v8Z.mjs → evm-CUR4-a7F.mjs} +9 -9
  73. package/lib/{evm-B3G2Vkzg.js → evm-CoLwXequ.js} +2 -2
  74. package/lib/{evm-B20n3mf_.mjs → evm-DoVrPE_X.mjs} +7 -7
  75. package/lib/{evm-aSG_vFbw.js → evm-Dv-WYu07.js} +2 -2
  76. package/lib/executor.js +1 -1
  77. package/lib/executor.mjs +815 -572
  78. package/lib/hosted.js +1 -1
  79. package/lib/hosted.mjs +1 -1
  80. package/lib/{index-DSmKiYkD.mjs → index-B1KwS33G.mjs} +5 -5
  81. package/lib/{index-vhQ5Q8ov.mjs → index-B2sVzSwb.mjs} +52 -97
  82. package/lib/{index-Bz7ogqhR.mjs → index-B3idKQJG.mjs} +1 -1
  83. package/lib/index-B7Afz_5P.js +1 -0
  84. package/lib/{index-Dq7WWqFe.js → index-B7HBnPLP.js} +1 -1
  85. package/lib/{index-DQX74QAE.js → index-BFBwRlid.js} +1 -1
  86. package/lib/{index-C6XNAQ4w.js → index-BZZZ8OeS.js} +1 -1
  87. package/lib/{index-C3LC73WN.js → index-BaYN-RHF.js} +1 -1
  88. package/lib/{index-BTUx12aa.js → index-Bhwzpq1T.js} +1 -1
  89. package/lib/{index-MsaML_Ju.mjs → index-Bicx897u.mjs} +2 -2
  90. package/lib/{index-Dajw3Alx.mjs → index-BlWksu-f.mjs} +1 -1
  91. package/lib/{index-DS8bl8fA.mjs → index-Bn0hkKKz.mjs} +4 -4
  92. package/lib/{index-BojkMsXD.js → index-BoKTcLq-.js} +1 -1
  93. package/lib/{index-BRYq_Nt2.mjs → index-Bp4ojxz6.mjs} +4 -4
  94. package/lib/{index-Cnznwcdb.js → index-BqabgGIh.js} +1 -1
  95. package/lib/{index-DxYgNWMY.mjs → index-BtEjOWoP.mjs} +3 -3
  96. package/lib/{index-BJcbyvof.js → index-C8HxYDNY.js} +1 -1
  97. package/lib/{index-Bhd_YhUf.js → index-C9Bk-rKp.js} +1 -1
  98. package/lib/{index-YAL4zolc.js → index-C9uGqcwH.js} +1 -1
  99. package/lib/{index-BQvEIlB2.mjs → index-CBGUPQXa.mjs} +3 -3
  100. package/lib/{index-IHxtA-NL.js → index-CGpn3INM.js} +1 -1
  101. package/lib/{index-BRyW-hBN.mjs → index-CTpINVAG.mjs} +2 -2
  102. package/lib/{index-bNUantLb.js → index-CjjP3Qp5.js} +1 -1
  103. package/lib/{index-CU73EUQW.js → index-CkGYgQTz.js} +1 -1
  104. package/lib/{index-DqzqJgVc.mjs → index-CkvxfaqA.mjs} +3 -3
  105. package/lib/{index-DfDB5FLw.js → index-ClMpLrxa.js} +1 -1
  106. package/lib/{index-B7VNYedX.mjs → index-CtU_hkYp.mjs} +4 -4
  107. package/lib/{index-DMOY218i.js → index-CzRVzbTC.js} +1 -1
  108. package/lib/{index-B4S4sz6p.mjs → index-Czxl_5Tr.mjs} +5 -5
  109. package/lib/{index-D0XQIiQn.js → index-D6qJDbzm.js} +1 -1
  110. package/lib/{index-D-H8WyKb.mjs → index-DGzoIr_I.mjs} +1 -1
  111. package/lib/{index-BD0gcmCp.mjs → index-DPpi4Don.mjs} +5 -5
  112. package/lib/{index-7_BfcP8x.mjs → index-DZaOh3F9.mjs} +2105 -2021
  113. package/lib/{index-QlIJYJce.js → index-DaY7_eQ6.js} +66 -66
  114. package/lib/{index-C3L-xKvN.mjs → index-DlmQ0_RF.mjs} +4839 -4850
  115. package/lib/{index-D5ENAOm3.js → index-DmsirrTI.js} +1 -1
  116. package/lib/{index-DnO0ZdKy.mjs → index-DpN0dULN.mjs} +1 -1
  117. package/lib/{index-BNuKzxGJ.js → index-DydXCN0v.js} +1 -1
  118. package/lib/{index-CSMunRpZ.mjs → index-NKV6j8zE.mjs} +3 -3
  119. package/lib/{index-BIYx5IBr.mjs → index-OlMuNft9.mjs} +3 -3
  120. package/lib/{index-tztRp3yJ.js → index-P9DbJOzh.js} +1 -1
  121. package/lib/{index-D1y-l93C.js → index-UbeUI3Ir.js} +1 -1
  122. package/lib/{index-BZYEbYGY.mjs → index-ZGgSxaDf.mjs} +3 -3
  123. package/lib/{index-DFpSbD7R.mjs → index-_e8uUnEK.mjs} +5 -5
  124. package/lib/{index-Cb9lswnP.js → index-cCBQV2Yv.js} +8 -8
  125. package/lib/{index-B9ybSY9R.mjs → index-cggXdVJu.mjs} +5 -5
  126. package/lib/{index.es-C476iHvN.mjs → index.es-5ecqX8B9.mjs} +4 -4
  127. package/lib/{index.es-CU6nhwJO.js → index.es-LBG64XJ6.js} +1 -1
  128. package/lib/{index.es-CkGpObng.js → index.es-owVcNlof.js} +3 -3
  129. package/lib/{index.es-CtiAoQ78.mjs → index.es-zNH_KzcH.mjs} +3 -3
  130. package/lib/index.js +1 -1
  131. package/lib/index.mjs +5 -5
  132. package/lib/mayan.js +1 -1
  133. package/lib/mayan.mjs +11 -11
  134. package/lib/{mint-zy6P38iu.js → mint-B4t2SvV6.js} +1 -1
  135. package/lib/{mint-DyoU9X22.mjs → mint-BGuU5y5m.mjs} +1 -1
  136. package/lib/ntt.js +1 -1
  137. package/lib/ntt.mjs +14 -12
  138. package/lib/{platform-x3ZBJ0YM.js → platform-Bkbg7A9d.js} +1 -1
  139. package/lib/{platform-BqpAMtgx.mjs → platform-C5gJAqtZ.mjs} +3 -3
  140. package/lib/{platform-BhspUaMJ.js → platform-C6QB7aIN.js} +1 -1
  141. package/lib/{platform-DQfpyXSV.mjs → platform-DBNvSsue.mjs} +4 -4
  142. package/lib/{platform-BHAZvZ_O.mjs → platform-DtB8gGMl.mjs} +4 -4
  143. package/lib/{platform-4nANkJAM.js → platform-qdbxkhTI.js} +1 -1
  144. package/lib/{provider-jsonrpc-DIXcAw4Q.mjs → provider-jsonrpc-BIIDy-Aw.mjs} +2 -2
  145. package/lib/{provider-jsonrpc-BCKoIijx.js → provider-jsonrpc-DHzam3ud.js} +1 -1
  146. package/lib/{secp256k1-CaaRyr2C.mjs → secp256k1-BF6Vm50D.mjs} +1 -1
  147. package/lib/{secp256k1-C60XBS-e.js → secp256k1-Bb6lbAjK.js} +1 -1
  148. package/lib/{secp256k1-UnRv5Suy.mjs → secp256k1-BfK5OWRP.mjs} +1 -1
  149. package/lib/{secp256k1-BWFGSbjt.mjs → secp256k1-CqT-a-I8.mjs} +1 -1
  150. package/lib/{secp256k1-CFt7TfEF.js → secp256k1-DRTQ6WrU.js} +1 -1
  151. package/lib/{secp256k1-BIiWvuxu.js → secp256k1-D_GNj8sK.js} +1 -1
  152. package/lib/{signer-DhO2iGae.mjs → signer-BH3gAHuj.mjs} +2 -2
  153. package/lib/{signer-BFY1Ytf6.js → signer-MBixef_P.js} +1 -1
  154. package/lib/{solana-CQk4ocg8.mjs → solana-C1puc64V.mjs} +11 -11
  155. package/lib/solana-C8xK8qJY.mjs +18 -0
  156. package/lib/solana-CRSliekb.js +1 -0
  157. package/lib/{solana-Cp49k9--.js → solana-CtBdJ6Wt.js} +4 -4
  158. package/lib/{solanaEmbed.esm-Cwa6cl_R.js → solanaEmbed.esm-BpIKVhXq.js} +1 -1
  159. package/lib/{solanaEmbed.esm-DBOqO9Ii.mjs → solanaEmbed.esm-NdE_DQuw.mjs} +3 -3
  160. package/lib/src/components/TokenBalance.d.ts.map +1 -1
  161. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  162. package/lib/src/config/testnet/tokens.d.ts.map +1 -1
  163. package/lib/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
  164. package/lib/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
  165. package/lib/src/hooks/useTokenListWithSearch.d.ts +1 -4
  166. package/lib/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
  167. package/lib/src/routes/operator.d.ts.map +1 -1
  168. package/lib/src/routes/sdkv2/route.d.ts +2 -2
  169. package/lib/src/routes/sdkv2/route.d.ts.map +1 -1
  170. package/lib/src/telemetry/types.d.ts +1 -0
  171. package/lib/src/telemetry/types.d.ts.map +1 -1
  172. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  173. package/lib/src/utils/wrappedNativeTokens.d.ts +12 -0
  174. package/lib/src/utils/wrappedNativeTokens.d.ts.map +1 -0
  175. package/lib/src/views/Terms.d.ts.map +1 -1
  176. package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  177. package/lib/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
  178. package/lib/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  179. package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
  180. package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
  181. package/lib/{sui-C2a1eehP.mjs → sui-BW7tMLZs.mjs} +4 -4
  182. package/lib/{sui-9gsoM56W.js → sui-DdujB9Bc.js} +1 -1
  183. package/lib/{sui-Cr98JBgS.js → sui-QcDjGW68.js} +1 -1
  184. package/lib/{sui-B4RvzEXx.mjs → sui-euceXgYf.mjs} +7 -7
  185. package/lib/{tokens-BbFKf6Hv.mjs → tokens-DI-tPIbd.mjs} +3 -3
  186. package/lib/{tokens-LVHsSbYG.js → tokens-DJos2DwM.js} +1 -1
  187. package/lib/{transfer-DZ-wNocj.js → transfer-BinEH6ml.js} +1 -1
  188. package/lib/{transfer-BV1ou1GP.mjs → transfer-DTvv5m_5.mjs} +2 -2
  189. package/lib/{units-BqUlbZ46.mjs → units-CVEv4txp.mjs} +2 -2
  190. package/lib/{units-D-oRQjOa.js → units-DtldPRXy.js} +1 -1
  191. package/lib/{unsignedTransaction-BmxD6VsY.mjs → unsignedTransaction-CVE7GUdC.mjs} +3 -3
  192. package/lib/{unsignedTransaction-CiPKh85X.js → unsignedTransaction-DL3WyIkF.js} +1 -1
  193. package/lib/{w3m-modal-3qLkbPfi.mjs → w3m-modal-B2VF8j7W.mjs} +2 -2
  194. package/lib/{w3m-modal-D4-nrnEK.mjs → w3m-modal-C32eQxEe.mjs} +2 -2
  195. package/lib/{w3m-modal-CoTG8Zu4.js → w3m-modal-DSY2qJYP.js} +1 -1
  196. package/lib/{w3m-modal-xqVExHU-.js → w3m-modal-DgqSQLqZ.js} +1 -1
  197. package/lib/{web3-C1wK6wIV.js → web3-BKaP497Y.js} +1 -1
  198. package/lib/{web3-BkEb7AgB.mjs → web3-BifDBsFp.mjs} +8 -4
  199. package/package.json +49 -44
  200. package/dist/assets/create-q7V6muDT.js +0 -1
  201. package/dist/assets/index-B59bCuJJ.js +0 -1
  202. package/lib/constants-BR_zyzqY.js +0 -1
  203. package/lib/index-CXsUtRJQ.js +0 -1
  204. package/lib/solana-Dv_mUYcl.mjs +0 -18
  205. package/lib/solana-g3YsP966.js +0 -1
@@ -1 +1 @@
1
- import{g as x,a as D,i as S,S as m,b as y,T as v,c as B,p as ne,d as oe,e as F,f as R,h as Y,j as se,k as P,l as ae,m as ie}from"./sui-B96bqBVv.js";import{dG as N,cn as ce,dH as L,dI as E,aQ as de,da as M,db as K,d0 as le,cY as I,cp as _,aT as b,cN as ge,cP as q,Q as ue,dJ as fe,d1 as V,cm as pe,bp as $,c9 as he,ds as we,aX as H,cg as ye,dK as me,co as G,d4 as X}from"../main.js";import"./index-DuR9wYhp.js";import{S as Z}from"./unsignedTransaction-BGuwfkhg.js";import"./chain-gFcyni6Z.js";import"./blake2b-Co34_VaK.js";import"./index-CVw-_90u.js";import"./create-q7V6muDT.js";const Q=async(A,t,e)=>{if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await x(A,t);if(!a)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${t}`);const n=a.token_registry.fields?.id?.id;if(!n)throw new Error("Unable to fetch token registry object ID");const s=ce(a.token_registry?.type);if(!s)throw new Error("Unable to fetch token registry package ID");return A.getDynamicFieldObject({parentId:n,name:{type:`${s}::token_registry::Key<${e}>`,value:{dummy_field:!1}}})},U=async(A,t,e,a)=>{const n=await x(A,t);if(!n)throw new Error("Unable to fetch object fields from token bridge state");const s=n.token_registry?.fields?.coin_types,d=s?.fields?.id?.id;if(!d)throw new Error("Unable to fetch coin types");const o=L(s?.type);if(!o)throw new Error("Unable to get key type");const r=await A.getDynamicFieldObject({parentId:d,name:{type:o,value:{addr:[...e],chain:a}}});if(r.error){if(r.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${r.error}`)}const l=D(r);if(!l)return null;if(!S(l))throw new Error("What?");return"value"in l?E(l.value):null};class W{network;chain;provider;contracts;coreBridgeObjectId;tokenBridgeObjectId;chainId;constructor(t,e,a,n){this.network=t,this.chain=e,this.provider=a,this.contracts=n,this.chainId=de.get(t,e);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);const d=this.contracts.coreBridge;if(!d)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=d}static async fromRpc(t,e){const[a,n]=await m.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch: ${s.network} != ${a}`);return new W(a,n,t,s.contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{return!1}}async getOriginalAsset(t){let e=t.getCoinType();if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await Q(this.provider,this.tokenBridgeObjectId,e),n=D(a);if(!n)throw M(e);if(!S(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n))throw new Error("Expected a `value` key in fields of MoveStruct");const s=n.value;if(!y(s))throw new Error("Expected fields to be a MoveStruct");const d=E(s.type);if(e=E(e),d.includes(`wrapped_asset::WrappedAsset<${e}>`)){const o=s.fields.info;if(!y(o))throw new Error("Expected fields to be a MoveStruct");const r=o.fields.token_address;if(!y(r))throw new Error("Expected fields to be a MoveStruct");if(!S(r.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in r.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const l=r.fields.value;if(!y(l))throw new Error("Expected fields to be a MoveStruct");const c=new Uint8Array(l.fields.data);return{chain:le(Number(o.fields.token_chain)),address:new K(c)}}throw M(e)}async getTokenUniversalAddress(t){let e=t.getCoinType();if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await Q(this.provider,this.tokenBridgeObjectId,e),n=D(a);if(!n)throw new Error(`Token of type ${e} has not been registered with the token bridge. Has it been attested?`);if(!S(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n))throw new Error("Expected a `value` key in fields of MoveStruct");const s=n.value;if(!y(s))throw new Error("Expected fields to be a MoveStruct");const d=E(s.type);if(e=E(e),d.includes(`native_asset::NativeAsset<${e}>`)){const o=s.fields.token_address;if(!y(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const r=o.fields.value;if(!y(r))throw new Error("Expected fields to be a MoveStruct");const l=new Uint8Array(r.fields.data);return new K(l)}throw new Error(`Token of type ${e} is not a native asset`)}async getTokenNativeAddress(t,e){const a=await U(this.provider,this.tokenBridgeObjectId,e.toUint8Array(),I(t));if(!a)throw new Error(`Token ${e.toString()} not found in token registry`);return new _(a)}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(b(t.address))throw new Error("Token Address required, 'native' literal not supported");const e=await U(this.provider,this.tokenBridgeObjectId,t.address.toUniversalAddress().toUint8Array(),I(t.chain));if(!e)throw M(ge(t));return q(this.chain,e)}async isTransferCompleted(t){const e=await x(this.provider,this.tokenBridgeObjectId);if(!e)throw new Error("Unable to fetch object fields from token bridge state");const a=e.consumed_vaas?.fields?.hashes,n=L(a?.fields?.items?.type);if(!n)throw new Error("Unable to get key type");const s=a?.fields?.items?.fields?.id?.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const d=await this.provider.getDynamicFieldObject({parentId:s,name:{type:n,value:{data:[...ue(t.hash)]}}});if(!d.error)return!0;if(d.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${d.error}`)}async*createAttestation(t){const e=0n,n=t.toString(),s=await this.provider.getCoinMetadata({coinType:n});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${n} not found`);const[d,o]=await this.getPackageIds(),r=new v,[l]=r.splitCoins(r.gas,[r.pure.u64(e)]),[c]=r.moveCall({target:`${o}::attest_token::attest_token`,arguments:[r.object(this.tokenBridgeObjectId),r.object(s.id),r.pure.u32(0)],typeArguments:[n]});r.moveCall({target:`${d}::publish_message::publish_message`,arguments:[r.object(this.coreBridgeObjectId),l,c,r.object(B)]}),yield this.createUnsignedTx(r,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(t,e){const[a,n]=await this.getPackageIds(),s=e.toString(),d=Math.min(t.payload.decimals,8),o=await this.getCoinBuildOutput(a,n,d),r=await ne(o,s);yield this.createUnsignedTx(r,"Sui.TokenBridge.PrepareCreateWrapped");let l="",c="",f="",p="",k="",h=!1;for(;!h;){await new Promise(u=>setTimeout(u,500));const j=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const u of j.data)if("objectChanges"in u){for(const g of u.objectChanges)oe(g)&&g.packageId!==void 0?l=g.packageId:F(g)&&g.objectType.includes("WrappedAssetSetup")?(c=g.objectId,k=g.objectType.split(", ")[1].replace(">","")):F(g)&&g.objectType.includes("UpgradeCap")?f=g.objectId:F(g)&&g.objectType.includes("CoinMetadata")&&(p=g.objectId);if(l!==""&&c!==""&&f!==""&&p!==""){h=!0;break}else l="",c="",f="",p=""}}const w=fe(l),i=new v,[O]=i.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[i.object(this.coreBridgeObjectId),i.pure.vector("u8",V(t)),i.object(B)]}),[C]=i.moveCall({target:`${n}::vaa::verify_only_once`,arguments:[i.object(this.tokenBridgeObjectId),O]});i.moveCall({target:`${n}::create_wrapped::complete_registration`,arguments:[i.object(this.tokenBridgeObjectId),i.object(p),i.object(c),i.object(f),C],typeArguments:[w,k]}),yield this.createUnsignedTx(i,"Sui.TokenBridge.SubmitAttestation")}async*transfer(t,e,a,n,s){const d=0n,o=0n,l=t.toString(),c=(b(a)?R:a).toString(),f=await m.getCoins(this.provider,t,c),[p,...k]=f.filter(u=>Y(u.coinType,c));if(p===void 0)throw new Error(`Coins array doesn't contain any coins of type ${c}`);const[h,w]=await this.getPackageIds(),i=new v,[O]=(()=>{if(c===R)return i.splitCoins(i.gas,[i.pure.u64(n)]);{const u=i.object(p.coinObjectId);return k.length&&i.mergeCoins(u,k.map(g=>i.object(g.coinObjectId))),i.splitCoins(u,[i.pure.u64(n)])}})(),[C]=i.splitCoins(i.gas,[i.pure.u64(d)]),[j]=i.moveCall({target:`${w}::state::verified_asset`,arguments:[i.object(this.tokenBridgeObjectId)],typeArguments:[c]});if(s){if(!l)throw new Error("senderAddress is required for transfer with payload");let u=!1;const g=await(async()=>{const J=await se(this.provider,h,l);if(J!==null)return i.object(J);{const[re]=i.moveCall({target:`${h}::emitter::new`,arguments:[i.object(this.coreBridgeObjectId)]});return u=!0,re}})(),[T,ee]=i.moveCall({target:`${w}::transfer_tokens_with_payload::prepare_transfer`,arguments:[g,j,O,i.pure.u16(I(e.chain)),i.pure.vector("u8",e.address.toUint8Array()),i.pure.vector("u8",s),i.pure.u32(0)],typeArguments:[c]});i.moveCall({target:`${w}::coin_utils::return_nonzero`,arguments:[ee],typeArguments:[c]});const[te]=i.moveCall({target:`${w}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[i.object(this.tokenBridgeObjectId),T],typeArguments:[c]});i.moveCall({target:`${h}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),C,te,i.object(B)]}),u&&i.transferObjects([g],i.pure.address(l)),yield this.createUnsignedTx(i,"Sui.TokenBridge.TransferWithPayload")}else{const[u,g]=i.moveCall({target:`${w}::transfer_tokens::prepare_transfer`,arguments:[j,O,i.pure.u16(I(e.chain)),i.pure.vector("u8",e.address.toUint8Array()),i.pure.u64(o),i.pure.u32(0)],typeArguments:[c]});i.moveCall({target:`${w}::coin_utils::return_nonzero`,arguments:[g],typeArguments:[c]});const[T]=i.moveCall({target:`${w}::transfer_tokens::transfer_tokens`,arguments:[i.object(this.tokenBridgeObjectId),u],typeArguments:[c]});i.moveCall({target:`${h}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),C,T,i.object(B)]}),yield this.createUnsignedTx(i,"Sui.TokenBridge.Transfer")}}async*redeem(t,e,a=!0){const n=await U(this.provider,this.tokenBridgeObjectId,e.payload.token.address.toUint8Array(),I(e.payload.token.chain));if(!n)throw new Error("Unable to fetch token coinType");const[s,d]=await this.getPackageIds(),o=new v,[r]=o.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure.vector("u8",V(e)),o.object(B)]}),[l]=o.moveCall({target:`${d}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),r]}),[c]=o.moveCall({target:`${d}::complete_transfer::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),l],typeArguments:[n]}),[f]=o.moveCall({target:`${d}::complete_transfer::redeem_relayer_payout`,arguments:[c],typeArguments:[n]});o.moveCall({target:`${d}::coin_utils::return_nonzero`,arguments:[f],typeArguments:[n]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return q(this.chain,R)}async getPackageIds(){return Promise.all([P(this.provider,this.coreBridgeObjectId),P(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(t,e,a){if(a>8)throw new Error("Decimals is capped at 8");const n=(await ae(this.provider,this.tokenBridgeObjectId))?.replace("0x","");if(!n)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+n+"00020106010000000001090b0031"+a.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[pe.encode($.decode(s))],dependencies:["0x1","0x2",e,t].map(o=>he(o))}}createUnsignedTx(t,e,a=!1){return new Z(t,this.network,this.chain,e,a)}}class z{network;chain;connection;contracts;tokenBridgeRelayerObjectId;coreBridgeObjectId;tokenBridgeObjectId;fields;constructor(t,e,a,n){this.network=t,this.chain=e,this.connection=a,this.contracts=n;const{tokenBridge:s,tokenBridgeRelayer:d,coreBridge:o}=n;if(!s||!d||!o)throw new Error(`Some object IDs for ${e} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=d,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=o}static async fromRpc(t,e){const[a,n]=await m.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch for chain ${n}: ${s.network} != ${a}`);return new z(a,n,t,s.contracts)}async*transfer(t,e,a,n,s){const o=new _(b(a)?m.nativeTokenId(this.network,this.chain).address:a).getCoinType(),{coreBridge:r,tokenBridge:l}=await this.getPackageIds(),c=new v,f=BigInt(0),[p]=c.splitCoins(c.gas,[c.pure.u64(f)]),[k]=await(async()=>{if(b(a))return c.splitCoins(c.gas,[c.pure.u64(n)]);{const C=await m.getCoins(this.connection,t,o),[j,...u]=C.filter(T=>T.coinType===o);if(j===void 0)throw new Error(`Coins array doesn't contain any coins of type ${o}`);const g=c.object(j.coinObjectId);return u.length&&c.mergeCoins(g,u.map(T=>c.object(T.coinObjectId))),c.splitCoins(g,[c.pure.u64(n)])}})(),[h]=c.moveCall({target:`${l}::state::verified_asset`,arguments:[c.object(this.tokenBridgeObjectId)],typeArguments:[o]}),w=await this.getPackageId(),[i]=c.moveCall({target:`${w}::transfer::transfer_tokens_with_relay`,arguments:[c.object(this.tokenBridgeRelayerObjectId),k,h,c.pure.u64(s??0n),c.pure.u16(I(e.chain)),c.pure.address($.encode(e.address.toUint8Array(),!0)),c.pure.u32(123)],typeArguments:[o]}),[O]=c.moveCall({target:`${l}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[c.object(this.tokenBridgeObjectId),i],typeArguments:[o]});c.moveCall({target:`${r}::publish_message::publish_message`,arguments:[c.object(this.coreBridgeObjectId),p,O,c.object(B)]}),yield this.createUnsignedTx(c,"AutomaticTokenBridge.transfer")}async*redeem(t,e){const{coreBridge:a,tokenBridge:n}=await this.getPackageIds(),{address:s,chain:d}=e.payload.token,o=await U(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),I(d));if(!o)throw new Error("Unable to fetch token coinType");const r=new v,[l]=r.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[r.object(this.coreBridgeObjectId),r.pure.vector("u8",V(e)),r.object(B)]}),[c]=r.moveCall({target:`${n}::vaa::verify_only_once`,arguments:[r.object(this.tokenBridgeObjectId),l]}),[f]=r.moveCall({target:`${n}::complete_transfer_with_payload::authorize_transfer`,arguments:[r.object(this.tokenBridgeObjectId),c],typeArguments:[o]}),p=await this.getPackageId();r.moveCall({target:`${p}::redeem::complete_transfer`,arguments:[r.object(this.tokenBridgeRelayerObjectId),f],typeArguments:[o]}),yield this.createUnsignedTx(r,"AutomaticTokenBridge.redeem")}async getRelayerFee(t,e){const a=b(e)?m.nativeTokenId(this.network,this.chain):e,n=await this.getTokenInfo(a.toString());if(n===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),d=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(we.encode("relayer_fees"))}});if(!d.data||!d.data.content)throw d.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:o}=d.data;if(!y(o)||!ie(o.fields.id))throw new Error("Unable to compute relayer fee");const r=await this.connection.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:I(t)}});if(!r.data||!r.data.content)throw r.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:l}=r.data;if(!y(l))throw new Error("Unable to compute relayer fee");const c=await m.getDecimals(this.network,this.chain,this.connection,e.toString()),f=n.swap_rate,p=s.relayer_fee_precision,k=s.swap_rate_precision,h=l.fields.value;return 10n**BigInt(c)*BigInt(h)*BigInt(k)/(BigInt(f)*BigInt(p))}async maxSwapAmount(t){const a=(b(t)?m.nativeTokenId(this.network,this.chain):t).toString(),n=await this.connection.getCoinMetadata({coinType:a});if(!n)throw new Error("metadata is null");const s=await this.getPackageId(),d=new v;d.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[d.object(this.tokenBridgeRelayerObjectId),d.pure.u8(n.decimals)],typeArguments:[a]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:d,sender:$.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!o.results[0]?.returnValues||o.results[0]?.returnValues.length!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(t,e){const n=(b(t)?m.nativeTokenId(this.network,this.chain):t).toString(),s=await this.connection.getCoinMetadata({coinType:n});if(!s)throw new Error("metadata is null");const d=await this.getPackageId(),o=new v;o.moveCall({target:`${d}::redeem::calculate_native_swap_amount_out`,arguments:[o.object(this.tokenBridgeRelayerObjectId),o.pure.u64(e),o.pure.u8(s.decimals)],typeArguments:[n]});const r=await this.connection.devInspectTransactionBlock({transactionBlock:o,sender:$.encode(new Uint8Array(32))});if(!r.results||r.results.length==0||!r.results[0]?.returnValues||r.results[0]?.returnValues.length!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(r.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const e=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:e})).data.map(s=>{const{address:d,module:o,name:r}=ye(s.objectType);return new _([d,o,r].join(me))})}async isRegisteredToken(t){const e=new _(b(t)?m.nativeTokenId(this.network,this.chain).address:t).unwrap();try{return await this.getTokenInfo(e)!==null}catch(a){console.error(a)}return!1}async getTokenInfo(t){const e=await this.getFields(),n=new _(e.registered_tokens.type).getPackageId(),s=e.registered_tokens.fields.id.id,d=new _(t),o=Y(G,d.unwrap())?G:d.getCoinType();try{const r=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${n}::registered_tokens::Key<${o}>`,value:{dummy_field:!1}}});if(r.error)throw new Error("Failed to get token info: "+JSON.stringify(r.error));if(!r.data||!r.data.content)throw new Error("Failed to get token info: "+JSON.stringify(r));const{content:l}=r.data;return y(l)&&y(l.fields.value)?l.fields.value.fields:null}catch(r){if(r?.code===-32e3&&r.message?.includes("RPC Error"))return console.error(r),null;throw r}}async getFields(){if(!this.fields){const t=await x(this.connection,this.tokenBridgeRelayerObjectId);if(t===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=t}return this.fields}async getPackageId(){const t=await this.getFields();return new _(t.registered_tokens.type).getPackageId()}async getPackageIds(){const[t,e]=await Promise.all([P(this.connection,this.coreBridgeObjectId),P(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:t,tokenBridge:e}}createUnsignedTx(t,e,a=!1){return new Z(t,this.network,this.chain,e,a)}}X("Sui","TokenBridge",W);X("Sui","AutomaticTokenBridge",z);export{z as SuiAutomaticTokenBridge,W as SuiTokenBridge,U as getTokenCoinType,Q as getTokenFromTokenRegistry};
1
+ import{g as x,a as D,i as S,S as m,b as y,T as v,c as B,p as ne,d as oe,e as F,f as R,h as Y,j as se,k as P,l as ae,m as ie}from"./sui-7K04yY2U.js";import{dH as N,cn as ce,dI as G,dJ as E,aQ as de,da as M,db as K,d0 as le,cY as I,cp as _,aT as b,cN as ge,cP as q,Q as ue,dK as fe,d1 as V,cm as pe,bp as $,c9 as he,dt as we,aX as H,cg as ye,dL as me,co as L,d4 as X}from"../main.js";import"./index-aoYIFErC.js";import{S as Z}from"./unsignedTransaction-BGuwfkhg.js";import"./chain-gFcyni6Z.js";import"./blake2b-Co34_VaK.js";import"./index-CVw-_90u.js";import"./create-54a95t1x.js";const Q=async(A,t,e)=>{if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await x(A,t);if(!a)throw new Error(`Unable to fetch object fields from token bridge state. Object ID: ${t}`);const n=a.token_registry.fields?.id?.id;if(!n)throw new Error("Unable to fetch token registry object ID");const s=ce(a.token_registry?.type);if(!s)throw new Error("Unable to fetch token registry package ID");return A.getDynamicFieldObject({parentId:n,name:{type:`${s}::token_registry::Key<${e}>`,value:{dummy_field:!1}}})},U=async(A,t,e,a)=>{const n=await x(A,t);if(!n)throw new Error("Unable to fetch object fields from token bridge state");const s=n.token_registry?.fields?.coin_types,d=s?.fields?.id?.id;if(!d)throw new Error("Unable to fetch coin types");const o=G(s?.type);if(!o)throw new Error("Unable to get key type");const r=await A.getDynamicFieldObject({parentId:d,name:{type:o,value:{addr:[...e],chain:a}}});if(r.error){if(r.error.code==="dynamicFieldNotFound")return null;throw new Error(`Unexpected getDynamicFieldObject response ${r.error}`)}const l=D(r);if(!l)return null;if(!S(l))throw new Error("What?");return"value"in l?E(l.value):null};class W{network;chain;provider;contracts;coreBridgeObjectId;tokenBridgeObjectId;chainId;constructor(t,e,a,n){this.network=t,this.chain=e,this.provider=a,this.contracts=n,this.chainId=de.get(t,e);const s=this.contracts.tokenBridge;if(!s)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);const d=this.contracts.coreBridge;if(!d)throw new Error(`Wormhole Token Bridge contract for domain ${e} not found`);this.tokenBridgeObjectId=s,this.coreBridgeObjectId=d}static async fromRpc(t,e){const[a,n]=await m.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch: ${s.network} != ${a}`);return new W(a,n,t,s.contracts)}async isWrappedAsset(t){try{return await this.getOriginalAsset(t),!0}catch{return!1}}async getOriginalAsset(t){let e=t.getCoinType();if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await Q(this.provider,this.tokenBridgeObjectId,e),n=D(a);if(!n)throw M(e);if(!S(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n))throw new Error("Expected a `value` key in fields of MoveStruct");const s=n.value;if(!y(s))throw new Error("Expected fields to be a MoveStruct");const d=E(s.type);if(e=E(e),d.includes(`wrapped_asset::WrappedAsset<${e}>`)){const o=s.fields.info;if(!y(o))throw new Error("Expected fields to be a MoveStruct");const r=o.fields.token_address;if(!y(r))throw new Error("Expected fields to be a MoveStruct");if(!S(r.fields))throw new Error("Expected address data to be a MoveObject");if(!("value"in r.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const l=r.fields.value;if(!y(l))throw new Error("Expected fields to be a MoveStruct");const c=new Uint8Array(l.fields.data);return{chain:le(Number(o.fields.token_chain)),address:new K(c)}}throw M(e)}async getTokenUniversalAddress(t){let e=t.getCoinType();if(!N(e))throw new Error(`Invalid Sui type: ${e}`);const a=await Q(this.provider,this.tokenBridgeObjectId,e),n=D(a);if(!n)throw new Error(`Token of type ${e} has not been registered with the token bridge. Has it been attested?`);if(!S(n))throw new Error("Expected fields to be a MoveStruct");if(!("value"in n))throw new Error("Expected a `value` key in fields of MoveStruct");const s=n.value;if(!y(s))throw new Error("Expected fields to be a MoveStruct");const d=E(s.type);if(e=E(e),d.includes(`native_asset::NativeAsset<${e}>`)){const o=s.fields.token_address;if(!y(o))throw new Error("Expected fields to be a MoveStruct");if(!("value"in o.fields))throw new Error("Expected a `value` key in fields of MoveStruct");const r=o.fields.value;if(!y(r))throw new Error("Expected fields to be a MoveStruct");const l=new Uint8Array(r.fields.data);return new K(l)}throw new Error(`Token of type ${e} is not a native asset`)}async getTokenNativeAddress(t,e){const a=await U(this.provider,this.tokenBridgeObjectId,e.toUint8Array(),I(t));if(!a)throw new Error(`Token ${e.toString()} not found in token registry`);return new _(a)}async hasWrappedAsset(t){try{return await this.getWrappedAsset(t),!0}catch{}return!1}async getWrappedAsset(t){if(b(t.address))throw new Error("Token Address required, 'native' literal not supported");const e=await U(this.provider,this.tokenBridgeObjectId,t.address.toUniversalAddress().toUint8Array(),I(t.chain));if(!e)throw M(ge(t));return q(this.chain,e)}async isTransferCompleted(t){const e=await x(this.provider,this.tokenBridgeObjectId);if(!e)throw new Error("Unable to fetch object fields from token bridge state");const a=e.consumed_vaas?.fields?.hashes,n=G(a?.fields?.items?.type);if(!n)throw new Error("Unable to get key type");const s=a?.fields?.items?.fields?.id?.id;if(!s)throw new Error("Unable to fetch consumed VAAs table");const d=await this.provider.getDynamicFieldObject({parentId:s,name:{type:n,value:{data:[...ue(t.hash)]}}});if(!d.error)return!0;if(d.error.code==="dynamicFieldNotFound")return!1;throw new Error(`Unexpected getDynamicFieldObject response ${d.error}`)}async*createAttestation(t){const e=0n,n=t.toString(),s=await this.provider.getCoinMetadata({coinType:n});if(s===null||s.id===null)throw new Error(`Coin metadata ID for type ${n} not found`);const[d,o]=await this.getPackageIds(),r=new v,[l]=r.splitCoins(r.gas,[r.pure.u64(e)]),[c]=r.moveCall({target:`${o}::attest_token::attest_token`,arguments:[r.object(this.tokenBridgeObjectId),r.object(s.id),r.pure.u32(0)],typeArguments:[n]});r.moveCall({target:`${d}::publish_message::publish_message`,arguments:[r.object(this.coreBridgeObjectId),l,c,r.object(B)]}),yield this.createUnsignedTx(r,"Sui.TokenBridge.CreateAttestation")}async*submitAttestation(t,e){const[a,n]=await this.getPackageIds(),s=e.toString(),d=Math.min(t.payload.decimals,8),o=await this.getCoinBuildOutput(a,n,d),r=await ne(o,s);yield this.createUnsignedTx(r,"Sui.TokenBridge.PrepareCreateWrapped");let l="",c="",f="",p="",k="",h=!1;for(;!h;){await new Promise(u=>setTimeout(u,500));const j=await this.provider.queryTransactionBlocks({filter:{FromAddress:s},options:{showObjectChanges:!0},limit:3});for(const u of j.data)if("objectChanges"in u){for(const g of u.objectChanges)oe(g)&&g.packageId!==void 0?l=g.packageId:F(g)&&g.objectType.includes("WrappedAssetSetup")?(c=g.objectId,k=g.objectType.split(", ")[1].replace(">","")):F(g)&&g.objectType.includes("UpgradeCap")?f=g.objectId:F(g)&&g.objectType.includes("CoinMetadata")&&(p=g.objectId);if(l!==""&&c!==""&&f!==""&&p!==""){h=!0;break}else l="",c="",f="",p=""}}const w=fe(l),i=new v,[O]=i.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[i.object(this.coreBridgeObjectId),i.pure.vector("u8",V(t)),i.object(B)]}),[C]=i.moveCall({target:`${n}::vaa::verify_only_once`,arguments:[i.object(this.tokenBridgeObjectId),O]});i.moveCall({target:`${n}::create_wrapped::complete_registration`,arguments:[i.object(this.tokenBridgeObjectId),i.object(p),i.object(c),i.object(f),C],typeArguments:[w,k]}),yield this.createUnsignedTx(i,"Sui.TokenBridge.SubmitAttestation")}async*transfer(t,e,a,n,s){const d=0n,o=0n,l=t.toString(),c=(b(a)?R:a).toString(),f=await m.getCoins(this.provider,t,c),[p,...k]=f.filter(u=>Y(u.coinType,c));if(p===void 0)throw new Error(`Coins array doesn't contain any coins of type ${c}`);const[h,w]=await this.getPackageIds(),i=new v,[O]=(()=>{if(c===R)return i.splitCoins(i.gas,[i.pure.u64(n)]);{const u=i.object(p.coinObjectId);return k.length&&i.mergeCoins(u,k.map(g=>i.object(g.coinObjectId))),i.splitCoins(u,[i.pure.u64(n)])}})(),[C]=i.splitCoins(i.gas,[i.pure.u64(d)]),[j]=i.moveCall({target:`${w}::state::verified_asset`,arguments:[i.object(this.tokenBridgeObjectId)],typeArguments:[c]});if(s){if(!l)throw new Error("senderAddress is required for transfer with payload");let u=!1;const g=await(async()=>{const J=await se(this.provider,h,l);if(J!==null)return i.object(J);{const[re]=i.moveCall({target:`${h}::emitter::new`,arguments:[i.object(this.coreBridgeObjectId)]});return u=!0,re}})(),[T,ee]=i.moveCall({target:`${w}::transfer_tokens_with_payload::prepare_transfer`,arguments:[g,j,O,i.pure.u16(I(e.chain)),i.pure.vector("u8",e.address.toUint8Array()),i.pure.vector("u8",s),i.pure.u32(0)],typeArguments:[c]});i.moveCall({target:`${w}::coin_utils::return_nonzero`,arguments:[ee],typeArguments:[c]});const[te]=i.moveCall({target:`${w}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[i.object(this.tokenBridgeObjectId),T],typeArguments:[c]});i.moveCall({target:`${h}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),C,te,i.object(B)]}),u&&i.transferObjects([g],i.pure.address(l)),yield this.createUnsignedTx(i,"Sui.TokenBridge.TransferWithPayload")}else{const[u,g]=i.moveCall({target:`${w}::transfer_tokens::prepare_transfer`,arguments:[j,O,i.pure.u16(I(e.chain)),i.pure.vector("u8",e.address.toUint8Array()),i.pure.u64(o),i.pure.u32(0)],typeArguments:[c]});i.moveCall({target:`${w}::coin_utils::return_nonzero`,arguments:[g],typeArguments:[c]});const[T]=i.moveCall({target:`${w}::transfer_tokens::transfer_tokens`,arguments:[i.object(this.tokenBridgeObjectId),u],typeArguments:[c]});i.moveCall({target:`${h}::publish_message::publish_message`,arguments:[i.object(this.coreBridgeObjectId),C,T,i.object(B)]}),yield this.createUnsignedTx(i,"Sui.TokenBridge.Transfer")}}async*redeem(t,e,a=!0){const n=await U(this.provider,this.tokenBridgeObjectId,e.payload.token.address.toUint8Array(),I(e.payload.token.chain));if(!n)throw new Error("Unable to fetch token coinType");const[s,d]=await this.getPackageIds(),o=new v,[r]=o.moveCall({target:`${s}::vaa::parse_and_verify`,arguments:[o.object(this.coreBridgeObjectId),o.pure.vector("u8",V(e)),o.object(B)]}),[l]=o.moveCall({target:`${d}::vaa::verify_only_once`,arguments:[o.object(this.tokenBridgeObjectId),r]}),[c]=o.moveCall({target:`${d}::complete_transfer::authorize_transfer`,arguments:[o.object(this.tokenBridgeObjectId),l],typeArguments:[n]}),[f]=o.moveCall({target:`${d}::complete_transfer::redeem_relayer_payout`,arguments:[c],typeArguments:[n]});o.moveCall({target:`${d}::coin_utils::return_nonzero`,arguments:[f],typeArguments:[n]}),yield this.createUnsignedTx(o,"Sui.TokenBridge.Redeem")}async getWrappedNative(){return q(this.chain,R)}async getPackageIds(){return Promise.all([P(this.provider,this.coreBridgeObjectId),P(this.provider,this.tokenBridgeObjectId)])}async getCoinBuildOutput(t,e,a){if(a>8)throw new Error("Decimals is capped at 8");const n=(await ae(this.provider,this.tokenBridgeObjectId))?.replace("0x","");if(!n)throw new Error(`Original token bridge package ID not found for object ID ${this.tokenBridgeObjectId}`);const s="a11ceb0b060000000901000a020a14031e1704350405392d07669f01088502600ae502050cea02160004010b010c0205020d000002000201020003030c020001000104020700000700010001090801010c020a050600030803040202000302010702080007080100020800080303090002070801010b020209000901010608010105010b0202080008030209000504434f494e095478436f6e7465787408565f5f305f325f3011577261707065644173736574536574757004636f696e0e6372656174655f777261707065640b64756d6d795f6669656c6404696e697414707265706172655f726567697374726174696f6e0f7075626c69635f7472616e736665720673656e646572087472616e736665720a74785f636f6e746578740f76657273696f6e5f636f6e74726f6c00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002"+n+"00020106010000000001090b0031"+a.toString(16).padStart(2,"0")+"0a0138000b012e110238010200";return{modules:[pe.encode($.decode(s))],dependencies:["0x1","0x2",e,t].map(o=>he(o))}}createUnsignedTx(t,e,a=!1){return new Z(t,this.network,this.chain,e,a)}}class z{network;chain;connection;contracts;tokenBridgeRelayerObjectId;coreBridgeObjectId;tokenBridgeObjectId;fields;constructor(t,e,a,n){this.network=t,this.chain=e,this.connection=a,this.contracts=n;const{tokenBridge:s,tokenBridgeRelayer:d,coreBridge:o}=n;if(!s||!d||!o)throw new Error(`Some object IDs for ${e} Automatic Token Bridge not found`);this.tokenBridgeRelayerObjectId=d,this.tokenBridgeObjectId=s,this.coreBridgeObjectId=o}static async fromRpc(t,e){const[a,n]=await m.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch for chain ${n}: ${s.network} != ${a}`);return new z(a,n,t,s.contracts)}async*transfer(t,e,a,n,s){const o=new _(b(a)?m.nativeTokenId(this.network,this.chain).address:a).getCoinType(),{coreBridge:r,tokenBridge:l}=await this.getPackageIds(),c=new v,f=BigInt(0),[p]=c.splitCoins(c.gas,[c.pure.u64(f)]),[k]=await(async()=>{if(b(a))return c.splitCoins(c.gas,[c.pure.u64(n)]);{const C=await m.getCoins(this.connection,t,o),[j,...u]=C.filter(T=>T.coinType===o);if(j===void 0)throw new Error(`Coins array doesn't contain any coins of type ${o}`);const g=c.object(j.coinObjectId);return u.length&&c.mergeCoins(g,u.map(T=>c.object(T.coinObjectId))),c.splitCoins(g,[c.pure.u64(n)])}})(),[h]=c.moveCall({target:`${l}::state::verified_asset`,arguments:[c.object(this.tokenBridgeObjectId)],typeArguments:[o]}),w=await this.getPackageId(),[i]=c.moveCall({target:`${w}::transfer::transfer_tokens_with_relay`,arguments:[c.object(this.tokenBridgeRelayerObjectId),k,h,c.pure.u64(s??0n),c.pure.u16(I(e.chain)),c.pure.address($.encode(e.address.toUint8Array(),!0)),c.pure.u32(123)],typeArguments:[o]}),[O]=c.moveCall({target:`${l}::transfer_tokens_with_payload::transfer_tokens_with_payload`,arguments:[c.object(this.tokenBridgeObjectId),i],typeArguments:[o]});c.moveCall({target:`${r}::publish_message::publish_message`,arguments:[c.object(this.coreBridgeObjectId),p,O,c.object(B)]}),yield this.createUnsignedTx(c,"AutomaticTokenBridge.transfer")}async*redeem(t,e){const{coreBridge:a,tokenBridge:n}=await this.getPackageIds(),{address:s,chain:d}=e.payload.token,o=await U(this.connection,this.tokenBridgeObjectId,s.toUniversalAddress().toUint8Array(),I(d));if(!o)throw new Error("Unable to fetch token coinType");const r=new v,[l]=r.moveCall({target:`${a}::vaa::parse_and_verify`,arguments:[r.object(this.coreBridgeObjectId),r.pure.vector("u8",V(e)),r.object(B)]}),[c]=r.moveCall({target:`${n}::vaa::verify_only_once`,arguments:[r.object(this.tokenBridgeObjectId),l]}),[f]=r.moveCall({target:`${n}::complete_transfer_with_payload::authorize_transfer`,arguments:[r.object(this.tokenBridgeObjectId),c],typeArguments:[o]}),p=await this.getPackageId();r.moveCall({target:`${p}::redeem::complete_transfer`,arguments:[r.object(this.tokenBridgeRelayerObjectId),f],typeArguments:[o]}),yield this.createUnsignedTx(r,"AutomaticTokenBridge.redeem")}async getRelayerFee(t,e){const a=b(e)?m.nativeTokenId(this.network,this.chain):e,n=await this.getTokenInfo(a.toString());if(n===null)throw new Error("Unsupported token for relay");const s=await this.getFields(),d=await this.connection.getDynamicFieldObject({parentId:this.tokenBridgeRelayerObjectId,name:{type:"vector<u8>",value:Array.from(we.encode("relayer_fees"))}});if(!d.data||!d.data.content)throw d.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:o}=d.data;if(!y(o)||!ie(o.fields.id))throw new Error("Unable to compute relayer fee");const r=await this.connection.getDynamicFieldObject({parentId:o.fields.id.id,name:{type:"u16",value:I(t)}});if(!r.data||!r.data.content)throw r.error?new Error("Failed to get relayer fees: "+JSON.stringify(d.error)):new Error("Unable to compute relayer fee");const{content:l}=r.data;if(!y(l))throw new Error("Unable to compute relayer fee");const c=await m.getDecimals(this.network,this.chain,this.connection,e.toString()),f=n.swap_rate,p=s.relayer_fee_precision,k=s.swap_rate_precision,h=l.fields.value;return 10n**BigInt(c)*BigInt(h)*BigInt(k)/(BigInt(f)*BigInt(p))}async maxSwapAmount(t){const a=(b(t)?m.nativeTokenId(this.network,this.chain):t).toString(),n=await this.connection.getCoinMetadata({coinType:a});if(!n)throw new Error("metadata is null");const s=await this.getPackageId(),d=new v;d.moveCall({target:`${s}::redeem::calculate_max_swap_amount_in`,arguments:[d.object(this.tokenBridgeRelayerObjectId),d.pure.u8(n.decimals)],typeArguments:[a]});const o=await this.connection.devInspectTransactionBlock({transactionBlock:d,sender:$.encode(new Uint8Array(32))});if(!o.results||o.results.length==0||!o.results[0]?.returnValues||o.results[0]?.returnValues.length!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(o.results[0].returnValues[0][0].toReversed()))}async nativeTokenAmount(t,e){const n=(b(t)?m.nativeTokenId(this.network,this.chain):t).toString(),s=await this.connection.getCoinMetadata({coinType:n});if(!s)throw new Error("metadata is null");const d=await this.getPackageId(),o=new v;o.moveCall({target:`${d}::redeem::calculate_native_swap_amount_out`,arguments:[o.object(this.tokenBridgeRelayerObjectId),o.pure.u64(e),o.pure.u8(s.decimals)],typeArguments:[n]});const r=await this.connection.devInspectTransactionBlock({transactionBlock:o,sender:$.encode(new Uint8Array(32))});if(!r.results||r.results.length==0||!r.results[0]?.returnValues||r.results[0]?.returnValues.length!==1)throw Error("swap rate not set");return H.decode(new Uint8Array(r.results[0].returnValues[0][0].toReversed()))}async getRegisteredTokens(){const e=(await this.getFields()).registered_tokens.fields.id.id;return(await this.connection.getDynamicFields({parentId:e})).data.map(s=>{const{address:d,module:o,name:r}=ye(s.objectType);return new _([d,o,r].join(me))})}async isRegisteredToken(t){const e=new _(b(t)?m.nativeTokenId(this.network,this.chain).address:t).unwrap();try{return await this.getTokenInfo(e)!==null}catch(a){console.error(a)}return!1}async getTokenInfo(t){const e=await this.getFields(),n=new _(e.registered_tokens.type).getPackageId(),s=e.registered_tokens.fields.id.id,d=new _(t),o=Y(L,d.unwrap())?L:d.getCoinType();try{const r=await this.connection.getDynamicFieldObject({parentId:s,name:{type:`${n}::registered_tokens::Key<${o}>`,value:{dummy_field:!1}}});if(r.error)throw new Error("Failed to get token info: "+JSON.stringify(r.error));if(!r.data||!r.data.content)throw new Error("Failed to get token info: "+JSON.stringify(r));const{content:l}=r.data;return y(l)&&y(l.fields.value)?l.fields.value.fields:null}catch(r){if(r?.code===-32e3&&r.message?.includes("RPC Error"))return console.error(r),null;throw r}}async getFields(){if(!this.fields){const t=await x(this.connection,this.tokenBridgeRelayerObjectId);if(t===null)throw new Error("Failed to get fields from token bridge relayer state");this.fields=t}return this.fields}async getPackageId(){const t=await this.getFields();return new _(t.registered_tokens.type).getPackageId()}async getPackageIds(){const[t,e]=await Promise.all([P(this.connection,this.coreBridgeObjectId),P(this.connection,this.tokenBridgeObjectId)]);return{coreBridge:t,tokenBridge:e}}createUnsignedTx(t,e,a=!1){return new Z(t,this.network,this.chain,e,a)}}X("Sui","TokenBridge",W);X("Sui","AutomaticTokenBridge",z);export{z as SuiAutomaticTokenBridge,W as SuiTokenBridge,U as getTokenCoinType,Q as getTokenFromTokenRegistry};
@@ -1 +1 @@
1
- import{cY as i,db as c,bp as m,d4 as d}from"../main.js";import{A as h}from"./aptos-CIKjhZ5R.js";import{c as p}from"./create-q7V6muDT.js";import"./chain-gFcyni6Z.js";import"./chunk-KJH4KKG6-p4BHhvLs.js";import"./index-CVw-_90u.js";import"./index-VWaDGczM.js";class s{network;chain;connection;contracts;chainId;coreBridge;constructor(e,n,t,o){this.network=e,this.chain=n,this.connection=t,this.contracts=o,this.chainId=i(n);const r=o.coreBridge;if(!r)throw new Error(`CoreBridge contract Address for chain ${n} not found`);this.coreBridge=r}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,n){const[t,o]=await h.chainFromRpc(e),r=n[o];if(r.network!==t)throw new Error(`Network mismatch: ${r.network} !== ${t}`);return new s(t,o,e,r.contracts)}async*publishMessage(e,n){throw new Error("Method not implemented.")}async*verifyMessage(e,n){throw new Error("Not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(t=>({chain:t.emitterChain,emitter:t.emitterAddress,sequence:t.sequence}))}async parseMessages(e){const n=await this.connection.getTransactionByHash({transactionHash:e});if(n.type!=="user_transaction")throw new Error(`${e} is not a user_transaction`);const t=n.events.filter(o=>o.type.endsWith("WormholeMessage"));if(!t||t.length===0)throw new Error(`WormholeMessage not found for ${e}`);return t.map(o=>{const r=o.data,a=new c(BigInt(r.sender).toString(16).padStart(64,"0"));return p("Uint8Array",{guardianSet:0,emitterChain:this.chain,emitterAddress:a,sequence:BigInt(r.sequence),timestamp:Number(r.timestamp),consistencyLevel:r.consistency_level,nonce:Number(r.nonce),signatures:[],payload:m.decode(r.payload)})})}}d("Aptos","WormholeCore",s);export{s as AptosWormholeCore};
1
+ import{cY as i,db as c,bp as m,d4 as d}from"../main.js";import{A as h}from"./aptos-CaGPw7HM.js";import{c as p}from"./create-54a95t1x.js";import"./chain-gFcyni6Z.js";import"./chunk-KJH4KKG6-p4BHhvLs.js";import"./index-CVw-_90u.js";import"./index-VWaDGczM.js";class s{network;chain;connection;contracts;chainId;coreBridge;constructor(e,n,t,o){this.network=e,this.chain=n,this.connection=t,this.contracts=o,this.chainId=i(n);const r=o.coreBridge;if(!r)throw new Error(`CoreBridge contract Address for chain ${n} not found`);this.coreBridge=r}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,n){const[t,o]=await h.chainFromRpc(e),r=n[o];if(r.network!==t)throw new Error(`Network mismatch: ${r.network} !== ${t}`);return new s(t,o,e,r.contracts)}async*publishMessage(e,n){throw new Error("Method not implemented.")}async*verifyMessage(e,n){throw new Error("Not implemented.")}async parseTransaction(e){return(await this.parseMessages(e)).map(t=>({chain:t.emitterChain,emitter:t.emitterAddress,sequence:t.sequence}))}async parseMessages(e){const n=await this.connection.getTransactionByHash({transactionHash:e});if(n.type!=="user_transaction")throw new Error(`${e} is not a user_transaction`);const t=n.events.filter(o=>o.type.endsWith("WormholeMessage"));if(!t||t.length===0)throw new Error(`WormholeMessage not found for ${e}`);return t.map(o=>{const r=o.data,a=new c(BigInt(r.sender).toString(16).padStart(64,"0"));return p("Uint8Array",{guardianSet:0,emitterChain:this.chain,emitterAddress:a,sequence:BigInt(r.sequence),timestamp:Number(r.timestamp),consistencyLevel:r.consistency_level,nonce:Number(r.nonce),signatures:[],payload:m.decode(r.payload)})})}}d("Aptos","WormholeCore",s);export{s as AptosWormholeCore};
@@ -1 +1 @@
1
- import{y as w,l as u,w as l,x as T}from"./chunk-KJH4KKG6-p4BHhvLs.js";import{dF as S,d7 as B,d5 as I,Q as U,bp as h,d6 as y,d8 as v,d4 as D}from"../main.js";import{A as E}from"./aptos-CIKjhZ5R.js";import{A as $}from"./unsignedTransaction-DgTB4Wlj.js";import"./index-CVw-_90u.js";import"./index-VWaDGczM.js";import"./chain-gFcyni6Z.js";const R=[["Mainnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000019bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d0000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f17729bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d000001070b000e010e02110011010102"}],["Testnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000015f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b90000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d95f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9000001070b000e010e02110011010102"}]],k=S(R,[0,1]);class p{network;chain;provider;contracts;usdcId;tokenMessengerId;messageTransmitterId;moveScripts;constructor(t,r,n,e){if(this.network=t,this.chain=r,this.provider=n,this.contracts=e,t==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=B.get(this.network,this.chain);if(!s)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!e.cctp?.tokenMessenger)throw new Error(`Circle Token Messenger contract for domain ${r} not found`);if(!e.cctp?.messageTransmitter)throw new Error(`Circle Message Transmitter contract for domain ${r} not found`);if(!k.has(t))throw new Error("No Aptos CCTP move scripts found");this.usdcId=s,this.tokenMessengerId=e.cctp?.tokenMessenger,this.messageTransmitterId=e.cctp.messageTransmitter,this.moveScripts=k.get(t)}async*transfer(t,r,n){const e=new w(I.get(this.network,r.chain)),s=u.from(this.usdcId),o=u.from(r.address.toUniversalAddress().toUint8Array()),a=[new l(n),e,o,s],d={bytecode:this.moveScripts.depositForBurn,functionArguments:a};yield this.createUnsignedTx(d,"Aptos.CircleBridge.Transfer")}async isTransferCompleted(t){const r=new w(t.sourceDomain).bcsToBytes(),n=new l(t.nonce).bcsToBytes(),e=U(new Uint8Array([...r,45,...n])),s=h.encode(e);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[s]}}))[0]}async*redeem(t,r,n){const e=[T.U8(y.serialize(r)),T.U8(h.decode(n))],s={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:e};yield this.createUnsignedTx(s,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(t){let e,s;for(let i=0;i<5;i++)try{const f=await this.provider.getTransactionByHash({transactionHash:t}),b=this.messageTransmitterId.replace(/^0x0+/,"0x");if(s=f.events?.find(m=>m.type===`${b}::message_transmitter::MessageSent`),s)break;e=new Error(`MessageSent event not found in transaction ${t}`),i<4&&await new Promise(m=>setTimeout(m,1e3))}catch(f){e=f,i<4&&await new Promise(b=>setTimeout(b,1e3))}if(!s)throw e||new Error("No MessageSent event found after 5 attempts");const o=h.decode(s.data.message),[a,d]=y.deserialize(o),{payload:c}=a,C=c.messageSender,M=c.mintRecipient,g=v(this.network,a.sourceDomain),x=v(this.network,a.destinationDomain),A={chain:g,address:c.burnToken};return{from:{chain:g,address:C},to:{chain:x,address:M},token:A,amount:c.amount,message:a,id:{hash:d}}}static async fromRpc(t,r){const[n,e]=await E.chainFromRpc(t),s=r[e];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new p(n,e,t,s.contracts)}createUnsignedTx(t,r,n=!1){return new $(t,this.network,this.chain,r,n)}}D("Aptos","CircleBridge",p);export{p as AptosCircleBridge};
1
+ import{y as w,l as u,w as l,x as T}from"./chunk-KJH4KKG6-p4BHhvLs.js";import{dG as S,d7 as B,d5 as I,Q as U,bp as h,d6 as y,d8 as v,d4 as D}from"../main.js";import{A as E}from"./aptos-CaGPw7HM.js";import{A as $}from"./unsignedTransaction-DgTB4Wlj.js";import"./index-CVw-_90u.js";import"./index-VWaDGczM.js";import"./chain-gFcyni6Z.js";const R=[["Mainnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000019bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d0000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f17729bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d000001070b000e010e02110011010102"}],["Testnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000015f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b90000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d95f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9000001070b000e010e02110011010102"}]],k=S(R,[0,1]);class p{network;chain;provider;contracts;usdcId;tokenMessengerId;messageTransmitterId;moveScripts;constructor(t,r,n,e){if(this.network=t,this.chain=r,this.provider=n,this.contracts=e,t==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=B.get(this.network,this.chain);if(!s)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!e.cctp?.tokenMessenger)throw new Error(`Circle Token Messenger contract for domain ${r} not found`);if(!e.cctp?.messageTransmitter)throw new Error(`Circle Message Transmitter contract for domain ${r} not found`);if(!k.has(t))throw new Error("No Aptos CCTP move scripts found");this.usdcId=s,this.tokenMessengerId=e.cctp?.tokenMessenger,this.messageTransmitterId=e.cctp.messageTransmitter,this.moveScripts=k.get(t)}async*transfer(t,r,n){const e=new w(I.get(this.network,r.chain)),s=u.from(this.usdcId),o=u.from(r.address.toUniversalAddress().toUint8Array()),a=[new l(n),e,o,s],d={bytecode:this.moveScripts.depositForBurn,functionArguments:a};yield this.createUnsignedTx(d,"Aptos.CircleBridge.Transfer")}async isTransferCompleted(t){const r=new w(t.sourceDomain).bcsToBytes(),n=new l(t.nonce).bcsToBytes(),e=U(new Uint8Array([...r,45,...n])),s=h.encode(e);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[s]}}))[0]}async*redeem(t,r,n){const e=[T.U8(y.serialize(r)),T.U8(h.decode(n))],s={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:e};yield this.createUnsignedTx(s,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(t){let e,s;for(let i=0;i<5;i++)try{const f=await this.provider.getTransactionByHash({transactionHash:t}),b=this.messageTransmitterId.replace(/^0x0+/,"0x");if(s=f.events?.find(m=>m.type===`${b}::message_transmitter::MessageSent`),s)break;e=new Error(`MessageSent event not found in transaction ${t}`),i<4&&await new Promise(m=>setTimeout(m,1e3))}catch(f){e=f,i<4&&await new Promise(b=>setTimeout(b,1e3))}if(!s)throw e||new Error("No MessageSent event found after 5 attempts");const o=h.decode(s.data.message),[a,d]=y.deserialize(o),{payload:c}=a,C=c.messageSender,M=c.mintRecipient,g=v(this.network,a.sourceDomain),x=v(this.network,a.destinationDomain),A={chain:g,address:c.burnToken};return{from:{chain:g,address:C},to:{chain:x,address:M},token:A,amount:c.amount,message:a,id:{hash:d}}}static async fromRpc(t,r){const[n,e]=await E.chainFromRpc(t),s=r[e];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new p(n,e,t,s.contracts)}createUnsignedTx(t,r,n=!1){return new $(t,this.network,this.chain,r,n)}}D("Aptos","CircleBridge",p);export{p as AptosCircleBridge};
@@ -1 +1 @@
1
- import{E as l,C as m}from"./evm-Ky_mCHhS.js";import{I as T,C as g}from"./contract-_PBK5Hvi.js";import{aQ as h,aV as c,c$ as y,d1 as v,dk as M,bp as S,d3 as w,d4 as x,aO as I}from"../main.js";import{c as C}from"./create-q7V6muDT.js";class A{transaction;network;chain;description;parallelizable;constructor(e,t,b,n,a=!1){this.transaction=e,this.network=t,this.chain=b,this.description=n,this.parallelizable=a}}class d{network;chain;provider;contracts;chainId;coreAddress;core;coreIface;constructor(e,t,b,n){this.network=e,this.chain=t,this.provider=b,this.contracts=n,this.chainId=h.get(e,t),this.coreIface=p.createInterface();const a=this.contracts.coreBridge;if(!a)throw new Error("Core bridge address not found");this.coreAddress=a,this.core=p.connect(a,b)}async getMessageFee(){return await this.core.messageFee.staticCall()}async getGuardianSetIndex(){return Number(await this.core.getCurrentGuardianSetIndex.staticCall())}async getGuardianSet(e){const t=await this.core.getGuardianSet(e);return{index:e,keys:t[0],expiry:t[1]}}static async fromRpc(e,t){const[b,n]=await l.chainFromRpc(e),a=t[n];if(a.network!==b)throw new Error(`Network mismatch: ${a.network} != ${b}`);return new d(b,n,e,a.contracts)}async*publishMessage(e,t,b,n){const a=new c(e).toString(),i=await this.getMessageFee(),f=await this.core.publishMessage.populateTransaction(b,t,n,{value:i});yield this.createUnsignedTx(y(f,a),"WormholeCore.publishMessage")}async*verifyMessage(e,t){const b=new c(e).toString(),n=await this.core.parseAndVerifyVM.populateTransaction(v(t));yield this.createUnsignedTx(y(n,b),"WormholeCore.verifyMessage")}async parseTransaction(e){const t=await this.provider.getTransactionReceipt(e);return t===null?[]:t.logs.filter(b=>b.address===this.coreAddress).map(b=>{const{topics:n,data:a}=b,i=this.coreIface.parseLog({topics:n.slice(),data:a});if(i===null)return;const f=new c(i.args.sender);return{chain:this.chain,emitter:f.toUniversalAddress(),sequence:i.args.sequence}}).filter(M)}async parseMessages(e){const t=await this.provider.getTransactionReceipt(e);if(t===null)throw new Error("Could not get transaction receipt");const b=await this.getGuardianSetIndex();return t.logs.filter(n=>n.address===this.coreAddress).map(n=>{const{topics:a,data:i}=n,f=this.coreIface.parseLog({topics:a.slice(),data:i});if(f===null)return null;const o=new c(f.args.sender);return C("Uint8Array",{guardianSet:b,timestamp:0,emitterChain:this.chain,emitterAddress:o.toUniversalAddress(),consistencyLevel:Number(f.args.consistencyLevel),sequence:BigInt(f.args.sequence),nonce:Number(f.args.nonce),signatures:[],payload:S.decode(f.args.payload)})}).filter(n=>!!n)}createUnsignedTx(e,t,b=!1){return new A(w(e,this.chainId),this.network,this.chain,t,b)}}const s=[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldContract",type:"address"},{indexed:!0,internalType:"address",name:"newContract",type:"address"}],name:"ContractUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint32",name:"index",type:"uint32"}],name:"GuardianSetAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"},{indexed:!1,internalType:"uint32",name:"nonce",type:"uint32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"},{indexed:!1,internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"LogMessagePublished",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"evmChainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentGuardianSetIndex",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"index",type:"uint32"}],name:"getGuardianSet",outputs:[{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getGuardianSetExpiry",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],name:"governanceActionIsConsumed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isFork",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"impl",type:"address"}],name:"isInitialized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"emitter",type:"address"}],name:"nextSequence",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseAndVerifyVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"},{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseContractUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"address",name:"newContract",type:"address"}],internalType:"struct GovernanceStructs.ContractUpgrade",name:"cu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseGuardianSetUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"newGuardianSet",type:"tuple"},{internalType:"uint32",name:"newGuardianSetIndex",type:"uint32"}],internalType:"struct GovernanceStructs.GuardianSetUpgrade",name:"gsu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedRecoverChainId",type:"bytes"}],name:"parseRecoverChainId",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint256",name:"evmChainId",type:"uint256"},{internalType:"uint16",name:"newChainId",type:"uint16"}],internalType:"struct GovernanceStructs.RecoverChainId",name:"rci",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedSetMessageFee",type:"bytes"}],name:"parseSetMessageFee",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"messageFee",type:"uint256"}],internalType:"struct GovernanceStructs.SetMessageFee",name:"smf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedTransferFees",type:"bytes"}],name:"parseTransferFees",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],internalType:"struct GovernanceStructs.TransferFees",name:"tf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"publishMessage",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"numGuardians",type:"uint256"}],name:"quorum",outputs:[{internalType:"uint256",name:"numSignaturesRequiredForQuorum",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitContractUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitNewGuardianSet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitRecoverChainId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitSetMessageFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitTransferFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"guardianSet",type:"tuple"}],name:"verifySignatures",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],name:"verifyVM",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],u="0x60808060405234610016576130a2908161001c8239f35b600080fdfe60806040526004361015610018575b366120d257612105565b60003560e01c80630319e59c146101e857806304ca84cf146101e3578063178149e7146101de5780631a90a219146101d95780631cfe7951146101d45780632c3c02a4146101cf5780634cf842b5146101ca5780634fdc60fa146101c5578063515f3247146101c05780635cb8cae2146101bb57806364d42b17146101b65780636606b4e0146101b15780638129fc1c146101ac578063875be02a146101a757806393df337e146101a25780639a8a05921461019d578063a0cce1b314610198578063a9e1189314610193578063b172b2221461018e578063b19a437e14610189578063c0fd8bde14610184578063cb4cfea81461017f578063d60b347f1461017a578063e039f22414610175578063eb8d3f1214610170578063f42bc6411461016b578063f8ce560a14610166578063f951975a146101615763fbe3c2cd0361000e576112d5565b61129d565b611277565b611203565b6111dd565b6111bc565b61117d565b611137565b6110d2565b610f96565b610f78565b610f50565b610d51565b610d2f565b610c78565b610b50565b610913565b6107c5565b6107a7565b6106d4565b61068e565b61063f565b6105fc565b61059b565b610577565b610559565b610476565b610409565b610363565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761021e57604052565b6101ed565b604081019081106001600160401b0382111761021e57604052565b60a081019081106001600160401b0382111761021e57604052565b606081019081106001600160401b0382111761021e57604052565b90601f801991011681019081106001600160401b0382111761021e57604052565b6040519061016082018281106001600160401b0382111761021e57604052565b604051906102c282610223565b565b6001600160401b03811161021e57601f01601f191660200190565b9291926102eb826102c4565b916102f96040519384610274565b829481845281830111610316578281602093846000960137010152565b600080fd5b9080601f8301121561031657816020610336933591016102df565b90565b602060031982011261031657600435906001600160401b038211610316576103369160040161031b565b346103165760a061037b61037636610339565b611dc4565b6080604051918051835260ff602082015116602084015261ffff60408201511660408401526060810151606084015201516080820152f35b906040810191805190604083528151809452606083019360208093019060005b8181106103ec5750505081015163ffffffff1691015290565b82516001600160a01b0316875295840195918401916001016103d3565b346103165761041f61041a36610339565b611b9f565b6040518091602082528051602083015260ff602082015116604083015261ffff604082015116606083015263ffffffff6080610469606084015160a08387015260c08601906103b3565b9201511660a08301520390f35b346103165761048436610339565b600854461461052757610513606061049e6105259361287e565b6104b06104aa8261185b565b906113b0565b61050a6104c060e0830151611e9d565b916104d163436f7265845114611459565b61050461014060408501926104e8468551146115ab565b015160005260056020526040600020600160ff19825416179055565b51612ca6565b015161ffff1690565b61ffff1661ffff196000541617600055565b005b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34610316576000366003190112610316576020600754604051908152f35b3461031657600036600319011261031657602063ffffffff60035416604051908152f35b346103165760203660031901126103165760206105c8600435600052600560205260ff6040600020541690565b6040519015158152f35b600435906001600160a01b038216820361031657565b35906001600160a01b038216820361031657565b34610316576020366003190112610316576001600160a01b0361061d6105d2565b16600052600460205260206001600160401b0360406000205416604051908152f35b3461031657608061065761065236610339565b611a0c565b604051908051825260ff602082015116602083015261ffff6040820151166040830152606060018060a01b03910151166060820152f35b346103165760806106a66106a136610339565b611ce1565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34610316576106e236610339565b60085446036107735761076e60606106fc6105259361287e565b6107086104aa8261185b565b61076061014061071b60e0840151611a0c565b9261072c63436f72658551146113e0565b6104e861073e604086015161ffff1690565b61ffff61075861075160005461ffff1690565b61ffff1690565b91161461141d565b01516001600160a01b031690565b61163e565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b34610316576000366003190112610316576020600854604051908152f35b34610316576105256108d96107e16107dc36610339565b61287e565b6107ed6104aa8261185b565b6108cf6107fd60e0830151611b9f565b61080d63436f7265825114611459565b61084b61081f604083015161ffff1690565b61ffff61083261075160005461ffff1690565b911690811490816108f8575b81156108ef575b50611496565b6108a9610140608060608401936108668551515115156114d2565b01946104e8610879875163ffffffff1690565b63ffffffff6108a161089861089360035463ffffffff1690565b611534565b63ffffffff1690565b911614611549565b6108c06108bb60035463ffffffff1690565b612b24565b51825163ffffffff1690612c1b565b5163ffffffff1690565b63ffffffff1663ffffffff196003541617600355565b90501538610845565b905061090d61090960085446141590565b1590565b9061083e565b34610316576000806003193601126109cc577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03168082526006602052604082205460ff16610991576001600160a01b03166000908152600660205260409020805460ff1916600117905561098e611f42565b80f35b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b80fd5b6044359060ff8216820361031657565b359060ff8216820361031657565b6004359063ffffffff8216820361031657565b359063ffffffff8216820361031657565b359061ffff8216820361031657565b35906001600160401b038216820361031657565b6001600160401b03811161021e5760051b60200190565b81601f8201121561031657803590610a6282610a34565b92604092610a7284519586610274565b808552602091828087019260071b85010193818511610316578301915b848310610a9f5750505050505090565b60808383031261031657836080918751610ab881610203565b853581528286013583820152610acf8987016109df565b898201526060610ae08188016109df565b90820152815201920191610a8f565b60005b838110610b025750506000910152565b8181015183820152602001610af2565b90602091610b2b81518092818552858086019101610aef565b601f01601f1916010190565b6040906103369392151581528160208201520190610b12565b346103165760031960203682011261031657600435906001600160401b03908183116103165761016090833603011261031657610b8b610295565b90610b98836004016109df565b8252610ba660248401610a00565b6020830152610bb760448401610a00565b6040830152610bc860648401610a11565b606083015260848301356080830152610be360a48401610a20565b60a0830152610bf460c484016109df565b60c083015260e483013581811161031657610c15906004369186010161031b565b60e0830152610c276101048401610a00565b61010083015261012483013590811161031657610c6492610c516101449260043691840101610a4b565b61012084015201356101408201526123f9565b90610c7460405192839283610b37565b0390f35b3461031657610ce2610140610c8f6107dc36610339565b610c9b6104aa8261185b565b6104e8610cab60e0830151611dc4565b610cbb63436f7265825114611459565b604081015161ffff1690600095869586958695869561ffff610832610751895461ffff1690565b6080810151606090610d0c90610d009081906001600160a01b031681565b6001600160a01b031690565b91015190828215610d26575bf115610d215780f35b61159f565b506108fc610d18565b3461031657600036600319011261031657602061ffff60005416604051908152f35b3461031657600319606036820112610316576001600160401b0360243581811161031657610d83903690600401610a4b565b604435928284116103165760409084360301126103165760405191610da783610223565b8360040135908111610316578301923660238501121561031657600484013593610dd085610a34565b90610dde6040519283610274565b85825260209560248784019160051b8301019136831161031657602401905b828210610e26575050506024610c649592610e1a92865201610a00565b9083015260043561268d565b878091610e32846105e8565b815201910190610dfd565b90815180825260208080930193019160005b828110610e5d575050505090565b835180518652808301518684015260408082015160ff90811691880191909152606091820151169086015260809094019392810192600101610e4f565b805160ff1682529060208281015163ffffffff169082015260408281015163ffffffff169082015260608281015161ffff169082015260808201516080820152610ef460a083015160a08301906001600160401b03169052565b60c08281015160ff1690820152610f42610f1d60e08401516101608060e0860152840190610b12565b6101008481015163ffffffff1690840152610120808501519084830390850152610e3d565b916101408091015191015290565b3461031657610c74610f646107dc36610339565b604051918291602083526020830190610e9a565b34610316576000366003190112610316576020600154604051908152f35b606036600319011261031657610faa6109ed565b6001600160401b0360243581811161031657610fca90369060040161031b565b91610fd36109cf565b91600754340361107457336000526004602052806040600020541692600184019482861161106f57610c74957f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b293336000526004602052604060002091166001600160401b031982541617905561105260405192839233968885611f06565b0390a26040516001600160401b0390911681529081906020820190565b61151e565b60405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b6044820152606490fd5b6110bd6103369492606083526060830190610e9a565b92151560208201526040818403910152610b12565b34610316576020366003190112610316576001600160401b03600435818111610316573660238201121561031657806004013591821161031657366024838301011161031657610c7491602461112892016121c5565b604093919351938493846110a7565b3461031657608061114f61114a36610339565b611e9d565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34610316576020366003190112610316576001600160a01b0361119e6105d2565b166000526006602052602060ff604060002054166040519015158152f35b34610316576000366003190112610316576020600854604051904614158152f35b3461031657600036600319011261031657602060035463ffffffff60405191831c168152f35b346103165760606112166107dc36610339565b6112226104aa8261185b565b61126561014061123560e0840151611ce1565b9261124663436f72658551146113e0565b61ffff806040860151169060005416148061126c575b6104e89061141d565b0151600755005b50600854461461125c565b34610316576020366003190112610316576020611295600435612ac1565b604051908152f35b3461031657602036600319011261031657610c746112c16112bc6109ed565b611314565b6040519182916020835260208301906103b3565b3461031657600036600319011261031657602061ffff60005460101c16604051908152f35b6040519061130782610223565b6000602083606081520152565b63ffffffff906113226112fa565b50166000526020600281526040600020906040519161134083610223565b6040518083835491828152019083600052846000209060005b8181106113935750505061033693928261137a611387946001940382610274565b8652015463ffffffff1690565b63ffffffff1690830152565b82546001600160a01b031684529286019260019283019201611359565b156113b85750565b60405162461bcd60e51b8152602060048201529081906113dc906024830190610b12565b0390fd5b156113e757565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b6044820152606490fd5b1561142457565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b6044820152606490fd5b1561146057565b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b6044820152606490fd5b1561149d57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b6044820152606490fd5b156114d957565b60405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d707479000000000000006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90600163ffffffff8093160191821161106f57565b1561155057565b60405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b6064820152608490fd5b6040513d6000823e3d90fd5b156115b257565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b60405190602082018281106001600160401b0382111761021e5760405260008252565b3d15611639573d9061161f826102c4565b9161162d6040519384610274565b82523d6000602084013e565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1561170d577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b8316179055611707604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b6020820190815260048252906116fb81610223565b51915af46104aa61160e565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6040519061177582610259565b6022825261195d60f21b6040837f6e6f74207369676e65642062792063757272656e7420677561726469616e207360208201520152565b604051906117b982610223565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906117eb82610223565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b6040519061182482610259565b6022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b611864816123f9565b9015611924575061010081015163ffffffff1663ffffffff61188e61089860035463ffffffff1690565b91160361191857606081015161ffff1661ffff6118b561075160005461ffff9060101c1690565b91160361190c57608081015160015403611900576101406118e6910151600052600560205260ff6040600020541690565b6118f5576001906103366115eb565b600090610336611817565b506000906103366117de565b506000906103366117ac565b50600090610336611768565b600092909150565b6040519061193982610203565b60006060838281528260208201528260408201520152565b906020820180921161106f57565b906001820180921161106f57565b906002820180921161106f57565b906004820180921161106f57565b906014820180921161106f57565b906008820180921161106f57565b90601f820180921161106f57565b9190820180921161106f57565b156119c757565b60405162461bcd60e51b815260206004820152601760248201527f696e76616c696420436f6e7472616374557067726164650000000000000000006044820152606490fd5b90611a1561192c565b91611a1f81613030565b8352611a3e600160ff611a3184612e51565b16806020870152146119c0565b61ffff611a4a82612ee8565b1660408401526043815110611a79576043818101516001600160a01b0316606085015290516102c291146119c0565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b60405190611ac38261023e565b6000608083828152826020820152826040820152611adf6112fa565b60608201520152565b15611aef57565b60405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e536574557067726164650000000000006044820152606490fd5b90611b3e82610a34565b611b4b6040519182610274565b8281528092611b5c601f1991610a34565b0190602036910137565b600019811461106f5760010190565b8051821015611b895760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90611ba8611ab6565b91611bb281613030565b8352611bdb600260ff611bd4611bc785612e51565b60ff166020880181905290565b1614611ae8565b611bf2611be782612ee8565b61ffff166040850152565b611c0b611bfe82612fac565b63ffffffff166080850152565b611c1481612ebc565b60ff6028911691611c2483611b34565b92611c2d6102b5565b93845260006020850152606086019384526000935b818510611c575750506102c292505114611ae8565b909192611c8e81611c89611c6e611c949488612df5565b611c7a89875151611b75565b6001600160a01b039091169052565b611989565b94611b66565b93929190611c42565b15611ca457565b60405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b6044820152606490fd5b90611cea61192c565b91611cf481613030565b8352611d13600360ff611d0684612e51565b1680602087015214611c9d565b61ffff611d1f82612ee8565b1660408401526043815110611d4457604381816102c293015160608601525114611c9d565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b15611d8857565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b6044820152606490fd5b9060405191611dd28361023e565b60008352602083019060008252604084019060008252606085019160008352611e20600460808801956000875288611e0986613030565b905260ff611e1686612e51565b1680915214611d81565b61ffff611e2c83612ee8565b1690526043815110611d44576102c29260639260438301519052611e4f82613040565b90525114611d81565b15611e5f57565b60405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a5908149958dbdd995c90da185a5b925960521b6044820152606490fd5b90611ea661192c565b91611eb081613030565b8352611ecf600560ff611ec284612e51565b1680602087015214611e58565b6041815110611d445760438160416102c29301516040860152611eff611ef482612f34565b61ffff166060870152565b5114611e58565b92611f3b9063ffffffff6060946001600160401b0360ff95999899168752166020860152608060408601526080850190610b12565b9416910152565b60085415611f4c57565b61ffff611f5c60005461ffff1690565b1660028103611f7057506102c26001612ca6565b60048103611f8357506102c26038612ca6565b60058103611f9657506102c26089612ca6565b60068103611faa57506102c261a86a612ca6565b60078103611fbe57506102c261a516612ca6565b60098103611fd457506102c2634e454152612ca6565b600a8103611fe757506102c260fa612ca6565b600b8103611ffb57506102c26102ae612ca6565b600c810361200f57506102c2610313612ca6565b600d810361202357506102c2612019612ca6565b600e810361203757506102c261a4ec612ca6565b6010810361204b57506102c2610504612ca6565b6011810361206157506102c2630e9ac0d6612ca6565b6017810361207557506102c261a4b1612ca6565b6018810361208857506102c2600a612ca6565b601903612099576102c26064612ca6565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71031b430b4b71034b21760791b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b6064820152608490fd5b6040519061016082018281106001600160401b0382111761021e57604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b6107dc906121dd926121d561215f565b5036916102df565b906121e782612325565b9091565b94929060339796949263ffffffff60e01b809260e01b16875260e01b16600486015261ffff60f01b9060f01b166008850152600a8401526001600160401b0360c01b9060c01b16602a83015260ff60f81b9060f81b1660328201526122598251809360208685019101610aef565b010190565b6040519061226b82610223565b601a82527f766d2e6861736820646f65736e2774206d6174636820626f64790000000000006020830152565b604051906122a482610223565b60148252731a5b9d985b1a590819dd585c991a585b881cd95d60621b6020830152565b604051906122d482610223565b601882527f677561726469616e2073657420686173206578706972656400000000000000006020830152565b6040519061230d82610223565b60098252686e6f2071756f72756d60b81b6020830152565b610100810161233b6112bc825163ffffffff1690565b90815151156123eb575163ffffffff1661235d61089860035463ffffffff1690565b63ffffffff809216141590816123ce575b506123c1576101208201805151612386835151612ac1565b116123b35761014061239c93015190519061268d565b90156123ae57506001906103366115eb565b600091565b505050600090610336612300565b50506000906103366122c7565b90506123e1602083015163ffffffff1690565b429116103861236e565b505050600090610336612297565b6101008101906124106112bc835163ffffffff1690565b90612422602082015163ffffffff1690565b604082015163ffffffff169061243d606084015161ffff1690565b9161247a608085015161245a60a08701516001600160401b031690565b60c087015160ff169060e0880151926040519788966020880198896121eb565b039161248e601f1993848101835282610274565b519020906124b860405191826124ac60208201958660209181520190565b03908101835282610274565b5190209261014082019384510361255e578251511561254f575163ffffffff166124ea61089860035463ffffffff1690565b63ffffffff80921614159081612532575b506125245761012001805151612512835151612ac1565b116123b35761239c925190519061268d565b5050506000906103366122c7565b9050612545602084015163ffffffff1690565b42911610386124fb565b50505050600090610336612297565b5050505060009061033661225e565b1561257457565b60405162461bcd60e51b815260206004820152601f60248201527f65637265636f766572206661696c65642077697468207369676e6174757265006044820152606490fd5b156125c057565b60405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b6064820152608490fd5b1561261857565b60405162461bcd60e51b815260206004820152601c60248201527f677561726469616e20696e646578206f7574206f6620626f756e6473000000006044820152606490fd5b6040519061266a82610223565b60148252731593481cda59db985d1d5c99481a5b9d985b1a5960621b6020830152565b825151919260009291835b85518110156127b2576126ab8187611b75565b51604060006126bd8284015160ff1690565b8351602080860151945188815260ff93909316838201526040830191909152606082019390935281805260809060015afa15610d215760005160609190612723906001600160a01b03169761271389151561256d565b8415908115612795575b506125b9565b0194612771610d00612764612739895160ff1690565b986127488960ff8c1610612611565b61275e6127588951925160ff1690565b60ff1690565b90611b75565b516001600160a01b031690565b036127845761277f90611b66565b612698565b50505050505060009061033661265d565b90506127a48484015160ff1690565b60ff9182169116113861271d565b5050505050506001906103366115eb565b156127ca57565b60405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c650000000000000000006044820152606490fd5b9061281982610a34565b6128266040519182610274565b8281528092612837601f1991610a34565b019060005b82811061284857505050565b60209061285361192c565b8282850101520161283c565b60ff601b9116019060ff821161106f57565b9190820391821161106f57565b9061288761215f565b9161289b61289482612e9c565b60ff168452565b6128b4600160ff6128ad865160ff1690565b16146127c3565b6128ce6128c082612f60565b63ffffffff16610100850152565b6128da61275882612eac565b6006906128e68161280f565b9061012086019182526000915b818310612a205750505090612a086129ec6129ca6129b661299961297f87612929612922612a199a8a51612871565b828a612d69565b602081519101206040516129578161294960208201948560209181520190565b03601f198101835282610274565b5190206101408c015261297a61296d828a612fbc565b63ffffffff1660208d0152565b61197b565b61297a61298c8289612fbc565b63ffffffff1660408c0152565b6129b16129a68288612f44565b61ffff1660608b0152565b61196d565b6129c08186613050565b6080890152611951565b6129e76129d78286612fd8565b6001600160401b031660a0890152565b611997565b612a036129f98285612ecc565b60ff1660c0880152565b61195f565b612a13818351612871565b91612d69565b60e0830152565b909192612ab4612a92612a73612a5784612a03612a40612aba978c612ecc565b6060612a4d8c8b51611b75565b51019060ff169052565b612a61818a613050565b612a6c898851611b75565b5152611951565b612a7d8189613050565b6020612a8a898851611b75565b510152611951565b612a03612aa7612aa2838a612ecc565b61285f565b6040612a4d898851611b75565b93611b66565b91906128f3565b610100811015612aea578060011b908082046002149015171561106f576003610336910461195f565b60405162461bcd60e51b8152602060048201526012602482015271746f6f206d616e7920677561726469616e7360701b6044820152606490fd5b63ffffffff62015180814216019080821161106f576102c29216600052600260205260016040600020019063ffffffff1663ffffffff19825416179055565b9080519081516001600160401b03811161021e5768010000000000000000811161021e578354818555808210612bf2575b506020809301612ba985600052602060002090565b60005b838110612bd7575050505001516001909101805463ffffffff191663ffffffff909216919091179055565b82516001600160a01b03168282015591850191600101612bac565b6000858152826020822092830192015b828110612c10575050612b94565b818155600101612c02565b9081515160005b818110612c485750509063ffffffff6102c2921660005260026020526040600020612b63565b83516001600160a01b0390612c5e908390611b75565b511615612c7357612c6e90611b66565b612c22565b60405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b6044820152606490fd5b468103612cb257600855565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b15612cf357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15612d3057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b91612d7e81612d77816119a5565b1015612cec565b612d948351612d8d83856119b3565b1115612d29565b80612dad57505050604051600081526020810160405290565b60405192601f821692831560051b80858701019484860193010101905b808410612de25750508252601f01601f191660405290565b9092835181526020809101930190612dca565b908151601482019081831161106f5710612e1457016020015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6021815110612e61576021015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6001815110612e61576001015190565b6006815110612e61576006015190565b6028815110612e61576028015190565b908151600182019081831161106f5710612e6157016001015190565b6023815110612ef8576023015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6043815110612ef8576043015190565b908151600282019081831161106f5710612ef857016002015190565b6005815110612f70576005015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b6044820152606490fd5b6027815110612f70576027015190565b908151600482019081831161106f5710612f7057016004015190565b908151600882019081831161106f5710612ff457016008015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b6020815110611a79576020015190565b6063815110611a79576063015190565b908151602082019081831161106f5710611a795701602001519056fea2646970667358221220e01f3fc19a7b6f650a08aafb55409b8aa16f0ebf4a5804ec4ce7df76358d349364736f6c63430008130033",G=r=>r.length>1;class p extends m{constructor(...e){G(e)?super(...e):super(s,u,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static bytecode=u;static abi=s;static createInterface(){return new T(s)}static connect(e,t){return new g(e,s,t)}}const F=Object.freeze(Object.defineProperty({__proto__:null,Implementation__factory:p},Symbol.toStringTag,{value:"Module"}));x(I,"WormholeCore",d);const V=Object.freeze(Object.defineProperty({__proto__:null,EvmWormholeCore:d,ethers_contracts:F},Symbol.toStringTag,{value:"Module"}));export{d as E,A as a,V as i};
1
+ import{E as l,C as m}from"./evm-Bv0RsFka.js";import{I as T,C as g}from"./contract-_PBK5Hvi.js";import{aQ as h,aV as c,c$ as y,d1 as v,dl as M,bp as S,d3 as w,d4 as x,aO as I}from"../main.js";import{c as C}from"./create-54a95t1x.js";class A{transaction;network;chain;description;parallelizable;constructor(e,t,b,n,a=!1){this.transaction=e,this.network=t,this.chain=b,this.description=n,this.parallelizable=a}}class d{network;chain;provider;contracts;chainId;coreAddress;core;coreIface;constructor(e,t,b,n){this.network=e,this.chain=t,this.provider=b,this.contracts=n,this.chainId=h.get(e,t),this.coreIface=p.createInterface();const a=this.contracts.coreBridge;if(!a)throw new Error("Core bridge address not found");this.coreAddress=a,this.core=p.connect(a,b)}async getMessageFee(){return await this.core.messageFee.staticCall()}async getGuardianSetIndex(){return Number(await this.core.getCurrentGuardianSetIndex.staticCall())}async getGuardianSet(e){const t=await this.core.getGuardianSet(e);return{index:e,keys:t[0],expiry:t[1]}}static async fromRpc(e,t){const[b,n]=await l.chainFromRpc(e),a=t[n];if(a.network!==b)throw new Error(`Network mismatch: ${a.network} != ${b}`);return new d(b,n,e,a.contracts)}async*publishMessage(e,t,b,n){const a=new c(e).toString(),i=await this.getMessageFee(),f=await this.core.publishMessage.populateTransaction(b,t,n,{value:i});yield this.createUnsignedTx(y(f,a),"WormholeCore.publishMessage")}async*verifyMessage(e,t){const b=new c(e).toString(),n=await this.core.parseAndVerifyVM.populateTransaction(v(t));yield this.createUnsignedTx(y(n,b),"WormholeCore.verifyMessage")}async parseTransaction(e){const t=await this.provider.getTransactionReceipt(e);return t===null?[]:t.logs.filter(b=>b.address===this.coreAddress).map(b=>{const{topics:n,data:a}=b,i=this.coreIface.parseLog({topics:n.slice(),data:a});if(i===null)return;const f=new c(i.args.sender);return{chain:this.chain,emitter:f.toUniversalAddress(),sequence:i.args.sequence}}).filter(M)}async parseMessages(e){const t=await this.provider.getTransactionReceipt(e);if(t===null)throw new Error("Could not get transaction receipt");const b=await this.getGuardianSetIndex();return t.logs.filter(n=>n.address===this.coreAddress).map(n=>{const{topics:a,data:i}=n,f=this.coreIface.parseLog({topics:a.slice(),data:i});if(f===null)return null;const o=new c(f.args.sender);return C("Uint8Array",{guardianSet:b,timestamp:0,emitterChain:this.chain,emitterAddress:o.toUniversalAddress(),consistencyLevel:Number(f.args.consistencyLevel),sequence:BigInt(f.args.sequence),nonce:Number(f.args.nonce),signatures:[],payload:S.decode(f.args.payload)})}).filter(n=>!!n)}createUnsignedTx(e,t,b=!1){return new A(w(e,this.chainId),this.network,this.chain,t,b)}}const s=[{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"previousAdmin",type:"address"},{indexed:!1,internalType:"address",name:"newAdmin",type:"address"}],name:"AdminChanged",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"beacon",type:"address"}],name:"BeaconUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"oldContract",type:"address"},{indexed:!0,internalType:"address",name:"newContract",type:"address"}],name:"ContractUpgraded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"uint32",name:"index",type:"uint32"}],name:"GuardianSetAdded",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint64",name:"sequence",type:"uint64"},{indexed:!1,internalType:"uint32",name:"nonce",type:"uint32"},{indexed:!1,internalType:"bytes",name:"payload",type:"bytes"},{indexed:!1,internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"LogMessagePublished",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"implementation",type:"address"}],name:"Upgraded",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"chainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"evmChainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"getCurrentGuardianSetIndex",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint32",name:"index",type:"uint32"}],name:"getGuardianSet",outputs:[{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"",type:"tuple"}],stateMutability:"view",type:"function"},{inputs:[],name:"getGuardianSetExpiry",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"}],name:"governanceActionIsConsumed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceChainId",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"governanceContract",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"initialize",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"isFork",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"impl",type:"address"}],name:"isInitialized",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"messageFee",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"emitter",type:"address"}],name:"nextSequence",outputs:[{internalType:"uint64",name:"",type:"uint64"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseAndVerifyVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"},{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseContractUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"address",name:"newContract",type:"address"}],internalType:"struct GovernanceStructs.ContractUpgrade",name:"cu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedUpgrade",type:"bytes"}],name:"parseGuardianSetUpgrade",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"newGuardianSet",type:"tuple"},{internalType:"uint32",name:"newGuardianSetIndex",type:"uint32"}],internalType:"struct GovernanceStructs.GuardianSetUpgrade",name:"gsu",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedRecoverChainId",type:"bytes"}],name:"parseRecoverChainId",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint256",name:"evmChainId",type:"uint256"},{internalType:"uint16",name:"newChainId",type:"uint16"}],internalType:"struct GovernanceStructs.RecoverChainId",name:"rci",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedSetMessageFee",type:"bytes"}],name:"parseSetMessageFee",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"messageFee",type:"uint256"}],internalType:"struct GovernanceStructs.SetMessageFee",name:"smf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedTransferFees",type:"bytes"}],name:"parseTransferFees",outputs:[{components:[{internalType:"bytes32",name:"module",type:"bytes32"},{internalType:"uint8",name:"action",type:"uint8"},{internalType:"uint16",name:"chain",type:"uint16"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"}],internalType:"struct GovernanceStructs.TransferFees",name:"tf",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"encodedVM",type:"bytes"}],name:"parseVM",outputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"}],name:"publishMessage",outputs:[{internalType:"uint64",name:"sequence",type:"uint64"}],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"numGuardians",type:"uint256"}],name:"quorum",outputs:[{internalType:"uint256",name:"numSignaturesRequiredForQuorum",type:"uint256"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitContractUpgrade",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitNewGuardianSet",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitRecoverChainId",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitSetMessageFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes",name:"_vm",type:"bytes"}],name:"submitTransferFees",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"hash",type:"bytes32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{components:[{internalType:"address[]",name:"keys",type:"address[]"},{internalType:"uint32",name:"expirationTime",type:"uint32"}],internalType:"struct Structs.GuardianSet",name:"guardianSet",type:"tuple"}],name:"verifySignatures",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"pure",type:"function"},{inputs:[{components:[{internalType:"uint8",name:"version",type:"uint8"},{internalType:"uint32",name:"timestamp",type:"uint32"},{internalType:"uint32",name:"nonce",type:"uint32"},{internalType:"uint16",name:"emitterChainId",type:"uint16"},{internalType:"bytes32",name:"emitterAddress",type:"bytes32"},{internalType:"uint64",name:"sequence",type:"uint64"},{internalType:"uint8",name:"consistencyLevel",type:"uint8"},{internalType:"bytes",name:"payload",type:"bytes"},{internalType:"uint32",name:"guardianSetIndex",type:"uint32"},{components:[{internalType:"bytes32",name:"r",type:"bytes32"},{internalType:"bytes32",name:"s",type:"bytes32"},{internalType:"uint8",name:"v",type:"uint8"},{internalType:"uint8",name:"guardianIndex",type:"uint8"}],internalType:"struct Structs.Signature[]",name:"signatures",type:"tuple[]"},{internalType:"bytes32",name:"hash",type:"bytes32"}],internalType:"struct Structs.VM",name:"vm",type:"tuple"}],name:"verifyVM",outputs:[{internalType:"bool",name:"valid",type:"bool"},{internalType:"string",name:"reason",type:"string"}],stateMutability:"view",type:"function"},{stateMutability:"payable",type:"receive"}],u="0x60808060405234610016576130a2908161001c8239f35b600080fdfe60806040526004361015610018575b366120d257612105565b60003560e01c80630319e59c146101e857806304ca84cf146101e3578063178149e7146101de5780631a90a219146101d95780631cfe7951146101d45780632c3c02a4146101cf5780634cf842b5146101ca5780634fdc60fa146101c5578063515f3247146101c05780635cb8cae2146101bb57806364d42b17146101b65780636606b4e0146101b15780638129fc1c146101ac578063875be02a146101a757806393df337e146101a25780639a8a05921461019d578063a0cce1b314610198578063a9e1189314610193578063b172b2221461018e578063b19a437e14610189578063c0fd8bde14610184578063cb4cfea81461017f578063d60b347f1461017a578063e039f22414610175578063eb8d3f1214610170578063f42bc6411461016b578063f8ce560a14610166578063f951975a146101615763fbe3c2cd0361000e576112d5565b61129d565b611277565b611203565b6111dd565b6111bc565b61117d565b611137565b6110d2565b610f96565b610f78565b610f50565b610d51565b610d2f565b610c78565b610b50565b610913565b6107c5565b6107a7565b6106d4565b61068e565b61063f565b6105fc565b61059b565b610577565b610559565b610476565b610409565b610363565b634e487b7160e01b600052604160045260246000fd5b608081019081106001600160401b0382111761021e57604052565b6101ed565b604081019081106001600160401b0382111761021e57604052565b60a081019081106001600160401b0382111761021e57604052565b606081019081106001600160401b0382111761021e57604052565b90601f801991011681019081106001600160401b0382111761021e57604052565b6040519061016082018281106001600160401b0382111761021e57604052565b604051906102c282610223565b565b6001600160401b03811161021e57601f01601f191660200190565b9291926102eb826102c4565b916102f96040519384610274565b829481845281830111610316578281602093846000960137010152565b600080fd5b9080601f8301121561031657816020610336933591016102df565b90565b602060031982011261031657600435906001600160401b038211610316576103369160040161031b565b346103165760a061037b61037636610339565b611dc4565b6080604051918051835260ff602082015116602084015261ffff60408201511660408401526060810151606084015201516080820152f35b906040810191805190604083528151809452606083019360208093019060005b8181106103ec5750505081015163ffffffff1691015290565b82516001600160a01b0316875295840195918401916001016103d3565b346103165761041f61041a36610339565b611b9f565b6040518091602082528051602083015260ff602082015116604083015261ffff604082015116606083015263ffffffff6080610469606084015160a08387015260c08601906103b3565b9201511660a08301520390f35b346103165761048436610339565b600854461461052757610513606061049e6105259361287e565b6104b06104aa8261185b565b906113b0565b61050a6104c060e0830151611e9d565b916104d163436f7265845114611459565b61050461014060408501926104e8468551146115ab565b015160005260056020526040600020600160ff19825416179055565b51612ca6565b015161ffff1690565b61ffff1661ffff196000541617600055565b005b60405162461bcd60e51b815260206004820152600a6024820152696e6f74206120666f726b60b01b6044820152606490fd5b34610316576000366003190112610316576020600754604051908152f35b3461031657600036600319011261031657602063ffffffff60035416604051908152f35b346103165760203660031901126103165760206105c8600435600052600560205260ff6040600020541690565b6040519015158152f35b600435906001600160a01b038216820361031657565b35906001600160a01b038216820361031657565b34610316576020366003190112610316576001600160a01b0361061d6105d2565b16600052600460205260206001600160401b0360406000205416604051908152f35b3461031657608061065761065236610339565b611a0c565b604051908051825260ff602082015116602083015261ffff6040820151166040830152606060018060a01b03910151166060820152f35b346103165760806106a66106a136610339565b611ce1565b6060604051918051835260ff602082015116602084015261ffff604082015116604084015201516060820152f35b34610316576106e236610339565b60085446036107735761076e60606106fc6105259361287e565b6107086104aa8261185b565b61076061014061071b60e0840151611a0c565b9261072c63436f72658551146113e0565b6104e861073e604086015161ffff1690565b61ffff61075861075160005461ffff1690565b61ffff1690565b91161461141d565b01516001600160a01b031690565b61163e565b60405162461bcd60e51b815260206004820152600c60248201526b696e76616c696420666f726b60a01b6044820152606490fd5b34610316576000366003190112610316576020600854604051908152f35b34610316576105256108d96107e16107dc36610339565b61287e565b6107ed6104aa8261185b565b6108cf6107fd60e0830151611b9f565b61080d63436f7265825114611459565b61084b61081f604083015161ffff1690565b61ffff61083261075160005461ffff1690565b911690811490816108f8575b81156108ef575b50611496565b6108a9610140608060608401936108668551515115156114d2565b01946104e8610879875163ffffffff1690565b63ffffffff6108a161089861089360035463ffffffff1690565b611534565b63ffffffff1690565b911614611549565b6108c06108bb60035463ffffffff1690565b612b24565b51825163ffffffff1690612c1b565b5163ffffffff1690565b63ffffffff1663ffffffff196003541617600355565b90501538610845565b905061090d61090960085446141590565b1590565b9061083e565b34610316576000806003193601126109cc577f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc546001600160a01b03168082526006602052604082205460ff16610991576001600160a01b03166000908152600660205260409020805460ff1916600117905561098e611f42565b80f35b60405162461bcd60e51b8152602060048201526013602482015272185b1c9958591e481a5b9a5d1a585b1a5e9959606a1b6044820152606490fd5b80fd5b6044359060ff8216820361031657565b359060ff8216820361031657565b6004359063ffffffff8216820361031657565b359063ffffffff8216820361031657565b359061ffff8216820361031657565b35906001600160401b038216820361031657565b6001600160401b03811161021e5760051b60200190565b81601f8201121561031657803590610a6282610a34565b92604092610a7284519586610274565b808552602091828087019260071b85010193818511610316578301915b848310610a9f5750505050505090565b60808383031261031657836080918751610ab881610203565b853581528286013583820152610acf8987016109df565b898201526060610ae08188016109df565b90820152815201920191610a8f565b60005b838110610b025750506000910152565b8181015183820152602001610af2565b90602091610b2b81518092818552858086019101610aef565b601f01601f1916010190565b6040906103369392151581528160208201520190610b12565b346103165760031960203682011261031657600435906001600160401b03908183116103165761016090833603011261031657610b8b610295565b90610b98836004016109df565b8252610ba660248401610a00565b6020830152610bb760448401610a00565b6040830152610bc860648401610a11565b606083015260848301356080830152610be360a48401610a20565b60a0830152610bf460c484016109df565b60c083015260e483013581811161031657610c15906004369186010161031b565b60e0830152610c276101048401610a00565b61010083015261012483013590811161031657610c6492610c516101449260043691840101610a4b565b61012084015201356101408201526123f9565b90610c7460405192839283610b37565b0390f35b3461031657610ce2610140610c8f6107dc36610339565b610c9b6104aa8261185b565b6104e8610cab60e0830151611dc4565b610cbb63436f7265825114611459565b604081015161ffff1690600095869586958695869561ffff610832610751895461ffff1690565b6080810151606090610d0c90610d009081906001600160a01b031681565b6001600160a01b031690565b91015190828215610d26575bf115610d215780f35b61159f565b506108fc610d18565b3461031657600036600319011261031657602061ffff60005416604051908152f35b3461031657600319606036820112610316576001600160401b0360243581811161031657610d83903690600401610a4b565b604435928284116103165760409084360301126103165760405191610da783610223565b8360040135908111610316578301923660238501121561031657600484013593610dd085610a34565b90610dde6040519283610274565b85825260209560248784019160051b8301019136831161031657602401905b828210610e26575050506024610c649592610e1a92865201610a00565b9083015260043561268d565b878091610e32846105e8565b815201910190610dfd565b90815180825260208080930193019160005b828110610e5d575050505090565b835180518652808301518684015260408082015160ff90811691880191909152606091820151169086015260809094019392810192600101610e4f565b805160ff1682529060208281015163ffffffff169082015260408281015163ffffffff169082015260608281015161ffff169082015260808201516080820152610ef460a083015160a08301906001600160401b03169052565b60c08281015160ff1690820152610f42610f1d60e08401516101608060e0860152840190610b12565b6101008481015163ffffffff1690840152610120808501519084830390850152610e3d565b916101408091015191015290565b3461031657610c74610f646107dc36610339565b604051918291602083526020830190610e9a565b34610316576000366003190112610316576020600154604051908152f35b606036600319011261031657610faa6109ed565b6001600160401b0360243581811161031657610fca90369060040161031b565b91610fd36109cf565b91600754340361107457336000526004602052806040600020541692600184019482861161106f57610c74957f6eb224fb001ed210e379b335e35efe88672a8ce935d981a6896b27ffdf52a3b293336000526004602052604060002091166001600160401b031982541617905561105260405192839233968885611f06565b0390a26040516001600160401b0390911681529081906020820190565b61151e565b60405162461bcd60e51b815260206004820152600b60248201526a696e76616c69642066656560a81b6044820152606490fd5b6110bd6103369492606083526060830190610e9a565b92151560208201526040818403910152610b12565b34610316576020366003190112610316576001600160401b03600435818111610316573660238201121561031657806004013591821161031657366024838301011161031657610c7491602461112892016121c5565b604093919351938493846110a7565b3461031657608061114f61114a36610339565b611e9d565b61ffff6060604051928051845260ff6020820151166020850152604081015160408501520151166060820152f35b34610316576020366003190112610316576001600160a01b0361119e6105d2565b166000526006602052602060ff604060002054166040519015158152f35b34610316576000366003190112610316576020600854604051904614158152f35b3461031657600036600319011261031657602060035463ffffffff60405191831c168152f35b346103165760606112166107dc36610339565b6112226104aa8261185b565b61126561014061123560e0840151611ce1565b9261124663436f72658551146113e0565b61ffff806040860151169060005416148061126c575b6104e89061141d565b0151600755005b50600854461461125c565b34610316576020366003190112610316576020611295600435612ac1565b604051908152f35b3461031657602036600319011261031657610c746112c16112bc6109ed565b611314565b6040519182916020835260208301906103b3565b3461031657600036600319011261031657602061ffff60005460101c16604051908152f35b6040519061130782610223565b6000602083606081520152565b63ffffffff906113226112fa565b50166000526020600281526040600020906040519161134083610223565b6040518083835491828152019083600052846000209060005b8181106113935750505061033693928261137a611387946001940382610274565b8652015463ffffffff1690565b63ffffffff1690830152565b82546001600160a01b031684529286019260019283019201611359565b156113b85750565b60405162461bcd60e51b8152602060048201529081906113dc906024830190610b12565b0390fd5b156113e757565b60405162461bcd60e51b815260206004820152600e60248201526d496e76616c6964204d6f64756c6560901b6044820152606490fd5b1561142457565b60405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b21021b430b4b760991b6044820152606490fd5b1561146057565b60405162461bcd60e51b815260206004820152600e60248201526d696e76616c6964204d6f64756c6560901b6044820152606490fd5b1561149d57565b60405162461bcd60e51b815260206004820152600d60248201526c34b73b30b634b21021b430b4b760991b6044820152606490fd5b156114d957565b60405162461bcd60e51b815260206004820152601960248201527f6e657720677561726469616e2073657420697320656d707479000000000000006044820152606490fd5b634e487b7160e01b600052601160045260246000fd5b90600163ffffffff8093160191821161106f57565b1561155057565b60405162461bcd60e51b815260206004820152602160248201527f696e646578206d75737420696e63726561736520696e207374657073206f66206044820152603160f81b6064820152608490fd5b6040513d6000823e3d90fd5b156115b257565b60405162461bcd60e51b815260206004820152601160248201527034b73b30b634b21022ab269021b430b4b760791b6044820152606490fd5b60405190602082018281106001600160401b0382111761021e5760405260008252565b3d15611639573d9061161f826102c4565b9161162d6040519384610274565b82523d6000602084013e565b606090565b7f360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc908154813b1561170d577f2e4cc16c100f0b55e2df82ab0b1a7e294aa9cbd01b48fbaf622683fbc0507a499060018060a01b039081841694856bffffffffffffffffffffffff60a01b8316179055611707604051600080968192897fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b8480a263204a7f0760e21b6020820190815260048252906116fb81610223565b51915af46104aa61160e565b169180a3565b60405162461bcd60e51b815260206004820152602d60248201527f455243313936373a206e657720696d706c656d656e746174696f6e206973206e60448201526c1bdd08184818dbdb9d1c9858dd609a1b6064820152608490fd5b6040519061177582610259565b6022825261195d60f21b6040837f6e6f74207369676e65642062792063757272656e7420677561726469616e207360208201520152565b604051906117b982610223565b60168252753bb937b7339033b7bb32b93730b731b29031b430b4b760511b6020830152565b604051906117eb82610223565b601982527f77726f6e6720676f7665726e616e636520636f6e7472616374000000000000006020830152565b6040519061182482610259565b6022825261195960f21b6040837f676f7665726e616e636520616374696f6e20616c726561647920636f6e73756d60208201520152565b611864816123f9565b9015611924575061010081015163ffffffff1663ffffffff61188e61089860035463ffffffff1690565b91160361191857606081015161ffff1661ffff6118b561075160005461ffff9060101c1690565b91160361190c57608081015160015403611900576101406118e6910151600052600560205260ff6040600020541690565b6118f5576001906103366115eb565b600090610336611817565b506000906103366117de565b506000906103366117ac565b50600090610336611768565b600092909150565b6040519061193982610203565b60006060838281528260208201528260408201520152565b906020820180921161106f57565b906001820180921161106f57565b906002820180921161106f57565b906004820180921161106f57565b906014820180921161106f57565b906008820180921161106f57565b90601f820180921161106f57565b9190820180921161106f57565b156119c757565b60405162461bcd60e51b815260206004820152601760248201527f696e76616c696420436f6e7472616374557067726164650000000000000000006044820152606490fd5b90611a1561192c565b91611a1f81613030565b8352611a3e600160ff611a3184612e51565b16806020870152146119c0565b61ffff611a4a82612ee8565b1660408401526043815110611a79576043818101516001600160a01b0316606085015290516102c291146119c0565b60405162461bcd60e51b8152602060048201526015602482015274746f427974657333325f6f75744f66426f756e647360581b6044820152606490fd5b60405190611ac38261023e565b6000608083828152826020820152826040820152611adf6112fa565b60608201520152565b15611aef57565b60405162461bcd60e51b815260206004820152601a60248201527f696e76616c696420477561726469616e536574557067726164650000000000006044820152606490fd5b90611b3e82610a34565b611b4b6040519182610274565b8281528092611b5c601f1991610a34565b0190602036910137565b600019811461106f5760010190565b8051821015611b895760209160051b010190565b634e487b7160e01b600052603260045260246000fd5b90611ba8611ab6565b91611bb281613030565b8352611bdb600260ff611bd4611bc785612e51565b60ff166020880181905290565b1614611ae8565b611bf2611be782612ee8565b61ffff166040850152565b611c0b611bfe82612fac565b63ffffffff166080850152565b611c1481612ebc565b60ff6028911691611c2483611b34565b92611c2d6102b5565b93845260006020850152606086019384526000935b818510611c575750506102c292505114611ae8565b909192611c8e81611c89611c6e611c949488612df5565b611c7a89875151611b75565b6001600160a01b039091169052565b611989565b94611b66565b93929190611c42565b15611ca457565b60405162461bcd60e51b8152602060048201526015602482015274696e76616c6964205365744d65737361676546656560581b6044820152606490fd5b90611cea61192c565b91611cf481613030565b8352611d13600360ff611d0684612e51565b1680602087015214611c9d565b61ffff611d1f82612ee8565b1660408401526043815110611d4457604381816102c293015160608601525114611c9d565b60405162461bcd60e51b8152602060048201526015602482015274746f55696e743235365f6f75744f66426f756e647360581b6044820152606490fd5b15611d8857565b60405162461bcd60e51b8152602060048201526014602482015273696e76616c6964205472616e736665724665657360601b6044820152606490fd5b9060405191611dd28361023e565b60008352602083019060008252604084019060008252606085019160008352611e20600460808801956000875288611e0986613030565b905260ff611e1686612e51565b1680915214611d81565b61ffff611e2c83612ee8565b1690526043815110611d44576102c29260639260438301519052611e4f82613040565b90525114611d81565b15611e5f57565b60405162461bcd60e51b81526020600482015260166024820152751a5b9d985b1a5908149958dbdd995c90da185a5b925960521b6044820152606490fd5b90611ea661192c565b91611eb081613030565b8352611ecf600560ff611ec284612e51565b1680602087015214611e58565b6041815110611d445760438160416102c29301516040860152611eff611ef482612f34565b61ffff166060870152565b5114611e58565b92611f3b9063ffffffff6060946001600160401b0360ff95999899168752166020860152608060408601526080850190610b12565b9416910152565b60085415611f4c57565b61ffff611f5c60005461ffff1690565b1660028103611f7057506102c26001612ca6565b60048103611f8357506102c26038612ca6565b60058103611f9657506102c26089612ca6565b60068103611faa57506102c261a86a612ca6565b60078103611fbe57506102c261a516612ca6565b60098103611fd457506102c2634e454152612ca6565b600a8103611fe757506102c260fa612ca6565b600b8103611ffb57506102c26102ae612ca6565b600c810361200f57506102c2610313612ca6565b600d810361202357506102c2612019612ca6565b600e810361203757506102c261a4ec612ca6565b6010810361204b57506102c2610504612ca6565b6011810361206157506102c2630e9ac0d6612ca6565b6017810361207557506102c261a4b1612ca6565b6018810361208857506102c2600a612ca6565b601903612099576102c26064612ca6565b60405162461bcd60e51b81526020600482015260116024820152702ab735b737bbb71031b430b4b71034b21760791b6044820152606490fd5b60405162461bcd60e51b815260206004820152600b60248201526a1d5b9cdd5c1c1bdc9d195960aa1b6044820152606490fd5b60405162461bcd60e51b815260206004820152602c60248201527f74686520576f726d686f6c6520636f6e747261637420646f6573206e6f74206160448201526b63636570742061737365747360a01b6064820152608490fd5b6040519061016082018281106001600160401b0382111761021e57604052816101406000918281528260208201528260408201528260608201528260808201528260a08201528260c0820152606060e08201528261010082015260606101208201520152565b6107dc906121dd926121d561215f565b5036916102df565b906121e782612325565b9091565b94929060339796949263ffffffff60e01b809260e01b16875260e01b16600486015261ffff60f01b9060f01b166008850152600a8401526001600160401b0360c01b9060c01b16602a83015260ff60f81b9060f81b1660328201526122598251809360208685019101610aef565b010190565b6040519061226b82610223565b601a82527f766d2e6861736820646f65736e2774206d6174636820626f64790000000000006020830152565b604051906122a482610223565b60148252731a5b9d985b1a590819dd585c991a585b881cd95d60621b6020830152565b604051906122d482610223565b601882527f677561726469616e2073657420686173206578706972656400000000000000006020830152565b6040519061230d82610223565b60098252686e6f2071756f72756d60b81b6020830152565b610100810161233b6112bc825163ffffffff1690565b90815151156123eb575163ffffffff1661235d61089860035463ffffffff1690565b63ffffffff809216141590816123ce575b506123c1576101208201805151612386835151612ac1565b116123b35761014061239c93015190519061268d565b90156123ae57506001906103366115eb565b600091565b505050600090610336612300565b50506000906103366122c7565b90506123e1602083015163ffffffff1690565b429116103861236e565b505050600090610336612297565b6101008101906124106112bc835163ffffffff1690565b90612422602082015163ffffffff1690565b604082015163ffffffff169061243d606084015161ffff1690565b9161247a608085015161245a60a08701516001600160401b031690565b60c087015160ff169060e0880151926040519788966020880198896121eb565b039161248e601f1993848101835282610274565b519020906124b860405191826124ac60208201958660209181520190565b03908101835282610274565b5190209261014082019384510361255e578251511561254f575163ffffffff166124ea61089860035463ffffffff1690565b63ffffffff80921614159081612532575b506125245761012001805151612512835151612ac1565b116123b35761239c925190519061268d565b5050506000906103366122c7565b9050612545602084015163ffffffff1690565b42911610386124fb565b50505050600090610336612297565b5050505060009061033661225e565b1561257457565b60405162461bcd60e51b815260206004820152601f60248201527f65637265636f766572206661696c65642077697468207369676e6174757265006044820152606490fd5b156125c057565b60405162461bcd60e51b815260206004820152602360248201527f7369676e617475726520696e6469636573206d75737420626520617363656e64604482015262696e6760e81b6064820152608490fd5b1561261857565b60405162461bcd60e51b815260206004820152601c60248201527f677561726469616e20696e646578206f7574206f6620626f756e6473000000006044820152606490fd5b6040519061266a82610223565b60148252731593481cda59db985d1d5c99481a5b9d985b1a5960621b6020830152565b825151919260009291835b85518110156127b2576126ab8187611b75565b51604060006126bd8284015160ff1690565b8351602080860151945188815260ff93909316838201526040830191909152606082019390935281805260809060015afa15610d215760005160609190612723906001600160a01b03169761271389151561256d565b8415908115612795575b506125b9565b0194612771610d00612764612739895160ff1690565b986127488960ff8c1610612611565b61275e6127588951925160ff1690565b60ff1690565b90611b75565b516001600160a01b031690565b036127845761277f90611b66565b612698565b50505050505060009061033661265d565b90506127a48484015160ff1690565b60ff9182169116113861271d565b5050505050506001906103366115eb565b156127ca57565b60405162461bcd60e51b815260206004820152601760248201527f564d2076657273696f6e20696e636f6d70617469626c650000000000000000006044820152606490fd5b9061281982610a34565b6128266040519182610274565b8281528092612837601f1991610a34565b019060005b82811061284857505050565b60209061285361192c565b8282850101520161283c565b60ff601b9116019060ff821161106f57565b9190820391821161106f57565b9061288761215f565b9161289b61289482612e9c565b60ff168452565b6128b4600160ff6128ad865160ff1690565b16146127c3565b6128ce6128c082612f60565b63ffffffff16610100850152565b6128da61275882612eac565b6006906128e68161280f565b9061012086019182526000915b818310612a205750505090612a086129ec6129ca6129b661299961297f87612929612922612a199a8a51612871565b828a612d69565b602081519101206040516129578161294960208201948560209181520190565b03601f198101835282610274565b5190206101408c015261297a61296d828a612fbc565b63ffffffff1660208d0152565b61197b565b61297a61298c8289612fbc565b63ffffffff1660408c0152565b6129b16129a68288612f44565b61ffff1660608b0152565b61196d565b6129c08186613050565b6080890152611951565b6129e76129d78286612fd8565b6001600160401b031660a0890152565b611997565b612a036129f98285612ecc565b60ff1660c0880152565b61195f565b612a13818351612871565b91612d69565b60e0830152565b909192612ab4612a92612a73612a5784612a03612a40612aba978c612ecc565b6060612a4d8c8b51611b75565b51019060ff169052565b612a61818a613050565b612a6c898851611b75565b5152611951565b612a7d8189613050565b6020612a8a898851611b75565b510152611951565b612a03612aa7612aa2838a612ecc565b61285f565b6040612a4d898851611b75565b93611b66565b91906128f3565b610100811015612aea578060011b908082046002149015171561106f576003610336910461195f565b60405162461bcd60e51b8152602060048201526012602482015271746f6f206d616e7920677561726469616e7360701b6044820152606490fd5b63ffffffff62015180814216019080821161106f576102c29216600052600260205260016040600020019063ffffffff1663ffffffff19825416179055565b9080519081516001600160401b03811161021e5768010000000000000000811161021e578354818555808210612bf2575b506020809301612ba985600052602060002090565b60005b838110612bd7575050505001516001909101805463ffffffff191663ffffffff909216919091179055565b82516001600160a01b03168282015591850191600101612bac565b6000858152826020822092830192015b828110612c10575050612b94565b818155600101612c02565b9081515160005b818110612c485750509063ffffffff6102c2921660005260026020526040600020612b63565b83516001600160a01b0390612c5e908390611b75565b511615612c7357612c6e90611b66565b612c22565b60405162461bcd60e51b815260206004820152600b60248201526a496e76616c6964206b657960a81b6044820152606490fd5b468103612cb257600855565b60405162461bcd60e51b81526020600482015260126024820152711a5b9d985b1a5908195d9b50da185a5b925960721b6044820152606490fd5b15612cf357565b60405162461bcd60e51b815260206004820152600e60248201526d736c6963655f6f766572666c6f7760901b6044820152606490fd5b15612d3057565b60405162461bcd60e51b8152602060048201526011602482015270736c6963655f6f75744f66426f756e647360781b6044820152606490fd5b91612d7e81612d77816119a5565b1015612cec565b612d948351612d8d83856119b3565b1115612d29565b80612dad57505050604051600081526020810160405290565b60405192601f821692831560051b80858701019484860193010101905b808410612de25750508252601f01601f191660405290565b9092835181526020809101930190612dca565b908151601482019081831161106f5710612e1457016020015160601c90565b60405162461bcd60e51b8152602060048201526015602482015274746f416464726573735f6f75744f66426f756e647360581b6044820152606490fd5b6021815110612e61576021015190565b60405162461bcd60e51b8152602060048201526013602482015272746f55696e74385f6f75744f66426f756e647360681b6044820152606490fd5b6001815110612e61576001015190565b6006815110612e61576006015190565b6028815110612e61576028015190565b908151600182019081831161106f5710612e6157016001015190565b6023815110612ef8576023015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7431365f6f75744f66426f756e647360601b6044820152606490fd5b6043815110612ef8576043015190565b908151600282019081831161106f5710612ef857016002015190565b6005815110612f70576005015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7433325f6f75744f66426f756e647360601b6044820152606490fd5b6027815110612f70576027015190565b908151600482019081831161106f5710612f7057016004015190565b908151600882019081831161106f5710612ff457016008015190565b60405162461bcd60e51b8152602060048201526014602482015273746f55696e7436345f6f75744f66426f756e647360601b6044820152606490fd5b6020815110611a79576020015190565b6063815110611a79576063015190565b908151602082019081831161106f5710611a795701602001519056fea2646970667358221220e01f3fc19a7b6f650a08aafb55409b8aa16f0ebf4a5804ec4ce7df76358d349364736f6c63430008130033",G=r=>r.length>1;class p extends m{constructor(...e){G(e)?super(...e):super(s,u,e[0])}getDeployTransaction(e){return super.getDeployTransaction(e||{})}deploy(e){return super.deploy(e||{})}connect(e){return super.connect(e)}static bytecode=u;static abi=s;static createInterface(){return new T(s)}static connect(e,t){return new g(e,s,t)}}const F=Object.freeze(Object.defineProperty({__proto__:null,Implementation__factory:p},Symbol.toStringTag,{value:"Module"}));x(I,"WormholeCore",d);const V=Object.freeze(Object.defineProperty({__proto__:null,EvmWormholeCore:d,ethers_contracts:F},Symbol.toStringTag,{value:"Module"}));export{d as E,A as a,V as i};
@@ -1 +1 @@
1
- import{T as m,S as u}from"./sui-B96bqBVv.js";import{dF as b,d7 as T,d5 as I,d6 as h,bp as k,d8 as f,d4 as v}from"../main.js";import{S}from"./unsignedTransaction-BGuwfkhg.js";import"./chain-gFcyni6Z.js";import"./blake2b-Co34_VaK.js";import"./index-CVw-_90u.js";const C=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],_=b(C,[0,1]);class g{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;constructor(s,t,r,e){if(this.network=s,this.chain=t,this.provider=r,this.contracts=e,s==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=T.get(this.network,this.chain);if(!n)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:i,messageTransmitterState:a,usdcTreasury:o}=_(s);if(!e.cctp?.tokenMessenger)throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!e.cctp?.messageTransmitter)throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);this.usdcId=n,this.usdcTreasuryId=o,this.tokenMessengerId=e.cctp?.tokenMessenger,this.messageTransmitterId=e.cctp?.messageTransmitter,this.tokenMessengerStateId=i,this.messageTransmitterStateId=a}async*transfer(s,t,r){const e=new m,n=I.get(this.network,t.chain),[i,...a]=await u.getCoins(this.provider,s,this.usdcId);if(i===void 0)throw new Error("No USDC in wallet");const o=e.object(i.coinObjectId);a.length>0&&e.mergeCoins(o,a.map(c=>e.object(c.coinObjectId)));const[d]=e.splitCoins(o,[r]);e.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[d,e.pure.u32(n),e.pure.address(t.address.toUniversalAddress().toString()),e.object(this.tokenMessengerStateId),e.object(this.messageTransmitterStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Transfer")}async isTransferCompleted(s){const t=new m;t.moveCall({target:`${this.messageTransmitterId}::state::is_nonce_used`,arguments:[t.object(this.messageTransmitterStateId),t.pure.u32(s.sourceDomain),t.pure.u64(s.nonce)]});const r=await this.provider.devInspectTransactionBlock({sender:"0x0000000000000000000000000000000000000000000000000000000000000000",transactionBlock:t});try{return!!r.results[0].returnValues[0][0][0]}catch(e){return console.error(`Error reading if nonce was used: ${e}`),!1}}async*redeem(s,t,r){const e=new m,[n]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::receive_message`,arguments:[e.pure.vector("u8",h.serialize(t)),e.pure.vector("u8",k.decode(r)),e.object(this.messageTransmitterStateId)]});if(!n)throw new Error("Failed to produce receipt");const[i]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::handle_receive_message`,arguments:[n,e.object(this.tokenMessengerStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]});if(!i)throw new Error("Failed to produce stamp receipt ticket with burn message");const[a]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::deconstruct_stamp_receipt_ticket_with_burn_message`,arguments:[i]});if(!a)throw new Error("Failed to produce stamp receipt ticket");const[o]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::stamp_receipt`,arguments:[a,e.object(this.messageTransmitterStateId)],typeArguments:[`${this.tokenMessengerId}::message_transmitter_authenticator::MessageTransmitterAuthenticator`]});if(!o)throw new Error("Failed to produce stamped receipt");e.moveCall({target:`${this.messageTransmitterId}::receive_message::complete_receive_message`,arguments:[o,e.object(this.messageTransmitterStateId)]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Redeem")}async parseTransactionDetails(s){const t=await this.provider.waitForTransaction({digest:s,options:{showEvents:!0,showEffects:!0,showInput:!0}});if(!t)throw new Error("Transaction not found");if(!t.events)throw new Error("Transaction events not found");const r=t.events?.find(w=>w.type.includes("send_message::MessageSent"));if(!r)throw new Error("No MessageSent event found");const e=new Uint8Array((r?.parsedJson).message),[n,i]=h.deserialize(e),{payload:a}=n,o=a.messageSender,d=a.mintRecipient,c=f(this.network,n.sourceDomain),p=f(this.network,n.destinationDomain),l={chain:c,address:a.burnToken};return{from:{chain:c,address:o},to:{chain:p,address:d},token:l,amount:a.amount,message:n,id:{hash:i}}}static async fromRpc(s,t){const[r,e]=await u.chainFromRpc(s),n=t[e];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new g(r,e,s,n.contracts)}createUnsignedTx(s,t,r=!1){return new S(s,this.network,this.chain,t,r)}}v("Sui","CircleBridge",g);export{g as SuiCircleBridge,C as _suiCircleObjects,_ as suiCircleObjects};
1
+ import{T as m,S as u}from"./sui-7K04yY2U.js";import{dG as b,d7 as T,d5 as I,d6 as h,bp as k,d8 as f,d4 as v}from"../main.js";import{S}from"./unsignedTransaction-BGuwfkhg.js";import"./chain-gFcyni6Z.js";import"./blake2b-Co34_VaK.js";import"./index-CVw-_90u.js";const C=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],_=b(C,[0,1]);class g{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;constructor(s,t,r,e){if(this.network=s,this.chain=t,this.provider=r,this.contracts=e,s==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=T.get(this.network,this.chain);if(!n)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:i,messageTransmitterState:a,usdcTreasury:o}=_(s);if(!e.cctp?.tokenMessenger)throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!e.cctp?.messageTransmitter)throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);this.usdcId=n,this.usdcTreasuryId=o,this.tokenMessengerId=e.cctp?.tokenMessenger,this.messageTransmitterId=e.cctp?.messageTransmitter,this.tokenMessengerStateId=i,this.messageTransmitterStateId=a}async*transfer(s,t,r){const e=new m,n=I.get(this.network,t.chain),[i,...a]=await u.getCoins(this.provider,s,this.usdcId);if(i===void 0)throw new Error("No USDC in wallet");const o=e.object(i.coinObjectId);a.length>0&&e.mergeCoins(o,a.map(c=>e.object(c.coinObjectId)));const[d]=e.splitCoins(o,[r]);e.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[d,e.pure.u32(n),e.pure.address(t.address.toUniversalAddress().toString()),e.object(this.tokenMessengerStateId),e.object(this.messageTransmitterStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Transfer")}async isTransferCompleted(s){const t=new m;t.moveCall({target:`${this.messageTransmitterId}::state::is_nonce_used`,arguments:[t.object(this.messageTransmitterStateId),t.pure.u32(s.sourceDomain),t.pure.u64(s.nonce)]});const r=await this.provider.devInspectTransactionBlock({sender:"0x0000000000000000000000000000000000000000000000000000000000000000",transactionBlock:t});try{return!!r.results[0].returnValues[0][0][0]}catch(e){return console.error(`Error reading if nonce was used: ${e}`),!1}}async*redeem(s,t,r){const e=new m,[n]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::receive_message`,arguments:[e.pure.vector("u8",h.serialize(t)),e.pure.vector("u8",k.decode(r)),e.object(this.messageTransmitterStateId)]});if(!n)throw new Error("Failed to produce receipt");const[i]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::handle_receive_message`,arguments:[n,e.object(this.tokenMessengerStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]});if(!i)throw new Error("Failed to produce stamp receipt ticket with burn message");const[a]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::deconstruct_stamp_receipt_ticket_with_burn_message`,arguments:[i]});if(!a)throw new Error("Failed to produce stamp receipt ticket");const[o]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::stamp_receipt`,arguments:[a,e.object(this.messageTransmitterStateId)],typeArguments:[`${this.tokenMessengerId}::message_transmitter_authenticator::MessageTransmitterAuthenticator`]});if(!o)throw new Error("Failed to produce stamped receipt");e.moveCall({target:`${this.messageTransmitterId}::receive_message::complete_receive_message`,arguments:[o,e.object(this.messageTransmitterStateId)]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Redeem")}async parseTransactionDetails(s){const t=await this.provider.waitForTransaction({digest:s,options:{showEvents:!0,showEffects:!0,showInput:!0}});if(!t)throw new Error("Transaction not found");if(!t.events)throw new Error("Transaction events not found");const r=t.events?.find(w=>w.type.includes("send_message::MessageSent"));if(!r)throw new Error("No MessageSent event found");const e=new Uint8Array((r?.parsedJson).message),[n,i]=h.deserialize(e),{payload:a}=n,o=a.messageSender,d=a.mintRecipient,c=f(this.network,n.sourceDomain),p=f(this.network,n.destinationDomain),l={chain:c,address:a.burnToken};return{from:{chain:c,address:o},to:{chain:p,address:d},token:l,amount:a.amount,message:n,id:{hash:i}}}static async fromRpc(s,t){const[r,e]=await u.chainFromRpc(s),n=t[e];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new g(r,e,s,n.contracts)}createUnsignedTx(s,t,r=!1){return new S(s,this.network,this.chain,t,r)}}v("Sui","CircleBridge",g);export{g as SuiCircleBridge,C as _suiCircleObjects,_ as suiCircleObjects};