@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.
Files changed (50) hide show
  1. package/dist/main.js +47 -47
  2. package/dist/src/exports/executor.d.ts +1 -1
  3. package/dist/src/exports/executor.d.ts.map +1 -1
  4. package/dist/src/hooks/useComputeDestinationTokens.d.ts.map +1 -1
  5. package/dist/src/utils/sdkv2.d.ts +1 -1
  6. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  7. package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  8. package/dist/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  9. package/lib/{aptos-DdLaZAbX.mjs → aptos-9aq-5gkF.mjs} +1 -1
  10. package/lib/{aptos-B9U6O-dl.js → aptos-XxKO9242.js} +1 -1
  11. package/lib/{ccip-DZPSxGo-.mjs → ccip-CUqskd5M.mjs} +1 -1
  12. package/lib/{ccip-Wh0YfVvY.js → ccip-oytFtCzk.js} +1 -1
  13. package/lib/constants-Bmrui4ZY.js +1 -0
  14. package/lib/{constants-BpnA30ER.mjs → constants-DrDsewBe.mjs} +3 -3
  15. package/lib/{evm-CgF7zwuT.js → evm-D_r84vhS.js} +3 -3
  16. package/lib/{evm-BfosdVcf.mjs → evm-IjnSHeSg.mjs} +4 -4
  17. package/lib/executor.js +1 -1
  18. package/lib/executor.mjs +37 -37
  19. package/lib/hosted.js +1 -1
  20. package/lib/hosted.mjs +1 -1
  21. package/lib/{index-DgerPSSh.js → index-43m4zMem.js} +1 -1
  22. package/lib/{index-BMxhTd-v.js → index-BcAXCy1h.js} +1 -1
  23. package/lib/index-CIhJm6vf.js +355 -0
  24. package/lib/{index-C-_xpVRa.mjs → index-Ce0EI1tW.mjs} +1 -1
  25. package/lib/{index-D8AYsaEU.mjs → index-CuDLHfKb.mjs} +1 -1
  26. package/lib/{index-BjaIqtyy.mjs → index-Cyo0tNu5.mjs} +1 -1
  27. package/lib/{index-ByaMu-qS.mjs → index-DDBdrN7Y.mjs} +21897 -21940
  28. package/lib/{index-IyP4Vr-d.js → index-Dt-63Ecw.js} +1 -1
  29. package/lib/{index.es-DlSoduAW.mjs → index.es-C6ziEcYX.mjs} +2 -2
  30. package/lib/{index.es-DRN2pshI.js → index.es-MXzok_Dp.js} +1 -1
  31. package/lib/index.js +1 -1
  32. package/lib/index.mjs +1 -1
  33. package/lib/{solana-33GlUplS.mjs → solana-CE7DDmW7.mjs} +3 -3
  34. package/lib/{solana-Bbay1OHx.js → solana-iU2xZ6yu.js} +1 -1
  35. package/lib/{solanaEmbed.esm-baNcElxT.mjs → solanaEmbed.esm-BtaI5pum.mjs} +2 -2
  36. package/lib/{solanaEmbed.esm-Du3QS4H_.js → solanaEmbed.esm-DUsdVcC-.js} +1 -1
  37. package/lib/src/exports/executor.d.ts +1 -1
  38. package/lib/src/exports/executor.d.ts.map +1 -1
  39. package/lib/src/hooks/useComputeDestinationTokens.d.ts.map +1 -1
  40. package/lib/src/utils/sdkv2.d.ts +1 -1
  41. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  42. package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
  43. package/lib/src/views/v2/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  44. package/lib/{sui-D0FrnfOj.mjs → sui-BIE_b_7o.mjs} +1 -1
  45. package/lib/{sui-Crq4-j1d.js → sui-CNPKXqM6.js} +1 -1
  46. package/lib/{tokens-CF4wGtlH.mjs → tokens-CQnhplD_.mjs} +2 -2
  47. package/lib/{tokens-Cz8rSlKv.js → tokens-D4usSvOD.js} +1 -1
  48. package/package.json +2 -2
  49. package/lib/constants-Ricf667V.js +0 -1
  50. 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-ByaMu-qS.mjs";
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-DZPSxGo-.mjs");
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-D8AYsaEU.mjs")]) : [3, 2];
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-DlSoduAW.mjs"), t = this.chains.map(({ id: r }) => r);
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 We, A as Ge, D as se, F as Le, W as S, u as Qe, _ as qe, 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";
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 W = {
22
+ const G = {
23
23
  Testnet: "https://executor-testnet.labsapis.com",
24
24
  Mainnet: "https://executor.labsapis.com"
25
- }, G = {
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 = `${W[e]}/v0/capabilities`;
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 = `${W[e]}/v0/quote`;
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 = `${W[e]}/v0/status/tx`;
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 L {
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("CCTPW7Executor not supported on Devnet");
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 = G[n]) == null ? void 0 : o[t];
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 L(r, s, n, a.contracts);
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, "AtposCCTPW7Executor.Transfer");
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, "CCTPW7Executor", L);
270
- class Q {
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("CCTPW7Executor not supported on Devnet");
280
+ throw new Error("CCTPExecutor not supported on Devnet");
281
281
  this.chainId = ze.get(n, t);
282
- const a = (i = G[n]) == null ? void 0 : i[t];
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 Q(r, s, n, a.contracts);
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 EvmCCTPW7Executor", !1);
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), "EvmCCTPW7Executor.depositForBurn");
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, "CCTPW7Executor", Q);
316
- class q {
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("CCTPW7Executor not supported on Devnet");
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 q(r, s, n, a.contracts);
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, "SuiCCTPW7Executor.Transfer");
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, "CCTPW7Executor", q);
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("CCTPW7Executor not supported on Devnet");
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 = G[n]) == null ? void 0 : d[t], `Shim contract for ${t} not found`), this.executorProgramId = a(wt[n], `Executor contract for ${n} not found`);
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] }, "SvmCCTPW7Executor.Transfer");
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(We, "CCTPW7Executor", V);
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 Ge {
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 CCTPW7ExecutorRoute.config will always be empty
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 && Le(t, S.tokenId(r.chain, 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(Qe(r.normalizedParams.amount), this.staticConfig.referrerFeeDbps);
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 qe(new Uint8Array(32))
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("CCTPW7Executor"), d = S.parseAddress(r.chain(), r.address());
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: "CCTPW7ExecutorRoute",
838
- provider: "W7 Executor"
837
+ name: "CCTPExecutorRoute",
838
+ provider: "Circle"
839
839
  });
840
840
  export {
841
- ir as cctpW7ExecutorRoute
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-Ricf667V.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;
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
@@ -1,4 +1,4 @@
1
- import { a as d } from "./constants-BpnA30ER.mjs";
1
+ import { a as d } from "./constants-DrDsewBe.mjs";
2
2
  function r(o, t = {}) {
3
3
  window.__CONNECT_CONFIG = t.config, window.__CONNECT_THEME = t.theme;
4
4
  const n = document.createElement("div");