@wormhole-foundation/wormhole-connect 4.1.0-beta.1-development → 5.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (352) hide show
  1. package/dist/assets/{aptos-C9pj8h2Q.js → aptos-DgUCX7ng.js} +3 -3
  2. package/dist/assets/{evm-DCydYqBI.js → evm-B6bqAPTR.js} +4 -4
  3. package/dist/assets/{evm-CJXv6IQV.js → evm-Ve5nG8Fs.js} +1 -1
  4. package/dist/assets/{index-LvDsy6wR.js → index-BJokXZAc.js} +1 -1
  5. package/dist/assets/{index-BqxX-Ey7.js → index-BJv9sngo.js} +1 -1
  6. package/dist/assets/{index-C9cy4cDs.js → index-BjZMFLjq.js} +1 -1
  7. package/dist/assets/{index-FJ-n91Op.js → index-BwbPlAQZ.js} +1 -1
  8. package/dist/assets/{index-Clu5I99l.js → index-Bzg4DNh9.js} +1 -1
  9. package/dist/assets/{index-ezhfpCvx.js → index-CKXa657f.js} +1 -1
  10. package/dist/assets/index-CXiuP738.js +1 -0
  11. package/dist/assets/{index-CNExx9Zb.js → index-CvTvoHH-.js} +1 -1
  12. package/dist/assets/{index-C25bHdOM.js → index-D1ULRVbZ.js} +1 -1
  13. package/dist/assets/{index-DpabQJOX.js → index-DlH9IMQl.js} +1 -1
  14. package/dist/assets/{index-C8u74RER.js → index-Dsb-5apv.js} +1 -1
  15. package/dist/assets/{index-D9ApKauA.js → index-_YFUWLUM.js} +1 -1
  16. package/dist/assets/{index-CoIvdDsX.js → index-jg26xdEi.js} +1 -1
  17. package/dist/assets/{provider-jsonrpc-DuMpLBV0.js → provider-jsonrpc-DNgUKjG6.js} +1 -1
  18. package/dist/assets/{solana-DWuIx6gK.js → solana-D4RepnSA.js} +2 -2
  19. package/dist/assets/{sui-BcTGBE_4.js → sui-Du5h-f8S.js} +3 -3
  20. package/dist/main.mjs +185 -140
  21. package/dist/src/components/ConfigurablePageHeader.d.ts +1 -1
  22. package/dist/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  23. package/dist/src/components/Header.d.ts +1 -0
  24. package/dist/src/components/Header.d.ts.map +1 -1
  25. package/dist/src/components/PageHeader.d.ts +1 -3
  26. package/dist/src/components/PageHeader.d.ts.map +1 -1
  27. package/dist/src/components/SampleApp/index.d.ts.map +1 -1
  28. package/dist/src/components/v3/BackButton.d.ts +6 -0
  29. package/dist/src/components/v3/BackButton.d.ts.map +1 -0
  30. package/dist/src/components/v3/FormContent.d.ts +5 -0
  31. package/dist/src/components/v3/FormContent.d.ts.map +1 -0
  32. package/dist/src/config/constants.d.ts.map +1 -1
  33. package/dist/src/config/events.d.ts +2 -1
  34. package/dist/src/config/events.d.ts.map +1 -1
  35. package/dist/src/config/mainnet/chains.d.ts.map +1 -1
  36. package/dist/src/config/mainnet/rpcs.d.ts.map +1 -1
  37. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  38. package/dist/src/config/mainnet/wrappedTokens.d.ts +6 -0
  39. package/dist/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  40. package/dist/src/config/types.d.ts +6 -11
  41. package/dist/src/config/types.d.ts.map +1 -1
  42. package/dist/src/config/ui.d.ts +9 -0
  43. package/dist/src/config/ui.d.ts.map +1 -1
  44. package/dist/src/consts/wallet.d.ts.map +1 -1
  45. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  46. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  47. package/dist/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  48. package/dist/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  49. package/dist/src/hooks/useTransactionHistory.d.ts.map +1 -1
  50. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  51. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  52. package/dist/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  53. package/dist/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  54. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  55. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  56. package/dist/src/icons/PoweredBy.d.ts.map +1 -1
  57. package/dist/src/icons/TokenIcons.d.ts.map +1 -1
  58. package/dist/src/icons/Tokens/AUSD.d.ts +4 -0
  59. package/dist/src/icons/Tokens/AUSD.d.ts.map +1 -0
  60. package/dist/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  61. package/dist/src/routes/mayan/utils.d.ts.map +1 -1
  62. package/dist/src/routes/monad/consts.d.ts +1 -0
  63. package/dist/src/routes/monad/consts.d.ts.map +1 -1
  64. package/dist/src/routes/monad/monad.test.d.ts +1 -0
  65. package/dist/src/routes/monad/monad.test.d.ts.map +1 -0
  66. package/dist/src/routes/monad/utils.d.ts.map +1 -1
  67. package/dist/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  68. package/dist/src/telemetry/types.d.ts +5 -2
  69. package/dist/src/telemetry/types.d.ts.map +1 -1
  70. package/dist/src/theme.d.ts +4 -3
  71. package/dist/src/theme.d.ts.map +1 -1
  72. package/dist/src/utils/errors.d.ts +1 -0
  73. package/dist/src/utils/errors.d.ts.map +1 -1
  74. package/dist/src/utils/fees.d.ts.map +1 -1
  75. package/dist/src/utils/index.d.ts.map +1 -1
  76. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  77. package/dist/src/utils/wallet/index.d.ts +1 -0
  78. package/dist/src/utils/wallet/index.d.ts.map +1 -1
  79. package/dist/src/views/Terms.d.ts.map +1 -1
  80. package/dist/src/views/TxSearch.d.ts.map +1 -1
  81. package/dist/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  82. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  83. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  84. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  85. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  86. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  87. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  88. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  89. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  90. package/dist/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  91. package/dist/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  92. package/dist/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  93. package/dist/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  94. package/dist/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  95. package/dist/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  96. package/dist/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  97. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  98. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  99. package/dist/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  100. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  101. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  102. package/dist/src/views/v3/Bridge/index.d.ts.map +1 -1
  103. package/dist/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  104. package/dist/src/views/v3/Redeem/index.d.ts.map +1 -1
  105. package/dist/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  106. package/dist/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  107. package/lib/{account-cIQhxn1E.js → account-K005OXgL.js} +1 -1
  108. package/lib/{account-BVl6Reot.mjs → account-TXlxMyv4.mjs} +2 -2
  109. package/lib/{address-rVHWlcKQ.mjs → address-CX0E32ut.mjs} +1 -1
  110. package/lib/{address-W9jn6Qdk.js → address-DqbIfKOu.js} +1 -1
  111. package/lib/{aptos-DWDR5o78.js → aptos-BnjZOhUE.js} +1 -1
  112. package/lib/{aptos-CNHYHK9c.js → aptos-CnswqE-C.js} +2 -2
  113. package/lib/{aptos-D1WFzBMy.mjs → aptos-DRfXJ8Ba.mjs} +7 -7
  114. package/lib/{aptos-B84P9rJZ.mjs → aptos-fTiHvXXE.mjs} +5 -5
  115. package/lib/{associatedTokenAccount-C4vEEbG5.js → associatedTokenAccount-CeqdaO2m.js} +1 -1
  116. package/lib/{associatedTokenAccount-DF6phO3l.mjs → associatedTokenAccount-Dsm4Hq32.mjs} +3 -3
  117. package/lib/{basic-BERCwt2M.mjs → basic-BqusrmRE.mjs} +3 -3
  118. package/lib/{basic-NhXxxbR1.js → basic-BrW22Cj9.js} +1 -1
  119. package/lib/{basic-CukRIaOD.mjs → basic-CK5Bsf0B.mjs} +3 -3
  120. package/lib/{basic-DJXXfABO.js → basic-ChOmeQQk.js} +1 -1
  121. package/lib/{chunk-KJH4KKG6-Brt4fyqz.mjs → chunk-KJH4KKG6-BfVMUPsB.mjs} +3 -3
  122. package/lib/{chunk-KJH4KKG6-BbF5W1_N.js → chunk-KJH4KKG6-CJx-rDa6.js} +1 -1
  123. package/lib/constants-C1w_RyOP.js +1 -0
  124. package/lib/{constants-VaoVbllu.mjs → constants-DcDpDarO.mjs} +6 -5
  125. package/lib/{core-BCZrVb_s.mjs → core-DQ-6Q1F1.mjs} +6 -6
  126. package/lib/{core-BE6SS7Ye.js → core-FA2gBc-s.js} +3 -3
  127. package/lib/{create-CChLkbGc.mjs → create-C5dhTMHL.mjs} +1 -1
  128. package/lib/{create-4w0DrcRO.js → create-bA3Gyivs.js} +1 -1
  129. package/lib/{evm-CmmnpcFD.mjs → evm-BJ4Lx-r9.mjs} +5 -5
  130. package/lib/{evm--K7mr7Kr.js → evm-BTgO_HRP.js} +2 -2
  131. package/lib/{evm-DKaWm7eC.mjs → evm-C-vXMfGr.mjs} +7 -7
  132. package/lib/{evm-C5BixKBn.js → evm-qxndAh3z.js} +1 -1
  133. package/lib/executor.js +1 -1
  134. package/lib/executor.mjs +13 -15
  135. package/lib/hosted.js +1 -1
  136. package/lib/hosted.mjs +1 -1
  137. package/lib/hypercore-D7kZiwbe.js +4 -0
  138. package/lib/{hypercore-birmbh9T.mjs → hypercore-DKqayfki.mjs} +4858 -3107
  139. package/lib/{index-qL4D-cpk.js → index-1T4sIL8n.js} +1 -1
  140. package/lib/{index-Ap7250Gf.mjs → index-39tU5Y5t.mjs} +6 -6
  141. package/lib/{index-BUbUhbMe.js → index-3Zg1AdoI.js} +1 -1
  142. package/lib/{index-D7gCsil9.js → index-6m7yero0.js} +1 -1
  143. package/lib/{index-CH0iw38J.mjs → index-B1URQBlH.mjs} +3 -3
  144. package/lib/{index-C5I7QiZ7.mjs → index-B6Ppg6EZ.mjs} +3 -3
  145. package/lib/{index-CED5jdrg.js → index-B7b8sctd.js} +1 -1
  146. package/lib/{index-xvG6cxNx.js → index-BEIFBxtP.js} +1 -1
  147. package/lib/{index-zIzzPp6D.mjs → index-BHpJUZne.mjs} +3 -3
  148. package/lib/{index-BTcij9Np.js → index-BJ0xVutl.js} +1 -1
  149. package/lib/{index-C61IKE_V.mjs → index-BSIPYyeZ.mjs} +2 -2
  150. package/lib/{index-EbSw7SbC.js → index-BTjUHY0e.js} +1 -1
  151. package/lib/{index-C8YhpD9T.mjs → index-BVciucyT.mjs} +4 -4
  152. package/lib/{index-BuHdMHLz.mjs → index-Ba1zbu3Q.mjs} +2 -2
  153. package/lib/{index-BU35GfG0.mjs → index-Bdtj4LUz.mjs} +2 -2
  154. package/lib/{index-Bs28m4ya.js → index-BfzaCmg7.js} +1 -1
  155. package/lib/{index-CN7M4gwf.mjs → index-BviSNDV7.mjs} +5 -5
  156. package/lib/{index-BRFbmsc_.js → index-C-F8_8dY.js} +1 -1
  157. package/lib/{index-Cys9e11O.js → index-C-SMuVS3.js} +1 -1
  158. package/lib/{index-pYTU7pQK.mjs → index-C6MalNd5.mjs} +4 -3
  159. package/lib/{index-Cg1Xo1eZ.js → index-C85u3Gj5.js} +1 -1
  160. package/lib/{index-Da9rvmCc.js → index-Cb0UWLGI.js} +1 -1
  161. package/lib/{index-HrZv1SyT.js → index-Cb_8WAm1.js} +8 -8
  162. package/lib/{index-DHnmtpvA.mjs → index-CcbY14s5.mjs} +4 -4
  163. package/lib/{index-CR1itkLl.mjs → index-CgqBQ88K.mjs} +3248 -3055
  164. package/lib/{index-Txz5xwr6.mjs → index-CowAVUcg.mjs} +1 -1
  165. package/lib/{index-BKgliEPZ.mjs → index-CrWTw0Se.mjs} +2 -2
  166. package/lib/{index-B_JJ50Y-.mjs → index-D-HUNEka.mjs} +4 -4
  167. package/lib/{index-BhMcIAHt.js → index-DJ2w1fz1.js} +1 -1
  168. package/lib/{index-BN_2mA2n.mjs → index-DcFL403C.mjs} +1 -1
  169. package/lib/{index-CO4ZoIAU.mjs → index-DjmVBSGQ.mjs} +4 -4
  170. package/lib/{index-Co3mm7UN.mjs → index-DrJE8udd.mjs} +1 -1
  171. package/lib/{index-fTUcaKb4.js → index-DuhYwr0t.js} +1 -1
  172. package/lib/{index-BQ0lWQfT.mjs → index-DwEx1Hn-.mjs} +2 -2
  173. package/lib/{index-DBofyYkS.js → index-DziujHu1.js} +1 -1
  174. package/lib/{index-Dou5sFku.js → index-JWbF-m3e.js} +1 -1
  175. package/lib/index-Oxm0y6-t.js +1 -0
  176. package/lib/{index-D1odbjeH.mjs → index-VnJcNK62.mjs} +3 -3
  177. package/lib/{index-DVxmRy4C.js → index-WrXSs0ic.js} +1 -1
  178. package/lib/{index-Cw0jWBks.js → index-XjDX4fWv.js} +1 -1
  179. package/lib/{index-CsdD1TNi.js → index-aMKUba1k.js} +1 -1
  180. package/lib/{index-DSnylejH.mjs → index-dufPAW5T.mjs} +292 -269
  181. package/lib/{index-lZY5fTXF.js → index-lAqXlt-a.js} +1 -1
  182. package/lib/{index-N4FkpEh9.mjs → index-mNO1mk2F.mjs} +4 -4
  183. package/lib/{index-BScgBddV.mjs → index-o1SAPXm_.mjs} +3 -3
  184. package/lib/{index-DNZ-Pkpm.mjs → index-rxQSA9t0.mjs} +6 -6
  185. package/lib/{index-DALvn9lg.js → index-v7w8krM0.js} +1 -1
  186. package/lib/{index-japympio.js → index-wadjmD_G.js} +1 -1
  187. package/lib/{index.es-DmmqAOLD.js → index.es-B9kBDkCQ.js} +3 -3
  188. package/lib/{index.es-Dg6IFrL4.js → index.es-BZRO-bNH.js} +1 -1
  189. package/lib/{index.es-B0fk_42a.mjs → index.es-CF3YY88z.mjs} +4 -4
  190. package/lib/{index.es-CDqFguL5.mjs → index.es-CaAL5X4E.mjs} +4 -4
  191. package/lib/index.js +78 -33
  192. package/lib/index.mjs +9158 -8833
  193. package/lib/{keypair-DWucLGoA.js → keypair-DCgXFOw5.js} +1 -1
  194. package/lib/{keypair-CP7syX9B.mjs → keypair-vpG2fl-q.mjs} +3 -3
  195. package/lib/lifi.js +1 -1
  196. package/lib/lifi.mjs +75 -76
  197. package/lib/mayan.js +2 -2
  198. package/lib/mayan.mjs +11 -10
  199. package/lib/{mint-CoNdQTGM.mjs → mint-BPrKG-Zc.mjs} +3 -3
  200. package/lib/{mint-CxQ6P5lT.js → mint-DW-XgF68.js} +1 -1
  201. package/lib/monad.js +1 -1
  202. package/lib/monad.mjs +91 -58
  203. package/lib/multiToken-B9BoSxdr.js +1 -0
  204. package/lib/{multiToken-Bm-K5dRJ.mjs → multiToken-DMllgxzT.mjs} +4 -3
  205. package/lib/ntt.js +2 -2
  206. package/lib/ntt.mjs +77 -86
  207. package/lib/{platform-Cil_UtAQ.mjs → platform-CSpAb386.mjs} +2788 -2748
  208. package/lib/{platform-BMKYxqvv.js → platform-Csj1Outc.js} +1 -1
  209. package/lib/platform-DCcL7jHP.js +11 -0
  210. package/lib/{platform-vRQufc6j.mjs → platform-YzJZdSCf.mjs} +3 -3
  211. package/lib/{secp256k1-LTcmQEQ5.mjs → secp256k1-1o6o1kFy.mjs} +1 -1
  212. package/lib/{secp256k1-DzRCmd6a.mjs → secp256k1-BjlnTj1_.mjs} +1 -1
  213. package/lib/{secp256k1-CglUNI04.js → secp256k1-CeYT4ndf.js} +1 -1
  214. package/lib/{secp256k1-DROP2Lhv.mjs → secp256k1-Cw_BiEuN.mjs} +1 -1
  215. package/lib/{secp256k1-BkoM1Jum.js → secp256k1-D5cKS6q_.js} +1 -1
  216. package/lib/{secp256k1-CcVQkYNr.js → secp256k1-_QlJc7sK.js} +1 -1
  217. package/lib/{signer-0hWrZ5BZ.mjs → signer-D2GRgRrw.mjs} +2 -2
  218. package/lib/{signer-DyqulDUM.js → signer-gjSiV5v3.js} +1 -1
  219. package/lib/solana-DfW5T_64.mjs +18 -0
  220. package/lib/{solana-C4k_Yg7w.js → solana-DvHFhri3.js} +4 -4
  221. package/lib/solana-Edd9tIkX.js +1 -0
  222. package/lib/{solana-D1LVIhGd.mjs → solana-TgPr9kpk.mjs} +10 -10
  223. package/lib/{solanaEmbed.esm-AvWQUA9e.mjs → solanaEmbed.esm-Bh1-aAL4.mjs} +4 -4
  224. package/lib/{solanaEmbed.esm--Ac-IlRA.js → solanaEmbed.esm-C8TjRcIV.js} +1 -1
  225. package/lib/{solidity-CbDkqHjE.js → solidity-BW7c8rFv.js} +1 -1
  226. package/lib/{solidity-Dk_mvceo.mjs → solidity-D9gSgFcp.mjs} +1 -1
  227. package/lib/src/components/ConfigurablePageHeader.d.ts +1 -1
  228. package/lib/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  229. package/lib/src/components/Header.d.ts +1 -0
  230. package/lib/src/components/Header.d.ts.map +1 -1
  231. package/lib/src/components/PageHeader.d.ts +1 -3
  232. package/lib/src/components/PageHeader.d.ts.map +1 -1
  233. package/lib/src/components/SampleApp/index.d.ts.map +1 -1
  234. package/lib/src/components/v3/BackButton.d.ts +6 -0
  235. package/lib/src/components/v3/BackButton.d.ts.map +1 -0
  236. package/lib/src/components/v3/FormContent.d.ts +5 -0
  237. package/lib/src/components/v3/FormContent.d.ts.map +1 -0
  238. package/lib/src/config/constants.d.ts.map +1 -1
  239. package/lib/src/config/events.d.ts +2 -1
  240. package/lib/src/config/events.d.ts.map +1 -1
  241. package/lib/src/config/mainnet/chains.d.ts.map +1 -1
  242. package/lib/src/config/mainnet/rpcs.d.ts.map +1 -1
  243. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  244. package/lib/src/config/mainnet/wrappedTokens.d.ts +6 -0
  245. package/lib/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  246. package/lib/src/config/types.d.ts +6 -11
  247. package/lib/src/config/types.d.ts.map +1 -1
  248. package/lib/src/config/ui.d.ts +9 -0
  249. package/lib/src/config/ui.d.ts.map +1 -1
  250. package/lib/src/consts/wallet.d.ts.map +1 -1
  251. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  252. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  253. package/lib/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  254. package/lib/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  255. package/lib/src/hooks/useTransactionHistory.d.ts.map +1 -1
  256. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  257. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  258. package/lib/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  259. package/lib/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  260. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  261. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  262. package/lib/src/icons/PoweredBy.d.ts.map +1 -1
  263. package/lib/src/icons/TokenIcons.d.ts.map +1 -1
  264. package/lib/src/icons/Tokens/AUSD.d.ts +4 -0
  265. package/lib/src/icons/Tokens/AUSD.d.ts.map +1 -0
  266. package/lib/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  267. package/lib/src/routes/mayan/utils.d.ts.map +1 -1
  268. package/lib/src/routes/monad/consts.d.ts +1 -0
  269. package/lib/src/routes/monad/consts.d.ts.map +1 -1
  270. package/lib/src/routes/monad/monad.test.d.ts +1 -0
  271. package/lib/src/routes/monad/monad.test.d.ts.map +1 -0
  272. package/lib/src/routes/monad/utils.d.ts.map +1 -1
  273. package/lib/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  274. package/lib/src/telemetry/types.d.ts +5 -2
  275. package/lib/src/telemetry/types.d.ts.map +1 -1
  276. package/lib/src/theme.d.ts +4 -3
  277. package/lib/src/theme.d.ts.map +1 -1
  278. package/lib/src/utils/errors.d.ts +1 -0
  279. package/lib/src/utils/errors.d.ts.map +1 -1
  280. package/lib/src/utils/fees.d.ts.map +1 -1
  281. package/lib/src/utils/index.d.ts.map +1 -1
  282. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  283. package/lib/src/utils/wallet/index.d.ts +1 -0
  284. package/lib/src/utils/wallet/index.d.ts.map +1 -1
  285. package/lib/src/views/Terms.d.ts.map +1 -1
  286. package/lib/src/views/TxSearch.d.ts.map +1 -1
  287. package/lib/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  288. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  289. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  290. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  291. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  292. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  293. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  294. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  295. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  296. package/lib/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  297. package/lib/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  298. package/lib/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  299. package/lib/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  300. package/lib/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  301. package/lib/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  302. package/lib/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  303. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  304. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  305. package/lib/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  306. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  307. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  308. package/lib/src/views/v3/Bridge/index.d.ts.map +1 -1
  309. package/lib/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  310. package/lib/src/views/v3/Redeem/index.d.ts.map +1 -1
  311. package/lib/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  312. package/lib/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  313. package/lib/{sui-LiXjD27c.js → sui-BtyZE8YC.js} +1 -1
  314. package/lib/{sui-BPAb7kcs.mjs → sui-CoWRa3vr.mjs} +4 -4
  315. package/lib/{sui-CgmDTkXK.js → sui-DwFrGd2Y.js} +1 -1
  316. package/lib/{sui-cpCvd7RC.mjs → sui-QP4AZGNc.mjs} +6 -6
  317. package/lib/{tokenHelpers-CbE0g9BP.js → tokenHelpers-CeTyb4rG.js} +1 -1
  318. package/lib/{tokenHelpers-DvWQs1tu.mjs → tokenHelpers-VYjmKUxj.mjs} +1 -1
  319. package/lib/{tokens-BJDttoCp.mjs → tokens-D6uJqrsR.mjs} +3 -3
  320. package/lib/{tokens-CvZuVW-g.js → tokens-mXZqt-qL.js} +1 -1
  321. package/lib/types-CgveSjsw.js +1 -0
  322. package/lib/{types-iFgwQ7vG.mjs → types-Dxx2g1wS.mjs} +170 -168
  323. package/lib/{unsignedTransaction-DCDxTFq8.mjs → unsignedTransaction-D2Ja0SuN.mjs} +2 -2
  324. package/lib/{unsignedTransaction-DA4tlY5u.js → unsignedTransaction-qRBv5Cnd.js} +2 -2
  325. package/lib/{utils-DMf7wRGI.js → utils-BEljbqMf.js} +1 -1
  326. package/lib/{utils-BSxsyW2c.mjs → utils-mBHX3Jpu.mjs} +4 -4
  327. package/lib/{w3m-modal-DM5Pf8SH.mjs → w3m-modal-BEe8ji9_.mjs} +2 -2
  328. package/lib/{w3m-modal-CtQ0TPA4.mjs → w3m-modal-D3eqrCT1.mjs} +2 -2
  329. package/lib/{w3m-modal-k23UDiov.js → w3m-modal-Duc13ei7.js} +1 -1
  330. package/lib/{w3m-modal-ByamyZny.js → w3m-modal-f_sUVzPx.js} +1 -1
  331. package/lib/{wallet-CMTEE6Oa.mjs → wallet-Cyosy4Hc.mjs} +1 -1
  332. package/lib/{wallet-BMli0fbu.js → wallet-a0_jwP8j.js} +1 -1
  333. package/lib/{web3-CUwFm9Lx.mjs → web3-CdErAVj5.mjs} +2 -2
  334. package/lib/{web3-DdUeM7iQ.js → web3-x1WCGDiy.js} +1 -1
  335. package/package.json +49 -47
  336. package/dist/assets/index-_UMHESh0.js +0 -1
  337. package/dist/src/components/Button.d.ts +0 -13
  338. package/dist/src/components/Button.d.ts.map +0 -1
  339. package/dist/src/icons/Down.d.ts +0 -5
  340. package/dist/src/icons/Down.d.ts.map +0 -1
  341. package/lib/constants-B9TBfA4z.js +0 -1
  342. package/lib/hypercore-4R7JGmbr.js +0 -4
  343. package/lib/index-C8eqQ_7p.js +0 -1
  344. package/lib/multiToken-YoNvxjur.js +0 -1
  345. package/lib/platform-CCG_jgOO.js +0 -11
  346. package/lib/solana-DKFJvqX8.mjs +0 -18
  347. package/lib/solana-Dmje_Si8.js +0 -1
  348. package/lib/src/components/Button.d.ts +0 -13
  349. package/lib/src/components/Button.d.ts.map +0 -1
  350. package/lib/src/icons/Down.d.ts +0 -5
  351. package/lib/src/icons/Down.d.ts.map +0 -1
  352. package/lib/types-CjNs2oB0.js +0 -1
