@wormhole-foundation/wormhole-connect 4.0.0-beta.0-development → 4.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.
- package/dist/assets/{aptos-CIKjhZ5R.js → aptos-CaGPw7HM.js} +2 -2
- package/dist/assets/create-54a95t1x.js +1 -0
- package/dist/assets/{evm-Ky_mCHhS.js → evm-Bv0RsFka.js} +2 -2
- package/dist/assets/{index-DW7sWcdW.js → index-B5JfIVKE.js} +1 -1
- package/dist/assets/{index-DHLr3HmO.js → index-BCD-VOiF.js} +1 -1
- package/dist/assets/index-BwhO0jGm.js +1 -0
- package/dist/assets/{index-DpM61P6H.js → index-CMULoTsT.js} +1 -1
- package/dist/assets/{index-DZpeOp3V.js → index-CO4HXUmy.js} +1 -1
- package/dist/assets/{index-Bg3NWSHL.js → index-COw2RtBx.js} +1 -1
- package/dist/assets/{index-DRk-Cj0P.js → index-ClrVAZUa.js} +1 -1
- package/dist/assets/{index-D7RgFG0F.js → index-CzQeh-hT.js} +1 -1
- package/dist/assets/{index-Csghphw2.js → index-DC4mZtDw.js} +1 -1
- package/dist/assets/{index-Cqs_fFht.js → index-DI-xN_q3.js} +1 -1
- package/dist/assets/{index-DVbfoP0w.js → index-DRsHBjoG.js} +1 -1
- package/dist/assets/{index-CdAFGcxx.js → index-DXcQbQ8r.js} +1 -1
- package/dist/assets/{index-DJ52h-dV.js → index-DxHhcWFS.js} +1 -1
- package/dist/assets/{index-g9iLhWvp.js → index-GKTf0CV7.js} +1 -1
- package/dist/assets/{index-DuR9wYhp.js → index-aoYIFErC.js} +1 -1
- package/dist/assets/{index-DfNgilHG.js → index-jixjwN_L.js} +1 -1
- package/dist/assets/{solana-jYIeIu4B.js → solana-DpD0VkQS.js} +2 -2
- package/dist/assets/{sui-B96bqBVv.js → sui-7K04yY2U.js} +2 -2
- package/dist/main.js +75 -75
- package/dist/src/components/TokenBalance.d.ts.map +1 -1
- package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
- package/dist/src/config/testnet/tokens.d.ts.map +1 -1
- package/dist/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
- package/dist/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
- package/dist/src/hooks/useTokenListWithSearch.d.ts +1 -4
- package/dist/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
- package/dist/src/routes/operator.d.ts.map +1 -1
- package/dist/src/routes/sdkv2/route.d.ts +2 -2
- package/dist/src/routes/sdkv2/route.d.ts.map +1 -1
- package/dist/src/telemetry/types.d.ts +1 -0
- package/dist/src/telemetry/types.d.ts.map +1 -1
- package/dist/src/utils/sdkv2.d.ts.map +1 -1
- package/dist/src/utils/wrappedNativeTokens.d.ts +12 -0
- package/dist/src/utils/wrappedNativeTokens.d.ts.map +1 -0
- package/dist/src/views/Terms.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
- package/dist/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
- package/lib/{account-D0Q4K1CI.js → account-24z6tDMM.js} +1 -1
- package/lib/{account-BdDruAAr.mjs → account-BcnWVXmg.mjs} +1 -1
- package/lib/{address-fSXS9iww.mjs → address-BX2fIOro.mjs} +1 -1
- package/lib/{address-BO6rj6uK.js → address-Bc-5yO4D.js} +1 -1
- package/lib/{aptos-BnKScTtI.mjs → aptos-DO_Sexq-.mjs} +7 -7
- package/lib/{aptos-B3C7cnvM.js → aptos-DffuIzI0.js} +2 -2
- package/lib/{aptos-B1VSCmD9.mjs → aptos-Dol0ReEK.mjs} +4 -4
- package/lib/{aptos-DG7QN21P.js → aptos-eGdJuKke.js} +1 -1
- package/lib/{basic-CN2jAqvS.js → basic-B3aoOwRb.js} +1 -1
- package/lib/{basic-BRYkcAmD.mjs → basic-BI1HDLIO.mjs} +4 -4
- package/lib/{basic-Cw13RoYq.mjs → basic-C6oQe5cg.mjs} +4 -4
- package/lib/{basic-DufHOLGA.js → basic-pJmrDH53.js} +1 -1
- package/lib/{blake2b-CT6EW399.mjs → blake2b-CVpPk5O9.mjs} +1 -1
- package/lib/{blake2b-B_Q_lTGN.js → blake2b-DXExLbRg.js} +1 -1
- package/lib/{browser-ponyfill-CnfcLhK-.mjs → browser-ponyfill-DeOApqpH.mjs} +1 -1
- package/lib/{browser-ponyfill-DbGoEOBo.js → browser-ponyfill-VhIu9z_I.js} +1 -1
- package/lib/{chain-BCKkYvDb.js → chain-BxNUWKZE.js} +1 -1
- package/lib/{chain-_dXKRkCE.mjs → chain-CvZsIsLh.mjs} +1 -1
- package/lib/{chunk-KJH4KKG6-RA0hChr8.mjs → chunk-KJH4KKG6-BgebMATq.mjs} +2 -2
- package/lib/{chunk-KJH4KKG6-BXBLZwfY.js → chunk-KJH4KKG6-DNlN4p21.js} +1 -1
- package/lib/{constants-QsbOfMbk.mjs → constants-BPs5UFxq.mjs} +1 -1
- package/lib/constants-BqHCu7gS.js +1 -0
- package/lib/{contract-MkLF5rqi.js → contract-CTycrpaK.js} +1 -1
- package/lib/{contract-C_4H8x77.mjs → contract-KYuIk_vR.mjs} +1 -1
- package/lib/{core-Cpb3gtg_.js → core-BN_eDiBJ.js} +3 -3
- package/lib/{core-ntLR7o2S.mjs → core-BZzw8R4f.mjs} +6 -6
- package/lib/{create-naslyPfU.mjs → create-BvzkkBPW.mjs} +1 -1
- package/lib/{create-CfgTxAS-.js → create-CGZYy2vu.js} +1 -1
- package/lib/{evm-aSG_vFbw.js → evm-BdbjSrMR.js} +2 -2
- package/lib/{evm-B20n3mf_.mjs → evm-CUhPokEi.mjs} +7 -7
- package/lib/{evm-C6xp3v8Z.mjs → evm-IC5cigOX.mjs} +9 -9
- package/lib/{evm-B3G2Vkzg.js → evm-bdCQPjof.js} +2 -2
- package/lib/executor.js +1 -1
- package/lib/executor.mjs +815 -572
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-B9ybSY9R.mjs → index-1boJ8yzF.mjs} +5 -5
- package/lib/{index-BJcbyvof.js → index-943_uCEO.js} +1 -1
- package/lib/{index-Dq7WWqFe.js → index-B7HBnPLP.js} +1 -1
- package/lib/{index-DQX74QAE.js → index-BFBwRlid.js} +1 -1
- package/lib/{index-C6XNAQ4w.js → index-BZZZ8OeS.js} +1 -1
- package/lib/{index-CU73EUQW.js → index-BeBO_sCU.js} +1 -1
- package/lib/{index-BTUx12aa.js → index-Bhwzpq1T.js} +1 -1
- package/lib/{index-MsaML_Ju.mjs → index-Bicx897u.mjs} +2 -2
- package/lib/{index-Dajw3Alx.mjs → index-BlWksu-f.mjs} +1 -1
- package/lib/{index-QlIJYJce.js → index-Blvg4PFN.js} +66 -66
- package/lib/{index-DS8bl8fA.mjs → index-Bn0hkKKz.mjs} +4 -4
- package/lib/{index-tztRp3yJ.js → index-BnMkdrhM.js} +1 -1
- package/lib/{index-BojkMsXD.js → index-BoKTcLq-.js} +1 -1
- package/lib/{index-BRYq_Nt2.mjs → index-Bp4ojxz6.mjs} +4 -4
- package/lib/{index-Cnznwcdb.js → index-BqabgGIh.js} +1 -1
- package/lib/{index-DxYgNWMY.mjs → index-BtEjOWoP.mjs} +3 -3
- package/lib/{index-Bhd_YhUf.js → index-C9Bk-rKp.js} +1 -1
- package/lib/{index-YAL4zolc.js → index-C9uGqcwH.js} +1 -1
- package/lib/{index-BQvEIlB2.mjs → index-CBGUPQXa.mjs} +3 -3
- package/lib/{index-IHxtA-NL.js → index-CGpn3INM.js} +1 -1
- package/lib/{index-DSmKiYkD.mjs → index-CQ0RB2r3.mjs} +5 -5
- package/lib/{index-7_BfcP8x.mjs → index-CR3DmYPt.mjs} +2105 -2021
- package/lib/{index-BRyW-hBN.mjs → index-CTpINVAG.mjs} +2 -2
- package/lib/{index-C3LC73WN.js → index-CbFvm_Mr.js} +1 -1
- package/lib/{index-bNUantLb.js → index-CjjP3Qp5.js} +1 -1
- package/lib/{index-DqzqJgVc.mjs → index-CkvxfaqA.mjs} +3 -3
- package/lib/{index-DfDB5FLw.js → index-ClMpLrxa.js} +1 -1
- package/lib/{index-B7VNYedX.mjs → index-CtU_hkYp.mjs} +4 -4
- package/lib/index-Cv9hvmqc.js +1 -0
- package/lib/{index-DMOY218i.js → index-CzRVzbTC.js} +1 -1
- package/lib/{index-B4S4sz6p.mjs → index-Czxl_5Tr.mjs} +5 -5
- package/lib/{index-Cb9lswnP.js → index-D61fXWwH.js} +8 -8
- package/lib/{index-D0XQIiQn.js → index-D6qJDbzm.js} +1 -1
- package/lib/{index-C3L-xKvN.mjs → index-DJs1h8_N.mjs} +4839 -4850
- package/lib/{index-BD0gcmCp.mjs → index-DPpi4Don.mjs} +5 -5
- package/lib/{index-D5ENAOm3.js → index-DmsirrTI.js} +1 -1
- package/lib/{index-DnO0ZdKy.mjs → index-DpN0dULN.mjs} +1 -1
- package/lib/{index-BNuKzxGJ.js → index-DydXCN0v.js} +1 -1
- package/lib/{index-D-H8WyKb.mjs → index-N8cPdMnf.mjs} +1 -1
- package/lib/{index-CSMunRpZ.mjs → index-NKV6j8zE.mjs} +3 -3
- package/lib/{index-BIYx5IBr.mjs → index-OlMuNft9.mjs} +3 -3
- package/lib/{index-Bz7ogqhR.mjs → index-UOvy4usi.mjs} +1 -1
- package/lib/{index-D1y-l93C.js → index-UbeUI3Ir.js} +1 -1
- package/lib/{index-BZYEbYGY.mjs → index-ZGgSxaDf.mjs} +3 -3
- package/lib/{index-DFpSbD7R.mjs → index-_e8uUnEK.mjs} +5 -5
- package/lib/{index-vhQ5Q8ov.mjs → index-dU3yVyBt.mjs} +52 -97
- package/lib/{index.es-C476iHvN.mjs → index.es-B5hLka3L.mjs} +4 -4
- package/lib/{index.es-CkGpObng.js → index.es-CSmeunOk.js} +3 -3
- package/lib/{index.es-CU6nhwJO.js → index.es-E2DQPkYK.js} +1 -1
- package/lib/{index.es-CtiAoQ78.mjs → index.es-Vlpe_OYB.mjs} +3 -3
- package/lib/index.js +1 -1
- package/lib/index.mjs +5 -5
- package/lib/mayan.js +1 -1
- package/lib/mayan.mjs +11 -11
- package/lib/{mint-zy6P38iu.js → mint-B4t2SvV6.js} +1 -1
- package/lib/{mint-DyoU9X22.mjs → mint-BGuU5y5m.mjs} +1 -1
- package/lib/ntt.js +1 -1
- package/lib/ntt.mjs +14 -12
- package/lib/{platform-x3ZBJ0YM.js → platform-Bkbg7A9d.js} +1 -1
- package/lib/{platform-BqpAMtgx.mjs → platform-C5gJAqtZ.mjs} +3 -3
- package/lib/{platform-BhspUaMJ.js → platform-C6QB7aIN.js} +1 -1
- package/lib/{platform-DQfpyXSV.mjs → platform-DBNvSsue.mjs} +4 -4
- package/lib/{platform-BHAZvZ_O.mjs → platform-DtB8gGMl.mjs} +4 -4
- package/lib/{platform-4nANkJAM.js → platform-qdbxkhTI.js} +1 -1
- package/lib/{provider-jsonrpc-DIXcAw4Q.mjs → provider-jsonrpc-BIIDy-Aw.mjs} +2 -2
- package/lib/{provider-jsonrpc-BCKoIijx.js → provider-jsonrpc-DHzam3ud.js} +1 -1
- package/lib/{secp256k1-CaaRyr2C.mjs → secp256k1-B-wUOgWh.mjs} +1 -1
- package/lib/{secp256k1-CFt7TfEF.js → secp256k1-BAjH_sHz.js} +1 -1
- package/lib/{secp256k1-UnRv5Suy.mjs → secp256k1-CpJIg24C.mjs} +1 -1
- package/lib/{secp256k1-C60XBS-e.js → secp256k1-Ds1M1Mtb.js} +1 -1
- package/lib/{secp256k1-BIiWvuxu.js → secp256k1-PbbUc2aU.js} +1 -1
- package/lib/{secp256k1-BWFGSbjt.mjs → secp256k1-YWWAmpaN.mjs} +1 -1
- package/lib/{signer-DhO2iGae.mjs → signer-BH3gAHuj.mjs} +2 -2
- package/lib/{signer-BFY1Ytf6.js → signer-MBixef_P.js} +1 -1
- package/lib/{solana-CQk4ocg8.mjs → solana-Bh5bkUXQ.mjs} +11 -11
- package/lib/solana-C8xK8qJY.mjs +18 -0
- package/lib/solana-CRSliekb.js +1 -0
- package/lib/{solana-Cp49k9--.js → solana-sjjxa4_B.js} +4 -4
- package/lib/{solanaEmbed.esm-Cwa6cl_R.js → solanaEmbed.esm-CDt8Bk0U.js} +1 -1
- package/lib/{solanaEmbed.esm-DBOqO9Ii.mjs → solanaEmbed.esm-DGgxfQDB.mjs} +3 -3
- package/lib/src/components/TokenBalance.d.ts.map +1 -1
- package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
- package/lib/src/config/testnet/tokens.d.ts.map +1 -1
- package/lib/src/contexts/wallet/WalletProvider.d.ts.map +1 -1
- package/lib/src/hooks/useFetchSupportedRoutes.d.ts.map +1 -1
- package/lib/src/hooks/useTokenListWithSearch.d.ts +1 -4
- package/lib/src/hooks/useTokenListWithSearch.d.ts.map +1 -1
- package/lib/src/routes/operator.d.ts.map +1 -1
- package/lib/src/routes/sdkv2/route.d.ts +2 -2
- package/lib/src/routes/sdkv2/route.d.ts.map +1 -1
- package/lib/src/telemetry/types.d.ts +1 -0
- package/lib/src/telemetry/types.d.ts.map +1 -1
- package/lib/src/utils/sdkv2.d.ts.map +1 -1
- package/lib/src/utils/wrappedNativeTokens.d.ts +12 -0
- package/lib/src/utils/wrappedNativeTokens.d.ts.map +1 -0
- package/lib/src/views/Terms.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/SearchableList/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts +2 -4
- package/lib/src/views/v3/Bridge/AssetPicker/TokenSectionHeader.d.ts.map +1 -1
- package/lib/{sui-9gsoM56W.js → sui-Do5RtJvP.js} +1 -1
- package/lib/{sui-Cr98JBgS.js → sui-QcDjGW68.js} +1 -1
- package/lib/{sui-B4RvzEXx.mjs → sui-euceXgYf.mjs} +7 -7
- package/lib/{sui-C2a1eehP.mjs → sui-tKXg9e-c.mjs} +4 -4
- package/lib/{tokens-BbFKf6Hv.mjs → tokens-CNITO7DN.mjs} +3 -3
- package/lib/{tokens-LVHsSbYG.js → tokens-DhBcLH6x.js} +1 -1
- package/lib/{transfer-DZ-wNocj.js → transfer-BinEH6ml.js} +1 -1
- package/lib/{transfer-BV1ou1GP.mjs → transfer-DTvv5m_5.mjs} +2 -2
- package/lib/{units-BqUlbZ46.mjs → units-CVEv4txp.mjs} +2 -2
- package/lib/{units-D-oRQjOa.js → units-DtldPRXy.js} +1 -1
- package/lib/{unsignedTransaction-BmxD6VsY.mjs → unsignedTransaction-CVE7GUdC.mjs} +3 -3
- package/lib/{unsignedTransaction-CiPKh85X.js → unsignedTransaction-DL3WyIkF.js} +1 -1
- package/lib/{w3m-modal-CoTG8Zu4.js → w3m-modal-BUP-c20y.js} +1 -1
- package/lib/{w3m-modal-D4-nrnEK.mjs → w3m-modal-Bj2tG9wb.mjs} +2 -2
- package/lib/{w3m-modal-xqVExHU-.js → w3m-modal-CGeDlu49.js} +1 -1
- package/lib/{w3m-modal-3qLkbPfi.mjs → w3m-modal-D78VqEEI.mjs} +2 -2
- package/lib/{web3-C1wK6wIV.js → web3-BKaP497Y.js} +1 -1
- package/lib/{web3-BkEb7AgB.mjs → web3-BifDBsFp.mjs} +8 -4
- package/package.json +49 -44
- package/dist/assets/create-q7V6muDT.js +0 -1
- package/dist/assets/index-B59bCuJJ.js +0 -1
- package/lib/constants-BR_zyzqY.js +0 -1
- package/lib/index-CXsUtRJQ.js +0 -1
- package/lib/solana-Dv_mUYcl.mjs +0 -18
- package/lib/solana-g3YsP966.js +0 -1
package/lib/executor.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const r=require("./web3-C1wK6wIV.js"),se=require("./chunk-KJH4KKG6-BXBLZwfY.js"),Fe=require("./platform-BhspUaMJ.js"),z=require("./address-BO6rj6uK.js"),Te=require("./unsignedTransaction-BXJ9Cpni.js"),T=require("./platform-4nANkJAM.js"),F=require("./contract-MkLF5rqi.js"),fe=require("./unsignedTransaction-Bv76DnOj.js"),x=require("./platform-x3ZBJ0YM.js"),Se=require("./index-D0XQIiQn.js"),Be=require("./unsignedTransaction-5HCmv6m2.js"),Pe=require("./index-BTUx12aa.js"),Ie=require("./index-Dq7WWqFe.js"),ae=require("./unsignedTransaction-CiPKh85X.js"),Me=require("./account-D0Q4K1CI.js"),ke=require("./index-DMOY218i.js"),Ue={binary:"uint",size:1,custom:{to:n=>n>0,from:n=>n?1:0}},Re=Object.freeze(Object.defineProperty({__proto__:null,amountItem:r.amountItem,boolItem:Ue,chainItem:r.chainItem,circleDomainItem:r.circleDomainItem,circleNonceItem:r.circleNonceItem,dateConversion:r.dateConversion,fixedChainItem:r.fixedChainItem,fixedLengthStringItem:r.fixedLengthStringItem,guardianSetItem:r.guardianSetItem,payloadIdItem:r.payloadIdItem,sequenceItem:r.sequenceItem,signatureItem:r.signatureItem,stringConversion:r.stringConversion,universalAddressItem:r.universalAddressItem},Symbol.toStringTag,{value:"Module"})),O={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},L={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"}},Ve={Testnet:{Avalanche:"0x4058F0C3924eDaB19c15597C438968ed49C1a213",BaseSepolia:"0xC400FcC0e92d3406747FBb6f513D3aa8B038fcE9",Sepolia:"0x0F18DD26D0B41fb1eaa9cF34D1Ec6022aA69a8e2"},Mainnet:{Arbitrum:"0x8442d68524217601ed126f6859694E4B0C7c66A1",Avalanche:"0x3952914628650Ca510404872D84DfF10A844C5B5",Base:"0xbd8d42f40a11b37bD1b3770D754f9629F7cd5679",Ethereum:"0x2cCf230467FE7387674BAa657747F0B5485c7fEC",Linea:"0xc48c126468BE919068dE1983F00F65af759a4E87",Optimism:"0xd0a8940b2e743e33b682daec4d52b46713606c9d",Polygon:"0xc8a8e6d760dcbd5d6746e2f66cd2ffa722dd1e59",Unichain:"0xD5D5D640D8b758672Cc7A078734175c4433866d5",Seievm:"0xf4FefFc03EEFB06B009bFB168b60B30edf7abc12",Sonic:"0xc39BF082ec91D9bC385F956D24a8D66C0c26223d",Worldchain:"0x789f2b91f7B35D5B890983328340c4600339B354"}},ie={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},ze={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},$e=5001n,_e={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,Linea:250000n,Optimism:250000n,Polygon:250000n,Unichain:250000n,Seievm:250000n,Solana:250000n,Sonic:250000n,Sui:8000000n,Worldchain:250000n}},Ne={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"},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"},Linea:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Optimism:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Polygon:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Unichain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Seievm:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Sonic:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"},Worldchain:{tokenMessengerV2:"0x28b5a0e9C621a5BadaA536219b3a228C8168cf5d",messageTransmitterV2:"0x81D40F21F12A8F0E3252Bccb954D722d4c464B64"}}},le={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}},y=(n,e)=>le[n]?.[e]!==void 0,P={Testnet:{Sepolia:0,Avalanche:1,ArbitrumSepolia:3,BaseSepolia:6,Linea:11,Sonic:13},Mainnet:{Ethereum:0,Avalanche:1,Optimism:2,Arbitrum:3,Base:6,Polygon:7,Unichain:10,Linea:11,Sonic:13,Worldchain:14,Seievm:16}},$=(n,e)=>P[n]?.[e]!==void 0,S=(n,e)=>{const t=P[n]?.[e];if(t===void 0)throw new Error(`CircleV2 domain not found for network ${n} and chain ${e}`);return t},he=(n,e)=>{const t=Object.entries(P[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},I={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var B;(function(n){n[n.CONFIRMED=1e3]="CONFIRMED",n[n.FINALIZED=2e3]="FINALIZED"})(B||(B={}));const ge={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}},Oe=(n,e)=>ge[n]?.[e]!==void 0;class G{network;chain;provider;contracts;usdcId;shimContract;constructor(e,t,s,i){if(this.network=e,this.chain=t,this.provider=s,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=r.usdcContract.get(this.network,this.chain);if(!a)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=a;const o=L[e]?.[t];if(!o)throw new Error(`Shim contract for ${t} not found`);this.shimContract=o}static async fromRpc(e,t){const[s,i]=await Fe.AptosPlatform.chainFromRpc(e),a=t[i];if(!a)throw new Error(`No config found for ${i}`);if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new G(s,i,e,a.contracts)}async*transfer(e,t,s){const i=new z.AptosAddress(e).unwrap(),a=se.l.from(t.address.toUniversalAddress().toUint8Array()),o=se.l.from(this.usdcId),c=s.remainingAmount+s.referrerFee,d=r.circleChainId.get(this.network,t.chain),m=i,l=new z.AptosAddress(s.referrer?.address?.toString()??i).unwrap(),u=[c,d,a.toString(),o.toString(),s.estimatedCost,r.toChainId(t.chain),m,s.signedQuote,s.relayInstructions,s.referrerFeeDbps,l],f={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:u};yield this.createUnsignedTx(f,"AtposCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new Te.AptosUnsignedTransaction(e,this.network,this.chain,t,s)}}r.registerProtocol(z._platform,"CCTPExecutor",G);class q{network;chain;provider;contracts;chainId;shimContract;constructor(e,t,s,i){if(this.network=e,this.chain=t,this.provider=s,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=r.networkChainToNativeChainId.get(e,t);const a=L[e]?.[t];if(!a)throw new Error(`Shim contract for ${t} not found`);this.shimContract=a}static async fromRpc(e,t){const[s,i]=await T.EvmPlatform.chainFromRpc(e),a=t[i];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new q(s,i,e,a.contracts)}async*transfer(e,t,s){const i=new r.EvmAddress(e).toString(),a=t.address.toUniversalAddress().toUint8Array(),o=s.remainingAmount+s.referrerFee,c=r.usdcContract.get(this.network,this.chain),d=T.EvmPlatform.getTokenImplementation(this.provider,c);if(await d.allowance(i,this.shimContract)<o){const h=await d.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(r.addFrom(h,i),"ERC20.approve of EvmCCTPExecutor",!1)}const l=["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)"],f=await new F.Contract(this.shimContract,l,this.provider).getFunction("depositForBurn").populateTransaction(o,r.toChainId(t.chain),r.circleChainId.get(this.network,t.chain),a,c,{refundAddress:i,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??i});f.value=s.estimatedCost,yield this.createUnsignedTx(r.addFrom(f,i),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(e,t,s=!1){return new fe.EvmUnsignedTransaction(r.addChainId(e,this.chainId),this.network,this.chain,t,s)}}const{amountItem:D,circleDomainItem:oe,universalAddressItem:A}=Re,Ce={binary:"uint",size:4,custom:1,omit:!1},Le={binary:"bytes",size:32},ce={binary:"uint",size:4},Ge=[{name:"version",...Ce},{name:"burnToken",...A},{name:"mintRecipient",...A},{name:"amount",...D},{name:"messageSender",...A},{name:"maxFee",...D},{name:"feeExecuted",...D},{name:"expirationBlock",...D},{name:"hookData",binary:"bytes"}],pe=[{name:"version",...Ce},{name:"sourceDomain",...oe},{name:"destinationDomain",...oe},{name:"nonce",...Le},{name:"sender",...A},{name:"recipient",...A},{name:"destinationCaller",...A},{name:"minFinalityThreshold",...ce},{name:"finalityThresholdExecuted",...ce},{name:"messageBody",binary:"bytes",layout:Ge}],qe=n=>r.deserialize$1(pe,n),We=n=>r.serialize(pe,n),Qe=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],Ke=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...r.universalAddressItem}],je=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],Qe],[[2,"GasDropOffInstruction"],Ke]]}],we=[{name:"requests",binary:"array",layout:je}],He={to:n=>new Date(Number(n*1000n)),from:n=>BigInt(n.getTime())/1000n},Xe=[{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:He},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],Ee=[...Xe,{name:"signature",binary:"bytes",size:65}];class W{network;chain;provider;contracts;chainId;shimContract;messageTransmitter;usdcContract;constructor(e,t,s,i){if(this.network=e,this.chain=t,this.provider=s,this.contracts=i,e==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=r.networkChainToNativeChainId.get(e,t);const a=Ve[e]?.[t];if(!a)throw new Error(`Shim contract for ${t} not found`);this.shimContract=a;const o=Ne[e]?.[t]?.messageTransmitterV2;if(!o)throw new Error(`MessageTransmitter contract for ${t} not found`);this.messageTransmitter=o;const c=r.usdcContract.get(e,t);if(!c)throw new Error(`USDC contract for ${t} not found`);this.usdcContract=c}static async fromRpc(e,t){const[s,i]=await T.EvmPlatform.chainFromRpc(e),a=t[i];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new W(s,i,e,a.contracts)}async*transfer(e,t,s){const i=new r.EvmAddress(e).toString(),a=t.address.toUniversalAddress().toUint8Array(),o=s.remainingAmount+s.referrerFee,c=T.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await c.allowance(i,this.shimContract)<o){const C=await c.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(r.addFrom(C,i),"ERC20.approve of EvmCCTPv2Executor",!1)}const m=["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)"],l=new Uint8Array(32),u=new F.Contract(this.shimContract,m,this.provider),f=S(this.network,t.chain),h=await u.getFunction("depositForBurn").populateTransaction(o,r.toChainId(t.chain),f,a,this.usdcContract,l,s.fastTransferMaxFee,s.minFinalityThreshold,{refundAddress:i,signedQuote:s.signedQuote,instructions:s.relayInstructions},{dbps:s.referrerFeeDbps,payee:s.referrer?.address?.toString()??i});h.value=s.estimatedCost,yield this.createUnsignedTx(r.addFrom(h,i),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(e){return await new F.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(e.nonce)===1n}async*redeem(e,t,s){const i=new r.EvmAddress(e).toString(),o=await new F.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(We(t),r.hex.decode(s));yield this.createUnsignedTx(r.addFrom(o,i),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(e,t,s=!1){return new fe.EvmUnsignedTransaction(r.addChainId(e,this.chainId),this.network,this.chain,t,s)}}r.registerProtocol(r._platform,"CCTPExecutor",q);r.registerProtocol(r._platform,"CCTPv2Executor",W);class Q{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;executorId;executorRequestsId;constructor(e,t,s,i){if(this.network=e,this.chain=t,this.provider=s,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=(m,l)=>{if(!m)throw new Error(l);return m};this.usdcId=a(r.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:c,usdcTreasury:d}=Se.suiCircleObjects(e);this.usdcTreasuryId=d,this.tokenMessengerId=a(i.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterId=a(i.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=a(ie[e]?.executorId,`Executor contract for ${e} not found`),this.executorRequestsId=a(ie[e]?.executorRequestsId,`Executor requests contract for ${e} not found`)}static async fromRpc(e,t){const[s,i]=await x.SuiPlatform.chainFromRpc(e),a=t[i];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new Q(s,i,e,a.contracts)}async*transfer(e,t,s){const i=new x.Transaction,a=new r.SuiAddress(e).unwrap(),o=r.circleChainId.get(this.network,t.chain),[c,...d]=await x.SuiPlatform.getCoins(this.provider,e,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const m=i.object(c.coinObjectId);d.length>0&&i.mergeCoins(m,d.map(p=>i.object(p.coinObjectId)));let l;if(s.referrerFee>0n){const[p,b]=i.splitCoins(m,[s.remainingAmount,s.referrerFee]);l=p,i.transferObjects([b],s.referrer?r.canonicalAddress(s.referrer):a)}else{const[p]=i.splitCoins(m,[s.remainingAmount]);l=p}const[u,f]=i.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[l,i.pure.u32(o),i.pure.address(t.address.toUniversalAddress().toString()),i.object(this.tokenMessengerStateId),i.object(this.messageTransmitterStateId),i.object("0x403"),i.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[h]=i.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[f]}),[C]=i.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[f]}),[w]=i.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[h,C]}),[E]=i.splitCoins(i.gas,[i.pure.u64(s.estimatedCost)]);i.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[E,i.object(x.SUI_CLOCK_OBJECT_ID),i.pure.u16(r.toChainId(t.chain)),i.pure.address("0x0"),i.pure.address(a),i.pure.vector("u8",s.signedQuote),w,i.pure.vector("u8",s.relayInstructions)]}),yield this.createUnsignedTx(i,"SuiCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new Be.SuiUnsignedTransaction(e,this.network,this.chain,t,s)}}r.registerProtocol(x._platform,"CCTPExecutor",Q);const M=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new r.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const K=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new r.PublicKey("So11111111111111111111111111111111111111112");new r.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ze extends Error{constructor(e){super(e)}}class Je extends Ze{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var _;(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"})(_||(_={}));function Ye(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 et=r.LayoutExports.struct([r.LayoutExports.u32("mintAuthorityOption"),r.publicKey("mintAuthority"),r.u64("supply"),r.LayoutExports.u8("decimals"),r.bool("isInitialized"),r.LayoutExports.u32("freezeAuthorityOption"),r.publicKey("freezeAuthority")]);et.span;function de(n,e,t=!1,s=M,i=K){if(!t&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new Je;const[a]=r.PublicKey.findProgramAddressSync([e.toBuffer(),s.toBuffer(),n.toBuffer()],i);return a}function tt(n,e,t,s,i=M,a=K){return nt(n,e,t,s,r.Buffer.from([1]),i,a)}function nt(n,e,t,s,i,a=M,o=K){const c=[{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:a,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:c,programId:o,data:i})}const ue=r.LayoutExports.struct([r.LayoutExports.u8("instruction"),r.u64("amount")]);function rt(n,e,t,s,i=[],a=M){const o=Ye([{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],t,i),c=r.Buffer.alloc(ue.span);return ue.encode({instruction:_.Transfer,amount:BigInt(s)},c),new r.TransactionInstruction({keys:o,programId:a,data:c})}const st={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 j{network;chain;connection;contracts;tokenMessengerProgramId;messageTransmitterProgramId;shimProgramId;executorProgramId;constructor(e,t,s,i){if(this.network=e,this.chain=t,this.connection=s,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=(o,c)=>{if(!o)throw new Error(c);return new r.PublicKey(o)};this.tokenMessengerProgramId=a(i.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterProgramId=a(i.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.shimProgramId=a(L[e]?.[t],`Shim contract for ${t} not found`),this.executorProgramId=a(ze[e],`Executor contract for ${e} not found`)}static async fromRpc(e,t){const[s,i]=await ae.SolanaPlatform.chainFromRpc(e),a=t[i];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new j(s,i,e,a.contracts)}async*transfer(e,t,s){const i=new r.PublicKey(r.usdcContract.get(this.network,this.chain)),a=new r.SolanaAddress(e).unwrap(),o=de(i,a),c=new r.SolanaAddress(s.referrer?.address?.toString()??a).unwrap(),d=new r.Transaction;if(d.feePayer=a,s.referrerFee>0n){const w=de(i,c,!0);await this.connection.getAccountInfo(w)||d.add(tt(a,w,c,i)),d.add(rt(o,w,a,s.referrerFee))}const m=r.circleChainId.get(this.network,t.chain),l=t.address.toUniversalAddress(),u=r.Keypair.generate();d.add(await Pe.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,i,m,a,o,l,s.remainingAmount,u.publicKey));const f=new Ie.Program(st,this.shimProgramId,{connection:null}),h=r.deserialize$1(Ee,s.signedQuote),C=Me.deriveAddress("message_transmitter",this.messageTransmitterProgramId);d.add(await f.methods.relayLastMessage({execAmount:new r.BN(s.estimatedCost.toString()),recipientChain:r.toChainId(t.chain),signedQuoteBytes:r.Buffer.from(s.signedQuote),relayInstructions:r.Buffer.from(s.relayInstructions)}).accounts({payer:a,messageTransmitter:C,payee:new r.PublicKey(h.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:d,signers:[u]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(e,t,s=!1){return new ae.SolanaUnsignedTransaction(e,this.network,this.chain,t,s)}}r.registerProtocol(r._platform$1,"CCTPExecutor",j);var g;(function(n){n.Pending="pending",n.Failed="failed",n.Unsupported="unsupported",n.Submitted="submitted",n.Underpaid="underpaid",n.Aborted="aborted"})(g||(g={}));var me;(function(n){n.ERM1="ERM1",n.ERV1="ERV1",n.ERN1="ERN1",n.ERC1="ERC1",n.ERC2="ERC2"})(me||(me={}));async function at(n){const e=`${O[n]}/v0/capabilities`;try{return(await r.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${n}.`)}}async function it(n,e,t,s){const i=`${O[n]}/v0/quote`;try{return(await r.axios.post(i,{srcChain:r.toChainId(e),dstChain:r.toChainId(t),relayInstructions:s})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function H(n,e,t){const s=`${O[n]}/v0/status/tx`;try{return(await r.axios.post(s,{txHash:e,chainId:r.toChainId(t)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const ot=65535n;function ct(n,e,t){if(e>ot)throw new Error("dBps exceeds max u16");let s=e,i=n,a=0n;if(e>0){if(t!==void 0&&n>0){const o=r.parse(t.toString(),6),c=r.units(o)/n,d=e<c?e:c;a=n*d/100000n,s=d}else a=n*e/100000n;i=n-a}return{referrerFee:a,remainingAmount:i,referrerFeeDbps:s}}function dt(n){return new Promise(e=>setTimeout(e,n))}async function N(n,e,t=r.DEFAULT_TASK_TIMEOUT){const s=S(e,n.chain);return r.retry(async()=>{const i=`${I[e]}/messages/${s}?transactionHash=${n.txid}`;try{const o=(await r.axios.get(i)).data.messages[0];if(!o)return null;if(o.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return o.status==="pending_confirmations"?null:{message:qe(r.hex.decode(o.message)),attestation:o.attestation}}catch(a){if(!a||typeof a=="object"&&(r.axios.isAxiosError(a)&&a.response?.status===404||"status"in a&&a.status===404))return null;throw a}},2e3,t,"CCTPv2:GetMessage")}async function ut(n,e,t){const s=S(n,e),i=S(n,t),a=`${I[n]}/fastBurn/USDC/fees/${s}/${i}`,o=await r.axios.get(a);return BigInt(o.data.minimumFee)}async function mt(n,e){const t=r.hex.encode(e.attestation.message.nonce,!0),s=`${I[n]}/reattest/${t}`,i=await r.axios.post(s);if(i.data.error){if(i.data.error.includes("Message is already finalized"))return e.attestation;throw new Error(`Error re-attesting message: ${i.data.error}`)}const a=he(n,e.attestation.message.sourceDomain);return r.retry(async()=>{const o=await N({txid:e.id,chain:a},n);return!o||o.message.messageBody.expirationBlock!==0n?null:o},2e3,r.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function ft(n){const e=`${I[n]}/fastBurn/USDC/allowance`,t=await r.axios.get(e);return r.units(r.parse(t.data.allowance,6))}function X(n,e,t){const s=r.usdcContract.get(e.network,e.chain);if(!(s&&r.isSameToken(n,r.Wormhole.tokenId(e.chain,s))))return[];const{network:i,chain:a}=t,o=r.usdcContract.get(i,a);return o?[r.Wormhole.chainAddress(a,o)]:[]}let v;async function Z(n,e,t,s){const{fromChain:i,toChain:a}=n;if(!r.usdcContract.get(i.network,i.chain))throw new Error("Invalid transfer, no USDC contract on source");const c=r.usdcContract.get(a.network,a.chain);if(!c)throw new Error("Invalid transfer, no USDC contract on destination");let d;if(t.referrerFeeDbps>0n&&(d=t.referrerAddresses?.[i.network]?.[i.chain],!d))throw new Error(`Referrer address not configured for ${i.chain}`);const m=d?r.Wormhole.chainAddress(i.chain,d):void 0,{referrerFee:l,remainingAmount:u,referrerFeeDbps:f}=ct(r.units(e.normalizedParams.amount),t.referrerFeeDbps,t.referrerFeeThreshold);if(u<=0n)throw new Error("Amount after fee <= 0");const h=_e[a.network]?.[a.chain];if(!h)throw new Error("Gas limit not found");const C=await at(i.network);if(!C[r.toChainId(i.chain)])throw new Error("Unsupported source chain");const E=C[r.toChainId(a.chain)];if(!E||!E.requestPrefixes.includes(s))throw new Error("Unsupported destination chain");const{recipient:p}=n;let b=!0;if(p&&a.chain==="Solana"){const De=r.Wormhole.parseAddress("Solana",c),ve=await a.getTokenAccount(p.address,De),re=await a.getRpc();b=await re.getAccountInfo(new r.SolanaAddress(ve.address).unwrap())!==null,!b&&!v&&(v=BigInt(await re.getMinimumBalanceForRentExemption(165)))}let k=0n;a.chain==="Solana"&&(k+=$e,!b&&v&&(k+=v));const U=[];U.push({request:{type:"GasInstruction",gasLimit:h,msgValue:k}});const ee=BigInt(E.gasDropOffLimit),R=e.options.nativeGas&&ee>0n?BigInt(Math.round(e.options.nativeGas*100))*ee/100n:0n;(R>0n||!b)&&U.push({request:{type:"GasDropOffInstruction",dropOff:R,recipient:p?p.address.toUniversalAddress():new r.UniversalAddress(new Uint8Array(32))}});const te=r.serialize(we,{requests:U}),V=await it(i.network,i.chain,a.chain,r.hex.encode(te,!0));if(!V.estimatedCost)throw new Error("No estimated cost");const ne=r.hex.decode(V.signedQuote),xe=r.deserialize$1(Ee,ne),ye=BigInt(V.estimatedCost);return{signedQuote:ne,relayInstructions:te,estimatedCost:ye,referrer:m,referrerFee:l,remainingAmount:u,referrerFeeDbps:f,expiryTime:xe.quote.expiryTime,gasDropOff:R}}async function be(n,e,t,s){r.deserialize$1(we,s.details.relayInstructions).requests.forEach(({request:u})=>{if(u.type==="GasDropOffInstruction"&&!u.recipient.equals(t.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const a=r.Wormhole.parseAddress(e.chain(),e.address()),o=await lt(t,n);let c;s.protocol==="CCTPExecutor"?c=await(await n.fromChain.getProtocol(s.protocol)).transfer(a,o,s.details):c=await(await n.fromChain.getProtocol(s.protocol)).transfer(a,o,s.details);const d=await r.signSendWait(n.fromChain,c,e);let m=0;return(async()=>{for(;m<20;){try{const[u]=await H(n.fromChain.network,d.at(-1).txid,n.fromChain.chain);if(u)break}catch{}m++,await dt(2e3)}})(),{from:n.fromChain.chain,to:n.toChain.chain,state:r.TransferState.SourceInitiated,originTxs:d}}async function lt(n,e){if(n.chain!=="Solana")return n;const t=r.usdcContract.get(e.toChain.network,e.toChain.chain);if(!t)throw new Error("No USDC contract found for Solana");const s=r.Wormhole.parseAddress("Solana",t);return e.toChain.getTokenAccount(n.address,s)}function ht(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends gt{static config=n}return e}class gt extends r.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(le[e]??{})]}static async supportedDestinationTokens(e,t,s){return!y(t.network,t.chain)||!y(s.network,s.chain)?[]:X(e,t,s)}getDefaultOptions(){return{nativeGas:0}}async validate(e,t){const{fromChain:s,toChain:i}=e;return!y(s.network,s.chain)||!y(i.network,i.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:i}=e;try{const a=await Z(e,t,this.staticConfig,"ERC1"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a,l=s.chain==="Polygon"?2e3*200:r.estimateFinalityTime(s.chain)+1e3,[u,f]=await Promise.all([s.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:r.fromBaseUnits(o,e.destination.decimals)},relayFee:{token:r.nativeTokenId(s.chain),amount:r.fromBaseUnits(c,u)},destinationNativeGas:r.fromBaseUnits(d,f),eta:l,expires:m,details:a}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}async initiate(e,t,s,i){if(!s.details)throw new Error("Missing quote details");return await be(e,t,i,{protocol:"CCTPExecutor",details:s.details})}async*track(e,t){if(r.isCompleted(e)||r.isFailed(e))return e;let s=t||3600*1e3;for(;s>0;){const i=Date.now();if(r.isSourceInitiated(e)||r.isSourceFinalized(e)||r.isAttested(e))try{const[a]=await H(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!a)throw new Error("No transaction status found");const o=a?.status;if((o===g.Failed||o===g.Underpaid||o===g.Unsupported||o===g.Aborted)&&(e={...e,state:r.TransferState.Failed,error:new r.RelayFailedError(`Relay failed with status: ${o}`)}),o===g.Submitted&&(e={...e,state:r.TransferState.DestinationFinalized,attestation:{id:a.id,attestation:{}}}),yield e,r.isCompleted(e)||r.isFailed(e))return e}catch(a){console.error(`Error fetching transaction status: ${a.message||a}`)}await new Promise(a=>setTimeout(a,3e3)),s-=Date.now()-i}return e}}class Ae extends r.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return Object.keys(P[e]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(e,t,s,i){if(!s.details)throw new Error("Missing quote details");return await be(e,t,i,{protocol:"CCTPv2Executor",details:s.details})}async*track(e,t){if(r.isCompleted(e))return e;let s=t||3600*1e3;for(;s>0;){const i=Date.now();if(r.isSourceInitiated(e)||r.isSourceFinalized(e)||r.isAttested(e)||r.isFailed(e))try{const a=e.originTxs.at(-1).txid;if(r.isSourceInitiated(e)||r.isSourceFinalized(e)){const o=await N({chain:e.from,txid:a},this.wh.network);o&&(e={...e,state:r.TransferState.Attested,attestation:{id:a,attestation:o}}),yield e}if(r.isAttested(e)){const[o]=await H(this.wh.network,a,e.from);if(!o)throw new Error("No transaction status found");const c=o?.status;c===g.Submitted?e={...e,state:r.TransferState.DestinationFinalized}:(c===g.Failed||c===g.Underpaid||c===g.Unsupported||c===g.Aborted)&&(e={...e,state:r.TransferState.Failed,error:new r.RelayFailedError(`Relay failed with status: ${c}`)})}if(r.isFailed(e)){if(!e.attestation)throw new Error("Receipt is missing attestation");const o=e.attestation;await(await this.wh.getChain(e.to).getProtocol("CCTPv2Executor")).isTransferCompleted(o.attestation.message)&&(e={...e,state:r.TransferState.DestinationFinalized,attestation:o})}if(yield e,r.isCompleted(e))return e}catch(a){console.error(`Error fetching transaction status: ${a.message||a}`)}await new Promise(a=>setTimeout(a,3e3)),s-=Date.now()-i}return e}async complete(e,t){if(!r.isAttested(t)&&!r.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),i=await s.getProtocol("CCTPv2Executor");let{attestation:a,message:o}=t.attestation.attestation;const{expirationBlock:c}=o.messageBody,d=await i.getCurrentBlock();if(c!==0n&&c<d){const f=await mt(s.network,t.attestation);if(!f)throw new Error("Failed to reattest message");a=f.attestation,o=f.message}const m=r.Wormhole.parseAddress(e.chain(),e.address()),l=i.redeem(m,o,a),u=await r.signSendWait(this.wh.getChain(t.to),l,e);return{...t,state:r.TransferState.DestinationInitiated,attestation:t.attestation,destinationTxs:u}}async resume(e){const t=await N(e,this.wh.network);if(!t)throw new Error("No attestation found");const{message:s}=t,i=he(this.wh.network,s.destinationDomain);return await(await this.wh.getChain(i).getProtocol("CCTPv2Executor")).isTransferCompleted(s)?{from:e.chain,to:i,state:r.TransferState.DestinationFinalized,originTxs:[e],attestation:{id:e.txid,attestation:t}}:{from:e.chain,to:i,state:r.TransferState.Attested,originTxs:[e],attestation:{id:e.txid,attestation:t}}}}function Ct(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends J{static config=n}return e}class J extends Ae{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return Oe(e.network,e.chain)&&$(t.network,t.chain)}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?X(e,t,s):[]}async validate(e,t){return J.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:i}=e;try{const a=await Z(e,t,this.staticConfig,"ERC2"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a;if(await ft(s.network)<=o)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const u=await ut(s.network,s.chain,i.chain),f=(o*u+10000n-1n)/10000n,h=o-f;if(h<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const C=ge[s.network]?.[s.chain],[w,E]=await Promise.all([s.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:r.fromBaseUnits(h,e.destination.decimals)},relayFee:{token:r.nativeTokenId(s.chain),amount:r.fromBaseUnits(c,w)},destinationNativeGas:r.fromBaseUnits(d,E),eta:C,expires:m,details:{...a,minFinalityThreshold:B.CONFIRMED,fastTransferMaxFee:f}}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}}function pt(n={referrerFeeDbps:0n}){if(n.referrerFeeDbps<0||n.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends Y{static config=n}return e}class Y extends Ae{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,t){return $(e.network,e.chain)&&$(t.network,t.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,t,s){return this.isPathSupported(t,s)?X(e,t,s):[]}async validate(e,t){return Y.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:i}=e;try{const a=await Z(e,t,this.staticConfig,"ERC2"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a,l=s.chain==="Polygon"?2e3*200:r.estimateFinalityTime(s.chain)+1e3,[u,f]=await Promise.all([s.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:t,sourceToken:{token:e.source.id,amount:t.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:r.fromBaseUnits(o,e.destination.decimals)},relayFee:{token:r.nativeTokenId(s.chain),amount:r.fromBaseUnits(c,u)},destinationNativeGas:r.fromBaseUnits(d,f),eta:l,expires:m,details:{...a,minFinalityThreshold:B.FINALIZED,fastTransferMaxFee:0n}}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}}const{executorTokenBridgeRoute:wt}=ke.routes;exports.cctpExecutorRoute=ht;exports.cctpV2FastExecutorRoute=Ct;exports.cctpV2StandardExecutorRoute=pt;exports.executorTokenBridgeRoute=wt;
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const t=require("./web3-BKaP497Y.js"),ce=require("./chunk-KJH4KKG6-DNlN4p21.js"),Ve=require("./platform-C6QB7aIN.js"),O=require("./address-Bc-5yO4D.js"),Ue=require("./unsignedTransaction-BXJ9Cpni.js"),U=require("./platform-qdbxkhTI.js"),V=require("./contract-CTycrpaK.js"),he=require("./unsignedTransaction-Bv76DnOj.js"),D=require("./platform-Bkbg7A9d.js"),Re=require("./index-D6qJDbzm.js"),$e=require("./unsignedTransaction-5HCmv6m2.js"),ge=require("./index-Bhwzpq1T.js"),Ce=require("./index-B7HBnPLP.js"),R=require("./unsignedTransaction-DL3WyIkF.js"),_e=require("./account-24z6tDMM.js"),ze=require("./index-CzRVzbTC.js"),Ne={binary:"uint",size:1,custom:{to:s=>s>0,from:s=>s?1:0}},Oe=Object.freeze(Object.defineProperty({__proto__:null,amountItem:t.amountItem,boolItem:Ne,chainItem:t.chainItem,circleDomainItem:t.circleDomainItem,circleNonceItem:t.circleNonceItem,dateConversion:t.dateConversion,fixedChainItem:t.fixedChainItem,fixedLengthStringItem:t.fixedLengthStringItem,guardianSetItem:t.guardianSetItem,payloadIdItem:t.payloadIdItem,sequenceItem:t.sequenceItem,signatureItem:t.signatureItem,stringConversion:t.stringConversion,universalAddressItem:t.universalAddressItem},Symbol.toStringTag,{value:"Module"})),G={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},K={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"}},Le={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"}},de={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},pe={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},We=5001n,Qe={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}},we={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"}}},ye={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}},I=(s,e)=>ye[s]?.[e]!==void 0,z={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}},L=(s,e)=>z[s]?.[e]!==void 0,P=(s,e)=>{const n=z[s]?.[e];if(n===void 0)throw new Error(`CircleV2 domain not found for network ${s} and chain ${e}`);return n},be=(s,e)=>{const n=Object.entries(z[s]??{}).find(([,r])=>r===e)?.[0];if(n===void 0)throw new Error(`CircleV2 chain not found for network ${s} and domain ${e}`);return n},N={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var $;(function(s){s[s.CONFIRMED=1e3]="CONFIRMED",s[s.FINALIZED=2e3]="FINALIZED"})($||($={}));const Ee={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}},Ge=(s,e)=>Ee[s]?.[e]!==void 0;class q{network;chain;provider;contracts;usdcId;shimContract;constructor(e,n,r,i){if(this.network=e,this.chain=n,this.provider=r,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=t.usdcContract.get(this.network,this.chain);if(!a)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=a;const o=K[e]?.[n];if(!o)throw new Error(`Shim contract for ${n} not found`);this.shimContract=o}static async fromRpc(e,n){const[r,i]=await Ve.AptosPlatform.chainFromRpc(e),a=n[i];if(!a)throw new Error(`No config found for ${i}`);if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new q(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new O.AptosAddress(e).unwrap(),a=ce.l.from(n.address.toUniversalAddress().toUint8Array()),o=ce.l.from(this.usdcId),c=r.remainingAmount+r.referrerFee,d=t.circleChainId.get(this.network,n.chain),m=i,l=new O.AptosAddress(r.referrer?.address?.toString()??i).unwrap(),u=[c,d,a.toString(),o.toString(),r.estimatedCost,t.toChainId(n.chain),m,r.signedQuote,r.relayInstructions,r.referrerFeeDbps,l],f={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:u};yield this.createUnsignedTx(f,"AtposCCTPExecutor.Transfer")}createUnsignedTx(e,n,r=!1){return new Ue.AptosUnsignedTransaction(e,this.network,this.chain,n,r)}}t.registerProtocol(O._platform,"CCTPExecutor",q);class j{network;chain;provider;contracts;chainId;shimContract;constructor(e,n,r,i){if(this.network=e,this.chain=n,this.provider=r,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=t.networkChainToNativeChainId.get(e,n);const a=K[e]?.[n];if(!a)throw new Error(`Shim contract for ${n} not found`);this.shimContract=a}static async fromRpc(e,n){const[r,i]=await U.EvmPlatform.chainFromRpc(e),a=n[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new j(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new t.EvmAddress(e).toString(),a=n.address.toUniversalAddress().toUint8Array(),o=r.remainingAmount+r.referrerFee,c=t.usdcContract.get(this.network,this.chain),d=U.EvmPlatform.getTokenImplementation(this.provider,c);if(await d.allowance(i,this.shimContract)<o){const h=await d.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(t.addFrom(h,i),"ERC20.approve of EvmCCTPExecutor",!1)}const l=["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)"],f=await new V.Contract(this.shimContract,l,this.provider).getFunction("depositForBurn").populateTransaction(o,t.toChainId(n.chain),t.circleChainId.get(this.network,n.chain),a,c,{refundAddress:i,signedQuote:r.signedQuote,instructions:r.relayInstructions},{dbps:r.referrerFeeDbps,payee:r.referrer?.address?.toString()??i});f.value=r.estimatedCost,yield this.createUnsignedTx(t.addFrom(f,i),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(e,n,r=!1){return new he.EvmUnsignedTransaction(t.addChainId(e,this.chainId),this.network,this.chain,n,r)}}const{amountItem:M,circleDomainItem:ue,universalAddressItem:x}=Oe,Ae={binary:"uint",size:4,custom:1,omit:!1},Ke={binary:"bytes",size:32},me={binary:"uint",size:4},qe=[{name:"version",...Ae},{name:"burnToken",...x},{name:"mintRecipient",...x},{name:"amount",...M},{name:"messageSender",...x},{name:"maxFee",...M},{name:"feeExecuted",...M},{name:"expirationBlock",...M},{name:"hookData",binary:"bytes"}],xe=[{name:"version",...Ae},{name:"sourceDomain",...ue},{name:"destinationDomain",...ue},{name:"nonce",...Ke},{name:"sender",...x},{name:"recipient",...x},{name:"destinationCaller",...x},{name:"minFinalityThreshold",...me},{name:"finalityThresholdExecuted",...me},{name:"messageBody",binary:"bytes",layout:qe}],je=s=>t.deserialize$1(xe,s),Se=s=>t.serialize(xe,s),He=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],Ze=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...t.universalAddressItem}],Je=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],He],[[2,"GasDropOffInstruction"],Ze]]}],Be=[{name:"requests",binary:"array",layout:Je}],Ye={to:s=>new Date(Number(s*1000n)),from:s=>BigInt(s.getTime())/1000n},Xe=[{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:Ye},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],H=[...Xe,{name:"signature",binary:"bytes",size:65}];class Z{network;chain;provider;contracts;chainId;shimContract;messageTransmitter;usdcContract;constructor(e,n,r,i){if(this.network=e,this.chain=n,this.provider=r,this.contracts=i,e==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=t.networkChainToNativeChainId.get(e,n);const a=Le[e]?.[n];if(!a)throw new Error(`Shim contract for ${n} not found`);this.shimContract=a;const o=we[e]?.[n]?.messageTransmitterV2;if(!o)throw new Error(`MessageTransmitter contract for ${n} not found`);this.messageTransmitter=o;const c=t.usdcContract.get(e,n);if(!c)throw new Error(`USDC contract for ${n} not found`);this.usdcContract=c}static async fromRpc(e,n){const[r,i]=await U.EvmPlatform.chainFromRpc(e),a=n[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new Z(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new t.EvmAddress(e).toString(),a=n.address.toUniversalAddress().toUint8Array(),o=r.remainingAmount+r.referrerFee,c=U.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await c.allowance(i,this.shimContract)<o){const g=await c.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(t.addFrom(g,i),"ERC20.approve of EvmCCTPv2Executor",!1)}const m=["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)"],l=new Uint8Array(32),u=new V.Contract(this.shimContract,m,this.provider),f=P(this.network,n.chain),h=await u.getFunction("depositForBurn").populateTransaction(o,t.toChainId(n.chain),f,a,this.usdcContract,l,r.fastTransferMaxFee,r.minFinalityThreshold,{refundAddress:i,signedQuote:r.signedQuote,instructions:r.relayInstructions},{dbps:r.referrerFeeDbps,payee:r.referrer?.address?.toString()??i});h.value=r.estimatedCost,yield this.createUnsignedTx(t.addFrom(h,i),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(e){return await new V.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(e.nonce)===1n}async*redeem(e,n,r){const i=new t.EvmAddress(e).toString(),o=await new V.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(Se(n),t.hex.decode(r));yield this.createUnsignedTx(t.addFrom(o,i),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(e,n,r=!1){return new he.EvmUnsignedTransaction(t.addChainId(e,this.chainId),this.network,this.chain,n,r)}}t.registerProtocol(t._platform,"CCTPExecutor",j);t.registerProtocol(t._platform,"CCTPv2Executor",Z);class J{network;chain;provider;contracts;usdcId;usdcTreasuryId;tokenMessengerId;tokenMessengerStateId;messageTransmitterId;messageTransmitterStateId;executorId;executorRequestsId;constructor(e,n,r,i){if(this.network=e,this.chain=n,this.provider=r,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=(m,l)=>{if(!m)throw new Error(l);return m};this.usdcId=a(t.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:c,usdcTreasury:d}=Re.suiCircleObjects(e);this.usdcTreasuryId=d,this.tokenMessengerId=a(i.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${n} not found`),this.messageTransmitterId=a(i.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${n} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=a(de[e]?.executorId,`Executor contract for ${e} not found`),this.executorRequestsId=a(de[e]?.executorRequestsId,`Executor requests contract for ${e} not found`)}static async fromRpc(e,n){const[r,i]=await D.SuiPlatform.chainFromRpc(e),a=n[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new J(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new D.Transaction,a=new t.SuiAddress(e).unwrap(),o=t.circleChainId.get(this.network,n.chain),[c,...d]=await D.SuiPlatform.getCoins(this.provider,e,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const m=i.object(c.coinObjectId);d.length>0&&i.mergeCoins(m,d.map(p=>i.object(p.coinObjectId)));let l;if(r.referrerFee>0n){const[p,b]=i.splitCoins(m,[r.remainingAmount,r.referrerFee]);l=p,i.transferObjects([b],r.referrer?t.canonicalAddress(r.referrer):a)}else{const[p]=i.splitCoins(m,[r.remainingAmount]);l=p}const[u,f]=i.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[l,i.pure.u32(o),i.pure.address(n.address.toUniversalAddress().toString()),i.object(this.tokenMessengerStateId),i.object(this.messageTransmitterStateId),i.object("0x403"),i.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[h]=i.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[f]}),[g]=i.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[f]}),[C]=i.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[h,g]}),[y]=i.splitCoins(i.gas,[i.pure.u64(r.estimatedCost)]);i.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[y,i.object(D.SUI_CLOCK_OBJECT_ID),i.pure.u16(t.toChainId(n.chain)),i.pure.address("0x0"),i.pure.address(a),i.pure.vector("u8",r.signedQuote),C,i.pure.vector("u8",r.relayInstructions)]}),yield this.createUnsignedTx(i,"SuiCCTPExecutor.Transfer")}createUnsignedTx(e,n,r=!1){return new $e.SuiUnsignedTransaction(e,this.network,this.chain,n,r)}}t.registerProtocol(D._platform,"CCTPExecutor",J);const v=new t.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new t.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const Y=new t.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new t.PublicKey("So11111111111111111111111111111111111111112");new t.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class et extends Error{constructor(e){super(e)}}class tt extends et{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var W;(function(s){s[s.InitializeMint=0]="InitializeMint",s[s.InitializeAccount=1]="InitializeAccount",s[s.InitializeMultisig=2]="InitializeMultisig",s[s.Transfer=3]="Transfer",s[s.Approve=4]="Approve",s[s.Revoke=5]="Revoke",s[s.SetAuthority=6]="SetAuthority",s[s.MintTo=7]="MintTo",s[s.Burn=8]="Burn",s[s.CloseAccount=9]="CloseAccount",s[s.FreezeAccount=10]="FreezeAccount",s[s.ThawAccount=11]="ThawAccount",s[s.TransferChecked=12]="TransferChecked",s[s.ApproveChecked=13]="ApproveChecked",s[s.MintToChecked=14]="MintToChecked",s[s.BurnChecked=15]="BurnChecked",s[s.InitializeAccount2=16]="InitializeAccount2",s[s.SyncNative=17]="SyncNative",s[s.InitializeAccount3=18]="InitializeAccount3",s[s.InitializeMultisig2=19]="InitializeMultisig2",s[s.InitializeMint2=20]="InitializeMint2",s[s.GetAccountDataSize=21]="GetAccountDataSize",s[s.InitializeImmutableOwner=22]="InitializeImmutableOwner",s[s.AmountToUiAmount=23]="AmountToUiAmount",s[s.UiAmountToAmount=24]="UiAmountToAmount",s[s.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",s[s.TransferFeeExtension=26]="TransferFeeExtension",s[s.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",s[s.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",s[s.Reallocate=29]="Reallocate",s[s.MemoTransferExtension=30]="MemoTransferExtension",s[s.CreateNativeMint=31]="CreateNativeMint",s[s.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",s[s.InterestBearingMintExtension=33]="InterestBearingMintExtension",s[s.CpiGuardExtension=34]="CpiGuardExtension",s[s.InitializePermanentDelegate=35]="InitializePermanentDelegate",s[s.TransferHookExtension=36]="TransferHookExtension",s[s.MetadataPointerExtension=39]="MetadataPointerExtension"})(W||(W={}));function nt(s,e,n){if(n.length){s.push({pubkey:e,isSigner:!1,isWritable:!1});for(const r of n)s.push({pubkey:r instanceof t.PublicKey?r:r.publicKey,isSigner:!0,isWritable:!1})}else s.push({pubkey:e,isSigner:!0,isWritable:!1});return s}const rt=t.LayoutExports.struct([t.LayoutExports.u32("mintAuthorityOption"),t.publicKey("mintAuthority"),t.u64("supply"),t.LayoutExports.u8("decimals"),t.bool("isInitialized"),t.LayoutExports.u32("freezeAuthorityOption"),t.publicKey("freezeAuthority")]);rt.span;function _(s,e,n=!1,r=v,i=Y){if(!n&&!t.PublicKey.isOnCurve(e.toBuffer()))throw new tt;const[a]=t.PublicKey.findProgramAddressSync([e.toBuffer(),r.toBuffer(),s.toBuffer()],i);return a}function Te(s,e,n,r,i=v,a=Y){return st(s,e,n,r,t.Buffer.from([1]),i,a)}function st(s,e,n,r,i,a=v,o=Y){const c=[{pubkey:s,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:t.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}];return new t.TransactionInstruction({keys:c,programId:o,data:i})}const fe=t.LayoutExports.struct([t.LayoutExports.u8("instruction"),t.u64("amount")]);function De(s,e,n,r,i=[],a=v){const o=nt([{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],n,i),c=t.Buffer.alloc(fe.span);return fe.encode({instruction:W.Transfer,amount:BigInt(r)},c),new t.TransactionInstruction({keys:o,programId:a,data:c})}const at={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 X{network;chain;connection;contracts;tokenMessengerProgramId;messageTransmitterProgramId;shimProgramId;executorProgramId;constructor(e,n,r,i){if(this.network=e,this.chain=n,this.connection=r,this.contracts=i,e==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const a=(o,c)=>{if(!o)throw new Error(c);return new t.PublicKey(o)};this.tokenMessengerProgramId=a(i.cctp?.tokenMessenger,`Circle Token Messenger contract for domain ${n} not found`),this.messageTransmitterProgramId=a(i.cctp?.messageTransmitter,`Circle Message Transmitter contract for domain ${n} not found`),this.shimProgramId=a(K[e]?.[n],`Shim contract for ${n} not found`),this.executorProgramId=a(pe[e],`Executor contract for ${e} not found`)}static async fromRpc(e,n){const[r,i]=await R.SolanaPlatform.chainFromRpc(e),a=n[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new X(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new t.PublicKey(t.usdcContract.get(this.network,this.chain)),a=new t.SolanaAddress(e).unwrap(),o=_(i,a),c=new t.SolanaAddress(r.referrer?.address?.toString()??a).unwrap(),d=new t.Transaction;if(d.feePayer=a,r.referrerFee>0n){const C=_(i,c,!0);await this.connection.getAccountInfo(C)||d.add(Te(a,C,c,i)),d.add(De(o,C,a,r.referrerFee))}const m=t.circleChainId.get(this.network,n.chain),l=n.address.toUniversalAddress(),u=t.Keypair.generate();d.add(await ge.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,i,m,a,o,l,r.remainingAmount,u.publicKey));const f=new Ce.Program(at,this.shimProgramId,{connection:null}),h=t.deserialize$1(H,r.signedQuote),g=_e.deriveAddress("message_transmitter",this.messageTransmitterProgramId);d.add(await f.methods.relayLastMessage({execAmount:new t.BN(r.estimatedCost.toString()),recipientChain:t.toChainId(n.chain),signedQuoteBytes:t.Buffer.from(r.signedQuote),relayInstructions:t.Buffer.from(r.relayInstructions)}).accounts({payer:a,messageTransmitter:g,payee:new t.PublicKey(h.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:d,signers:[u]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(e,n,r=!1){return new R.SolanaUnsignedTransaction(e,this.network,this.chain,n,r)}}const it={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"}]},ot=t.Buffer.from("4552433201","hex");class ee{network;chain;connection;contracts;tokenMessengerV2ProgramId;messageTransmitterV2ProgramId;executorProgramId;constructor(e,n,r,i){this.network=e,this.chain=n,this.connection=r,this.contracts=i;const a=(c,d)=>{if(!c)throw new Error(d);return new t.PublicKey(c)},o=we[e]?.[n];if(!o)throw new Error(`Circle V2 contracts not found for ${e} ${n}`);this.tokenMessengerV2ProgramId=a(o.tokenMessengerV2,`Circle Token Messenger V2 contract for domain ${n} not found`),this.messageTransmitterV2ProgramId=a(o.messageTransmitterV2,`Circle Message Transmitter V2 contract for domain ${n} not found`),this.executorProgramId=a(pe[e],`Executor contract for ${e} not found`)}static async fromRpc(e,n){const[r,i]=await R.SolanaPlatform.chainFromRpc(e),a=n[i];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new ee(r,i,e,a.contracts)}async*transfer(e,n,r){const i=new t.PublicKey(t.usdcContract.get(this.network,this.chain)),a=new t.SolanaAddress(e).unwrap(),o=_(i,a),c=new t.SolanaAddress(r.referrer?.address?.toString()??a).unwrap(),d=new t.Transaction;if(d.feePayer=a,r.referrerFee>0n){const C=_(i,c,!0);await this.connection.getAccountInfo(C)||d.add(Te(a,C,c,i)),d.add(De(o,C,a,r.referrerFee))}const m=P(this.network,n.chain),l=n.address.toUniversalAddress(),u=t.Keypair.generate(),f=await this.createCCTPv2DepositInstruction(i,m,a,o,l,r.remainingAmount,u.publicKey);d.add(f);const h=new Ce.Program(it,this.executorProgramId,{connection:null}),g=t.deserialize$1(H,r.signedQuote);d.add(await h.methods.requestForExecution({amount:new t.BN(r.estimatedCost.toString()),dstChain:t.toChainId(n.chain),dstAddr:[...n.address.toUniversalAddress().toUint8Array()],refundAddr:a,signedQuoteBytes:t.Buffer.from(r.signedQuote),requestBytes:ot,relayInstructions:t.Buffer.from(r.relayInstructions)}).accounts({payer:a,payee:new t.PublicKey(g.quote.payeeAddress),systemProgram:t.SystemProgram.programId}).instruction()),yield this.createUnsignedTx({transaction:d,signers:[u]},"SvmCCTPv2Executor.Transfer")}async isTransferCompleted(e){const n=t.Buffer.alloc(4);n.writeUInt32LE(e.sourceDomain,0);const r=t.Buffer.from(e.nonce).subarray(0,8),[i]=t.PublicKey.findProgramAddressSync([t.Buffer.from("used_nonces"),n,r],this.messageTransmitterV2ProgramId);try{return await this.connection.getAccountInfo(i)!==null}catch{return!1}}async*redeem(e,n,r){const i=new t.SolanaAddress(e).unwrap(),a=new t.Transaction;a.feePayer=i,a.add(await ge.createReceiveMessageInstruction(this.messageTransmitterV2ProgramId,this.tokenMessengerV2ProgramId,new t.PublicKey(t.usdcContract.get(this.network,this.chain)),Se(n),r,i)),yield this.createUnsignedTx({transaction:a,signers:[]},"SvmCCTPv2Executor.Redeem")}async getCurrentBlock(){const e=await this.connection.getSlot();return BigInt(e)}async createCCTPv2DepositInstruction(e,n,r,i,a,o,c){const[d]=t.PublicKey.findProgramAddressSync([t.Buffer.from("token_messenger")],this.tokenMessengerV2ProgramId),[m]=t.PublicKey.findProgramAddressSync([t.Buffer.from("local_token"),e.toBuffer()],this.tokenMessengerV2ProgramId),[l]=t.PublicKey.findProgramAddressSync([t.Buffer.from("remote_token_messenger"),t.Buffer.from(n.toString())],this.tokenMessengerV2ProgramId),[u]=t.PublicKey.findProgramAddressSync([t.Buffer.from("token_minter")],this.tokenMessengerV2ProgramId),[f]=t.PublicKey.findProgramAddressSync([t.Buffer.from("sender_authority")],this.tokenMessengerV2ProgramId),[h]=t.PublicKey.findProgramAddressSync([t.Buffer.from("__event_authority")],this.tokenMessengerV2ProgramId),[g]=t.PublicKey.findProgramAddressSync([t.Buffer.from("denylist_account"),r.toBuffer()],this.tokenMessengerV2ProgramId),[C]=t.PublicKey.findProgramAddressSync([t.Buffer.from("message_transmitter")],this.messageTransmitterV2ProgramId),y=t.Buffer.from([215,60,61,46,114,55,128,176]),p=t.Buffer.alloc(8);p.writeBigUInt64LE(o);const b=t.Buffer.alloc(4);b.writeUInt32LE(n);const E=t.Buffer.from(a.toUint8Array()),S=t.Buffer.alloc(32),B=t.Buffer.alloc(8);B.writeBigUInt64LE(0n);const A=t.Buffer.alloc(4);A.writeUInt32LE(0);const F=t.Buffer.concat([y,p,b,E,S,B,A]),T=[{pubkey:r,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:f,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:g,isSigner:!1,isWritable:!1},{pubkey:C,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!1},{pubkey:l,isSigner:!1,isWritable:!1},{pubkey:u,isSigner:!1,isWritable:!1},{pubkey:m,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!0,isWritable:!0},{pubkey:this.messageTransmitterV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1},{pubkey:v,isSigner:!1,isWritable:!1},{pubkey:t.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:h,isSigner:!1,isWritable:!1},{pubkey:this.tokenMessengerV2ProgramId,isSigner:!1,isWritable:!1}];return new t.TransactionInstruction({keys:T,programId:this.tokenMessengerV2ProgramId,data:F})}createUnsignedTx(e,n,r=!1){return new R.SolanaUnsignedTransaction(e,this.network,this.chain,n,r)}}t.registerProtocol(t._platform$1,"CCTPExecutor",X);t.registerProtocol(t._platform$1,"CCTPv2Executor",ee);var w;(function(s){s.Pending="pending",s.Failed="failed",s.Unsupported="unsupported",s.Submitted="submitted",s.Underpaid="underpaid",s.Aborted="aborted"})(w||(w={}));var le;(function(s){s.ERM1="ERM1",s.ERV1="ERV1",s.ERN1="ERN1",s.ERC1="ERC1",s.ERC2="ERC2"})(le||(le={}));async function ct(s){const e=`${G[s]}/v0/capabilities`;try{return(await t.axios.get(e)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${s}.`)}}async function dt(s,e,n,r){const i=`${G[s]}/v0/quote`;try{return(await t.axios.post(i,{srcChain:t.toChainId(e),dstChain:t.toChainId(n),relayInstructions:r})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function te(s,e,n){const r=`${G[s]}/v0/status/tx`;try{return(await t.axios.post(r,{txHash:e,chainId:t.toChainId(n)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${e}.`)}}const ut=65535n;function mt(s,e,n){if(e>ut)throw new Error("dBps exceeds max u16");let r=e,i=s,a=0n;if(e>0){if(n!==void 0&&s>0){const o=t.parse(n.toString(),6),c=t.units(o)/s,d=e<c?e:c;a=s*d/100000n,r=d}else a=s*e/100000n;i=s-a}return{referrerFee:a,remainingAmount:i,referrerFeeDbps:r}}function ft(s){return new Promise(e=>setTimeout(e,s))}async function Q(s,e,n=t.DEFAULT_TASK_TIMEOUT){const r=P(e,s.chain);return t.retry(async()=>{const i=`${N[e]}/messages/${r}?transactionHash=${s.txid}`;try{const o=(await t.axios.get(i)).data.messages[0];if(!o)return null;if(o.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return o.status==="pending_confirmations"?null:{message:je(t.hex.decode(o.message)),attestation:o.attestation}}catch(a){if(!a||typeof a=="object"&&(t.axios.isAxiosError(a)&&a.response?.status===404||"status"in a&&a.status===404))return null;throw a}},2e3,n,"CCTPv2:GetMessage")}async function lt(s,e,n){const r=P(s,e),i=P(s,n),a=`${N[s]}/fastBurn/USDC/fees/${r}/${i}`,o=await t.axios.get(a);return BigInt(o.data.minimumFee)}async function ht(s,e){const n=t.hex.encode(e.attestation.message.nonce,!0),r=`${N[s]}/reattest/${n}`,i=await t.axios.post(r);if(i.data.error){if(i.data.error.includes("Message is already finalized"))return e.attestation;throw new Error(`Error re-attesting message: ${i.data.error}`)}const a=be(s,e.attestation.message.sourceDomain);return t.retry(async()=>{const o=await Q({txid:e.id,chain:a},s);return!o||o.message.messageBody.expirationBlock!==0n?null:o},2e3,t.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function gt(s){const e=`${N[s]}/fastBurn/USDC/allowance`,n=await t.axios.get(e);return t.units(t.parse(n.data.allowance,6))}function ne(s,e,n){const r=t.usdcContract.get(e.network,e.chain);if(!(r&&t.isSameToken(s,t.Wormhole.tokenId(e.chain,r))))return[];const{network:i,chain:a}=n,o=t.usdcContract.get(i,a);return o?[t.Wormhole.chainAddress(a,o)]:[]}let k;async function re(s,e,n,r){const{fromChain:i,toChain:a}=s;if(!t.usdcContract.get(i.network,i.chain))throw new Error("Invalid transfer, no USDC contract on source");const c=t.usdcContract.get(a.network,a.chain);if(!c)throw new Error("Invalid transfer, no USDC contract on destination");let d;if(n.referrerFeeDbps>0n&&(d=n.referrerAddresses?.[i.network]?.[i.chain],!d))throw new Error(`Referrer address not configured for ${i.chain}`);const m=d?t.Wormhole.chainAddress(i.chain,d):void 0,{referrerFee:l,remainingAmount:u,referrerFeeDbps:f}=mt(t.units(e.normalizedParams.amount),n.referrerFeeDbps,n.referrerFeeThreshold);if(u<=0n)throw new Error("Amount after fee <= 0");const h=Qe[a.network]?.[a.chain];if(!h)throw new Error("Gas limit not found");const g=await ct(i.network);if(!g[t.toChainId(i.chain)])throw new Error("Unsupported source chain");const y=g[t.toChainId(a.chain)];if(!y||!y.requestPrefixes.includes(r))throw new Error("Unsupported destination chain");const{recipient:p}=s;let b=!0;if(p&&a.chain==="Solana"){const Me=t.Wormhole.parseAddress("Solana",c),ke=await a.getTokenAccount(p.address,Me),oe=await a.getRpc();b=await oe.getAccountInfo(new t.SolanaAddress(ke.address).unwrap())!==null,!b&&!k&&(k=BigInt(await oe.getMinimumBalanceForRentExemption(165)))}let E=0n;a.chain==="Solana"&&(E+=We,!b&&k&&(E+=k),r==="ERC2"&&(E+=1200000n));const S=[];S.push({request:{type:"GasInstruction",gasLimit:h,msgValue:E}});const B=BigInt(y.gasDropOffLimit),A=e.options.nativeGas&&B>0n?BigInt(Math.round(e.options.nativeGas*100))*B/100n:0n;(A>0n||!b)&&S.push({request:{type:"GasDropOffInstruction",dropOff:A,recipient:p?p.address.toUniversalAddress():new t.UniversalAddress(new Uint8Array(32))}});const F=t.serialize(Be,{requests:S}),T=await dt(i.network,i.chain,a.chain,t.hex.encode(F,!0));if(!T.estimatedCost)throw new Error("No estimated cost");const ie=t.hex.decode(T.signedQuote),Fe=t.deserialize$1(H,ie),Ie=BigInt(T.estimatedCost);return{signedQuote:ie,relayInstructions:F,estimatedCost:Ie,referrer:m,referrerFee:l,remainingAmount:u,referrerFeeDbps:f,expiryTime:Fe.quote.expiryTime,gasDropOff:A}}async function Pe(s,e,n,r){t.deserialize$1(Be,r.details.relayInstructions).requests.forEach(({request:u})=>{if(u.type==="GasDropOffInstruction"&&!u.recipient.equals(n.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const a=t.Wormhole.parseAddress(e.chain(),e.address()),o=await Ct(n,s);let c;r.protocol==="CCTPExecutor"?c=await(await s.fromChain.getProtocol(r.protocol)).transfer(a,o,r.details):c=await(await s.fromChain.getProtocol(r.protocol)).transfer(a,o,r.details);const d=await t.signSendWait(s.fromChain,c,e);let m=0;return(async()=>{for(;m<20;){try{const[u]=await te(s.fromChain.network,d.at(-1).txid,s.fromChain.chain);if(u)break}catch{}m++,await ft(2e3)}})(),{from:s.fromChain.chain,to:s.toChain.chain,state:t.TransferState.SourceInitiated,originTxs:d}}async function Ct(s,e){if(s.chain!=="Solana")return s;const n=t.usdcContract.get(e.toChain.network,e.toChain.chain);if(!n)throw new Error("No USDC contract found for Solana");const r=t.Wormhole.parseAddress("Solana",n);return e.toChain.getTokenAccount(s.address,r)}function pt(s={referrerFeeDbps:0n}){if(s.referrerFeeDbps<0||s.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends wt{static config=s}return e}class wt extends t.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(ye[e]??{})]}static async supportedDestinationTokens(e,n,r){return!I(n.network,n.chain)||!I(r.network,r.chain)?[]:ne(e,n,r)}getDefaultOptions(){return{nativeGas:0}}async validate(e,n){const{fromChain:r,toChain:i}=e;return!I(r.network,r.chain)||!I(i.network,i.chain)?{valid:!1,error:new Error("Unsupported source or destination chain"),params:n}:n.options?.nativeGas&&(n.options.nativeGas<0||n.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:n}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(n.amount)},options:n.options??this.getDefaultOptions(),...n}}}async quote(e,n){const{fromChain:r,toChain:i}=e;try{const a=await re(e,n,this.staticConfig,"ERC1"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a,l=r.chain==="Polygon"?2e3*200:t.estimateFinalityTime(r.chain)+1e3,[u,f]=await Promise.all([r.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:n,sourceToken:{token:e.source.id,amount:n.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:t.fromBaseUnits(o,e.destination.decimals)},relayFee:{token:t.nativeTokenId(r.chain),amount:t.fromBaseUnits(c,u)},destinationNativeGas:t.fromBaseUnits(d,f),eta:l,expires:m,details:a}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}async initiate(e,n,r,i){if(!r.details)throw new Error("Missing quote details");return await Pe(e,n,i,{protocol:"CCTPExecutor",details:r.details})}async*track(e,n){if(t.isCompleted(e)||t.isFailed(e))return e;let r=n||3600*1e3;for(;r>0;){const i=Date.now();if(t.isSourceInitiated(e)||t.isSourceFinalized(e)||t.isAttested(e))try{const[a]=await te(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!a)throw new Error("No transaction status found");const o=a?.status;if((o===w.Failed||o===w.Underpaid||o===w.Unsupported||o===w.Aborted)&&(e={...e,state:t.TransferState.Failed,error:new t.RelayFailedError(`Relay failed with status: ${o}`)}),o===w.Submitted&&(e={...e,state:t.TransferState.DestinationFinalized,attestation:{id:a.id,attestation:{}}}),yield e,t.isCompleted(e)||t.isFailed(e))return e}catch(a){console.error(`Error fetching transaction status: ${a.message||a}`)}await new Promise(a=>setTimeout(a,3e3)),r-=Date.now()-i}return e}}class ve extends t.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return Object.keys(z[e]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(e,n,r,i){if(!r.details)throw new Error("Missing quote details");return await Pe(e,n,i,{protocol:"CCTPv2Executor",details:r.details})}async*track(e,n){if(t.isCompleted(e))return e;let r=n||3600*1e3;for(;r>0;){const i=Date.now();if(t.isSourceInitiated(e)||t.isSourceFinalized(e)||t.isAttested(e)||t.isFailed(e))try{const a=e.originTxs.at(-1).txid;if(t.isSourceInitiated(e)||t.isSourceFinalized(e)){const o=await Q({chain:e.from,txid:a},this.wh.network);o&&(e={...e,state:t.TransferState.Attested,attestation:{id:a,attestation:o}}),yield e}if(t.isAttested(e)){const[o]=await te(this.wh.network,a,e.from);if(!o)throw new Error("No transaction status found");const c=o?.status;c===w.Submitted?e={...e,state:t.TransferState.DestinationFinalized}:(c===w.Failed||c===w.Underpaid||c===w.Unsupported||c===w.Aborted)&&(e={...e,state:t.TransferState.Failed,error:new t.RelayFailedError(`Relay failed with status: ${c}`)})}if(t.isFailed(e)){if(!e.attestation)throw new Error("Receipt is missing attestation");const o=e.attestation;await(await this.wh.getChain(e.to).getProtocol("CCTPv2Executor")).isTransferCompleted(o.attestation.message)&&(e={...e,state:t.TransferState.DestinationFinalized,attestation:o})}if(yield e,t.isCompleted(e))return e}catch(a){console.error(`Error fetching transaction status: ${a.message||a}`)}await new Promise(a=>setTimeout(a,3e3)),r-=Date.now()-i}return e}async complete(e,n){if(!t.isAttested(n)&&!t.isFailed(n))throw new Error("Transfer is not attested");if(!n.attestation)throw new Error("No attestation found");const r=this.wh.getChain(n.to),i=await r.getProtocol("CCTPv2Executor");let{attestation:a,message:o}=n.attestation.attestation;const{expirationBlock:c}=o.messageBody,d=await i.getCurrentBlock();if(c!==0n&&c<d){const f=await ht(r.network,n.attestation);if(!f)throw new Error("Failed to reattest message");a=f.attestation,o=f.message}const m=t.Wormhole.parseAddress(e.chain(),e.address()),l=i.redeem(m,o,a),u=await t.signSendWait(this.wh.getChain(n.to),l,e);return{...n,state:t.TransferState.DestinationInitiated,attestation:n.attestation,destinationTxs:u}}async resume(e){const n=await Q(e,this.wh.network);if(!n)throw new Error("No attestation found");const{message:r}=n,i=be(this.wh.network,r.destinationDomain);return await(await this.wh.getChain(i).getProtocol("CCTPv2Executor")).isTransferCompleted(r)?{from:e.chain,to:i,state:t.TransferState.DestinationFinalized,originTxs:[e],attestation:{id:e.txid,attestation:n}}:{from:e.chain,to:i,state:t.TransferState.Attested,originTxs:[e],attestation:{id:e.txid,attestation:n}}}}function yt(s={referrerFeeDbps:0n}){if(s.referrerFeeDbps<0||s.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends se{static config=s}return e}class se extends ve{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,n){return Ge(e.network,e.chain)&&L(n.network,n.chain)}static async supportedDestinationTokens(e,n,r){return this.isPathSupported(n,r)?ne(e,n,r):[]}async validate(e,n){return se.isPathSupported(e.fromChain,e.toChain)?n.options?.nativeGas&&(n.options.nativeGas<0||n.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:n}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(n.amount)},options:n.options??this.getDefaultOptions(),...n}}:{valid:!1,error:new Error("Can only transfer from a Circle V2 fast chain to a Circle V2 chain"),params:n}}async quote(e,n){const{fromChain:r,toChain:i}=e;try{const a=await re(e,n,this.staticConfig,"ERC2"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a;if(await gt(r.network)<=o)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const u=await lt(r.network,r.chain,i.chain),f=(o*u+10000n-1n)/10000n,h=o-f;if(h<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const g=Ee[r.network]?.[r.chain],[C,y]=await Promise.all([r.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:n,sourceToken:{token:e.source.id,amount:n.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:t.fromBaseUnits(h,e.destination.decimals)},relayFee:{token:t.nativeTokenId(r.chain),amount:t.fromBaseUnits(c,C)},destinationNativeGas:t.fromBaseUnits(d,y),eta:g,expires:m,details:{...a,minFinalityThreshold:$.CONFIRMED,fastTransferMaxFee:f}}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}}function bt(s={referrerFeeDbps:0n}){if(s.referrerFeeDbps<0||s.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class e extends ae{static config=s}return e}class ae extends ve{staticConfig=this.constructor.config;static config={referrerFeeDbps:0n};static meta={name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"};static isPathSupported(e,n){return L(e.network,e.chain)&&L(n.network,n.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,n,r){return this.isPathSupported(n,r)?ne(e,n,r):[]}async validate(e,n){return ae.isPathSupported(e.fromChain,e.toChain)?n.options?.nativeGas&&(n.options.nativeGas<0||n.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:n}:{valid:!0,params:{normalizedParams:{amount:e.parseAmount(n.amount)},options:n.options??this.getDefaultOptions(),...n}}:{valid:!1,error:new Error("Can only transfer between Circle V2 chains"),params:n}}async quote(e,n){const{fromChain:r,toChain:i}=e;try{const a=await re(e,n,this.staticConfig,"ERC2"),{remainingAmount:o,estimatedCost:c,gasDropOff:d,expiryTime:m}=a,l=r.chain==="Polygon"?2e3*200:t.estimateFinalityTime(r.chain)+1e3,[u,f]=await Promise.all([r.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:n,sourceToken:{token:e.source.id,amount:n.normalizedParams.amount},destinationToken:{token:e.destination.id,amount:t.fromBaseUnits(o,e.destination.decimals)},relayFee:{token:t.nativeTokenId(r.chain),amount:t.fromBaseUnits(c,u)},destinationNativeGas:t.fromBaseUnits(d,f),eta:l,expires:m,details:{...a,minFinalityThreshold:$.FINALIZED,fastTransferMaxFee:0n}}}catch(a){return{success:!1,error:new Error(a instanceof Error?a.message:`${a}`)}}}}const{executorTokenBridgeRoute:Et}=ze.routes;exports.cctpExecutorRoute=pt;exports.cctpV2FastExecutorRoute=yt;exports.cctpV2StandardExecutorRoute=bt;exports.executorTokenBridgeRoute=Et;
|