@wormhole-foundation/wormhole-connect 3.0.2-beta.0-development → 3.0.2-beta.1-development
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/assets/{basic-ChNCp6rI.js → basic-PUjrTVXb.js} +1 -1
- package/dist/assets/{evm-DSirgd5b.js → evm-CO5UWnAY.js} +2 -2
- package/dist/assets/{index-L-lC4rqb.js → index-1lzfHdT2.js} +1 -1
- package/dist/assets/{index-CHfaLf5J.js → index-DBVZDYF7.js} +1 -1
- package/dist/assets/index-DKlPX3ZI.js +1 -0
- package/dist/assets/{index-BtCrMDAu.js → index-Ddk7n7Ti.js} +1 -1
- package/dist/assets/{index-HhyysXFu.js → index-DyUmO4PR.js} +1 -1
- package/dist/assets/{index-BiwA3Bbq.js → index-MMzKxP1N.js} +1 -1
- package/dist/assets/{secp256k1-Cd7rIav0.js → secp256k1-0LtSM2L1.js} +1 -1
- package/dist/assets/{secp256k1-BQBOR8e3.js → secp256k1-DwTU3j1N.js} +1 -1
- package/dist/assets/{solana-DcwLWeKT.js → solana-DlGdMBSL.js} +4 -4
- package/dist/assets/{w3m-modal-DdptuLHe.js → w3m-modal-DD9Jgepz.js} +1 -1
- package/dist/main.js +72 -70
- package/dist/src/AppRouter.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/config/tokens.d.ts +1 -1
- package/dist/src/config/tokens.d.ts.map +1 -1
- package/dist/src/exports/index.d.ts +2 -2
- package/dist/src/exports/index.d.ts.map +1 -1
- package/dist/src/hooks/useFetchQuotes.d.ts.map +1 -1
- package/dist/src/icons/Chains/PLUME.d.ts.map +1 -1
- package/dist/src/icons/PoweredBy.d.ts.map +1 -1
- package/dist/src/icons/Routing.d.ts +5 -0
- package/dist/src/icons/Routing.d.ts.map +1 -0
- package/dist/src/icons/Tokens/PLUME.d.ts.map +1 -1
- package/dist/src/store/transferInput.d.ts +1 -1
- package/dist/src/store/transferInput.d.ts.map +1 -1
- package/dist/src/utils/coingecko.d.ts.map +1 -1
- package/dist/src/utils/formatNumber.d.ts +23 -0
- package/dist/src/utils/formatNumber.d.ts.map +1 -0
- package/dist/src/utils/index.d.ts +3 -1
- package/dist/src/utils/index.d.ts.map +1 -1
- package/dist/src/utils/routes.d.ts +12 -0
- package/dist/src/utils/routes.d.ts.map +1 -0
- package/dist/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/AssetPicker/TokenItem.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/dist/src/views/v2/Redeem/TransactionDetails/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AmountInput/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/TokenItem.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/Eta.d.ts +6 -0
- package/dist/src/views/v3/Bridge/Routes/Eta.d.ts.map +1 -0
- package/dist/src/views/v3/Bridge/Routes/RouteBadge.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/RoutesBottomSheet.d.ts +7 -6
- package/dist/src/views/v3/Bridge/Routes/RoutesBottomSheet.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/RoutesLink.d.ts +7 -0
- package/dist/src/views/v3/Bridge/Routes/RoutesLink.d.ts.map +1 -0
- package/dist/src/views/v3/Bridge/Routes/RoutesList.d.ts +2 -1
- package/dist/src/views/v3/Bridge/Routes/RoutesList.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/RoutesLoader.d.ts +4 -0
- package/dist/src/views/v3/Bridge/Routes/RoutesLoader.d.ts.map +1 -0
- package/dist/src/views/v3/Bridge/Routes/RoutesModal.d.ts +6 -5
- package/dist/src/views/v3/Bridge/Routes/RoutesModal.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/SingleRoute.d.ts +1 -0
- package/dist/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/dist/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
- package/dist/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
- package/lib/account-Br8E7RB6.js +1 -0
- package/lib/{account-BTK2b2Fv.mjs → account-CVa_3S2g.mjs} +1 -1
- package/lib/{address-8wLqn60W.mjs → address-BApwdEpr.mjs} +96 -96
- package/lib/address-BwQqFkyh.js +1 -0
- package/lib/address-C2pxq9b2.js +1 -0
- package/lib/{address-n0gAFMrZ.mjs → address-f6joE_ig.mjs} +12 -12
- package/lib/aptos-CMRGggVs.js +2 -0
- package/lib/{aptos-CK-j196x.js → aptos-CTKQNmlP.js} +1 -1
- package/lib/{aptos-B-DJQlwt.mjs → aptos-CfFbx7uf.mjs} +9 -9
- package/lib/{aptos-Bwcz9wZX.mjs → aptos-fozuppXh.mjs} +3 -3
- package/lib/{basic-DHWVLmCq.mjs → basic-BA2aRJJn.mjs} +2 -2
- package/lib/{basic-B5ZFelC_.js → basic-DUWaF2I0.js} +1 -1
- package/lib/{basic-E2M-9h1u.js → basic-DeiUayOA.js} +1 -1
- package/lib/{basic-Pour9Ggp.mjs → basic-DoC8u7J8.mjs} +2 -2
- package/lib/{blake2b-C5HyObld.mjs → blake2b-BGxWUAjG.mjs} +23 -23
- package/lib/blake2b-Fj1aPKgL.js +1 -0
- package/lib/{browser-ponyfill-jK8MKVVg.mjs → browser-ponyfill-D5AN8ZPp.mjs} +1 -1
- package/lib/browser-ponyfill-Dn6gsMYK.js +2 -0
- package/lib/{chain-Bm6u6eUF.mjs → chain-DAw2I5H8.mjs} +1 -1
- package/lib/chain-DnPXlO8g.js +1 -0
- package/lib/chunk-KJH4KKG6-BjF7YUcU.js +470 -0
- package/lib/{chunk-KJH4KKG6-DJsu-Y-X.mjs → chunk-KJH4KKG6-DmVjhXO7.mjs} +144 -144
- package/lib/{constants-Cf2YMjNo.js → constants-BtNs_2F4.js} +1 -1
- package/lib/{constants-B7AbX6qr.mjs → constants-Dcc2nVaW.mjs} +3 -3
- package/lib/contract-BEHYQLvJ.js +1 -0
- package/lib/{contract-llnN6ki0.mjs → contract-BkMAZomO.mjs} +123 -123
- package/lib/{core-CF5c7Vev.mjs → core-BHV42Qa0.mjs} +25 -26
- package/lib/core-CV23yxnG.js +889 -0
- package/lib/create-CHcGblj6.js +1 -0
- package/lib/{create-Dm87_0zG.mjs → create-CKLtL7hr.mjs} +1 -1
- package/lib/{evm-BYIGg8e4.mjs → evm-Bf7qbM19.mjs} +42 -42
- package/lib/{evm-B2hUWkt7.js → evm-ClWkquRx.js} +2 -2
- package/lib/{evm-fvvpk-li.mjs → evm-DhMoy8cH.mjs} +6 -6
- package/lib/{evm-DFNbMHoa.js → evm-tXmzU9Xp.js} +2 -2
- package/lib/executor.js +1 -1
- package/lib/executor.mjs +145 -138
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-Cwo5AKUC.mjs → index-1rCCpdwd.mjs} +5 -5
- package/lib/{index-DBCa3k0j.mjs → index-3HvzWPL7.mjs} +9 -9
- package/lib/{index-MOwE6ses.mjs → index-B7ztYPhr.mjs} +21 -22
- package/lib/index-BM-0SeYB.js +1 -0
- package/lib/{index-DiQ8Ytrt.mjs → index-BTnpftLz.mjs} +1 -1
- package/lib/{index-BiCMaXJS.js → index-BWQMi6Rj.js} +1 -1
- package/lib/index-BbgKw2pu.js +1 -0
- package/lib/index-BblcpkoK.js +1 -0
- package/lib/index-Bfblsmud.js +1 -0
- package/lib/{index-C_0yAOSX.mjs → index-BfkFXEnG.mjs} +25082 -24072
- package/lib/{index-fi1sh8vr.mjs → index-BijBPDRn.mjs} +2 -2
- package/lib/index-BoquY9R2.js +337 -0
- package/lib/index-C2NtsO9Q.js +1 -0
- package/lib/{index-CNuk-XLX.mjs → index-C4JmrizV.mjs} +4 -4
- package/lib/index-C8TtXpOf.js +1 -0
- package/lib/index-CB8kOyIP.js +1 -0
- package/lib/index-CInVjUCW.js +1 -0
- package/lib/{index-BF11RebI.mjs → index-CLTklDbp.mjs} +1 -1
- package/lib/index-CQvgeH_r.js +1 -0
- package/lib/{index-DzYjoSJp.mjs → index-CUnOYRFQ.mjs} +23 -24
- package/lib/{index-DGh9LzN1.mjs → index-CWe_BTdo.mjs} +31 -31
- package/lib/{index-2Bz1Np4K.mjs → index-CZ91lJ9M.mjs} +5 -5
- package/lib/{index-Dgy1FO7C.js → index-CgyVnj6U.js} +1 -1
- package/lib/{index-BzJcFdt_.mjs → index-Clr2JjoJ.mjs} +44 -44
- package/lib/index-CnnCCv6Q.js +1 -0
- package/lib/{index-CJnRWlFf.mjs → index-CwxGLNEk.mjs} +48 -49
- package/lib/index-D7BLfz05.js +1 -0
- package/lib/index-DM7C-wvQ.js +3 -0
- package/lib/{index-DhIh3xiW.mjs → index-DNy_sNGr.mjs} +8 -8
- package/lib/{index-BZaRg0yd.mjs → index-DVcaDWmz.mjs} +1 -1
- package/lib/{index-CsAigASU.mjs → index-DWOP9OBp.mjs} +17 -17
- package/lib/{index-CTLz8Fz0.mjs → index-Dda5qc2t.mjs} +13 -14
- package/lib/{index-CLBXF_zH.mjs → index-DeaiBvpG.mjs} +16 -16
- package/lib/index-HOuGP-7b.js +1 -0
- package/lib/{index-Dt2uNp-N.mjs → index-KZve3tYJ.mjs} +4 -4
- package/lib/{index-CJDBidKv.mjs → index-SIyXqCAN.mjs} +41 -41
- package/lib/index-WhVYPMUr.js +1 -0
- package/lib/index-hmjT4xa7.js +1 -0
- package/lib/index-ledagFNU.js +1 -0
- package/lib/index-pbRVlgcN.js +1 -0
- package/lib/{index-BpQXUhR4.mjs → index-qK7AyMAk.mjs} +23 -27
- package/lib/index-ttZu99PZ.js +1 -0
- package/lib/{index.es-BqRBGIq6.mjs → index.es-BXRQf6Oi.mjs} +25 -26
- package/lib/index.es-BjGaOok5.js +11 -0
- package/lib/index.es-D6S74vhi.js +27 -0
- package/lib/{index.es-DgCZuUzB.mjs → index.es-cOw8juwf.mjs} +741 -737
- package/lib/index.js +1 -1
- package/lib/index.mjs +17 -16
- package/lib/mayan.js +3 -3
- package/lib/mayan.mjs +918 -891
- package/lib/mint-CL36R6ED.js +1 -0
- package/lib/{mint-Dc-VsiAn.mjs → mint-DunEG1jV.mjs} +32 -33
- package/lib/ntt.js +1 -1
- package/lib/ntt.mjs +2332 -2373
- package/lib/platform-7vCWzCny.js +1 -0
- package/lib/platform-BKhoO9So.js +1 -0
- package/lib/{platform-B95L0Vxv.mjs → platform-BN6LFtXE.mjs} +16 -16
- package/lib/{platform-DnP_1wGA.mjs → platform-BYLu9SzP.mjs} +4 -4
- package/lib/platform-Bbe26nx7.js +1 -0
- package/lib/{platform-DiG7WY9Z.mjs → platform-DCgWqmh1.mjs} +4 -4
- package/lib/{provider-jsonrpc-CRABh2gN.mjs → provider-jsonrpc-Bmgnrmpy.mjs} +155 -155
- package/lib/provider-jsonrpc-CbtP2Ffg.js +1 -0
- package/lib/{secp256k1-zHHDNAlH.mjs → secp256k1-BDQEvyHq.mjs} +1 -1
- package/lib/{secp256k1-obBDPYM-.mjs → secp256k1-C77Oh9AA.mjs} +1 -1
- package/lib/{secp256k1-2hq3Jk4g.mjs → secp256k1-CCn2vlXj.mjs} +1 -1
- package/lib/{secp256k1-B94G4gyy.js → secp256k1-CHAR40au.js} +1 -1
- package/lib/{secp256k1-DCcAh19h.js → secp256k1-D-DmPYcJ.js} +1 -1
- package/lib/{secp256k1-CjndBUS7.js → secp256k1-DYWDlveU.js} +1 -1
- package/lib/{signer-N_ccpPOz.mjs → signer-BIcn81N5.mjs} +18 -18
- package/lib/signer-H7atraks.js +1 -0
- package/lib/{solana-_Ha4YgiP.mjs → solana-B0QSg7B3.mjs} +30 -30
- package/lib/solana-Cs5VyB20.js +900 -0
- package/lib/solana-uvHG8JV5.js +1 -0
- package/lib/solana-zyfOlbhb.mjs +18 -0
- package/lib/{solanaEmbed.esm-DK5RIquB.mjs → solanaEmbed.esm-BqdznDuW.mjs} +623 -622
- package/lib/solanaEmbed.esm-D8vtESE6.js +10 -0
- package/lib/src/AppRouter.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/config/tokens.d.ts +1 -1
- package/lib/src/config/tokens.d.ts.map +1 -1
- package/lib/src/exports/index.d.ts +2 -2
- package/lib/src/exports/index.d.ts.map +1 -1
- package/lib/src/hooks/useFetchQuotes.d.ts.map +1 -1
- package/lib/src/icons/Chains/PLUME.d.ts.map +1 -1
- package/lib/src/icons/PoweredBy.d.ts.map +1 -1
- package/lib/src/icons/Routing.d.ts +5 -0
- package/lib/src/icons/Routing.d.ts.map +1 -0
- package/lib/src/icons/Tokens/PLUME.d.ts.map +1 -1
- package/lib/src/store/transferInput.d.ts +1 -1
- package/lib/src/store/transferInput.d.ts.map +1 -1
- package/lib/src/utils/coingecko.d.ts.map +1 -1
- package/lib/src/utils/formatNumber.d.ts +23 -0
- package/lib/src/utils/formatNumber.d.ts.map +1 -0
- package/lib/src/utils/index.d.ts +3 -1
- package/lib/src/utils/index.d.ts.map +1 -1
- package/lib/src/utils/routes.d.ts +12 -0
- package/lib/src/utils/routes.d.ts.map +1 -0
- package/lib/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/AssetPicker/TokenItem.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/lib/src/views/v2/Redeem/TransactionDetails/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AmountInput/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/TokenItem.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/Eta.d.ts +6 -0
- package/lib/src/views/v3/Bridge/Routes/Eta.d.ts.map +1 -0
- package/lib/src/views/v3/Bridge/Routes/RouteBadge.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/RoutesBottomSheet.d.ts +7 -6
- package/lib/src/views/v3/Bridge/Routes/RoutesBottomSheet.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/RoutesLink.d.ts +7 -0
- package/lib/src/views/v3/Bridge/Routes/RoutesLink.d.ts.map +1 -0
- package/lib/src/views/v3/Bridge/Routes/RoutesList.d.ts +2 -1
- package/lib/src/views/v3/Bridge/Routes/RoutesList.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/RoutesLoader.d.ts +4 -0
- package/lib/src/views/v3/Bridge/Routes/RoutesLoader.d.ts.map +1 -0
- package/lib/src/views/v3/Bridge/Routes/RoutesModal.d.ts +6 -5
- package/lib/src/views/v3/Bridge/Routes/RoutesModal.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/SingleRoute.d.ts +1 -0
- package/lib/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/lib/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
- package/lib/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
- package/lib/{sui-CQcQ6w_P.mjs → sui-B38DyOqM.mjs} +44 -44
- package/lib/{sui-BplKFZQu.mjs → sui-BpfnZR4f.mjs} +3 -3
- package/lib/sui-CT9MWY38.js +1 -0
- package/lib/{sui-_hvmCvD8.js → sui-DXQAMRQJ.js} +1 -1
- package/lib/{tokens-DNv0ZNvU.js → tokens-CmINcwKk.js} +31 -31
- package/lib/{tokens-Dl4YwW18.mjs → tokens-YxAPPVy3.mjs} +1726 -1724
- package/lib/transfer-BQ72fByU.js +1 -0
- package/lib/transfer-bTW0j9yh.mjs +58 -0
- package/lib/units-Ckije3Qv.js +1 -0
- package/lib/{units-DPWUSE6J.mjs → units-CtyvuzxQ.mjs} +13 -13
- package/lib/unsignedTransaction-C6Qp42VS.js +1 -0
- package/lib/{unsignedTransaction-DwcUilyN.mjs → unsignedTransaction-CXB-QCUC.mjs} +18 -18
- package/lib/{w3m-modal-BJILsxDp.mjs → w3m-modal-B7LUHLWC.mjs} +2 -2
- package/lib/{w3m-modal-D4CpFxO2.mjs → w3m-modal-BOTzBqbc.mjs} +2 -2
- package/lib/{w3m-modal-CrfHWSrF.js → w3m-modal-BTb03-7B.js} +1 -1
- package/lib/{w3m-modal-CBG2MSPp.js → w3m-modal-xmdf4r6V.js} +1 -1
- package/lib/web3-COTIsLs8.js +22 -0
- package/lib/{address-B-XN4tFw.mjs → web3-DYVeiqSa.mjs} +6599 -6576
- package/package.json +32 -32
- package/dist/assets/index-BWPgrXHs.js +0 -1
- package/lib/account-cRt2xMoW.js +0 -1
- package/lib/address-BGujeWtN.js +0 -22
- package/lib/address-C7DIAk4M.js +0 -1
- package/lib/address-KNhRm6oe.js +0 -1
- package/lib/aptos-f5TqmvqV.js +0 -2
- package/lib/blake2b-B-MRXUPb.js +0 -1
- package/lib/browser-ponyfill-CE6vRkjp.js +0 -2
- package/lib/chain-Hsn22HAP.js +0 -1
- package/lib/chunk-KJH4KKG6-CoyI75Ig.js +0 -470
- package/lib/contract-D2fTrJgn.js +0 -1
- package/lib/core-v0G9f7LX.js +0 -889
- package/lib/create-DoZZ7ciL.js +0 -1
- package/lib/index-B8-KKWD-.js +0 -1
- package/lib/index-BHbvgOMD.js +0 -1
- package/lib/index-BHfUgvSV.js +0 -1
- package/lib/index-BTKC7Hou.js +0 -1
- package/lib/index-BWXglAWd.js +0 -1
- package/lib/index-Bpp8C4u8.js +0 -1
- package/lib/index-CF2fHBHJ.js +0 -3
- package/lib/index-CTPz98nv.js +0 -1
- package/lib/index-ClMoiji-.js +0 -1
- package/lib/index-ClsVcH6F.js +0 -1
- package/lib/index-CqOI6LVu.js +0 -1
- package/lib/index-DCz_4mcz.js +0 -1
- package/lib/index-DKksdvND.js +0 -335
- package/lib/index-DRv3ZpVL.js +0 -1
- package/lib/index-DYqo8IhM.js +0 -1
- package/lib/index-DZubce9o.js +0 -1
- package/lib/index-DprM_IpB.js +0 -1
- package/lib/index-DshEQYMA.js +0 -1
- package/lib/index-JrM783SN.js +0 -1
- package/lib/index.es-C6YhioMN.js +0 -27
- package/lib/index.es-D3Xxxr8I.js +0 -11
- package/lib/mint-DlXC3sGi.js +0 -1
- package/lib/platform-B1XoDKoN.js +0 -1
- package/lib/platform-COuZC5Zc.js +0 -1
- package/lib/platform-NG3efAb2.js +0 -1
- package/lib/provider-jsonrpc-pXNHQF7n.js +0 -1
- package/lib/signer-CCa6npZ3.js +0 -1
- package/lib/solana-BJ3aReZw.mjs +0 -18
- package/lib/solana-BwyVgP30.js +0 -1
- package/lib/solana-CanFuMgA.js +0 -900
- package/lib/solanaEmbed.esm-C--1F7Lx.js +0 -10
- package/lib/sui-Bs83Gy5Z.js +0 -1
- package/lib/units-BvcKDiAx.js +0 -1
- package/lib/unsignedTransaction-dN_5EJf5.js +0 -1
- package/lib/web3-Bu_6UejS.mjs +0 -67
- package/lib/web3-Doz_0RHD.js +0 -1
package/lib/executor.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var Ue=Object.defineProperty;var $e=(r,t,e)=>t in r?Ue(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var d=(r,t,e)=>$e(r,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./address-BGujeWtN.js"),le=require("./chunk-KJH4KKG6-CoyI75Ig.js"),ze=require("./platform-NG3efAb2.js"),M=require("./address-KNhRm6oe.js"),Ve=require("./unsignedTransaction-C1YeEl4G.js"),k=require("./platform-COuZC5Zc.js"),I=require("./contract-D2fTrJgn.js"),Ae=require("./unsignedTransaction-B7AZXsTD.js"),x=require("./platform-B1XoDKoN.js"),Re=require("./index-ClMoiji-.js"),Ne=require("./address-C7DIAk4M.js"),Oe=require("./unsignedTransaction-DzSLsK-p.js"),_e=require("./index-JrM783SN.js"),Le=require("./index-CF2fHBHJ.js"),D=require("./web3-Doz_0RHD.js"),he=require("./unsignedTransaction-dN_5EJf5.js"),Ge=require("./account-cRt2xMoW.js"),qe={binary:"uint",size:1,custom:{to:r=>r>0,from:r=>r?1:0}},We=Object.freeze(Object.defineProperty({__proto__:null,amountItem:s.amountItem,boolItem:qe,chainItem:s.chainItem,circleDomainItem:s.circleDomainItem,circleNonceItem:s.circleNonceItem,dateConversion:s.dateConversion,fixedChainItem:s.fixedChainItem,fixedLengthStringItem:s.fixedLengthStringItem,guardianSetItem:s.guardianSetItem,payloadIdItem:s.payloadIdItem,sequenceItem:s.sequenceItem,signatureItem:s.signatureItem,stringConversion:s.stringConversion,universalAddressItem:s.universalAddressItem},Symbol.toStringTag,{value:"Module"})),j={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},H={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"}},Qe={Testnet:{Avalanche:"0x4058F0C3924eDaB19c15597C438968ed49C1a213",BaseSepolia:"0xC400FcC0e92d3406747FBb6f513D3aa8B038fcE9",Sepolia:"0x0F18DD26D0B41fb1eaa9cF34D1Ec6022aA69a8e2"},Mainnet:{Arbitrum:"0x8442d68524217601ed126f6859694E4B0C7c66A1",Avalanche:"0x3952914628650Ca510404872D84DfF10A844C5B5",Base:"0xbd8d42f40a11b37bD1b3770D754f9629F7cd5679",Ethereum:"0x2cCf230467FE7387674BAa657747F0B5485c7fEC",Linea:"0xc48c126468BE919068dE1983F00F65af759a4E87",Optimism:"0xd0a8940b2e743e33b682daec4d52b46713606c9d",Polygon:"0xc8a8e6d760dcbd5d6746e2f66cd2ffa722dd1e59",Unichain:"0xD5D5D640D8b758672Cc7A078734175c4433866d5",Sonic:"0xc39BF082ec91D9bC385F956D24a8D66C0c26223d",Worldchain:"0x789f2b91f7B35D5B890983328340c4600339B354"}},ge={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},Ke={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},je=5001n,He={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,Solana:250000n,Sonic:250000n,Sui:8000000n,Worldchain:250000n}},Xe={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"},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}},T=(r,t)=>{var e;return((e=ye[r])==null?void 0:e[t])!==void 0},z={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}},G=(r,t)=>{var e;return((e=z[r])==null?void 0:e[t])!==void 0},U=(r,t)=>{var n;const e=(n=z[r])==null?void 0:n[t];if(e===void 0)throw new Error(`CircleV2 domain not found for network ${r} and chain ${t}`);return e},xe=(r,t)=>{var n;const e=(n=Object.entries(z[r]??{}).find(([,a])=>a===t))==null?void 0:n[0];if(e===void 0)throw new Error(`CircleV2 chain not found for network ${r} and domain ${t}`);return e},V={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var $;(function(r){r[r.CONFIRMED=1e3]="CONFIRMED",r[r.FINALIZED=2e3]="FINALIZED"})($||($={}));const De={Testnet:{ArbitrumSepolia:8e3,BaseSepolia:8e3,Sepolia:2e4,Linea:8e3},Mainnet:{Arbitrum:8e3,Base:8e3,Ethereum:2e4,Linea:8e3,Optimism:8e3,Polygon:8e3,Unichain:8e3,Worldchain:8e3}},Ze=(r,t)=>{var e;return((e=De[r])==null?void 0:e[t])!==void 0};class X{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"shimContract");var c;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=s.usdcContract.get(this.network,this.chain);if(!i)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=i;const o=(c=H[t])==null?void 0:c[e];if(!o)throw new Error(`Shim contract for ${e} not found`);this.shimContract=o}static async fromRpc(t,e){const[n,a]=await ze.AptosPlatform.chainFromRpc(t),i=e[a];if(!i)throw new Error(`No config found for ${a}`);if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new X(n,a,t,i.contracts)}async*transfer(t,e,n){var g,C;const a=new M.AptosAddress(t).unwrap(),i=le.l.from(e.address.toUniversalAddress().toUint8Array()),o=le.l.from(this.usdcId),c=n.remainingAmount+n.referrerFee,u=s.circleChainId.get(this.network,e.chain),m=a,f=new M.AptosAddress(((C=(g=n.referrer)==null?void 0:g.address)==null?void 0:C.toString())??a).unwrap(),l=[c,u,i.toString(),o.toString(),n.estimatedCost,s.toChainId(e.chain),m,n.signedQuote,n.relayInstructions,n.referrerFeeDbps,f],h={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:l};yield this.createUnsignedTx(h,"AtposCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new Ve.AptosUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(M._platform,"CCTPExecutor",X);class Z{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");var o;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(t,e);const i=(o=H[t])==null?void 0:o[e];if(!i)throw new Error(`Shim contract for ${e} not found`);this.shimContract=i}static async fromRpc(t,e){const[n,a]=await k.EvmPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new Z(n,a,t,i.contracts)}async*transfer(t,e,n){var g,C;const a=new s.EvmAddress(t).toString(),i=e.address.toUniversalAddress().toUint8Array(),o=n.remainingAmount+n.referrerFee,c=s.usdcContract.get(this.network,this.chain),u=k.EvmPlatform.getTokenImplementation(this.provider,c);if(await u.allowance(a,this.shimContract)<o){const p=await u.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(p,a),"ERC20.approve of EvmCCTPExecutor",!1)}const f=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],h=await new I.Contract(this.shimContract,f,this.provider).getFunction("depositForBurn").populateTransaction(o,s.toChainId(e.chain),s.circleChainId.get(this.network,e.chain),i,c,{refundAddress:a,signedQuote:n.signedQuote,instructions:n.relayInstructions},{dbps:n.referrerFeeDbps,payee:((C=(g=n.referrer)==null?void 0:g.address)==null?void 0:C.toString())??a});h.value=n.estimatedCost,yield this.createUnsignedTx(s.addFrom(h,a),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(t,e,n=!1){return new Ae.EvmUnsignedTransaction(s.addChainId(t,this.chainId),this.network,this.chain,e,n)}}const{amountItem:S,circleDomainItem:Ce,universalAddressItem:y}=We,Fe={binary:"uint",size:4,custom:1,omit:!1},Je={binary:"bytes",size:32},we={binary:"uint",size:4},Ye=[{name:"version",...Fe},{name:"burnToken",...y},{name:"mintRecipient",...y},{name:"amount",...S},{name:"messageSender",...y},{name:"maxFee",...S},{name:"feeExecuted",...S},{name:"expirationBlock",...S},{name:"hookData",binary:"bytes"}],ve=[{name:"version",...Fe},{name:"sourceDomain",...Ce},{name:"destinationDomain",...Ce},{name:"nonce",...Je},{name:"sender",...y},{name:"recipient",...y},{name:"destinationCaller",...y},{name:"minFinalityThreshold",...we},{name:"finalityThresholdExecuted",...we},{name:"messageBody",binary:"bytes",layout:Ye}],et=r=>s.deserialize$1(ve,r),tt=r=>s.serialize(ve,r),nt=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],rt=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...s.universalAddressItem}],st=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],nt],[[2,"GasDropOffInstruction"],rt]]}],Te=[{name:"requests",binary:"array",layout:st}],at={to:r=>new Date(Number(r*1000n)),from:r=>BigInt(r.getTime())/1000n},it=[{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:at},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],Se=[...it,{name:"signature",binary:"bytes",size:65}];class J{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");d(this,"messageTransmitter");d(this,"usdcContract");var u,m,f;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(t,e);const i=(u=Qe[t])==null?void 0:u[e];if(!i)throw new Error(`Shim contract for ${e} not found`);this.shimContract=i;const o=(f=(m=Xe[t])==null?void 0:m[e])==null?void 0:f.messageTransmitterV2;if(!o)throw new Error(`MessageTransmitter contract for ${e} not found`);this.messageTransmitter=o;const c=s.usdcContract.get(t,e);if(!c)throw new Error(`USDC contract for ${e} not found`);this.usdcContract=c}static async fromRpc(t,e){const[n,a]=await k.EvmPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new J(n,a,t,i.contracts)}async*transfer(t,e,n){var C,p;const a=new s.EvmAddress(t).toString(),i=e.address.toUniversalAddress().toUint8Array(),o=n.remainingAmount+n.referrerFee,c=k.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await c.allowance(a,this.shimContract)<o){const b=await c.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(b,a),"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)"],f=new Uint8Array(32),l=new I.Contract(this.shimContract,m,this.provider),h=U(this.network,e.chain),g=await l.getFunction("depositForBurn").populateTransaction(o,s.toChainId(e.chain),h,i,this.usdcContract,f,n.fastTransferMaxFee,n.minFinalityThreshold,{refundAddress:a,signedQuote:n.signedQuote,instructions:n.relayInstructions},{dbps:n.referrerFeeDbps,payee:((p=(C=n.referrer)==null?void 0:C.address)==null?void 0:p.toString())??a});g.value=n.estimatedCost,yield this.createUnsignedTx(s.addFrom(g,a),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(t){return await new I.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(t.nonce)===1n}async*redeem(t,e,n){const a=new s.EvmAddress(t).toString(),o=await new I.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(tt(e),s.hex.decode(n));yield this.createUnsignedTx(s.addFrom(o,a),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(t,e,n=!1){return new Ae.EvmUnsignedTransaction(s.addChainId(t,this.chainId),this.network,this.chain,e,n)}}s.registerProtocol(s._platform,"CCTPExecutor",Z);s.registerProtocol(s._platform,"CCTPv2Executor",J);class Y{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"usdcTreasuryId");d(this,"tokenMessengerId");d(this,"tokenMessengerStateId");d(this,"messageTransmitterId");d(this,"messageTransmitterStateId");d(this,"executorId");d(this,"executorRequestsId");var m,f,l,h;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(g,C)=>{if(!g)throw new Error(C);return g};this.usdcId=i(s.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:c,usdcTreasury:u}=Re.suiCircleObjects(t);this.usdcTreasuryId=u,this.tokenMessengerId=i((m=a.cctp)==null?void 0:m.tokenMessenger,`Circle Token Messenger contract for domain ${e} not found`),this.messageTransmitterId=i((f=a.cctp)==null?void 0:f.messageTransmitter,`Circle Message Transmitter contract for domain ${e} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=i((l=ge[t])==null?void 0:l.executorId,`Executor contract for ${t} not found`),this.executorRequestsId=i((h=ge[t])==null?void 0:h.executorRequestsId,`Executor requests contract for ${t} not found`)}static async fromRpc(t,e){const[n,a]=await x.SuiPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new Y(n,a,t,i.contracts)}async*transfer(t,e,n){const a=new x.Transaction,i=new Ne.SuiAddress(t).unwrap(),o=s.circleChainId.get(this.network,e.chain),[c,...u]=await x.SuiPlatform.getCoins(this.provider,t,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const m=a.object(c.coinObjectId);u.length>0&&a.mergeCoins(m,u.map(w=>a.object(w.coinObjectId)));let f;if(n.referrerFee>0n){const[w,A]=a.splitCoins(m,[n.remainingAmount,n.referrerFee]);f=w,a.transferObjects([A],n.referrer?s.canonicalAddress(n.referrer):i)}else{const[w]=a.splitCoins(m,[n.remainingAmount]);f=w}const[l,h]=a.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[f,a.pure.u32(o),a.pure.address(e.address.toUniversalAddress().toString()),a.object(this.tokenMessengerStateId),a.object(this.messageTransmitterStateId),a.object("0x403"),a.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[g]=a.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[h]}),[C]=a.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[h]}),[p]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[g,C]}),[b]=a.splitCoins(a.gas,[a.pure.u64(n.estimatedCost)]);a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[b,a.object(x.SUI_CLOCK_OBJECT_ID),a.pure.u16(s.toChainId(e.chain)),a.pure.address("0x0"),a.pure.address(i),a.pure.vector("u8",n.signedQuote),p,a.pure.vector("u8",n.relayInstructions)]}),yield this.createUnsignedTx(a,"SuiCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new Oe.SuiUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(x._platform,"CCTPExecutor",Y);const R=new s.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const ee=new s.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s.PublicKey("So11111111111111111111111111111111111111112");new s.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class ot extends Error{constructor(t){super(t)}}class ct extends ot{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var q;(function(r){r[r.InitializeMint=0]="InitializeMint",r[r.InitializeAccount=1]="InitializeAccount",r[r.InitializeMultisig=2]="InitializeMultisig",r[r.Transfer=3]="Transfer",r[r.Approve=4]="Approve",r[r.Revoke=5]="Revoke",r[r.SetAuthority=6]="SetAuthority",r[r.MintTo=7]="MintTo",r[r.Burn=8]="Burn",r[r.CloseAccount=9]="CloseAccount",r[r.FreezeAccount=10]="FreezeAccount",r[r.ThawAccount=11]="ThawAccount",r[r.TransferChecked=12]="TransferChecked",r[r.ApproveChecked=13]="ApproveChecked",r[r.MintToChecked=14]="MintToChecked",r[r.BurnChecked=15]="BurnChecked",r[r.InitializeAccount2=16]="InitializeAccount2",r[r.SyncNative=17]="SyncNative",r[r.InitializeAccount3=18]="InitializeAccount3",r[r.InitializeMultisig2=19]="InitializeMultisig2",r[r.InitializeMint2=20]="InitializeMint2",r[r.GetAccountDataSize=21]="GetAccountDataSize",r[r.InitializeImmutableOwner=22]="InitializeImmutableOwner",r[r.AmountToUiAmount=23]="AmountToUiAmount",r[r.UiAmountToAmount=24]="UiAmountToAmount",r[r.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",r[r.TransferFeeExtension=26]="TransferFeeExtension",r[r.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",r[r.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",r[r.Reallocate=29]="Reallocate",r[r.MemoTransferExtension=30]="MemoTransferExtension",r[r.CreateNativeMint=31]="CreateNativeMint",r[r.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",r[r.InterestBearingMintExtension=33]="InterestBearingMintExtension",r[r.CpiGuardExtension=34]="CpiGuardExtension",r[r.InitializePermanentDelegate=35]="InitializePermanentDelegate",r[r.TransferHookExtension=36]="TransferHookExtension",r[r.MetadataPointerExtension=39]="MetadataPointerExtension"})(q||(q={}));function dt(r,t,e){if(e.length){r.push({pubkey:t,isSigner:!1,isWritable:!1});for(const n of e)r.push({pubkey:n instanceof s.PublicKey?n:n.publicKey,isSigner:!0,isWritable:!1})}else r.push({pubkey:t,isSigner:!0,isWritable:!1});return r}const ut=s.struct([s.u32("mintAuthorityOption"),D.publicKey("mintAuthority"),D.u64("supply"),s.u8("decimals"),D.bool("isInitialized"),s.u32("freezeAuthorityOption"),D.publicKey("freezeAuthority")]);ut.span;function pe(r,t,e=!1,n=R,a=ee){if(!e&&!s.PublicKey.isOnCurve(t.toBuffer()))throw new ct;const[i]=s.PublicKey.findProgramAddressSync([t.toBuffer(),n.toBuffer(),r.toBuffer()],a);return i}function mt(r,t,e,n,a=R,i=ee){return ft(r,t,e,n,s.dist.Buffer.from([1]),a,i)}function ft(r,t,e,n,a,i=R,o=ee){const c=[{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1}];return new s.TransactionInstruction({keys:c,programId:o,data:a})}const be=s.struct([s.u8("instruction"),D.u64("amount")]);function lt(r,t,e,n,a=[],i=R){const o=dt([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0}],e,a),c=s.dist.Buffer.alloc(be.span);return be.encode({instruction:q.Transfer,amount:BigInt(n)},c),new s.TransactionInstruction({keys:o,programId:i,data:c})}const ht={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 te{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"tokenMessengerProgramId");d(this,"messageTransmitterProgramId");d(this,"shimProgramId");d(this,"executorProgramId");var o,c,u;if(this.network=t,this.chain=e,this.connection=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(m,f)=>{if(!m)throw new Error(f);return new s.PublicKey(m)};this.tokenMessengerProgramId=i((o=a.cctp)==null?void 0:o.tokenMessenger,`Circle Token Messenger contract for domain ${e} not found`),this.messageTransmitterProgramId=i((c=a.cctp)==null?void 0:c.messageTransmitter,`Circle Message Transmitter contract for domain ${e} not found`),this.shimProgramId=i((u=H[t])==null?void 0:u[e],`Shim contract for ${e} not found`),this.executorProgramId=i(Ke[t],`Executor contract for ${t} not found`)}static async fromRpc(t,e){const[n,a]=await he.SolanaPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new te(n,a,t,i.contracts)}async*transfer(t,e,n){var p,b;const a=new s.PublicKey(s.usdcContract.get(this.network,this.chain)),i=new s.SolanaAddress(t).unwrap(),o=pe(a,i),c=new s.SolanaAddress(((b=(p=n.referrer)==null?void 0:p.address)==null?void 0:b.toString())??i).unwrap(),u=new s.Transaction;if(u.feePayer=i,n.referrerFee>0n){const w=pe(a,c,!0);await this.connection.getAccountInfo(w)||u.add(mt(i,w,c,a)),u.add(lt(o,w,i,n.referrerFee))}const m=s.circleChainId.get(this.network,e.chain),f=e.address.toUniversalAddress(),l=s.Keypair.generate();u.add(await _e.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,a,m,i,o,f,n.remainingAmount,l.publicKey));const h=new Le.Program(ht,this.shimProgramId,{connection:null}),g=s.deserialize$1(Se,n.signedQuote),C=Ge.deriveAddress("message_transmitter",this.messageTransmitterProgramId);u.add(await h.methods.relayLastMessage({execAmount:new s.BN(n.estimatedCost.toString()),recipientChain:s.toChainId(e.chain),signedQuoteBytes:s.dist.Buffer.from(n.signedQuote),relayInstructions:s.dist.Buffer.from(n.relayInstructions)}).accounts({payer:i,messageTransmitter:C,payee:new s.PublicKey(g.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:u,signers:[l]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new he.SolanaUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(s._platform$1,"CCTPExecutor",te);var E;(function(r){r.Pending="pending",r.Failed="failed",r.Unsupported="unsupported",r.Submitted="submitted",r.Underpaid="underpaid",r.Aborted="aborted"})(E||(E={}));var Ee;(function(r){r.ERM1="ERM1",r.ERV1="ERV1",r.ERN1="ERN1",r.ERC1="ERC1",r.ERC2="ERC2"})(Ee||(Ee={}));async function gt(r){const t=`${j[r]}/v0/capabilities`;try{return(await s.axios.get(t)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${r}.`)}}async function Ct(r,t,e,n){const a=`${j[r]}/v0/quote`;try{return(await s.axios.post(a,{srcChain:s.toChainId(t),dstChain:s.toChainId(e),relayInstructions:n})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function ne(r,t,e){const n=`${j[r]}/v0/status/tx`;try{return(await s.axios.post(n,{txHash:t,chainId:s.toChainId(e)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${t}.`)}}const wt=65535n;function pt(r,t,e){if(t>wt)throw new Error("dBps exceeds max u16");let n=t,a=r,i=0n;if(t>0){if(e!==void 0&&r>0){const o=s.parse(e.toString(),6),c=s.units(o)/r,u=t<c?t:c;i=r*u/100000n,n=u}else i=r*t/100000n;a=r-i}return{referrerFee:i,remainingAmount:a,referrerFeeDbps:n}}function bt(r){return new Promise(t=>setTimeout(t,r))}async function W(r,t,e=s.DEFAULT_TASK_TIMEOUT){const n=U(t,r.chain);return s.retry(async()=>{var i;const a=`${V[t]}/messages/${n}?transactionHash=${r.txid}`;try{const c=(await s.axios.get(a)).data.messages[0];if(!c)return null;if(c.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return c.status==="pending_confirmations"?null:{message:et(s.hex.decode(c.message)),attestation:c.attestation}}catch(o){if(!o||typeof o=="object"&&(s.axios.isAxiosError(o)&&((i=o.response)==null?void 0:i.status)===404||"status"in o&&o.status===404))return null;throw o}},2e3,e,"CCTPv2:GetMessage")}async function Et(r,t,e){const n=U(r,t),a=U(r,e),i=`${V[r]}/fastBurn/USDC/fees/${n}/${a}`,o=await s.axios.get(i);return BigInt(o.data.minimumFee)}async function At(r,t){const e=s.hex.encode(t.attestation.message.nonce,!0),n=`${V[r]}/reattest/${e}`,a=await s.axios.post(n);if(a.data.error){if(a.data.error.includes("Message is already finalized"))return t.attestation;throw new Error(`Error re-attesting message: ${a.data.error}`)}const i=xe(r,t.attestation.message.sourceDomain);return s.retry(async()=>{const o=await W({txid:t.id,chain:i},r);return!o||o.message.messageBody.expirationBlock!==0n?null:o},2e3,s.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function yt(r){const t=`${V[r]}/fastBurn/USDC/allowance`,e=await s.axios.get(t);return s.units(s.parse(e.data.allowance,6))}function re(r,t,e){const n=s.usdcContract.get(t.network,t.chain);if(!(n&&s.isSameToken(r,s.Wormhole.tokenId(t.chain,n))))return[];const{network:a,chain:i}=e,o=s.usdcContract.get(a,i);return o?[s.Wormhole.chainAddress(i,o)]:[]}let B;async function se(r,t,e,n){var de,ue,me;const{fromChain:a,toChain:i}=r;if(!s.usdcContract.get(a.network,a.chain))throw new Error("Invalid transfer, no USDC contract on source");const c=s.usdcContract.get(i.network,i.chain);if(!c)throw new Error("Invalid transfer, no USDC contract on destination");let u;if(e.referrerFeeDbps>0n&&(u=(ue=(de=e.referrerAddresses)==null?void 0:de[a.network])==null?void 0:ue[a.chain],!u))throw new Error(`Referrer address not configured for ${a.chain}`);const m=u?s.Wormhole.chainAddress(a.chain,u):void 0,{referrerFee:f,remainingAmount:l,referrerFeeDbps:h}=pt(s.units(t.normalizedParams.amount),e.referrerFeeDbps,e.referrerFeeThreshold);if(l<=0n)throw new Error("Amount after fee <= 0");const g=(me=He[i.network])==null?void 0:me[i.chain];if(!g)throw new Error("Gas limit not found");const C=await gt(a.network);if(!C[s.toChainId(a.chain)])throw new Error("Unsupported source chain");const b=C[s.toChainId(i.chain)];if(!b||!b.requestPrefixes.includes(n))throw new Error("Unsupported destination chain");const{recipient:w}=r;let A=!0;if(w&&i.chain==="Solana"){const Me=s.Wormhole.parseAddress("Solana",c),ke=await i.getTokenAccount(w.address,Me),fe=await i.getRpc();A=await fe.getAccountInfo(new s.SolanaAddress(ke.address).unwrap())!==null,!A&&!B&&(B=BigInt(await fe.getMinimumBalanceForRentExemption(165)))}let N=0n;i.chain==="Solana"&&(N+=je,!A&&B&&(N+=B));const O=[];O.push({request:{type:"GasInstruction",gasLimit:g,msgValue:N}});const ie=BigInt(b.gasDropOffLimit),_=t.options.nativeGas&&ie>0n?BigInt(Math.round(t.options.nativeGas*100))*ie/100n:0n;(_>0n||!A)&&O.push({request:{type:"GasDropOffInstruction",dropOff:_,recipient:w?w.address.toUniversalAddress():new s.UniversalAddress(new Uint8Array(32))}});const oe=s.serialize(Te,{requests:O}),L=await Ct(a.network,a.chain,i.chain,s.hex.encode(oe,!0));if(!L.estimatedCost)throw new Error("No estimated cost");const ce=s.hex.decode(L.signedQuote),Ie=s.deserialize$1(Se,ce),Pe=BigInt(L.estimatedCost);return{signedQuote:ce,relayInstructions:oe,estimatedCost:Pe,referrer:m,referrerFee:f,remainingAmount:l,referrerFeeDbps:h,expiryTime:Ie.quote.expiryTime,gasDropOff:_}}async function Be(r,t,e,n){s.deserialize$1(Te,n.details.relayInstructions).requests.forEach(({request:l})=>{if(l.type==="GasDropOffInstruction"&&!l.recipient.equals(e.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const i=s.Wormhole.parseAddress(t.chain(),t.address()),o=await xt(e,r);let c;n.protocol==="CCTPExecutor"?c=await(await r.fromChain.getProtocol(n.protocol)).transfer(i,o,n.details):c=await(await r.fromChain.getProtocol(n.protocol)).transfer(i,o,n.details);const u=await s.signSendWait(r.fromChain,c,t);let m=0;return(async()=>{for(;m<20;){try{const[l]=await ne(r.fromChain.network,u.at(-1).txid,r.fromChain.chain);if(l)break}catch{}m++,await bt(2e3)}})(),{from:r.fromChain.chain,to:r.toChain.chain,state:s.TransferState.SourceInitiated,originTxs:u}}async function xt(r,t){if(r.chain!=="Solana")return r;const e=s.usdcContract.get(t.toChain.network,t.toChain.chain);if(!e)throw new Error("No USDC contract found for Solana");const n=s.Wormhole.parseAddress("Solana",e);return t.toChain.getTokenAccount(r.address,n)}function Dt(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends P{}return d(t,"config",r),t}class P extends s.AutomaticRoute{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return[...Object.keys(ye[e]??{})]}static async supportedDestinationTokens(e,n,a){return!T(n.network,n.chain)||!T(a.network,a.chain)?[]:re(e,n,a)}getDefaultOptions(){return{nativeGas:0}}async validate(e,n){var c;const{fromChain:a,toChain:i}=e;return!T(a.network,a.chain)||!T(i.network,i.chain)?{valid:!1,error:new Error("Unsupported source or destination chain"),params:n}:(c=n.options)!=null&&c.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:a,toChain:i}=e;try{const o=await se(e,n,this.staticConfig,"ERC1"),{remainingAmount:c,estimatedCost:u,gasDropOff:m,expiryTime:f}=o,l=a.chain==="Polygon"?2e3*200:s.estimateFinalityTime(a.chain)+1e3,[h,g]=await Promise.all([a.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:s.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(u,h)},destinationNativeGas:s.fromBaseUnits(m,g),eta:l,expires:f,details:o}}catch(o){return{success:!1,error:new Error(o instanceof Error?o.message:`${o}`)}}}async initiate(e,n,a,i){if(!a.details)throw new Error("Missing quote details");return await Be(e,n,i,{protocol:"CCTPExecutor",details:a.details})}async*track(e,n){if(s.isCompleted(e)||s.isFailed(e))return e;let a=n||60*60*1e3;for(;a>0;){const i=Date.now();if(s.isSourceInitiated(e)||s.isSourceFinalized(e)||s.isAttested(e))try{const[o]=await ne(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;if((c===E.Failed||c===E.Underpaid||c===E.Unsupported||c===E.Aborted)&&(e={...e,state:s.TransferState.Failed,error:new s.RelayFailedError(`Relay failed with status: ${c}`)}),c===E.Submitted&&(e={...e,state:s.TransferState.DestinationFinalized,attestation:{id:o.id,attestation:{}}}),yield e,s.isCompleted(e)||s.isFailed(e))return e}catch(o){console.error(`Error fetching transaction status: ${o.message||o}`)}await new Promise(o=>setTimeout(o,3e3)),a-=Date.now()-i}return e}}d(P,"NATIVE_GAS_DROPOFF_SUPPORTED",!0),d(P,"config",{referrerFeeDbps:0n}),d(P,"meta",{name:"CCTPExecutorRoute",provider:"Circle CCTP"});class ae extends s.AutomaticRoute{static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(t){return Object.keys(z[t]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(t,e,n,a){if(!n.details)throw new Error("Missing quote details");return await Be(t,e,a,{protocol:"CCTPv2Executor",details:n.details})}async*track(t,e){if(s.isCompleted(t))return t;let n=e||60*60*1e3;for(;n>0;){const a=Date.now();if(s.isSourceInitiated(t)||s.isSourceFinalized(t)||s.isAttested(t)||s.isFailed(t))try{const i=t.originTxs.at(-1).txid;if(s.isSourceInitiated(t)||s.isSourceFinalized(t)){const o=await W({chain:t.from,txid:i},this.wh.network);o&&(t={...t,state:s.TransferState.Attested,attestation:{id:i,attestation:o}}),yield t}if(s.isAttested(t)){const[o]=await ne(this.wh.network,i,t.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;c===E.Submitted?t={...t,state:s.TransferState.DestinationFinalized}:(c===E.Failed||c===E.Underpaid||c===E.Unsupported||c===E.Aborted)&&(t={...t,state:s.TransferState.Failed,error:new s.RelayFailedError(`Relay failed with status: ${c}`)})}if(s.isFailed(t)){if(!t.attestation)throw new Error("Receipt is missing attestation");const o=t.attestation;await(await this.wh.getChain(t.to).getProtocol("CCTPv2Executor")).isTransferCompleted(o.attestation.message)&&(t={...t,state:s.TransferState.DestinationFinalized,attestation:o})}if(yield t,s.isCompleted(t))return t}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),n-=Date.now()-a}return t}async complete(t,e){if(!s.isAttested(e)&&!s.isFailed(e))throw new Error("Transfer is not attested");if(!e.attestation)throw new Error("No attestation found");const n=this.wh.getChain(e.to),a=await n.getProtocol("CCTPv2Executor");let{attestation:i,message:o}=e.attestation.attestation;const{expirationBlock:c}=o.messageBody,u=await a.getCurrentBlock();if(c!==0n&&c<u){const h=await At(n.network,e.attestation);if(!h)throw new Error("Failed to reattest message");i=h.attestation,o=h.message}const m=s.Wormhole.parseAddress(t.chain(),t.address()),f=a.redeem(m,o,i),l=await s.signSendWait(this.wh.getChain(e.to),f,t);return{...e,state:s.TransferState.DestinationInitiated,attestation:e.attestation,destinationTxs:l}}async resume(t){const e=await W(t,this.wh.network);if(!e)throw new Error("No attestation found");const{message:n}=e,a=xe(this.wh.network,n.destinationDomain);return await(await this.wh.getChain(a).getProtocol("CCTPv2Executor")).isTransferCompleted(n)?{from:t.chain,to:a,state:s.TransferState.DestinationFinalized,originTxs:[t],attestation:{id:t.txid,attestation:e}}:{from:t.chain,to:a,state:s.TransferState.Attested,originTxs:[t],attestation:{id:t.txid,attestation:e}}}}d(ae,"NATIVE_GAS_DROPOFF_SUPPORTED",!0);function Ft(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends Q{}return d(t,"config",r),t}const F=class F extends ae{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static isPathSupported(e,n){return Ze(e.network,e.chain)&&G(n.network,n.chain)}static async supportedDestinationTokens(e,n,a){return this.isPathSupported(n,a)?re(e,n,a):[]}async validate(e,n){var i;return F.isPathSupported(e.fromChain,e.toChain)?(i=n.options)!=null&&i.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){var o;const{fromChain:a,toChain:i}=e;try{const c=await se(e,n,this.staticConfig,"ERC2"),{remainingAmount:u,estimatedCost:m,gasDropOff:f,expiryTime:l}=c;if(await yt(a.network)<=u)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const g=await Et(a.network,a.chain,i.chain),C=(u*g+10000n-1n)/10000n,p=u-C;if(p<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const b=(o=De[a.network])==null?void 0:o[a.chain],[w,A]=await Promise.all([a.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:s.fromBaseUnits(p,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(m,w)},destinationNativeGas:s.fromBaseUnits(f,A),eta:b,expires:l,details:{...c,minFinalityThreshold:$.CONFIRMED,fastTransferMaxFee:C}}}catch(c){return{success:!1,error:new Error(c instanceof Error?c.message:`${c}`)}}}};d(F,"config",{referrerFeeDbps:0n}),d(F,"meta",{name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"});let Q=F;function vt(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends K{}return d(t,"config",r),t}const v=class v extends ae{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static isPathSupported(e,n){return G(e.network,e.chain)&&G(n.network,n.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,n,a){return this.isPathSupported(n,a)?re(e,n,a):[]}async validate(e,n){var i;return v.isPathSupported(e.fromChain,e.toChain)?(i=n.options)!=null&&i.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:a,toChain:i}=e;try{const o=await se(e,n,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:u,gasDropOff:m,expiryTime:f}=o,l=a.chain==="Polygon"?2e3*200:s.estimateFinalityTime(a.chain)+1e3,[h,g]=await Promise.all([a.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:s.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(u,h)},destinationNativeGas:s.fromBaseUnits(m,g),eta:l,expires:f,details:{...o,minFinalityThreshold:$.FINALIZED,fastTransferMaxFee:0n}}}catch(o){return{success:!1,error:new Error(o instanceof Error?o.message:`${o}`)}}}};d(v,"config",{referrerFeeDbps:0n}),d(v,"meta",{name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"});let K=v;const{executorTokenBridgeRoute:Tt}=M.routes;exports.cctpExecutorRoute=Dt;exports.cctpV2FastExecutorRoute=Ft;exports.cctpV2StandardExecutorRoute=vt;exports.executorTokenBridgeRoute=Tt;
|
|
1
|
+
"use strict";var ke=Object.defineProperty;var Ue=(r,t,e)=>t in r?ke(r,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):r[t]=e;var d=(r,t,e)=>Ue(r,typeof t!="symbol"?t+"":t,e);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./web3-COTIsLs8.js"),fe=require("./chunk-KJH4KKG6-BjF7YUcU.js"),Ve=require("./platform-7vCWzCny.js"),P=require("./address-C2pxq9b2.js"),ze=require("./unsignedTransaction-C1YeEl4G.js"),M=require("./platform-Bbe26nx7.js"),S=require("./contract-BEHYQLvJ.js"),Ee=require("./unsignedTransaction-B7AZXsTD.js"),x=require("./platform-BKhoO9So.js"),$e=require("./index-hmjT4xa7.js"),Re=require("./address-BwQqFkyh.js"),Ne=require("./unsignedTransaction-DzSLsK-p.js"),_e=require("./index-C8TtXpOf.js"),Oe=require("./index-DM7C-wvQ.js"),le=require("./unsignedTransaction-C6Qp42VS.js"),Le=require("./account-Br8E7RB6.js"),Ge={binary:"uint",size:1,custom:{to:r=>r>0,from:r=>r?1:0}},qe=Object.freeze(Object.defineProperty({__proto__:null,amountItem:s.amountItem,boolItem:Ge,chainItem:s.chainItem,circleDomainItem:s.circleDomainItem,circleNonceItem:s.circleNonceItem,dateConversion:s.dateConversion,fixedChainItem:s.fixedChainItem,fixedLengthStringItem:s.fixedLengthStringItem,guardianSetItem:s.guardianSetItem,payloadIdItem:s.payloadIdItem,sequenceItem:s.sequenceItem,signatureItem:s.signatureItem,stringConversion:s.stringConversion,universalAddressItem:s.universalAddressItem},Symbol.toStringTag,{value:"Module"})),K={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},j={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"}},We={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"}},he={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},Qe={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},Ke=5001n,je={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}},He={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"}}},Ae={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}},v=(r,t)=>{var e;return((e=Ae[r])==null?void 0:e[t])!==void 0},V={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}},L=(r,t)=>{var e;return((e=V[r])==null?void 0:e[t])!==void 0},k=(r,t)=>{var n;const e=(n=V[r])==null?void 0:n[t];if(e===void 0)throw new Error(`CircleV2 domain not found for network ${r} and chain ${t}`);return e},ye=(r,t)=>{var n;const e=(n=Object.entries(V[r]??{}).find(([,a])=>a===t))==null?void 0:n[0];if(e===void 0)throw new Error(`CircleV2 chain not found for network ${r} and domain ${t}`);return e},z={Testnet:"https://iris-api-sandbox.circle.com/v2",Mainnet:"https://iris-api.circle.com/v2"};var U;(function(r){r[r.CONFIRMED=1e3]="CONFIRMED",r[r.FINALIZED=2e3]="FINALIZED"})(U||(U={}));const xe={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}},Xe=(r,t)=>{var e;return((e=xe[r])==null?void 0:e[t])!==void 0};class H{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"shimContract");var c;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=s.usdcContract.get(this.network,this.chain);if(!i)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);this.usdcId=i;const o=(c=j[t])==null?void 0:c[e];if(!o)throw new Error(`Shim contract for ${e} not found`);this.shimContract=o}static async fromRpc(t,e){const[n,a]=await Ve.AptosPlatform.chainFromRpc(t),i=e[a];if(!i)throw new Error(`No config found for ${a}`);if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new H(n,a,t,i.contracts)}async*transfer(t,e,n){var g,C;const a=new P.AptosAddress(t).unwrap(),i=fe.l.from(e.address.toUniversalAddress().toUint8Array()),o=fe.l.from(this.usdcId),c=n.remainingAmount+n.referrerFee,u=s.circleChainId.get(this.network,e.chain),m=a,f=new P.AptosAddress(((C=(g=n.referrer)==null?void 0:g.address)==null?void 0:C.toString())??a).unwrap(),l=[c,u,i.toString(),o.toString(),n.estimatedCost,s.toChainId(e.chain),m,n.signedQuote,n.relayInstructions,n.referrerFeeDbps,f],h={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:l};yield this.createUnsignedTx(h,"AtposCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new ze.AptosUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(P._platform,"CCTPExecutor",H);class X{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");var o;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(t,e);const i=(o=j[t])==null?void 0:o[e];if(!i)throw new Error(`Shim contract for ${e} not found`);this.shimContract=i}static async fromRpc(t,e){const[n,a]=await M.EvmPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new X(n,a,t,i.contracts)}async*transfer(t,e,n){var g,C;const a=new s.EvmAddress(t).toString(),i=e.address.toUniversalAddress().toUint8Array(),o=n.remainingAmount+n.referrerFee,c=s.usdcContract.get(this.network,this.chain),u=M.EvmPlatform.getTokenImplementation(this.provider,c);if(await u.allowance(a,this.shimContract)<o){const p=await u.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(p,a),"ERC20.approve of EvmCCTPExecutor",!1)}const f=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],h=await new S.Contract(this.shimContract,f,this.provider).getFunction("depositForBurn").populateTransaction(o,s.toChainId(e.chain),s.circleChainId.get(this.network,e.chain),i,c,{refundAddress:a,signedQuote:n.signedQuote,instructions:n.relayInstructions},{dbps:n.referrerFeeDbps,payee:((C=(g=n.referrer)==null?void 0:g.address)==null?void 0:C.toString())??a});h.value=n.estimatedCost,yield this.createUnsignedTx(s.addFrom(h,a),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(t,e,n=!1){return new Ee.EvmUnsignedTransaction(s.addChainId(t,this.chainId),this.network,this.chain,e,n)}}const{amountItem:T,circleDomainItem:ge,universalAddressItem:y}=qe,De={binary:"uint",size:4,custom:1,omit:!1},Ze={binary:"bytes",size:32},Ce={binary:"uint",size:4},Je=[{name:"version",...De},{name:"burnToken",...y},{name:"mintRecipient",...y},{name:"amount",...T},{name:"messageSender",...y},{name:"maxFee",...T},{name:"feeExecuted",...T},{name:"expirationBlock",...T},{name:"hookData",binary:"bytes"}],Fe=[{name:"version",...De},{name:"sourceDomain",...ge},{name:"destinationDomain",...ge},{name:"nonce",...Ze},{name:"sender",...y},{name:"recipient",...y},{name:"destinationCaller",...y},{name:"minFinalityThreshold",...Ce},{name:"finalityThresholdExecuted",...Ce},{name:"messageBody",binary:"bytes",layout:Je}],Ye=r=>s.deserialize$1(Fe,r),et=r=>s.serialize(Fe,r),tt=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],nt=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...s.universalAddressItem}],rt=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],tt],[[2,"GasDropOffInstruction"],nt]]}],ve=[{name:"requests",binary:"array",layout:rt}],st={to:r=>new Date(Number(r*1000n)),from:r=>BigInt(r.getTime())/1000n},at=[{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:st},{name:"baseFee",binary:"uint",size:8},{name:"dstGasPrice",binary:"uint",size:8},{name:"srcPrice",binary:"uint",size:8},{name:"dstPrice",binary:"uint",size:8}]]]}],Te=[...at,{name:"signature",binary:"bytes",size:65}];class Z{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");d(this,"messageTransmitter");d(this,"usdcContract");var u,m,f;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPv2Executor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(t,e);const i=(u=We[t])==null?void 0:u[e];if(!i)throw new Error(`Shim contract for ${e} not found`);this.shimContract=i;const o=(f=(m=He[t])==null?void 0:m[e])==null?void 0:f.messageTransmitterV2;if(!o)throw new Error(`MessageTransmitter contract for ${e} not found`);this.messageTransmitter=o;const c=s.usdcContract.get(t,e);if(!c)throw new Error(`USDC contract for ${e} not found`);this.usdcContract=c}static async fromRpc(t,e){const[n,a]=await M.EvmPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new Z(n,a,t,i.contracts)}async*transfer(t,e,n){var C,p;const a=new s.EvmAddress(t).toString(),i=e.address.toUniversalAddress().toUint8Array(),o=n.remainingAmount+n.referrerFee,c=M.EvmPlatform.getTokenImplementation(this.provider,this.usdcContract);if(await c.allowance(a,this.shimContract)<o){const b=await c.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(b,a),"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)"],f=new Uint8Array(32),l=new S.Contract(this.shimContract,m,this.provider),h=k(this.network,e.chain),g=await l.getFunction("depositForBurn").populateTransaction(o,s.toChainId(e.chain),h,i,this.usdcContract,f,n.fastTransferMaxFee,n.minFinalityThreshold,{refundAddress:a,signedQuote:n.signedQuote,instructions:n.relayInstructions},{dbps:n.referrerFeeDbps,payee:((p=(C=n.referrer)==null?void 0:C.address)==null?void 0:p.toString())??a});g.value=n.estimatedCost,yield this.createUnsignedTx(s.addFrom(g,a),"EvmCCTPv2Executor.depositForBurn")}async isTransferCompleted(t){return await new S.Contract(this.messageTransmitter,["function usedNonces(bytes32) public view returns (uint256)"],this.provider).getFunction("usedNonces").staticCall(t.nonce)===1n}async*redeem(t,e,n){const a=new s.EvmAddress(t).toString(),o=await new S.Contract(this.messageTransmitter,["function receiveMessage(bytes message, bytes attestation)"],this.provider).getFunction("receiveMessage").populateTransaction(et(e),s.hex.decode(n));yield this.createUnsignedTx(s.addFrom(o,a),"MessageTransmitterV2.receiveMessage")}async getCurrentBlock(){return BigInt(await this.provider.getBlockNumber())}createUnsignedTx(t,e,n=!1){return new Ee.EvmUnsignedTransaction(s.addChainId(t,this.chainId),this.network,this.chain,e,n)}}s.registerProtocol(s._platform,"CCTPExecutor",X);s.registerProtocol(s._platform,"CCTPv2Executor",Z);class J{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"usdcTreasuryId");d(this,"tokenMessengerId");d(this,"tokenMessengerStateId");d(this,"messageTransmitterId");d(this,"messageTransmitterStateId");d(this,"executorId");d(this,"executorRequestsId");var m,f,l,h;if(this.network=t,this.chain=e,this.provider=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(g,C)=>{if(!g)throw new Error(C);return g};this.usdcId=i(s.usdcContract.get(this.network,this.chain),`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:c,usdcTreasury:u}=$e.suiCircleObjects(t);this.usdcTreasuryId=u,this.tokenMessengerId=i((m=a.cctp)==null?void 0:m.tokenMessenger,`Circle Token Messenger contract for domain ${e} not found`),this.messageTransmitterId=i((f=a.cctp)==null?void 0:f.messageTransmitter,`Circle Message Transmitter contract for domain ${e} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=i((l=he[t])==null?void 0:l.executorId,`Executor contract for ${t} not found`),this.executorRequestsId=i((h=he[t])==null?void 0:h.executorRequestsId,`Executor requests contract for ${t} not found`)}static async fromRpc(t,e){const[n,a]=await x.SuiPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new J(n,a,t,i.contracts)}async*transfer(t,e,n){const a=new x.Transaction,i=new Re.SuiAddress(t).unwrap(),o=s.circleChainId.get(this.network,e.chain),[c,...u]=await x.SuiPlatform.getCoins(this.provider,t,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const m=a.object(c.coinObjectId);u.length>0&&a.mergeCoins(m,u.map(w=>a.object(w.coinObjectId)));let f;if(n.referrerFee>0n){const[w,A]=a.splitCoins(m,[n.remainingAmount,n.referrerFee]);f=w,a.transferObjects([A],n.referrer?s.canonicalAddress(n.referrer):i)}else{const[w]=a.splitCoins(m,[n.remainingAmount]);f=w}const[l,h]=a.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[f,a.pure.u32(o),a.pure.address(e.address.toUniversalAddress().toString()),a.object(this.tokenMessengerStateId),a.object(this.messageTransmitterStateId),a.object("0x403"),a.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[g]=a.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[h]}),[C]=a.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[h]}),[p]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[g,C]}),[b]=a.splitCoins(a.gas,[a.pure.u64(n.estimatedCost)]);a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[b,a.object(x.SUI_CLOCK_OBJECT_ID),a.pure.u16(s.toChainId(e.chain)),a.pure.address("0x0"),a.pure.address(i),a.pure.vector("u8",n.signedQuote),p,a.pure.vector("u8",n.relayInstructions)]}),yield this.createUnsignedTx(a,"SuiCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new Ne.SuiUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(x._platform,"CCTPExecutor",J);const $=new s.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const Y=new s.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s.PublicKey("So11111111111111111111111111111111111111112");new s.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class it extends Error{constructor(t){super(t)}}class ot extends it{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var G;(function(r){r[r.InitializeMint=0]="InitializeMint",r[r.InitializeAccount=1]="InitializeAccount",r[r.InitializeMultisig=2]="InitializeMultisig",r[r.Transfer=3]="Transfer",r[r.Approve=4]="Approve",r[r.Revoke=5]="Revoke",r[r.SetAuthority=6]="SetAuthority",r[r.MintTo=7]="MintTo",r[r.Burn=8]="Burn",r[r.CloseAccount=9]="CloseAccount",r[r.FreezeAccount=10]="FreezeAccount",r[r.ThawAccount=11]="ThawAccount",r[r.TransferChecked=12]="TransferChecked",r[r.ApproveChecked=13]="ApproveChecked",r[r.MintToChecked=14]="MintToChecked",r[r.BurnChecked=15]="BurnChecked",r[r.InitializeAccount2=16]="InitializeAccount2",r[r.SyncNative=17]="SyncNative",r[r.InitializeAccount3=18]="InitializeAccount3",r[r.InitializeMultisig2=19]="InitializeMultisig2",r[r.InitializeMint2=20]="InitializeMint2",r[r.GetAccountDataSize=21]="GetAccountDataSize",r[r.InitializeImmutableOwner=22]="InitializeImmutableOwner",r[r.AmountToUiAmount=23]="AmountToUiAmount",r[r.UiAmountToAmount=24]="UiAmountToAmount",r[r.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",r[r.TransferFeeExtension=26]="TransferFeeExtension",r[r.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",r[r.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",r[r.Reallocate=29]="Reallocate",r[r.MemoTransferExtension=30]="MemoTransferExtension",r[r.CreateNativeMint=31]="CreateNativeMint",r[r.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",r[r.InterestBearingMintExtension=33]="InterestBearingMintExtension",r[r.CpiGuardExtension=34]="CpiGuardExtension",r[r.InitializePermanentDelegate=35]="InitializePermanentDelegate",r[r.TransferHookExtension=36]="TransferHookExtension",r[r.MetadataPointerExtension=39]="MetadataPointerExtension"})(G||(G={}));function ct(r,t,e){if(e.length){r.push({pubkey:t,isSigner:!1,isWritable:!1});for(const n of e)r.push({pubkey:n instanceof s.PublicKey?n:n.publicKey,isSigner:!0,isWritable:!1})}else r.push({pubkey:t,isSigner:!0,isWritable:!1});return r}const dt=s.struct([s.u32("mintAuthorityOption"),s.publicKey("mintAuthority"),s.u64("supply"),s.u8("decimals"),s.bool("isInitialized"),s.u32("freezeAuthorityOption"),s.publicKey("freezeAuthority")]);dt.span;function we(r,t,e=!1,n=$,a=Y){if(!e&&!s.PublicKey.isOnCurve(t.toBuffer()))throw new ot;const[i]=s.PublicKey.findProgramAddressSync([t.toBuffer(),n.toBuffer(),r.toBuffer()],a);return i}function ut(r,t,e,n,a=$,i=Y){return mt(r,t,e,n,s.dist.Buffer.from([1]),a,i)}function mt(r,t,e,n,a,i=$,o=Y){const c=[{pubkey:r,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1}];return new s.TransactionInstruction({keys:c,programId:o,data:a})}const pe=s.struct([s.u8("instruction"),s.u64("amount")]);function ft(r,t,e,n,a=[],i=$){const o=ct([{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0}],e,a),c=s.dist.Buffer.alloc(pe.span);return pe.encode({instruction:G.Transfer,amount:BigInt(n)},c),new s.TransactionInstruction({keys:o,programId:i,data:c})}const lt={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 ee{constructor(t,e,n,a){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"tokenMessengerProgramId");d(this,"messageTransmitterProgramId");d(this,"shimProgramId");d(this,"executorProgramId");var o,c,u;if(this.network=t,this.chain=e,this.connection=n,this.contracts=a,t==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(m,f)=>{if(!m)throw new Error(f);return new s.PublicKey(m)};this.tokenMessengerProgramId=i((o=a.cctp)==null?void 0:o.tokenMessenger,`Circle Token Messenger contract for domain ${e} not found`),this.messageTransmitterProgramId=i((c=a.cctp)==null?void 0:c.messageTransmitter,`Circle Message Transmitter contract for domain ${e} not found`),this.shimProgramId=i((u=j[t])==null?void 0:u[e],`Shim contract for ${e} not found`),this.executorProgramId=i(Qe[t],`Executor contract for ${t} not found`)}static async fromRpc(t,e){const[n,a]=await le.SolanaPlatform.chainFromRpc(t),i=e[a];if(i.network!==n)throw new Error(`Network mismatch: ${i.network} != ${n}`);return new ee(n,a,t,i.contracts)}async*transfer(t,e,n){var p,b;const a=new s.PublicKey(s.usdcContract.get(this.network,this.chain)),i=new s.SolanaAddress(t).unwrap(),o=we(a,i),c=new s.SolanaAddress(((b=(p=n.referrer)==null?void 0:p.address)==null?void 0:b.toString())??i).unwrap(),u=new s.Transaction;if(u.feePayer=i,n.referrerFee>0n){const w=we(a,c,!0);await this.connection.getAccountInfo(w)||u.add(ut(i,w,c,a)),u.add(ft(o,w,i,n.referrerFee))}const m=s.circleChainId.get(this.network,e.chain),f=e.address.toUniversalAddress(),l=s.Keypair.generate();u.add(await _e.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,a,m,i,o,f,n.remainingAmount,l.publicKey));const h=new Oe.Program(lt,this.shimProgramId,{connection:null}),g=s.deserialize$1(Te,n.signedQuote),C=Le.deriveAddress("message_transmitter",this.messageTransmitterProgramId);u.add(await h.methods.relayLastMessage({execAmount:new s.BN(n.estimatedCost.toString()),recipientChain:s.toChainId(e.chain),signedQuoteBytes:s.dist.Buffer.from(n.signedQuote),relayInstructions:s.dist.Buffer.from(n.relayInstructions)}).accounts({payer:i,messageTransmitter:C,payee:new s.PublicKey(g.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:u,signers:[l]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(t,e,n=!1){return new le.SolanaUnsignedTransaction(t,this.network,this.chain,e,n)}}s.registerProtocol(s._platform$1,"CCTPExecutor",ee);var E;(function(r){r.Pending="pending",r.Failed="failed",r.Unsupported="unsupported",r.Submitted="submitted",r.Underpaid="underpaid",r.Aborted="aborted"})(E||(E={}));var be;(function(r){r.ERM1="ERM1",r.ERV1="ERV1",r.ERN1="ERN1",r.ERC1="ERC1",r.ERC2="ERC2"})(be||(be={}));async function ht(r){const t=`${K[r]}/v0/capabilities`;try{return(await s.axios.get(t)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${r}.`)}}async function gt(r,t,e,n){const a=`${K[r]}/v0/quote`;try{return(await s.axios.post(a,{srcChain:s.toChainId(t),dstChain:s.toChainId(e),relayInstructions:n})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function te(r,t,e){const n=`${K[r]}/v0/status/tx`;try{return(await s.axios.post(n,{txHash:t,chainId:s.toChainId(e)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${t}.`)}}const Ct=65535n;function wt(r,t,e){if(t>Ct)throw new Error("dBps exceeds max u16");let n=t,a=r,i=0n;if(t>0){if(e!==void 0&&r>0){const o=s.parse(e.toString(),6),c=s.units(o)/r,u=t<c?t:c;i=r*u/100000n,n=u}else i=r*t/100000n;a=r-i}return{referrerFee:i,remainingAmount:a,referrerFeeDbps:n}}function pt(r){return new Promise(t=>setTimeout(t,r))}async function q(r,t,e=s.DEFAULT_TASK_TIMEOUT){const n=k(t,r.chain);return s.retry(async()=>{var i;const a=`${z[t]}/messages/${n}?transactionHash=${r.txid}`;try{const c=(await s.axios.get(a)).data.messages[0];if(!c)return null;if(c.cctpVersion!==2)throw new Error("CCTPv1 attestation found");return c.status==="pending_confirmations"?null:{message:Ye(s.hex.decode(c.message)),attestation:c.attestation}}catch(o){if(!o||typeof o=="object"&&(s.axios.isAxiosError(o)&&((i=o.response)==null?void 0:i.status)===404||"status"in o&&o.status===404))return null;throw o}},2e3,e,"CCTPv2:GetMessage")}async function bt(r,t,e){const n=k(r,t),a=k(r,e),i=`${z[r]}/fastBurn/USDC/fees/${n}/${a}`,o=await s.axios.get(i);return BigInt(o.data.minimumFee)}async function Et(r,t){const e=s.hex.encode(t.attestation.message.nonce,!0),n=`${z[r]}/reattest/${e}`,a=await s.axios.post(n);if(a.data.error){if(a.data.error.includes("Message is already finalized"))return t.attestation;throw new Error(`Error re-attesting message: ${a.data.error}`)}const i=ye(r,t.attestation.message.sourceDomain);return s.retry(async()=>{const o=await q({txid:t.id,chain:i},r);return!o||o.message.messageBody.expirationBlock!==0n?null:o},2e3,s.DEFAULT_TASK_TIMEOUT,"CCTPv2:Reattest")}async function At(r){const t=`${z[r]}/fastBurn/USDC/allowance`,e=await s.axios.get(t);return s.units(s.parse(e.data.allowance,6))}function ne(r,t,e){const n=s.usdcContract.get(t.network,t.chain);if(!(n&&s.isSameToken(r,s.Wormhole.tokenId(t.chain,n))))return[];const{network:a,chain:i}=e,o=s.usdcContract.get(a,i);return o?[s.Wormhole.chainAddress(i,o)]:[]}let B;async function re(r,t,e,n){var ce,de,ue;const{fromChain:a,toChain:i}=r;if(!s.usdcContract.get(a.network,a.chain))throw new Error("Invalid transfer, no USDC contract on source");const c=s.usdcContract.get(i.network,i.chain);if(!c)throw new Error("Invalid transfer, no USDC contract on destination");let u;if(e.referrerFeeDbps>0n&&(u=(de=(ce=e.referrerAddresses)==null?void 0:ce[a.network])==null?void 0:de[a.chain],!u))throw new Error(`Referrer address not configured for ${a.chain}`);const m=u?s.Wormhole.chainAddress(a.chain,u):void 0,{referrerFee:f,remainingAmount:l,referrerFeeDbps:h}=wt(s.units(t.normalizedParams.amount),e.referrerFeeDbps,e.referrerFeeThreshold);if(l<=0n)throw new Error("Amount after fee <= 0");const g=(ue=je[i.network])==null?void 0:ue[i.chain];if(!g)throw new Error("Gas limit not found");const C=await ht(a.network);if(!C[s.toChainId(a.chain)])throw new Error("Unsupported source chain");const b=C[s.toChainId(i.chain)];if(!b||!b.requestPrefixes.includes(n))throw new Error("Unsupported destination chain");const{recipient:w}=r;let A=!0;if(w&&i.chain==="Solana"){const Pe=s.Wormhole.parseAddress("Solana",c),Me=await i.getTokenAccount(w.address,Pe),me=await i.getRpc();A=await me.getAccountInfo(new s.SolanaAddress(Me.address).unwrap())!==null,!A&&!B&&(B=BigInt(await me.getMinimumBalanceForRentExemption(165)))}let R=0n;i.chain==="Solana"&&(R+=Ke,!A&&B&&(R+=B));const N=[];N.push({request:{type:"GasInstruction",gasLimit:g,msgValue:R}});const ae=BigInt(b.gasDropOffLimit),_=t.options.nativeGas&&ae>0n?BigInt(Math.round(t.options.nativeGas*100))*ae/100n:0n;(_>0n||!A)&&N.push({request:{type:"GasDropOffInstruction",dropOff:_,recipient:w?w.address.toUniversalAddress():new s.UniversalAddress(new Uint8Array(32))}});const ie=s.serialize(ve,{requests:N}),O=await gt(a.network,a.chain,i.chain,s.hex.encode(ie,!0));if(!O.estimatedCost)throw new Error("No estimated cost");const oe=s.hex.decode(O.signedQuote),Se=s.deserialize$1(Te,oe),Ie=BigInt(O.estimatedCost);return{signedQuote:oe,relayInstructions:ie,estimatedCost:Ie,referrer:m,referrerFee:f,remainingAmount:l,referrerFeeDbps:h,expiryTime:Se.quote.expiryTime,gasDropOff:_}}async function Be(r,t,e,n){s.deserialize$1(ve,n.details.relayInstructions).requests.forEach(({request:l})=>{if(l.type==="GasDropOffInstruction"&&!l.recipient.equals(e.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const i=s.Wormhole.parseAddress(t.chain(),t.address()),o=await yt(e,r);let c;n.protocol==="CCTPExecutor"?c=await(await r.fromChain.getProtocol(n.protocol)).transfer(i,o,n.details):c=await(await r.fromChain.getProtocol(n.protocol)).transfer(i,o,n.details);const u=await s.signSendWait(r.fromChain,c,t);let m=0;return(async()=>{for(;m<20;){try{const[l]=await te(r.fromChain.network,u.at(-1).txid,r.fromChain.chain);if(l)break}catch{}m++,await pt(2e3)}})(),{from:r.fromChain.chain,to:r.toChain.chain,state:s.TransferState.SourceInitiated,originTxs:u}}async function yt(r,t){if(r.chain!=="Solana")return r;const e=s.usdcContract.get(t.toChain.network,t.toChain.chain);if(!e)throw new Error("No USDC contract found for Solana");const n=s.Wormhole.parseAddress("Solana",e);return t.toChain.getTokenAccount(r.address,n)}function xt(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends I{}return d(t,"config",r),t}class I extends s.AutomaticRoute{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(e){return[...Object.keys(Ae[e]??{})]}static async supportedDestinationTokens(e,n,a){return!v(n.network,n.chain)||!v(a.network,a.chain)?[]:ne(e,n,a)}getDefaultOptions(){return{nativeGas:0}}async validate(e,n){var c;const{fromChain:a,toChain:i}=e;return!v(a.network,a.chain)||!v(i.network,i.chain)?{valid:!1,error:new Error("Unsupported source or destination chain"),params:n}:(c=n.options)!=null&&c.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:a,toChain:i}=e;try{const o=await re(e,n,this.staticConfig,"ERC1"),{remainingAmount:c,estimatedCost:u,gasDropOff:m,expiryTime:f}=o,l=a.chain==="Polygon"?2e3*200:s.estimateFinalityTime(a.chain)+1e3,[h,g]=await Promise.all([a.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:s.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(u,h)},destinationNativeGas:s.fromBaseUnits(m,g),eta:l,expires:f,details:o}}catch(o){return{success:!1,error:new Error(o instanceof Error?o.message:`${o}`)}}}async initiate(e,n,a,i){if(!a.details)throw new Error("Missing quote details");return await Be(e,n,i,{protocol:"CCTPExecutor",details:a.details})}async*track(e,n){if(s.isCompleted(e)||s.isFailed(e))return e;let a=n||60*60*1e3;for(;a>0;){const i=Date.now();if(s.isSourceInitiated(e)||s.isSourceFinalized(e)||s.isAttested(e))try{const[o]=await te(this.wh.network,e.originTxs.at(-1).txid,e.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;if((c===E.Failed||c===E.Underpaid||c===E.Unsupported||c===E.Aborted)&&(e={...e,state:s.TransferState.Failed,error:new s.RelayFailedError(`Relay failed with status: ${c}`)}),c===E.Submitted&&(e={...e,state:s.TransferState.DestinationFinalized,attestation:{id:o.id,attestation:{}}}),yield e,s.isCompleted(e)||s.isFailed(e))return e}catch(o){console.error(`Error fetching transaction status: ${o.message||o}`)}await new Promise(o=>setTimeout(o,3e3)),a-=Date.now()-i}return e}}d(I,"NATIVE_GAS_DROPOFF_SUPPORTED",!0),d(I,"config",{referrerFeeDbps:0n}),d(I,"meta",{name:"CCTPExecutorRoute",provider:"Circle CCTP"});class se extends s.AutomaticRoute{static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(t){return Object.keys(V[t]??{})}getDefaultOptions(){return{nativeGas:0}}async initiate(t,e,n,a){if(!n.details)throw new Error("Missing quote details");return await Be(t,e,a,{protocol:"CCTPv2Executor",details:n.details})}async*track(t,e){if(s.isCompleted(t))return t;let n=e||60*60*1e3;for(;n>0;){const a=Date.now();if(s.isSourceInitiated(t)||s.isSourceFinalized(t)||s.isAttested(t)||s.isFailed(t))try{const i=t.originTxs.at(-1).txid;if(s.isSourceInitiated(t)||s.isSourceFinalized(t)){const o=await q({chain:t.from,txid:i},this.wh.network);o&&(t={...t,state:s.TransferState.Attested,attestation:{id:i,attestation:o}}),yield t}if(s.isAttested(t)){const[o]=await te(this.wh.network,i,t.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;c===E.Submitted?t={...t,state:s.TransferState.DestinationFinalized}:(c===E.Failed||c===E.Underpaid||c===E.Unsupported||c===E.Aborted)&&(t={...t,state:s.TransferState.Failed,error:new s.RelayFailedError(`Relay failed with status: ${c}`)})}if(s.isFailed(t)){if(!t.attestation)throw new Error("Receipt is missing attestation");const o=t.attestation;await(await this.wh.getChain(t.to).getProtocol("CCTPv2Executor")).isTransferCompleted(o.attestation.message)&&(t={...t,state:s.TransferState.DestinationFinalized,attestation:o})}if(yield t,s.isCompleted(t))return t}catch(i){console.error(`Error fetching transaction status: ${i.message||i}`)}await new Promise(i=>setTimeout(i,3e3)),n-=Date.now()-a}return t}async complete(t,e){if(!s.isAttested(e)&&!s.isFailed(e))throw new Error("Transfer is not attested");if(!e.attestation)throw new Error("No attestation found");const n=this.wh.getChain(e.to),a=await n.getProtocol("CCTPv2Executor");let{attestation:i,message:o}=e.attestation.attestation;const{expirationBlock:c}=o.messageBody,u=await a.getCurrentBlock();if(c!==0n&&c<u){const h=await Et(n.network,e.attestation);if(!h)throw new Error("Failed to reattest message");i=h.attestation,o=h.message}const m=s.Wormhole.parseAddress(t.chain(),t.address()),f=a.redeem(m,o,i),l=await s.signSendWait(this.wh.getChain(e.to),f,t);return{...e,state:s.TransferState.DestinationInitiated,attestation:e.attestation,destinationTxs:l}}async resume(t){const e=await q(t,this.wh.network);if(!e)throw new Error("No attestation found");const{message:n}=e,a=ye(this.wh.network,n.destinationDomain);return await(await this.wh.getChain(a).getProtocol("CCTPv2Executor")).isTransferCompleted(n)?{from:t.chain,to:a,state:s.TransferState.DestinationFinalized,originTxs:[t],attestation:{id:t.txid,attestation:e}}:{from:t.chain,to:a,state:s.TransferState.Attested,originTxs:[t],attestation:{id:t.txid,attestation:e}}}}d(se,"NATIVE_GAS_DROPOFF_SUPPORTED",!0);function Dt(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends W{}return d(t,"config",r),t}const D=class D extends se{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static isPathSupported(e,n){return Xe(e.network,e.chain)&&L(n.network,n.chain)}static async supportedDestinationTokens(e,n,a){return this.isPathSupported(n,a)?ne(e,n,a):[]}async validate(e,n){var i;return D.isPathSupported(e.fromChain,e.toChain)?(i=n.options)!=null&&i.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){var o;const{fromChain:a,toChain:i}=e;try{const c=await re(e,n,this.staticConfig,"ERC2"),{remainingAmount:u,estimatedCost:m,gasDropOff:f,expiryTime:l}=c;if(await At(a.network)<=u)return{success:!1,error:new Error("Insufficient allowance for fast transfer")};const g=await bt(a.network,a.chain,i.chain),C=(u*g+10000n-1n)/10000n,p=u-C;if(p<=0n)return{success:!1,error:new Error("Amount after fast transfer fee <= 0")};const b=(o=xe[a.network])==null?void 0:o[a.chain],[w,A]=await Promise.all([a.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:s.fromBaseUnits(p,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(m,w)},destinationNativeGas:s.fromBaseUnits(f,A),eta:b,expires:l,details:{...c,minFinalityThreshold:U.CONFIRMED,fastTransferMaxFee:C}}}catch(c){return{success:!1,error:new Error(c instanceof Error?c.message:`${c}`)}}}};d(D,"config",{referrerFeeDbps:0n}),d(D,"meta",{name:"CCTPv2FastExecutorRoute",provider:"Circle CCTP"});let W=D;function Ft(r={referrerFeeDbps:0n}){if(r.referrerFeeDbps<0||r.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class t extends Q{}return d(t,"config",r),t}const F=class F extends se{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static isPathSupported(e,n){return L(e.network,e.chain)&&L(n.network,n.chain)&&e.chain!=="Linea"}static async supportedDestinationTokens(e,n,a){return this.isPathSupported(n,a)?ne(e,n,a):[]}async validate(e,n){var i;return F.isPathSupported(e.fromChain,e.toChain)?(i=n.options)!=null&&i.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:a,toChain:i}=e;try{const o=await re(e,n,this.staticConfig,"ERC2"),{remainingAmount:c,estimatedCost:u,gasDropOff:m,expiryTime:f}=o,l=a.chain==="Polygon"?2e3*200:s.estimateFinalityTime(a.chain)+1e3,[h,g]=await Promise.all([a.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:s.fromBaseUnits(c,e.destination.decimals)},relayFee:{token:s.nativeTokenId(a.chain),amount:s.fromBaseUnits(u,h)},destinationNativeGas:s.fromBaseUnits(m,g),eta:l,expires:f,details:{...o,minFinalityThreshold:U.FINALIZED,fastTransferMaxFee:0n}}}catch(o){return{success:!1,error:new Error(o instanceof Error?o.message:`${o}`)}}}};d(F,"config",{referrerFeeDbps:0n}),d(F,"meta",{name:"CCTPv2StandardExecutorRoute",provider:"Circle CCTP"});let Q=F;const{executorTokenBridgeRoute:vt}=P.routes;exports.cctpExecutorRoute=xt;exports.cctpV2FastExecutorRoute=Dt;exports.cctpV2StandardExecutorRoute=Ft;exports.executorTokenBridgeRoute=vt;
|