@wormhole-foundation/wormhole-connect 3.0.0-beta.5-development → 3.0.0-beta.7-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/dist/main.js +47 -47
- package/dist/src/exports/executor.d.ts +1 -1
- package/dist/src/exports/executor.d.ts.map +1 -1
- package/dist/src/hooks/useComputeDestinationTokens.d.ts.map +1 -1
- package/dist/src/utils/sdkv2.d.ts +1 -1
- package/dist/src/utils/sdkv2.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/lib/{aptos-DdLaZAbX.mjs → aptos-9aq-5gkF.mjs} +1 -1
- package/lib/{aptos-B9U6O-dl.js → aptos-XxKO9242.js} +1 -1
- package/lib/{ccip-DZPSxGo-.mjs → ccip-CUqskd5M.mjs} +1 -1
- package/lib/{ccip-Wh0YfVvY.js → ccip-oytFtCzk.js} +1 -1
- package/lib/constants-Bmrui4ZY.js +1 -0
- package/lib/{constants-BpnA30ER.mjs → constants-DrDsewBe.mjs} +3 -3
- package/lib/{evm-CgF7zwuT.js → evm-D_r84vhS.js} +3 -3
- package/lib/{evm-BfosdVcf.mjs → evm-IjnSHeSg.mjs} +4 -4
- package/lib/executor.js +1 -1
- package/lib/executor.mjs +37 -37
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-DgerPSSh.js → index-43m4zMem.js} +1 -1
- package/lib/{index-BMxhTd-v.js → index-BcAXCy1h.js} +1 -1
- package/lib/index-CIhJm6vf.js +355 -0
- package/lib/{index-C-_xpVRa.mjs → index-Ce0EI1tW.mjs} +1 -1
- package/lib/{index-D8AYsaEU.mjs → index-CuDLHfKb.mjs} +1 -1
- package/lib/{index-BjaIqtyy.mjs → index-Cyo0tNu5.mjs} +1 -1
- package/lib/{index-ByaMu-qS.mjs → index-DDBdrN7Y.mjs} +21897 -21940
- package/lib/{index-IyP4Vr-d.js → index-Dt-63Ecw.js} +1 -1
- package/lib/{index.es-DlSoduAW.mjs → index.es-C6ziEcYX.mjs} +2 -2
- package/lib/{index.es-DRN2pshI.js → index.es-MXzok_Dp.js} +1 -1
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/{solana-33GlUplS.mjs → solana-CE7DDmW7.mjs} +3 -3
- package/lib/{solana-Bbay1OHx.js → solana-iU2xZ6yu.js} +1 -1
- package/lib/{solanaEmbed.esm-baNcElxT.mjs → solanaEmbed.esm-BtaI5pum.mjs} +2 -2
- package/lib/{solanaEmbed.esm-Du3QS4H_.js → solanaEmbed.esm-DUsdVcC-.js} +1 -1
- package/lib/src/exports/executor.d.ts +1 -1
- package/lib/src/exports/executor.d.ts.map +1 -1
- package/lib/src/hooks/useComputeDestinationTokens.d.ts.map +1 -1
- package/lib/src/utils/sdkv2.d.ts +1 -1
- package/lib/src/utils/sdkv2.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
- package/lib/{sui-D0FrnfOj.mjs → sui-BIE_b_7o.mjs} +1 -1
- package/lib/{sui-Crq4-j1d.js → sui-CNPKXqM6.js} +1 -1
- package/lib/{tokens-CF4wGtlH.mjs → tokens-CQnhplD_.mjs} +2 -2
- package/lib/{tokens-Cz8rSlKv.js → tokens-D4usSvOD.js} +1 -1
- package/package.json +2 -2
- package/lib/constants-Ricf667V.js +0 -1
- package/lib/index-FrHiagMc.js +0 -355
|
@@ -3,7 +3,7 @@ var Aa = (e) => {
|
|
|
3
3
|
};
|
|
4
4
|
var Ia = (e, t, r) => t.has(e) || Aa("Cannot " + r);
|
|
5
5
|
var vn = (e, t, r) => (Ia(e, t, "read from private field"), r ? r.call(e) : t.get(e)), Ea = (e, t, r) => t.has(e) ? Aa("Cannot add the same private member more than once") : t instanceof WeakSet ? t.add(e) : t.set(e, r), xa = (e, t, r, n) => (Ia(e, t, "write to private field"), n ? n.call(e, r) : t.set(e, r), r);
|
|
6
|
-
import { C as Xo, W as qo, N as Rn, a as $o, b as $e, c as Jr, B as ec, i as tc, d as rc, r as nc, s as sc, e as _r } from "./index-
|
|
6
|
+
import { C as Xo, W as qo, N as Rn, a as $o, b as $e, c as Jr, B as ec, i as tc, d as rc, r as nc, s as sc, e as _r } from "./index-DDBdrN7Y.mjs";
|
|
7
7
|
import { bg as Na, d as Wn, g as ac, ab as ic } from "./address-CBux52Na.mjs";
|
|
8
8
|
import { j as oc } from "./provider-jsonrpc-CVWSLk8g.mjs";
|
|
9
9
|
import { t as cc, C as lc, f as uc } from "./contract-BVaUamai.mjs";
|
|
@@ -4320,7 +4320,7 @@ async function gn(e, t) {
|
|
|
4320
4320
|
});
|
|
4321
4321
|
return j === "0x" ? { data: void 0 } : { data: j };
|
|
4322
4322
|
} catch (E) {
|
|
4323
|
-
const I = Zu(E), { offchainLookup: l, offchainLookupSignature: b } = await import("./ccip-
|
|
4323
|
+
const I = Zu(E), { offchainLookup: l, offchainLookupSignature: b } = await import("./ccip-CUqskd5M.mjs");
|
|
4324
4324
|
if ((I == null ? void 0 : I.slice(0, 10)) === b && f)
|
|
4325
4325
|
return { data: await l(e, { data: I, to: f }) };
|
|
4326
4326
|
throw Ru(E, {
|
|
@@ -13983,7 +13983,7 @@ var Dd = Object.defineProperty, Cd = function(e, t, r) {
|
|
|
13983
13983
|
case 0:
|
|
13984
13984
|
return !Jt(i, Vt) || a || o ? (h = !((c = i.options) === null || c === void 0) && c.infuraId ? {} : i.chains.reduce(function(f, m) {
|
|
13985
13985
|
return ti(Qr({}, f), vo({}, m.id, m.rpcUrls.default.http[0]));
|
|
13986
|
-
}, {}), [4, import("./index-
|
|
13986
|
+
}, {}), [4, import("./index-CuDLHfKb.mjs")]) : [3, 2];
|
|
13987
13987
|
case 1:
|
|
13988
13988
|
d = p.sent().default, Fn(i, Vt, new d(ti(Qr({}, i.options), { chainId: a, rpc: Qr({}, h, (u = i.options) === null || u === void 0 ? void 0 : u.rpc) }))), p.label = 2;
|
|
13989
13989
|
case 2:
|
|
@@ -15560,7 +15560,7 @@ xs = async function() {
|
|
|
15560
15560
|
};
|
|
15561
15561
|
ma = /* @__PURE__ */ new WeakSet();
|
|
15562
15562
|
Vo = async function() {
|
|
15563
|
-
const { EthereumProvider: e } = await import("./index.es-
|
|
15563
|
+
const { EthereumProvider: e } = await import("./index.es-C6ziEcYX.mjs"), t = this.chains.map(({ id: r }) => r);
|
|
15564
15564
|
if (t.length) {
|
|
15565
15565
|
const {
|
|
15566
15566
|
projectId: r,
|
package/lib/executor.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var me=Object.defineProperty;var le=(e,a,t)=>a in e?me(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t;var d=(e,a,t)=>le(e,typeof a!="symbol"?a+"":a,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./address-RcMobNYE.js"),P=require("./chain-itK5uGYL.js"),j=require("./chunk-IMTC3J2M-D-un3eDX.js"),he=require("./platform-CyTWPtDR.js"),re=require("./address-B-_yHNB2.js"),ge=require("./unsignedTransaction-C1YeEl4G.js"),V=require("./platform-CG_VHRJU.js"),pe=require("./contract-MJZ8ZoSX.js"),Ce=require("./unsignedTransaction-B7AZXsTD.js"),x=require("./platform-PNwsacZi.js"),be=require("./index-BeQ668oT.js"),ne=require("./address-CNhzoegm.js"),we=require("./unsignedTransaction-DzSLsK-p.js"),Ae=require("./index-B-S6avdv.js"),ye=require("./index-FCA-cXcS.js"),E=require("./web3-CjTx3huW.js"),X=require("./unsignedTransaction-DFUF8DSp.js"),xe=require("./account-QG_Hi4er.js"),z={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},U={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"}},J={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},Ee={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},Se=5001n,ve={Testnet:{Aptos:5000n,Avalanche:200000n,BaseSepolia:200000n,Sepolia:200000n,Solana:250000n,Sui:8000000n},Mainnet:{Aptos:5000n,Arbitrum:400000n,Avalanche:250000n,Base:250000n,Ethereum:250000n,Optimism:250000n,Polygon:250000n,Unichain:250000n,Solana:250000n,Sui:8000000n}},Pe={Testnet:{Aptos:"0x23b54f6e29bba7f4123d088f4cfcd83f5e23a049de15895b119ce5a6cb5faa91",Avalanche:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",BaseSepolia:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",Sepolia:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",Solana:"9r6q2iEg4MBevjC8reaLmQUDxueF3vabUoqDkZ2LoAYe",Sui:"0x30bd9b3d5ad00f38fd0c314139ba47ccb3c78353d99880d81125ca0c370b415e"},Mainnet:{Aptos:"0x1f177e724a874ab6267172a3049291c480fc665883e6a3ac95d0909492c09dc8",Solana:"JB3rmygUVuVZzgkxvMdV8mSKLJeQAkSXEK284Dqsziah",Sui:"0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4",Arbitrum:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Avalanche:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Base:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Ethereum:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Optimism:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Polygon:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Unichain:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E"}};var b;(function(e){e.Pending="pending",e.Failed="failed",e.Unsupported="unsupported",e.Submitted="submitted",e.Underpaid="underpaid",e.Aborted="aborted"})(b||(b={}));async function Fe(e){const a=`${z[e]}/v0/capabilities`;try{return(await s.axios.get(a)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${e}.`)}}async function Ie(e,a,t,r){const n=`${z[e]}/v0/quote`;try{return(await s.axios.post(n,{srcChain:s.toChainId(a),dstChain:s.toChainId(t),relayInstructions:r})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function H(e,a,t){const r=`${z[e]}/v0/status/tx`;try{return(await s.axios.post(r,{txHash:a,chainId:s.toChainId(t)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${a}.`)}}const De=65535n;function Me(e,a){if(a>De)throw new Error("dBps exceeds max u16");if(a>0){const t=e*a/100000n,r=e-t;return{referrerFee:t,remainingAmount:r}}return{referrerFee:0n,remainingAmount:e}}function Be(e){return new Promise(a=>setTimeout(a,e))}const Te=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],ze=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...s.universalAddressItem}],Ue=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],Te],[[2,"GasDropOffInstruction"],ze]]}],Z=[{name:"requests",binary:"array",layout:Ue}];var Y;(function(e){e.ERM1="ERM1",e.ERV1="ERV1",e.ERN1="ERN1",e.ERC1="ERC1"})(Y||(Y={}));const $e={to:e=>new Date(Number(e*1000n)),from:e=>BigInt(e.getTime())/1000n},Re=[{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:$e},{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=[...Re,{name:"signature",binary:"bytes",size:65}];class ${constructor(a,t,r,n){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"shimContract");var c;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="Devnet")throw new Error("CCTPW7Executor 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=U[a])==null?void 0:c[t];if(!o)throw new Error(`Shim contract for ${t} not found`);this.shimContract=o}static async fromRpc(a,t){const[r,n]=await he.AptosPlatform.chainFromRpc(a),i=t[n];if(!i)throw new Error(`No config found for ${n}`);if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new $(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new re.AptosAddress(a).unwrap(),i=j.l.from(t.address.toUniversalAddress().toUint8Array()),o=j.l.from(this.usdcId),c=r.remainingAmount+r.referrerFee,u=s.circleChainId.get(this.network,t.chain),f=n,l=n,g=[c,u,i.toString(),o.toString(),r.estimatedCost,s.toChainId(t.chain),f,r.signedQuote,r.relayInstructions,r.referrerFeeDbps,l],m={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:g};yield this.createUnsignedTx(m,"AtposCCTPW7Executor.Transfer")}createUnsignedTx(a,t,r=!1){return new ge.AptosUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(re._platform,"CCTPW7Executor",$);class R{constructor(a,t,r,n){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");var o;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="Devnet")throw new Error("CCTPW7Executor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(a,t);const i=(o=U[a])==null?void 0:o[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i}static async fromRpc(a,t){const[r,n]=await V.EvmPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new R(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new s.EvmAddress(a).toString(),i=t.address.toUniversalAddress().toUint8Array(),o=r.remainingAmount+r.referrerFee,c=s.usdcContract.get(this.network,this.chain),u=V.EvmPlatform.getTokenImplementation(this.provider,c);if(await u.allowance(n,this.shimContract)<o){const p=await u.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(p,n),"ERC20.approve of EvmCCTPW7Executor",!1)}const l=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],m=await new pe.Contract(this.shimContract,l,this.provider).getFunction("depositForBurn").populateTransaction(o,s.toChainId(t.chain),s.circleChainId.get(this.network,t.chain),i,c,{refundAddress:n,signedQuote:r.signedQuote,instructions:r.relayInstructions},{dbps:r.referrerFeeDbps,payee:r.referrer.address.toString()});m.value=r.estimatedCost,yield this.createUnsignedTx(s.addFrom(m,n),"EvmCCTPW7Executor.depositForBurn")}createUnsignedTx(a,t,r=!1){return new Ce.EvmUnsignedTransaction(s.addChainId(a,this.chainId),this.network,this.chain,t,r)}}P.registerProtocol(s._platform,"CCTPW7Executor",R);class q{constructor(a,t,r,n){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 f,l,g,m;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="Devnet")throw new Error("CCTPW7Executor not supported on Devnet");const i=(p,h)=>{if(!p)throw new Error(h);return p};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}=be.suiCircleObjects(a);this.usdcTreasuryId=u,this.tokenMessengerId=i((f=n.cctp)==null?void 0:f.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterId=i((l=n.cctp)==null?void 0:l.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=i((g=J[a])==null?void 0:g.executorId,`Executor contract for ${a} not found`),this.executorRequestsId=i((m=J[a])==null?void 0:m.executorRequestsId,`Executor requests contract for ${a} not found`)}static async fromRpc(a,t){const[r,n]=await x.SuiPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new q(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new x.Transaction,i=new ne.SuiAddress(a).unwrap(),o=s.circleChainId.get(this.network,t.chain),[c,...u]=await x.SuiPlatform.getCoins(this.provider,a,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const f=n.object(c.coinObjectId);u.length>0&&n.mergeCoins(f,u.map(C=>n.object(C.coinObjectId)));let l;if(r.referrerFee>0n){const[C,y]=n.splitCoins(f,[r.remainingAmount,r.referrerFee]);l=C,n.transferObjects([y],s.canonicalAddress(r.referrer))}else{const[C]=n.splitCoins(f,[r.remainingAmount]);l=C}const[g,m]=n.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[l,n.pure.u32(o),n.pure.address(t.address.toUniversalAddress().toString()),n.object(this.tokenMessengerStateId),n.object(this.messageTransmitterStateId),n.object("0x403"),n.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[p]=n.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[m]}),[h]=n.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[m]}),[w]=n.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[p,h]}),[A]=n.splitCoins(n.gas,[n.pure.u64(r.estimatedCost)]);n.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[A,n.object(x.SUI_CLOCK_OBJECT_ID),n.pure.u16(s.toChainId(t.chain)),n.pure.address("0x0"),n.pure.address(i),n.pure.vector("u8",r.signedQuote),w,n.pure.vector("u8",r.relayInstructions)]}),yield this.createUnsignedTx(n,"SuiCCTPW7Executor.Transfer")}createUnsignedTx(a,t,r=!1){return new we.SuiUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(x._platform,"CCTPW7Executor",q);const F=new s.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const _=new s.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s.PublicKey("So11111111111111111111111111111111111111112");new s.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class qe extends Error{constructor(a){super(a)}}class _e extends qe{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var T;(function(e){e[e.InitializeMint=0]="InitializeMint",e[e.InitializeAccount=1]="InitializeAccount",e[e.InitializeMultisig=2]="InitializeMultisig",e[e.Transfer=3]="Transfer",e[e.Approve=4]="Approve",e[e.Revoke=5]="Revoke",e[e.SetAuthority=6]="SetAuthority",e[e.MintTo=7]="MintTo",e[e.Burn=8]="Burn",e[e.CloseAccount=9]="CloseAccount",e[e.FreezeAccount=10]="FreezeAccount",e[e.ThawAccount=11]="ThawAccount",e[e.TransferChecked=12]="TransferChecked",e[e.ApproveChecked=13]="ApproveChecked",e[e.MintToChecked=14]="MintToChecked",e[e.BurnChecked=15]="BurnChecked",e[e.InitializeAccount2=16]="InitializeAccount2",e[e.SyncNative=17]="SyncNative",e[e.InitializeAccount3=18]="InitializeAccount3",e[e.InitializeMultisig2=19]="InitializeMultisig2",e[e.InitializeMint2=20]="InitializeMint2",e[e.GetAccountDataSize=21]="GetAccountDataSize",e[e.InitializeImmutableOwner=22]="InitializeImmutableOwner",e[e.AmountToUiAmount=23]="AmountToUiAmount",e[e.UiAmountToAmount=24]="UiAmountToAmount",e[e.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",e[e.TransferFeeExtension=26]="TransferFeeExtension",e[e.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",e[e.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",e[e.Reallocate=29]="Reallocate",e[e.MemoTransferExtension=30]="MemoTransferExtension",e[e.CreateNativeMint=31]="CreateNativeMint",e[e.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",e[e.InterestBearingMintExtension=33]="InterestBearingMintExtension",e[e.CpiGuardExtension=34]="CpiGuardExtension",e[e.InitializePermanentDelegate=35]="InitializePermanentDelegate",e[e.TransferHookExtension=36]="TransferHookExtension",e[e.MetadataPointerExtension=39]="MetadataPointerExtension"})(T||(T={}));function Ne(e,a,t){if(t.length){e.push({pubkey:a,isSigner:!1,isWritable:!1});for(const r of t)e.push({pubkey:r instanceof s.PublicKey?r:r.publicKey,isSigner:!0,isWritable:!1})}else e.push({pubkey:a,isSigner:!0,isWritable:!1});return e}const We=s.struct([s.u32("mintAuthorityOption"),E.publicKey("mintAuthority"),E.u64("supply"),s.u8("decimals"),E.bool("isInitialized"),s.u32("freezeAuthorityOption"),E.publicKey("freezeAuthority")]);We.span;function ee(e,a,t=!1,r=F,n=_){if(!t&&!s.PublicKey.isOnCurve(a.toBuffer()))throw new _e;const[i]=s.PublicKey.findProgramAddressSync([a.toBuffer(),r.toBuffer(),e.toBuffer()],n);return i}function ke(e,a,t,r,n=F,i=_){return Oe(e,a,t,r,s.dist.Buffer.from([1]),n,i)}function Oe(e,a,t,r,n,i=F,o=_){const c=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,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:n})}const te=s.struct([s.u8("instruction"),E.u64("amount")]);function Ge(e,a,t,r,n=[],i=F){const o=Ne([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0}],t,n),c=s.dist.Buffer.alloc(te.span);return te.encode({instruction:T.Transfer,amount:BigInt(r)},c),new s.TransactionInstruction({keys:o,programId:i,data:c})}const Le={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 N{constructor(a,t,r,n){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=a,this.chain=t,this.connection=r,this.contracts=n,a==="Devnet")throw new Error("CCTPW7Executor not supported on Devnet");const i=(f,l)=>{if(!f)throw new Error(l);return new s.PublicKey(f)};this.tokenMessengerProgramId=i((o=n.cctp)==null?void 0:o.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterProgramId=i((c=n.cctp)==null?void 0:c.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.shimProgramId=i((u=U[a])==null?void 0:u[t],`Shim contract for ${t} not found`),this.executorProgramId=i(Ee[a],`Executor contract for ${a} not found`)}static async fromRpc(a,t){const[r,n]=await X.SolanaPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new N(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new s.PublicKey(s.usdcContract.get(this.network,this.chain)),i=new s.SolanaAddress(a).unwrap(),o=ee(n,i),c=new s.SolanaAddress(r.referrer.address).unwrap(),u=new s.Transaction;if(u.feePayer=i,r.referrerFee>0n){const w=ee(n,c);await this.connection.getAccountInfo(w)||u.add(ke(i,w,c,n)),u.add(Ge(o,w,i,r.referrerFee))}const f=s.circleChainId.get(this.network,t.chain),l=t.address.toUniversalAddress(),g=s.Keypair.generate();u.add(await Ae.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,n,f,i,o,l,r.remainingAmount,g.publicKey));const m=new ye.Program(Le,this.shimProgramId,{connection:null}),p=s.deserialize$1(se,r.signedQuote),h=xe.deriveAddress("message_transmitter",this.messageTransmitterProgramId);u.add(await m.methods.relayLastMessage({execAmount:new s.BN(r.estimatedCost.toString()),recipientChain:s.toChainId(t.chain),signedQuoteBytes:s.dist.Buffer.from(r.signedQuote),relayInstructions:s.dist.Buffer.from(r.relayInstructions)}).accounts({payer:i,messageTransmitter:h,payee:new s.PublicKey(p.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:u,signers:[g]},"SvmCCTPW7Executor.Transfer")}createUnsignedTx(a,t,r=!1){return new X.SolanaUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(s._platform$1,"CCTPW7Executor",N);let S;function Qe(e){if(e.referrerFeeDbps<0||e.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class a extends v{}return d(a,"config",e),a}class v extends s.AutomaticRoute{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(t){return s.circleContractChains.has(t)?s.circleContractChains.get(t):[]}static async supportedDestinationTokens(t,r,n){const i=s.usdcContract.get(r.network,r.chain);if(!(i&&s.isSameToken(t,s.Wormhole.tokenId(r.chain,i))))return[];const{network:o,chain:c}=n;return s.usdcContract.has(o,c)?[s.Wormhole.chainAddress(c,s.usdcContract.get(o,c))]:[]}getDefaultOptions(){return{nativeGas:0}}async validate(t,r){var i;return(i=r.options)!=null&&i.nativeGas&&(r.options.nativeGas<0||r.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:r}:{valid:!0,params:{normalizedParams:{amount:t.parseAmount(r.amount)},options:r.options??this.getDefaultOptions(),...r}}}async quote(t,r){var L,Q;const{fromChain:n,toChain:i}=t;if(!s.usdcContract.get(n.network,n.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");const u=(L=Pe[n.network])==null?void 0:L[n.chain];if(!u)return{success:!1,error:new Error("No referrer address found")};const f=s.Wormhole.chainAddress(n.chain,u),l=this.staticConfig.referrerFeeDbps,{referrerFee:g,remainingAmount:m}=Me(s.units(r.normalizedParams.amount),this.staticConfig.referrerFeeDbps);if(m<=0n)return{success:!1,error:new Error("Amount after fee <= 0")};const p=(Q=ve[n.network])==null?void 0:Q[i.chain];if(!p)return{success:!1,error:new Error("Gas limit not found")};const h=await Fe(n.network);if(!h[s.toChainId(n.chain)])return{success:!1,error:new Error("Unsupported source chain")};const A=h[s.toChainId(i.chain)];if(!A||!A.requestPrefixes.includes("ERC1"))return{success:!1,error:new Error("Unsupported destination chain")};const{recipient:C}=t;let y=!0;if(C&&i.chain==="Solana"){const ue=s.Wormhole.parseAddress("Solana",c),fe=await i.getTokenAccount(C.address,ue),K=await i.getRpc();y=await K.getAccountInfo(new s.SolanaAddress(fe.address).unwrap())!==null,!y&&!S&&(S=BigInt(await K.getMinimumBalanceForRentExemption(165)))}let I=0n;i.chain==="Solana"&&(I+=Se,!y&&S&&(I+=S));const D=[];D.push({request:{type:"GasInstruction",gasLimit:p,msgValue:I}});const W=BigInt(A.gasDropOffLimit),M=r.options.nativeGas&&W>0n?BigInt(Math.round(r.options.nativeGas*100))*W/100n:0n;(M>0n||!y)&&D.push({request:{type:"GasDropOffInstruction",dropOff:M,recipient:C?C.address.toUniversalAddress():new s.UniversalAddress(new Uint8Array(32))}});const k=s.serialize$1(Z,{requests:D}),B=await Ie(n.network,n.chain,i.chain,s.hex.encode(k,!0));if(!B.estimatedCost)return{success:!1,error:new Error("No estimated cost")};const O=s.hex.decode(B.signedQuote),ae=s.deserialize$1(se,O),ie=n.chain==="Polygon"?2e3*200:s.estimateFinalityTime(n.chain)+1e3,G=BigInt(B.estimatedCost),oe={signedQuote:O,relayInstructions:k,estimatedCost:G,referrer:f,referrerFee:g,remainingAmount:m,referrerFeeDbps:l},[ce,de]=await Promise.all([n.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:r,sourceToken:{token:t.source.id,amount:r.normalizedParams.amount},destinationToken:{token:t.destination.id,amount:s.fromBaseUnits(m,t.destination.decimals)},relayFee:{token:s.nativeTokenId(n.chain),amount:s.fromBaseUnits(G,ce)},destinationNativeGas:s.fromBaseUnits(M,de),eta:ie,expires:ae.quote.expiryTime,details:oe}}async initiate(t,r,n,i){if(!n.details)throw new Error("Missing quote details");s.deserialize$1(Z,n.details.relayInstructions).requests.forEach(({request:h})=>{if(h.type==="GasDropOffInstruction"&&!h.recipient.equals(i.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const c=await t.fromChain.getProtocol("CCTPW7Executor"),u=s.Wormhole.parseAddress(r.chain(),r.address());let f=i;if(i.chain==="Solana"){const h=s.Wormhole.parseAddress("Solana",s.usdcContract.get(t.toChain.network,t.toChain.chain));f=await t.toChain.getTokenAccount(i.address,h)}const l=await c.transfer(u,f,n.details),g=await s.signSendWait(t.fromChain,l,r);let m=0;return(async()=>{for(;m<20;){try{const[h]=await H(this.wh.network,g.at(-1).txid,t.fromChain.chain);if(h)break}catch{}m++,await Be(2e3)}})(),{from:t.fromChain.chain,to:t.toChain.chain,state:s.TransferState.SourceInitiated,originTxs:g}}async*track(t,r){if(s.isCompleted(t)||s.isFailed(t))return t;let n=r||60*60*1e3;for(;n>0;){const i=Date.now();if(s.isSourceInitiated(t)||s.isSourceFinalized(t)||s.isAttested(t))try{const[o]=await H(this.wh.network,t.originTxs.at(-1).txid,t.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;if((c===b.Failed||c===b.Underpaid||c===b.Unsupported||c===b.Aborted)&&(t={...t,state:s.TransferState.Failed,error:new ne.RelayFailedError(`Relay failed with status: ${c}`)}),c===b.Submitted&&(t={...t,state:s.TransferState.DestinationFinalized,attestation:{id:o.id,attestation:{}}}),yield t,s.isCompleted(t)||s.isFailed(t))return t}catch(o){console.error(`Error fetching transaction status: ${o.message||o}`)}await new Promise(o=>setTimeout(o,3e3)),n-=Date.now()-i}return t}}d(v,"NATIVE_GAS_DROPOFF_SUPPORTED",!0),d(v,"config",{referrerFeeDbps:0n}),d(v,"meta",{name:"CCTPW7ExecutorRoute",provider:"W7 Executor"});exports.cctpW7ExecutorRoute=Qe;
|
|
1
|
+
"use strict";var me=Object.defineProperty;var le=(e,a,t)=>a in e?me(e,a,{enumerable:!0,configurable:!0,writable:!0,value:t}):e[a]=t;var d=(e,a,t)=>le(e,typeof a!="symbol"?a+"":a,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./address-RcMobNYE.js"),P=require("./chain-itK5uGYL.js"),j=require("./chunk-IMTC3J2M-D-un3eDX.js"),he=require("./platform-CyTWPtDR.js"),re=require("./address-B-_yHNB2.js"),ge=require("./unsignedTransaction-C1YeEl4G.js"),V=require("./platform-CG_VHRJU.js"),pe=require("./contract-MJZ8ZoSX.js"),Ce=require("./unsignedTransaction-B7AZXsTD.js"),x=require("./platform-PNwsacZi.js"),be=require("./index-BeQ668oT.js"),ne=require("./address-CNhzoegm.js"),we=require("./unsignedTransaction-DzSLsK-p.js"),Ae=require("./index-B-S6avdv.js"),ye=require("./index-FCA-cXcS.js"),E=require("./web3-CjTx3huW.js"),X=require("./unsignedTransaction-DFUF8DSp.js"),xe=require("./account-QG_Hi4er.js"),z={Testnet:"https://executor-testnet.labsapis.com",Mainnet:"https://executor.labsapis.com"},U={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"}},J={Testnet:{executorId:"0x4000cfe2955d8355b3d3cf186f854fea9f787a457257056926fde1ec977670eb",executorRequestsId:"0x2d9ccf3cce3f7dce408e5455e90b80a8161ad9673d1366c2a5def60ad93657a8"},Mainnet:{executorId:"0xdb0fe8bb1e2b5be628adbea0636063325073e1070ee11e4281457dfd7f158235",executorRequestsId:"0xc030df7a3eed1494fa4b64aa8ab63a79041cf1114f4ff2b7ab5aca1c684a21a7"}},Ee={Testnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV",Mainnet:"execXUrAsMnqMmTHj5m7N1YQgsDz3cwGLYCYyuDRciV"},Se=5001n,ve={Testnet:{Aptos:5000n,Avalanche:200000n,BaseSepolia:200000n,Sepolia:200000n,Solana:250000n,Sui:8000000n},Mainnet:{Aptos:5000n,Arbitrum:400000n,Avalanche:250000n,Base:250000n,Ethereum:250000n,Optimism:250000n,Polygon:250000n,Unichain:250000n,Solana:250000n,Sui:8000000n}},Pe={Testnet:{Aptos:"0x23b54f6e29bba7f4123d088f4cfcd83f5e23a049de15895b119ce5a6cb5faa91",Avalanche:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",BaseSepolia:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",Sepolia:"0x8F26A0025dcCc6Cfc07A7d38756280a10E295ad7",Solana:"9r6q2iEg4MBevjC8reaLmQUDxueF3vabUoqDkZ2LoAYe",Sui:"0x30bd9b3d5ad00f38fd0c314139ba47ccb3c78353d99880d81125ca0c370b415e"},Mainnet:{Aptos:"0x1f177e724a874ab6267172a3049291c480fc665883e6a3ac95d0909492c09dc8",Solana:"JB3rmygUVuVZzgkxvMdV8mSKLJeQAkSXEK284Dqsziah",Sui:"0xbfa1240e48c622d97881473953be730091161b7931d89bd6afe667841cf69ef4",Arbitrum:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Avalanche:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Base:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Ethereum:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Optimism:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Polygon:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E",Unichain:"0xF11e0efF8b11Ce382645dd75352fC16b3aB3551E"}};var b;(function(e){e.Pending="pending",e.Failed="failed",e.Unsupported="unsupported",e.Submitted="submitted",e.Underpaid="underpaid",e.Aborted="aborted"})(b||(b={}));async function Fe(e){const a=`${z[e]}/v0/capabilities`;try{return(await s.axios.get(a)).data}catch{throw new Error(`Failed to fetch capabilities for network: ${e}.`)}}async function Ie(e,a,t,r){const n=`${z[e]}/v0/quote`;try{return(await s.axios.post(n,{srcChain:s.toChainId(a),dstChain:s.toChainId(t),relayInstructions:r})).data}catch{throw new Error("Failed to fetch signed quote.")}}async function H(e,a,t){const r=`${z[e]}/v0/status/tx`;try{return(await s.axios.post(r,{txHash:a,chainId:s.toChainId(t)})).data}catch{throw new Error(`Failed to fetch status for txHash: ${a}.`)}}const De=65535n;function Me(e,a){if(a>De)throw new Error("dBps exceeds max u16");if(a>0){const t=e*a/100000n,r=e-t;return{referrerFee:t,remainingAmount:r}}return{referrerFee:0n,remainingAmount:e}}function Be(e){return new Promise(a=>setTimeout(a,e))}const Te=[{name:"gasLimit",binary:"uint",size:16},{name:"msgValue",binary:"uint",size:16}],ze=[{name:"dropOff",binary:"uint",size:16},{name:"recipient",...s.universalAddressItem}],Ue=[{name:"request",binary:"switch",idSize:1,idTag:"type",layouts:[[[1,"GasInstruction"],Te],[[2,"GasDropOffInstruction"],ze]]}],Z=[{name:"requests",binary:"array",layout:Ue}];var Y;(function(e){e.ERM1="ERM1",e.ERV1="ERV1",e.ERN1="ERN1",e.ERC1="ERC1"})(Y||(Y={}));const $e={to:e=>new Date(Number(e*1000n)),from:e=>BigInt(e.getTime())/1000n},Re=[{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:$e},{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=[...Re,{name:"signature",binary:"bytes",size:65}];class ${constructor(a,t,r,n){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"usdcId");d(this,"shimContract");var c;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="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=U[a])==null?void 0:c[t];if(!o)throw new Error(`Shim contract for ${t} not found`);this.shimContract=o}static async fromRpc(a,t){const[r,n]=await he.AptosPlatform.chainFromRpc(a),i=t[n];if(!i)throw new Error(`No config found for ${n}`);if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new $(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new re.AptosAddress(a).unwrap(),i=j.l.from(t.address.toUniversalAddress().toUint8Array()),o=j.l.from(this.usdcId),c=r.remainingAmount+r.referrerFee,u=s.circleChainId.get(this.network,t.chain),f=n,l=n,g=[c,u,i.toString(),o.toString(),r.estimatedCost,s.toChainId(t.chain),f,r.signedQuote,r.relayInstructions,r.referrerFeeDbps,l],m={function:`${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,functionArguments:g};yield this.createUnsignedTx(m,"AtposCCTPExecutor.Transfer")}createUnsignedTx(a,t,r=!1){return new ge.AptosUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(re._platform,"CCTPExecutor",$);class R{constructor(a,t,r,n){d(this,"network");d(this,"chain");d(this,"provider");d(this,"contracts");d(this,"chainId");d(this,"shimContract");var o;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");this.chainId=s.networkChainToNativeChainId.get(a,t);const i=(o=U[a])==null?void 0:o[t];if(!i)throw new Error(`Shim contract for ${t} not found`);this.shimContract=i}static async fromRpc(a,t){const[r,n]=await V.EvmPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new R(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new s.EvmAddress(a).toString(),i=t.address.toUniversalAddress().toUint8Array(),o=r.remainingAmount+r.referrerFee,c=s.usdcContract.get(this.network,this.chain),u=V.EvmPlatform.getTokenImplementation(this.provider,c);if(await u.allowance(n,this.shimContract)<o){const p=await u.approve.populateTransaction(this.shimContract,o);yield this.createUnsignedTx(s.addFrom(p,n),"ERC20.approve of EvmCCTPExecutor",!1)}const l=["function depositForBurn(uint256 amount, uint16 destinationChain, uint32 destinationDomain, bytes32 mintRecipient, address burnToken, (address refundAddress, bytes signedQuote, bytes instructions) executorArgs, (uint16 dbps, address payee) feeArgs) external payable returns (uint64 nonce)"],m=await new pe.Contract(this.shimContract,l,this.provider).getFunction("depositForBurn").populateTransaction(o,s.toChainId(t.chain),s.circleChainId.get(this.network,t.chain),i,c,{refundAddress:n,signedQuote:r.signedQuote,instructions:r.relayInstructions},{dbps:r.referrerFeeDbps,payee:r.referrer.address.toString()});m.value=r.estimatedCost,yield this.createUnsignedTx(s.addFrom(m,n),"EvmCCTPExecutor.depositForBurn")}createUnsignedTx(a,t,r=!1){return new Ce.EvmUnsignedTransaction(s.addChainId(a,this.chainId),this.network,this.chain,t,r)}}P.registerProtocol(s._platform,"CCTPExecutor",R);class q{constructor(a,t,r,n){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 f,l,g,m;if(this.network=a,this.chain=t,this.provider=r,this.contracts=n,a==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(p,h)=>{if(!p)throw new Error(h);return p};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}=be.suiCircleObjects(a);this.usdcTreasuryId=u,this.tokenMessengerId=i((f=n.cctp)==null?void 0:f.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterId=i((l=n.cctp)==null?void 0:l.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.tokenMessengerStateId=o,this.messageTransmitterStateId=c,this.executorId=i((g=J[a])==null?void 0:g.executorId,`Executor contract for ${a} not found`),this.executorRequestsId=i((m=J[a])==null?void 0:m.executorRequestsId,`Executor requests contract for ${a} not found`)}static async fromRpc(a,t){const[r,n]=await x.SuiPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new q(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new x.Transaction,i=new ne.SuiAddress(a).unwrap(),o=s.circleChainId.get(this.network,t.chain),[c,...u]=await x.SuiPlatform.getCoins(this.provider,a,this.usdcId);if(c===void 0)throw new Error("No USDC in wallet");const f=n.object(c.coinObjectId);u.length>0&&n.mergeCoins(f,u.map(C=>n.object(C.coinObjectId)));let l;if(r.referrerFee>0n){const[C,y]=n.splitCoins(f,[r.remainingAmount,r.referrerFee]);l=C,n.transferObjects([y],s.canonicalAddress(r.referrer))}else{const[C]=n.splitCoins(f,[r.remainingAmount]);l=C}const[g,m]=n.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[l,n.pure.u32(o),n.pure.address(t.address.toUniversalAddress().toString()),n.object(this.tokenMessengerStateId),n.object(this.messageTransmitterStateId),n.object("0x403"),n.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),[p]=n.moveCall({target:`${this.messageTransmitterId}::message::source_domain`,arguments:[m]}),[h]=n.moveCall({target:`${this.messageTransmitterId}::message::nonce`,arguments:[m]}),[w]=n.moveCall({target:`${this.executorRequestsId}::executor_requests::make_cctp_v1_request`,arguments:[p,h]}),[A]=n.splitCoins(n.gas,[n.pure.u64(r.estimatedCost)]);n.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[A,n.object(x.SUI_CLOCK_OBJECT_ID),n.pure.u16(s.toChainId(t.chain)),n.pure.address("0x0"),n.pure.address(i),n.pure.vector("u8",r.signedQuote),w,n.pure.vector("u8",r.relayInstructions)]}),yield this.createUnsignedTx(n,"SuiCCTPExecutor.Transfer")}createUnsignedTx(a,t,r=!1){return new we.SuiUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(x._platform,"CCTPExecutor",q);const F=new s.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const _=new s.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s.PublicKey("So11111111111111111111111111111111111111112");new s.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class qe extends Error{constructor(a){super(a)}}class _e extends qe{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var T;(function(e){e[e.InitializeMint=0]="InitializeMint",e[e.InitializeAccount=1]="InitializeAccount",e[e.InitializeMultisig=2]="InitializeMultisig",e[e.Transfer=3]="Transfer",e[e.Approve=4]="Approve",e[e.Revoke=5]="Revoke",e[e.SetAuthority=6]="SetAuthority",e[e.MintTo=7]="MintTo",e[e.Burn=8]="Burn",e[e.CloseAccount=9]="CloseAccount",e[e.FreezeAccount=10]="FreezeAccount",e[e.ThawAccount=11]="ThawAccount",e[e.TransferChecked=12]="TransferChecked",e[e.ApproveChecked=13]="ApproveChecked",e[e.MintToChecked=14]="MintToChecked",e[e.BurnChecked=15]="BurnChecked",e[e.InitializeAccount2=16]="InitializeAccount2",e[e.SyncNative=17]="SyncNative",e[e.InitializeAccount3=18]="InitializeAccount3",e[e.InitializeMultisig2=19]="InitializeMultisig2",e[e.InitializeMint2=20]="InitializeMint2",e[e.GetAccountDataSize=21]="GetAccountDataSize",e[e.InitializeImmutableOwner=22]="InitializeImmutableOwner",e[e.AmountToUiAmount=23]="AmountToUiAmount",e[e.UiAmountToAmount=24]="UiAmountToAmount",e[e.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",e[e.TransferFeeExtension=26]="TransferFeeExtension",e[e.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",e[e.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",e[e.Reallocate=29]="Reallocate",e[e.MemoTransferExtension=30]="MemoTransferExtension",e[e.CreateNativeMint=31]="CreateNativeMint",e[e.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",e[e.InterestBearingMintExtension=33]="InterestBearingMintExtension",e[e.CpiGuardExtension=34]="CpiGuardExtension",e[e.InitializePermanentDelegate=35]="InitializePermanentDelegate",e[e.TransferHookExtension=36]="TransferHookExtension",e[e.MetadataPointerExtension=39]="MetadataPointerExtension"})(T||(T={}));function Ne(e,a,t){if(t.length){e.push({pubkey:a,isSigner:!1,isWritable:!1});for(const r of t)e.push({pubkey:r instanceof s.PublicKey?r:r.publicKey,isSigner:!0,isWritable:!1})}else e.push({pubkey:a,isSigner:!0,isWritable:!1});return e}const ke=s.struct([s.u32("mintAuthorityOption"),E.publicKey("mintAuthority"),E.u64("supply"),s.u8("decimals"),E.bool("isInitialized"),s.u32("freezeAuthorityOption"),E.publicKey("freezeAuthority")]);ke.span;function ee(e,a,t=!1,r=F,n=_){if(!t&&!s.PublicKey.isOnCurve(a.toBuffer()))throw new _e;const[i]=s.PublicKey.findProgramAddressSync([a.toBuffer(),r.toBuffer(),e.toBuffer()],n);return i}function Oe(e,a,t,r,n=F,i=_){return Ge(e,a,t,r,s.dist.Buffer.from([1]),n,i)}function Ge(e,a,t,r,n,i=F,o=_){const c=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:r,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:n})}const te=s.struct([s.u8("instruction"),E.u64("amount")]);function Le(e,a,t,r,n=[],i=F){const o=Ne([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0}],t,n),c=s.dist.Buffer.alloc(te.span);return te.encode({instruction:T.Transfer,amount:BigInt(r)},c),new s.TransactionInstruction({keys:o,programId:i,data:c})}const Qe={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 N{constructor(a,t,r,n){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=a,this.chain=t,this.connection=r,this.contracts=n,a==="Devnet")throw new Error("CCTPExecutor not supported on Devnet");const i=(f,l)=>{if(!f)throw new Error(l);return new s.PublicKey(f)};this.tokenMessengerProgramId=i((o=n.cctp)==null?void 0:o.tokenMessenger,`Circle Token Messenger contract for domain ${t} not found`),this.messageTransmitterProgramId=i((c=n.cctp)==null?void 0:c.messageTransmitter,`Circle Message Transmitter contract for domain ${t} not found`),this.shimProgramId=i((u=U[a])==null?void 0:u[t],`Shim contract for ${t} not found`),this.executorProgramId=i(Ee[a],`Executor contract for ${a} not found`)}static async fromRpc(a,t){const[r,n]=await X.SolanaPlatform.chainFromRpc(a),i=t[n];if(i.network!==r)throw new Error(`Network mismatch: ${i.network} != ${r}`);return new N(r,n,a,i.contracts)}async*transfer(a,t,r){const n=new s.PublicKey(s.usdcContract.get(this.network,this.chain)),i=new s.SolanaAddress(a).unwrap(),o=ee(n,i),c=new s.SolanaAddress(r.referrer.address).unwrap(),u=new s.Transaction;if(u.feePayer=i,r.referrerFee>0n){const w=ee(n,c);await this.connection.getAccountInfo(w)||u.add(Oe(i,w,c,n)),u.add(Le(o,w,i,r.referrerFee))}const f=s.circleChainId.get(this.network,t.chain),l=t.address.toUniversalAddress(),g=s.Keypair.generate();u.add(await Ae.createDepositForBurnInstruction(this.messageTransmitterProgramId,this.tokenMessengerProgramId,n,f,i,o,l,r.remainingAmount,g.publicKey));const m=new ye.Program(Qe,this.shimProgramId,{connection:null}),p=s.deserialize$1(se,r.signedQuote),h=xe.deriveAddress("message_transmitter",this.messageTransmitterProgramId);u.add(await m.methods.relayLastMessage({execAmount:new s.BN(r.estimatedCost.toString()),recipientChain:s.toChainId(t.chain),signedQuoteBytes:s.dist.Buffer.from(r.signedQuote),relayInstructions:s.dist.Buffer.from(r.relayInstructions)}).accounts({payer:i,messageTransmitter:h,payee:new s.PublicKey(p.quote.payeeAddress),executorProgram:this.executorProgramId}).instruction()),yield this.createUnsignedTx({transaction:u,signers:[g]},"SvmCCTPExecutor.Transfer")}createUnsignedTx(a,t,r=!1){return new X.SolanaUnsignedTransaction(a,this.network,this.chain,t,r)}}P.registerProtocol(s._platform$1,"CCTPExecutor",N);let S;function We(e){if(e.referrerFeeDbps<0||e.referrerFeeDbps>65535n)throw new Error("Referrer fee must be between 0 and 65535");class a extends v{}return d(a,"config",e),a}class v extends s.AutomaticRoute{constructor(){super(...arguments);d(this,"staticConfig",this.constructor.config)}static supportedNetworks(){return["Mainnet","Testnet"]}static supportedChains(t){return s.circleContractChains.has(t)?s.circleContractChains.get(t):[]}static async supportedDestinationTokens(t,r,n){const i=s.usdcContract.get(r.network,r.chain);if(!(i&&s.isSameToken(t,s.Wormhole.tokenId(r.chain,i))))return[];const{network:o,chain:c}=n;return s.usdcContract.has(o,c)?[s.Wormhole.chainAddress(c,s.usdcContract.get(o,c))]:[]}getDefaultOptions(){return{nativeGas:0}}async validate(t,r){var i;return(i=r.options)!=null&&i.nativeGas&&(r.options.nativeGas<0||r.options.nativeGas>1)?{valid:!1,error:new Error("Invalid native gas percentage"),params:r}:{valid:!0,params:{normalizedParams:{amount:t.parseAmount(r.amount)},options:r.options??this.getDefaultOptions(),...r}}}async quote(t,r){var Q,W;const{fromChain:n,toChain:i}=t;if(!s.usdcContract.get(n.network,n.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");const u=(Q=Pe[n.network])==null?void 0:Q[n.chain];if(!u)return{success:!1,error:new Error("No referrer address found")};const f=s.Wormhole.chainAddress(n.chain,u),l=this.staticConfig.referrerFeeDbps,{referrerFee:g,remainingAmount:m}=Me(s.units(r.normalizedParams.amount),this.staticConfig.referrerFeeDbps);if(m<=0n)return{success:!1,error:new Error("Amount after fee <= 0")};const p=(W=ve[n.network])==null?void 0:W[i.chain];if(!p)return{success:!1,error:new Error("Gas limit not found")};const h=await Fe(n.network);if(!h[s.toChainId(n.chain)])return{success:!1,error:new Error("Unsupported source chain")};const A=h[s.toChainId(i.chain)];if(!A||!A.requestPrefixes.includes("ERC1"))return{success:!1,error:new Error("Unsupported destination chain")};const{recipient:C}=t;let y=!0;if(C&&i.chain==="Solana"){const ue=s.Wormhole.parseAddress("Solana",c),fe=await i.getTokenAccount(C.address,ue),K=await i.getRpc();y=await K.getAccountInfo(new s.SolanaAddress(fe.address).unwrap())!==null,!y&&!S&&(S=BigInt(await K.getMinimumBalanceForRentExemption(165)))}let I=0n;i.chain==="Solana"&&(I+=Se,!y&&S&&(I+=S));const D=[];D.push({request:{type:"GasInstruction",gasLimit:p,msgValue:I}});const k=BigInt(A.gasDropOffLimit),M=r.options.nativeGas&&k>0n?BigInt(Math.round(r.options.nativeGas*100))*k/100n:0n;(M>0n||!y)&&D.push({request:{type:"GasDropOffInstruction",dropOff:M,recipient:C?C.address.toUniversalAddress():new s.UniversalAddress(new Uint8Array(32))}});const O=s.serialize$1(Z,{requests:D}),B=await Ie(n.network,n.chain,i.chain,s.hex.encode(O,!0));if(!B.estimatedCost)return{success:!1,error:new Error("No estimated cost")};const G=s.hex.decode(B.signedQuote),ae=s.deserialize$1(se,G),ie=n.chain==="Polygon"?2e3*200:s.estimateFinalityTime(n.chain)+1e3,L=BigInt(B.estimatedCost),oe={signedQuote:G,relayInstructions:O,estimatedCost:L,referrer:f,referrerFee:g,remainingAmount:m,referrerFeeDbps:l},[ce,de]=await Promise.all([n.getDecimals("native"),i.getDecimals("native")]);return{success:!0,params:r,sourceToken:{token:t.source.id,amount:r.normalizedParams.amount},destinationToken:{token:t.destination.id,amount:s.fromBaseUnits(m,t.destination.decimals)},relayFee:{token:s.nativeTokenId(n.chain),amount:s.fromBaseUnits(L,ce)},destinationNativeGas:s.fromBaseUnits(M,de),eta:ie,expires:ae.quote.expiryTime,details:oe}}async initiate(t,r,n,i){if(!n.details)throw new Error("Missing quote details");s.deserialize$1(Z,n.details.relayInstructions).requests.forEach(({request:h})=>{if(h.type==="GasDropOffInstruction"&&!h.recipient.equals(i.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const c=await t.fromChain.getProtocol("CCTPExecutor"),u=s.Wormhole.parseAddress(r.chain(),r.address());let f=i;if(i.chain==="Solana"){const h=s.Wormhole.parseAddress("Solana",s.usdcContract.get(t.toChain.network,t.toChain.chain));f=await t.toChain.getTokenAccount(i.address,h)}const l=await c.transfer(u,f,n.details),g=await s.signSendWait(t.fromChain,l,r);let m=0;return(async()=>{for(;m<20;){try{const[h]=await H(this.wh.network,g.at(-1).txid,t.fromChain.chain);if(h)break}catch{}m++,await Be(2e3)}})(),{from:t.fromChain.chain,to:t.toChain.chain,state:s.TransferState.SourceInitiated,originTxs:g}}async*track(t,r){if(s.isCompleted(t)||s.isFailed(t))return t;let n=r||60*60*1e3;for(;n>0;){const i=Date.now();if(s.isSourceInitiated(t)||s.isSourceFinalized(t)||s.isAttested(t))try{const[o]=await H(this.wh.network,t.originTxs.at(-1).txid,t.from);if(!o)throw new Error("No transaction status found");const c=o==null?void 0:o.status;if((c===b.Failed||c===b.Underpaid||c===b.Unsupported||c===b.Aborted)&&(t={...t,state:s.TransferState.Failed,error:new ne.RelayFailedError(`Relay failed with status: ${c}`)}),c===b.Submitted&&(t={...t,state:s.TransferState.DestinationFinalized,attestation:{id:o.id,attestation:{}}}),yield t,s.isCompleted(t)||s.isFailed(t))return t}catch(o){console.error(`Error fetching transaction status: ${o.message||o}`)}await new Promise(o=>setTimeout(o,3e3)),n-=Date.now()-i}return t}}d(v,"NATIVE_GAS_DROPOFF_SUPPORTED",!0),d(v,"config",{referrerFeeDbps:0n}),d(v,"meta",{name:"CCTPExecutorRoute",provider:"Circle"});exports.cctpExecutorRoute=We;
|
package/lib/executor.mjs
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
var Me = Object.defineProperty;
|
|
2
2
|
var Ie = (e, n, t) => n in e ? Me(e, n, { enumerable: !0, configurable: !0, writable: !0, value: t }) : e[n] = t;
|
|
3
3
|
var c = (e, n, t) => Ie(e, typeof n != "symbol" ? n + "" : n, t);
|
|
4
|
-
import { az as O, aP as C, aJ as Be, E as w, b4 as P, aF as ze, aR as Te, aU as te, aV as Ue, aW as Re, v as _e, ae as p, ar as be, aG as re, au as we, d as D, an as Ne, as as Ce, b1 as N, b2 as $e, ao as ke, a_ as $, aX as Oe, b3 as
|
|
4
|
+
import { az as O, aP as C, aJ as Be, E as w, b4 as P, aF as ze, aR as Te, aU as te, aV as Ue, aW as Re, v as _e, ae as p, ar as be, aG as re, au as we, d as D, an as Ne, as as Ce, b1 as N, b2 as $e, ao as ke, a_ as $, aX as Oe, b3 as Ge, A as Le, D as se, F as Qe, W as S, u as qe, _ as We, aN as je, a3 as ne, y as Ve, f as R, af as Ke, z as Xe, T as _, i as ae, aj as ie, B as Je, C as He, e as Ze } from "./address-CBux52Na.mjs";
|
|
5
5
|
import { r as M } from "./chain-sKZNJgPZ.mjs";
|
|
6
6
|
import { l as oe } from "./chunk-IMTC3J2M-DKLPKqnP.mjs";
|
|
7
7
|
import { A as Ye } from "./platform-Czq0KkFa.mjs";
|
|
@@ -19,10 +19,10 @@ import { P as ht } from "./index-DRleG63r.mjs";
|
|
|
19
19
|
import { p as ue, u as Ae, b as lt } from "./web3-B3Usc-Qj.mjs";
|
|
20
20
|
import { a as gt, S as pt } from "./unsignedTransaction-C0WXQMmv.mjs";
|
|
21
21
|
import { d as bt } from "./account-BK8xMTUI.mjs";
|
|
22
|
-
const
|
|
22
|
+
const G = {
|
|
23
23
|
Testnet: "https://executor-testnet.labsapis.com",
|
|
24
24
|
Mainnet: "https://executor.labsapis.com"
|
|
25
|
-
},
|
|
25
|
+
}, L = {
|
|
26
26
|
Testnet: {
|
|
27
27
|
Aptos: "0x14a12d1fd6ef371b70c2113155534ec152ec7f779e281b54866c796c9a4a58d3",
|
|
28
28
|
Avalanche: "0x2cfEC91B50f657Cc86Ec693542527ac3e03bF742",
|
|
@@ -101,7 +101,7 @@ var A;
|
|
|
101
101
|
e.Pending = "pending", e.Failed = "failed", e.Unsupported = "unsupported", e.Submitted = "submitted", e.Underpaid = "underpaid", e.Aborted = "aborted";
|
|
102
102
|
})(A || (A = {}));
|
|
103
103
|
async function xt(e) {
|
|
104
|
-
const n = `${
|
|
104
|
+
const n = `${G[e]}/v0/capabilities`;
|
|
105
105
|
try {
|
|
106
106
|
return (await O.get(n)).data;
|
|
107
107
|
} catch {
|
|
@@ -109,7 +109,7 @@ async function xt(e) {
|
|
|
109
109
|
}
|
|
110
110
|
}
|
|
111
111
|
async function Et(e, n, t, r) {
|
|
112
|
-
const s = `${
|
|
112
|
+
const s = `${G[e]}/v0/quote`;
|
|
113
113
|
try {
|
|
114
114
|
return (await O.post(s, {
|
|
115
115
|
srcChain: C(n),
|
|
@@ -121,7 +121,7 @@ async function Et(e, n, t, r) {
|
|
|
121
121
|
}
|
|
122
122
|
}
|
|
123
123
|
async function me(e, n, t) {
|
|
124
|
-
const r = `${
|
|
124
|
+
const r = `${G[e]}/v0/status/tx`;
|
|
125
125
|
try {
|
|
126
126
|
return (await O.post(r, {
|
|
127
127
|
txHash: n,
|
|
@@ -215,7 +215,7 @@ const It = {
|
|
|
215
215
|
...Bt,
|
|
216
216
|
{ name: "signature", binary: "bytes", size: 65 }
|
|
217
217
|
];
|
|
218
|
-
class
|
|
218
|
+
class Q {
|
|
219
219
|
constructor(n, t, r, s) {
|
|
220
220
|
c(this, "network");
|
|
221
221
|
c(this, "chain");
|
|
@@ -225,12 +225,12 @@ class L {
|
|
|
225
225
|
c(this, "shimContract");
|
|
226
226
|
var o;
|
|
227
227
|
if (this.network = n, this.chain = t, this.provider = r, this.contracts = s, n === "Devnet")
|
|
228
|
-
throw new Error("
|
|
228
|
+
throw new Error("CCTPExecutor not supported on Devnet");
|
|
229
229
|
const a = w.get(this.network, this.chain);
|
|
230
230
|
if (!a)
|
|
231
231
|
throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);
|
|
232
232
|
this.usdcId = a;
|
|
233
|
-
const i = (o =
|
|
233
|
+
const i = (o = L[n]) == null ? void 0 : o[t];
|
|
234
234
|
if (!i)
|
|
235
235
|
throw new Error(`Shim contract for ${t} not found`);
|
|
236
236
|
this.shimContract = i;
|
|
@@ -241,7 +241,7 @@ class L {
|
|
|
241
241
|
throw new Error(`No config found for ${s}`);
|
|
242
242
|
if (a.network !== r)
|
|
243
243
|
throw new Error(`Network mismatch: ${a.network} != ${r}`);
|
|
244
|
-
return new
|
|
244
|
+
return new Q(r, s, n, a.contracts);
|
|
245
245
|
}
|
|
246
246
|
async *transfer(n, t, r) {
|
|
247
247
|
const s = new et(n).unwrap(), a = oe.from(t.address.toUniversalAddress().toUint8Array()), i = oe.from(this.usdcId), o = r.remainingAmount + r.referrerFee, d = P.get(this.network, t.chain), u = s, m = s, l = [
|
|
@@ -260,14 +260,14 @@ class L {
|
|
|
260
260
|
function: `${this.shimContract}::cctp_v1_with_executor::deposit_for_burn_entry`,
|
|
261
261
|
functionArguments: l
|
|
262
262
|
};
|
|
263
|
-
yield this.createUnsignedTx(f, "
|
|
263
|
+
yield this.createUnsignedTx(f, "AtposCCTPExecutor.Transfer");
|
|
264
264
|
}
|
|
265
265
|
createUnsignedTx(n, t, r = !1) {
|
|
266
266
|
return new rt(n, this.network, this.chain, t, r);
|
|
267
267
|
}
|
|
268
268
|
}
|
|
269
|
-
M(tt, "
|
|
270
|
-
class
|
|
269
|
+
M(tt, "CCTPExecutor", Q);
|
|
270
|
+
class q {
|
|
271
271
|
constructor(n, t, r, s) {
|
|
272
272
|
c(this, "network");
|
|
273
273
|
c(this, "chain");
|
|
@@ -277,9 +277,9 @@ class Q {
|
|
|
277
277
|
c(this, "shimContract");
|
|
278
278
|
var i;
|
|
279
279
|
if (this.network = n, this.chain = t, this.provider = r, this.contracts = s, n === "Devnet")
|
|
280
|
-
throw new Error("
|
|
280
|
+
throw new Error("CCTPExecutor not supported on Devnet");
|
|
281
281
|
this.chainId = ze.get(n, t);
|
|
282
|
-
const a = (i =
|
|
282
|
+
const a = (i = L[n]) == null ? void 0 : i[t];
|
|
283
283
|
if (!a)
|
|
284
284
|
throw new Error(`Shim contract for ${t} not found`);
|
|
285
285
|
this.shimContract = a;
|
|
@@ -288,13 +288,13 @@ class Q {
|
|
|
288
288
|
const [r, s] = await ce.chainFromRpc(n), a = t[s];
|
|
289
289
|
if (a.network !== r)
|
|
290
290
|
throw new Error(`Network mismatch: ${a.network} != ${r}`);
|
|
291
|
-
return new
|
|
291
|
+
return new q(r, s, n, a.contracts);
|
|
292
292
|
}
|
|
293
293
|
async *transfer(n, t, r) {
|
|
294
294
|
const s = new Te(n).toString(), a = t.address.toUniversalAddress().toUint8Array(), i = r.remainingAmount + r.referrerFee, o = w.get(this.network, this.chain), d = ce.getTokenImplementation(this.provider, o);
|
|
295
295
|
if (await d.allowance(s, this.shimContract) < i) {
|
|
296
296
|
const g = await d.approve.populateTransaction(this.shimContract, i);
|
|
297
|
-
yield this.createUnsignedTx(te(g, s), "ERC20.approve of
|
|
297
|
+
yield this.createUnsignedTx(te(g, s), "ERC20.approve of EvmCCTPExecutor", !1);
|
|
298
298
|
}
|
|
299
299
|
const m = [
|
|
300
300
|
"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)"
|
|
@@ -306,14 +306,14 @@ class Q {
|
|
|
306
306
|
dbps: r.referrerFeeDbps,
|
|
307
307
|
payee: r.referrer.address.toString()
|
|
308
308
|
});
|
|
309
|
-
f.value = r.estimatedCost, yield this.createUnsignedTx(te(f, s), "
|
|
309
|
+
f.value = r.estimatedCost, yield this.createUnsignedTx(te(f, s), "EvmCCTPExecutor.depositForBurn");
|
|
310
310
|
}
|
|
311
311
|
createUnsignedTx(n, t, r = !1) {
|
|
312
312
|
return new nt(Ue(n, this.chainId), this.network, this.chain, t, r);
|
|
313
313
|
}
|
|
314
314
|
}
|
|
315
|
-
M(Re, "
|
|
316
|
-
class
|
|
315
|
+
M(Re, "CCTPExecutor", q);
|
|
316
|
+
class W {
|
|
317
317
|
constructor(n, t, r, s) {
|
|
318
318
|
c(this, "network");
|
|
319
319
|
c(this, "chain");
|
|
@@ -329,7 +329,7 @@ class q {
|
|
|
329
329
|
c(this, "executorRequestsId");
|
|
330
330
|
var u, m, l, f;
|
|
331
331
|
if (this.network = n, this.chain = t, this.provider = r, this.contracts = s, n === "Devnet")
|
|
332
|
-
throw new Error("
|
|
332
|
+
throw new Error("CCTPExecutor not supported on Devnet");
|
|
333
333
|
const a = (g, h) => {
|
|
334
334
|
if (!g)
|
|
335
335
|
throw new Error(h);
|
|
@@ -343,7 +343,7 @@ class q {
|
|
|
343
343
|
const [r, s] = await de.chainFromRpc(n), a = t[s];
|
|
344
344
|
if (a.network !== r)
|
|
345
345
|
throw new Error(`Network mismatch: ${a.network} != ${r}`);
|
|
346
|
-
return new
|
|
346
|
+
return new W(r, s, n, a.contracts);
|
|
347
347
|
}
|
|
348
348
|
async *transfer(n, t, r) {
|
|
349
349
|
const s = new at(), a = new dt(n).unwrap(), i = P.get(this.network, t.chain), [o, ...d] = await de.getCoins(this.provider, n, this.usdcId);
|
|
@@ -406,13 +406,13 @@ class q {
|
|
|
406
406
|
y,
|
|
407
407
|
s.pure.vector("u8", r.relayInstructions)
|
|
408
408
|
]
|
|
409
|
-
}), yield this.createUnsignedTx(s, "
|
|
409
|
+
}), yield this.createUnsignedTx(s, "SuiCCTPExecutor.Transfer");
|
|
410
410
|
}
|
|
411
411
|
createUnsignedTx(n, t, r = !1) {
|
|
412
412
|
return new ft(n, this.network, this.chain, t, r);
|
|
413
413
|
}
|
|
414
414
|
}
|
|
415
|
-
M(ot, "
|
|
415
|
+
M(ot, "CCTPExecutor", W);
|
|
416
416
|
const I = new p("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");
|
|
417
417
|
new p("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");
|
|
418
418
|
const j = new p("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");
|
|
@@ -572,13 +572,13 @@ class V {
|
|
|
572
572
|
c(this, "executorProgramId");
|
|
573
573
|
var i, o, d;
|
|
574
574
|
if (this.network = n, this.chain = t, this.connection = r, this.contracts = s, n === "Devnet")
|
|
575
|
-
throw new Error("
|
|
575
|
+
throw new Error("CCTPExecutor not supported on Devnet");
|
|
576
576
|
const a = (u, m) => {
|
|
577
577
|
if (!u)
|
|
578
578
|
throw new Error(m);
|
|
579
579
|
return new p(u);
|
|
580
580
|
};
|
|
581
|
-
this.tokenMessengerProgramId = a((i = s.cctp) == null ? void 0 : i.tokenMessenger, `Circle Token Messenger contract for domain ${t} not found`), this.messageTransmitterProgramId = a((o = s.cctp) == null ? void 0 : o.messageTransmitter, `Circle Message Transmitter contract for domain ${t} not found`), this.shimProgramId = a((d =
|
|
581
|
+
this.tokenMessengerProgramId = a((i = s.cctp) == null ? void 0 : i.tokenMessenger, `Circle Token Messenger contract for domain ${t} not found`), this.messageTransmitterProgramId = a((o = s.cctp) == null ? void 0 : o.messageTransmitter, `Circle Message Transmitter contract for domain ${t} not found`), this.shimProgramId = a((d = L[n]) == null ? void 0 : d[t], `Shim contract for ${t} not found`), this.executorProgramId = a(wt[n], `Executor contract for ${n} not found`);
|
|
582
582
|
}
|
|
583
583
|
static async fromRpc(n, t) {
|
|
584
584
|
const [r, s] = await gt.chainFromRpc(n), a = t[s];
|
|
@@ -605,13 +605,13 @@ class V {
|
|
|
605
605
|
messageTransmitter: h,
|
|
606
606
|
payee: new p(g.quote.payeeAddress),
|
|
607
607
|
executorProgram: this.executorProgramId
|
|
608
|
-
}).instruction()), yield this.createUnsignedTx({ transaction: d, signers: [l] }, "
|
|
608
|
+
}).instruction()), yield this.createUnsignedTx({ transaction: d, signers: [l] }, "SvmCCTPExecutor.Transfer");
|
|
609
609
|
}
|
|
610
610
|
createUnsignedTx(n, t, r = !1) {
|
|
611
611
|
return new pt(n, this.network, this.chain, t, r);
|
|
612
612
|
}
|
|
613
613
|
}
|
|
614
|
-
M(
|
|
614
|
+
M(Ge, "CCTPExecutor", V);
|
|
615
615
|
let v;
|
|
616
616
|
function ir(e) {
|
|
617
617
|
if (e.referrerFeeDbps < 0 || e.referrerFeeDbps > 65535n)
|
|
@@ -620,12 +620,12 @@ function ir(e) {
|
|
|
620
620
|
}
|
|
621
621
|
return c(n, "config", e), n;
|
|
622
622
|
}
|
|
623
|
-
class F extends
|
|
623
|
+
class F extends Le {
|
|
624
624
|
constructor() {
|
|
625
625
|
super(...arguments);
|
|
626
626
|
// @ts-ignore
|
|
627
627
|
// Since we set the config on the static class, access it with this param
|
|
628
|
-
// the
|
|
628
|
+
// the CCTPExecutorRoute.config will always be empty
|
|
629
629
|
c(this, "staticConfig", this.constructor.config);
|
|
630
630
|
}
|
|
631
631
|
static supportedNetworks() {
|
|
@@ -636,7 +636,7 @@ class F extends Ge {
|
|
|
636
636
|
}
|
|
637
637
|
static async supportedDestinationTokens(t, r, s) {
|
|
638
638
|
const a = w.get(r.network, r.chain);
|
|
639
|
-
if (!(a &&
|
|
639
|
+
if (!(a && Qe(t, S.tokenId(r.chain, a))))
|
|
640
640
|
return [];
|
|
641
641
|
const { network: i, chain: o } = s;
|
|
642
642
|
return w.has(i, o) ? [
|
|
@@ -676,7 +676,7 @@ class F extends Ge {
|
|
|
676
676
|
success: !1,
|
|
677
677
|
error: new Error("No referrer address found")
|
|
678
678
|
};
|
|
679
|
-
const u = S.chainAddress(s.chain, d), m = this.staticConfig.referrerFeeDbps, { referrerFee: l, remainingAmount: f } = vt(
|
|
679
|
+
const u = S.chainAddress(s.chain, d), m = this.staticConfig.referrerFeeDbps, { referrerFee: l, remainingAmount: f } = vt(qe(r.normalizedParams.amount), this.staticConfig.referrerFeeDbps);
|
|
680
680
|
if (f <= 0n)
|
|
681
681
|
return {
|
|
682
682
|
success: !1,
|
|
@@ -724,7 +724,7 @@ class F extends Ge {
|
|
|
724
724
|
// If the recipient is undefined (e.g. the user hasn’t connected their wallet yet),
|
|
725
725
|
// we temporarily use a dummy address to fetch a quote.
|
|
726
726
|
// The recipient address is validated later in the `initiate` method, which will throw if it's still missing.
|
|
727
|
-
recipient: b ? b.address.toUniversalAddress() : new
|
|
727
|
+
recipient: b ? b.address.toUniversalAddress() : new We(new Uint8Array(32))
|
|
728
728
|
}
|
|
729
729
|
});
|
|
730
730
|
const X = je(he, {
|
|
@@ -775,7 +775,7 @@ class F extends Ge {
|
|
|
775
775
|
if (h.type === "GasDropOffInstruction" && !h.recipient.equals(a.address.toUniversalAddress()))
|
|
776
776
|
throw new Error("Gas drop-off recipient does not match");
|
|
777
777
|
});
|
|
778
|
-
const o = await t.fromChain.getProtocol("
|
|
778
|
+
const o = await t.fromChain.getProtocol("CCTPExecutor"), d = S.parseAddress(r.chain(), r.address());
|
|
779
779
|
let u = a;
|
|
780
780
|
if (a.chain === "Solana") {
|
|
781
781
|
const h = S.parseAddress("Solana", w.get(t.toChain.network, t.toChain.chain));
|
|
@@ -834,9 +834,9 @@ class F extends Ge {
|
|
|
834
834
|
}
|
|
835
835
|
}
|
|
836
836
|
c(F, "NATIVE_GAS_DROPOFF_SUPPORTED", !0), c(F, "config", { referrerFeeDbps: 0n }), c(F, "meta", {
|
|
837
|
-
name: "
|
|
838
|
-
provider: "
|
|
837
|
+
name: "CCTPExecutorRoute",
|
|
838
|
+
provider: "Circle"
|
|
839
839
|
});
|
|
840
840
|
export {
|
|
841
|
-
ir as
|
|
841
|
+
ir as cctpExecutorRoute
|
|
842
842
|
};
|
package/lib/hosted.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./constants-
|
|
1
|
+
"use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const s=require("./constants-Bmrui4ZY.js");function d(o,e={}){window.__CONNECT_CONFIG=e.config,window.__CONNECT_THEME=e.theme;const n=document.createElement("div");n.id="wormhole-connect";const c=e.version??s.CONNECT_VERSION,i=e.cdnBaseUrl??`https://cdn.jsdelivr.net/npm/@wormhole-foundation/wormhole-connect@${c}`,t=document.createElement("script");t.setAttribute("src",`${i}/dist/main.js`),t.setAttribute("type","module"),o.appendChild(n),o.appendChild(t)}exports.wormholeConnectHosted=d;
|
package/lib/hosted.mjs
CHANGED