package/lib/executor.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./platform-CCG_jgOO.js"),Ft=require("./chunk-KJH4KKG6-BbF5W1_N.js"),os=require("./platform-BMKYxqvv.js"),st=require("./address-W9jn6Qdk.js"),cs=require("./unsignedTransaction-BXJ9Cpni.js"),r=require("./unsignedTransaction-DA4tlY5u.js"),us=require("./index-Cg1Xo1eZ.js"),ls=require("./index-japympio.js"),be=require("./index-lZY5fTXF.js"),Ce=require("./web3-DdUeM7iQ.js"),ds=require("./account-cIQhxn1E.js"),ms=require("./index-BhMcIAHt.js"),fs={binary:"uint",size:1,custom:{to:n=>n>0,from:n=>n?1:0}},gs=Object.freeze(Object.defineProperty({__proto__:null,amountItem:u.amountItem,boolItem:fs,chainItem:u.chainItem,circleDomainItem:u.circleDomainItem,circleNonceItem:u.circleNonceItem,dateConversion:u.dateConversion,fixedChainItem:u.fixedChainItem,fixedLengthStringItem:u.fixedLengthStringItem,guardianSetItem:u.guardianSetItem,payloadIdItem:u.payloadIdItem,sequenceItem:u.sequenceItem,signatureItem:u.signatureItem,stringConversion:u.stringConversion,universalAddressItem:u.universalAddressItem},Symbol.toStringTag,{value:"Module"})),ft={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},gt={Testnet:{Aptos:"0x14a12d1fd6ef371b70c2113155534ec152ec7f779e281b54866c796c9a4a58d3",Avalanche:"0x2cfEC91B50f657Cc86Ec693542527ac3e03bF742",BaseSepolia:"0x4983C6bD3bB7DA9EECe71cfa7AE4C67CAbf362F0",Sepolia:"0x0F78904c750801391EbBf308181e9d6fc892B0f3",Solana:"CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs"},Mainnet:{Aptos:"0x9f5ad7d5c2d067ca4abb6d8d6aba44c15596b71a1def8eb4596089b527bb2eb1",Arbitrum:"0x55Dd4466BFec29527C54A72fd306efb54e5F7027",Avalanche:"0xd331819478b74d8a7B8EA631118B4a4e50F6EbD1",Base:"0x08FEB1838C3d7F8509DA1EBb9a11a94c1f006cb2",Ethereum:"0xeEFb36c4458dA7798742cf038C5c27E07aB9c51E",Optimism:"0xBC6f9d1CBa49DB365728478cefa02F6743617637",Polygon:"0x007995f2AEcfBC745f20a7AE8D3a02c0EbF46264",Unichain:"0xA7aBDb8f2108901c586543BD5e10E4fA263F4A47",Solana:"CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs"}},ps={Testnet:{Avalanche:"0x4058F0C3924eDaB19c15597C438968ed49C1a213",BaseSepolia:"0xC400FcC0e92d3406747FBb6f513D3aa8B038fcE9",Sepolia:"0x0F18DD26D0B41fb1eaa9cF34D1Ec6022aA69a8e2"},Mainnet:{Arbitrum:"0x8442d68524217601ed126f6859694E4B0C7c66A1",Avalanche:"0x3952914628650Ca510404872D84DfF10A844C5B5",Base:"0xbd8d42f40a11b37bD1b3770D754f9629F7cd5679",Ethereum:"0x2cCf230467FE7387674BAa657747F0B5485c7fEC",HyperEVM:"0xACD054f83c0b852d02503191e2c26527A7E72B1f",Linea:"0xc48c126468BE919068dE1983F00F65af759a4E87",Optimism:"0xd0a8940b2e743e33b682daec4d52b46713606c9d",Polygon:"0xc8a8e6d760dcbd5d6746e2f66cd2ffa722dd1e59",Unichain:"0xD5D5D640D8b758672Cc7A078734175c4433866d5",Seievm:"0xf4FefFc03EEFB06B009bFB168b60B30edf7abc12",Sonic:"0xc39BF082ec91D9bC385F956D24a8D66C0c26223d",Worldchain:"0x789f2b91f7B35D5B890983328340c4600339B354",Plume:"0x486228859880ec6c05175035bEe2e5383D23B0fE",Ink:"0xD71898Ec48D36eba65eeb104AF87b00C24A8F201",Monad:"0xA4d775410FB35d8cE49Ad98d3f483A55e532de73"}},$t={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},tn={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},hs=5001n,ys={Testnet:{Aptos:5000n,ArbitrumSepolia:800000n,Avalanche:200000n,BaseSepolia:200000n,Linea:250000n,Sepolia:200000n,Solana:250000n,Sonic:250000n,Sui:8000000n},Mainnet:{Aptos:5000n,Arbitrum:800000n,Avalanche:250000n,Base:250000n,Ethereum:250000n,HyperEVM:250000n,Linea:250000n,Optimism:250000n,Polygon:250000n,Unichain:250000n,Seievm:250000n,Solana:250000n,Sonic:250000n,Sui:8000000n,Worldchain:250000n,Plume:250000n,Ink:250000n,Monad:250000n}},nn={Testnet:{ArbitrumSepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Avalanche:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},BaseSepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Linea:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Sepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Solana:{tokenMessengerV2:"CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe",messageTransmitterV2:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},Sonic:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"}},Mainnet:{Arbitrum:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Avalanche:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Base:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Ethereum:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},HyperEVM:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Linea:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Optimism:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Polygon:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Solana:{tokenMessengerV2:"CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe",messageTransmitterV2:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},Unichain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Seievm:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Sonic:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Worldchain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Plume:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Ink:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Monad:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"}}},sn={Testnet:{Sepolia:0,Avalanche:1,OptimismSepolia:2,ArbitrumSepolia:3,Solana:5,BaseSepolia:6,Polygon:7,Sui:8,Aptos:9,Unichain:10},Mainnet:{Ethereum:0,Avalanche:1,Optimism:2,Arbitrum:3,Solana:5,Base:6,Polygon:7,Sui:8,Aptos:9,Unichain:10}},Be=(n,e)=>sn[n]?.[e]!==void 0,qe={Testnet:{Sepolia:0,Avalanche:1,ArbitrumSepolia:3,Solana:5,BaseSepolia:6,Linea:11,Sonic:13},Mainnet:{Ethereum:0,Avalanche:1,Optimism:2,Arbitrum:3,Solana:5,Base:6,Polygon:7,Unichain:10,Linea:11,Sonic:13,Worldchain:14,Seievm:16,HyperEVM:19,Ink:21,Plume:22,Monad:15}},Vt={Testnet:{Solana:"8ZHaV5NQ218fLR85VtC9oK3Axyvj8uxGpnKdaswxsxe4"},Mainnet:{Solana:"Ec9XVcN6YqFhqNFTYQD3985jmGFEDa7tHEQK8bbQi5xD"}},rt=(n,e)=>qe[n]?.[e]!==void 0,Pe=(n,e)=>{const t=qe[n]?.[e];if(t===void 0)throw new Error(`CircleV2 domain not found for network ${n} and chain ${e}`);return t},rn=(n,e)=>{const t=Object.entries(qe[n]??{}).find(([,s])=>s===e)?.[0];if(t===void 0)throw new Error(`CircleV2 chain not found for network ${n} and domain ${e}`);return t},He={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var Ne;(function(n){n[n.CONFIRMED=1e3]="CONFIRMED",n[n.FINALIZED=2e3]="FINALIZED"})(Ne||(Ne={}));const an={Testnet:{ArbitrumSepolia:8e3,BaseSepolia:8e3,Sepolia:2e4,Linea:8e3},Mainnet:{Arbitrum:8e3,Base:8e3,Ethereum:2e4,Linea:8e3,Optimism:8e3,Polygon:8e3,Unichain:8e3,Seievm:8e3,Worldchain:8e3,Plume:8e3,Ink:8e3,Monad:8e3}},bs=(n,e)=>an[n]?.[e]!==void 0;class pt{network;chain;provider;contracts;usdcId;shimContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=u.usdcContract.get(this.network,this.chain);if(!i)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=i;const c=gt[e]?.[t];if(!c)throw new Error(`Shim contract for ${t} not found`);this.shimContract=c}static async fromRpc(e,t){const[s,a]=await os.AptosPlatform.chainFromRpc(e),i=t[a];if(!i)throw new Error(`No config found for ${a}`);if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new pt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new st.AptosAddress(e).unwrap(),i=Ft.l.from(t.address.toUniversalAddress().toUint8Array()),c=Ft.l.from(this.usdcId),l=s.remainingAmount+s.referrerFee,d=u.circleChainId.get(this.network,t.chain),p=a,f=new st.AptosAddress(s.referrer?.address?.toString()??a).unwrap(),g=[l,d,i.toString(),c.toString(),s.estimatedCost,u.toChainId(t.chain),p,s.signedQuote,s.relayInstructions,s.referrerFeeDbps,f],y={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:g};yield this.createUnsignedTx(y,"AtposCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new cs.AptosUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(st._platform,"CCTPExecutor",pt);class ht{network;chain;provider;contracts;chainId;shimContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=u.networkChainToNativeChainId.get(e,t);const i=gt[e]?.[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i}static async fromRpc(e,t){const[s,a]=await u.EvmPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new ht(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new u.EvmAddress(e).toString(),i=t.address.toUniversalAddress().toUint8Array(),c=s.remainingAmount+s.referrerFee,l=u.usdcContract.get(this.network,this.chain),d=u.EvmPlatform.getTokenImplementation(this.provider,l);if(await d.allowance(a,this.shimContract)<c){const b=await d.approve.populateTransaction(this.shimContract,c);yield this.createUnsignedTx(u.addFrom(b,a),"ERC20.approve of EvmCCTPExecutor",!1)}const f=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],y=await new u.Contract(this.shimContract,f,this.provider).getFunction("depositForBurn").populateTransaction(c,u.toChainId(t.chain),u.circleChainId.get(this.network,t.chain),i,l,{refundAddress:a,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??a});y.value=s.estimatedCost,yield this.createUnsignedTx(u.addFrom(y,a),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(e,t,s=!1){return new u.EvmUnsignedTransaction(u.addChainId(e,this.chainId),this.network,this.chain,t,s)}}const{amountItem:De,circleDomainItem:_t,universalAddressItem:we}=gs,on={binary:"uint",size:4,custom:1,omit:!1},ws={binary:"bytes",size:32},Nt={binary:"uint",size:4},Ss=[{name:"version",...on},{name:"burnToken",...we},{name:"mintRecipient",...we},{name:"amount",...De},{name:"messageSender",...we},{name:"maxFee",...De},{name:"feeExecuted",...De},{name:"expirationBlock",...De},{name:"hookData",binary:"bytes"}],cn=[{name:"version",...on},{name:"sourceDomain",..._t},{name:"destinationDomain",..._t},{name:"nonce",...ws},{name:"sender",...we},{name:"recipient",...we},{name:"destinationCaller",...we},{name:"minFinalityThreshold",...Nt},{name:"finalityThresholdExecuted",...Nt},{name:"messageBody",binary:"bytes",layout:Ss}],Ms=n=>u.deserialize$1(cn,n),un=n=>u.serialize(cn,n),vs=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],ks=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...u.universalAddressItem}],Cs=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],vs],[[2,"GasDropOffInstruction"],ks]]}],ln=[{name:"requests",binary:"array",layout:Cs}],As={to:n=>new Date(Number(n*1000n)),from:n=>BigInt(n.getTime())/1000n},Ts=[{name:"quote",binary:"switch",idSize:4,idTag:"prefix",layouts:[[[1162948657,"EQ01"],[{name:"quoterAddress",binary:"bytes",size:20},{name:"payeeAddress",binary:"bytes",size:32},{name:"srcChain",binary:"uint",size:2},{name:"dstChain",binary:"uint",size:2},{name:"expiryTime",binary:"uint",size:8,custom:As},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],yt=[...Ts,{name:"signature",binary:"bytes",size:65}];class bt{network;chain;provider;contracts;chainId;shimContract;messageTransmitter;usdcContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=u.networkChainToNativeChainId.get(e,t);const i=ps[e]?.[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i;const c=nn[e]?.[t]?.messageTransmitterV2;if(!c)throw new Error(`MessageTransmitter contract for ${t} not found`);this.messageTransmitter=c;const l=u.usdcContract.get(e,t);if(!l)throw new Error(`USDC contract for ${t} not found`);this.usdcContract=l}static async fromRpc(e,t){const[s,a]=await u.EvmPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new bt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new u.EvmAddress(e).toString(),i=t.address.toUniversalAddress().toUint8Array(),c=s.remainingAmount+s.referrerFee,l=u.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await l.allowance(a,this.shimContract)<c){const w=await l.approve.populateTransaction(this.shimContract,c);yield this.createUnsignedTx(u.addFrom(w,a),"ERC20.approve of EvmCCTPv2Executor",!1)}const p=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, bytes32 destinationCaller, uint256 maxFee, uint32 minFinalityThreshold, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],f=new Uint8Array(32),g=new u.Contract(this.shimContract,p,this.provider),y=Pe(this.network,t.chain),b=await g.getFunction("depositForBurn").populateTransaction(c,u.toChainId(t.chain),y,i,this.usdcContract,f,s.fastTransferMaxFee,s.minFinalityThreshold,{refundAddress:a,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??a});b.value=s.estimatedCost,yield this.createUnsignedTx(u.addFrom(b,a),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(e){return await new u.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(e.nonce)===1n}async*redeem(e,t,s){const a=new u.EvmAddress(e).toString(),c=await new u.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(un(t),u.hex.decode(s));yield this.createUnsignedTx(u.addFrom(c,a),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(e,t,s=!1){return new u.EvmUnsignedTransaction(u.addChainId(e,this.chainId),this.network,this.chain,t,s)}}u.registerProtocol(u._platform,"CCTPExecutor",ht);u.registerProtocol(u._platform,"CCTPv2Executor",bt);const Je=n=>u.base58.encode(n),at=n=>u.base58.decode(n);function Q(n){return Uint8Array.from(atob(n),e=>e.charCodeAt(0))}const Xe=8192;function $(n){if(n.length<Xe)return btoa(String.fromCharCode(...n));let e="";for(var t=0;t<n.length;t+=Xe){const s=n.slice(t,t+Xe);e+=String.fromCharCode(...s)}return btoa(e)}function dn(n){const e=n.startsWith("0x")?n.slice(2):n,t=e.length%2===0?e:`0${e}`,s=t.match(/[0-9a-fA-F]{2}/g)?.map(a=>parseInt(a,16))??[];if(s.length!==t.length/2)throw new Error(`Invalid hex string ${n}`);return Uint8Array.from(s)}function ze(n){return n.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function Es(n,e){return Array.from({length:Math.ceil(n.length/e)},(t,s)=>n.slice(s*e,(s+1)*e))}function Ke(n){let e=BigInt(n);const t=[];let s=0;if(e===0n)return[0];for(;e>0;)t[s]=Number(e&0x7fn),e>>=7n,e>0n&&(t[s]|=128),s+=1;return t}function Is(n){let e=0n,t=0n,s=0;for(;;){if(s>=n.length)throw new Error("ULEB decode error: buffer overflow");const a=n[s];if(s+=1,e+=BigInt(a&127)<<t,(a&128)===0)break;t+=7n}if(e>BigInt(Number.MAX_SAFE_INTEGER))throw new Error("ULEB decode error: value exceeds MAX_SAFE_INTEGER");return{value:Number(e),length:s}}class Ps{constructor(e){this.bytePosition=0,this.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength)}shift(e){return this.bytePosition+=e,this}read8(){const e=this.dataView.getUint8(this.bytePosition);return this.shift(1),e}read16(){const e=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),e}read32(){const e=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),e}read64(){const e=this.read32(),s=this.read32().toString(16)+e.toString(16).padStart(8,"0");return BigInt("0x"+s).toString(10)}read128(){const e=BigInt(this.read64()),s=BigInt(this.read64()).toString(16)+e.toString(16).padStart(16,"0");return BigInt("0x"+s).toString(10)}read256(){const e=BigInt(this.read128()),s=BigInt(this.read128()).toString(16)+e.toString(16).padStart(32,"0");return BigInt("0x"+s).toString(10)}readBytes(e){const t=this.bytePosition+this.dataView.byteOffset,s=new Uint8Array(this.dataView.buffer,t,e);return this.shift(e),s}readULEB(){const e=this.bytePosition+this.dataView.byteOffset,t=new Uint8Array(this.dataView.buffer,e),{value:s,length:a}=Is(t);return this.shift(a),s}readVec(e){const t=this.readULEB(),s=[];for(let a=0;a<t;a++)s.push(e(this,a,t));return s}}function xs(n,e){switch(e){case"base58":return Je(n);case"base64":return $(n);case"hex":return ze(n);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Os(n,e=["<",">"]){const[t,s]=e,a=[];let i="",c=0;for(let l=0;l<n.length;l++){const d=n[l];if(d===t&&c++,d===s&&c--,c===0&&d===","){a.push(i.trim()),i="";continue}i+=d}return a.push(i.trim()),a}class js{constructor({initialSize:e=1024,maxSize:t=1/0,allocateSize:s=1024}={}){this.bytePosition=0,this.size=e,this.maxSize=t,this.allocateSize=s,this.dataView=new DataView(new ArrayBuffer(e))}ensureSizeOrGrow(e){const t=this.bytePosition+e;if(t>this.size){const s=Math.min(this.maxSize,Math.max(this.size+t,this.size+this.allocateSize));if(t>s)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${t}`);this.size=s;const a=new ArrayBuffer(this.size);new Uint8Array(a).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(a)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}writeBytes(e){this.ensureSizeOrGrow(e.length);for(let t=0;t<e.length;t++)this.dataView.setUint8(this.bytePosition+t,e[t]);return this.shift(e.length)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return Ze(BigInt(e),8).forEach(t=>this.write8(t)),this}write128(e){return Ze(BigInt(e),16).forEach(t=>this.write8(t)),this}write256(e){return Ze(BigInt(e),32).forEach(t=>this.write8(t)),this}writeULEB(e){return Ke(e).forEach(t=>this.write8(t)),this}writeVec(e,t){return this.writeULEB(e.length),Array.from(e).forEach((s,a)=>t(this,s,a,e.length)),this}*[Symbol.iterator](){for(let e=0;e<this.bytePosition;e++)yield this.dataView.getUint8(e);return this.toBytes()}toBytes(){return new Uint8Array(this.dataView.buffer.slice(0,this.bytePosition))}toString(e){return xs(this.toBytes(),e)}}function Ze(n,e){const t=new Uint8Array(e);let s=0;for(;n>0;)t[s]=Number(n%BigInt(256)),n=n/BigInt(256),s+=1;return t}var mn=n=>{throw TypeError(n)},fn=(n,e,t)=>e.has(n)||mn("Cannot "+t),_=(n,e,t)=>(fn(n,e,"read from private field"),t?t.call(n):e.get(n)),Le=(n,e,t)=>e.has(n)?mn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),Ge=(n,e,t,s)=>(fn(n,e,"write to private field"),e.set(n,t),t),he,Ae,Re,ne;const Bs=class gn{constructor(e){Le(this,he),Le(this,Ae),this.name=e.name,this.read=e.read,this.serializedSize=e.serializedSize??(()=>null),Ge(this,he,e.write),Ge(this,Ae,e.serialize??((t,s)=>{const a=new js({initialSize:this.serializedSize(t)??void 0,...s});return _(this,he).call(this,t,a),a.toBytes()})),this.validate=e.validate??(()=>{})}write(e,t){this.validate(e),_(this,he).call(this,e,t)}serialize(e,t){return this.validate(e),new Ds(this,_(this,Ae).call(this,e,t))}parse(e){const t=new Ps(e);return this.read(t)}fromHex(e){return this.parse(dn(e))}fromBase58(e){return this.parse(at(e))}fromBase64(e){return this.parse(Q(e))}transform({name:e,input:t,output:s,validate:a}){return new gn({name:e??this.name,read:i=>s?s(this.read(i)):this.read(i),write:(i,c)=>_(this,he).call(this,t?t(i):i,c),serializedSize:i=>this.serializedSize(t?t(i):i),serialize:(i,c)=>_(this,Ae).call(this,t?t(i):i,c),validate:i=>{a?.(i),this.validate(t?t(i):i)}})}};he=new WeakMap;Ae=new WeakMap;let H=Bs;const pn=Symbol.for("@mysten/serialized-bcs");function wt(n){return!!n&&typeof n=="object"&&n[pn]===!0}class Ds{constructor(e,t){Le(this,Re),Le(this,ne),Ge(this,Re,e),Ge(this,ne,t)}get[pn](){return!0}toBytes(){return _(this,ne)}toHex(){return ze(_(this,ne))}toBase64(){return $(_(this,ne))}toBase58(){return Je(_(this,ne))}parse(){return _(this,Re).parse(_(this,ne))}}Re=new WeakMap;ne=new WeakMap;function We({size:n,...e}){return new H({...e,serializedSize:()=>n})}function Ye({readMethod:n,writeMethod:e,...t}){return We({...t,read:s=>s[n](),write:(s,a)=>a[e](s),validate:s=>{if(s<0||s>t.maxValue)throw new TypeError(`Invalid ${t.name} value: ${s}. Expected value in range 0-${t.maxValue}`);t.validate?.(s)}})}function et({readMethod:n,writeMethod:e,...t}){return We({...t,read:s=>s[n](),write:(s,a)=>a[e](BigInt(s)),validate:s=>{const a=BigInt(s);if(a<0||a>t.maxValue)throw new TypeError(`Invalid ${t.name} value: ${a}. Expected value in range 0-${t.maxValue}`);t.validate?.(a)}})}function Us({serialize:n,...e}){const t=new H({...e,serialize:n,write:(s,a)=>{for(const i of t.serialize(s).toBytes())a.write8(i)}});return t}function Rs({toBytes:n,fromBytes:e,...t}){return new H({...t,read:s=>{const a=s.readULEB(),i=s.readBytes(a);return e(i)},write:(s,a)=>{const i=n(s);a.writeULEB(i.length);for(let c=0;c<i.length;c++)a.write8(i[c])},serialize:s=>{const a=n(s),i=Ke(a.length),c=new Uint8Array(i.length+a.length);return c.set(i,0),c.set(a,i.length),c},validate:s=>{if(typeof s!="string")throw new TypeError(`Invalid ${t.name} value: ${s}. Expected string`);t.validate?.(s)}})}function Fs(n){let e=null;function t(){return e||(e=n()),e}return new H({name:"lazy",read:s=>t().read(s),serializedSize:s=>t().serializedSize(s),write:(s,a)=>t().write(s,a),serialize:(s,a)=>t().serialize(s,a).toBytes()})}class $s extends H{constructor({name:e,fields:t,...s}){const a=Object.entries(t);super({name:e,serializedSize:i=>{let c=0;for(const[l,d]of a){const p=d.serializedSize(i[l]);if(p==null)return null;c+=p}return c},read:i=>{const c={};for(const[l,d]of a)c[l]=d.read(i);return c},write:(i,c)=>{for(const[l,d]of a)d.write(i[l],c)},...s,validate:i=>{if(s?.validate?.(i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})}}class Vs extends H{constructor({fields:e,...t}){const s=Object.entries(e);super({read:a=>{const i=a.readULEB(),c=s[i];if(!c)throw new TypeError(`Unknown value ${i} for enum ${t.name}`);const[l,d]=c;return{[l]:d?.read(a)??!0,$kind:l}},write:(a,i)=>{const[c,l]=Object.entries(a).filter(([d])=>Object.hasOwn(e,d))[0];for(let d=0;d<s.length;d++){const[p,f]=s[d];if(p===c){i.writeULEB(d),f?.write(l,i);return}}},...t,validate:a=>{if(t?.validate?.(a),typeof a!="object"||a==null)throw new TypeError(`Expected object, found ${typeof a}`);const i=Object.keys(a).filter(l=>a[l]!==void 0&&Object.hasOwn(e,l));if(i.length!==1)throw new TypeError(`Expected object with one key, but found ${i.length} for type ${t.name}}`);const[c]=i;if(!Object.hasOwn(e,c))throw new TypeError(`Invalid enum variant ${c}`)}})}}class _s extends H{constructor({fields:e,name:t,...s}){super({name:t??`(${e.map(a=>a.name).join(", ")})`,serializedSize:a=>{let i=0;for(let c=0;c<e.length;c++){const l=e[c].serializedSize(a[c]);if(l==null)return null;i+=l}return i},read:a=>{const i=[];for(const c of e)i.push(c.read(a));return i},write:(a,i)=>{for(let c=0;c<e.length;c++)e[c].write(a[c],i)},...s,validate:a=>{if(s?.validate?.(a),!Array.isArray(a))throw new TypeError(`Expected array, found ${typeof a}`);if(a.length!==e.length)throw new TypeError(`Expected array of length ${e.length}, found ${a.length}`)}})}}function Ns(n,e,t){return new H({read:s=>{const a=new Array(n);for(let i=0;i<n;i++)a[i]=e.read(s);return a},write:(s,a)=>{for(const i of s)e.write(i,a)},...t,name:t?.name??`${e.name}[${n}]`,validate:s=>{if(t?.validate?.(s),!s||typeof s!="object"||!("length"in s))throw new TypeError(`Expected array, found ${typeof s}`);if(s.length!==n)throw new TypeError(`Expected array of length ${n}, found ${s.length}`)}})}function zs(n){return o.enum(`Option<${n.name}>`,{None:null,Some:n}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>e.$kind==="Some"?e.Some:null})}function Ks(n,e){return new H({read:t=>{const s=t.readULEB(),a=new Array(s);for(let i=0;i<s;i++)a[i]=n.read(t);return a},write:(t,s)=>{s.writeULEB(t.length);for(const a of t)n.write(a,s)},...e,name:e?.name??`vector<${n.name}>`,validate:t=>{if(e?.validate?.(t),!t||typeof t!="object"||!("length"in t))throw new TypeError(`Expected array, found ${typeof t}`)}})}function Ls(n,e){return o.vector(o.tuple([n,e])).transform({name:`Map<${n.name}, ${e.name}>`,input:t=>[...t.entries()],output:t=>{const s=new Map;for(const[a,i]of t)s.set(a,i);return s}})}const o={u8(n){return Ye({readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...n,name:n?.name??"u8"})},u16(n){return Ye({readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...n,name:n?.name??"u16"})},u32(n){return Ye({readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...n,name:n?.name??"u32"})},u64(n){return et({readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...n,name:n?.name??"u64"})},u128(n){return et({readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...n,name:n?.name??"u128"})},u256(n){return et({readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...n,name:n?.name??"u256"})},bool(n){return We({size:1,read:e=>e.read8()===1,write:(e,t)=>t.write8(e?1:0),...n,name:n?.name??"bool",validate:e=>{if(n?.validate?.(e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(n){return Us({read:e=>e.readULEB(),serialize:e=>Uint8Array.from(Ke(e)),...n,name:n?.name??"uleb128"})},bytes(n,e){return We({size:n,read:t=>t.readBytes(n),write:(t,s)=>{s.writeBytes(new Uint8Array(t))},...e,name:e?.name??`bytes[${n}]`,validate:t=>{if(e?.validate?.(t),!t||typeof t!="object"||!("length"in t))throw new TypeError(`Expected array, found ${typeof t}`);if(t.length!==n)throw new TypeError(`Expected array of length ${n}, found ${t.length}`)}})},byteVector(n){return new H({read:e=>{const t=e.readULEB();return e.readBytes(t)},write:(e,t)=>{const s=new Uint8Array(e);t.writeULEB(s.length),t.writeBytes(s)},...n,name:n?.name??"vector<u8>",serializedSize:e=>{const t="length"in e?e.length:null;return t==null?null:Ke(t).length+t},validate:e=>{if(n?.validate?.(e),!e||typeof e!="object"||!("length"in e))throw new TypeError(`Expected array, found ${typeof e}`)}})},string(n){return Rs({toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...n,name:n?.name??"string"})},fixedArray:Ns,option:zs,vector:Ks,tuple(n,e){return new _s({fields:n,...e})},struct(n,e,t){return new $s({name:n,fields:e,...t})},enum(n,e,t){return new Vs({name:n,fields:e,...t})},map:Ls,lazy(n){return Fs(n)}},Gs=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Ws=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i,Qs=235;function qs(n){return n.length>Qs?!1:n.includes("@")?Gs.test(n):Ws.test(n)}const Hs=/^([a-z0-9]+(?:-[a-z0-9]+)*)$/,Js=/^\d+$/,Xs=64,hn="/",yn=n=>{const e=n.split(hn);if(e.length<2||e.length>3)return!1;const[t,s,a]=e;return a!==void 0&&!Js.test(a)||!qs(t)?!1:Hs.test(s)&&s.length<Xs},Zs=n=>{const e=n.split(/::|<|>|,/);for(const t of e)if(t.includes(hn)&&!yn(t))return!1;return!0},St=32;function bn(n){return Ys(n)&&er(n)===St}function v(n,e=!1){let t=n.toLowerCase();return!e&&t.startsWith("0x")&&(t=t.slice(2)),`0x${t.padStart(St*2,"0")}`}function Se(n,e=!1){return v(n,e)}function Ys(n){return/^(0x|0X)?[a-fA-F0-9]+$/.test(n)&&n.length%2===0}function er(n){return/^(0x|0X)/.test(n)?(n.length-2)/2:n.length/2}BigInt(1e9);const tr="0x1",wn="0x2",nr=Se("0x6"),sr=`${wn}::sui::SUI`;Se("0x5");Se("0x8");const rr=/^vector<(.+)>$/,ar=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class W{static parseFromStr(e,t=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const s=e.match(rr);if(s)return{vector:W.parseFromStr(s[1],t)};const a=e.match(ar);if(a)return{struct:{address:t?v(a[1]):a[1],module:a[2],name:a[3],typeParams:a[5]===void 0?[]:W.parseStructTypeArgs(a[5],t)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,t=!1){return Os(e).map(s=>W.parseFromStr(s,t))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${W.tagToString(e.vector)}>`;if("struct"in e){const t=e.struct,s=t.typeParams.map(W.tagToString).join(", ");return`${t.address}::${t.module}::${t.name}${s?`<${s}>`:""}`}throw new Error("Invalid TypeTag")}}function ir(n){return o.u64({name:"unsafe_u64",...n}).transform({input:e=>e,output:e=>Number(e)})}function or(n){return o.enum("Option",{None:null,Some:n})}const k=o.bytes(St).transform({validate:n=>{const e=typeof n=="string"?n:ze(n);if(!e||!bn(v(e)))throw new Error(`Invalid Sui address ${e}`)},input:n=>typeof n=="string"?dn(v(n)):n,output:n=>v(ze(n))}),z=o.byteVector().transform({name:"ObjectDigest",input:n=>at(n),output:n=>Je(new Uint8Array(n)),validate:n=>{if(at(n).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),B=o.struct("SuiObjectRef",{objectId:k,version:o.u64(),digest:z}),Sn=o.struct("SharedObjectRef",{objectId:k,initialSharedVersion:o.u64(),mutable:o.bool()}),Mn=o.enum("ObjectArg",{ImmOrOwnedObject:B,SharedObject:Sn,Receiving:B}),le=o.enum("Owner",{AddressOwner:k,ObjectOwner:k,Shared:o.struct("Shared",{initialSharedVersion:o.u64()}),Immutable:null,ConsensusAddressOwner:o.struct("ConsensusAddressOwner",{owner:k,startVersion:o.u64()})}),vn=o.enum("CallArg",{Pure:o.struct("Pure",{bytes:o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})}),Object:Mn}),Mt=o.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:o.lazy(()=>Mt),struct:o.lazy(()=>In),u16:null,u32:null,u256:null}),vt=Mt.transform({input:n=>typeof n=="string"?W.parseFromStr(n,!0):n,output:n=>W.tagToString(n)}),G=o.enum("Argument",{GasCoin:null,Input:o.u16(),Result:o.u16(),NestedResult:o.tuple([o.u16(),o.u16()])}),kn=o.struct("ProgrammableMoveCall",{package:k,module:o.string(),function:o.string(),typeArguments:o.vector(vt),arguments:o.vector(G)}),Cn=o.enum("Command",{MoveCall:kn,TransferObjects:o.struct("TransferObjects",{objects:o.vector(G),address:G}),SplitCoins:o.struct("SplitCoins",{coin:G,amounts:o.vector(G)}),MergeCoins:o.struct("MergeCoins",{destination:G,sources:o.vector(G)}),Publish:o.struct("Publish",{modules:o.vector(o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})),dependencies:o.vector(k)}),MakeMoveVec:o.struct("MakeMoveVec",{type:or(vt).transform({input:n=>n===null?{None:!0}:{Some:n},output:n=>n.Some??null}),elements:o.vector(G)}),Upgrade:o.struct("Upgrade",{modules:o.vector(o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})),dependencies:o.vector(k),package:k,ticket:G})}),An=o.struct("ProgrammableTransaction",{inputs:o.vector(vn),commands:o.vector(Cn)}),Tn=o.enum("TransactionKind",{ProgrammableTransaction:An,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),En=o.enum("TransactionExpiration",{None:null,Epoch:ir()}),In=o.struct("StructTag",{address:k,module:o.string(),name:o.string(),typeParams:o.vector(Mt)}),Pn=o.struct("GasData",{payment:o.vector(B),owner:k,price:o.u64(),budget:o.u64()}),xn=o.struct("TransactionDataV1",{kind:Tn,sender:k,gasData:Pn,expiration:En}),On=o.enum("TransactionData",{V1:xn}),jn=o.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Bn=o.enum("IntentVersion",{V0:null}),Dn=o.enum("AppId",{Sui:null}),Un=o.struct("Intent",{scope:jn,version:Bn,appId:Dn});function Rn(n){return o.struct(`IntentMessage<${n.name}>`,{intent:Un,value:n})}const Fn=o.enum("CompressedSignature",{ED25519:o.bytes(64),Secp256k1:o.bytes(64),Secp256r1:o.bytes(64),ZkLogin:o.byteVector(),Passkey:o.byteVector()}),$n=o.enum("PublicKey",{ED25519:o.bytes(32),Secp256k1:o.bytes(33),Secp256r1:o.bytes(33),ZkLogin:o.byteVector(),Passkey:o.bytes(33)}),Vn=o.struct("MultiSigPkMap",{pubKey:$n,weight:o.u8()}),_n=o.struct("MultiSigPublicKey",{pk_map:o.vector(Vn),threshold:o.u16()}),cr=o.struct("MultiSig",{sigs:o.vector(Fn),bitmap:o.u16(),multisig_pk:_n}),ur=o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))}),Nn=o.struct("SenderSignedTransaction",{intentMessage:Rn(On),txSignatures:o.vector(ur)}),lr=o.vector(Nn,{name:"SenderSignedData"}),dr=o.struct("PasskeyAuthenticator",{authenticatorData:o.byteVector(),clientDataJson:o.string(),userSignature:o.byteVector()}),mr=o.enum("PackageUpgradeError",{UnableToFetchPackage:o.struct("UnableToFetchPackage",{packageId:k}),NotAPackage:o.struct("NotAPackage",{objectId:k}),IncompatibleUpgrade:null,DigestDoesNotMatch:o.struct("DigestDoesNotMatch",{digest:o.byteVector()}),UnknownUpgradePolicy:o.struct("UnknownUpgradePolicy",{policy:o.u8()}),PackageIDDoesNotMatch:o.struct("PackageIDDoesNotMatch",{packageId:k,ticketId:k})}),fr=o.struct("ModuleId",{address:k,name:o.string()}),zt=o.struct("MoveLocation",{module:fr,function:o.u16(),instruction:o.u16(),functionName:o.option(o.string())}),gr=o.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:o.struct("IndexOutOfBounds",{idx:o.u16()}),SecondaryIndexOutOfBounds:o.struct("SecondaryIndexOutOfBounds",{resultIdx:o.u16(),secondaryIdx:o.u16()}),InvalidResultArity:o.struct("InvalidResultArity",{resultIdx:o.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),pr=o.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),hr=o.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:o.struct("MoveObjectTooBig",{objectSize:o.u64(),maxObjectSize:o.u64()}),MovePackageTooBig:o.struct("MovePackageTooBig",{objectSize:o.u64(),maxObjectSize:o.u64()}),CircularObjectOwnership:o.struct("CircularObjectOwnership",{object:k}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:o.option(zt),MoveAbort:o.tuple([zt,o.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:o.struct("CommandArgumentError",{argIdx:o.u16(),kind:gr}),TypeArgumentError:o.struct("TypeArgumentError",{argumentIdx:o.u16(),kind:pr}),UnusedValueWithoutDrop:o.struct("UnusedValueWithoutDrop",{resultIdx:o.u16(),secondaryIdx:o.u16()}),InvalidPublicFunctionReturnType:o.struct("InvalidPublicFunctionReturnType",{idx:o.u16()}),InvalidTransferObject:null,EffectsTooLarge:o.struct("EffectsTooLarge",{currentSize:o.u64(),maxSize:o.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:o.struct("PackageUpgradeError",{upgradeError:mr}),WrittenObjectsTooLarge:o.struct("WrittenObjectsTooLarge",{currentSize:o.u64(),maxSize:o.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:o.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:o.vector(k)}),AddressDeniedForCoin:o.struct("AddressDeniedForCoin",{address:k,coinType:o.string()}),CoinTypeGlobalPause:o.struct("CoinTypeGlobalPause",{coinType:o.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),zn=o.enum("ExecutionStatus",{Success:null,Failed:o.struct("ExecutionFailed",{error:hr,command:o.option(o.u64())})}),Kn=o.struct("GasCostSummary",{computationCost:o.u64(),storageCost:o.u64(),storageRebate:o.u64(),nonRefundableStorageFee:o.u64()}),yr=o.struct("TransactionEffectsV1",{status:zn,executedEpoch:o.u64(),gasUsed:Kn,modifiedAtVersions:o.vector(o.tuple([k,o.u64()])),sharedObjects:o.vector(B),transactionDigest:z,created:o.vector(o.tuple([B,le])),mutated:o.vector(o.tuple([B,le])),unwrapped:o.vector(o.tuple([B,le])),deleted:o.vector(B),unwrappedThenDeleted:o.vector(B),wrapped:o.vector(B),gasObject:o.tuple([B,le]),eventsDigest:o.option(z),dependencies:o.vector(z)}),kt=o.tuple([o.u64(),z]),br=o.enum("ObjectIn",{NotExist:null,Exist:o.tuple([kt,le])}),wr=o.enum("ObjectOut",{NotExist:null,ObjectWrite:o.tuple([z,le]),PackageWrite:kt}),Sr=o.enum("IDOperation",{None:null,Created:null,Deleted:null}),Mr=o.struct("EffectsObjectChange",{inputState:br,outputState:wr,idOperation:Sr}),vr=o.enum("UnchangedSharedKind",{ReadOnlyRoot:kt,MutateDeleted:o.u64(),ReadDeleted:o.u64(),Cancelled:o.u64(),PerEpochConfig:null}),kr=o.struct("TransactionEffectsV2",{status:zn,executedEpoch:o.u64(),gasUsed:Kn,transactionDigest:z,gasObjectIndex:o.option(o.u32()),eventsDigest:o.option(z),dependencies:o.vector(z),lamportVersion:o.u64(),changedObjects:o.vector(o.tuple([k,Mr])),unchangedSharedObjects:o.vector(o.tuple([k,vr])),auxDataDigest:o.option(z)}),Cr=o.enum("TransactionEffects",{V1:yr,V2:kr});function Te(n){switch(n){case"u8":return o.u8();case"u16":return o.u16();case"u32":return o.u32();case"u64":return o.u64();case"u128":return o.u128();case"u256":return o.u256();case"bool":return o.bool();case"string":return o.string();case"id":case"address":return k}const e=n.match(/^(vector|option)<(.+)>$/);if(e){const[t,s]=e.slice(1);return t==="vector"?o.vector(Te(s)):o.option(Te(s))}throw new Error(`Invalid Pure type name: ${n}`)}const S={...o,U8:o.u8(),U16:o.u16(),U32:o.u32(),U64:o.u64(),U128:o.u128(),U256:o.u256(),ULEB128:o.uleb128(),Bool:o.bool(),String:o.string(),Address:k,AppId:Dn,Argument:G,CallArg:vn,Command:Cn,CompressedSignature:Fn,GasData:Pn,Intent:Un,IntentMessage:Rn,IntentScope:jn,IntentVersion:Bn,MultiSig:cr,MultiSigPkMap:Vn,MultiSigPublicKey:_n,ObjectArg:Mn,ObjectDigest:z,Owner:le,PasskeyAuthenticator:dr,ProgrammableMoveCall:kn,ProgrammableTransaction:An,PublicKey:$n,SenderSignedData:lr,SenderSignedTransaction:Nn,SharedObjectRef:Sn,StructTag:In,SuiObjectRef:B,TransactionData:On,TransactionDataV1:xn,TransactionEffects:Cr,TransactionExpiration:En,TransactionKind:Tn,TypeTag:vt},Ar="object",Tr="ID",Er="ascii",Ir="String",Pr="string",xr="String",Or="option",jr="Option";function Br(n){const e=typeof n.body=="object"&&"datatype"in n.body?n.body.datatype:null;return!!e&&v(e.package)===v("0x2")&&e.module==="tx_context"&&e.type==="TxContext"}function it(n){if(typeof n=="string")switch(n){case"address":return S.Address;case"bool":return S.Bool;case"u8":return S.U8;case"u16":return S.U16;case"u32":return S.U32;case"u64":return S.U64;case"u128":return S.U128;case"u256":return S.U256;default:throw new Error(`Unknown type signature ${n}`)}if("vector"in n){if(n.vector==="u8")return S.byteVector().transform({input:t=>typeof t=="string"?new TextEncoder().encode(t):t,output:t=>t});const e=it(n.vector);return e?S.vector(e):null}if("datatype"in n){const e=v(n.datatype.package);if(e===v(tr)){if(n.datatype.module===Er&&n.datatype.type===Ir||n.datatype.module===Pr&&n.datatype.type===xr)return S.String;if(n.datatype.module===Or&&n.datatype.type===jr){const t=it(n.datatype.typeParameters[0]);return t?S.vector(t):null}}if(e===v(wn)&&n.datatype.module===Ar&&n.datatype.type===Tr)return S.Address}return null}function Dr(n){return typeof n=="object"&&"Reference"in n?{ref:"&",body:Ee(n.Reference)}:typeof n=="object"&&"MutableReference"in n?{ref:"&mut",body:Ee(n.MutableReference)}:{ref:null,body:Ee(n)}}function Ee(n){if(typeof n=="string")switch(n){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${n}`)}if("Vector"in n)return{vector:Ee(n.Vector)};if("Struct"in n)return{datatype:{package:n.Struct.address,module:n.Struct.module,type:n.Struct.name,typeParameters:n.Struct.typeArguments.map(Ee)}};if("TypeParameter"in n)return{typeParameter:n.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(n)}`)}function Ur(n){return{$kind:"Pure",Pure:{bytes:n instanceof Uint8Array?$(n):n.toBase64()}}}const K={Pure:Ur,ObjectRef({objectId:n,digest:e,version:t}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:e,version:t,objectId:v(n)}}}},SharedObjectRef({objectId:n,mutable:e,initialSharedVersion:t}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:e,initialSharedVersion:t,objectId:v(n)}}}},ReceivingRef({objectId:n,digest:e,version:t}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:e,version:t,objectId:v(n)}}}}};function ge(n){const e=Object.entries(n).map(([t,s])=>r.object({[t]:s}));return r.pipe(r.union(e),r.transform(t=>({...t,$kind:Object.keys(t)[0]})))}const ve=r.pipe(r.string(),r.transform(n=>v(n)),r.check(bn)),O=ve,fe=r.string(),x=r.pipe(r.union([r.string(),r.pipe(r.number(),r.integer())]),r.check(n=>{try{return BigInt(n),BigInt(n)>=0&&BigInt(n)<=18446744073709551615n}catch{return!1}},"Invalid u64")),re=r.object({objectId:ve,version:x,digest:r.string()}),C=r.pipe(r.union([r.object({GasCoin:r.literal(!0)}),r.object({Input:r.pipe(r.number(),r.integer()),type:r.optional(r.literal("pure"))}),r.object({Input:r.pipe(r.number(),r.integer()),type:r.optional(r.literal("object"))}),r.object({Result:r.pipe(r.number(),r.integer())}),r.object({NestedResult:r.tuple([r.pipe(r.number(),r.integer()),r.pipe(r.number(),r.integer())])})]),r.transform(n=>({...n,$kind:Object.keys(n)[0]}))),Rr=r.object({budget:r.nullable(x),price:r.nullable(x),owner:r.nullable(ve),payment:r.nullable(r.array(re))}),ot=r.union([r.literal("address"),r.literal("bool"),r.literal("u8"),r.literal("u16"),r.literal("u32"),r.literal("u64"),r.literal("u128"),r.literal("u256"),r.object({vector:r.lazy(()=>ot)}),r.object({datatype:r.object({package:r.string(),module:r.string(),type:r.string(),typeParameters:r.array(r.lazy(()=>ot))})}),r.object({typeParameter:r.pipe(r.number(),r.integer())})]),Fr=r.object({ref:r.nullable(r.union([r.literal("&"),r.literal("&mut")])),body:ot}),$r=r.object({package:O,module:r.string(),function:r.string(),typeArguments:r.array(r.string()),arguments:r.array(C),_argumentTypes:r.optional(r.nullable(r.array(Fr)))}),Vr=r.object({name:r.string(),inputs:r.record(r.string(),r.union([C,r.array(C)])),data:r.record(r.string(),r.unknown())}),_r=ge({MoveCall:$r,TransferObjects:r.object({objects:r.array(C),address:C}),SplitCoins:r.object({coin:C,amounts:r.array(C)}),MergeCoins:r.object({destination:C,sources:r.array(C)}),Publish:r.object({modules:r.array(fe),dependencies:r.array(O)}),MakeMoveVec:r.object({type:r.nullable(r.string()),elements:r.array(C)}),Upgrade:r.object({modules:r.array(fe),dependencies:r.array(O),package:O,ticket:C}),$Intent:Vr}),Ln=ge({ImmOrOwnedObject:re,SharedObject:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:re}),Nr=ge({Object:Ln,Pure:r.object({bytes:fe}),UnresolvedPure:r.object({value:r.unknown()}),UnresolvedObject:r.object({objectId:O,version:r.optional(r.nullable(x)),digest:r.optional(r.nullable(r.string())),initialSharedVersion:r.optional(r.nullable(x)),mutable:r.optional(r.nullable(r.boolean()))})}),Kt=ge({Object:Ln,Pure:r.object({bytes:fe})}),Gn=ge({None:r.literal(!0),Epoch:x}),Fe=r.object({version:r.literal(2),sender:r.nullish(ve),expiration:r.nullish(Gn),gasData:Rr,inputs:r.array(Nr),commands:r.array(_r)}),ue={MoveCall(n){const[e,t="",s=""]="target"in n?n.target.split("::"):[n.package,n.module,n.function];return{$kind:"MoveCall",MoveCall:{package:e,module:t,function:s,typeArguments:n.typeArguments??[],arguments:n.arguments??[]}}},TransferObjects(n,e){return{$kind:"TransferObjects",TransferObjects:{objects:n.map(t=>r.parse(C,t)),address:r.parse(C,e)}}},SplitCoins(n,e){return{$kind:"SplitCoins",SplitCoins:{coin:r.parse(C,n),amounts:e.map(t=>r.parse(C,t))}}},MergeCoins(n,e){return{$kind:"MergeCoins",MergeCoins:{destination:r.parse(C,n),sources:e.map(t=>r.parse(C,t))}}},Publish({modules:n,dependencies:e}){return{$kind:"Publish",Publish:{modules:n.map(t=>typeof t=="string"?t:$(new Uint8Array(t))),dependencies:e.map(t=>Se(t))}}},Upgrade({modules:n,dependencies:e,package:t,ticket:s}){return{$kind:"Upgrade",Upgrade:{modules:n.map(a=>typeof a=="string"?a:$(new Uint8Array(a))),dependencies:e.map(a=>Se(a)),package:t,ticket:r.parse(C,s)}}},MakeMoveVec({type:n,elements:e}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:n??null,elements:e.map(t=>r.parse(C,t))}}},Intent({name:n,inputs:e={},data:t={}}){return{$kind:"$Intent",$Intent:{name:n,inputs:Object.fromEntries(Object.entries(e).map(([s,a])=>[s,Array.isArray(a)?a.map(i=>r.parse(C,i)):r.parse(C,a)])),data:t}}}},ct=r.object({digest:r.string(),objectId:r.string(),version:r.union([r.pipe(r.number(),r.integer()),r.string(),r.bigint()])}),zr=ge({ImmOrOwned:ct,Shared:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:ct}),Lt=ge({Object:zr,Pure:r.array(r.pipe(r.number(),r.integer()))}),Wn=r.union([r.object({kind:r.literal("Input"),index:r.pipe(r.number(),r.integer()),value:r.unknown(),type:r.optional(r.literal("object"))}),r.object({kind:r.literal("Input"),index:r.pipe(r.number(),r.integer()),value:r.unknown(),type:r.literal("pure")})]),Kr=r.union([r.object({Epoch:r.pipe(r.number(),r.integer())}),r.object({None:r.nullable(r.literal(!0))})]),Gt=r.pipe(r.union([r.number(),r.string(),r.bigint()]),r.check(n=>{if(!["string","number","bigint"].includes(typeof n))return!1;try{return BigInt(n),!0}catch{return!1}})),Ct=r.union([r.object({bool:r.nullable(r.literal(!0))}),r.object({u8:r.nullable(r.literal(!0))}),r.object({u64:r.nullable(r.literal(!0))}),r.object({u128:r.nullable(r.literal(!0))}),r.object({address:r.nullable(r.literal(!0))}),r.object({signer:r.nullable(r.literal(!0))}),r.object({vector:r.lazy(()=>Ct)}),r.object({struct:r.lazy(()=>Lr)}),r.object({u16:r.nullable(r.literal(!0))}),r.object({u32:r.nullable(r.literal(!0))}),r.object({u256:r.nullable(r.literal(!0))})]),Lr=r.object({address:r.string(),module:r.string(),name:r.string(),typeParams:r.array(Ct)}),Gr=r.object({budget:r.optional(Gt),price:r.optional(Gt),payment:r.optional(r.array(ct)),owner:r.optional(r.string())}),Wr=[Wn,r.object({kind:r.literal("GasCoin")}),r.object({kind:r.literal("Result"),index:r.pipe(r.number(),r.integer())}),r.object({kind:r.literal("NestedResult"),index:r.pipe(r.number(),r.integer()),resultIndex:r.pipe(r.number(),r.integer())})],ee=r.union([...Wr]),Qr=r.object({kind:r.literal("MoveCall"),target:r.pipe(r.string(),r.check(n=>n.split("::").length===3)),typeArguments:r.array(r.string()),arguments:r.array(ee)}),qr=r.object({kind:r.literal("TransferObjects"),objects:r.array(ee),address:ee}),Hr=r.object({kind:r.literal("SplitCoins"),coin:ee,amounts:r.array(ee)}),Jr=r.object({kind:r.literal("MergeCoins"),destination:ee,sources:r.array(ee)}),Xr=r.object({kind:r.literal("MakeMoveVec"),type:r.union([r.object({Some:Ct}),r.object({None:r.nullable(r.literal(!0))})]),objects:r.array(ee)}),Zr=r.object({kind:r.literal("Publish"),modules:r.array(r.array(r.pipe(r.number(),r.integer()))),dependencies:r.array(r.string())}),Yr=r.object({kind:r.literal("Upgrade"),modules:r.array(r.array(r.pipe(r.number(),r.integer()))),dependencies:r.array(r.string()),packageId:r.string(),ticket:ee}),ea=[Qr,qr,Hr,Jr,Zr,Yr,Xr],ta=r.union([...ea]);r.object({version:r.literal(1),sender:r.optional(r.string()),expiration:r.nullish(Kr),gasConfig:Gr,inputs:r.array(Wn),transactions:r.array(ta)});function Wt(n){const e=n.inputs.map((t,s)=>{if(t.Object)return{kind:"Input",index:s,value:{Object:t.Object.ImmOrOwnedObject?{ImmOrOwned:t.Object.ImmOrOwnedObject}:t.Object.Receiving?{Receiving:{digest:t.Object.Receiving.digest,version:t.Object.Receiving.version,objectId:t.Object.Receiving.objectId}}:{Shared:{mutable:t.Object.SharedObject.mutable,initialSharedVersion:t.Object.SharedObject.initialSharedVersion,objectId:t.Object.SharedObject.objectId}}},type:"object"};if(t.Pure)return{kind:"Input",index:s,value:{Pure:Array.from(Q(t.Pure.bytes))},type:"pure"};if(t.UnresolvedPure)return{kind:"Input",type:"pure",index:s,value:t.UnresolvedPure.value};if(t.UnresolvedObject)return{kind:"Input",type:"object",index:s,value:t.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:n.sender??void 0,expiration:n.expiration?.$kind==="Epoch"?{Epoch:Number(n.expiration.Epoch)}:n.expiration?{None:!0}:null,gasConfig:{owner:n.gasData.owner??void 0,budget:n.gasData.budget??void 0,price:n.gasData.price??void 0,payment:n.gasData.payment??void 0},inputs:e,transactions:n.commands.map(t=>{if(t.MakeMoveVec)return{kind:"MakeMoveVec",type:t.MakeMoveVec.type===null?{None:!0}:{Some:W.parseFromStr(t.MakeMoveVec.type)},objects:t.MakeMoveVec.elements.map(s=>J(s,e))};if(t.MergeCoins)return{kind:"MergeCoins",destination:J(t.MergeCoins.destination,e),sources:t.MergeCoins.sources.map(s=>J(s,e))};if(t.MoveCall)return{kind:"MoveCall",target:`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`,typeArguments:t.MoveCall.typeArguments,arguments:t.MoveCall.arguments.map(s=>J(s,e))};if(t.Publish)return{kind:"Publish",modules:t.Publish.modules.map(s=>Array.from(Q(s))),dependencies:t.Publish.dependencies};if(t.SplitCoins)return{kind:"SplitCoins",coin:J(t.SplitCoins.coin,e),amounts:t.SplitCoins.amounts.map(s=>J(s,e))};if(t.TransferObjects)return{kind:"TransferObjects",objects:t.TransferObjects.objects.map(s=>J(s,e)),address:J(t.TransferObjects.address,e)};if(t.Upgrade)return{kind:"Upgrade",modules:t.Upgrade.modules.map(s=>Array.from(Q(s))),dependencies:t.Upgrade.dependencies,packageId:t.Upgrade.package,ticket:J(t.Upgrade.ticket,e)};throw new Error(`Unknown transaction ${Object.keys(t)}`)})}}function J(n,e){if(n.$kind==="GasCoin")return{kind:"GasCoin"};if(n.$kind==="Result")return{kind:"Result",index:n.Result};if(n.$kind==="NestedResult")return{kind:"NestedResult",index:n.NestedResult[0],resultIndex:n.NestedResult[1]};if(n.$kind==="Input")return e[n.Input];throw new Error(`Invalid argument ${Object.keys(n)}`)}function na(n){return r.parse(Fe,{version:2,sender:n.sender??null,expiration:n.expiration?"Epoch"in n.expiration?{Epoch:n.expiration.Epoch}:{None:!0}:null,gasData:{owner:n.gasConfig.owner??null,budget:n.gasConfig.budget?.toString()??null,price:n.gasConfig.price?.toString()??null,payment:n.gasConfig.payment?.map(e=>({digest:e.digest,objectId:e.objectId,version:e.version.toString()}))??null},inputs:n.inputs.map(e=>{if(e.kind==="Input"){if(r.is(Lt,e.value)){const t=r.parse(Lt,e.value);if(t.Object){if(t.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:t.Object.ImmOrOwned.objectId,version:String(t.Object.ImmOrOwned.version),digest:t.Object.ImmOrOwned.digest}}};if(t.Object.Shared)return{Object:{SharedObject:{mutable:t.Object.Shared.mutable??null,initialSharedVersion:t.Object.Shared.initialSharedVersion,objectId:t.Object.Shared.objectId}}};if(t.Object.Receiving)return{Object:{Receiving:{digest:t.Object.Receiving.digest,version:String(t.Object.Receiving.version),objectId:t.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:$(new Uint8Array(t.Pure))}}}return e.type==="object"?{UnresolvedObject:{objectId:e.value}}:{UnresolvedPure:{value:e.value}}}throw new Error("Invalid input")}),commands:n.transactions.map(e=>{switch(e.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in e.type?W.tagToString(e.type.Some):null,elements:e.objects.map(t=>X(t))}};case"MergeCoins":return{MergeCoins:{destination:X(e.destination),sources:e.sources.map(t=>X(t))}};case"MoveCall":{const[t,s,a]=e.target.split("::");return{MoveCall:{package:t,module:s,function:a,typeArguments:e.typeArguments,arguments:e.arguments.map(i=>X(i))}}}case"Publish":return{Publish:{modules:e.modules.map(t=>$(Uint8Array.from(t))),dependencies:e.dependencies}};case"SplitCoins":return{SplitCoins:{coin:X(e.coin),amounts:e.amounts.map(t=>X(t))}};case"TransferObjects":return{TransferObjects:{objects:e.objects.map(t=>X(t)),address:X(e.address)}};case"Upgrade":return{Upgrade:{modules:e.modules.map(t=>$(Uint8Array.from(t))),dependencies:e.dependencies,package:e.packageId,ticket:X(e.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(e)}`)})})}function X(n){switch(n.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:n.index};case"NestedResult":return{NestedResult:[n.index,n.resultIndex]};case"Input":return{Input:n.index}}}function xe(n){return r.union(Object.entries(n).map(([e,t])=>r.object({[e]:t})))}const V=xe({GasCoin:r.literal(!0),Input:r.pipe(r.number(),r.integer()),Result:r.pipe(r.number(),r.integer()),NestedResult:r.tuple([r.pipe(r.number(),r.integer()),r.pipe(r.number(),r.integer())])}),sa=r.object({budget:r.nullable(x),price:r.nullable(x),owner:r.nullable(ve),payment:r.nullable(r.array(re))}),ra=r.object({package:O,module:r.string(),function:r.string(),typeArguments:r.array(r.string()),arguments:r.array(V)}),aa=r.object({name:r.string(),inputs:r.record(r.string(),r.union([V,r.array(V)])),data:r.record(r.string(),r.unknown())}),ia=xe({MoveCall:ra,TransferObjects:r.object({objects:r.array(V),address:V}),SplitCoins:r.object({coin:V,amounts:r.array(V)}),MergeCoins:r.object({destination:V,sources:r.array(V)}),Publish:r.object({modules:r.array(fe),dependencies:r.array(O)}),MakeMoveVec:r.object({type:r.nullable(r.string()),elements:r.array(V)}),Upgrade:r.object({modules:r.array(fe),dependencies:r.array(O),package:O,ticket:V}),$Intent:aa}),oa=xe({ImmOrOwnedObject:re,SharedObject:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:re}),ca=xe({Object:oa,Pure:r.object({bytes:fe}),UnresolvedPure:r.object({value:r.unknown()}),UnresolvedObject:r.object({objectId:O,version:r.optional(r.nullable(x)),digest:r.optional(r.nullable(r.string())),initialSharedVersion:r.optional(r.nullable(x)),mutable:r.optional(r.nullable(r.boolean()))})}),ua=xe({None:r.literal(!0),Epoch:x}),la=r.object({version:r.literal(2),sender:r.nullish(ve),expiration:r.nullish(ua),gasData:sa,inputs:r.array(ca),commands:r.array(ia),digest:r.optional(r.nullable(r.string()))}),da=50,ma=1000n,fa=5e10;function ga(n){return async function(t,s,a){return await wa(t,n),await ba(t,n),s.onlyTransactionKind||(await pa(t,n),await ha(t,n),await ya(t,n)),await a()}}async function pa(n,e){n.gasConfig.price||(n.gasConfig.price=String(await e.getReferenceGasPrice()))}async function ha(n,e){if(n.gasConfig.budget)return;const t=await e.dryRunTransactionBlock({transactionBlock:n.build({overrides:{gasData:{budget:String(fa),payment:[]}}})});if(t.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${t.effects.status.error}`,{cause:t});const s=ma*BigInt(n.gasConfig.price||1n),a=BigInt(t.effects.gasUsed.computationCost)+s,i=a+BigInt(t.effects.gasUsed.storageCost)-BigInt(t.effects.gasUsed.storageRebate);n.gasConfig.budget=String(i>a?i:a)}async function ya(n,e){if(!n.gasConfig.payment){const s=(await e.getCoins({owner:n.gasConfig.owner||n.sender,coinType:sr})).data.filter(a=>!n.inputs.find(c=>c.Object?.ImmOrOwnedObject?a.coinObjectId===c.Object.ImmOrOwnedObject.objectId:!1)).map(a=>({objectId:a.coinObjectId,digest:a.digest,version:a.version}));if(!s.length)throw new Error("No valid gas coins found for the transaction.");n.gasConfig.payment=s.map(a=>r.parse(re,a))}}async function ba(n,e){const t=n.inputs.filter(f=>f.UnresolvedObject&&!(f.UnresolvedObject.version||f.UnresolvedObject?.initialSharedVersion)),s=[...new Set(t.map(f=>Se(f.UnresolvedObject.objectId)))],a=s.length?Es(s,da):[],i=(await Promise.all(a.map(f=>e.multiGetObjects({ids:f,options:{showOwner:!0}})))).flat(),c=new Map(s.map((f,g)=>[f,i[g]])),l=Array.from(c).filter(([f,g])=>g.error).map(([f,g])=>JSON.stringify(g.error));if(l.length)throw new Error(`The following input objects are invalid: ${l.join(", ")}`);const d=i.map(f=>{if(f.error||!f.data)throw new Error(`Failed to fetch object: ${f.error}`);const g=f.data.owner,y=g&&typeof g=="object"?"Shared"in g?g.Shared.initial_shared_version:"ConsensusAddressOwner"in g?g.ConsensusAddressOwner.start_version:null:null;return{objectId:f.data.objectId,digest:f.data.digest,version:f.data.version,initialSharedVersion:y}}),p=new Map(s.map((f,g)=>[f,d[g]]));for(const[f,g]of n.inputs.entries()){if(!g.UnresolvedObject)continue;let y;const b=v(g.UnresolvedObject.objectId),w=p.get(b);g.UnresolvedObject.initialSharedVersion??w?.initialSharedVersion?y=K.SharedObjectRef({objectId:b,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||w?.initialSharedVersion,mutable:g.UnresolvedObject.mutable||Sa(n,f)}):Ma(n,f)&&(y=K.ReceivingRef({objectId:b,digest:g.UnresolvedObject.digest??w?.digest,version:g.UnresolvedObject.version??w?.version})),n.inputs[n.inputs.indexOf(g)]=y??K.ObjectRef({objectId:b,digest:g.UnresolvedObject.digest??w?.digest,version:g.UnresolvedObject.version??w?.version})}}async function wa(n,e){const{inputs:t,commands:s}=n,a=[],i=new Set;s.forEach(l=>{if(l.MoveCall){if(l.MoveCall._argumentTypes)return;if(l.MoveCall.arguments.map(f=>f.$kind==="Input"?n.inputs[f.Input]:null).some(f=>f?.UnresolvedPure||f?.UnresolvedObject&&typeof f?.UnresolvedObject.mutable!="boolean")){const f=`${l.MoveCall.package}::${l.MoveCall.module}::${l.MoveCall.function}`;i.add(f),a.push(l.MoveCall)}}});const c=new Map;i.size>0&&await Promise.all([...i].map(async l=>{const[d,p,f]=l.split("::"),g=await e.getNormalizedMoveFunction({package:d,module:p,function:f});c.set(l,g.parameters.map(y=>Dr(y)))})),a.length&&await Promise.all(a.map(async l=>{const d=c.get(`${l.package}::${l.module}::${l.function}`);if(!d)return;const f=d.length>0&&Br(d.at(-1))?d.slice(0,d.length-1):d;l._argumentTypes=f})),s.forEach(l=>{if(!l.MoveCall)return;const d=l.MoveCall,p=`${d.package}::${d.module}::${d.function}`,f=d._argumentTypes;if(f){if(f.length!==l.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${p}`);f.forEach((g,y)=>{const b=d.arguments[y];if(b.$kind!=="Input")return;const w=t[b.Input];if(!w.UnresolvedPure&&!w.UnresolvedObject)return;const E=w.UnresolvedPure?.value??w.UnresolvedObject?.objectId,P=it(g.body);if(P){b.type="pure",t[t.indexOf(w)]=K.Pure(P.serialize(E));return}if(typeof E!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(E,null,2)}`);b.type="object";const A=w.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:E}}:w;t[b.Input]=A})}})}function Sa(n,e){let t=!1;return n.getInputUses(e,(s,a)=>{if(a.MoveCall&&a.MoveCall._argumentTypes){const i=a.MoveCall.arguments.indexOf(s);t=a.MoveCall._argumentTypes[i].ref!=="&"||t}(a.$kind==="MakeMoveVec"||a.$kind==="MergeCoins"||a.$kind==="SplitCoins"||a.$kind==="TransferObjects")&&(t=!0)}),t}function Ma(n,e){let t=!1;return n.getInputUses(e,(s,a)=>{if(a.MoveCall&&a.MoveCall._argumentTypes){const i=a.MoveCall.arguments.indexOf(s);t=va(a.MoveCall._argumentTypes[i])||t}}),t}function va(n){return typeof n.body!="object"||!("datatype"in n.body)?!1:n.body.datatype.package==="0x2"&&n.body.datatype.module==="transfer"&&n.body.datatype.type==="Receiving"}function Qn(n,e){return!!(n.inputs.some(t=>t.UnresolvedObject||t.UnresolvedPure)||!e.onlyTransactionKind&&(!n.gasConfig.price||!n.gasConfig.budget||!n.gasConfig.payment))}async function ka(n,e,t){if(Aa(n),!Qn(n,e))return await Qt(n),t();const s=Ca(e);return(s.core?.resolveTransactionPlugin()??ga(s))(n,e,async()=>{await Qt(n),await t()})}function Qt(n){n.inputs.forEach((e,t)=>{if(e.$kind!=="Object"&&e.$kind!=="Pure")throw new Error(`Input at index ${t} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(e)}`)})}function Ca(n){if(!n.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return n.client}function Aa(n){for(const e of n.commands)switch(e.$kind){case"SplitCoins":e.SplitCoins.amounts.forEach(t=>{qt(t,S.U64,n)});break;case"TransferObjects":qt(e.TransferObjects.address,S.Address,n);break}}function qt(n,e,t){if(n.$kind!=="Input")return;const s=t.inputs[n.Input];s.$kind==="UnresolvedPure"&&(t.inputs[n.Input]=K.Pure(e.serialize(s.UnresolvedPure.value)))}function Ta(n){function e(t){return n(t)}return e.system=t=>{const s=t?.mutable;return e(s!==void 0?K.SharedObjectRef({objectId:"0x5",initialSharedVersion:1,mutable:s}):{$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x5",initialSharedVersion:1}})},e.clock=()=>e(K.SharedObjectRef({objectId:"0x6",initialSharedVersion:1,mutable:!1})),e.random=()=>e({$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x8",mutable:!1}}),e.denyList=t=>e({$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x403",mutable:t?.mutable}}),e.option=({type:t,value:s})=>a=>a.moveCall({typeArguments:[t],target:`0x1::option::${s===null?"none":"some"}`,arguments:s===null?[]:[a.object(s)]}),e}function Ea(n){function e(t,s){if(typeof t=="string")return n(Te(t).serialize(s));if(t instanceof Uint8Array||wt(t))return n(t);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return e.u8=t=>n(S.U8.serialize(t)),e.u16=t=>n(S.U16.serialize(t)),e.u32=t=>n(S.U32.serialize(t)),e.u64=t=>n(S.U64.serialize(t)),e.u128=t=>n(S.U128.serialize(t)),e.u256=t=>n(S.U256.serialize(t)),e.bool=t=>n(S.Bool.serialize(t)),e.string=t=>n(S.String.serialize(t)),e.address=t=>n(S.Address.serialize(t)),e.id=e.address,e.vector=(t,s)=>n(S.vector(Te(t)).serialize(s)),e.option=(t,s)=>n(S.option(Te(t)).serialize(s)),e}function Ia(n,e){const t=Array.from(`${n}::`).map(a=>a.charCodeAt(0)),s=new Uint8Array(t.length+e.length);return s.set(t),s.set(e,t.length),r.blake2b(s,{dkLen:32})}function Ht(n){return v(n).replace("0x","")}class D{constructor(e){this.version=2,this.sender=e?.sender??null,this.expiration=e?.expiration??null,this.inputs=e?.inputs??[],this.commands=e?.commands??[],this.gasData=e?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(e){const s=S.TransactionKind.parse(e).ProgrammableTransaction;if(!s)throw new Error("Unable to deserialize from bytes.");return D.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:s.inputs,commands:s.commands})}static fromBytes(e){const s=S.TransactionData.parse(e)?.V1,a=s.kind.ProgrammableTransaction;if(!s||!a)throw new Error("Unable to deserialize from bytes.");return D.restore({version:2,sender:s.sender,expiration:s.expiration,gasData:s.gasData,inputs:a.inputs,commands:a.commands})}static restore(e){return e.version===2?new D(r.parse(Fe,e)):new D(r.parse(Fe,na(e)))}static getDigestFromBytes(e){const t=Ia("TransactionData",e);return Je(t)}get gasConfig(){return this.gasData}set gasConfig(e){this.gasData=e}build({maxSizeBytes:e=1/0,overrides:t,onlyTransactionKind:s}={}){const a=this.inputs,i=this.commands,c={ProgrammableTransaction:{inputs:a,commands:i}};if(s)return S.TransactionKind.serialize(c,{maxSize:e}).toBytes();const l=t?.expiration??this.expiration,d=t?.sender??this.sender,p={...this.gasData,...t?.gasConfig,...t?.gasData};if(!d)throw new Error("Missing transaction sender");if(!p.budget)throw new Error("Missing gas budget");if(!p.payment)throw new Error("Missing gas payment");if(!p.price)throw new Error("Missing gas price");const f={sender:Ht(d),expiration:l||{None:!0},gasData:{payment:p.payment,owner:Ht(this.gasData.owner??d),price:BigInt(p.price),budget:BigInt(p.budget)},kind:{ProgrammableTransaction:{inputs:a,commands:i}}};return S.TransactionData.serialize({V1:f},{maxSize:e}).toBytes()}addInput(e,t){const s=this.inputs.length;return this.inputs.push(t),{Input:s,type:e,$kind:"Input"}}getInputUses(e,t){this.mapArguments((s,a)=>(s.$kind==="Input"&&s.Input===e&&t(s,a),s))}mapCommandArguments(e,t){const s=this.commands[e];switch(s.$kind){case"MoveCall":s.MoveCall.arguments=s.MoveCall.arguments.map(i=>t(i,s,e));break;case"TransferObjects":s.TransferObjects.objects=s.TransferObjects.objects.map(i=>t(i,s,e)),s.TransferObjects.address=t(s.TransferObjects.address,s,e);break;case"SplitCoins":s.SplitCoins.coin=t(s.SplitCoins.coin,s,e),s.SplitCoins.amounts=s.SplitCoins.amounts.map(i=>t(i,s,e));break;case"MergeCoins":s.MergeCoins.destination=t(s.MergeCoins.destination,s,e),s.MergeCoins.sources=s.MergeCoins.sources.map(i=>t(i,s,e));break;case"MakeMoveVec":s.MakeMoveVec.elements=s.MakeMoveVec.elements.map(i=>t(i,s,e));break;case"Upgrade":s.Upgrade.ticket=t(s.Upgrade.ticket,s,e);break;case"$Intent":const a=s.$Intent.inputs;s.$Intent.inputs={};for(const[i,c]of Object.entries(a))s.$Intent.inputs[i]=Array.isArray(c)?c.map(l=>t(l,s,e)):t(c,s,e);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${s.$kind}`)}}mapArguments(e){for(const t of this.commands.keys())this.mapCommandArguments(t,e)}replaceCommand(e,t,s=e){if(!Array.isArray(t)){this.commands[e]=t;return}const a=t.length-1;this.commands.splice(e,1,...t),a!==0&&this.mapArguments((i,c,l)=>{if(l<e+t.length)return i;switch(i.$kind){case"Result":i.Result===e&&(i.Result=s),i.Result>e&&(i.Result+=a);break;case"NestedResult":i.NestedResult[0]===e&&(i.NestedResult[0]=s),i.NestedResult[0]>e&&(i.NestedResult[0]+=a);break}return i})}getDigest(){const e=this.build({onlyTransactionKind:!1});return D.getDigestFromBytes(e)}snapshot(){return r.parse(Fe,this)}shallowClone(){return new D({version:this.version,sender:this.sender,expiration:this.expiration,gasData:{...this.gasData},inputs:[...this.inputs],commands:[...this.commands]})}applyResolvedData(e){this.sender||(this.sender=e.sender??null),this.expiration||(this.expiration=e.expiration??null),this.gasData.budget||(this.gasData.budget=e.gasData.budget),this.gasData.owner||(this.gasData.owner=e.gasData.owner??null),this.gasData.payment||(this.gasData.payment=e.gasData.payment),this.gasData.price||(this.gasData.price=e.gasData.price);for(let t=0;t<this.inputs.length;t++){const s=this.inputs[t],a=e.inputs[t];switch(s.$kind){case"UnresolvedPure":if(a.$kind!=="Pure")throw new Error(`Expected input at index ${t} to resolve to a Pure argument, but got ${JSON.stringify(a)}`);this.inputs[t]=a;break;case"UnresolvedObject":if(a.$kind!=="Object")throw new Error(`Expected input at index ${t} to resolve to an Object argument, but got ${JSON.stringify(a)}`);if(a.Object.$kind==="ImmOrOwnedObject"||a.Object.$kind==="Receiving"){const i=s.UnresolvedObject,c=a.Object.ImmOrOwnedObject??a.Object.Receiving;if(v(i.objectId)!==v(c.objectId)||i.version!=null&&i.version!==c.version||i.digest!=null&&i.digest!==c.digest||i.mutable!=null||i.initialSharedVersion!=null)throw new Error(`Input at index ${t} did not match unresolved object. ${JSON.stringify(i)} is not compatible with ${JSON.stringify(c)}`)}else if(a.Object.$kind==="SharedObject"){const i=s.UnresolvedObject,c=a.Object.SharedObject;if(v(i.objectId)!==v(c.objectId)||i.initialSharedVersion!=null&&i.initialSharedVersion!==c.initialSharedVersion||i.mutable!=null&&i.mutable!==c.mutable||i.version!=null||i.digest!=null)throw new Error(`Input at index ${t} did not match unresolved object. ${JSON.stringify(i)} is not compatible with ${JSON.stringify(c)}`)}else throw new Error(`Input at index ${t} resolved to an unexpected Object kind: ${JSON.stringify(a.Object)}`);this.inputs[t]=a;break}}}}function Jt(n){if(typeof n=="string")return v(n);if(n.Object)return n.Object.ImmOrOwnedObject?v(n.Object.ImmOrOwnedObject.objectId):n.Object.Receiving?v(n.Object.Receiving.objectId):v(n.Object.SharedObject.objectId);if(n.UnresolvedObject)return v(n.UnresolvedObject.objectId)}const Pa="/";function ye(n){return n.includes(Pa)||n.includes("@")||n.includes(".sui")}function xa(n){const e=new Set,t=new Set;for(const s of n.commands)switch(s.$kind){case"MakeMoveVec":s.MakeMoveVec.type&&Xt([s.MakeMoveVec.type]).forEach(c=>{t.add(c)});break;case"MoveCall":const a=s.MoveCall,i=a.package.split("::")[0];if(ye(i)){if(!yn(i))throw new Error(`Invalid package name: ${i}`);e.add(i)}Xt(a.typeArguments??[]).forEach(c=>{t.add(c)});break}return{packages:[...e],types:[...t]}}function Oa(n,e){for(const t of n.commands){if(t.MakeMoveVec?.type){if(!ye(t.MakeMoveVec.type))continue;if(!e.types[t.MakeMoveVec.type])throw new Error(`No resolution found for type: ${t.MakeMoveVec.type}`);t.MakeMoveVec.type=e.types[t.MakeMoveVec.type].type}const s=t.MoveCall;if(!s)continue;const a=s.package.split("::"),i=a[0];if(ye(i)&&!e.packages[i])throw new Error(`No address found for package: ${i}`);ye(i)&&(a[0]=e.packages[i].package,s.package=a.join("::"));const c=s.typeArguments;if(c){for(let l=0;l<c.length;l++)if(ye(c[l])){if(!e.types[c[l]])throw new Error(`No resolution found for type: ${c[l]}`);c[l]=e.types[c[l]].type}s.typeArguments=c}}}function Xt(n){const e=new Set;for(const t of n)if(ye(t)){if(!Zs(t))throw new Error(`Invalid type with names: ${t}`);e.add(t)}return e}const ja=n=>async(e,t,s)=>{const a=xa(e);if(a.types.length===0&&a.packages.length===0)return s();const i=await Ba(t).core.mvr.resolve({types:a.types,packages:a.packages});Oa(e,i),await s()};function Ba(n){if(!n.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return n.client}var qn=n=>{throw TypeError(n)},At=(n,e,t)=>e.has(n)||qn("Cannot "+t),m=(n,e,t)=>(At(n,e,"read from private field"),t?t.call(n):e.get(n)),L=(n,e,t)=>e.has(n)?qn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),M=(n,e,t,s)=>(At(n,e,"write to private field"),e.set(n,t),t),I=(n,e,t)=>(At(n,e,"access private method"),t),de,me,Y,q,U,R,N,se,h,T,Hn,$e,Ve,_e,Qe,ut,Tt,Jn,Xn;function tt(n,e=1/0){const t={$kind:"Result",get Result(){return typeof n=="function"?n():n}},s=[],a=i=>s[i]??(s[i]={$kind:"NestedResult",get NestedResult(){return[typeof n=="function"?n():n,i]}});return new Proxy(t,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,c){if(c in i)return Reflect.get(i,c);if(c===Symbol.iterator)return function*(){let d=0;for(;d<e;)yield a(d),d++};if(typeof c=="symbol")return;const l=parseInt(c,10);if(!(Number.isNaN(l)||l<0))return a(l)}})}const Zn=Symbol.for("@mysten/transaction");function Da(n){return!!n&&typeof n=="object"&&n[Zn]===!0}const Zt={buildPlugins:new Map,serializationPlugins:new Map},nt=Symbol.for("@mysten/transaction/registry");function ke(){try{const n=globalThis;return n[nt]||(n[nt]=Zt),n[nt]}catch{return Zt}}const Yn=class lt{constructor(){L(this,T),L(this,de),L(this,me),L(this,Y,new Map),L(this,q,[]),L(this,U,[]),L(this,R,new Set),L(this,N,new Set),L(this,se,new Map),L(this,h),this.object=Ta(t=>{if(typeof t=="function")return this.object(this.add(t));if(typeof t=="object"&&r.is(C,t))return t;const s=Jt(t),a=m(this,h).inputs.find(i=>s===Jt(i));return a?.Object?.SharedObject&&typeof t=="object"&&t.Object?.SharedObject&&(a.Object.SharedObject.mutable=a.Object.SharedObject.mutable||t.Object.SharedObject.mutable),a?{$kind:"Input",Input:m(this,h).inputs.indexOf(a),type:"object"}:I(this,T,Ve).call(this,"object",typeof t=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:v(t)}}:t)});const e=ke();M(this,h,new D),M(this,me,[...e.buildPlugins.values()]),M(this,de,[...e.serializationPlugins.values()])}static fromKind(e){const t=new lt;return M(t,h,D.fromKindBytes(typeof e=="string"?Q(e):e)),M(t,q,m(t,h).inputs.slice()),M(t,U,m(t,h).commands.slice()),M(t,R,new Set(m(t,U).map((s,a)=>a))),t}static from(e){const t=new lt;return Da(e)?M(t,h,D.restore(e.getData())):typeof e!="string"||!e.startsWith("{")?M(t,h,D.fromBytes(typeof e=="string"?Q(e):e)):M(t,h,D.restore(JSON.parse(e))),M(t,q,m(t,h).inputs.slice()),M(t,U,m(t,h).commands.slice()),M(t,R,new Set(m(t,U).map((s,a)=>a))),t}static registerGlobalSerializationPlugin(e,t){ke().serializationPlugins.set(e,t??e)}static unregisterGlobalSerializationPlugin(e){ke().serializationPlugins.delete(e)}static registerGlobalBuildPlugin(e,t){ke().buildPlugins.set(e,t??e)}static unregisterGlobalBuildPlugin(e){ke().buildPlugins.delete(e)}addSerializationPlugin(e){m(this,de).push(e)}addBuildPlugin(e){m(this,me).push(e)}addIntentResolver(e,t){if(m(this,Y).has(e)&&m(this,Y).get(e)!==t)throw new Error(`Intent resolver for ${e} already exists`);m(this,Y).set(e,t)}setSender(e){m(this,h).sender=e}setSenderIfNotSet(e){m(this,h).sender||(m(this,h).sender=e)}setExpiration(e){m(this,h).expiration=e?r.parse(Gn,e):null}setGasPrice(e){m(this,h).gasConfig.price=String(e)}setGasBudget(e){m(this,h).gasConfig.budget=String(e)}setGasBudgetIfNotSet(e){m(this,h).gasData.budget==null&&(m(this,h).gasConfig.budget=String(e))}setGasOwner(e){m(this,h).gasConfig.owner=e}setGasPayment(e){m(this,h).gasConfig.payment=e.map(t=>r.parse(re,t))}get blockData(){return Wt(m(this,h).snapshot())}getData(){return m(this,h).snapshot()}get[Zn](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Ea(e=>wt(e)?I(this,T,Ve).call(this,"pure",{$kind:"Pure",Pure:{bytes:e.toBase64()}}):I(this,T,Ve).call(this,"pure",r.is(Kt,e)?r.parse(Kt,e):e instanceof Uint8Array?K.Pure(e):{$kind:"UnresolvedPure",UnresolvedPure:{value:e}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...e){return this.object(K.ObjectRef(...e))}receivingRef(...e){return this.object(K.ReceivingRef(...e))}sharedObjectRef(...e){return this.object(K.SharedObjectRef(...e))}add(e){if(typeof e=="function"){if(m(this,se).has(e))return m(this,se).get(e);const t=I(this,T,Hn).call(this),s=e(t);if(!(s&&typeof s=="object"&&"then"in s))return M(this,R,m(t,R)),m(this,se).set(e,s),s;const a=I(this,T,$e).call(this,{$kind:"$Intent",$Intent:{name:"AsyncTransactionThunk",inputs:{},data:{resultIndex:m(this,h).commands.length,result:null}}});m(this,N).add(Promise.resolve(s).then(c=>{a.$Intent.data.result=c}));const i=tt(()=>a.$Intent.data.resultIndex);return m(this,se).set(e,i),i}else I(this,T,$e).call(this,e);return tt(m(this,h).commands.length-1)}splitCoins(e,t){const s=ue.SplitCoins(typeof e=="string"?this.object(e):I(this,T,Qe).call(this,e),t.map(a=>typeof a=="number"||typeof a=="bigint"||typeof a=="string"?this.pure.u64(a):I(this,T,_e).call(this,a)));return I(this,T,$e).call(this,s),tt(m(this,h).commands.length-1,t.length)}mergeCoins(e,t){return this.add(ue.MergeCoins(this.object(e),t.map(s=>this.object(s))))}publish({modules:e,dependencies:t}){return this.add(ue.Publish({modules:e,dependencies:t}))}upgrade({modules:e,dependencies:t,package:s,ticket:a}){return this.add(ue.Upgrade({modules:e,dependencies:t,package:s,ticket:this.object(a)}))}moveCall({arguments:e,...t}){return this.add(ue.MoveCall({...t,arguments:e?.map(s=>I(this,T,_e).call(this,s))}))}transferObjects(e,t){return this.add(ue.TransferObjects(e.map(s=>this.object(s)),typeof t=="string"?this.pure.address(t):I(this,T,_e).call(this,t)))}makeMoveVec({type:e,elements:t}){return this.add(ue.MakeMoveVec({type:e,elements:t.map(s=>this.object(s))}))}serialize(){return JSON.stringify(Wt(m(this,h).snapshot()))}async toJSON(e={}){await this.prepareForSerialization(e);const t=this.isFullyResolved();return JSON.stringify(r.parse(la,t?{...m(this,h).snapshot(),digest:m(this,h).getDigest()}:m(this,h).snapshot()),(s,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(e){const{signer:t,...s}=e,a=await this.build(s);return t.signTransaction(a)}isFullyResolved(){return!(!m(this,h).sender||m(this,N).size>0||m(this,h).commands.some(e=>e.$Intent)||Qn(m(this,h),{}))}async build(e={}){return await this.prepareForSerialization(e),await I(this,T,ut).call(this,e),m(this,h).build({onlyTransactionKind:e.onlyTransactionKind})}async getDigest(e={}){return await this.prepareForSerialization(e),await I(this,T,ut).call(this,e),m(this,h).getDigest()}async prepareForSerialization(e){await I(this,T,Jn).call(this),I(this,T,Xn).call(this);const t=new Set;for(const a of m(this,h).commands)a.$Intent&&t.add(a.$Intent.name);const s=[...m(this,de)];for(const a of t)if(!e.supportedIntents?.includes(a)){if(!m(this,Y).has(a))throw new Error(`Missing intent resolver for ${a}`);s.push(m(this,Y).get(a))}s.push(ja()),await I(this,T,Tt).call(this,s,e)}};de=new WeakMap;me=new WeakMap;Y=new WeakMap;q=new WeakMap;U=new WeakMap;R=new WeakMap;N=new WeakMap;se=new WeakMap;h=new WeakMap;T=new WeakSet;Hn=function(){const n=new Yn;return M(n,h,m(this,h)),M(n,de,m(this,de)),M(n,me,m(this,me)),M(n,Y,m(this,Y)),M(n,N,m(this,N)),M(n,R,new Set(m(this,R))),M(n,se,m(this,se)),m(this,q).push(m(n,q)),m(this,U).push(m(n,U)),n};$e=function(n){const e=m(this,h).commands.length;return m(this,U).push(n),m(this,R).add(e),m(this,h).commands.push(n),m(this,h).mapCommandArguments(e,t=>{if(t.$kind==="Result"&&!m(this,R).has(t.Result))throw new Error(`Result { Result: ${t.Result} } is not available to use in the current transaction`);if(t.$kind==="NestedResult"&&!m(this,R).has(t.NestedResult[0]))throw new Error(`Result { NestedResult: [${t.NestedResult[0]}, ${t.NestedResult[1]}] } is not available to use in the current transaction`);if(t.$kind==="Input"&&t.Input>=m(this,h).inputs.length)throw new Error(`Input { Input: ${t.Input} } references an input that does not exist in the current transaction`);return t}),n};Ve=function(n,e){return m(this,q).push(e),m(this,h).addInput(n,e)};_e=function(n){return wt(n)?this.pure(n):I(this,T,Qe).call(this,n)};Qe=function(n){if(typeof n=="function"){const e=this.add(n);return typeof e=="function"?I(this,T,Qe).call(this,e):r.parse(C,e)}return r.parse(C,n)};ut=async function(n){if(!n.onlyTransactionKind&&!m(this,h).sender)throw new Error("Missing transaction sender");await I(this,T,Tt).call(this,[...m(this,me),ka],n)};Tt=async function(n,e){try{const t=s=>{if(s>=n.length)return()=>{};const a=n[s];return async()=>{const i=t(s+1);let c=!1,l=!1;if(await a(m(this,h),e,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${s}`);c=!0,await i(),l=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${s}`);if(!l)throw new Error(`next() was not awaited in TransactionPlugin ${s}`)}};await t(0)()}finally{M(this,q,m(this,h).inputs.slice()),M(this,U,m(this,h).commands.slice())}};Jn=async function(){for(;m(this,N).size>0;){const n=Promise.all(m(this,N));m(this,N).clear(),m(this,N).add(n),await n,m(this,N).delete(n)}};Xn=function(){const n=m(this,h).commands,e=m(this,h).inputs,t=m(this,U).flat(1/0),s=m(this,q).flat(1/0);if(t.length!==n.length)throw new Error("Unexpected number of commands found in transaction data");if(s.length!==e.length)throw new Error("Unexpected number of inputs found in transaction data");const a=t.filter(c=>c.$Intent?.name!=="AsyncTransactionThunk");m(this,h).commands=a,m(this,h).inputs=s,M(this,U,a),M(this,q,s),M(this,R,new Set(a.map((c,l)=>l)));function i(c){const l=n[c];if(l.$Intent?.name==="AsyncTransactionThunk"){const p=l.$Intent.data.result;if(p==null)throw new Error("AsyncTransactionThunk has not been resolved");return i(p.Result)}const d=a.indexOf(l);if(d===-1)throw new Error("Unable to find original index for command");return d}m(this,h).mapArguments(c=>{if(c.$kind==="Input"){const l=s.indexOf(e[c.Input]);if(l===-1)throw new Error("Input has not been resolved");return{...c,Input:l}}else if(c.$kind==="Result"){const l=i(c.Result);return{...c,Result:l}}else if(c.$kind==="NestedResult"){const l=i(c.NestedResult[0]);return{...c,NestedResult:[l,c.NestedResult[1]]}}return c});for(const[c,l]of n.entries())if(l.$Intent?.name==="AsyncTransactionThunk")try{l.$Intent.data.resultIndex=i(c)}catch{}};let Ua=Yn;class Et{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;executorId;executorRequestsId;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(p,f)=>{if(!p)throw new Error(f);return p};this.usdcId=i(u.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:c,messageTransmitterState:l,usdcTreasury:d}=us.suiCircleObjects(e);this.usdcTreasuryId=d,this.tokenMessengerId=i(a.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterId=i(a.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.tokenMessengerStateId=c,this.messageTransmitterStateId=l,this.executorId=i($t[e]?.executorId,`Executor contract for ${e} not found`),this.executorRequestsId=i($t[e]?.executorRequestsId,`Executor requests contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SuiPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new Et(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new Ua,i=new r.SuiAddress(e).unwrap(),c=u.circleChainId.get(this.network,t.chain),[l,...d]=await r.SuiPlatform.getCoins(this.provider,e,this.usdcId);if(l===void 0)throw new Error("No USDC in wallet");const p=a.object(l.coinObjectId);d.length>0&&a.mergeCoins(p,d.map(A=>a.object(A.coinObjectId)));let f;if(s.referrerFee>0n){const[A,j]=a.splitCoins(p,[s.remainingAmount,s.referrerFee]);f=A,a.transferObjects([j],s.referrer?u.canonicalAddress(s.referrer):i)}else{const[A]=a.splitCoins(p,[s.remainingAmount]);f=A}const[g,y]=a.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[f,a.pure.u32(c),a.pure.address(t.address.toUniversalAddress().toString()),a.object(this.tokenMessengerStateId),a.object(this.messageTransmitterStateId),a.object("0x403"),a.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[b]=a.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[y]}),[w]=a.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[y]}),[E]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[b,w]}),[P]=a.splitCoins(a.gas,[a.pure.u64(s.estimatedCost)]);a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[P,a.object(nr),a.pure.u16(u.toChainId(t.chain)),a.pure.address("0x0"),a.pure.address(i),a.pure.vector("u8",s.signedQuote),E,a.pure.vector("u8",s.relayInstructions)]}),yield this.createUnsignedTx(a,"SuiCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new r.SuiUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(r._platform$1,"CCTPExecutor",Et);const Me=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new r.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const It=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new r.PublicKey("So11111111111111111111111111111111111111112");new r.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ra extends Error{constructor(e){super(e)}}class Fa extends Ra{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var dt;(function(n){n[n.InitializeMint=0]="InitializeMint",n[n.InitializeAccount=1]="InitializeAccount",n[n.InitializeMultisig=2]="InitializeMultisig",n[n.Transfer=3]="Transfer",n[n.Approve=4]="Approve",n[n.Revoke=5]="Revoke",n[n.SetAuthority=6]="SetAuthority",n[n.MintTo=7]="MintTo",n[n.Burn=8]="Burn",n[n.CloseAccount=9]="CloseAccount",n[n.FreezeAccount=10]="FreezeAccount",n[n.ThawAccount=11]="ThawAccount",n[n.TransferChecked=12]="TransferChecked",n[n.ApproveChecked=13]="ApproveChecked",n[n.MintToChecked=14]="MintToChecked",n[n.BurnChecked=15]="BurnChecked",n[n.InitializeAccount2=16]="InitializeAccount2",n[n.SyncNative=17]="SyncNative",n[n.InitializeAccount3=18]="InitializeAccount3",n[n.InitializeMultisig2=19]="InitializeMultisig2",n[n.InitializeMint2=20]="InitializeMint2",n[n.GetAccountDataSize=21]="GetAccountDataSize",n[n.InitializeImmutableOwner=22]="InitializeImmutableOwner",n[n.AmountToUiAmount=23]="AmountToUiAmount",n[n.UiAmountToAmount=24]="UiAmountToAmount",n[n.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",n[n.TransferFeeExtension=26]="TransferFeeExtension",n[n.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",n[n.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",n[n.Reallocate=29]="Reallocate",n[n.MemoTransferExtension=30]="MemoTransferExtension",n[n.CreateNativeMint=31]="CreateNativeMint",n[n.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",n[n.InterestBearingMintExtension=33]="InterestBearingMintExtension",n[n.CpiGuardExtension=34]="CpiGuardExtension",n[n.InitializePermanentDelegate=35]="InitializePermanentDelegate",n[n.TransferHookExtension=36]="TransferHookExtension",n[n.MetadataPointerExtension=39]="MetadataPointerExtension"})(dt||(dt={}));function $a(n,e,t){if(t.length){n.push({pubkey:e,isSigner:!1,isWritable:!1});for(const s of t)n.push({pubkey:s instanceof r.PublicKey?s:s.publicKey,isSigner:!0,isWritable:!1})}else n.push({pubkey:e,isSigner:!0,isWritable:!1});return n}const Va=r.LayoutExports.struct([r.LayoutExports.u32("mintAuthorityOption"),Ce.publicKey("mintAuthority"),Ce.u64("supply"),r.LayoutExports.u8("decimals"),Ce.bool("isInitialized"),r.LayoutExports.u32("freezeAuthorityOption"),Ce.publicKey("freezeAuthority")]);Va.span;function Ie(n,e,t=!1,s=Me,a=It){if(!t&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new Fa;const[i]=r.PublicKey.findProgramAddressSync([e.toBuffer(),s.toBuffer(),n.toBuffer()],a);return i}function es(n,e,t,s,a=Me,i=It){return _a(n,e,t,s,u.Buffer.from([1]),a,i)}function _a(n,e,t,s,a,i=Me,c=It){const l=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:l,programId:c,data:a})}const Yt=r.LayoutExports.struct([r.LayoutExports.u8("instruction"),Ce.u64("amount")]);function ts(n,e,t,s,a=[],i=Me){const c=$a([{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,a),l=u.Buffer.alloc(Yt.span);return Yt.encode({instruction:dt.Transfer,amount:BigInt(s)},l),new r.TransactionInstruction({keys:c,programId:i,data:l})}const Na={version:"0.1.0",name:"example_cctp_with_executor",instructions:[{name:"relayLastMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayLastMessageArgs"}}]}],types:[{name:"relayLastMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]};class Pt{network;chain;connection;contracts;tokenMessengerProgramId;messageTransmitterProgramId;shimProgramId;executorProgramId;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.connection=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(c,l)=>{if(!c)throw new Error(l);return new r.PublicKey(c)};this.tokenMessengerProgramId=i(a.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterProgramId=i(a.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.shimProgramId=i(gt[e]?.[t],`Shim contract for ${t} not found`),this.executorProgramId=i(tn[e],`Executor contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new Pt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new r.PublicKey(u.usdcContract.get(this.network,this.chain)),i=new r.SolanaAddress(e).unwrap(),c=Ie(a,i),l=new r.SolanaAddress(s.referrer?.address?.toString()??i).unwrap(),d=new r.Transaction$1;if(d.feePayer=i,s.referrerFee>0n){const E=Ie(a,l,!0);await this.connection.getAccountInfo(E)||d.add(es(i,E,l,a)),d.add(ts(c,E,i,s.referrerFee))}const p=u.circleChainId.get(this.network,t.chain),f=t.address.toUniversalAddress(),g=r.Keypair.generate();d.add(await ls.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,a,p,i,c,f,s.remainingAmount,g.publicKey));const y=new be.Program(Na,this.shimProgramId,{connection:null}),b=u.deserialize$1(yt,s.signedQuote),w=ds.deriveAddress("message_transmitter",this.messageTransmitterProgramId);d.add(await y.methods.relayLastMessage({execAmount:new r.BN(s.estimatedCost.toString()),recipientChain:u.toChainId(t.chain),signedQuoteBytes:u.Buffer.from(s.signedQuote),relayInstructions:u.Buffer.from(s.relayInstructions)}).accounts({payer:i,messageTransmitter:w,payee:new r.PublicKey(b.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:d,signers:[g]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new r.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}const za="0.2.0",Ka="message_transmitter_v2",La=[{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"message_transmitter"}]}},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1,address:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"isNonceUsed",accounts:[{name:"usedNonce",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[],returns:"bool"},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"message_transmitter_authority"},{kind:"account",type:"publicKey",path:"receiver"}]}},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonce",isMut:!0,isSigner:!1,docs:["Each nonce is stored in a separate PDA"]},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0,pda:{seeds:[{kind:"const",type:"string",value:"sender_authority"}],programId:{kind:"account",type:"publicKey",path:"senderProgram"}}},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"}],args:[{name:"params",type:{defined:"SendMessageParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]}],Ga=[{name:"MessageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"createdAt",type:"i64"},{name:"message",type:"bytes"}]}},{name:"MessageTransmitter",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"}]}},{name:"UsedNonce",type:{kind:"struct",fields:[{name:"isUsed",type:"bool"}]}}],Wa=[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"},{name:"destinationMessage",type:"bytes"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"minFinalityThreshold",type:"u32"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}}],Qa=[{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:{array:["u8",32]},index:!1},{name:"sender",type:"publicKey",index:!1},{name:"finalityThresholdExecuted",type:"u32",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"Unpause",fields:[]}],qa=[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"},{code:6032,name:"InvalidDestinationMessage",msg:"Invalid destination message"},{code:6033,name:"EventAccountWindowNotExpired",msg:"Event account window not expired"},{code:6034,name:"DestinationDomainIsLocalDomain",msg:"Destination domain is local domain"}],Ha={version:za,name:Ka,instructions:La,accounts:Ga,types:Wa,events:Qa,errors:qa},Ja="0.2.0",Xa="token_messenger_minter_v2",Za=JSON.parse('[{"name":"acceptOwnership","accounts":[{"name":"pendingOwner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AcceptOwnershipParams"}}]},{"name":"addLocalToken","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"localTokenMint","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AddLocalTokenParams"}}]},{"name":"addRemoteTokenMessenger","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AddRemoteTokenMessengerParams"}}]},{"name":"burnTokenCustody","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":false,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenMint","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"BurnTokenCustodyParams"}}]},{"name":"denylistAccount","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"denylister","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"denylistAccount","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DenylistParams"}}]},{"name":"depositForBurn","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"eventRentPayer","isMut":true,"isSigner":true},{"name":"senderAuthorityPda","isMut":false,"isSigner":false},{"name":"burnTokenAccount","isMut":true,"isSigner":false},{"name":"denylistAccount","isMut":false,"isSigner":false},{"name":"messageTransmitter","isMut":true,"isSigner":false},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"burnTokenMint","isMut":true,"isSigner":false},{"name":"messageSentEventData","isMut":true,"isSigner":true},{"name":"messageTransmitterProgram","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DepositForBurnParams"}}]},{"name":"depositForBurnWithHook","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"eventRentPayer","isMut":true,"isSigner":true},{"name":"senderAuthorityPda","isMut":false,"isSigner":false},{"name":"burnTokenAccount","isMut":true,"isSigner":false},{"name":"denylistAccount","isMut":false,"isSigner":false},{"name":"messageTransmitter","isMut":true,"isSigner":false},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"burnTokenMint","isMut":true,"isSigner":false},{"name":"messageSentEventData","isMut":true,"isSigner":true},{"name":"messageTransmitterProgram","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DepositForBurnWithHookParams"}}]},{"name":"handleReceiveFinalizedMessage","accounts":[{"name":"authorityPda","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"tokenPair","isMut":false,"isSigner":false},{"name":"feeRecipientTokenAccount","isMut":true,"isSigner":false},{"name":"recipientTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"HandleReceiveMessageParams"}}]},{"name":"handleReceiveUnfinalizedMessage","accounts":[{"name":"authorityPda","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"tokenPair","isMut":false,"isSigner":false},{"name":"feeRecipientTokenAccount","isMut":true,"isSigner":false},{"name":"recipientTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"HandleReceiveMessageParams"}}]},{"name":"initialize","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"upgradeAuthority","isMut":false,"isSigner":true},{"name":"authorityPda","isMut":false,"isSigner":false},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"tokenMessengerMinterProgramData","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"InitializeParams"}}]},{"name":"linkTokenPair","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"tokenPair","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"LinkTokenPairParams"}}]},{"name":"pause","accounts":[{"name":"pauser","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"PauseParams"}}]},{"name":"removeLocalToken","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenMint","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"RemoveLocalTokenParams"}}]},{"name":"removeRemoteTokenMessenger","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"RemoveRemoteTokenMessengerParams"}}]},{"name":"setFeeRecipient","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetFeeRecipientParams"}}]},{"name":"setMaxBurnAmountPerMessage","accounts":[{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMaxBurnAmountPerMessageParams"}}]},{"name":"setMinFee","accounts":[{"name":"minFeeController","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMinFeeParams"}}]},{"name":"setMinFeeController","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMinFeeControllerParams"}}]},{"name":"setTokenController","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetTokenControllerParams"}}]},{"name":"transferOwnership","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"TransferOwnershipParams"}}]},{"name":"undenylistAccount","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"denylister","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"denylistAccount","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UndenylistParams"}}]},{"name":"unlinkTokenPair","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"tokenPair","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UnlinkTokenPairParams"}}]},{"name":"unpause","accounts":[{"name":"pauser","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UnpauseParams"}}]},{"name":"updateDenylister","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UpdateDenylisterParams"}}]},{"name":"updatePauser","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UpdatePauserParams"}}]}]'),Ya=[{name:"DenylistedAccount",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"LocalToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}},{name:"MessageTransmitter",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"}]}},{name:"RemoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"TokenMessenger",type:{kind:"struct",fields:[{name:"denylister",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"},{name:"feeRecipient",type:"publicKey"},{name:"minFeeController",type:"publicKey"},{name:"minFee",type:"u32"}]}},{name:"TokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"TokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}}],ei=[{name:"Denylisted",fields:[{name:"account",type:"publicKey",index:!1}]},{name:"DenylisterChanged",fields:[{name:"oldDenylister",type:"publicKey",index:!1},{name:"newDenylister",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1},{name:"maxFee",type:"u64",index:!1},{name:"minFinalityThreshold",type:"u32",index:!1},{name:"hookData",type:"bytes",index:!1}]},{name:"FeeRecipientSet",fields:[{name:"newFeeRecipient",type:"publicKey",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"MinFeeControllerSet",fields:[{name:"newMinFeeController",type:"publicKey",index:!1}]},{name:"MinFeeSet",fields:[{name:"newMinFee",type:"u32",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1},{name:"feeCollected",type:"u64",index:!1}]},{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"UnDenylisted",fields:[{name:"account",type:"publicKey",index:!1}]},{name:"Unpause",fields:[]}],ti=[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMinterState",msg:"Invalid token minter state"},{code:6002,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6003,name:"InvalidTokenPairState",msg:"Invalid token pair state"},{code:6004,name:"InvalidLocalTokenState",msg:"Invalid local token state"},{code:6005,name:"InvalidPauser",msg:"Invalid pauser"},{code:6006,name:"InvalidTokenController",msg:"Invalid token controller"},{code:6007,name:"BurnAmountExceeded",msg:"Burn amount exceeded"},{code:6008,name:"InvalidAmount",msg:"Invalid amount"}],ni=[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"DenylistParams",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"maxFee",type:"u64"},{name:"minFinalityThreshold",type:"u32"}]}},{name:"DepositForBurnWithHookParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"maxFee",type:"u64"},{name:"minFinalityThreshold",type:"u32"},{name:"hookData",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"finalityThresholdExecuted",type:"u32"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"denylister",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"minFeeController",type:"publicKey"},{name:"minFee",type:"u32"},{name:"messageBodyVersion",type:"u32"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"SetFeeRecipientParams",type:{kind:"struct",fields:[{name:"newFeeRecipient",type:"publicKey"}]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetMinFeeControllerParams",type:{kind:"struct",fields:[{name:"newMinFeeController",type:"publicKey"}]}},{name:"SetMinFeeParams",type:{kind:"struct",fields:[{name:"newMinFee",type:"u32"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UndenylistParams",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"UnlinkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateDenylisterParams",type:{kind:"struct",fields:[{name:"newDenylister",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}}],si={version:Ja,name:Xa,instructions:Za,accounts:Ya,events:ei,errors:ti,types:ni},ri={version:"0.1.0",name:"executor",instructions:[{name:"requestForExecution",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestForExecutionArgs"}}]}],types:[{name:"RequestForExecutionArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"dstChain",type:"u16"},{name:"dstAddr",type:{array:["u8",32]}},{name:"refundAddr",type:"publicKey"},{name:"signedQuoteBytes",type:"bytes"},{name:"requestBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}],errors:[{code:6e3,name:"InvalidArguments",msg:"InvalidArguments"},{code:6001,name:"QuoteSrcChainMismatch",msg:"QuoteSrcChainMismatch"},{code:6002,name:"QuoteDstChainMismatch",msg:"QuoteDstChainMismatch"},{code:6003,name:"QuoteExpired",msg:"QuoteExpired"},{code:6004,name:"QuotePayeeMismatch",msg:"QuotePayeeMismatch"}]},ai=u.Buffer.from("4552433201","hex"),Z=(n,e,t)=>{const s=[u.Buffer.from(be.index.bytes.utf8.encode(n))];if(t)for(const i of t)typeof i=="string"?s.push(u.Buffer.from(be.index.bytes.utf8.encode(i))):Array.isArray(i)||u.Buffer.isBuffer(i)?s.push(u.Buffer.from(i)):s.push(u.Buffer.from(i.toBuffer()));const a=r.PublicKey.findProgramAddressSync(s,e);return{publicKey:a[0],bump:a[1]}};class xt{network;chain;connection;contracts;tokenMessengerV2ProgramId;messageTransmitterV2ProgramId;executorProgramId;constructor(e,t,s,a){this.network=e,this.chain=t,this.connection=s,this.contracts=a;const i=(l,d)=>{if(!l)throw new Error(d);return new r.PublicKey(l)},c=nn[e]?.[t];if(!c)throw new Error(`Circle V2 contracts not found for ${e} ${t}`);this.tokenMessengerV2ProgramId=i(c.tokenMessengerV2,`Circle Token Messenger V2 contract for domain ${t} not found`),this.messageTransmitterV2ProgramId=i(c.messageTransmitterV2,`Circle Message Transmitter V2 contract for domain ${t} not found`),this.executorProgramId=i(tn[e],`Executor contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new xt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new r.PublicKey(u.usdcContract.get(this.network,this.chain)),i=new r.SolanaAddress(e).unwrap(),c=Ie(a,i),l=new r.SolanaAddress(s.referrer?.address?.toString()??i).unwrap(),d=[];if(s.referrerFee>0n){const A=Ie(a,l,!0);await this.connection.getAccountInfo(A)||d.push(es(i,A,l,a)),d.push(ts(c,A,i,s.referrerFee))}const p=Pe(this.network,t.chain),f=t.address.toUniversalAddress(),g=r.Keypair.generate(),y=await this.createCCTPv2DepositInstruction(a,p,i,c,f,s.remainingAmount,g.publicKey);d.push(y);const b=new be.Program(ri,this.executorProgramId,{connection:null}),w=u.deserialize$1(yt,s.signedQuote);d.push(await b.methods.requestForExecution({amount:new r.BN(s.estimatedCost.toString()),dstChain:u.toChainId(t.chain),dstAddr:[...t.address.toUniversalAddress().toUint8Array()],refundAddr:i,signedQuoteBytes:u.Buffer.from(s.signedQuote),requestBytes:ai,relayInstructions:u.Buffer.from(s.relayInstructions)}).accounts({payer:i,payee:new r.PublicKey(w.quote.payeeAddress),systemProgram:r.SystemProgram.programId}).instruction());const E=Vt[this.network]?.[this.chain],P=await this.createVersionedTransaction(i,d,E);yield this.createUnsignedTx({transaction:P,signers:[g]},"SvmCCTPv2Executor.Transfer")}async isTransferCompleted(e){const t=u.Buffer.alloc(4);t.writeUInt32LE(e.sourceDomain,0);const s=u.Buffer.from(e.nonce).subarray(0,8),[a]=r.PublicKey.findProgramAddressSync([u.Buffer.from("used_nonces"),t,s],this.messageTransmitterV2ProgramId);try{return await this.connection.getAccountInfo(a)!==null}catch{return!1}}async*redeem(e,t,s){const a=new r.SolanaAddress(e).unwrap(),i=[];i.push(await this.createReceiveMessageInstructionV2(this.messageTransmitterV2ProgramId,this.tokenMessengerV2ProgramId,new r.PublicKey(u.usdcContract.get(this.network,this.chain)),t,s,a));const c=Vt[this.network]?.[this.chain],l=await this.createVersionedTransaction(a,i,c);yield this.createUnsignedTx({transaction:l,signers:[]},"SvmCCTPv2Executor.Redeem")}async getCurrentBlock(){const e=await this.connection.getSlot();return BigInt(e)}async createVersionedTransaction(e,t,s){const a=s?(await this.connection.getAddressLookupTable(new r.PublicKey(s))).value:null,{blockhash:i}=await this.connection.getLatestBlockhash(),c=new r.TransactionMessage({payerKey:e,recentBlockhash:i,instructions:t}).compileToV0Message(a?[a]:[]);return new r.VersionedTransaction(c)}async createReceiveMessageInstructionV2(e,t,s,a,i,c){const l=u.Buffer.from(un(a)),d=u.Buffer.from(u.stripPrefix("0x",i),"hex"),p=new r.PublicKey(s),f=new r.PublicKey(u.Buffer.from(a.messageBody.burnToken.toUint8Array())),g=new r.PublicKey(a.messageBody.mintRecipient.toUint8Array()),y=a.sourceDomain.toString(),b=this.nonceAccountV2(e,l),w=Z("message_transmitter",e),E=Z("token_messenger",t),P=Z("token_minter",t),A=Z("local_token",t,[p]),j=Z("remote_token_messenger",t,[y]),te=Z("token_pair",t,[y,f]),ae=Z("custody",t,[p]),ie=Z("__event_authority",t),pe=await new be.Program(si,this.messageTransmitterV2ProgramId,{connection:this.connection}).account.tokenMessenger.fetch(E.publicKey),ce=Ie(p,pe.feeRecipient),Oe=[{isSigner:!1,isWritable:!1,pubkey:E.publicKey},{isSigner:!1,isWritable:!1,pubkey:j.publicKey},{isSigner:!1,isWritable:!0,pubkey:P.publicKey},{isSigner:!1,isWritable:!0,pubkey:A.publicKey},{isSigner:!1,isWritable:!1,pubkey:te.publicKey},{isSigner:!1,isWritable:!0,pubkey:ce},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:ae.publicKey},{isSigner:!1,isWritable:!1,pubkey:Me},{isSigner:!1,isWritable:!1,pubkey:ie.publicKey},{isSigner:!1,isWritable:!1,pubkey:t}],je=new be.Program(Ha,this.messageTransmitterV2ProgramId,{connection:null});return await je.methods.receiveMessage({message:l,attestation:d}).accounts({payer:c,caller:c,messageTransmitter:w.publicKey,usedNonce:b,receiver:t,program:je.programId}).remainingAccounts(Oe).instruction()}nonceAccountV2(e,t){const i=t.slice(12,44);return Z("used_nonce",e,[i]).publicKey}async createCCTPv2DepositInstruction(e,t,s,a,i,c,l){const[d]=r.PublicKey.findProgramAddressSync([u.Buffer.from("token_messenger")],this.tokenMessengerV2ProgramId),[p]=r.PublicKey.findProgramAddressSync([u.Buffer.from("local_token"),e.toBuffer()],this.tokenMessengerV2ProgramId),[f]=r.PublicKey.findProgramAddressSync([u.Buffer.from("remote_token_messenger"),u.Buffer.from(t.toString())],this.tokenMessengerV2ProgramId),[g]=r.PublicKey.findProgramAddressSync([u.Buffer.from("token_minter")],this.tokenMessengerV2ProgramId),[y]=r.PublicKey.findProgramAddressSync([u.Buffer.from("sender_authority")],this.tokenMessengerV2ProgramId),[b]=r.PublicKey.findProgramAddressSync([u.Buffer.from("__event_authority")],this.tokenMessengerV2ProgramId),[w]=r.PublicKey.findProgramAddressSync([u.Buffer.from("denylist_account"),s.toBuffer()],this.tokenMessengerV2ProgramId),[E]=r.PublicKey.findProgramAddressSync([u.Buffer.from("message_transmitter")],this.messageTransmitterV2ProgramId),P=u.Buffer.from([215,60,61,46,114,55,128,176]),A=u.Buffer.alloc(8);A.writeBigUInt64LE(c);const j=u.Buffer.alloc(4);j.writeUInt32LE(t);const te=u.Buffer.from(i.toUint8Array()),ae=u.Buffer.alloc(32),ie=u.Buffer.alloc(8);ie.writeBigUInt64LE(0n);const oe=u.Buffer.alloc(4);oe.writeUInt32LE(0);const pe=u.Buffer.concat([P,A,j,te,ae,ie,oe]),ce=[{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:E,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!0},{pubkey:this.messageTransmitterV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:ce,programId:this.tokenMessengerV2ProgramId,data:pe})}createUnsignedTx(e,t,s=!1){return new r.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(r._platform,"CCTPExecutor",Pt);u.registerProtocol(r._platform,"CCTPv2Executor",xt);var F;(function(n){n.Pending="pending",n.Failed="failed",n.Unsupported="unsupported",n.Submitted="submitted",n.Underpaid="underpaid",n.Aborted="aborted"})(F||(F={}));var en;(function(n){n.ERM1="ERM1",n.ERV1="ERV1",n.ERN1="ERN1",n.ERC1="ERC1",n.ERC2="ERC2"})(en||(en={}));async function ii(n){const e=`${ft[n]}/v0/capabilities`;try{return(await u.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${n}.`)}}async function oi(n,e,t,s){const a=`${ft[n]}/v0/quote`;try{return(await u.axios.post(a,{srcChain:u.toChainId(e),dstChain:u.toChainId(t),relayInstructions:s})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function Ot(n,e,t){const s=`${ft[n]}/v0/status/tx`;try{return(await u.axios.post(s,{txHash:e,chainId:u.toChainId(t)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const ci=65535n;function ui(n,e,t){if(e>ci)throw new Error("dBps exceeds max u16");let s=e,a=n,i=0n;if(e>0){if(t!==void 0&&n>0){const c=u.parse(t.toString(),6),l=u.units(c)/n,d=e<l?e:l;i=n*d/100000n,s=d}else i=n*e/100000n;a=n-i}return{referrerFee:i,remainingAmount:a,referrerFeeDbps:s}}function li(n){return new Promise(e=>setTimeout(e,n))}async function mt(n,e,t=u.DEFAULT_TASK_TIMEOUT){const s=Pe(e,n.chain);return u.retry(async()=>{const a=`${He[e]}/messages/${s}?transactionHash=${n.txid}`;try{const c=(await u.axios.get(a)).data.messages[0];if(!c)return null;if(c.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return c.status==="pending_confirmations"?null:{message:Ms(u.hex.decode(c.message)),attestation:c.attestation}}catch(i){if(!i||typeof i=="object"&&(u.axios.isAxiosError(i)&&i.response?.status===404||"status"in i&&i.status===404))return null;throw i}},2e3,t,"CCTPv2:GetMessage")}async function di(n,e,t){const s=Pe(n,e),a=Pe(n,t),i=`${He[n]}/fastBurn/USDC/fees/${s}/${a}`,c=await u.axios.get(i);return BigInt(c.data.minimumFee)}async function mi(n,e){const t=u.hex.encode(e.attestation.message.nonce,!0),s=`${He[n]}/reattest/${t}`,a=await u.axios.post(s);if(a.data.error){if(a.data.error.includes("Message is already finalized"))return e.attestation;throw new Error(`Error re-attesting message: ${a.data.error}`)}const i=rn(n,e.attestation.message.sourceDomain);return u.retry(async()=>{const c=await mt({txid:e.id,chain:i},n);return!c||c.message.messageBody.expirationBlock!==0n?null:c},2e3,u.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function fi(n){const e=`${He[n]}/fastBurn/USDC/allowance`,t=await u.axios.get(e);return u.units(u.parse(t.data.allowance,6))}function jt(n,e,t){const s=u.usdcContract.get(e.network,e.chain);if(!(s&&u.isSameToken(n,u.Wormhole.tokenId(e.chain,s))))return[];const{network:a,chain:i}=t,c=u.usdcContract.get(a,i);return c?[u.Wormhole.chainAddress(i,c)]:[]}let Ue;async function Bt(n,e,t,s){const{fromChain:a,toChain:i}=n;if(!u.usdcContract.get(a.network,a.chain))throw new Error("Invalid transfer, no USDC contract on source");const l=u.usdcContract.get(i.network,i.chain);if(!l)throw new Error("Invalid transfer, no USDC contract on destination");let d;if(t.referrerFeeDbps>0n&&(d=t.referrerAddresses?.[a.network]?.[a.chain],!d))throw new Error(`Referrer address not configured for ${a.chain}`);const p=d?u.Wormhole.chainAddress(a.chain,d):void 0,{referrerFee:f,remainingAmount:g,referrerFeeDbps:y}=ui(u.units(e.normalizedParams.amount),t.referrerFeeDbps,t.referrerFeeThreshold);if(g<=0n)throw new Error("Amount after fee <= 0");const b=ys[i.network]?.[i.chain];if(!b)throw new Error("Gas limit not found");const w=await ii(a.network);if(!w[u.toChainId(a.chain)])throw new Error("Unsupported source chain");const P=w[u.toChainId(i.chain)];if(!P||!P.requestPrefixes.includes(s))throw new Error("Unsupported destination chain");const{recipient:A}=n;let j=!0;if(A&&i.chain==="Solana"){const as=u.Wormhole.parseAddress("Solana",l),is=await i.getTokenAccount(A.address,as),Rt=await i.getRpc();j=await Rt.getAccountInfo(new r.SolanaAddress(is.address).unwrap())!==null,!j&&!Ue&&(Ue=BigInt(await Rt.getMinimumBalanceForRentExemption(165)))}let te=0n;i.chain==="Solana"&&(te+=hs,!j&&Ue&&(te+=Ue),s==="ERC2"&&(te+=1200000n));const ae=[];ae.push({request:{type:"GasInstruction",gasLimit:b,msgValue:te}});const ie=BigInt(P.gasDropOffLimit),oe=e.options.nativeGas&&ie>0n?BigInt(Math.round(e.options.nativeGas*100))*ie/100n:0n;(oe>0n||!j)&&ae.push({request:{type:"GasDropOffInstruction",dropOff:oe,recipient:A?A.address.toUniversalAddress():new u.UniversalAddress(new Uint8Array(32))}});const pe=u.serialize(ln,{requests:ae}),ce=await oi(a.network,a.chain,i.chain,u.hex.encode(pe,!0));if(!ce.estimatedCost)throw new Error("No estimated cost");const Oe=u.hex.decode(ce.signedQuote),je=u.deserialize$1(yt,Oe),rs=BigInt(ce.estimatedCost);return{signedQuote:Oe,relayInstructions:pe,estimatedCost:rs,referrer:p,referrerFee:f,remainingAmount:g,referrerFeeDbps:y,expiryTime:je.quote.expiryTime,gasDropOff:oe}}async function ns(n,e,t,s){u.deserialize$1(ln,s.details.relayInstructions).requests.forEach(({request:g})=>{if(g.type==="GasDropOffInstruction"&&!g.recipient.equals(t.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const i=u.Wormhole.parseAddress(e.chain(),e.address()),c=await gi(t,n);let l;s.protocol==="CCTPExecutor"?l=await(await n.fromChain.getProtocol(s.protocol)).transfer(i,c,s.details):l=await(await n.fromChain.getProtocol(s.protocol)).transfer(i,c,s.details);const d=await u.signSendWait(n.fromChain,l,e);let p=0;return(async()=>{for(;p<20;){try{const[g]=await Ot(n.fromChain.network,d.at(-1).txid,n.fromChain.chain);if(g)break}catch{}p++,await li(2e3)}})(),{from:n.fromChain.chain,to:n.toChain.chain,state:u.TransferState.SourceInitiated,originTxs:d}}async function gi(n,e){if(n.chain!=="Solana")return n;const t=u.usdcContract.get(e.toChain.network,e.toChain.chain);if(!t)throw new Error("No USDC contract found for Solana");const s=u.Wormhole.parseAddress("Solana",t);return e.toChain.getTokenAccount(n.address,s)}function pi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends hi{static config=n}return e}class hi extends u.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPExecutorRoute",provider:"Circle CCTP"};static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return[...Object.keys(sn[e]??{})]}static async supportedDestinationTokens(e,t,s){return!Be(t.network,t.chain)||!Be(s.network,s.chain)?[]:jt(e,t,s)}getDefaultOptions(){return{nativeGas:0}}async validate(e,t){const{fromChain:s,toChain:a}=e;return!Be(s.network,s.chain)||!Be(a.network,a.chain)?{valid:!1,error:new Error("Unsupported source or destination chain"),params:t}:t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC1"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i,f=s.chain==="Polygon"?2e3*200:u.estimateFinalityTime(s.chain)+1e3,[g,y]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,g)},destinationNativeGas:u.fromBaseUnits(d,y),eta:f,expires:p,details:i}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}async initiate(e,t,s,a){if(!s.details)throw new Error("Missing quote details");return await ns(e,t,a,{protocol:"CCTPExecutor",details:s.details})}async*track(e,t){if(u.isCompleted(e)||u.isFailed(e))return e;let s=t||3600*1e3;for(;s>0;){const a=Date.now();if(u.isSourceInitiated(e)||u.isSourceFinalized(e)||u.isAttested(e))try{const[i]=await Ot(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!i)throw new Error("No transaction status found");const c=i?.status;if((c===F.Failed||c===F.Underpaid||c===F.Unsupported||c===F.Aborted)&&(e={...e,state:u.TransferState.Failed,error:new u.RelayFailedError(`Relay failed with status: ${c}`)}),c===F.Submitted&&(e={...e,state:u.TransferState.DestinationFinalized,attestation:{id:i.id,attestation:{}}}),yield e,u.isCompleted(e)||u.isFailed(e))return e}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),s-=Date.now()-a}return e}}class ss extends u.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return Object.keys(qe[e]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(e,t,s,a){if(!s.details)throw new Error("Missing quote details");return await ns(e,t,a,{protocol:"CCTPv2Executor",details:s.details})}async*track(e,t){if(u.isCompleted(e))return e;let s=t||3600*1e3;for(;s>0;){const a=Date.now();if(u.isSourceInitiated(e)||u.isSourceFinalized(e)||u.isAttested(e)||u.isFailed(e))try{const i=e.originTxs.at(-1).txid;if(u.isSourceInitiated(e)||u.isSourceFinalized(e)){const c=await mt({chain:e.from,txid:i},this.wh.network);c&&(e={...e,state:u.TransferState.Attested,attestation:{id:i,attestation:c}}),yield e}if(u.isAttested(e)){const[c]=await Ot(this.wh.network,i,e.from);if(!c)throw new Error("No transaction status found");const l=c?.status;l===F.Submitted?e={...e,state:u.TransferState.DestinationFinalized}:(l===F.Failed||l===F.Underpaid||l===F.Unsupported||l===F.Aborted)&&(e={...e,state:u.TransferState.Failed,error:new u.RelayFailedError(`Relay failed with status: ${l}`)})}if(u.isFailed(e)){if(!e.attestation)throw new Error("Receipt is missing attestation");const c=e.attestation;await(await this.wh.getChain(e.to).getProtocol("CCTPv2Executor")).isTransferCompleted(c.attestation.message)&&(e={...e,state:u.TransferState.DestinationFinalized,attestation:c})}if(yield e,u.isCompleted(e))return e}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),s-=Date.now()-a}return e}async complete(e,t){if(!u.isAttested(t)&&!u.isFailed(t))throw new Error("Transfer is not attested");if(!t.attestation)throw new Error("No attestation found");const s=this.wh.getChain(t.to),a=await s.getProtocol("CCTPv2Executor");let{attestation:i,message:c}=t.attestation.attestation;const{expirationBlock:l}=c.messageBody,d=await a.getCurrentBlock();if(l!==0n&&l<d){const y=await mi(s.network,t.attestation);if(!y)throw new Error("Failed to reattest message");i=y.attestation,c=y.message}const p=u.Wormhole.parseAddress(e.chain(),e.address()),f=a.redeem(p,c,i),g=await u.signSendWait(this.wh.getChain(t.to),f,e);return{...t,state:u.TransferState.DestinationInitiated,attestation:t.attestation,destinationTxs:g}}async resume(e){const t=await mt(e,this.wh.network);if(!t)throw new Error("No attestation found");const{message:s}=t,a=rn(this.wh.network,s.destinationDomain);return await(await this.wh.getChain(a).getProtocol("CCTPv2Executor")).isTransferCompleted(s)?{from:e.chain,to:a,state:u.TransferState.DestinationFinalized,originTxs:[e],attestation:{id:e.txid,attestation:t}}:{from:e.chain,to:a,state:u.TransferState.Attested,originTxs:[e],attestation:{id:e.txid,attestation:t}}}}function yi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends Dt{static config=n}return e}class Dt extends ss{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return bs(e.network,e.chain)&&rt(t.network,t.chain)}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?jt(e,t,s):[]}async validate(e,t){return Dt.isPathSupported(e.fromChain,e.toChain)?t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}:{valid:!1,error:new Error("Can only transfer from a Circle V2 fast chain to a Circle V2 chain"),params:t}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i;if(await fi(s.network)<=c)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const g=await di(s.network,s.chain,a.chain),y=(c*g+10000n-1n)/10000n,b=c-y;if(b<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const w=an[s.network]?.[s.chain],[E,P]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(b,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,E)},destinationNativeGas:u.fromBaseUnits(d,P),eta:w,expires:p,details:{...i,minFinalityThreshold:Ne.CONFIRMED,fastTransferMaxFee:y}}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}}function bi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends Ut{static config=n}return e}class Ut extends ss{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return rt(e.network,e.chain)&&rt(t.network,t.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?jt(e,t,s):[]}async validate(e,t){return Ut.isPathSupported(e.fromChain,e.toChain)?t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}:{valid:!1,error:new Error("Can only transfer between Circle V2 chains"),params:t}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i,f=s.chain==="Polygon"?2e3*200:u.estimateFinalityTime(s.chain)+1e3,[g,y]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,g)},destinationNativeGas:u.fromBaseUnits(d,y),eta:f,expires:p,details:{...i,minFinalityThreshold:Ne.FINALIZED,fastTransferMaxFee:0n}}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}}const{executorTokenBridgeRoute:wi}=ms.routes;exports.cctpExecutorRoute=pi;exports.cctpV2FastExecutorRoute=yi;exports.cctpV2StandardExecutorRoute=bi;exports.executorTokenBridgeRoute=wi;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const u=require("./platform-DCcL7jHP.js"),Ft=require("./chunk-KJH4KKG6-CJx-rDa6.js"),os=require("./platform-Csj1Outc.js"),st=require("./address-DqbIfKOu.js"),cs=require("./unsignedTransaction-BXJ9Cpni.js"),r=require("./unsignedTransaction-qRBv5Cnd.js"),us=require("./index-C85u3Gj5.js"),ls=require("./index-wadjmD_G.js"),be=require("./index-lAqXlt-a.js"),Ce=require("./web3-x1WCGDiy.js"),ds=require("./account-K005OXgL.js"),ms=require("./index-DJ2w1fz1.js"),fs={binary:"uint",size:1,custom:{to:n=>n>0,from:n=>n?1:0}},gs=Object.freeze(Object.defineProperty({__proto__:null,amountItem:u.amountItem,boolItem:fs,chainItem:u.chainItem,circleDomainItem:u.circleDomainItem,circleNonceItem:u.circleNonceItem,dateConversion:u.dateConversion,fixedChainItem:u.fixedChainItem,fixedLengthStringItem:u.fixedLengthStringItem,guardianSetItem:u.guardianSetItem,payloadIdItem:u.payloadIdItem,sequenceItem:u.sequenceItem,signatureItem:u.signatureItem,stringConversion:u.stringConversion,universalAddressItem:u.universalAddressItem},Symbol.toStringTag,{value:"Module"})),ft={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},gt={Testnet:{Aptos:"0x14a12d1fd6ef371b70c2113155534ec152ec7f779e281b54866c796c9a4a58d3",Avalanche:"0x2cfEC91B50f657Cc86Ec693542527ac3e03bF742",BaseSepolia:"0x4983C6bD3bB7DA9EECe71cfa7AE4C67CAbf362F0",Sepolia:"0x0F78904c750801391EbBf308181e9d6fc892B0f3",Solana:"CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs"},Mainnet:{Aptos:"0x9f5ad7d5c2d067ca4abb6d8d6aba44c15596b71a1def8eb4596089b527bb2eb1",Arbitrum:"0x55Dd4466BFec29527C54A72fd306efb54e5F7027",Avalanche:"0xd331819478b74d8a7B8EA631118B4a4e50F6EbD1",Base:"0x08FEB1838C3d7F8509DA1EBb9a11a94c1f006cb2",Ethereum:"0xeEFb36c4458dA7798742cf038C5c27E07aB9c51E",Optimism:"0xBC6f9d1CBa49DB365728478cefa02F6743617637",Polygon:"0x007995f2AEcfBC745f20a7AE8D3a02c0EbF46264",Unichain:"0xA7aBDb8f2108901c586543BD5e10E4fA263F4A47",Solana:"CXGRA5SCc8jxDbaQPZrmmZNu2JV34DP7gFW4m31uC1zs"}},ps={Testnet:{Avalanche:"0x4058F0C3924eDaB19c15597C438968ed49C1a213",BaseSepolia:"0xC400FcC0e92d3406747FBb6f513D3aa8B038fcE9",Sepolia:"0x0F18DD26D0B41fb1eaa9cF34D1Ec6022aA69a8e2"},Mainnet:{Arbitrum:"0x8442d68524217601ed126f6859694E4B0C7c66A1",Avalanche:"0x3952914628650Ca510404872D84DfF10A844C5B5",Base:"0xbd8d42f40a11b37bD1b3770D754f9629F7cd5679",Ethereum:"0x2cCf230467FE7387674BAa657747F0B5485c7fEC",HyperEVM:"0xACD054f83c0b852d02503191e2c26527A7E72B1f",Linea:"0xc48c126468BE919068dE1983F00F65af759a4E87",Optimism:"0xd0a8940b2e743e33b682daec4d52b46713606c9d",Polygon:"0xc8a8e6d760dcbd5d6746e2f66cd2ffa722dd1e59",Unichain:"0xD5D5D640D8b758672Cc7A078734175c4433866d5",Seievm:"0xf4FefFc03EEFB06B009bFB168b60B30edf7abc12",Sonic:"0xc39BF082ec91D9bC385F956D24a8D66C0c26223d",Worldchain:"0x789f2b91f7B35D5B890983328340c4600339B354",Plume:"0x486228859880ec6c05175035bEe2e5383D23B0fE",Ink:"0xD71898Ec48D36eba65eeb104AF87b00C24A8F201",Monad:"0xA4d775410FB35d8cE49Ad98d3f483A55e532de73"}},$t={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},tn={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},hs=5001n,ys={Testnet:{Aptos:5000n,ArbitrumSepolia:800000n,Avalanche:200000n,BaseSepolia:200000n,Linea:250000n,Sepolia:200000n,Solana:250000n,Sonic:250000n,Sui:8000000n},Mainnet:{Aptos:5000n,Arbitrum:800000n,Avalanche:250000n,Base:250000n,Ethereum:250000n,HyperEVM:250000n,Linea:250000n,Optimism:250000n,Polygon:250000n,Unichain:250000n,Seievm:250000n,Solana:250000n,Sonic:250000n,Sui:8000000n,Worldchain:250000n,Plume:250000n,Ink:250000n,Monad:500000n}},nn={Testnet:{ArbitrumSepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Avalanche:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},BaseSepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Linea:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Sepolia:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"},Solana:{tokenMessengerV2:"CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe",messageTransmitterV2:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},Sonic:{tokenMessengerV2:"0x8FE6B999Dc680CcFDD5Bf7EB0974218be2542DAA",messageTransmitterV2:"0xE737e5cEBEEBa77EFE34D4aa090756590b1CE275"}},Mainnet:{Arbitrum:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Avalanche:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Base:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Ethereum:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},HyperEVM:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Linea:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Optimism:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Polygon:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Solana:{tokenMessengerV2:"CCTPV2vPZJS2u2BBsUoscuikbYjnpFmbFsvVuJdgUMQe",messageTransmitterV2:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},Unichain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Seievm:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Sonic:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Worldchain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Plume:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Ink:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Monad:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"}}},sn={Testnet:{Sepolia:0,Avalanche:1,OptimismSepolia:2,ArbitrumSepolia:3,Solana:5,BaseSepolia:6,Polygon:7,Sui:8,Aptos:9,Unichain:10},Mainnet:{Ethereum:0,Avalanche:1,Optimism:2,Arbitrum:3,Solana:5,Base:6,Polygon:7,Sui:8,Aptos:9,Unichain:10}},Be=(n,e)=>sn[n]?.[e]!==void 0,qe={Testnet:{Sepolia:0,Avalanche:1,ArbitrumSepolia:3,Solana:5,BaseSepolia:6,Linea:11,Sonic:13},Mainnet:{Ethereum:0,Avalanche:1,Optimism:2,Arbitrum:3,Solana:5,Base:6,Polygon:7,Unichain:10,Linea:11,Sonic:13,Worldchain:14,Seievm:16,HyperEVM:19,Ink:21,Plume:22,Monad:15}},Vt={Testnet:{Solana:"8ZHaV5NQ218fLR85VtC9oK3Axyvj8uxGpnKdaswxsxe4"},Mainnet:{Solana:"Ec9XVcN6YqFhqNFTYQD3985jmGFEDa7tHEQK8bbQi5xD"}},rt=(n,e)=>qe[n]?.[e]!==void 0,Pe=(n,e)=>{const t=qe[n]?.[e];if(t===void 0)throw new Error(`CircleV2 domain not found for network ${n} and chain ${e}`);return t},rn=(n,e)=>{const t=Object.entries(qe[n]??{}).find(([,s])=>s===e)?.[0];if(t===void 0)throw new Error(`CircleV2 chain not found for network ${n} and domain ${e}`);return t},He={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var Ne;(function(n){n[n.CONFIRMED=1e3]="CONFIRMED",n[n.FINALIZED=2e3]="FINALIZED"})(Ne||(Ne={}));const an={Testnet:{ArbitrumSepolia:8e3,BaseSepolia:8e3,Sepolia:2e4,Linea:8e3},Mainnet:{Arbitrum:8e3,Base:8e3,Ethereum:2e4,Linea:8e3,Optimism:8e3,Polygon:8e3,Unichain:8e3,Seievm:8e3,Worldchain:8e3,Plume:8e3,Ink:8e3}},bs=(n,e)=>an[n]?.[e]!==void 0;class pt{network;chain;provider;contracts;usdcId;shimContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=u.usdcContract.get(this.network,this.chain);if(!i)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=i;const c=gt[e]?.[t];if(!c)throw new Error(`Shim contract for ${t} not found`);this.shimContract=c}static async fromRpc(e,t){const[s,a]=await os.AptosPlatform.chainFromRpc(e),i=t[a];if(!i)throw new Error(`No config found for ${a}`);if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new pt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new st.AptosAddress(e).unwrap(),i=Ft.l.from(t.address.toUniversalAddress().toUint8Array()),c=Ft.l.from(this.usdcId),l=s.remainingAmount+s.referrerFee,d=u.circleChainId.get(this.network,t.chain),p=a,f=new st.AptosAddress(s.referrer?.address?.toString()??a).unwrap(),g=[l,d,i.toString(),c.toString(),s.estimatedCost,u.toChainId(t.chain),p,s.signedQuote,s.relayInstructions,s.referrerFeeDbps,f],y={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:g};yield this.createUnsignedTx(y,"AtposCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new cs.AptosUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(st._platform,"CCTPExecutor",pt);class ht{network;chain;provider;contracts;chainId;shimContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=u.networkChainToNativeChainId.get(e,t);const i=gt[e]?.[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i}static async fromRpc(e,t){const[s,a]=await u.EvmPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new ht(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new u.EvmAddress(e).toString(),i=t.address.toUniversalAddress().toUint8Array(),c=s.remainingAmount+s.referrerFee,l=u.usdcContract.get(this.network,this.chain),d=u.EvmPlatform.getTokenImplementation(this.provider,l);if(await d.allowance(a,this.shimContract)<c){const b=await d.approve.populateTransaction(this.shimContract,c);yield this.createUnsignedTx(u.addFrom(b,a),"ERC20.approve of EvmCCTPExecutor",!1)}const f=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],y=await new u.Contract(this.shimContract,f,this.provider).getFunction("depositForBurn").populateTransaction(c,u.toChainId(t.chain),u.circleChainId.get(this.network,t.chain),i,l,{refundAddress:a,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??a});y.value=s.estimatedCost,yield this.createUnsignedTx(u.addFrom(y,a),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(e,t,s=!1){return new u.EvmUnsignedTransaction(u.addChainId(e,this.chainId),this.network,this.chain,t,s)}}const{amountItem:De,circleDomainItem:_t,universalAddressItem:we}=gs,on={binary:"uint",size:4,custom:1,omit:!1},ws={binary:"bytes",size:32},Nt={binary:"uint",size:4},Ss=[{name:"version",...on},{name:"burnToken",...we},{name:"mintRecipient",...we},{name:"amount",...De},{name:"messageSender",...we},{name:"maxFee",...De},{name:"feeExecuted",...De},{name:"expirationBlock",...De},{name:"hookData",binary:"bytes"}],cn=[{name:"version",...on},{name:"sourceDomain",..._t},{name:"destinationDomain",..._t},{name:"nonce",...ws},{name:"sender",...we},{name:"recipient",...we},{name:"destinationCaller",...we},{name:"minFinalityThreshold",...Nt},{name:"finalityThresholdExecuted",...Nt},{name:"messageBody",binary:"bytes",layout:Ss}],Ms=n=>u.deserialize$1(cn,n),un=n=>u.serialize(cn,n),vs=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],ks=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...u.universalAddressItem}],Cs=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],vs],[[2,"GasDropOffInstruction"],ks]]}],ln=[{name:"requests",binary:"array",layout:Cs}],As={to:n=>new Date(Number(n*1000n)),from:n=>BigInt(n.getTime())/1000n},Ts=[{name:"quote",binary:"switch",idSize:4,idTag:"prefix",layouts:[[[1162948657,"EQ01"],[{name:"quoterAddress",binary:"bytes",size:20},{name:"payeeAddress",binary:"bytes",size:32},{name:"srcChain",binary:"uint",size:2},{name:"dstChain",binary:"uint",size:2},{name:"expiryTime",binary:"uint",size:8,custom:As},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],yt=[...Ts,{name:"signature",binary:"bytes",size:65}];class bt{network;chain;provider;contracts;chainId;shimContract;messageTransmitter;usdcContract;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=u.networkChainToNativeChainId.get(e,t);const i=ps[e]?.[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i;const c=nn[e]?.[t]?.messageTransmitterV2;if(!c)throw new Error(`MessageTransmitter contract for ${t} not found`);this.messageTransmitter=c;const l=u.usdcContract.get(e,t);if(!l)throw new Error(`USDC contract for ${t} not found`);this.usdcContract=l}static async fromRpc(e,t){const[s,a]=await u.EvmPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new bt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new u.EvmAddress(e).toString(),i=t.address.toUniversalAddress().toUint8Array(),c=s.remainingAmount+s.referrerFee,l=u.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await l.allowance(a,this.shimContract)<c){const w=await l.approve.populateTransaction(this.shimContract,c);yield this.createUnsignedTx(u.addFrom(w,a),"ERC20.approve of EvmCCTPv2Executor",!1)}const p=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, bytes32 destinationCaller, uint256 maxFee, uint32 minFinalityThreshold, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],f=new Uint8Array(32),g=new u.Contract(this.shimContract,p,this.provider),y=Pe(this.network,t.chain),b=await g.getFunction("depositForBurn").populateTransaction(c,u.toChainId(t.chain),y,i,this.usdcContract,f,s.fastTransferMaxFee,s.minFinalityThreshold,{refundAddress:a,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??a});b.value=s.estimatedCost,yield this.createUnsignedTx(u.addFrom(b,a),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(e){return await new u.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(e.nonce)===1n}async*redeem(e,t,s){const a=new u.EvmAddress(e).toString(),c=await new u.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(un(t),u.hex.decode(s));yield this.createUnsignedTx(u.addFrom(c,a),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(e,t,s=!1){return new u.EvmUnsignedTransaction(u.addChainId(e,this.chainId),this.network,this.chain,t,s)}}u.registerProtocol(u._platform,"CCTPExecutor",ht);u.registerProtocol(u._platform,"CCTPv2Executor",bt);const Je=n=>u.base58.encode(n),at=n=>u.base58.decode(n);function Q(n){return Uint8Array.from(atob(n),e=>e.charCodeAt(0))}const Xe=8192;function $(n){if(n.length<Xe)return btoa(String.fromCharCode(...n));let e="";for(var t=0;t<n.length;t+=Xe){const s=n.slice(t,t+Xe);e+=String.fromCharCode(...s)}return btoa(e)}function dn(n){const e=n.startsWith("0x")?n.slice(2):n,t=e.length%2===0?e:`0${e}`,s=t.match(/[0-9a-fA-F]{2}/g)?.map(a=>parseInt(a,16))??[];if(s.length!==t.length/2)throw new Error(`Invalid hex string ${n}`);return Uint8Array.from(s)}function ze(n){return n.reduce((e,t)=>e+t.toString(16).padStart(2,"0"),"")}function Es(n,e){return Array.from({length:Math.ceil(n.length/e)},(t,s)=>n.slice(s*e,(s+1)*e))}function Ke(n){let e=BigInt(n);const t=[];let s=0;if(e===0n)return[0];for(;e>0;)t[s]=Number(e&0x7fn),e>>=7n,e>0n&&(t[s]|=128),s+=1;return t}function Is(n){let e=0n,t=0n,s=0;for(;;){if(s>=n.length)throw new Error("ULEB decode error: buffer overflow");const a=n[s];if(s+=1,e+=BigInt(a&127)<<t,(a&128)===0)break;t+=7n}if(e>BigInt(Number.MAX_SAFE_INTEGER))throw new Error("ULEB decode error: value exceeds MAX_SAFE_INTEGER");return{value:Number(e),length:s}}class Ps{constructor(e){this.bytePosition=0,this.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength)}shift(e){return this.bytePosition+=e,this}read8(){const e=this.dataView.getUint8(this.bytePosition);return this.shift(1),e}read16(){const e=this.dataView.getUint16(this.bytePosition,!0);return this.shift(2),e}read32(){const e=this.dataView.getUint32(this.bytePosition,!0);return this.shift(4),e}read64(){const e=this.read32(),s=this.read32().toString(16)+e.toString(16).padStart(8,"0");return BigInt("0x"+s).toString(10)}read128(){const e=BigInt(this.read64()),s=BigInt(this.read64()).toString(16)+e.toString(16).padStart(16,"0");return BigInt("0x"+s).toString(10)}read256(){const e=BigInt(this.read128()),s=BigInt(this.read128()).toString(16)+e.toString(16).padStart(32,"0");return BigInt("0x"+s).toString(10)}readBytes(e){const t=this.bytePosition+this.dataView.byteOffset,s=new Uint8Array(this.dataView.buffer,t,e);return this.shift(e),s}readULEB(){const e=this.bytePosition+this.dataView.byteOffset,t=new Uint8Array(this.dataView.buffer,e),{value:s,length:a}=Is(t);return this.shift(a),s}readVec(e){const t=this.readULEB(),s=[];for(let a=0;a<t;a++)s.push(e(this,a,t));return s}}function xs(n,e){switch(e){case"base58":return Je(n);case"base64":return $(n);case"hex":return ze(n);default:throw new Error("Unsupported encoding, supported values are: base64, hex")}}function Os(n,e=["<",">"]){const[t,s]=e,a=[];let i="",c=0;for(let l=0;l<n.length;l++){const d=n[l];if(d===t&&c++,d===s&&c--,c===0&&d===","){a.push(i.trim()),i="";continue}i+=d}return a.push(i.trim()),a}class js{constructor({initialSize:e=1024,maxSize:t=1/0,allocateSize:s=1024}={}){this.bytePosition=0,this.size=e,this.maxSize=t,this.allocateSize=s,this.dataView=new DataView(new ArrayBuffer(e))}ensureSizeOrGrow(e){const t=this.bytePosition+e;if(t>this.size){const s=Math.min(this.maxSize,Math.max(this.size+t,this.size+this.allocateSize));if(t>s)throw new Error(`Attempting to serialize to BCS, but buffer does not have enough size. Allocated size: ${this.size}, Max size: ${this.maxSize}, Required size: ${t}`);this.size=s;const a=new ArrayBuffer(this.size);new Uint8Array(a).set(new Uint8Array(this.dataView.buffer)),this.dataView=new DataView(a)}}shift(e){return this.bytePosition+=e,this}write8(e){return this.ensureSizeOrGrow(1),this.dataView.setUint8(this.bytePosition,Number(e)),this.shift(1)}writeBytes(e){this.ensureSizeOrGrow(e.length);for(let t=0;t<e.length;t++)this.dataView.setUint8(this.bytePosition+t,e[t]);return this.shift(e.length)}write16(e){return this.ensureSizeOrGrow(2),this.dataView.setUint16(this.bytePosition,Number(e),!0),this.shift(2)}write32(e){return this.ensureSizeOrGrow(4),this.dataView.setUint32(this.bytePosition,Number(e),!0),this.shift(4)}write64(e){return Ze(BigInt(e),8).forEach(t=>this.write8(t)),this}write128(e){return Ze(BigInt(e),16).forEach(t=>this.write8(t)),this}write256(e){return Ze(BigInt(e),32).forEach(t=>this.write8(t)),this}writeULEB(e){return Ke(e).forEach(t=>this.write8(t)),this}writeVec(e,t){return this.writeULEB(e.length),Array.from(e).forEach((s,a)=>t(this,s,a,e.length)),this}*[Symbol.iterator](){for(let e=0;e<this.bytePosition;e++)yield this.dataView.getUint8(e);return this.toBytes()}toBytes(){return new Uint8Array(this.dataView.buffer.slice(0,this.bytePosition))}toString(e){return xs(this.toBytes(),e)}}function Ze(n,e){const t=new Uint8Array(e);let s=0;for(;n>0;)t[s]=Number(n%BigInt(256)),n=n/BigInt(256),s+=1;return t}var mn=n=>{throw TypeError(n)},fn=(n,e,t)=>e.has(n)||mn("Cannot "+t),_=(n,e,t)=>(fn(n,e,"read from private field"),t?t.call(n):e.get(n)),Le=(n,e,t)=>e.has(n)?mn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),Ge=(n,e,t,s)=>(fn(n,e,"write to private field"),e.set(n,t),t),he,Ae,Re,ne;const Bs=class gn{constructor(e){Le(this,he),Le(this,Ae),this.name=e.name,this.read=e.read,this.serializedSize=e.serializedSize??(()=>null),Ge(this,he,e.write),Ge(this,Ae,e.serialize??((t,s)=>{const a=new js({initialSize:this.serializedSize(t)??void 0,...s});return _(this,he).call(this,t,a),a.toBytes()})),this.validate=e.validate??(()=>{})}write(e,t){this.validate(e),_(this,he).call(this,e,t)}serialize(e,t){return this.validate(e),new Ds(this,_(this,Ae).call(this,e,t))}parse(e){const t=new Ps(e);return this.read(t)}fromHex(e){return this.parse(dn(e))}fromBase58(e){return this.parse(at(e))}fromBase64(e){return this.parse(Q(e))}transform({name:e,input:t,output:s,validate:a}){return new gn({name:e??this.name,read:i=>s?s(this.read(i)):this.read(i),write:(i,c)=>_(this,he).call(this,t?t(i):i,c),serializedSize:i=>this.serializedSize(t?t(i):i),serialize:(i,c)=>_(this,Ae).call(this,t?t(i):i,c),validate:i=>{a?.(i),this.validate(t?t(i):i)}})}};he=new WeakMap;Ae=new WeakMap;let H=Bs;const pn=Symbol.for("@mysten/serialized-bcs");function wt(n){return!!n&&typeof n=="object"&&n[pn]===!0}class Ds{constructor(e,t){Le(this,Re),Le(this,ne),Ge(this,Re,e),Ge(this,ne,t)}get[pn](){return!0}toBytes(){return _(this,ne)}toHex(){return ze(_(this,ne))}toBase64(){return $(_(this,ne))}toBase58(){return Je(_(this,ne))}parse(){return _(this,Re).parse(_(this,ne))}}Re=new WeakMap;ne=new WeakMap;function We({size:n,...e}){return new H({...e,serializedSize:()=>n})}function Ye({readMethod:n,writeMethod:e,...t}){return We({...t,read:s=>s[n](),write:(s,a)=>a[e](s),validate:s=>{if(s<0||s>t.maxValue)throw new TypeError(`Invalid ${t.name} value: ${s}. Expected value in range 0-${t.maxValue}`);t.validate?.(s)}})}function et({readMethod:n,writeMethod:e,...t}){return We({...t,read:s=>s[n](),write:(s,a)=>a[e](BigInt(s)),validate:s=>{const a=BigInt(s);if(a<0||a>t.maxValue)throw new TypeError(`Invalid ${t.name} value: ${a}. Expected value in range 0-${t.maxValue}`);t.validate?.(a)}})}function Us({serialize:n,...e}){const t=new H({...e,serialize:n,write:(s,a)=>{for(const i of t.serialize(s).toBytes())a.write8(i)}});return t}function Rs({toBytes:n,fromBytes:e,...t}){return new H({...t,read:s=>{const a=s.readULEB(),i=s.readBytes(a);return e(i)},write:(s,a)=>{const i=n(s);a.writeULEB(i.length);for(let c=0;c<i.length;c++)a.write8(i[c])},serialize:s=>{const a=n(s),i=Ke(a.length),c=new Uint8Array(i.length+a.length);return c.set(i,0),c.set(a,i.length),c},validate:s=>{if(typeof s!="string")throw new TypeError(`Invalid ${t.name} value: ${s}. Expected string`);t.validate?.(s)}})}function Fs(n){let e=null;function t(){return e||(e=n()),e}return new H({name:"lazy",read:s=>t().read(s),serializedSize:s=>t().serializedSize(s),write:(s,a)=>t().write(s,a),serialize:(s,a)=>t().serialize(s,a).toBytes()})}class $s extends H{constructor({name:e,fields:t,...s}){const a=Object.entries(t);super({name:e,serializedSize:i=>{let c=0;for(const[l,d]of a){const p=d.serializedSize(i[l]);if(p==null)return null;c+=p}return c},read:i=>{const c={};for(const[l,d]of a)c[l]=d.read(i);return c},write:(i,c)=>{for(const[l,d]of a)d.write(i[l],c)},...s,validate:i=>{if(s?.validate?.(i),typeof i!="object"||i==null)throw new TypeError(`Expected object, found ${typeof i}`)}})}}class Vs extends H{constructor({fields:e,...t}){const s=Object.entries(e);super({read:a=>{const i=a.readULEB(),c=s[i];if(!c)throw new TypeError(`Unknown value ${i} for enum ${t.name}`);const[l,d]=c;return{[l]:d?.read(a)??!0,$kind:l}},write:(a,i)=>{const[c,l]=Object.entries(a).filter(([d])=>Object.hasOwn(e,d))[0];for(let d=0;d<s.length;d++){const[p,f]=s[d];if(p===c){i.writeULEB(d),f?.write(l,i);return}}},...t,validate:a=>{if(t?.validate?.(a),typeof a!="object"||a==null)throw new TypeError(`Expected object, found ${typeof a}`);const i=Object.keys(a).filter(l=>a[l]!==void 0&&Object.hasOwn(e,l));if(i.length!==1)throw new TypeError(`Expected object with one key, but found ${i.length} for type ${t.name}}`);const[c]=i;if(!Object.hasOwn(e,c))throw new TypeError(`Invalid enum variant ${c}`)}})}}class _s extends H{constructor({fields:e,name:t,...s}){super({name:t??`(${e.map(a=>a.name).join(", ")})`,serializedSize:a=>{let i=0;for(let c=0;c<e.length;c++){const l=e[c].serializedSize(a[c]);if(l==null)return null;i+=l}return i},read:a=>{const i=[];for(const c of e)i.push(c.read(a));return i},write:(a,i)=>{for(let c=0;c<e.length;c++)e[c].write(a[c],i)},...s,validate:a=>{if(s?.validate?.(a),!Array.isArray(a))throw new TypeError(`Expected array, found ${typeof a}`);if(a.length!==e.length)throw new TypeError(`Expected array of length ${e.length}, found ${a.length}`)}})}}function Ns(n,e,t){return new H({read:s=>{const a=new Array(n);for(let i=0;i<n;i++)a[i]=e.read(s);return a},write:(s,a)=>{for(const i of s)e.write(i,a)},...t,name:t?.name??`${e.name}[${n}]`,validate:s=>{if(t?.validate?.(s),!s||typeof s!="object"||!("length"in s))throw new TypeError(`Expected array, found ${typeof s}`);if(s.length!==n)throw new TypeError(`Expected array of length ${n}, found ${s.length}`)}})}function zs(n){return o.enum(`Option<${n.name}>`,{None:null,Some:n}).transform({input:e=>e==null?{None:!0}:{Some:e},output:e=>e.$kind==="Some"?e.Some:null})}function Ks(n,e){return new H({read:t=>{const s=t.readULEB(),a=new Array(s);for(let i=0;i<s;i++)a[i]=n.read(t);return a},write:(t,s)=>{s.writeULEB(t.length);for(const a of t)n.write(a,s)},...e,name:e?.name??`vector<${n.name}>`,validate:t=>{if(e?.validate?.(t),!t||typeof t!="object"||!("length"in t))throw new TypeError(`Expected array, found ${typeof t}`)}})}function Ls(n,e){return o.vector(o.tuple([n,e])).transform({name:`Map<${n.name}, ${e.name}>`,input:t=>[...t.entries()],output:t=>{const s=new Map;for(const[a,i]of t)s.set(a,i);return s}})}const o={u8(n){return Ye({readMethod:"read8",writeMethod:"write8",size:1,maxValue:2**8-1,...n,name:n?.name??"u8"})},u16(n){return Ye({readMethod:"read16",writeMethod:"write16",size:2,maxValue:2**16-1,...n,name:n?.name??"u16"})},u32(n){return Ye({readMethod:"read32",writeMethod:"write32",size:4,maxValue:2**32-1,...n,name:n?.name??"u32"})},u64(n){return et({readMethod:"read64",writeMethod:"write64",size:8,maxValue:2n**64n-1n,...n,name:n?.name??"u64"})},u128(n){return et({readMethod:"read128",writeMethod:"write128",size:16,maxValue:2n**128n-1n,...n,name:n?.name??"u128"})},u256(n){return et({readMethod:"read256",writeMethod:"write256",size:32,maxValue:2n**256n-1n,...n,name:n?.name??"u256"})},bool(n){return We({size:1,read:e=>e.read8()===1,write:(e,t)=>t.write8(e?1:0),...n,name:n?.name??"bool",validate:e=>{if(n?.validate?.(e),typeof e!="boolean")throw new TypeError(`Expected boolean, found ${typeof e}`)}})},uleb128(n){return Us({read:e=>e.readULEB(),serialize:e=>Uint8Array.from(Ke(e)),...n,name:n?.name??"uleb128"})},bytes(n,e){return We({size:n,read:t=>t.readBytes(n),write:(t,s)=>{s.writeBytes(new Uint8Array(t))},...e,name:e?.name??`bytes[${n}]`,validate:t=>{if(e?.validate?.(t),!t||typeof t!="object"||!("length"in t))throw new TypeError(`Expected array, found ${typeof t}`);if(t.length!==n)throw new TypeError(`Expected array of length ${n}, found ${t.length}`)}})},byteVector(n){return new H({read:e=>{const t=e.readULEB();return e.readBytes(t)},write:(e,t)=>{const s=new Uint8Array(e);t.writeULEB(s.length),t.writeBytes(s)},...n,name:n?.name??"vector<u8>",serializedSize:e=>{const t="length"in e?e.length:null;return t==null?null:Ke(t).length+t},validate:e=>{if(n?.validate?.(e),!e||typeof e!="object"||!("length"in e))throw new TypeError(`Expected array, found ${typeof e}`)}})},string(n){return Rs({toBytes:e=>new TextEncoder().encode(e),fromBytes:e=>new TextDecoder().decode(e),...n,name:n?.name??"string"})},fixedArray:Ns,option:zs,vector:Ks,tuple(n,e){return new _s({fields:n,...e})},struct(n,e,t){return new $s({name:n,fields:e,...t})},enum(n,e,t){return new Vs({name:n,fields:e,...t})},map:Ls,lazy(n){return Fs(n)}},Gs=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,Ws=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i,Qs=235;function qs(n){return n.length>Qs?!1:n.includes("@")?Gs.test(n):Ws.test(n)}const Hs=/^([a-z0-9]+(?:-[a-z0-9]+)*)$/,Js=/^\d+$/,Xs=64,hn="/",yn=n=>{const e=n.split(hn);if(e.length<2||e.length>3)return!1;const[t,s,a]=e;return a!==void 0&&!Js.test(a)||!qs(t)?!1:Hs.test(s)&&s.length<Xs},Zs=n=>{const e=n.split(/::|<|>|,/);for(const t of e)if(t.includes(hn)&&!yn(t))return!1;return!0},St=32;function bn(n){return Ys(n)&&er(n)===St}function v(n,e=!1){let t=n.toLowerCase();return!e&&t.startsWith("0x")&&(t=t.slice(2)),`0x${t.padStart(St*2,"0")}`}function Se(n,e=!1){return v(n,e)}function Ys(n){return/^(0x|0X)?[a-fA-F0-9]+$/.test(n)&&n.length%2===0}function er(n){return/^(0x|0X)/.test(n)?(n.length-2)/2:n.length/2}BigInt(1e9);const tr="0x1",wn="0x2",nr=Se("0x6"),sr=`${wn}::sui::SUI`;Se("0x5");Se("0x8");const rr=/^vector<(.+)>$/,ar=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/;class W{static parseFromStr(e,t=!1){if(e==="address")return{address:null};if(e==="bool")return{bool:null};if(e==="u8")return{u8:null};if(e==="u16")return{u16:null};if(e==="u32")return{u32:null};if(e==="u64")return{u64:null};if(e==="u128")return{u128:null};if(e==="u256")return{u256:null};if(e==="signer")return{signer:null};const s=e.match(rr);if(s)return{vector:W.parseFromStr(s[1],t)};const a=e.match(ar);if(a)return{struct:{address:t?v(a[1]):a[1],module:a[2],name:a[3],typeParams:a[5]===void 0?[]:W.parseStructTypeArgs(a[5],t)}};throw new Error(`Encountered unexpected token when parsing type args for ${e}`)}static parseStructTypeArgs(e,t=!1){return Os(e).map(s=>W.parseFromStr(s,t))}static tagToString(e){if("bool"in e)return"bool";if("u8"in e)return"u8";if("u16"in e)return"u16";if("u32"in e)return"u32";if("u64"in e)return"u64";if("u128"in e)return"u128";if("u256"in e)return"u256";if("address"in e)return"address";if("signer"in e)return"signer";if("vector"in e)return`vector<${W.tagToString(e.vector)}>`;if("struct"in e){const t=e.struct,s=t.typeParams.map(W.tagToString).join(", ");return`${t.address}::${t.module}::${t.name}${s?`<${s}>`:""}`}throw new Error("Invalid TypeTag")}}function ir(n){return o.u64({name:"unsafe_u64",...n}).transform({input:e=>e,output:e=>Number(e)})}function or(n){return o.enum("Option",{None:null,Some:n})}const k=o.bytes(St).transform({validate:n=>{const e=typeof n=="string"?n:ze(n);if(!e||!bn(v(e)))throw new Error(`Invalid Sui address ${e}`)},input:n=>typeof n=="string"?dn(v(n)):n,output:n=>v(ze(n))}),z=o.byteVector().transform({name:"ObjectDigest",input:n=>at(n),output:n=>Je(new Uint8Array(n)),validate:n=>{if(at(n).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),B=o.struct("SuiObjectRef",{objectId:k,version:o.u64(),digest:z}),Sn=o.struct("SharedObjectRef",{objectId:k,initialSharedVersion:o.u64(),mutable:o.bool()}),Mn=o.enum("ObjectArg",{ImmOrOwnedObject:B,SharedObject:Sn,Receiving:B}),le=o.enum("Owner",{AddressOwner:k,ObjectOwner:k,Shared:o.struct("Shared",{initialSharedVersion:o.u64()}),Immutable:null,ConsensusAddressOwner:o.struct("ConsensusAddressOwner",{owner:k,startVersion:o.u64()})}),vn=o.enum("CallArg",{Pure:o.struct("Pure",{bytes:o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})}),Object:Mn}),Mt=o.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:o.lazy(()=>Mt),struct:o.lazy(()=>In),u16:null,u32:null,u256:null}),vt=Mt.transform({input:n=>typeof n=="string"?W.parseFromStr(n,!0):n,output:n=>W.tagToString(n)}),G=o.enum("Argument",{GasCoin:null,Input:o.u16(),Result:o.u16(),NestedResult:o.tuple([o.u16(),o.u16()])}),kn=o.struct("ProgrammableMoveCall",{package:k,module:o.string(),function:o.string(),typeArguments:o.vector(vt),arguments:o.vector(G)}),Cn=o.enum("Command",{MoveCall:kn,TransferObjects:o.struct("TransferObjects",{objects:o.vector(G),address:G}),SplitCoins:o.struct("SplitCoins",{coin:G,amounts:o.vector(G)}),MergeCoins:o.struct("MergeCoins",{destination:G,sources:o.vector(G)}),Publish:o.struct("Publish",{modules:o.vector(o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})),dependencies:o.vector(k)}),MakeMoveVec:o.struct("MakeMoveVec",{type:or(vt).transform({input:n=>n===null?{None:!0}:{Some:n},output:n=>n.Some??null}),elements:o.vector(G)}),Upgrade:o.struct("Upgrade",{modules:o.vector(o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))})),dependencies:o.vector(k),package:k,ticket:G})}),An=o.struct("ProgrammableTransaction",{inputs:o.vector(vn),commands:o.vector(Cn)}),Tn=o.enum("TransactionKind",{ProgrammableTransaction:An,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),En=o.enum("TransactionExpiration",{None:null,Epoch:ir()}),In=o.struct("StructTag",{address:k,module:o.string(),name:o.string(),typeParams:o.vector(Mt)}),Pn=o.struct("GasData",{payment:o.vector(B),owner:k,price:o.u64(),budget:o.u64()}),xn=o.struct("TransactionDataV1",{kind:Tn,sender:k,gasData:Pn,expiration:En}),On=o.enum("TransactionData",{V1:xn}),jn=o.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Bn=o.enum("IntentVersion",{V0:null}),Dn=o.enum("AppId",{Sui:null}),Un=o.struct("Intent",{scope:jn,version:Bn,appId:Dn});function Rn(n){return o.struct(`IntentMessage<${n.name}>`,{intent:Un,value:n})}const Fn=o.enum("CompressedSignature",{ED25519:o.bytes(64),Secp256k1:o.bytes(64),Secp256r1:o.bytes(64),ZkLogin:o.byteVector(),Passkey:o.byteVector()}),$n=o.enum("PublicKey",{ED25519:o.bytes(32),Secp256k1:o.bytes(33),Secp256r1:o.bytes(33),ZkLogin:o.byteVector(),Passkey:o.bytes(33)}),Vn=o.struct("MultiSigPkMap",{pubKey:$n,weight:o.u8()}),_n=o.struct("MultiSigPublicKey",{pk_map:o.vector(Vn),threshold:o.u16()}),cr=o.struct("MultiSig",{sigs:o.vector(Fn),bitmap:o.u16(),multisig_pk:_n}),ur=o.byteVector().transform({input:n=>typeof n=="string"?Q(n):n,output:n=>$(new Uint8Array(n))}),Nn=o.struct("SenderSignedTransaction",{intentMessage:Rn(On),txSignatures:o.vector(ur)}),lr=o.vector(Nn,{name:"SenderSignedData"}),dr=o.struct("PasskeyAuthenticator",{authenticatorData:o.byteVector(),clientDataJson:o.string(),userSignature:o.byteVector()}),mr=o.enum("PackageUpgradeError",{UnableToFetchPackage:o.struct("UnableToFetchPackage",{packageId:k}),NotAPackage:o.struct("NotAPackage",{objectId:k}),IncompatibleUpgrade:null,DigestDoesNotMatch:o.struct("DigestDoesNotMatch",{digest:o.byteVector()}),UnknownUpgradePolicy:o.struct("UnknownUpgradePolicy",{policy:o.u8()}),PackageIDDoesNotMatch:o.struct("PackageIDDoesNotMatch",{packageId:k,ticketId:k})}),fr=o.struct("ModuleId",{address:k,name:o.string()}),zt=o.struct("MoveLocation",{module:fr,function:o.u16(),instruction:o.u16(),functionName:o.option(o.string())}),gr=o.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:o.struct("IndexOutOfBounds",{idx:o.u16()}),SecondaryIndexOutOfBounds:o.struct("SecondaryIndexOutOfBounds",{resultIdx:o.u16(),secondaryIdx:o.u16()}),InvalidResultArity:o.struct("InvalidResultArity",{resultIdx:o.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),pr=o.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),hr=o.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:o.struct("MoveObjectTooBig",{objectSize:o.u64(),maxObjectSize:o.u64()}),MovePackageTooBig:o.struct("MovePackageTooBig",{objectSize:o.u64(),maxObjectSize:o.u64()}),CircularObjectOwnership:o.struct("CircularObjectOwnership",{object:k}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:o.option(zt),MoveAbort:o.tuple([zt,o.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:o.struct("CommandArgumentError",{argIdx:o.u16(),kind:gr}),TypeArgumentError:o.struct("TypeArgumentError",{argumentIdx:o.u16(),kind:pr}),UnusedValueWithoutDrop:o.struct("UnusedValueWithoutDrop",{resultIdx:o.u16(),secondaryIdx:o.u16()}),InvalidPublicFunctionReturnType:o.struct("InvalidPublicFunctionReturnType",{idx:o.u16()}),InvalidTransferObject:null,EffectsTooLarge:o.struct("EffectsTooLarge",{currentSize:o.u64(),maxSize:o.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:o.struct("PackageUpgradeError",{upgradeError:mr}),WrittenObjectsTooLarge:o.struct("WrittenObjectsTooLarge",{currentSize:o.u64(),maxSize:o.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:o.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:o.vector(k)}),AddressDeniedForCoin:o.struct("AddressDeniedForCoin",{address:k,coinType:o.string()}),CoinTypeGlobalPause:o.struct("CoinTypeGlobalPause",{coinType:o.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),zn=o.enum("ExecutionStatus",{Success:null,Failed:o.struct("ExecutionFailed",{error:hr,command:o.option(o.u64())})}),Kn=o.struct("GasCostSummary",{computationCost:o.u64(),storageCost:o.u64(),storageRebate:o.u64(),nonRefundableStorageFee:o.u64()}),yr=o.struct("TransactionEffectsV1",{status:zn,executedEpoch:o.u64(),gasUsed:Kn,modifiedAtVersions:o.vector(o.tuple([k,o.u64()])),sharedObjects:o.vector(B),transactionDigest:z,created:o.vector(o.tuple([B,le])),mutated:o.vector(o.tuple([B,le])),unwrapped:o.vector(o.tuple([B,le])),deleted:o.vector(B),unwrappedThenDeleted:o.vector(B),wrapped:o.vector(B),gasObject:o.tuple([B,le]),eventsDigest:o.option(z),dependencies:o.vector(z)}),kt=o.tuple([o.u64(),z]),br=o.enum("ObjectIn",{NotExist:null,Exist:o.tuple([kt,le])}),wr=o.enum("ObjectOut",{NotExist:null,ObjectWrite:o.tuple([z,le]),PackageWrite:kt}),Sr=o.enum("IDOperation",{None:null,Created:null,Deleted:null}),Mr=o.struct("EffectsObjectChange",{inputState:br,outputState:wr,idOperation:Sr}),vr=o.enum("UnchangedSharedKind",{ReadOnlyRoot:kt,MutateDeleted:o.u64(),ReadDeleted:o.u64(),Cancelled:o.u64(),PerEpochConfig:null}),kr=o.struct("TransactionEffectsV2",{status:zn,executedEpoch:o.u64(),gasUsed:Kn,transactionDigest:z,gasObjectIndex:o.option(o.u32()),eventsDigest:o.option(z),dependencies:o.vector(z),lamportVersion:o.u64(),changedObjects:o.vector(o.tuple([k,Mr])),unchangedSharedObjects:o.vector(o.tuple([k,vr])),auxDataDigest:o.option(z)}),Cr=o.enum("TransactionEffects",{V1:yr,V2:kr});function Te(n){switch(n){case"u8":return o.u8();case"u16":return o.u16();case"u32":return o.u32();case"u64":return o.u64();case"u128":return o.u128();case"u256":return o.u256();case"bool":return o.bool();case"string":return o.string();case"id":case"address":return k}const e=n.match(/^(vector|option)<(.+)>$/);if(e){const[t,s]=e.slice(1);return t==="vector"?o.vector(Te(s)):o.option(Te(s))}throw new Error(`Invalid Pure type name: ${n}`)}const S={...o,U8:o.u8(),U16:o.u16(),U32:o.u32(),U64:o.u64(),U128:o.u128(),U256:o.u256(),ULEB128:o.uleb128(),Bool:o.bool(),String:o.string(),Address:k,AppId:Dn,Argument:G,CallArg:vn,Command:Cn,CompressedSignature:Fn,GasData:Pn,Intent:Un,IntentMessage:Rn,IntentScope:jn,IntentVersion:Bn,MultiSig:cr,MultiSigPkMap:Vn,MultiSigPublicKey:_n,ObjectArg:Mn,ObjectDigest:z,Owner:le,PasskeyAuthenticator:dr,ProgrammableMoveCall:kn,ProgrammableTransaction:An,PublicKey:$n,SenderSignedData:lr,SenderSignedTransaction:Nn,SharedObjectRef:Sn,StructTag:In,SuiObjectRef:B,TransactionData:On,TransactionDataV1:xn,TransactionEffects:Cr,TransactionExpiration:En,TransactionKind:Tn,TypeTag:vt},Ar="object",Tr="ID",Er="ascii",Ir="String",Pr="string",xr="String",Or="option",jr="Option";function Br(n){const e=typeof n.body=="object"&&"datatype"in n.body?n.body.datatype:null;return!!e&&v(e.package)===v("0x2")&&e.module==="tx_context"&&e.type==="TxContext"}function it(n){if(typeof n=="string")switch(n){case"address":return S.Address;case"bool":return S.Bool;case"u8":return S.U8;case"u16":return S.U16;case"u32":return S.U32;case"u64":return S.U64;case"u128":return S.U128;case"u256":return S.U256;default:throw new Error(`Unknown type signature ${n}`)}if("vector"in n){if(n.vector==="u8")return S.byteVector().transform({input:t=>typeof t=="string"?new TextEncoder().encode(t):t,output:t=>t});const e=it(n.vector);return e?S.vector(e):null}if("datatype"in n){const e=v(n.datatype.package);if(e===v(tr)){if(n.datatype.module===Er&&n.datatype.type===Ir||n.datatype.module===Pr&&n.datatype.type===xr)return S.String;if(n.datatype.module===Or&&n.datatype.type===jr){const t=it(n.datatype.typeParameters[0]);return t?S.vector(t):null}}if(e===v(wn)&&n.datatype.module===Ar&&n.datatype.type===Tr)return S.Address}return null}function Dr(n){return typeof n=="object"&&"Reference"in n?{ref:"&",body:Ee(n.Reference)}:typeof n=="object"&&"MutableReference"in n?{ref:"&mut",body:Ee(n.MutableReference)}:{ref:null,body:Ee(n)}}function Ee(n){if(typeof n=="string")switch(n){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${n}`)}if("Vector"in n)return{vector:Ee(n.Vector)};if("Struct"in n)return{datatype:{package:n.Struct.address,module:n.Struct.module,type:n.Struct.name,typeParameters:n.Struct.typeArguments.map(Ee)}};if("TypeParameter"in n)return{typeParameter:n.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(n)}`)}function Ur(n){return{$kind:"Pure",Pure:{bytes:n instanceof Uint8Array?$(n):n.toBase64()}}}const K={Pure:Ur,ObjectRef({objectId:n,digest:e,version:t}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:e,version:t,objectId:v(n)}}}},SharedObjectRef({objectId:n,mutable:e,initialSharedVersion:t}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:e,initialSharedVersion:t,objectId:v(n)}}}},ReceivingRef({objectId:n,digest:e,version:t}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:e,version:t,objectId:v(n)}}}}};function ge(n){const e=Object.entries(n).map(([t,s])=>r.object({[t]:s}));return r.pipe(r.union(e),r.transform(t=>({...t,$kind:Object.keys(t)[0]})))}const ve=r.pipe(r.string(),r.transform(n=>v(n)),r.check(bn)),O=ve,fe=r.string(),x=r.pipe(r.union([r.string(),r.pipe(r.number(),r.integer())]),r.check(n=>{try{return BigInt(n),BigInt(n)>=0&&BigInt(n)<=18446744073709551615n}catch{return!1}},"Invalid u64")),re=r.object({objectId:ve,version:x,digest:r.string()}),C=r.pipe(r.union([r.object({GasCoin:r.literal(!0)}),r.object({Input:r.pipe(r.number(),r.integer()),type:r.optional(r.literal("pure"))}),r.object({Input:r.pipe(r.number(),r.integer()),type:r.optional(r.literal("object"))}),r.object({Result:r.pipe(r.number(),r.integer())}),r.object({NestedResult:r.tuple([r.pipe(r.number(),r.integer()),r.pipe(r.number(),r.integer())])})]),r.transform(n=>({...n,$kind:Object.keys(n)[0]}))),Rr=r.object({budget:r.nullable(x),price:r.nullable(x),owner:r.nullable(ve),payment:r.nullable(r.array(re))}),ot=r.union([r.literal("address"),r.literal("bool"),r.literal("u8"),r.literal("u16"),r.literal("u32"),r.literal("u64"),r.literal("u128"),r.literal("u256"),r.object({vector:r.lazy(()=>ot)}),r.object({datatype:r.object({package:r.string(),module:r.string(),type:r.string(),typeParameters:r.array(r.lazy(()=>ot))})}),r.object({typeParameter:r.pipe(r.number(),r.integer())})]),Fr=r.object({ref:r.nullable(r.union([r.literal("&"),r.literal("&mut")])),body:ot}),$r=r.object({package:O,module:r.string(),function:r.string(),typeArguments:r.array(r.string()),arguments:r.array(C),_argumentTypes:r.optional(r.nullable(r.array(Fr)))}),Vr=r.object({name:r.string(),inputs:r.record(r.string(),r.union([C,r.array(C)])),data:r.record(r.string(),r.unknown())}),_r=ge({MoveCall:$r,TransferObjects:r.object({objects:r.array(C),address:C}),SplitCoins:r.object({coin:C,amounts:r.array(C)}),MergeCoins:r.object({destination:C,sources:r.array(C)}),Publish:r.object({modules:r.array(fe),dependencies:r.array(O)}),MakeMoveVec:r.object({type:r.nullable(r.string()),elements:r.array(C)}),Upgrade:r.object({modules:r.array(fe),dependencies:r.array(O),package:O,ticket:C}),$Intent:Vr}),Ln=ge({ImmOrOwnedObject:re,SharedObject:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:re}),Nr=ge({Object:Ln,Pure:r.object({bytes:fe}),UnresolvedPure:r.object({value:r.unknown()}),UnresolvedObject:r.object({objectId:O,version:r.optional(r.nullable(x)),digest:r.optional(r.nullable(r.string())),initialSharedVersion:r.optional(r.nullable(x)),mutable:r.optional(r.nullable(r.boolean()))})}),Kt=ge({Object:Ln,Pure:r.object({bytes:fe})}),Gn=ge({None:r.literal(!0),Epoch:x}),Fe=r.object({version:r.literal(2),sender:r.nullish(ve),expiration:r.nullish(Gn),gasData:Rr,inputs:r.array(Nr),commands:r.array(_r)}),ue={MoveCall(n){const[e,t="",s=""]="target"in n?n.target.split("::"):[n.package,n.module,n.function];return{$kind:"MoveCall",MoveCall:{package:e,module:t,function:s,typeArguments:n.typeArguments??[],arguments:n.arguments??[]}}},TransferObjects(n,e){return{$kind:"TransferObjects",TransferObjects:{objects:n.map(t=>r.parse(C,t)),address:r.parse(C,e)}}},SplitCoins(n,e){return{$kind:"SplitCoins",SplitCoins:{coin:r.parse(C,n),amounts:e.map(t=>r.parse(C,t))}}},MergeCoins(n,e){return{$kind:"MergeCoins",MergeCoins:{destination:r.parse(C,n),sources:e.map(t=>r.parse(C,t))}}},Publish({modules:n,dependencies:e}){return{$kind:"Publish",Publish:{modules:n.map(t=>typeof t=="string"?t:$(new Uint8Array(t))),dependencies:e.map(t=>Se(t))}}},Upgrade({modules:n,dependencies:e,package:t,ticket:s}){return{$kind:"Upgrade",Upgrade:{modules:n.map(a=>typeof a=="string"?a:$(new Uint8Array(a))),dependencies:e.map(a=>Se(a)),package:t,ticket:r.parse(C,s)}}},MakeMoveVec({type:n,elements:e}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:n??null,elements:e.map(t=>r.parse(C,t))}}},Intent({name:n,inputs:e={},data:t={}}){return{$kind:"$Intent",$Intent:{name:n,inputs:Object.fromEntries(Object.entries(e).map(([s,a])=>[s,Array.isArray(a)?a.map(i=>r.parse(C,i)):r.parse(C,a)])),data:t}}}},ct=r.object({digest:r.string(),objectId:r.string(),version:r.union([r.pipe(r.number(),r.integer()),r.string(),r.bigint()])}),zr=ge({ImmOrOwned:ct,Shared:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:ct}),Lt=ge({Object:zr,Pure:r.array(r.pipe(r.number(),r.integer()))}),Wn=r.union([r.object({kind:r.literal("Input"),index:r.pipe(r.number(),r.integer()),value:r.unknown(),type:r.optional(r.literal("object"))}),r.object({kind:r.literal("Input"),index:r.pipe(r.number(),r.integer()),value:r.unknown(),type:r.literal("pure")})]),Kr=r.union([r.object({Epoch:r.pipe(r.number(),r.integer())}),r.object({None:r.nullable(r.literal(!0))})]),Gt=r.pipe(r.union([r.number(),r.string(),r.bigint()]),r.check(n=>{if(!["string","number","bigint"].includes(typeof n))return!1;try{return BigInt(n),!0}catch{return!1}})),Ct=r.union([r.object({bool:r.nullable(r.literal(!0))}),r.object({u8:r.nullable(r.literal(!0))}),r.object({u64:r.nullable(r.literal(!0))}),r.object({u128:r.nullable(r.literal(!0))}),r.object({address:r.nullable(r.literal(!0))}),r.object({signer:r.nullable(r.literal(!0))}),r.object({vector:r.lazy(()=>Ct)}),r.object({struct:r.lazy(()=>Lr)}),r.object({u16:r.nullable(r.literal(!0))}),r.object({u32:r.nullable(r.literal(!0))}),r.object({u256:r.nullable(r.literal(!0))})]),Lr=r.object({address:r.string(),module:r.string(),name:r.string(),typeParams:r.array(Ct)}),Gr=r.object({budget:r.optional(Gt),price:r.optional(Gt),payment:r.optional(r.array(ct)),owner:r.optional(r.string())}),Wr=[Wn,r.object({kind:r.literal("GasCoin")}),r.object({kind:r.literal("Result"),index:r.pipe(r.number(),r.integer())}),r.object({kind:r.literal("NestedResult"),index:r.pipe(r.number(),r.integer()),resultIndex:r.pipe(r.number(),r.integer())})],ee=r.union([...Wr]),Qr=r.object({kind:r.literal("MoveCall"),target:r.pipe(r.string(),r.check(n=>n.split("::").length===3)),typeArguments:r.array(r.string()),arguments:r.array(ee)}),qr=r.object({kind:r.literal("TransferObjects"),objects:r.array(ee),address:ee}),Hr=r.object({kind:r.literal("SplitCoins"),coin:ee,amounts:r.array(ee)}),Jr=r.object({kind:r.literal("MergeCoins"),destination:ee,sources:r.array(ee)}),Xr=r.object({kind:r.literal("MakeMoveVec"),type:r.union([r.object({Some:Ct}),r.object({None:r.nullable(r.literal(!0))})]),objects:r.array(ee)}),Zr=r.object({kind:r.literal("Publish"),modules:r.array(r.array(r.pipe(r.number(),r.integer()))),dependencies:r.array(r.string())}),Yr=r.object({kind:r.literal("Upgrade"),modules:r.array(r.array(r.pipe(r.number(),r.integer()))),dependencies:r.array(r.string()),packageId:r.string(),ticket:ee}),ea=[Qr,qr,Hr,Jr,Zr,Yr,Xr],ta=r.union([...ea]);r.object({version:r.literal(1),sender:r.optional(r.string()),expiration:r.nullish(Kr),gasConfig:Gr,inputs:r.array(Wn),transactions:r.array(ta)});function Wt(n){const e=n.inputs.map((t,s)=>{if(t.Object)return{kind:"Input",index:s,value:{Object:t.Object.ImmOrOwnedObject?{ImmOrOwned:t.Object.ImmOrOwnedObject}:t.Object.Receiving?{Receiving:{digest:t.Object.Receiving.digest,version:t.Object.Receiving.version,objectId:t.Object.Receiving.objectId}}:{Shared:{mutable:t.Object.SharedObject.mutable,initialSharedVersion:t.Object.SharedObject.initialSharedVersion,objectId:t.Object.SharedObject.objectId}}},type:"object"};if(t.Pure)return{kind:"Input",index:s,value:{Pure:Array.from(Q(t.Pure.bytes))},type:"pure"};if(t.UnresolvedPure)return{kind:"Input",type:"pure",index:s,value:t.UnresolvedPure.value};if(t.UnresolvedObject)return{kind:"Input",type:"object",index:s,value:t.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:n.sender??void 0,expiration:n.expiration?.$kind==="Epoch"?{Epoch:Number(n.expiration.Epoch)}:n.expiration?{None:!0}:null,gasConfig:{owner:n.gasData.owner??void 0,budget:n.gasData.budget??void 0,price:n.gasData.price??void 0,payment:n.gasData.payment??void 0},inputs:e,transactions:n.commands.map(t=>{if(t.MakeMoveVec)return{kind:"MakeMoveVec",type:t.MakeMoveVec.type===null?{None:!0}:{Some:W.parseFromStr(t.MakeMoveVec.type)},objects:t.MakeMoveVec.elements.map(s=>J(s,e))};if(t.MergeCoins)return{kind:"MergeCoins",destination:J(t.MergeCoins.destination,e),sources:t.MergeCoins.sources.map(s=>J(s,e))};if(t.MoveCall)return{kind:"MoveCall",target:`${t.MoveCall.package}::${t.MoveCall.module}::${t.MoveCall.function}`,typeArguments:t.MoveCall.typeArguments,arguments:t.MoveCall.arguments.map(s=>J(s,e))};if(t.Publish)return{kind:"Publish",modules:t.Publish.modules.map(s=>Array.from(Q(s))),dependencies:t.Publish.dependencies};if(t.SplitCoins)return{kind:"SplitCoins",coin:J(t.SplitCoins.coin,e),amounts:t.SplitCoins.amounts.map(s=>J(s,e))};if(t.TransferObjects)return{kind:"TransferObjects",objects:t.TransferObjects.objects.map(s=>J(s,e)),address:J(t.TransferObjects.address,e)};if(t.Upgrade)return{kind:"Upgrade",modules:t.Upgrade.modules.map(s=>Array.from(Q(s))),dependencies:t.Upgrade.dependencies,packageId:t.Upgrade.package,ticket:J(t.Upgrade.ticket,e)};throw new Error(`Unknown transaction ${Object.keys(t)}`)})}}function J(n,e){if(n.$kind==="GasCoin")return{kind:"GasCoin"};if(n.$kind==="Result")return{kind:"Result",index:n.Result};if(n.$kind==="NestedResult")return{kind:"NestedResult",index:n.NestedResult[0],resultIndex:n.NestedResult[1]};if(n.$kind==="Input")return e[n.Input];throw new Error(`Invalid argument ${Object.keys(n)}`)}function na(n){return r.parse(Fe,{version:2,sender:n.sender??null,expiration:n.expiration?"Epoch"in n.expiration?{Epoch:n.expiration.Epoch}:{None:!0}:null,gasData:{owner:n.gasConfig.owner??null,budget:n.gasConfig.budget?.toString()??null,price:n.gasConfig.price?.toString()??null,payment:n.gasConfig.payment?.map(e=>({digest:e.digest,objectId:e.objectId,version:e.version.toString()}))??null},inputs:n.inputs.map(e=>{if(e.kind==="Input"){if(r.is(Lt,e.value)){const t=r.parse(Lt,e.value);if(t.Object){if(t.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:t.Object.ImmOrOwned.objectId,version:String(t.Object.ImmOrOwned.version),digest:t.Object.ImmOrOwned.digest}}};if(t.Object.Shared)return{Object:{SharedObject:{mutable:t.Object.Shared.mutable??null,initialSharedVersion:t.Object.Shared.initialSharedVersion,objectId:t.Object.Shared.objectId}}};if(t.Object.Receiving)return{Object:{Receiving:{digest:t.Object.Receiving.digest,version:String(t.Object.Receiving.version),objectId:t.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:$(new Uint8Array(t.Pure))}}}return e.type==="object"?{UnresolvedObject:{objectId:e.value}}:{UnresolvedPure:{value:e.value}}}throw new Error("Invalid input")}),commands:n.transactions.map(e=>{switch(e.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in e.type?W.tagToString(e.type.Some):null,elements:e.objects.map(t=>X(t))}};case"MergeCoins":return{MergeCoins:{destination:X(e.destination),sources:e.sources.map(t=>X(t))}};case"MoveCall":{const[t,s,a]=e.target.split("::");return{MoveCall:{package:t,module:s,function:a,typeArguments:e.typeArguments,arguments:e.arguments.map(i=>X(i))}}}case"Publish":return{Publish:{modules:e.modules.map(t=>$(Uint8Array.from(t))),dependencies:e.dependencies}};case"SplitCoins":return{SplitCoins:{coin:X(e.coin),amounts:e.amounts.map(t=>X(t))}};case"TransferObjects":return{TransferObjects:{objects:e.objects.map(t=>X(t)),address:X(e.address)}};case"Upgrade":return{Upgrade:{modules:e.modules.map(t=>$(Uint8Array.from(t))),dependencies:e.dependencies,package:e.packageId,ticket:X(e.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(e)}`)})})}function X(n){switch(n.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:n.index};case"NestedResult":return{NestedResult:[n.index,n.resultIndex]};case"Input":return{Input:n.index}}}function xe(n){return r.union(Object.entries(n).map(([e,t])=>r.object({[e]:t})))}const V=xe({GasCoin:r.literal(!0),Input:r.pipe(r.number(),r.integer()),Result:r.pipe(r.number(),r.integer()),NestedResult:r.tuple([r.pipe(r.number(),r.integer()),r.pipe(r.number(),r.integer())])}),sa=r.object({budget:r.nullable(x),price:r.nullable(x),owner:r.nullable(ve),payment:r.nullable(r.array(re))}),ra=r.object({package:O,module:r.string(),function:r.string(),typeArguments:r.array(r.string()),arguments:r.array(V)}),aa=r.object({name:r.string(),inputs:r.record(r.string(),r.union([V,r.array(V)])),data:r.record(r.string(),r.unknown())}),ia=xe({MoveCall:ra,TransferObjects:r.object({objects:r.array(V),address:V}),SplitCoins:r.object({coin:V,amounts:r.array(V)}),MergeCoins:r.object({destination:V,sources:r.array(V)}),Publish:r.object({modules:r.array(fe),dependencies:r.array(O)}),MakeMoveVec:r.object({type:r.nullable(r.string()),elements:r.array(V)}),Upgrade:r.object({modules:r.array(fe),dependencies:r.array(O),package:O,ticket:V}),$Intent:aa}),oa=xe({ImmOrOwnedObject:re,SharedObject:r.object({objectId:O,initialSharedVersion:x,mutable:r.boolean()}),Receiving:re}),ca=xe({Object:oa,Pure:r.object({bytes:fe}),UnresolvedPure:r.object({value:r.unknown()}),UnresolvedObject:r.object({objectId:O,version:r.optional(r.nullable(x)),digest:r.optional(r.nullable(r.string())),initialSharedVersion:r.optional(r.nullable(x)),mutable:r.optional(r.nullable(r.boolean()))})}),ua=xe({None:r.literal(!0),Epoch:x}),la=r.object({version:r.literal(2),sender:r.nullish(ve),expiration:r.nullish(ua),gasData:sa,inputs:r.array(ca),commands:r.array(ia),digest:r.optional(r.nullable(r.string()))}),da=50,ma=1000n,fa=5e10;function ga(n){return async function(t,s,a){return await wa(t,n),await ba(t,n),s.onlyTransactionKind||(await pa(t,n),await ha(t,n),await ya(t,n)),await a()}}async function pa(n,e){n.gasConfig.price||(n.gasConfig.price=String(await e.getReferenceGasPrice()))}async function ha(n,e){if(n.gasConfig.budget)return;const t=await e.dryRunTransactionBlock({transactionBlock:n.build({overrides:{gasData:{budget:String(fa),payment:[]}}})});if(t.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${t.effects.status.error}`,{cause:t});const s=ma*BigInt(n.gasConfig.price||1n),a=BigInt(t.effects.gasUsed.computationCost)+s,i=a+BigInt(t.effects.gasUsed.storageCost)-BigInt(t.effects.gasUsed.storageRebate);n.gasConfig.budget=String(i>a?i:a)}async function ya(n,e){if(!n.gasConfig.payment){const s=(await e.getCoins({owner:n.gasConfig.owner||n.sender,coinType:sr})).data.filter(a=>!n.inputs.find(c=>c.Object?.ImmOrOwnedObject?a.coinObjectId===c.Object.ImmOrOwnedObject.objectId:!1)).map(a=>({objectId:a.coinObjectId,digest:a.digest,version:a.version}));if(!s.length)throw new Error("No valid gas coins found for the transaction.");n.gasConfig.payment=s.map(a=>r.parse(re,a))}}async function ba(n,e){const t=n.inputs.filter(f=>f.UnresolvedObject&&!(f.UnresolvedObject.version||f.UnresolvedObject?.initialSharedVersion)),s=[...new Set(t.map(f=>Se(f.UnresolvedObject.objectId)))],a=s.length?Es(s,da):[],i=(await Promise.all(a.map(f=>e.multiGetObjects({ids:f,options:{showOwner:!0}})))).flat(),c=new Map(s.map((f,g)=>[f,i[g]])),l=Array.from(c).filter(([f,g])=>g.error).map(([f,g])=>JSON.stringify(g.error));if(l.length)throw new Error(`The following input objects are invalid: ${l.join(", ")}`);const d=i.map(f=>{if(f.error||!f.data)throw new Error(`Failed to fetch object: ${f.error}`);const g=f.data.owner,y=g&&typeof g=="object"?"Shared"in g?g.Shared.initial_shared_version:"ConsensusAddressOwner"in g?g.ConsensusAddressOwner.start_version:null:null;return{objectId:f.data.objectId,digest:f.data.digest,version:f.data.version,initialSharedVersion:y}}),p=new Map(s.map((f,g)=>[f,d[g]]));for(const[f,g]of n.inputs.entries()){if(!g.UnresolvedObject)continue;let y;const b=v(g.UnresolvedObject.objectId),w=p.get(b);g.UnresolvedObject.initialSharedVersion??w?.initialSharedVersion?y=K.SharedObjectRef({objectId:b,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||w?.initialSharedVersion,mutable:g.UnresolvedObject.mutable||Sa(n,f)}):Ma(n,f)&&(y=K.ReceivingRef({objectId:b,digest:g.UnresolvedObject.digest??w?.digest,version:g.UnresolvedObject.version??w?.version})),n.inputs[n.inputs.indexOf(g)]=y??K.ObjectRef({objectId:b,digest:g.UnresolvedObject.digest??w?.digest,version:g.UnresolvedObject.version??w?.version})}}async function wa(n,e){const{inputs:t,commands:s}=n,a=[],i=new Set;s.forEach(l=>{if(l.MoveCall){if(l.MoveCall._argumentTypes)return;if(l.MoveCall.arguments.map(f=>f.$kind==="Input"?n.inputs[f.Input]:null).some(f=>f?.UnresolvedPure||f?.UnresolvedObject&&typeof f?.UnresolvedObject.mutable!="boolean")){const f=`${l.MoveCall.package}::${l.MoveCall.module}::${l.MoveCall.function}`;i.add(f),a.push(l.MoveCall)}}});const c=new Map;i.size>0&&await Promise.all([...i].map(async l=>{const[d,p,f]=l.split("::"),g=await e.getNormalizedMoveFunction({package:d,module:p,function:f});c.set(l,g.parameters.map(y=>Dr(y)))})),a.length&&await Promise.all(a.map(async l=>{const d=c.get(`${l.package}::${l.module}::${l.function}`);if(!d)return;const f=d.length>0&&Br(d.at(-1))?d.slice(0,d.length-1):d;l._argumentTypes=f})),s.forEach(l=>{if(!l.MoveCall)return;const d=l.MoveCall,p=`${d.package}::${d.module}::${d.function}`,f=d._argumentTypes;if(f){if(f.length!==l.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${p}`);f.forEach((g,y)=>{const b=d.arguments[y];if(b.$kind!=="Input")return;const w=t[b.Input];if(!w.UnresolvedPure&&!w.UnresolvedObject)return;const E=w.UnresolvedPure?.value??w.UnresolvedObject?.objectId,P=it(g.body);if(P){b.type="pure",t[t.indexOf(w)]=K.Pure(P.serialize(E));return}if(typeof E!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(E,null,2)}`);b.type="object";const A=w.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:E}}:w;t[b.Input]=A})}})}function Sa(n,e){let t=!1;return n.getInputUses(e,(s,a)=>{if(a.MoveCall&&a.MoveCall._argumentTypes){const i=a.MoveCall.arguments.indexOf(s);t=a.MoveCall._argumentTypes[i].ref!=="&"||t}(a.$kind==="MakeMoveVec"||a.$kind==="MergeCoins"||a.$kind==="SplitCoins"||a.$kind==="TransferObjects")&&(t=!0)}),t}function Ma(n,e){let t=!1;return n.getInputUses(e,(s,a)=>{if(a.MoveCall&&a.MoveCall._argumentTypes){const i=a.MoveCall.arguments.indexOf(s);t=va(a.MoveCall._argumentTypes[i])||t}}),t}function va(n){return typeof n.body!="object"||!("datatype"in n.body)?!1:n.body.datatype.package==="0x2"&&n.body.datatype.module==="transfer"&&n.body.datatype.type==="Receiving"}function Qn(n,e){return!!(n.inputs.some(t=>t.UnresolvedObject||t.UnresolvedPure)||!e.onlyTransactionKind&&(!n.gasConfig.price||!n.gasConfig.budget||!n.gasConfig.payment))}async function ka(n,e,t){if(Aa(n),!Qn(n,e))return await Qt(n),t();const s=Ca(e);return(s.core?.resolveTransactionPlugin()??ga(s))(n,e,async()=>{await Qt(n),await t()})}function Qt(n){n.inputs.forEach((e,t)=>{if(e.$kind!=="Object"&&e.$kind!=="Pure")throw new Error(`Input at index ${t} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(e)}`)})}function Ca(n){if(!n.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return n.client}function Aa(n){for(const e of n.commands)switch(e.$kind){case"SplitCoins":e.SplitCoins.amounts.forEach(t=>{qt(t,S.U64,n)});break;case"TransferObjects":qt(e.TransferObjects.address,S.Address,n);break}}function qt(n,e,t){if(n.$kind!=="Input")return;const s=t.inputs[n.Input];s.$kind==="UnresolvedPure"&&(t.inputs[n.Input]=K.Pure(e.serialize(s.UnresolvedPure.value)))}function Ta(n){function e(t){return n(t)}return e.system=t=>{const s=t?.mutable;return e(s!==void 0?K.SharedObjectRef({objectId:"0x5",initialSharedVersion:1,mutable:s}):{$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x5",initialSharedVersion:1}})},e.clock=()=>e(K.SharedObjectRef({objectId:"0x6",initialSharedVersion:1,mutable:!1})),e.random=()=>e({$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x8",mutable:!1}}),e.denyList=t=>e({$kind:"UnresolvedObject",UnresolvedObject:{objectId:"0x403",mutable:t?.mutable}}),e.option=({type:t,value:s})=>a=>a.moveCall({typeArguments:[t],target:`0x1::option::${s===null?"none":"some"}`,arguments:s===null?[]:[a.object(s)]}),e}function Ea(n){function e(t,s){if(typeof t=="string")return n(Te(t).serialize(s));if(t instanceof Uint8Array||wt(t))return n(t);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return e.u8=t=>n(S.U8.serialize(t)),e.u16=t=>n(S.U16.serialize(t)),e.u32=t=>n(S.U32.serialize(t)),e.u64=t=>n(S.U64.serialize(t)),e.u128=t=>n(S.U128.serialize(t)),e.u256=t=>n(S.U256.serialize(t)),e.bool=t=>n(S.Bool.serialize(t)),e.string=t=>n(S.String.serialize(t)),e.address=t=>n(S.Address.serialize(t)),e.id=e.address,e.vector=(t,s)=>n(S.vector(Te(t)).serialize(s)),e.option=(t,s)=>n(S.option(Te(t)).serialize(s)),e}function Ia(n,e){const t=Array.from(`${n}::`).map(a=>a.charCodeAt(0)),s=new Uint8Array(t.length+e.length);return s.set(t),s.set(e,t.length),r.blake2b(s,{dkLen:32})}function Ht(n){return v(n).replace("0x","")}class D{constructor(e){this.version=2,this.sender=e?.sender??null,this.expiration=e?.expiration??null,this.inputs=e?.inputs??[],this.commands=e?.commands??[],this.gasData=e?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(e){const s=S.TransactionKind.parse(e).ProgrammableTransaction;if(!s)throw new Error("Unable to deserialize from bytes.");return D.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:s.inputs,commands:s.commands})}static fromBytes(e){const s=S.TransactionData.parse(e)?.V1,a=s.kind.ProgrammableTransaction;if(!s||!a)throw new Error("Unable to deserialize from bytes.");return D.restore({version:2,sender:s.sender,expiration:s.expiration,gasData:s.gasData,inputs:a.inputs,commands:a.commands})}static restore(e){return e.version===2?new D(r.parse(Fe,e)):new D(r.parse(Fe,na(e)))}static getDigestFromBytes(e){const t=Ia("TransactionData",e);return Je(t)}get gasConfig(){return this.gasData}set gasConfig(e){this.gasData=e}build({maxSizeBytes:e=1/0,overrides:t,onlyTransactionKind:s}={}){const a=this.inputs,i=this.commands,c={ProgrammableTransaction:{inputs:a,commands:i}};if(s)return S.TransactionKind.serialize(c,{maxSize:e}).toBytes();const l=t?.expiration??this.expiration,d=t?.sender??this.sender,p={...this.gasData,...t?.gasConfig,...t?.gasData};if(!d)throw new Error("Missing transaction sender");if(!p.budget)throw new Error("Missing gas budget");if(!p.payment)throw new Error("Missing gas payment");if(!p.price)throw new Error("Missing gas price");const f={sender:Ht(d),expiration:l||{None:!0},gasData:{payment:p.payment,owner:Ht(this.gasData.owner??d),price:BigInt(p.price),budget:BigInt(p.budget)},kind:{ProgrammableTransaction:{inputs:a,commands:i}}};return S.TransactionData.serialize({V1:f},{maxSize:e}).toBytes()}addInput(e,t){const s=this.inputs.length;return this.inputs.push(t),{Input:s,type:e,$kind:"Input"}}getInputUses(e,t){this.mapArguments((s,a)=>(s.$kind==="Input"&&s.Input===e&&t(s,a),s))}mapCommandArguments(e,t){const s=this.commands[e];switch(s.$kind){case"MoveCall":s.MoveCall.arguments=s.MoveCall.arguments.map(i=>t(i,s,e));break;case"TransferObjects":s.TransferObjects.objects=s.TransferObjects.objects.map(i=>t(i,s,e)),s.TransferObjects.address=t(s.TransferObjects.address,s,e);break;case"SplitCoins":s.SplitCoins.coin=t(s.SplitCoins.coin,s,e),s.SplitCoins.amounts=s.SplitCoins.amounts.map(i=>t(i,s,e));break;case"MergeCoins":s.MergeCoins.destination=t(s.MergeCoins.destination,s,e),s.MergeCoins.sources=s.MergeCoins.sources.map(i=>t(i,s,e));break;case"MakeMoveVec":s.MakeMoveVec.elements=s.MakeMoveVec.elements.map(i=>t(i,s,e));break;case"Upgrade":s.Upgrade.ticket=t(s.Upgrade.ticket,s,e);break;case"$Intent":const a=s.$Intent.inputs;s.$Intent.inputs={};for(const[i,c]of Object.entries(a))s.$Intent.inputs[i]=Array.isArray(c)?c.map(l=>t(l,s,e)):t(c,s,e);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${s.$kind}`)}}mapArguments(e){for(const t of this.commands.keys())this.mapCommandArguments(t,e)}replaceCommand(e,t,s=e){if(!Array.isArray(t)){this.commands[e]=t;return}const a=t.length-1;this.commands.splice(e,1,...t),a!==0&&this.mapArguments((i,c,l)=>{if(l<e+t.length)return i;switch(i.$kind){case"Result":i.Result===e&&(i.Result=s),i.Result>e&&(i.Result+=a);break;case"NestedResult":i.NestedResult[0]===e&&(i.NestedResult[0]=s),i.NestedResult[0]>e&&(i.NestedResult[0]+=a);break}return i})}getDigest(){const e=this.build({onlyTransactionKind:!1});return D.getDigestFromBytes(e)}snapshot(){return r.parse(Fe,this)}shallowClone(){return new D({version:this.version,sender:this.sender,expiration:this.expiration,gasData:{...this.gasData},inputs:[...this.inputs],commands:[...this.commands]})}applyResolvedData(e){this.sender||(this.sender=e.sender??null),this.expiration||(this.expiration=e.expiration??null),this.gasData.budget||(this.gasData.budget=e.gasData.budget),this.gasData.owner||(this.gasData.owner=e.gasData.owner??null),this.gasData.payment||(this.gasData.payment=e.gasData.payment),this.gasData.price||(this.gasData.price=e.gasData.price);for(let t=0;t<this.inputs.length;t++){const s=this.inputs[t],a=e.inputs[t];switch(s.$kind){case"UnresolvedPure":if(a.$kind!=="Pure")throw new Error(`Expected input at index ${t} to resolve to a Pure argument, but got ${JSON.stringify(a)}`);this.inputs[t]=a;break;case"UnresolvedObject":if(a.$kind!=="Object")throw new Error(`Expected input at index ${t} to resolve to an Object argument, but got ${JSON.stringify(a)}`);if(a.Object.$kind==="ImmOrOwnedObject"||a.Object.$kind==="Receiving"){const i=s.UnresolvedObject,c=a.Object.ImmOrOwnedObject??a.Object.Receiving;if(v(i.objectId)!==v(c.objectId)||i.version!=null&&i.version!==c.version||i.digest!=null&&i.digest!==c.digest||i.mutable!=null||i.initialSharedVersion!=null)throw new Error(`Input at index ${t} did not match unresolved object. ${JSON.stringify(i)} is not compatible with ${JSON.stringify(c)}`)}else if(a.Object.$kind==="SharedObject"){const i=s.UnresolvedObject,c=a.Object.SharedObject;if(v(i.objectId)!==v(c.objectId)||i.initialSharedVersion!=null&&i.initialSharedVersion!==c.initialSharedVersion||i.mutable!=null&&i.mutable!==c.mutable||i.version!=null||i.digest!=null)throw new Error(`Input at index ${t} did not match unresolved object. ${JSON.stringify(i)} is not compatible with ${JSON.stringify(c)}`)}else throw new Error(`Input at index ${t} resolved to an unexpected Object kind: ${JSON.stringify(a.Object)}`);this.inputs[t]=a;break}}}}function Jt(n){if(typeof n=="string")return v(n);if(n.Object)return n.Object.ImmOrOwnedObject?v(n.Object.ImmOrOwnedObject.objectId):n.Object.Receiving?v(n.Object.Receiving.objectId):v(n.Object.SharedObject.objectId);if(n.UnresolvedObject)return v(n.UnresolvedObject.objectId)}const Pa="/";function ye(n){return n.includes(Pa)||n.includes("@")||n.includes(".sui")}function xa(n){const e=new Set,t=new Set;for(const s of n.commands)switch(s.$kind){case"MakeMoveVec":s.MakeMoveVec.type&&Xt([s.MakeMoveVec.type]).forEach(c=>{t.add(c)});break;case"MoveCall":const a=s.MoveCall,i=a.package.split("::")[0];if(ye(i)){if(!yn(i))throw new Error(`Invalid package name: ${i}`);e.add(i)}Xt(a.typeArguments??[]).forEach(c=>{t.add(c)});break}return{packages:[...e],types:[...t]}}function Oa(n,e){for(const t of n.commands){if(t.MakeMoveVec?.type){if(!ye(t.MakeMoveVec.type))continue;if(!e.types[t.MakeMoveVec.type])throw new Error(`No resolution found for type: ${t.MakeMoveVec.type}`);t.MakeMoveVec.type=e.types[t.MakeMoveVec.type].type}const s=t.MoveCall;if(!s)continue;const a=s.package.split("::"),i=a[0];if(ye(i)&&!e.packages[i])throw new Error(`No address found for package: ${i}`);ye(i)&&(a[0]=e.packages[i].package,s.package=a.join("::"));const c=s.typeArguments;if(c){for(let l=0;l<c.length;l++)if(ye(c[l])){if(!e.types[c[l]])throw new Error(`No resolution found for type: ${c[l]}`);c[l]=e.types[c[l]].type}s.typeArguments=c}}}function Xt(n){const e=new Set;for(const t of n)if(ye(t)){if(!Zs(t))throw new Error(`Invalid type with names: ${t}`);e.add(t)}return e}const ja=n=>async(e,t,s)=>{const a=xa(e);if(a.types.length===0&&a.packages.length===0)return s();const i=await Ba(t).core.mvr.resolve({types:a.types,packages:a.packages});Oa(e,i),await s()};function Ba(n){if(!n.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return n.client}var qn=n=>{throw TypeError(n)},At=(n,e,t)=>e.has(n)||qn("Cannot "+t),m=(n,e,t)=>(At(n,e,"read from private field"),t?t.call(n):e.get(n)),L=(n,e,t)=>e.has(n)?qn("Cannot add the same private member more than once"):e instanceof WeakSet?e.add(n):e.set(n,t),M=(n,e,t,s)=>(At(n,e,"write to private field"),e.set(n,t),t),I=(n,e,t)=>(At(n,e,"access private method"),t),de,me,Y,q,U,R,N,se,h,T,Hn,$e,Ve,_e,Qe,ut,Tt,Jn,Xn;function tt(n,e=1/0){const t={$kind:"Result",get Result(){return typeof n=="function"?n():n}},s=[],a=i=>s[i]??(s[i]={$kind:"NestedResult",get NestedResult(){return[typeof n=="function"?n():n,i]}});return new Proxy(t,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(i,c){if(c in i)return Reflect.get(i,c);if(c===Symbol.iterator)return function*(){let d=0;for(;d<e;)yield a(d),d++};if(typeof c=="symbol")return;const l=parseInt(c,10);if(!(Number.isNaN(l)||l<0))return a(l)}})}const Zn=Symbol.for("@mysten/transaction");function Da(n){return!!n&&typeof n=="object"&&n[Zn]===!0}const Zt={buildPlugins:new Map,serializationPlugins:new Map},nt=Symbol.for("@mysten/transaction/registry");function ke(){try{const n=globalThis;return n[nt]||(n[nt]=Zt),n[nt]}catch{return Zt}}const Yn=class lt{constructor(){L(this,T),L(this,de),L(this,me),L(this,Y,new Map),L(this,q,[]),L(this,U,[]),L(this,R,new Set),L(this,N,new Set),L(this,se,new Map),L(this,h),this.object=Ta(t=>{if(typeof t=="function")return this.object(this.add(t));if(typeof t=="object"&&r.is(C,t))return t;const s=Jt(t),a=m(this,h).inputs.find(i=>s===Jt(i));return a?.Object?.SharedObject&&typeof t=="object"&&t.Object?.SharedObject&&(a.Object.SharedObject.mutable=a.Object.SharedObject.mutable||t.Object.SharedObject.mutable),a?{$kind:"Input",Input:m(this,h).inputs.indexOf(a),type:"object"}:I(this,T,Ve).call(this,"object",typeof t=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:v(t)}}:t)});const e=ke();M(this,h,new D),M(this,me,[...e.buildPlugins.values()]),M(this,de,[...e.serializationPlugins.values()])}static fromKind(e){const t=new lt;return M(t,h,D.fromKindBytes(typeof e=="string"?Q(e):e)),M(t,q,m(t,h).inputs.slice()),M(t,U,m(t,h).commands.slice()),M(t,R,new Set(m(t,U).map((s,a)=>a))),t}static from(e){const t=new lt;return Da(e)?M(t,h,D.restore(e.getData())):typeof e!="string"||!e.startsWith("{")?M(t,h,D.fromBytes(typeof e=="string"?Q(e):e)):M(t,h,D.restore(JSON.parse(e))),M(t,q,m(t,h).inputs.slice()),M(t,U,m(t,h).commands.slice()),M(t,R,new Set(m(t,U).map((s,a)=>a))),t}static registerGlobalSerializationPlugin(e,t){ke().serializationPlugins.set(e,t??e)}static unregisterGlobalSerializationPlugin(e){ke().serializationPlugins.delete(e)}static registerGlobalBuildPlugin(e,t){ke().buildPlugins.set(e,t??e)}static unregisterGlobalBuildPlugin(e){ke().buildPlugins.delete(e)}addSerializationPlugin(e){m(this,de).push(e)}addBuildPlugin(e){m(this,me).push(e)}addIntentResolver(e,t){if(m(this,Y).has(e)&&m(this,Y).get(e)!==t)throw new Error(`Intent resolver for ${e} already exists`);m(this,Y).set(e,t)}setSender(e){m(this,h).sender=e}setSenderIfNotSet(e){m(this,h).sender||(m(this,h).sender=e)}setExpiration(e){m(this,h).expiration=e?r.parse(Gn,e):null}setGasPrice(e){m(this,h).gasConfig.price=String(e)}setGasBudget(e){m(this,h).gasConfig.budget=String(e)}setGasBudgetIfNotSet(e){m(this,h).gasData.budget==null&&(m(this,h).gasConfig.budget=String(e))}setGasOwner(e){m(this,h).gasConfig.owner=e}setGasPayment(e){m(this,h).gasConfig.payment=e.map(t=>r.parse(re,t))}get blockData(){return Wt(m(this,h).snapshot())}getData(){return m(this,h).snapshot()}get[Zn](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:Ea(e=>wt(e)?I(this,T,Ve).call(this,"pure",{$kind:"Pure",Pure:{bytes:e.toBase64()}}):I(this,T,Ve).call(this,"pure",r.is(Kt,e)?r.parse(Kt,e):e instanceof Uint8Array?K.Pure(e):{$kind:"UnresolvedPure",UnresolvedPure:{value:e}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...e){return this.object(K.ObjectRef(...e))}receivingRef(...e){return this.object(K.ReceivingRef(...e))}sharedObjectRef(...e){return this.object(K.SharedObjectRef(...e))}add(e){if(typeof e=="function"){if(m(this,se).has(e))return m(this,se).get(e);const t=I(this,T,Hn).call(this),s=e(t);if(!(s&&typeof s=="object"&&"then"in s))return M(this,R,m(t,R)),m(this,se).set(e,s),s;const a=I(this,T,$e).call(this,{$kind:"$Intent",$Intent:{name:"AsyncTransactionThunk",inputs:{},data:{resultIndex:m(this,h).commands.length,result:null}}});m(this,N).add(Promise.resolve(s).then(c=>{a.$Intent.data.result=c}));const i=tt(()=>a.$Intent.data.resultIndex);return m(this,se).set(e,i),i}else I(this,T,$e).call(this,e);return tt(m(this,h).commands.length-1)}splitCoins(e,t){const s=ue.SplitCoins(typeof e=="string"?this.object(e):I(this,T,Qe).call(this,e),t.map(a=>typeof a=="number"||typeof a=="bigint"||typeof a=="string"?this.pure.u64(a):I(this,T,_e).call(this,a)));return I(this,T,$e).call(this,s),tt(m(this,h).commands.length-1,t.length)}mergeCoins(e,t){return this.add(ue.MergeCoins(this.object(e),t.map(s=>this.object(s))))}publish({modules:e,dependencies:t}){return this.add(ue.Publish({modules:e,dependencies:t}))}upgrade({modules:e,dependencies:t,package:s,ticket:a}){return this.add(ue.Upgrade({modules:e,dependencies:t,package:s,ticket:this.object(a)}))}moveCall({arguments:e,...t}){return this.add(ue.MoveCall({...t,arguments:e?.map(s=>I(this,T,_e).call(this,s))}))}transferObjects(e,t){return this.add(ue.TransferObjects(e.map(s=>this.object(s)),typeof t=="string"?this.pure.address(t):I(this,T,_e).call(this,t)))}makeMoveVec({type:e,elements:t}){return this.add(ue.MakeMoveVec({type:e,elements:t.map(s=>this.object(s))}))}serialize(){return JSON.stringify(Wt(m(this,h).snapshot()))}async toJSON(e={}){await this.prepareForSerialization(e);const t=this.isFullyResolved();return JSON.stringify(r.parse(la,t?{...m(this,h).snapshot(),digest:m(this,h).getDigest()}:m(this,h).snapshot()),(s,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(e){const{signer:t,...s}=e,a=await this.build(s);return t.signTransaction(a)}isFullyResolved(){return!(!m(this,h).sender||m(this,N).size>0||m(this,h).commands.some(e=>e.$Intent)||Qn(m(this,h),{}))}async build(e={}){return await this.prepareForSerialization(e),await I(this,T,ut).call(this,e),m(this,h).build({onlyTransactionKind:e.onlyTransactionKind})}async getDigest(e={}){return await this.prepareForSerialization(e),await I(this,T,ut).call(this,e),m(this,h).getDigest()}async prepareForSerialization(e){await I(this,T,Jn).call(this),I(this,T,Xn).call(this);const t=new Set;for(const a of m(this,h).commands)a.$Intent&&t.add(a.$Intent.name);const s=[...m(this,de)];for(const a of t)if(!e.supportedIntents?.includes(a)){if(!m(this,Y).has(a))throw new Error(`Missing intent resolver for ${a}`);s.push(m(this,Y).get(a))}s.push(ja()),await I(this,T,Tt).call(this,s,e)}};de=new WeakMap;me=new WeakMap;Y=new WeakMap;q=new WeakMap;U=new WeakMap;R=new WeakMap;N=new WeakMap;se=new WeakMap;h=new WeakMap;T=new WeakSet;Hn=function(){const n=new Yn;return M(n,h,m(this,h)),M(n,de,m(this,de)),M(n,me,m(this,me)),M(n,Y,m(this,Y)),M(n,N,m(this,N)),M(n,R,new Set(m(this,R))),M(n,se,m(this,se)),m(this,q).push(m(n,q)),m(this,U).push(m(n,U)),n};$e=function(n){const e=m(this,h).commands.length;return m(this,U).push(n),m(this,R).add(e),m(this,h).commands.push(n),m(this,h).mapCommandArguments(e,t=>{if(t.$kind==="Result"&&!m(this,R).has(t.Result))throw new Error(`Result { Result: ${t.Result} } is not available to use in the current transaction`);if(t.$kind==="NestedResult"&&!m(this,R).has(t.NestedResult[0]))throw new Error(`Result { NestedResult: [${t.NestedResult[0]}, ${t.NestedResult[1]}] } is not available to use in the current transaction`);if(t.$kind==="Input"&&t.Input>=m(this,h).inputs.length)throw new Error(`Input { Input: ${t.Input} } references an input that does not exist in the current transaction`);return t}),n};Ve=function(n,e){return m(this,q).push(e),m(this,h).addInput(n,e)};_e=function(n){return wt(n)?this.pure(n):I(this,T,Qe).call(this,n)};Qe=function(n){if(typeof n=="function"){const e=this.add(n);return typeof e=="function"?I(this,T,Qe).call(this,e):r.parse(C,e)}return r.parse(C,n)};ut=async function(n){if(!n.onlyTransactionKind&&!m(this,h).sender)throw new Error("Missing transaction sender");await I(this,T,Tt).call(this,[...m(this,me),ka],n)};Tt=async function(n,e){try{const t=s=>{if(s>=n.length)return()=>{};const a=n[s];return async()=>{const i=t(s+1);let c=!1,l=!1;if(await a(m(this,h),e,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${s}`);c=!0,await i(),l=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${s}`);if(!l)throw new Error(`next() was not awaited in TransactionPlugin ${s}`)}};await t(0)()}finally{M(this,q,m(this,h).inputs.slice()),M(this,U,m(this,h).commands.slice())}};Jn=async function(){for(;m(this,N).size>0;){const n=Promise.all(m(this,N));m(this,N).clear(),m(this,N).add(n),await n,m(this,N).delete(n)}};Xn=function(){const n=m(this,h).commands,e=m(this,h).inputs,t=m(this,U).flat(1/0),s=m(this,q).flat(1/0);if(t.length!==n.length)throw new Error("Unexpected number of commands found in transaction data");if(s.length!==e.length)throw new Error("Unexpected number of inputs found in transaction data");const a=t.filter(c=>c.$Intent?.name!=="AsyncTransactionThunk");m(this,h).commands=a,m(this,h).inputs=s,M(this,U,a),M(this,q,s),M(this,R,new Set(a.map((c,l)=>l)));function i(c){const l=n[c];if(l.$Intent?.name==="AsyncTransactionThunk"){const p=l.$Intent.data.result;if(p==null)throw new Error("AsyncTransactionThunk has not been resolved");return i(p.Result)}const d=a.indexOf(l);if(d===-1)throw new Error("Unable to find original index for command");return d}m(this,h).mapArguments(c=>{if(c.$kind==="Input"){const l=s.indexOf(e[c.Input]);if(l===-1)throw new Error("Input has not been resolved");return{...c,Input:l}}else if(c.$kind==="Result"){const l=i(c.Result);return{...c,Result:l}}else if(c.$kind==="NestedResult"){const l=i(c.NestedResult[0]);return{...c,NestedResult:[l,c.NestedResult[1]]}}return c});for(const[c,l]of n.entries())if(l.$Intent?.name==="AsyncTransactionThunk")try{l.$Intent.data.resultIndex=i(c)}catch{}};let Ua=Yn;class Et{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;executorId;executorRequestsId;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.provider=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(p,f)=>{if(!p)throw new Error(f);return p};this.usdcId=i(u.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:c,messageTransmitterState:l,usdcTreasury:d}=us.suiCircleObjects(e);this.usdcTreasuryId=d,this.tokenMessengerId=i(a.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterId=i(a.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.tokenMessengerStateId=c,this.messageTransmitterStateId=l,this.executorId=i($t[e]?.executorId,`Executor contract for ${e} not found`),this.executorRequestsId=i($t[e]?.executorRequestsId,`Executor requests contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SuiPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new Et(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new Ua,i=new r.SuiAddress(e).unwrap(),c=u.circleChainId.get(this.network,t.chain),[l,...d]=await r.SuiPlatform.getCoins(this.provider,e,this.usdcId);if(l===void 0)throw new Error("No USDC in wallet");const p=a.object(l.coinObjectId);d.length>0&&a.mergeCoins(p,d.map(A=>a.object(A.coinObjectId)));let f;if(s.referrerFee>0n){const[A,j]=a.splitCoins(p,[s.remainingAmount,s.referrerFee]);f=A,a.transferObjects([j],s.referrer?u.canonicalAddress(s.referrer):i)}else{const[A]=a.splitCoins(p,[s.remainingAmount]);f=A}const[g,y]=a.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[f,a.pure.u32(c),a.pure.address(t.address.toUniversalAddress().toString()),a.object(this.tokenMessengerStateId),a.object(this.messageTransmitterStateId),a.object("0x403"),a.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[b]=a.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[y]}),[w]=a.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[y]}),[E]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[b,w]}),[P]=a.splitCoins(a.gas,[a.pure.u64(s.estimatedCost)]);a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[P,a.object(nr),a.pure.u16(u.toChainId(t.chain)),a.pure.address("0x0"),a.pure.address(i),a.pure.vector("u8",s.signedQuote),E,a.pure.vector("u8",s.relayInstructions)]}),yield this.createUnsignedTx(a,"SuiCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new r.SuiUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(r._platform$1,"CCTPExecutor",Et);const Me=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new r.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const It=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new r.PublicKey("So11111111111111111111111111111111111111112");new r.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ra extends Error{constructor(e){super(e)}}class Fa extends Ra{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var dt;(function(n){n[n.InitializeMint=0]="InitializeMint",n[n.InitializeAccount=1]="InitializeAccount",n[n.InitializeMultisig=2]="InitializeMultisig",n[n.Transfer=3]="Transfer",n[n.Approve=4]="Approve",n[n.Revoke=5]="Revoke",n[n.SetAuthority=6]="SetAuthority",n[n.MintTo=7]="MintTo",n[n.Burn=8]="Burn",n[n.CloseAccount=9]="CloseAccount",n[n.FreezeAccount=10]="FreezeAccount",n[n.ThawAccount=11]="ThawAccount",n[n.TransferChecked=12]="TransferChecked",n[n.ApproveChecked=13]="ApproveChecked",n[n.MintToChecked=14]="MintToChecked",n[n.BurnChecked=15]="BurnChecked",n[n.InitializeAccount2=16]="InitializeAccount2",n[n.SyncNative=17]="SyncNative",n[n.InitializeAccount3=18]="InitializeAccount3",n[n.InitializeMultisig2=19]="InitializeMultisig2",n[n.InitializeMint2=20]="InitializeMint2",n[n.GetAccountDataSize=21]="GetAccountDataSize",n[n.InitializeImmutableOwner=22]="InitializeImmutableOwner",n[n.AmountToUiAmount=23]="AmountToUiAmount",n[n.UiAmountToAmount=24]="UiAmountToAmount",n[n.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",n[n.TransferFeeExtension=26]="TransferFeeExtension",n[n.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",n[n.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",n[n.Reallocate=29]="Reallocate",n[n.MemoTransferExtension=30]="MemoTransferExtension",n[n.CreateNativeMint=31]="CreateNativeMint",n[n.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",n[n.InterestBearingMintExtension=33]="InterestBearingMintExtension",n[n.CpiGuardExtension=34]="CpiGuardExtension",n[n.InitializePermanentDelegate=35]="InitializePermanentDelegate",n[n.TransferHookExtension=36]="TransferHookExtension",n[n.MetadataPointerExtension=39]="MetadataPointerExtension"})(dt||(dt={}));function $a(n,e,t){if(t.length){n.push({pubkey:e,isSigner:!1,isWritable:!1});for(const s of t)n.push({pubkey:s instanceof r.PublicKey?s:s.publicKey,isSigner:!0,isWritable:!1})}else n.push({pubkey:e,isSigner:!0,isWritable:!1});return n}const Va=r.LayoutExports.struct([r.LayoutExports.u32("mintAuthorityOption"),Ce.publicKey("mintAuthority"),Ce.u64("supply"),r.LayoutExports.u8("decimals"),Ce.bool("isInitialized"),r.LayoutExports.u32("freezeAuthorityOption"),Ce.publicKey("freezeAuthority")]);Va.span;function Ie(n,e,t=!1,s=Me,a=It){if(!t&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new Fa;const[i]=r.PublicKey.findProgramAddressSync([e.toBuffer(),s.toBuffer(),n.toBuffer()],a);return i}function es(n,e,t,s,a=Me,i=It){return _a(n,e,t,s,u.Buffer.from([1]),a,i)}function _a(n,e,t,s,a,i=Me,c=It){const l=[{pubkey:n,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:l,programId:c,data:a})}const Yt=r.LayoutExports.struct([r.LayoutExports.u8("instruction"),Ce.u64("amount")]);function ts(n,e,t,s,a=[],i=Me){const c=$a([{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,a),l=u.Buffer.alloc(Yt.span);return Yt.encode({instruction:dt.Transfer,amount:BigInt(s)},l),new r.TransactionInstruction({keys:c,programId:i,data:l})}const Na={version:"0.1.0",name:"example_cctp_with_executor",instructions:[{name:"relayLastMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"relayLastMessageArgs"}}]}],types:[{name:"relayLastMessageArgs",type:{kind:"struct",fields:[{name:"recipientChain",type:"u16"},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}]};class Pt{network;chain;connection;contracts;tokenMessengerProgramId;messageTransmitterProgramId;shimProgramId;executorProgramId;constructor(e,t,s,a){if(this.network=e,this.chain=t,this.connection=s,this.contracts=a,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(c,l)=>{if(!c)throw new Error(l);return new r.PublicKey(c)};this.tokenMessengerProgramId=i(a.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterProgramId=i(a.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.shimProgramId=i(gt[e]?.[t],`Shim contract for ${t} not found`),this.executorProgramId=i(tn[e],`Executor contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new Pt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new r.PublicKey(u.usdcContract.get(this.network,this.chain)),i=new r.SolanaAddress(e).unwrap(),c=Ie(a,i),l=new r.SolanaAddress(s.referrer?.address?.toString()??i).unwrap(),d=new r.Transaction$1;if(d.feePayer=i,s.referrerFee>0n){const E=Ie(a,l,!0);await this.connection.getAccountInfo(E)||d.add(es(i,E,l,a)),d.add(ts(c,E,i,s.referrerFee))}const p=u.circleChainId.get(this.network,t.chain),f=t.address.toUniversalAddress(),g=r.Keypair.generate();d.add(await ls.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,a,p,i,c,f,s.remainingAmount,g.publicKey));const y=new be.Program(Na,this.shimProgramId,{connection:null}),b=u.deserialize$1(yt,s.signedQuote),w=ds.deriveAddress("message_transmitter",this.messageTransmitterProgramId);d.add(await y.methods.relayLastMessage({execAmount:new r.BN(s.estimatedCost.toString()),recipientChain:u.toChainId(t.chain),signedQuoteBytes:u.Buffer.from(s.signedQuote),relayInstructions:u.Buffer.from(s.relayInstructions)}).accounts({payer:i,messageTransmitter:w,payee:new r.PublicKey(b.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:d,signers:[g]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new r.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}const za="0.2.0",Ka="message_transmitter_v2",La=[{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"message_transmitter"}]}},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1,address:"CCTPV2Sm4AdWt5296sk4P66VBZ7bEhcARwFaaS9YPbeC"},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"isNonceUsed",accounts:[{name:"usedNonce",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[],returns:"bool"},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"message_transmitter_authority"},{kind:"account",type:"publicKey",path:"receiver"}]}},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonce",isMut:!0,isSigner:!1,docs:["Each nonce is stored in a separate PDA"]},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0,pda:{seeds:[{kind:"const",type:"string",value:"sender_authority"}],programId:{kind:"account",type:"publicKey",path:"senderProgram"}}},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,address:"11111111111111111111111111111111"}],args:[{name:"params",type:{defined:"SendMessageParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0,relations:["messageTransmitter"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"__event_authority"}]}},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]}],Ga=[{name:"MessageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"createdAt",type:"i64"},{name:"message",type:"bytes"}]}},{name:"MessageTransmitter",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"}]}},{name:"UsedNonce",type:{kind:"struct",fields:[{name:"isUsed",type:"bool"}]}}],Wa=[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"},{name:"destinationMessage",type:"bytes"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"minFinalityThreshold",type:"u32"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}}],Qa=[{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:{array:["u8",32]},index:!1},{name:"sender",type:"publicKey",index:!1},{name:"finalityThresholdExecuted",type:"u32",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"Unpause",fields:[]}],qa=[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"},{code:6032,name:"InvalidDestinationMessage",msg:"Invalid destination message"},{code:6033,name:"EventAccountWindowNotExpired",msg:"Event account window not expired"},{code:6034,name:"DestinationDomainIsLocalDomain",msg:"Destination domain is local domain"}],Ha={version:za,name:Ka,instructions:La,accounts:Ga,types:Wa,events:Qa,errors:qa},Ja="0.2.0",Xa="token_messenger_minter_v2",Za=JSON.parse('[{"name":"acceptOwnership","accounts":[{"name":"pendingOwner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AcceptOwnershipParams"}}]},{"name":"addLocalToken","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"localTokenMint","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AddLocalTokenParams"}}]},{"name":"addRemoteTokenMessenger","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"AddRemoteTokenMessengerParams"}}]},{"name":"burnTokenCustody","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":false,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenMint","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"BurnTokenCustodyParams"}}]},{"name":"denylistAccount","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"denylister","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"denylistAccount","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DenylistParams"}}]},{"name":"depositForBurn","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"eventRentPayer","isMut":true,"isSigner":true},{"name":"senderAuthorityPda","isMut":false,"isSigner":false},{"name":"burnTokenAccount","isMut":true,"isSigner":false},{"name":"denylistAccount","isMut":false,"isSigner":false},{"name":"messageTransmitter","isMut":true,"isSigner":false},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"burnTokenMint","isMut":true,"isSigner":false},{"name":"messageSentEventData","isMut":true,"isSigner":true},{"name":"messageTransmitterProgram","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DepositForBurnParams"}}]},{"name":"depositForBurnWithHook","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"eventRentPayer","isMut":true,"isSigner":true},{"name":"senderAuthorityPda","isMut":false,"isSigner":false},{"name":"burnTokenAccount","isMut":true,"isSigner":false},{"name":"denylistAccount","isMut":false,"isSigner":false},{"name":"messageTransmitter","isMut":true,"isSigner":false},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"burnTokenMint","isMut":true,"isSigner":false},{"name":"messageSentEventData","isMut":true,"isSigner":true},{"name":"messageTransmitterProgram","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"DepositForBurnWithHookParams"}}]},{"name":"handleReceiveFinalizedMessage","accounts":[{"name":"authorityPda","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"tokenPair","isMut":false,"isSigner":false},{"name":"feeRecipientTokenAccount","isMut":true,"isSigner":false},{"name":"recipientTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"HandleReceiveMessageParams"}}]},{"name":"handleReceiveUnfinalizedMessage","accounts":[{"name":"authorityPda","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"tokenPair","isMut":false,"isSigner":false},{"name":"feeRecipientTokenAccount","isMut":true,"isSigner":false},{"name":"recipientTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"HandleReceiveMessageParams"}}]},{"name":"initialize","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"upgradeAuthority","isMut":false,"isSigner":true},{"name":"authorityPda","isMut":false,"isSigner":false},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"tokenMessengerMinterProgramData","isMut":false,"isSigner":false},{"name":"tokenMessengerMinterProgram","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"InitializeParams"}}]},{"name":"linkTokenPair","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"tokenPair","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"LinkTokenPairParams"}}]},{"name":"pause","accounts":[{"name":"pauser","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"PauseParams"}}]},{"name":"removeLocalToken","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"custodyTokenAccount","isMut":true,"isSigner":false},{"name":"custodyTokenMint","isMut":true,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"RemoveLocalTokenParams"}}]},{"name":"removeRemoteTokenMessenger","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"remoteTokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"RemoveRemoteTokenMessengerParams"}}]},{"name":"setFeeRecipient","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetFeeRecipientParams"}}]},{"name":"setMaxBurnAmountPerMessage","accounts":[{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"localToken","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMaxBurnAmountPerMessageParams"}}]},{"name":"setMinFee","accounts":[{"name":"minFeeController","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMinFeeParams"}}]},{"name":"setMinFeeController","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetMinFeeControllerParams"}}]},{"name":"setTokenController","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"SetTokenControllerParams"}}]},{"name":"transferOwnership","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"TransferOwnershipParams"}}]},{"name":"undenylistAccount","accounts":[{"name":"payer","isMut":true,"isSigner":true},{"name":"denylister","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"denylistAccount","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UndenylistParams"}}]},{"name":"unlinkTokenPair","accounts":[{"name":"payee","isMut":true,"isSigner":true},{"name":"tokenController","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":false,"isSigner":false},{"name":"tokenPair","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UnlinkTokenPairParams"}}]},{"name":"unpause","accounts":[{"name":"pauser","isMut":false,"isSigner":true},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UnpauseParams"}}]},{"name":"updateDenylister","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UpdateDenylisterParams"}}]},{"name":"updatePauser","accounts":[{"name":"owner","isMut":false,"isSigner":true},{"name":"tokenMessenger","isMut":false,"isSigner":false},{"name":"tokenMinter","isMut":true,"isSigner":false},{"name":"eventAuthority","isMut":false,"isSigner":false},{"name":"program","isMut":false,"isSigner":false}],"args":[{"name":"params","type":{"defined":"UpdatePauserParams"}}]}]'),Ya=[{name:"DenylistedAccount",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"LocalToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}},{name:"MessageTransmitter",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"}]}},{name:"RemoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"TokenMessenger",type:{kind:"struct",fields:[{name:"denylister",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"},{name:"feeRecipient",type:"publicKey"},{name:"minFeeController",type:"publicKey"},{name:"minFee",type:"u32"}]}},{name:"TokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"TokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}}],ei=[{name:"Denylisted",fields:[{name:"account",type:"publicKey",index:!1}]},{name:"DenylisterChanged",fields:[{name:"oldDenylister",type:"publicKey",index:!1},{name:"newDenylister",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1},{name:"maxFee",type:"u64",index:!1},{name:"minFinalityThreshold",type:"u32",index:!1},{name:"hookData",type:"bytes",index:!1}]},{name:"FeeRecipientSet",fields:[{name:"newFeeRecipient",type:"publicKey",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"MinFeeControllerSet",fields:[{name:"newMinFeeController",type:"publicKey",index:!1}]},{name:"MinFeeSet",fields:[{name:"newMinFee",type:"u32",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1},{name:"feeCollected",type:"u64",index:!1}]},{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"UnDenylisted",fields:[{name:"account",type:"publicKey",index:!1}]},{name:"Unpause",fields:[]}],ti=[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMinterState",msg:"Invalid token minter state"},{code:6002,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6003,name:"InvalidTokenPairState",msg:"Invalid token pair state"},{code:6004,name:"InvalidLocalTokenState",msg:"Invalid local token state"},{code:6005,name:"InvalidPauser",msg:"Invalid pauser"},{code:6006,name:"InvalidTokenController",msg:"Invalid token controller"},{code:6007,name:"BurnAmountExceeded",msg:"Burn amount exceeded"},{code:6008,name:"InvalidAmount",msg:"Invalid amount"}],ni=[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"DenylistParams",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"maxFee",type:"u64"},{name:"minFinalityThreshold",type:"u32"}]}},{name:"DepositForBurnWithHookParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"},{name:"maxFee",type:"u64"},{name:"minFinalityThreshold",type:"u32"},{name:"hookData",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"finalityThresholdExecuted",type:"u32"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"denylister",type:"publicKey"},{name:"feeRecipient",type:"publicKey"},{name:"minFeeController",type:"publicKey"},{name:"minFee",type:"u32"},{name:"messageBodyVersion",type:"u32"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"SetFeeRecipientParams",type:{kind:"struct",fields:[{name:"newFeeRecipient",type:"publicKey"}]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetMinFeeControllerParams",type:{kind:"struct",fields:[{name:"newMinFeeController",type:"publicKey"}]}},{name:"SetMinFeeParams",type:{kind:"struct",fields:[{name:"newMinFee",type:"u32"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UndenylistParams",type:{kind:"struct",fields:[{name:"account",type:"publicKey"}]}},{name:"UnlinkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateDenylisterParams",type:{kind:"struct",fields:[{name:"newDenylister",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}}],si={version:Ja,name:Xa,instructions:Za,accounts:Ya,events:ei,errors:ti,types:ni},ri={version:"0.1.0",name:"executor",instructions:[{name:"requestForExecution",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"payee",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RequestForExecutionArgs"}}]}],types:[{name:"RequestForExecutionArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"dstChain",type:"u16"},{name:"dstAddr",type:{array:["u8",32]}},{name:"refundAddr",type:"publicKey"},{name:"signedQuoteBytes",type:"bytes"},{name:"requestBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}],errors:[{code:6e3,name:"InvalidArguments",msg:"InvalidArguments"},{code:6001,name:"QuoteSrcChainMismatch",msg:"QuoteSrcChainMismatch"},{code:6002,name:"QuoteDstChainMismatch",msg:"QuoteDstChainMismatch"},{code:6003,name:"QuoteExpired",msg:"QuoteExpired"},{code:6004,name:"QuotePayeeMismatch",msg:"QuotePayeeMismatch"}]},ai=u.Buffer.from("4552433201","hex"),Z=(n,e,t)=>{const s=[u.Buffer.from(be.index.bytes.utf8.encode(n))];if(t)for(const i of t)typeof i=="string"?s.push(u.Buffer.from(be.index.bytes.utf8.encode(i))):Array.isArray(i)||u.Buffer.isBuffer(i)?s.push(u.Buffer.from(i)):s.push(u.Buffer.from(i.toBuffer()));const a=r.PublicKey.findProgramAddressSync(s,e);return{publicKey:a[0],bump:a[1]}};class xt{network;chain;connection;contracts;tokenMessengerV2ProgramId;messageTransmitterV2ProgramId;executorProgramId;constructor(e,t,s,a){this.network=e,this.chain=t,this.connection=s,this.contracts=a;const i=(l,d)=>{if(!l)throw new Error(d);return new r.PublicKey(l)},c=nn[e]?.[t];if(!c)throw new Error(`Circle V2 contracts not found for ${e} ${t}`);this.tokenMessengerV2ProgramId=i(c.tokenMessengerV2,`Circle Token Messenger V2 contract for domain ${t} not found`),this.messageTransmitterV2ProgramId=i(c.messageTransmitterV2,`Circle Message Transmitter V2 contract for domain ${t} not found`),this.executorProgramId=i(tn[e],`Executor contract for ${e} not found`)}static async fromRpc(e,t){const[s,a]=await r.SolanaPlatform.chainFromRpc(e),i=t[a];if(i.network!==s)throw new Error(`Network mismatch: ${i.network} != ${s}`);return new xt(s,a,e,i.contracts)}async*transfer(e,t,s){const a=new r.PublicKey(u.usdcContract.get(this.network,this.chain)),i=new r.SolanaAddress(e).unwrap(),c=Ie(a,i),l=new r.SolanaAddress(s.referrer?.address?.toString()??i).unwrap(),d=[];if(s.referrerFee>0n){const A=Ie(a,l,!0);await this.connection.getAccountInfo(A)||d.push(es(i,A,l,a)),d.push(ts(c,A,i,s.referrerFee))}const p=Pe(this.network,t.chain),f=t.address.toUniversalAddress(),g=r.Keypair.generate(),y=await this.createCCTPv2DepositInstruction(a,p,i,c,f,s.remainingAmount,g.publicKey);d.push(y);const b=new be.Program(ri,this.executorProgramId,{connection:null}),w=u.deserialize$1(yt,s.signedQuote);d.push(await b.methods.requestForExecution({amount:new r.BN(s.estimatedCost.toString()),dstChain:u.toChainId(t.chain),dstAddr:[...t.address.toUniversalAddress().toUint8Array()],refundAddr:i,signedQuoteBytes:u.Buffer.from(s.signedQuote),requestBytes:ai,relayInstructions:u.Buffer.from(s.relayInstructions)}).accounts({payer:i,payee:new r.PublicKey(w.quote.payeeAddress),systemProgram:r.SystemProgram.programId}).instruction());const E=Vt[this.network]?.[this.chain],P=await this.createVersionedTransaction(i,d,E);yield this.createUnsignedTx({transaction:P,signers:[g]},"SvmCCTPv2Executor.Transfer")}async isTransferCompleted(e){const t=u.Buffer.alloc(4);t.writeUInt32LE(e.sourceDomain,0);const s=u.Buffer.from(e.nonce).subarray(0,8),[a]=r.PublicKey.findProgramAddressSync([u.Buffer.from("used_nonces"),t,s],this.messageTransmitterV2ProgramId);try{return await this.connection.getAccountInfo(a)!==null}catch{return!1}}async*redeem(e,t,s){const a=new r.SolanaAddress(e).unwrap(),i=[];i.push(await this.createReceiveMessageInstructionV2(this.messageTransmitterV2ProgramId,this.tokenMessengerV2ProgramId,new r.PublicKey(u.usdcContract.get(this.network,this.chain)),t,s,a));const c=Vt[this.network]?.[this.chain],l=await this.createVersionedTransaction(a,i,c);yield this.createUnsignedTx({transaction:l,signers:[]},"SvmCCTPv2Executor.Redeem")}async getCurrentBlock(){const e=await this.connection.getSlot();return BigInt(e)}async createVersionedTransaction(e,t,s){const a=s?(await this.connection.getAddressLookupTable(new r.PublicKey(s))).value:null,{blockhash:i}=await this.connection.getLatestBlockhash(),c=new r.TransactionMessage({payerKey:e,recentBlockhash:i,instructions:t}).compileToV0Message(a?[a]:[]);return new r.VersionedTransaction(c)}async createReceiveMessageInstructionV2(e,t,s,a,i,c){const l=u.Buffer.from(un(a)),d=u.Buffer.from(u.stripPrefix("0x",i),"hex"),p=new r.PublicKey(s),f=new r.PublicKey(u.Buffer.from(a.messageBody.burnToken.toUint8Array())),g=new r.PublicKey(a.messageBody.mintRecipient.toUint8Array()),y=a.sourceDomain.toString(),b=this.nonceAccountV2(e,l),w=Z("message_transmitter",e),E=Z("token_messenger",t),P=Z("token_minter",t),A=Z("local_token",t,[p]),j=Z("remote_token_messenger",t,[y]),te=Z("token_pair",t,[y,f]),ae=Z("custody",t,[p]),ie=Z("__event_authority",t),pe=await new be.Program(si,this.messageTransmitterV2ProgramId,{connection:this.connection}).account.tokenMessenger.fetch(E.publicKey),ce=Ie(p,pe.feeRecipient),Oe=[{isSigner:!1,isWritable:!1,pubkey:E.publicKey},{isSigner:!1,isWritable:!1,pubkey:j.publicKey},{isSigner:!1,isWritable:!0,pubkey:P.publicKey},{isSigner:!1,isWritable:!0,pubkey:A.publicKey},{isSigner:!1,isWritable:!1,pubkey:te.publicKey},{isSigner:!1,isWritable:!0,pubkey:ce},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:ae.publicKey},{isSigner:!1,isWritable:!1,pubkey:Me},{isSigner:!1,isWritable:!1,pubkey:ie.publicKey},{isSigner:!1,isWritable:!1,pubkey:t}],je=new be.Program(Ha,this.messageTransmitterV2ProgramId,{connection:null});return await je.methods.receiveMessage({message:l,attestation:d}).accounts({payer:c,caller:c,messageTransmitter:w.publicKey,usedNonce:b,receiver:t,program:je.programId}).remainingAccounts(Oe).instruction()}nonceAccountV2(e,t){const i=t.slice(12,44);return Z("used_nonce",e,[i]).publicKey}async createCCTPv2DepositInstruction(e,t,s,a,i,c,l){const[d]=r.PublicKey.findProgramAddressSync([u.Buffer.from("token_messenger")],this.tokenMessengerV2ProgramId),[p]=r.PublicKey.findProgramAddressSync([u.Buffer.from("local_token"),e.toBuffer()],this.tokenMessengerV2ProgramId),[f]=r.PublicKey.findProgramAddressSync([u.Buffer.from("remote_token_messenger"),u.Buffer.from(t.toString())],this.tokenMessengerV2ProgramId),[g]=r.PublicKey.findProgramAddressSync([u.Buffer.from("token_minter")],this.tokenMessengerV2ProgramId),[y]=r.PublicKey.findProgramAddressSync([u.Buffer.from("sender_authority")],this.tokenMessengerV2ProgramId),[b]=r.PublicKey.findProgramAddressSync([u.Buffer.from("__event_authority")],this.tokenMessengerV2ProgramId),[w]=r.PublicKey.findProgramAddressSync([u.Buffer.from("denylist_account"),s.toBuffer()],this.tokenMessengerV2ProgramId),[E]=r.PublicKey.findProgramAddressSync([u.Buffer.from("message_transmitter")],this.messageTransmitterV2ProgramId),P=u.Buffer.from([215,60,61,46,114,55,128,176]),A=u.Buffer.alloc(8);A.writeBigUInt64LE(c);const j=u.Buffer.alloc(4);j.writeUInt32LE(t);const te=u.Buffer.from(i.toUint8Array()),ae=u.Buffer.alloc(32),ie=u.Buffer.alloc(8);ie.writeBigUInt64LE(0n);const oe=u.Buffer.alloc(4);oe.writeUInt32LE(0);const pe=u.Buffer.concat([P,A,j,te,ae,ie,oe]),ce=[{pubkey:s,isSigner:!0,isWritable:!1},{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:y,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:w,isSigner:!1,isWritable:!1},{pubkey:E,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:p,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:l,isSigner:!0,isWritable:!0},{pubkey:this.messageTransmitterV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:Me,isSigner:!1,isWritable:!1},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:b,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:ce,programId:this.tokenMessengerV2ProgramId,data:pe})}createUnsignedTx(e,t,s=!1){return new r.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}u.registerProtocol(r._platform,"CCTPExecutor",Pt);u.registerProtocol(r._platform,"CCTPv2Executor",xt);var F;(function(n){n.Pending="pending",n.Failed="failed",n.Unsupported="unsupported",n.Submitted="submitted",n.Underpaid="underpaid",n.Aborted="aborted"})(F||(F={}));var en;(function(n){n.ERM1="ERM1",n.ERV1="ERV1",n.ERN1="ERN1",n.ERC1="ERC1",n.ERC2="ERC2"})(en||(en={}));async function ii(n){const e=`${ft[n]}/v0/capabilities`;try{return(await u.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${n}.`)}}async function oi(n,e,t,s){const a=`${ft[n]}/v0/quote`;try{return(await u.axios.post(a,{srcChain:u.toChainId(e),dstChain:u.toChainId(t),relayInstructions:s})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function Ot(n,e,t){const s=`${ft[n]}/v0/status/tx`;try{return(await u.axios.post(s,{txHash:e,chainId:u.toChainId(t)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const ci=65535n;function ui(n,e,t){if(e>ci)throw new Error("dBps exceeds max u16");let s=e,a=n,i=0n;if(e>0){if(t!==void 0&&n>0){const c=u.parse(t.toString(),6),l=u.units(c)/n,d=e<l?e:l;i=n*d/100000n,s=d}else i=n*e/100000n;a=n-i}return{referrerFee:i,remainingAmount:a,referrerFeeDbps:s}}function li(n){return new Promise(e=>setTimeout(e,n))}async function mt(n,e,t=u.DEFAULT_TASK_TIMEOUT){const s=Pe(e,n.chain);return u.retry(async()=>{const a=`${He[e]}/messages/${s}?transactionHash=${n.txid}`;try{const c=(await u.axios.get(a)).data.messages[0];if(!c)return null;if(c.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return c.status==="pending_confirmations"?null:{message:Ms(u.hex.decode(c.message)),attestation:c.attestation}}catch(i){if(!i||typeof i=="object"&&(u.axios.isAxiosError(i)&&i.response?.status===404||"status"in i&&i.status===404))return null;throw i}},2e3,t,"CCTPv2:GetMessage")}async function di(n,e,t){const s=Pe(n,e),a=Pe(n,t),i=`${He[n]}/fastBurn/USDC/fees/${s}/${a}`,c=await u.axios.get(i);return BigInt(c.data.minimumFee)}async function mi(n,e){const t=u.hex.encode(e.attestation.message.nonce,!0),s=`${He[n]}/reattest/${t}`,a=await u.axios.post(s);if(a.data.error){if(a.data.error.includes("Message is already finalized"))return e.attestation;throw new Error(`Error re-attesting message: ${a.data.error}`)}const i=rn(n,e.attestation.message.sourceDomain);return u.retry(async()=>{const c=await mt({txid:e.id,chain:i},n);return!c||c.message.messageBody.expirationBlock!==0n?null:c},2e3,u.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function fi(n){const e=`${He[n]}/fastBurn/USDC/allowance`,t=await u.axios.get(e);return u.units(u.parse(t.data.allowance,6))}function jt(n,e,t){const s=u.usdcContract.get(e.network,e.chain);if(!(s&&u.isSameToken(n,u.Wormhole.tokenId(e.chain,s))))return[];const{network:a,chain:i}=t,c=u.usdcContract.get(a,i);return c?[u.Wormhole.chainAddress(i,c)]:[]}let Ue;async function Bt(n,e,t,s){const{fromChain:a,toChain:i}=n;if(!u.usdcContract.get(a.network,a.chain))throw new Error("Invalid transfer, no USDC contract on source");const l=u.usdcContract.get(i.network,i.chain);if(!l)throw new Error("Invalid transfer, no USDC contract on destination");let d;if(t.referrerFeeDbps>0n&&(d=t.referrerAddresses?.[a.network]?.[a.chain],!d))throw new Error(`Referrer address not configured for ${a.chain}`);const p=d?u.Wormhole.chainAddress(a.chain,d):void 0,{referrerFee:f,remainingAmount:g,referrerFeeDbps:y}=ui(u.units(e.normalizedParams.amount),t.referrerFeeDbps,t.referrerFeeThreshold);if(g<=0n)throw new Error("Amount after fee <= 0");const b=ys[i.network]?.[i.chain];if(!b)throw new Error("Gas limit not found");const w=await ii(a.network);if(!w[u.toChainId(a.chain)])throw new Error("Unsupported source chain");const P=w[u.toChainId(i.chain)];if(!P||!P.requestPrefixes.includes(s))throw new Error("Unsupported destination chain");const{recipient:A}=n;let j=!0;if(A&&i.chain==="Solana"){const as=u.Wormhole.parseAddress("Solana",l),is=await i.getTokenAccount(A.address,as),Rt=await i.getRpc();j=await Rt.getAccountInfo(new r.SolanaAddress(is.address).unwrap())!==null,!j&&!Ue&&(Ue=BigInt(await Rt.getMinimumBalanceForRentExemption(165)))}let te=0n;i.chain==="Solana"&&(te+=hs,!j&&Ue&&(te+=Ue),s==="ERC2"&&(te+=1200000n));const ae=[];ae.push({request:{type:"GasInstruction",gasLimit:b,msgValue:te}});const ie=BigInt(P.gasDropOffLimit),oe=e.options.nativeGas&&ie>0n?BigInt(Math.round(e.options.nativeGas*100))*ie/100n:0n;(oe>0n||!j)&&ae.push({request:{type:"GasDropOffInstruction",dropOff:oe,recipient:A?A.address.toUniversalAddress():new u.UniversalAddress(new Uint8Array(32))}});const pe=u.serialize(ln,{requests:ae}),ce=await oi(a.network,a.chain,i.chain,u.hex.encode(pe,!0));if(!ce.estimatedCost)throw new Error("No estimated cost");const Oe=u.hex.decode(ce.signedQuote),je=u.deserialize$1(yt,Oe),rs=BigInt(ce.estimatedCost);return{signedQuote:Oe,relayInstructions:pe,estimatedCost:rs,referrer:p,referrerFee:f,remainingAmount:g,referrerFeeDbps:y,expiryTime:je.quote.expiryTime,gasDropOff:oe}}async function ns(n,e,t,s){u.deserialize$1(ln,s.details.relayInstructions).requests.forEach(({request:g})=>{if(g.type==="GasDropOffInstruction"&&!g.recipient.equals(t.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const i=u.Wormhole.parseAddress(e.chain(),e.address()),c=await gi(t,n);let l;s.protocol==="CCTPExecutor"?l=await(await n.fromChain.getProtocol(s.protocol)).transfer(i,c,s.details):l=await(await n.fromChain.getProtocol(s.protocol)).transfer(i,c,s.details);const d=await u.signSendWait(n.fromChain,l,e);let p=0;return(async()=>{for(;p<20;){try{const[g]=await Ot(n.fromChain.network,d.at(-1).txid,n.fromChain.chain);if(g)break}catch{}p++,await li(2e3)}})(),{from:n.fromChain.chain,to:n.toChain.chain,state:u.TransferState.SourceInitiated,originTxs:d}}async function gi(n,e){if(n.chain!=="Solana")return n;const t=u.usdcContract.get(e.toChain.network,e.toChain.chain);if(!t)throw new Error("No USDC contract found for Solana");const s=u.Wormhole.parseAddress("Solana",t);return e.toChain.getTokenAccount(n.address,s)}function pi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends hi{static config=n}return e}class hi extends u.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPExecutorRoute",provider:"Circle CCTP"};static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return[...Object.keys(sn[e]??{})]}static async supportedDestinationTokens(e,t,s){return!Be(t.network,t.chain)||!Be(s.network,s.chain)?[]:jt(e,t,s)}getDefaultOptions(){return{nativeGas:0}}async validate(e,t){const{fromChain:s,toChain:a}=e;return!Be(s.network,s.chain)||!Be(a.network,a.chain)?{valid:!1,error:new Error("Unsupported source or destination chain"),params:t}:t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC1"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i,f=s.chain==="Polygon"?2e3*200:u.estimateFinalityTime(s.chain)+1e3,[g,y]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,g)},destinationNativeGas:u.fromBaseUnits(d,y),eta:f,expires:p,details:i}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}async initiate(e,t,s,a){if(!s.details)throw new Error("Missing quote details");return await ns(e,t,a,{protocol:"CCTPExecutor",details:s.details})}async*track(e,t){if(u.isCompleted(e)||u.isFailed(e))return e;let s=t||3600*1e3;for(;s>0;){const a=Date.now();if(u.isSourceInitiated(e)||u.isSourceFinalized(e)||u.isAttested(e))try{const[i]=await Ot(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!i)throw new Error("No transaction status found");const c=i?.status;if((c===F.Failed||c===F.Underpaid||c===F.Unsupported||c===F.Aborted)&&(e={...e,state:u.TransferState.Failed,error:new u.RelayFailedError(`Relay failed with status: ${c}`)}),c===F.Submitted&&(e={...e,state:u.TransferState.DestinationFinalized,attestation:{id:i.id,attestation:{}}}),yield e,u.isCompleted(e)||u.isFailed(e))return e}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),s-=Date.now()-a}return e}}class ss extends u.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return Object.keys(qe[e]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(e,t,s,a){if(!s.details)throw new Error("Missing quote details");return await ns(e,t,a,{protocol:"CCTPv2Executor",details:s.details})}async*track(e,t){if(u.isCompleted(e))return e;let s=t||3600*1e3;for(;s>0;){const a=Date.now();if(u.isSourceInitiated(e)||u.isSourceFinalized(e)||u.isAttested(e)||u.isFailed(e))try{const i=e.originTxs.at(-1).txid;if(u.isSourceInitiated(e)||u.isSourceFinalized(e)){const c=await mt({chain:e.from,txid:i},this.wh.network);c&&(e={...e,state:u.TransferState.Attested,attestation:{id:i,attestation:c}}),yield e}if(u.isAttested(e)){const[c]=await Ot(this.wh.network,i,e.from);if(!c)throw new Error("No transaction status found");const l=c?.status;l===F.Submitted?e={...e,state:u.TransferState.DestinationFinalized}:(l===F.Failed||l===F.Underpaid||l===F.Unsupported||l===F.Aborted)&&(e={...e,state:u.TransferState.Failed,error:new u.RelayFailedError(`Relay failed with status: ${l}`)})}if(u.isFailed(e)){if(!e.attestation)throw new Error("Receipt is missing attestation");const c=e.attestation;await(await this.wh.getChain(e.to).getProtocol("CCTPv2Executor")).isTransferCompleted(c.attestation.message)&&(e={...e,state:u.TransferState.DestinationFinalized,attestation:c})}if(yield e,u.isCompleted(e))return e}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),s-=Date.now()-a}return e}async complete(e,t){if(!u.isAttested(t)&&!u.isFailed(t))throw new Error("Transfer is not attested");if(!t.attestation)throw new Error("No attestation found");const s=this.wh.getChain(t.to),a=await s.getProtocol("CCTPv2Executor");let{attestation:i,message:c}=t.attestation.attestation;const{expirationBlock:l}=c.messageBody,d=await a.getCurrentBlock();if(l!==0n&&l<d){const y=await mi(s.network,t.attestation);if(!y)throw new Error("Failed to reattest message");i=y.attestation,c=y.message}const p=u.Wormhole.parseAddress(e.chain(),e.address()),f=a.redeem(p,c,i),g=await u.signSendWait(this.wh.getChain(t.to),f,e);return{...t,state:u.TransferState.DestinationInitiated,attestation:t.attestation,destinationTxs:g}}async resume(e){const t=await mt(e,this.wh.network);if(!t)throw new Error("No attestation found");const{message:s}=t,a=rn(this.wh.network,s.destinationDomain);return await(await this.wh.getChain(a).getProtocol("CCTPv2Executor")).isTransferCompleted(s)?{from:e.chain,to:a,state:u.TransferState.DestinationFinalized,originTxs:[e],attestation:{id:e.txid,attestation:t}}:{from:e.chain,to:a,state:u.TransferState.Attested,originTxs:[e],attestation:{id:e.txid,attestation:t}}}}function yi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends Dt{static config=n}return e}class Dt extends ss{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return bs(e.network,e.chain)&&rt(t.network,t.chain)}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?jt(e,t,s):[]}async validate(e,t){return Dt.isPathSupported(e.fromChain,e.toChain)?t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}:{valid:!1,error:new Error("Can only transfer from a Circle V2 fast chain to a Circle V2 chain"),params:t}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i;if(await fi(s.network)<=c)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const g=await di(s.network,s.chain,a.chain),y=(c*g+10000n-1n)/10000n,b=c-y;if(b<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const w=an[s.network]?.[s.chain],[E,P]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(b,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,E)},destinationNativeGas:u.fromBaseUnits(d,P),eta:w,expires:p,details:{...i,minFinalityThreshold:Ne.CONFIRMED,fastTransferMaxFee:y}}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}}function bi(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends Ut{static config=n}return e}class Ut extends ss{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return rt(e.network,e.chain)&&rt(t.network,t.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?jt(e,t,s):[]}async validate(e,t){return Ut.isPathSupported(e.fromChain,e.toChain)?t.options?.nativeGas&&(t.options.nativeGas<0||t.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:t}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(t.amount)},options:t.options??this.getDefaultOptions(),...t}}:{valid:!1,error:new Error("Can only transfer between Circle V2 chains"),params:t}}async quote(e,t){const{fromChain:s,toChain:a}=e;try{const i=await Bt(e,t,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:l,gasDropOff:d,expiryTime:p}=i,f=s.chain==="Polygon"?2e3*200:u.estimateFinalityTime(s.chain)+1e3,[g,y]=await Promise.all([s.getDecimals("native"),a.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:u.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:u.nativeTokenId(s.chain),amount:u.fromBaseUnits(l,g)},destinationNativeGas:u.fromBaseUnits(d,y),eta:f,expires:p,details:{...i,minFinalityThreshold:Ne.FINALIZED,fastTransferMaxFee:0n}}}catch(i){return{success:!1,error:new Error(i instanceof Error?i.message:`${i}`)}}}}const{executorTokenBridgeRoute:wi}=ms.routes;exports.cctpExecutorRoute=pi;exports.cctpV2FastExecutorRoute=yi;exports.cctpV2StandardExecutorRoute=bi;exports.executorTokenBridgeRoute=wi;