@wormhole-foundation/wormhole-connect 1.1.2-beta.1-development → 1.1.2

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 (104) hide show
  1. package/dist/assets/{ccip-DG5PxfxZ.js → ccip-DI-56zRJ.js} +1 -1
  2. package/dist/assets/{evm-CpEqLT_y.js → evm-0teEmKN1.js} +4 -4
  3. package/dist/assets/index-B-0vsM22.js +2 -0
  4. package/dist/assets/{index-CsGdgxew.js → index-BzxxtumF.js} +1 -1
  5. package/dist/assets/{index-CDRpv8fM.js → index-VdBo9Lrk.js} +1 -1
  6. package/dist/assets/{index.es-uOIRXoHK.js → index.es-Bu6qFU8A.js} +2 -2
  7. package/dist/main.js +3 -3
  8. package/lib/{algorand-Dm6TKWo1.mjs → algorand-BvImDZOY.mjs} +3 -3
  9. package/lib/{algorand-DZQLtCs3.js → algorand-DE9FRXgN.js} +1 -1
  10. package/lib/{aptos-BgGyOa6d.js → aptos-3DXmnj_V.js} +1 -1
  11. package/lib/{aptos-Oi2w7M7g.js → aptos-BlW8I71o.js} +2 -2
  12. package/lib/{aptos-C2XVzOAY.mjs → aptos-CB-AuU77.mjs} +1 -1
  13. package/lib/{aptos-CuJuzlQ4.mjs → aptos-XAeIff0t.mjs} +3 -3
  14. package/lib/{ccip-DpMplNou.js → ccip-9n_Qxt0R.js} +1 -1
  15. package/lib/{ccip-dAqJN7S0.mjs → ccip-D4nJdg4A.mjs} +1 -1
  16. package/lib/{cosmos-90bGYuhD.js → cosmos-CCyOFdEG.js} +11 -11
  17. package/lib/{cosmos-zIwOBV8H.mjs → cosmos-CwD_DJf3.mjs} +5 -5
  18. package/lib/{cosmwasm-CrtL_ala.js → cosmwasm-DpoXBVof.js} +3 -3
  19. package/lib/{cosmwasm-B90CBMmk.mjs → cosmwasm-Il1aGHnW.mjs} +3545 -3545
  20. package/lib/{events-COwefqOt.js → events-CtBArP61.js} +1 -1
  21. package/lib/{events-CkXgb0qh.mjs → events-DfpxB97c.mjs} +1 -1
  22. package/lib/{evm-ETVyy1bF.mjs → evm-BpuQtJ8_.mjs} +7 -7
  23. package/lib/{evm-DOnB2oR6.mjs → evm-CN7tgAvo.mjs} +6 -6
  24. package/lib/{evm-BdVnM5pA.js → evm-DaPdv30H.js} +1 -1
  25. package/lib/{evm-BN522EMV.js → evm-DpeDk5Nh.js} +4 -4
  26. package/lib/{index-CszotuUi.mjs → index-ApLQaDxZ.mjs} +801 -802
  27. package/lib/{index-2r-kWsjk.mjs → index-BFwJgm6v.mjs} +26 -26
  28. package/lib/{index-q0kjBXQA.js → index-BHCgxQwZ.js} +1 -1
  29. package/lib/{index-CKK14LS0.js → index-BKOVTycI.js} +1 -1
  30. package/lib/{index-CngGxdSU.mjs → index-BKPjri19.mjs} +3 -3
  31. package/lib/{index-RBlsEf3k.js → index-BL_MFlnD.js} +1 -1
  32. package/lib/{index-Dv2SHpnV.mjs → index-BM-VcJTM.mjs} +2 -2
  33. package/lib/{index-Be9Bg4au.js → index-BRjEp0OC.js} +1 -1
  34. package/lib/{index-B8U_Gr4R.mjs → index-BfeLH5sq.mjs} +1 -1
  35. package/lib/{index-kIexF0uT.js → index-BftGQ9Od.js} +1 -1
  36. package/lib/{index-DXkh0tUi.js → index-BgFwiloS.js} +1 -1
  37. package/lib/{index-DxTkOnq6.js → index-BotFZLPy.js} +1 -1
  38. package/lib/{index-BiEcDoCp.mjs → index-BwIgDsNh.mjs} +3 -3
  39. package/lib/{index-CfsjU0i8.mjs → index-BzaBnueC.mjs} +2 -2
  40. package/lib/{index-B5_WNdeb.js → index-C5CCTl6l.js} +1 -1
  41. package/lib/{index-CcPZaBV3.js → index-C8scDSKY.js} +1 -1
  42. package/lib/{index-_6ORrwJQ.js → index-CBF49TfW.js} +1 -1
  43. package/lib/{index-Oa-p0V5E.mjs → index-CDOGnmS6.mjs} +15 -15
  44. package/lib/{index-Dnfo149P.js → index-CJW6Pm_4.js} +1 -1
  45. package/lib/{index-B3rePQFd.mjs → index-CLC5CDh5.mjs} +18 -18
  46. package/lib/index-COw96Rua.js +1 -0
  47. package/lib/{index-CTVxLNgQ.mjs → index-CQWae6d6.mjs} +225 -225
  48. package/lib/{index-CAO9VKRh.mjs → index-CUGz5TgW.mjs} +1 -1
  49. package/lib/{index-Cx4LuiA1.mjs → index-CWJ0_bh7.mjs} +7 -7
  50. package/lib/{index-Dx54Fq-M.js → index-Cm2uDBOI.js} +1 -1
  51. package/lib/{index-BUJ1M7Ob.mjs → index-CvGX-2FX.mjs} +15 -15
  52. package/lib/{index-CKEOPl_r.js → index-CyWI3U2D.js} +1 -1
  53. package/lib/{index-CUNm43cC.mjs → index-D1-QjqzB.mjs} +30 -30
  54. package/lib/{index-D_IvJasJ.mjs → index-D71mFhtN.mjs} +2 -2
  55. package/lib/{index-CotIM_QM.js → index-DCQ0-LVj.js} +16 -16
  56. package/lib/{index-CjaaWCsQ.js → index-DH03XiQv.js} +92 -92
  57. package/lib/{index-CVFSCRrp.js → index-DOmtY-kF.js} +1 -1
  58. package/lib/{index-S-6g7te9.mjs → index-DXgyXjNC.mjs} +9 -9
  59. package/lib/{index-DUnWVA2t.js → index-DccWI0fu.js} +1 -1
  60. package/lib/{index-BK5v6OjI.mjs → index-Digj9HEk.mjs} +2 -2
  61. package/lib/{index-DG4r6BgI.js → index-DsHHiKBN.js} +1 -1
  62. package/lib/{index-qCDztmW8.mjs → index-DyztyLbi.mjs} +10 -10
  63. package/lib/{index-B_6I_1KE.mjs → index-DzrleM1Z.mjs} +6 -6
  64. package/lib/{index-uEx_Ty6H.mjs → index-HiefsQrl.mjs} +2 -2
  65. package/lib/{index-DgwozKZn.js → index-S2WRTxH-.js} +1 -1
  66. package/lib/{index-COovR23o.mjs → index-UJ_qrh-M.mjs} +45 -45
  67. package/lib/{index-GIMIwhEX.js → index-V2r6aK-J.js} +1 -1
  68. package/lib/{index-C4PiSpuF.js → index-jOVG08il.js} +1 -1
  69. package/lib/{index-t3NbnUgt.mjs → index-o4OiQdMB.mjs} +2 -2
  70. package/lib/{index-DCFAlA0r.mjs → index-v0XYnBH4.mjs} +19946 -19949
  71. package/lib/{index-SHXZG1qD.js → index-wBRzX5oo.js} +1 -1
  72. package/lib/{index.es-DXLvY_D0.js → index.es-BKqCA7ne.js} +2 -2
  73. package/lib/{index.es-DV0FLIto.mjs → index.es-ByBOztm1.mjs} +5 -5
  74. package/lib/index.js +1 -1
  75. package/lib/index.mjs +1 -1
  76. package/lib/{keccak-BIz1wVpA.js → keccak-B8a5MZK6.js} +1 -1
  77. package/lib/{keccak-BUByz5uF.mjs → keccak-CN5ySxFz.mjs} +1 -1
  78. package/lib/{libsodium-wrappers-fP6c9wsa.js → libsodium-wrappers-B0ICcimj.js} +1 -1
  79. package/lib/{libsodium-wrappers-Cor7IUex.mjs → libsodium-wrappers-GDaUPjg5.mjs} +1 -1
  80. package/lib/{pako.esm-CYeKGWZL.js → pako.esm-BWZpDuN6.js} +1 -1
  81. package/lib/{pako.esm-ZR78Kcp_.mjs → pako.esm-DW3UrHMz.mjs} +2 -2
  82. package/lib/{pbkdf2-CtnM_vol.js → pbkdf2-C38M4tlq.js} +1 -1
  83. package/lib/{pbkdf2-BXETruEi.mjs → pbkdf2-DBGCUA93.mjs} +1 -1
  84. package/lib/{sei-83rTGsK7.mjs → sei-B0Uph54D.mjs} +3 -3
  85. package/lib/{sei-BVrV8RIX.js → sei-GBctDPzY.js} +1 -1
  86. package/lib/{signer-DrIAzvo5.js → signer-D8gvviAH.js} +1 -1
  87. package/lib/{signer-nBgWI7Cp.mjs → signer-OgAKCQT2.mjs} +1 -1
  88. package/lib/solana-CWeQVpv5.mjs +16 -0
  89. package/lib/{solana-DfDEsqum.mjs → solana-Ckn17au5.mjs} +4 -4
  90. package/lib/solana-DBi9TLXj.js +1 -0
  91. package/lib/{solana-BHhb_iN6.js → solana-DT94CRt4.js} +1 -1
  92. package/lib/{solanaEmbed.esm-THCQirO0.mjs → solanaEmbed.esm-BtctroDi.mjs} +3 -3
  93. package/lib/{solanaEmbed.esm-NdMQEmdv.js → solanaEmbed.esm-D5ruhN0-.js} +1 -1
  94. package/lib/{sui-2OJrRkLv.js → sui-BrF_h9G6.js} +1 -1
  95. package/lib/{sui-DZw78j9M.mjs → sui-CfzZWVl4.mjs} +1 -1
  96. package/lib/{sui-yf1o5y4o.js → sui-QiHC32Xq.js} +2 -2
  97. package/lib/{sui-BCKOTjLA.mjs → sui-hGBpwcAg.mjs} +4 -4
  98. package/lib/{unsignedTransaction-CWcOEDGs.mjs → unsignedTransaction-CH8BOEp4.mjs} +2 -2
  99. package/lib/{unsignedTransaction-BOL13zs_.js → unsignedTransaction-YyhZZvTR.js} +1 -1
  100. package/package.json +1 -1
  101. package/dist/assets/index-tcDQieq-.js +0 -2
  102. package/lib/index-B03mlZnU.js +0 -1
  103. package/lib/solana-BgoFdxcd.js +0 -1
  104. package/lib/solana-CDYc5Kkf.mjs +0 -16
@@ -1,8 +1,8 @@
1
1
  var m = Object.defineProperty;
2
2
  var w = (i, e, t) => e in i ? m(i, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : i[e] = t;
3
3
  var a = (i, e, t) => w(i, typeof e != "symbol" ? e + "" : e, t);
4
- import { C as u } from "./cosmwasm-B90CBMmk.mjs";
5
- import { cM as g, ca as l, u as h, bU as p, a9 as f } from "./index-DCFAlA0r.mjs";
4
+ import { C as u } from "./cosmwasm-Il1aGHnW.mjs";
5
+ import { cL as g, c9 as l, u as h, bT as p, a9 as f } from "./index-v0XYnBH4.mjs";
6
6
  class c {
7
7
  constructor(e, t, s, r) {
8
8
  a(this, "network");
@@ -1 +1 @@
1
- "use strict";var U=Object.defineProperty;var L=(i,e,a)=>e in i?U(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var y=(i,e,a)=>L(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-CjaaWCsQ.js"),k=new n.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new n.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const T=new n.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new n.PublicKey("So11111111111111111111111111111111111111112");new n.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class W extends Error{constructor(e){super(e)}}class z extends W{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const F=n.struct([n.u32("mintAuthorityOption"),n.publicKey("mintAuthority"),n.u64("supply"),n.u8("decimals"),n.bool("isInitialized"),n.u32("freezeAuthorityOption"),n.publicKey("freezeAuthority")]);F.span;function V(i,e,a=!1,t=k,r=T){if(!a&&!n.PublicKey.isOnCurve(e.toBuffer()))throw new z;const[s]=n.PublicKey.findProgramAddressSync([e.toBuffer(),t.toBuffer(),i.toBuffer()],r);return s}function H(i,e,a,t,r=k,s=T){return G(i,e,a,t,n.dist.Buffer.alloc(0),r,s)}function G(i,e,a,t,r,s=k,m=T){const o=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new n.TransactionInstruction({keys:o,programId:m,data:r})}function K(i,e){return new n.Program(v.TokenMessengerIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function X(i,e){return K(i,n.createReadOnlyProvider(e))}function I(i,e){return new n.Program(v.MessageTransmitterIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function $(i,e){return I(i,n.createReadOnlyProvider(e))}const u=(i,e,a)=>{const t=[n.dist.Buffer.from(n.index.bytes.utf8.encode(i))];if(a)for(const s of a)typeof s=="string"?t.push(n.dist.Buffer.from(n.index.bytes.utf8.encode(s))):Array.isArray(s)?t.push(n.dist.Buffer.from(s)):n.dist.Buffer.isBuffer(s)?t.push(s):t.push(s.toBuffer());const r=n.PublicKey.findProgramAddressSync(t,e);return{publicKey:r[0],bump:r[1]}};function q(i,e,a,t,r,s,m,o,l){const d=u("message_transmitter",i),c=u("token_messenger",e),f=u("token_minter",e),p=u("local_token",e,[a]),M=u("remote_token_messenger",e,[t.toString()]),S=u("sender_authority",e),h=K(e),P=u("__event_authority",e);return h.methods.depositForBurn({amount:new n.BN(o.toString()),destinationDomain:t,mintRecipient:new n.PublicKey(m.toUint8Array())}).accounts({owner:r,senderAuthorityPda:S.publicKey,burnTokenAccount:s,messageTransmitter:d.publicKey,tokenMessenger:c.publicKey,remoteTokenMessenger:M.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:a,messageTransmitterProgram:i,tokenMessengerMinterProgram:e,tokenProgram:k,eventAuthority:P.publicKey,eventRentPayer:r,messageSentEventData:l}).instruction()}const w=6400n;function x(i){return(i-BigInt(1))/w*w+BigInt(1)}function B(i,e,a){const t=e.toString();return u("used_nonces",a,[t,x(i).toString()]).publicKey}async function J(i,e,a,t,r,s){const m=n.dist.Buffer.from(n.CircleBridge.serialize(t)),o=n.dist.Buffer.from(n.hex.decode(r)),l=new n.PublicKey(a),d=new n.PublicKey(t.payload.burnToken.toUint8Array()),c=new n.SolanaAddress(t.payload.mintRecipient).unwrap(),f=s?new n.PublicKey(s):c,p=t.sourceDomain.toString(),M=u("message_transmitter",i),S=u("token_messenger",e),h=u("token_minter",e),P=u("local_token",e,[l]),D=u("remote_token_messenger",e,[p]),C=u("token_pair",e,[p,d]),R=u("custody",e,[l]),O=u("message_transmitter_authority",i,[e]).publicKey,E=B(t.nonce,t.sourceDomain,i),N=u("__event_authority",i),_=u("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:S.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:D.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:h.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:C.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:c}),g.push({isSigner:!1,isWritable:!0,pubkey:R.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:k}),g.push({isSigner:!1,isWritable:!1,pubkey:_.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const A=I(i);return A.methods.receiveMessage({message:m,attestation:o}).accounts({payer:f,caller:f,authorityPda:O,messageTransmitter:M.publicKey,usedNonces:E,receiver:e,systemProgram:n.SystemProgram.programId,eventAuthority:N.publicKey,program:A.programId}).remainingAccounts(g).transaction()}class b{constructor(e,a,t,r){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var o,l;if(this.network=e,this.chain=a,this.connection=t,this.contracts=r,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=(o=r.cctp)==null?void 0:o.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${a} not found`);this.messageTransmitter=$(new n.PublicKey(s),this.connection);const m=(l=r.cctp)==null?void 0:l.tokenMessenger;if(!m)throw new Error(`Circle Token Messenger contract for domain ${a} not found`);this.tokenMessenger=X(new n.PublicKey(m),this.connection)}static async fromRpc(e,a){const[t,r]=await n.SolanaPlatform.chainFromRpc(e),s=a[r];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} != ${t}`);return new b(t,r,e,s.contracts)}async*redeem(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),m=new n.SolanaAddress(a.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(m)){const c=new n.Transaction().add(H(s,m,s,r));c.feePayer=s,yield this.createUnsignedTx({transaction:c},"CircleBridge.CreateATA")}const l=await J(this.messageTransmitter.programId,this.tokenMessenger.programId,r,a,t,s),d=new n.Transaction;d.feePayer=s,d.add(l),yield this.createUnsignedTx({transaction:d},"CircleBridge.Redeem")}async*transfer(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),m=V(r,s),o=n.circleChainId.get(this.network,a.chain),l=a.address.toUniversalAddress(),d=n.Keypair.generate(),c=await q(this.messageTransmitter.programId,this.tokenMessenger.programId,r,o,s,m,l,t,d.publicKey),f=new n.Transaction;f.feePayer=s,f.add(c),yield this.createUnsignedTx({transaction:f,signers:[d]},"CircleBridge.Transfer")}async isTransferCompleted(e){const a=B(e.nonce,e.sourceDomain,this.messageTransmitter.programId),t=x(e.nonce),{usedNonces:r}=await this.messageTransmitter.account.usedNonces.fetch(a),s=Number(e.nonce-t),m=r[Math.floor(s/64)];if(!m)throw new Error("Invalid nonce byte index");const o=s%64,l=new n.BN((BigInt(1)<<BigInt(o)).toString());return!m.and(l).isZero()}async parseTransactionDetails(e){const a=await this.connection.getTransaction(e);if(!a||!a.meta)throw new Error("Transaction not found");const t=a.transaction.message.getAccountKeys();if(t.length<2)throw new Error("No message account found");const r=t.get(1),s=await this.connection.getAccountInfo(r);if(!s)throw new Error("No account data found");const m=new Uint8Array(s.data).slice(44),[o,l]=n.CircleBridge.deserialize(m),{payload:d}=o,c=d.messageSender,f=d.mintRecipient,p=n.toCircleChain(this.network,o.sourceDomain),M=n.toCircleChain(this.network,o.destinationDomain),S={chain:p,address:d.burnToken};return{from:{chain:p,address:c},to:{chain:M,address:f},token:S,amount:d.amount,message:o,id:{hash:l}}}createUnsignedTx(e,a,t=!1){return new n.SolanaUnsignedTransaction(e,this.network,this.chain,a,t)}}const Q={version:"0.1.0",name:"token_messenger_minter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"tokenMessengerMinterProgramData",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"addRemoteTokenMessenger",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddRemoteTokenMessengerParams"}}]},{name:"removeRemoteTokenMessenger",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveRemoteTokenMessengerParams"}}]},{name:"depositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnParams"}}],returns:"u64"},{name:"depositForBurnWithCaller",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnWithCallerParams"}}],returns:"u64"},{name:"replaceDepositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceDepositForBurnParams"}}],returns:"u64"},{name:"handleReceiveMessage",accounts:[{name:"authorityPda",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"tokenPair",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"HandleReceiveMessageParams"}}]},{name:"setTokenController",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetTokenControllerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"setMaxBurnAmountPerMessage",accounts:[{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxBurnAmountPerMessageParams"}}]},{name:"addLocalToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"localTokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddLocalTokenParams"}}]},{name:"removeLocalToken",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveLocalTokenParams"}}]},{name:"linkTokenPair",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"LinkTokenPairParams"}}]},{name:"unlinkTokenPair",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UninkTokenPairParams"}}]},{name:"burnTokenCustody",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!1,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenMint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"BurnTokenCustodyParams"}}]}],accounts:[{name:"tokenMessenger",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"}]}},{name:"remoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"tokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"tokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}},{name:"localToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"DepositForBurnWithCallerParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"}]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"ReplaceDepositForBurnParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"},{name:"newMintRecipient",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"UninkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"TokenMinterError",type:{kind:"enum",variants:[{name:"InvalidAuthority"},{name:"InvalidTokenMinterState"},{name:"ProgramPaused"},{name:"InvalidTokenPairState"},{name:"InvalidLocalTokenState"},{name:"InvalidPauser"},{name:"InvalidTokenController"},{name:"BurnAmountExceeded"},{name:"InvalidAmount"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"nonce",type:"u64",index:!1},{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMessengerState",msg:"Invalid token messenger state"},{code:6002,name:"InvalidTokenMessenger",msg:"Invalid token messenger"},{code:6003,name:"InvalidOwner",msg:"Invalid owner"},{code:6004,name:"MalformedMessage",msg:"Malformed message"},{code:6005,name:"InvalidMessageBodyVersion",msg:"Invalid message body version"},{code:6006,name:"InvalidAmount",msg:"Invalid amount"},{code:6007,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6008,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6009,name:"InvalidMintRecipient",msg:"Invalid mint recipient"},{code:6010,name:"InvalidSender",msg:"Invalid sender"},{code:6011,name:"InvalidTokenPair",msg:"Invalid token pair"},{code:6012,name:"InvalidTokenMint",msg:"Invalid token mint"}]},Z={version:"0.1.0",name:"message_transmitter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageParams"}}],returns:"u64"},{name:"sendMessageWithCaller",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageWithCallerParams"}}],returns:"u64"},{name:"replaceMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceMessageParams"}}],returns:"u64"},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonces",isMut:!0,isSigner:!1},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"getNoncePda",accounts:[{name:"messageTransmitter",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"GetNoncePDAParams"}}],returns:"publicKey"},{name:"isNonceUsed",accounts:[{name:"usedNonces",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[{name:"params",type:{defined:"IsNonceUsedParams"}}],returns:"bool"}],accounts:[{name:"messageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"message",type:"bytes"}]}},{name:"messageTransmitter",docs:["Main state of the MessageTransmitter program"],type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"},{name:"nextAvailableNonce",type:"u64"}]}},{name:"usedNonces",docs:["UsedNonces account holds an array of bits that indicate which nonces were already used","so they can't be resused to receive new messages. Array starts with the first_nonce and","holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain."],type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"firstNonce",type:"u64"},{name:"usedNonces",type:{array:["u64",100]}}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"GetNoncePDAParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"sourceDomain",type:"u32"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"IsNonceUsedParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"}]}},{name:"ReplaceMessageParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newMessageBody",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"}]}},{name:"SendMessageWithCallerParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"destinationCaller",type:"publicKey"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"MathError",type:{kind:"enum",variants:[{name:"MathOverflow"},{name:"MathUnderflow"},{name:"ErrorInDivision"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:"u64",index:!1},{name:"sender",type:"publicKey",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"}]};n.registerProtocol(n._platform$1,"CircleBridge",b);const v={TokenMessengerIdl:Q,MessageTransmitterIdl:Z};exports.SolanaCircleBridge=b;exports.idl=v;
1
+ "use strict";var U=Object.defineProperty;var L=(i,e,a)=>e in i?U(i,e,{enumerable:!0,configurable:!0,writable:!0,value:a}):i[e]=a;var y=(i,e,a)=>L(i,typeof e!="symbol"?e+"":e,a);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const n=require("./index-DH03XiQv.js"),k=new n.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new n.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const T=new n.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new n.PublicKey("So11111111111111111111111111111111111111112");new n.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class W extends Error{constructor(e){super(e)}}class z extends W{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const F=n.struct([n.u32("mintAuthorityOption"),n.publicKey("mintAuthority"),n.u64("supply"),n.u8("decimals"),n.bool("isInitialized"),n.u32("freezeAuthorityOption"),n.publicKey("freezeAuthority")]);F.span;function V(i,e,a=!1,t=k,r=T){if(!a&&!n.PublicKey.isOnCurve(e.toBuffer()))throw new z;const[s]=n.PublicKey.findProgramAddressSync([e.toBuffer(),t.toBuffer(),i.toBuffer()],r);return s}function H(i,e,a,t,r=k,s=T){return G(i,e,a,t,n.dist.Buffer.alloc(0),r,s)}function G(i,e,a,t,r,s=k,m=T){const o=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new n.TransactionInstruction({keys:o,programId:m,data:r})}function K(i,e){return new n.Program(v.TokenMessengerIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function X(i,e){return K(i,n.createReadOnlyProvider(e))}function I(i,e){return new n.Program(v.MessageTransmitterIdl,new n.PublicKey(i),e===void 0?{connection:null}:e)}function $(i,e){return I(i,n.createReadOnlyProvider(e))}const u=(i,e,a)=>{const t=[n.dist.Buffer.from(n.index.bytes.utf8.encode(i))];if(a)for(const s of a)typeof s=="string"?t.push(n.dist.Buffer.from(n.index.bytes.utf8.encode(s))):Array.isArray(s)?t.push(n.dist.Buffer.from(s)):n.dist.Buffer.isBuffer(s)?t.push(s):t.push(s.toBuffer());const r=n.PublicKey.findProgramAddressSync(t,e);return{publicKey:r[0],bump:r[1]}};function q(i,e,a,t,r,s,m,o,l){const d=u("message_transmitter",i),c=u("token_messenger",e),f=u("token_minter",e),p=u("local_token",e,[a]),M=u("remote_token_messenger",e,[t.toString()]),S=u("sender_authority",e),h=K(e),P=u("__event_authority",e);return h.methods.depositForBurn({amount:new n.BN(o.toString()),destinationDomain:t,mintRecipient:new n.PublicKey(m.toUint8Array())}).accounts({owner:r,senderAuthorityPda:S.publicKey,burnTokenAccount:s,messageTransmitter:d.publicKey,tokenMessenger:c.publicKey,remoteTokenMessenger:M.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:a,messageTransmitterProgram:i,tokenMessengerMinterProgram:e,tokenProgram:k,eventAuthority:P.publicKey,eventRentPayer:r,messageSentEventData:l}).instruction()}const w=6400n;function x(i){return(i-BigInt(1))/w*w+BigInt(1)}function B(i,e,a){const t=e.toString();return u("used_nonces",a,[t,x(i).toString()]).publicKey}async function J(i,e,a,t,r,s){const m=n.dist.Buffer.from(n.CircleBridge.serialize(t)),o=n.dist.Buffer.from(n.hex.decode(r)),l=new n.PublicKey(a),d=new n.PublicKey(t.payload.burnToken.toUint8Array()),c=new n.SolanaAddress(t.payload.mintRecipient).unwrap(),f=s?new n.PublicKey(s):c,p=t.sourceDomain.toString(),M=u("message_transmitter",i),S=u("token_messenger",e),h=u("token_minter",e),P=u("local_token",e,[l]),D=u("remote_token_messenger",e,[p]),C=u("token_pair",e,[p,d]),R=u("custody",e,[l]),O=u("message_transmitter_authority",i,[e]).publicKey,E=B(t.nonce,t.sourceDomain,i),N=u("__event_authority",i),_=u("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:S.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:D.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:h.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:C.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:c}),g.push({isSigner:!1,isWritable:!0,pubkey:R.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:k}),g.push({isSigner:!1,isWritable:!1,pubkey:_.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const A=I(i);return A.methods.receiveMessage({message:m,attestation:o}).accounts({payer:f,caller:f,authorityPda:O,messageTransmitter:M.publicKey,usedNonces:E,receiver:e,systemProgram:n.SystemProgram.programId,eventAuthority:N.publicKey,program:A.programId}).remainingAccounts(g).transaction()}class b{constructor(e,a,t,r){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var o,l;if(this.network=e,this.chain=a,this.connection=t,this.contracts=r,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const s=(o=r.cctp)==null?void 0:o.messageTransmitter;if(!s)throw new Error(`Circle Messenge Transmitter contract for domain ${a} not found`);this.messageTransmitter=$(new n.PublicKey(s),this.connection);const m=(l=r.cctp)==null?void 0:l.tokenMessenger;if(!m)throw new Error(`Circle Token Messenger contract for domain ${a} not found`);this.tokenMessenger=X(new n.PublicKey(m),this.connection)}static async fromRpc(e,a){const[t,r]=await n.SolanaPlatform.chainFromRpc(e),s=a[r];if(s.network!==t)throw new Error(`Network mismatch: ${s.network} != ${t}`);return new b(t,r,e,s.contracts)}async*redeem(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),m=new n.SolanaAddress(a.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(m)){const c=new n.Transaction().add(H(s,m,s,r));c.feePayer=s,yield this.createUnsignedTx({transaction:c},"CircleBridge.CreateATA")}const l=await J(this.messageTransmitter.programId,this.tokenMessenger.programId,r,a,t,s),d=new n.Transaction;d.feePayer=s,d.add(l),yield this.createUnsignedTx({transaction:d},"CircleBridge.Redeem")}async*transfer(e,a,t){const r=new n.PublicKey(n.usdcContract.get(this.network,this.chain)),s=new n.SolanaAddress(e).unwrap(),m=V(r,s),o=n.circleChainId.get(this.network,a.chain),l=a.address.toUniversalAddress(),d=n.Keypair.generate(),c=await q(this.messageTransmitter.programId,this.tokenMessenger.programId,r,o,s,m,l,t,d.publicKey),f=new n.Transaction;f.feePayer=s,f.add(c),yield this.createUnsignedTx({transaction:f,signers:[d]},"CircleBridge.Transfer")}async isTransferCompleted(e){const a=B(e.nonce,e.sourceDomain,this.messageTransmitter.programId),t=x(e.nonce),{usedNonces:r}=await this.messageTransmitter.account.usedNonces.fetch(a),s=Number(e.nonce-t),m=r[Math.floor(s/64)];if(!m)throw new Error("Invalid nonce byte index");const o=s%64,l=new n.BN((BigInt(1)<<BigInt(o)).toString());return!m.and(l).isZero()}async parseTransactionDetails(e){const a=await this.connection.getTransaction(e);if(!a||!a.meta)throw new Error("Transaction not found");const t=a.transaction.message.getAccountKeys();if(t.length<2)throw new Error("No message account found");const r=t.get(1),s=await this.connection.getAccountInfo(r);if(!s)throw new Error("No account data found");const m=new Uint8Array(s.data).slice(44),[o,l]=n.CircleBridge.deserialize(m),{payload:d}=o,c=d.messageSender,f=d.mintRecipient,p=n.toCircleChain(this.network,o.sourceDomain),M=n.toCircleChain(this.network,o.destinationDomain),S={chain:p,address:d.burnToken};return{from:{chain:p,address:c},to:{chain:M,address:f},token:S,amount:d.amount,message:o,id:{hash:l}}}createUnsignedTx(e,a,t=!1){return new n.SolanaUnsignedTransaction(e,this.network,this.chain,a,t)}}const Q={version:"0.1.0",name:"token_messenger_minter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"tokenMessengerMinterProgramData",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"addRemoteTokenMessenger",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddRemoteTokenMessengerParams"}}]},{name:"removeRemoteTokenMessenger",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveRemoteTokenMessengerParams"}}]},{name:"depositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnParams"}}],returns:"u64"},{name:"depositForBurnWithCaller",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"burnTokenAccount",isMut:!0,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"burnTokenMint",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DepositForBurnWithCallerParams"}}],returns:"u64"},{name:"replaceDepositForBurn",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"tokenMessengerMinterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceDepositForBurnParams"}}],returns:"u64"},{name:"handleReceiveMessage",accounts:[{name:"authorityPda",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"remoteTokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"tokenPair",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"HandleReceiveMessageParams"}}]},{name:"setTokenController",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetTokenControllerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"setMaxBurnAmountPerMessage",accounts:[{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxBurnAmountPerMessageParams"}}]},{name:"addLocalToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"localTokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AddLocalTokenParams"}}]},{name:"removeLocalToken",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"RemoveLocalTokenParams"}}]},{name:"linkTokenPair",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"LinkTokenPairParams"}}]},{name:"unlinkTokenPair",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"tokenPair",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UninkTokenPairParams"}}]},{name:"burnTokenCustody",accounts:[{name:"payee",isMut:!0,isSigner:!0},{name:"tokenController",isMut:!1,isSigner:!0},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!1,isSigner:!1},{name:"custodyTokenAccount",isMut:!0,isSigner:!1},{name:"custodyTokenMint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"BurnTokenCustodyParams"}}]}],accounts:[{name:"tokenMessenger",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"},{name:"authorityBump",type:"u8"}]}},{name:"remoteTokenMessenger",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"tokenMinter",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"bump",type:"u8"}]}},{name:"tokenPair",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"},{name:"localToken",type:"publicKey"},{name:"bump",type:"u8"}]}},{name:"localToken",type:{kind:"struct",fields:[{name:"custody",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"burnLimitPerMessage",type:"u64"},{name:"messagesSent",type:"u64"},{name:"messagesReceived",type:"u64"},{name:"amountSent",type:"u128"},{name:"amountReceived",type:"u128"},{name:"bump",type:"u8"},{name:"custodyBump",type:"u8"}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"AddRemoteTokenMessengerParams",type:{kind:"struct",fields:[{name:"domain",type:"u32"},{name:"tokenMessenger",type:"publicKey"}]}},{name:"DepositForBurnWithCallerParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"},{name:"destinationCaller",type:"publicKey"}]}},{name:"DepositForBurnParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"destinationDomain",type:"u32"},{name:"mintRecipient",type:"publicKey"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"},{name:"localMessageTransmitter",type:"publicKey"},{name:"messageBodyVersion",type:"u32"}]}},{name:"RemoveRemoteTokenMessengerParams",type:{kind:"struct",fields:[]}},{name:"ReplaceDepositForBurnParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"},{name:"newMintRecipient",type:"publicKey"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"AddLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"BurnTokenCustodyParams",type:{kind:"struct",fields:[{name:"amount",type:"u64"}]}},{name:"LinkTokenPairParams",type:{kind:"struct",fields:[{name:"localToken",type:"publicKey"},{name:"remoteDomain",type:"u32"},{name:"remoteToken",type:"publicKey"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"RemoveLocalTokenParams",type:{kind:"struct",fields:[]}},{name:"SetMaxBurnAmountPerMessageParams",type:{kind:"struct",fields:[{name:"burnLimitPerMessage",type:"u64"}]}},{name:"SetTokenControllerParams",type:{kind:"struct",fields:[{name:"tokenController",type:"publicKey"}]}},{name:"UninkTokenPairParams",type:{kind:"struct",fields:[]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"TokenMinterError",type:{kind:"enum",variants:[{name:"InvalidAuthority"},{name:"InvalidTokenMinterState"},{name:"ProgramPaused"},{name:"InvalidTokenPairState"},{name:"InvalidLocalTokenState"},{name:"InvalidPauser"},{name:"InvalidTokenController"},{name:"BurnAmountExceeded"},{name:"InvalidAmount"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"DepositForBurn",fields:[{name:"nonce",type:"u64",index:!1},{name:"burnToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"depositor",type:"publicKey",index:!1},{name:"mintRecipient",type:"publicKey",index:!1},{name:"destinationDomain",type:"u32",index:!1},{name:"destinationTokenMessenger",type:"publicKey",index:!1},{name:"destinationCaller",type:"publicKey",index:!1}]},{name:"MintAndWithdraw",fields:[{name:"mintRecipient",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"mintToken",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerAdded",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"RemoteTokenMessengerRemoved",fields:[{name:"domain",type:"u32",index:!1},{name:"tokenMessenger",type:"publicKey",index:!1}]},{name:"SetTokenController",fields:[{name:"tokenController",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"SetBurnLimitPerMessage",fields:[{name:"token",type:"publicKey",index:!1},{name:"burnLimitPerMessage",type:"u64",index:!1}]},{name:"LocalTokenAdded",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"LocalTokenRemoved",fields:[{name:"custody",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1}]},{name:"TokenPairLinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"TokenPairUnlinked",fields:[{name:"localToken",type:"publicKey",index:!1},{name:"remoteDomain",type:"u32",index:!1},{name:"remoteToken",type:"publicKey",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]},{name:"TokenCustodyBurned",fields:[{name:"custodyTokenAccount",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"InvalidTokenMessengerState",msg:"Invalid token messenger state"},{code:6002,name:"InvalidTokenMessenger",msg:"Invalid token messenger"},{code:6003,name:"InvalidOwner",msg:"Invalid owner"},{code:6004,name:"MalformedMessage",msg:"Malformed message"},{code:6005,name:"InvalidMessageBodyVersion",msg:"Invalid message body version"},{code:6006,name:"InvalidAmount",msg:"Invalid amount"},{code:6007,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6008,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6009,name:"InvalidMintRecipient",msg:"Invalid mint recipient"},{code:6010,name:"InvalidSender",msg:"Invalid sender"},{code:6011,name:"InvalidTokenPair",msg:"Invalid token pair"},{code:6012,name:"InvalidTokenMint",msg:"Invalid token mint"}]},Z={version:"0.1.0",name:"message_transmitter",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"upgradeAuthority",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageTransmitterProgramData",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"InitializeParams"}}]},{name:"transferOwnership",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"TransferOwnershipParams"}}]},{name:"acceptOwnership",accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"AcceptOwnershipParams"}}]},{name:"updatePauser",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdatePauserParams"}}]},{name:"updateAttesterManager",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UpdateAttesterManagerParams"}}]},{name:"pause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"PauseParams"}}]},{name:"unpause",accounts:[{name:"pauser",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"UnpauseParams"}}]},{name:"setMaxMessageBodySize",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetMaxMessageBodySizeParams"}}]},{name:"enableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"EnableAttesterParams"}}]},{name:"disableAttester",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"DisableAttesterParams"}}]},{name:"setSignatureThreshold",accounts:[{name:"attesterManager",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SetSignatureThresholdParams"}}]},{name:"sendMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageParams"}}],returns:"u64"},{name:"sendMessageWithCaller",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"SendMessageWithCallerParams"}}],returns:"u64"},{name:"replaceMessage",accounts:[{name:"eventRentPayer",isMut:!0,isSigner:!0},{name:"senderAuthorityPda",isMut:!1,isSigner:!0},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"senderProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReplaceMessageParams"}}],returns:"u64"},{name:"receiveMessage",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"caller",isMut:!1,isSigner:!0},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"messageTransmitter",isMut:!1,isSigner:!1},{name:"usedNonces",isMut:!0,isSigner:!1},{name:"receiver",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"program",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"ReceiveMessageParams"}}]},{name:"reclaimEventAccount",accounts:[{name:"payee",isMut:!0,isSigner:!0,docs:["rent SOL receiver, should match original rent payer"]},{name:"messageTransmitter",isMut:!0,isSigner:!1},{name:"messageSentEventData",isMut:!0,isSigner:!1}],args:[{name:"params",type:{defined:"ReclaimEventAccountParams"}}]},{name:"getNoncePda",accounts:[{name:"messageTransmitter",isMut:!1,isSigner:!1}],args:[{name:"params",type:{defined:"GetNoncePDAParams"}}],returns:"publicKey"},{name:"isNonceUsed",accounts:[{name:"usedNonces",isMut:!1,isSigner:!1,docs:["Account will be explicitly loaded to avoid error when it's not initialized"]}],args:[{name:"params",type:{defined:"IsNonceUsedParams"}}],returns:"bool"}],accounts:[{name:"messageSent",type:{kind:"struct",fields:[{name:"rentPayer",type:"publicKey"},{name:"message",type:"bytes"}]}},{name:"messageTransmitter",docs:["Main state of the MessageTransmitter program"],type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pendingOwner",type:"publicKey"},{name:"attesterManager",type:"publicKey"},{name:"pauser",type:"publicKey"},{name:"paused",type:"bool"},{name:"localDomain",type:"u32"},{name:"version",type:"u32"},{name:"signatureThreshold",type:"u32"},{name:"enabledAttesters",type:{vec:"publicKey"}},{name:"maxMessageBodySize",type:"u64"},{name:"nextAvailableNonce",type:"u64"}]}},{name:"usedNonces",docs:["UsedNonces account holds an array of bits that indicate which nonces were already used","so they can't be resused to receive new messages. Array starts with the first_nonce and","holds flags for UsedNonces::MAX_NONCES. Nonces are recorded separately for each remote_domain."],type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"firstNonce",type:"u64"},{name:"usedNonces",type:{array:["u64",100]}}]}}],types:[{name:"AcceptOwnershipParams",type:{kind:"struct",fields:[]}},{name:"DisableAttesterParams",type:{kind:"struct",fields:[{name:"attester",type:"publicKey"}]}},{name:"EnableAttesterParams",type:{kind:"struct",fields:[{name:"newAttester",type:"publicKey"}]}},{name:"GetNoncePDAParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"},{name:"sourceDomain",type:"u32"}]}},{name:"InitializeParams",type:{kind:"struct",fields:[{name:"localDomain",type:"u32"},{name:"attester",type:"publicKey"},{name:"maxMessageBodySize",type:"u64"},{name:"version",type:"u32"}]}},{name:"IsNonceUsedParams",type:{kind:"struct",fields:[{name:"nonce",type:"u64"}]}},{name:"PauseParams",type:{kind:"struct",fields:[]}},{name:"ReceiveMessageParams",type:{kind:"struct",fields:[{name:"message",type:"bytes"},{name:"attestation",type:"bytes"}]}},{name:"HandleReceiveMessageParams",type:{kind:"struct",fields:[{name:"remoteDomain",type:"u32"},{name:"sender",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"authorityBump",type:"u8"}]}},{name:"ReclaimEventAccountParams",type:{kind:"struct",fields:[{name:"attestation",type:"bytes"}]}},{name:"ReplaceMessageParams",type:{kind:"struct",fields:[{name:"originalMessage",type:"bytes"},{name:"originalAttestation",type:"bytes"},{name:"newMessageBody",type:"bytes"},{name:"newDestinationCaller",type:"publicKey"}]}},{name:"SendMessageWithCallerParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"},{name:"destinationCaller",type:"publicKey"}]}},{name:"SendMessageParams",type:{kind:"struct",fields:[{name:"destinationDomain",type:"u32"},{name:"recipient",type:"publicKey"},{name:"messageBody",type:"bytes"}]}},{name:"SetMaxMessageBodySizeParams",type:{kind:"struct",fields:[{name:"newMaxMessageBodySize",type:"u64"}]}},{name:"SetSignatureThresholdParams",type:{kind:"struct",fields:[{name:"newSignatureThreshold",type:"u32"}]}},{name:"TransferOwnershipParams",type:{kind:"struct",fields:[{name:"newOwner",type:"publicKey"}]}},{name:"UnpauseParams",type:{kind:"struct",fields:[]}},{name:"UpdateAttesterManagerParams",type:{kind:"struct",fields:[{name:"newAttesterManager",type:"publicKey"}]}},{name:"UpdatePauserParams",type:{kind:"struct",fields:[{name:"newPauser",type:"publicKey"}]}},{name:"MathError",type:{kind:"enum",variants:[{name:"MathOverflow"},{name:"MathUnderflow"},{name:"ErrorInDivision"}]}}],events:[{name:"OwnershipTransferStarted",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"OwnershipTransferred",fields:[{name:"previousOwner",type:"publicKey",index:!1},{name:"newOwner",type:"publicKey",index:!1}]},{name:"PauserChanged",fields:[{name:"newAddress",type:"publicKey",index:!1}]},{name:"AttesterManagerUpdated",fields:[{name:"previousAttesterManager",type:"publicKey",index:!1},{name:"newAttesterManager",type:"publicKey",index:!1}]},{name:"MessageReceived",fields:[{name:"caller",type:"publicKey",index:!1},{name:"sourceDomain",type:"u32",index:!1},{name:"nonce",type:"u64",index:!1},{name:"sender",type:"publicKey",index:!1},{name:"messageBody",type:"bytes",index:!1}]},{name:"SignatureThresholdUpdated",fields:[{name:"oldSignatureThreshold",type:"u32",index:!1},{name:"newSignatureThreshold",type:"u32",index:!1}]},{name:"AttesterEnabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"AttesterDisabled",fields:[{name:"attester",type:"publicKey",index:!1}]},{name:"MaxMessageBodySizeUpdated",fields:[{name:"newMaxMessageBodySize",type:"u64",index:!1}]},{name:"Pause",fields:[]},{name:"Unpause",fields:[]}],errors:[{code:6e3,name:"InvalidAuthority",msg:"Invalid authority"},{code:6001,name:"ProgramPaused",msg:"Instruction is not allowed at this time"},{code:6002,name:"InvalidMessageTransmitterState",msg:"Invalid message transmitter state"},{code:6003,name:"InvalidSignatureThreshold",msg:"Invalid signature threshold"},{code:6004,name:"SignatureThresholdAlreadySet",msg:"Signature threshold already set"},{code:6005,name:"InvalidOwner",msg:"Invalid owner"},{code:6006,name:"InvalidPauser",msg:"Invalid pauser"},{code:6007,name:"InvalidAttesterManager",msg:"Invalid attester manager"},{code:6008,name:"InvalidAttester",msg:"Invalid attester"},{code:6009,name:"AttesterAlreadyEnabled",msg:"Attester already enabled"},{code:6010,name:"TooFewEnabledAttesters",msg:"Too few enabled attesters"},{code:6011,name:"SignatureThresholdTooLow",msg:"Signature threshold is too low"},{code:6012,name:"AttesterAlreadyDisabled",msg:"Attester already disabled"},{code:6013,name:"MessageBodyLimitExceeded",msg:"Message body exceeds max size"},{code:6014,name:"InvalidDestinationCaller",msg:"Invalid destination caller"},{code:6015,name:"InvalidRecipient",msg:"Invalid message recipient"},{code:6016,name:"SenderNotPermitted",msg:"Sender is not permitted"},{code:6017,name:"InvalidSourceDomain",msg:"Invalid source domain"},{code:6018,name:"InvalidDestinationDomain",msg:"Invalid destination domain"},{code:6019,name:"InvalidMessageVersion",msg:"Invalid message version"},{code:6020,name:"InvalidUsedNoncesAccount",msg:"Invalid used nonces account"},{code:6021,name:"InvalidRecipientProgram",msg:"Invalid recipient program"},{code:6022,name:"InvalidNonce",msg:"Invalid nonce"},{code:6023,name:"NonceAlreadyUsed",msg:"Nonce already used"},{code:6024,name:"MessageTooShort",msg:"Message is too short"},{code:6025,name:"MalformedMessage",msg:"Malformed message"},{code:6026,name:"InvalidSignatureOrderOrDupe",msg:"Invalid signature order or dupe"},{code:6027,name:"InvalidAttesterSignature",msg:"Invalid attester signature"},{code:6028,name:"InvalidAttestationLength",msg:"Invalid attestation length"},{code:6029,name:"InvalidSignatureRecoveryId",msg:"Invalid signature recovery ID"},{code:6030,name:"InvalidSignatureSValue",msg:"Invalid signature S value"},{code:6031,name:"InvalidMessageHash",msg:"Invalid message hash"}]};n.registerProtocol(n._platform$1,"CircleBridge",b);const v={TokenMessengerIdl:Q,MessageTransmitterIdl:Z};exports.SolanaCircleBridge=b;exports.idl=v;
@@ -1,7 +1,7 @@
1
1
  var $ = Object.defineProperty;
2
2
  var V = (i, e, b) => e in i ? $(i, e, { enumerable: !0, configurable: !0, writable: !0, value: b }) : i[e] = b;
3
3
  var d = (i, e, b) => V(i, typeof e != "symbol" ? e + "" : e, b);
4
- import { aj as E, E as o, c9 as x, a8 as l, bO as z, ca as j, a as c, p as k, cb as L, cc as Z, bP as g, cd as W, ce as T, bN as s, cf as _, bS as P, bT as N, c8 as F, bI as q, aA as D, bU as H, _ as O } from "./index-DCFAlA0r.mjs";
4
+ import { aj as E, E as o, c8 as x, a8 as l, bN as z, c9 as j, a as c, p as k, ca as L, cb as Z, bO as g, cc as W, cd as T, bM as s, ce as _, bR as P, bS as N, c7 as F, bH as q, aA as H, bT as D, _ as O } from "./index-v0XYnBH4.mjs";
5
5
  class B {
6
6
  constructor(e, b, a, t) {
7
7
  d(this, "network");
@@ -79,12 +79,12 @@ class B {
79
79
  const I = await u.approve.populateTransaction(this.tokenBridge.target, t);
80
80
  yield this.createUnsignedTx(s(I, f), "TokenBridge.Approve");
81
81
  }
82
- const M = [
82
+ const v = [
83
83
  y,
84
84
  t,
85
85
  p,
86
86
  r
87
- ], R = await (n === void 0 ? this.tokenBridge.transferTokens.populateTransaction(...M, W, T) : this.tokenBridge.transferTokensWithPayload.populateTransaction(...M, T, n));
87
+ ], R = await (n === void 0 ? this.tokenBridge.transferTokens.populateTransaction(...v, W, T) : this.tokenBridge.transferTokensWithPayload.populateTransaction(...v, T, n));
88
88
  yield this.createUnsignedTx(s(R, f), "TokenBridge.transferTokens" + (n === void 0 ? "" : "WithPayload"));
89
89
  }
90
90
  }
@@ -159,9 +159,9 @@ class C {
159
159
  );
160
160
  yield this.createUnsignedTx(s(u, f), "TokenBridgeRelayer.wrapAndTransferETHWithRelay");
161
161
  } else {
162
- const u = new c(a).toString(), v = o.getTokenImplementation(this.provider, u);
163
- if (await v.allowance(f, this.tokenBridgeRelayer.target) < t) {
164
- const I = await v.approve.populateTransaction(this.tokenBridgeRelayer.target, t);
162
+ const u = new c(a).toString(), M = o.getTokenImplementation(this.provider, u);
163
+ if (await M.allowance(f, this.tokenBridgeRelayer.target) < t) {
164
+ const I = await M.approve.populateTransaction(this.tokenBridgeRelayer.target, t);
165
165
  yield this.createUnsignedTx(s(I, f), "AutomaticTokenBridge.Approve");
166
166
  }
167
167
  const R = await this.tokenBridgeRelayer.transferTokensWithRelay.populateTransaction(u, t, y, p, r, 0);
@@ -1424,7 +1424,7 @@ class m extends F {
1424
1424
  return new q(h);
1425
1425
  }
1426
1426
  static connect(e, b) {
1427
- return new D(e, h, b);
1427
+ return new H(e, h, b);
1428
1428
  }
1429
1429
  }
1430
1430
  d(m, "bytecode", S), d(m, "abi", h);
@@ -2486,7 +2486,7 @@ class A extends F {
2486
2486
  return new q(w);
2487
2487
  }
2488
2488
  static connect(e, b) {
2489
- return new D(e, w, b);
2489
+ return new H(e, w, b);
2490
2490
  }
2491
2491
  }
2492
2492
  d(A, "bytecode", U), d(A, "abi", w);
@@ -2495,8 +2495,8 @@ const X = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
2495
2495
  Bridge__factory: m,
2496
2496
  TokenBridgeRelayer__factory: A
2497
2497
  }, Symbol.toStringTag, { value: "Module" }));
2498
- H(O, "TokenBridge", B);
2499
- H(O, "AutomaticTokenBridge", C);
2498
+ D(O, "TokenBridge", B);
2499
+ D(O, "AutomaticTokenBridge", C);
2500
2500
  export {
2501
2501
  C as EvmAutomaticTokenBridge,
2502
2502
  B as EvmTokenBridge,
@@ -1,12 +1,12 @@
1
1
  var uu = Object.defineProperty;
2
2
  var du = (e, t, n) => t in e ? uu(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
3
3
  var ct = (e, t, n) => du(e, typeof t != "symbol" ? t + "" : t, n);
4
- import { X as h, Y as Ur, Z as lu, h as tt, $ as ia, a0 as aa, aa as fi, a3 as hi, N as pi, o as mu, a8 as gi, p as fu, cY as hu, a6 as yi, cZ as Qo, c_ as bi, c$ as vi, d0 as wi, d1 as ki, d2 as _i, d3 as Si, d4 as pu, d5 as gu, d6 as yu, bU as bu, a9 as vu } from "./index-DCFAlA0r.mjs";
5
- import { t as jt, l as wu, s as qr, a as Rs, c as ca, m as ku } from "./index-CszotuUi.mjs";
6
- import { b as _u, r as Su, a as ua, c as Pu, d as Au, e as Tu, x as Bt, f as Eu, g as Cu } from "./pako.esm-ZR78Kcp_.mjs";
7
- import { k as Mu, a as Ou, b as ju, t as da, c as Bu, v as Ru, p as Iu, q as $u, d as Nu, e as Du, f as xu, g as la, h as Uu, i as qu, j as Hu, l as Vu, m as Fu, n as Wu, o as Ju, r as Gu, s as Hr, u as Lu, w as zu, x as Ku, y as Qu, z as Zu, A as Xu, B as Yu, D as ed, E as td, F as nd, H as rd, I as ma, J as od, K as sd, L as id, M as ad, N as cd, G as Nt, C as Zo } from "./cosmwasm-B90CBMmk.mjs";
8
- import { CosmwasmWormholeCore as ud } from "./index-BK5v6OjI.mjs";
9
- import { c as dd, C as ld } from "./unsignedTransaction-CWcOEDGs.mjs";
4
+ import { X as h, Y as Ur, Z as lu, h as tt, $ as ia, a0 as aa, aa as fi, a3 as hi, N as pi, o as mu, a8 as gi, p as fu, cX as hu, a6 as yi, cY as Qo, cZ as bi, c_ as vi, c$ as wi, d0 as ki, d1 as _i, d2 as Si, d3 as pu, d4 as gu, d5 as yu, bT as bu, a9 as vu } from "./index-v0XYnBH4.mjs";
5
+ import { t as jt, l as wu, s as qr, a as Rs, c as ca, m as ku } from "./index-ApLQaDxZ.mjs";
6
+ import { b as _u, r as Su, a as ua, c as Pu, d as Au, e as Tu, x as Bt, f as Eu, g as Cu } from "./pako.esm-DW3UrHMz.mjs";
7
+ import { k as Mu, a as Ou, b as ju, t as da, c as Bu, v as Ru, p as Iu, q as $u, d as Nu, e as Du, f as xu, g as la, h as Uu, i as qu, j as Hu, l as Vu, m as Fu, n as Wu, o as Ju, r as Gu, s as Hr, u as Lu, w as zu, x as Ku, y as Qu, z as Zu, A as Xu, B as Yu, D as ed, E as td, F as nd, H as rd, I as ma, J as od, K as sd, L as id, M as ad, N as cd, G as Nt, C as Zo } from "./cosmwasm-Il1aGHnW.mjs";
8
+ import { CosmwasmWormholeCore as ud } from "./index-Digj9HEk.mjs";
9
+ import { c as dd, C as ld } from "./unsignedTransaction-CH8BOEp4.mjs";
10
10
  function md(e) {
11
11
  return e.id !== void 0 && e.pending !== void 0 && e.data !== void 0;
12
12
  }
@@ -1,6 +1,6 @@
1
- import { n as _t, s as ce, T as N, o as ot, R as Do, a as C, t as H, p as K, y as gt } from "./index-Dv2SHpnV.mjs";
1
+ import { n as _t, s as ce, T as N, o as ot, R as Do, a as C, t as H, p as K, y as gt } from "./index-BM-VcJTM.mjs";
2
2
  import { d as Uo } from "./dijkstra-BZM-8g-B.mjs";
3
- import { h as Wo } from "./index-DCFAlA0r.mjs";
3
+ import { h as Wo } from "./index-v0XYnBH4.mjs";
4
4
  /**
5
5
  * @license
6
6
  * Copyright 2019 Google LLC
@@ -1 +1 @@
1
- "use strict";var m=Object.defineProperty;var u=(d,e,t)=>e in d?m(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var i=(d,e,t)=>u(d,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./cosmwasm-CrtL_ala.js"),c=require("./index-CjaaWCsQ.js");class o{constructor(e,t,s,r){i(this,"network");i(this,"chain");i(this,"rpc");i(this,"contracts");i(this,"coreAddress");this.network=e,this.chain=t,this.rpc=s,this.contracts=r;const n=this.contracts.coreBridge;if(!n)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);this.coreAddress=n}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,t){const[s,r]=await w.CosmwasmPlatform.chainFromRpc(e),n=t[r];if(n.network!==s)throw new Error(`Network mismatch: ${n.network} != ${s}`);return new o(s,r,e,n.contracts)}async*publishMessage(e,t,s,r){throw new Error("Method not implemented.")}async*verifyMessage(e,t){throw new Error("Not implemented.")}async parseTransaction(e){const t=await this.rpc.getTx(e);if(!t)throw new Error("No transaction found for txid: "+e);return[o.parseWormholeMessageId(this.chain,this.coreAddress,t)]}async parseMessages(e){const t=await this.rpc.getTx(e);if(!t)throw new Error("No transaction found for txid: "+e);return[o.parseWormholeMessage(this.chain,this.coreAddress,t)]}static parseWormholeMessage(e,t,s){const r=s.events.filter(a=>a.type==="wasm"&&a.attributes[0].key==="_contract_address"&&a.attributes[0].value===t);if(r.length===0)throw new Error("No wormhole message found in tx");r.length>1&&console.error(`Expected single message, found ${r.length}`);const[n]=r,h=Object.fromEntries(n.attributes.map(a=>[a.key.split(".")[1],a.value]));return c.createVAA("Uint8Array",{emitterChain:e,emitterAddress:new c.UniversalAddress(c.hex.decode(h.sender)),sequence:BigInt(h.sequence),guardianSet:0,timestamp:Number(h.block_time),consistencyLevel:0,nonce:Number(h.nonce),signatures:[],payload:c.hex.decode(h.message)})}static parseWormholeMessageId(e,t,s){const r=o.parseWormholeMessage(e,t,s);return{chain:r.emitterChain,emitter:r.emitterAddress,sequence:r.sequence}}}c.registerProtocol(c._platform$3,"WormholeCore",o);exports.CosmwasmWormholeCore=o;
1
+ "use strict";var m=Object.defineProperty;var u=(d,e,t)=>e in d?m(d,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):d[e]=t;var i=(d,e,t)=>u(d,typeof e!="symbol"?e+"":e,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./cosmwasm-DpoXBVof.js"),c=require("./index-DH03XiQv.js");class o{constructor(e,t,s,r){i(this,"network");i(this,"chain");i(this,"rpc");i(this,"contracts");i(this,"coreAddress");this.network=e,this.chain=t,this.rpc=s,this.contracts=r;const n=this.contracts.coreBridge;if(!n)throw new Error(`Wormhole Token Bridge contract for domain ${t} not found`);this.coreAddress=n}getGuardianSet(e){throw new Error("Method not implemented.")}getGuardianSetIndex(){throw new Error("Method not implemented.")}getMessageFee(){throw new Error("Method not implemented.")}static async fromRpc(e,t){const[s,r]=await w.CosmwasmPlatform.chainFromRpc(e),n=t[r];if(n.network!==s)throw new Error(`Network mismatch: ${n.network} != ${s}`);return new o(s,r,e,n.contracts)}async*publishMessage(e,t,s,r){throw new Error("Method not implemented.")}async*verifyMessage(e,t){throw new Error("Not implemented.")}async parseTransaction(e){const t=await this.rpc.getTx(e);if(!t)throw new Error("No transaction found for txid: "+e);return[o.parseWormholeMessageId(this.chain,this.coreAddress,t)]}async parseMessages(e){const t=await this.rpc.getTx(e);if(!t)throw new Error("No transaction found for txid: "+e);return[o.parseWormholeMessage(this.chain,this.coreAddress,t)]}static parseWormholeMessage(e,t,s){const r=s.events.filter(a=>a.type==="wasm"&&a.attributes[0].key==="_contract_address"&&a.attributes[0].value===t);if(r.length===0)throw new Error("No wormhole message found in tx");r.length>1&&console.error(`Expected single message, found ${r.length}`);const[n]=r,h=Object.fromEntries(n.attributes.map(a=>[a.key.split(".")[1],a.value]));return c.createVAA("Uint8Array",{emitterChain:e,emitterAddress:new c.UniversalAddress(c.hex.decode(h.sender)),sequence:BigInt(h.sequence),guardianSet:0,timestamp:Number(h.block_time),consistencyLevel:0,nonce:Number(h.nonce),signatures:[],payload:c.hex.decode(h.message)})}static parseWormholeMessageId(e,t,s){const r=o.parseWormholeMessage(e,t,s);return{chain:r.emitterChain,emitter:r.emitterAddress,sequence:r.sequence}}}c.registerProtocol(c._platform$3,"WormholeCore",o);exports.CosmwasmWormholeCore=o;
@@ -1,8 +1,8 @@
1
1
  var se = Object.defineProperty;
2
2
  var oe = (s, e, t) => e in s ? se(s, e, { enumerable: !0, configurable: !0, writable: !0, value: t }) : s[e] = t;
3
3
  var d = (s, e, t) => oe(s, typeof e != "symbol" ? e + "" : e, t);
4
- import { df as l, di as T, db as y, cq as _, a8 as C, a5 as f, p as re, u as M, dm as Q, dn as ae, N as S, dd as ie, h as ce, an as X, de as N, dg as P, dp as de, dq as Z, cM as pe, dh as ge, dr as ue, ds as J, cc as fe, bP as le, bU as he } from "./index-DCFAlA0r.mjs";
5
- import { A as Ae } from "./algorand-Dm6TKWo1.mjs";
4
+ import { de as l, dh as T, da as y, cp as _, a8 as C, a5 as f, p as re, u as M, dl as Q, dm as ae, N as S, dc as ce, h as ie, an as X, dd as N, df as P, dn as de, dp as Z, cL as pe, dg as ge, dq as ue, dr as J, cb as fe, bO as le, bT as he } from "./index-v0XYnBH4.mjs";
5
+ import { A as Ae } from "./algorand-BvImDZOY.mjs";
6
6
  class ye {
7
7
  constructor(e, t, o, n, r = !1) {
8
8
  d(this, "transaction");
@@ -133,10 +133,10 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
133
133
  const p = S.decode(a.key)[0], u = S.decode(a.value.bytes);
134
134
  r.set(p, u);
135
135
  }
136
- const c = [];
136
+ const i = [];
137
137
  for (let a = 0; a < j; a++)
138
- r.has(a) && c.push(r.get(a));
139
- return f.concat(...c);
138
+ r.has(a) && i.push(r.get(a));
139
+ return f.concat(...i);
140
140
  },
141
141
  /**
142
142
  * This function is used to check if a VAA has been redeemed by looking at a specific bit
@@ -148,7 +148,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
148
148
  */
149
149
  checkBitsSet: async (s, e, t, o) => {
150
150
  let n = !1, r;
151
- const c = await s.accountInformation(t).do(), p = ie.from_obj_for_encoding(c).appsLocalState;
151
+ const i = await s.accountInformation(t).do(), p = ce.from_obj_for_encoding(i).appsLocalState;
152
152
  if (p && p.forEach((m) => {
153
153
  BigInt(m.id) === e && (r = m.keyValue);
154
154
  }), (r == null ? void 0 : r.length) === 0)
@@ -156,7 +156,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
156
156
  const u = BigInt(V), A = BigInt(8), I = o / u * u, w = l(o - I), B = Math.floor(w / K), b = Math.floor((w - B * K) / 8), U = S.encode(_.toBytes(B, 1));
157
157
  return r == null || r.forEach((m) => {
158
158
  if (m.key === U) {
159
- const v = ce.Buffer.from(m.value.bytes, "base64"), E = 1 << l(o % A);
159
+ const v = ie.Buffer.from(m.value.bytes, "base64"), E = 1 << l(o % A);
160
160
  n = (v[b] & E) != 0;
161
161
  return;
162
162
  }
@@ -177,7 +177,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
177
177
  }
178
178
  return !1;
179
179
  }
180
- }, i = class i {
180
+ }, c = class c {
181
181
  constructor(e, t, o, n) {
182
182
  d(this, "network");
183
183
  d(this, "chain");
@@ -193,31 +193,31 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
193
193
  const r = BigInt(n.coreBridge);
194
194
  if (this.coreAppId = r, this.coreAppAddress = y(r), !n.tokenBridge)
195
195
  throw new Error(`TokenBridge contract address for chain ${t} not found`);
196
- const c = BigInt(n.tokenBridge);
197
- this.tokenBridgeAppId = c, this.tokenBridgeAppAddress = y(c);
196
+ const i = BigInt(n.tokenBridge);
197
+ this.tokenBridgeAppId = i, this.tokenBridgeAppAddress = y(i);
198
198
  }
199
199
  getGuardianSet(e) {
200
200
  throw new Error("Method not implemented.");
201
201
  }
202
202
  async *verifyMessage(e, t, o) {
203
- const n = new X(e).toString(), r = await i.submitVAAHeader(this.connection, this.coreAppId, o ?? this.coreAppId, t, n);
204
- for (const c of r.txs)
205
- yield this.createUnsignedTx(c, "Core.verifyMessage");
203
+ const n = new X(e).toString(), r = await c.submitVAAHeader(this.connection, this.coreAppId, o ?? this.coreAppId, t, n);
204
+ for (const i of r.txs)
205
+ yield this.createUnsignedTx(i, "Core.verifyMessage");
206
206
  }
207
207
  static async fromRpc(e, t) {
208
208
  const [o, n] = await Ae.chainFromRpc(e), r = t[n];
209
209
  if (r.network !== o)
210
210
  throw new Error(`Network mismatch: ${r.network} !== ${o}`);
211
- return new i(o, n, e, r.contracts);
211
+ return new c(o, n, e, r.contracts);
212
212
  }
213
213
  async *publishMessage(e, t) {
214
- const o = new X(e), n = o.toString(), r = await this.connection.getTransactionParams().do(), c = g.forEmitter(this.coreAppId, o.toUint8Array()), { accounts: a, txs: p } = await i.maybeCreateStorageTx(this.connection, n, this.coreAppId, c, r);
214
+ const o = new X(e), n = o.toString(), r = await this.connection.getTransactionParams().do(), i = g.forEmitter(this.coreAppId, o.toUint8Array()), { accounts: a, txs: p } = await c.maybeCreateStorageTx(this.connection, n, this.coreAppId, i, r);
215
215
  for (const A of p)
216
216
  yield this.createUnsignedTx(A, "Core.publishMessage", !0);
217
217
  const u = N({
218
218
  from: n,
219
219
  appIndex: l(this.coreAppId),
220
- appArgs: [i.publishMessage, t, _.toBytes(0n, 8)],
220
+ appArgs: [c.publishMessage, t, _.toBytes(0n, 8)],
221
221
  accounts: a,
222
222
  onComplete: P.NoOpOC,
223
223
  suggestedParams: r
@@ -232,7 +232,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
232
232
  */
233
233
  async getMessageFee() {
234
234
  var n;
235
- const e = await this.connection.getApplicationByID(l(this.coreAppId)).do(), o = (n = de.from_obj_for_encoding(e).params.globalState) == null ? void 0 : n.find((r) => r.key === i.feeKey);
235
+ const e = await this.connection.getApplicationByID(l(this.coreAppId)).do(), o = (n = de.from_obj_for_encoding(e).params.globalState) == null ? void 0 : n.find((r) => r.key === c.feeKey);
236
236
  return o ? BigInt(o.value.uint) : 0n;
237
237
  }
238
238
  async getGuardianSetIndex() {
@@ -255,9 +255,9 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
255
255
  if (e.innerTxns && e.innerTxns.length > 0 && t.push(...e.innerTxns.flatMap((p) => this.parseTx(p))), BigInt(e.txn.txn.apid ?? 0) !== this.coreAppId || !e.logs || e.logs.length === 0)
256
256
  return t;
257
257
  const o = e.txn.txn.apaa ?? [];
258
- if (o.length !== 3 || !f.equals(new Uint8Array(o[0]), i.publishMessage))
258
+ if (o.length !== 3 || !f.equals(new Uint8Array(o[0]), c.publishMessage))
259
259
  return t;
260
- const n = _.decode(e.logs[0]), r = new X(e.txn.txn.snd).toUniversalAddress(), c = new Uint8Array(o[1]), a = _.decode(o[2]);
260
+ const n = _.decode(e.logs[0]), r = new X(e.txn.txn.snd).toUniversalAddress(), i = new Uint8Array(o[1]), a = _.decode(o[2]);
261
261
  return t.push(pe("Uint8Array", {
262
262
  emitterChain: this.chain,
263
263
  emitterAddress: r,
@@ -268,7 +268,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
268
268
  // TODO: Would need to get the full block to get the timestamp
269
269
  consistencyLevel: 0,
270
270
  nonce: Number(a),
271
- payload: c,
271
+ payload: i,
272
272
  signatures: []
273
273
  })), t;
274
274
  }
@@ -281,7 +281,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
281
281
  * @returns Address and array of TransactionSignerPairs
282
282
  */
283
283
  static async maybeCreateStorageTx(e, t, o, n, r) {
284
- const c = y(o), a = n.address(), p = [];
284
+ const i = y(o), a = n.address(), p = [];
285
285
  if (await g.storageAccountExists(e, a, o))
286
286
  return { accounts: [a], txs: p };
287
287
  r = r ?? await e.getTransactionParams().do();
@@ -295,7 +295,7 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
295
295
  const A = ue({
296
296
  from: a,
297
297
  appIndex: l(o),
298
- rekeyTo: c,
298
+ rekeyTo: i,
299
299
  suggestedParams: r
300
300
  });
301
301
  return A.fee = 0, p.push({
@@ -318,37 +318,37 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
318
318
  * @param appid Application ID
319
319
  * @returns Promise with current VAA state
320
320
  */
321
- static async submitVAAHeader(e, t, o, n, r, c) {
322
- c = c ?? await e.getTransactionParams().do();
321
+ static async submitVAAHeader(e, t, o, n, r, i) {
322
+ i = i ?? await e.getTransactionParams().do();
323
323
  let a = [];
324
324
  const p = g.forMessageId(o, {
325
325
  chain: n.emitterChain,
326
326
  sequence: n.sequence,
327
327
  emitter: n.emitterAddress
328
- }), { accounts: u, txs: A } = await i.maybeCreateStorageTx(e, r, o, p, c);
328
+ }), { accounts: u, txs: A } = await c.maybeCreateStorageTx(e, r, o, p, i);
329
329
  a.push(...A);
330
- const I = g.forGuardianSet(t, n.guardianSet), { accounts: [w], txs: B } = await i.maybeCreateStorageTx(e, r, t, I, c);
330
+ const I = g.forGuardianSet(t, n.guardianSet), { accounts: [w], txs: B } = await c.maybeCreateStorageTx(e, r, t, I, i);
331
331
  a.push(...B);
332
332
  let b = [...u, w];
333
- const U = await g.decodeLocalState(e, t, w), m = fe(n.hash), v = n.signatures.length, E = Math.ceil(v / i.MAX_SIGS_PER_TXN), G = 20, F = new Q(i.ALGO_VERIFY);
334
- for (let O = 0; O < E; O++) {
335
- const q = O * i.MAX_SIGS_PER_TXN, k = n.signatures.slice(q, q + i.MAX_SIGS_PER_TXN), te = k.length * G, H = new Uint8Array(te);
333
+ const U = await g.decodeLocalState(e, t, w), m = fe(n.hash), v = n.signatures.length, E = Math.ceil(v / c.MAX_SIGS_PER_TXN), L = 20, F = new Q(c.ALGO_VERIFY);
334
+ for (let G = 0; G < E; G++) {
335
+ const H = G * c.MAX_SIGS_PER_TXN, k = n.signatures.slice(H, H + c.MAX_SIGS_PER_TXN), te = k.length * L, q = new Uint8Array(te);
336
336
  for (let h = 0; h < k.length; h++) {
337
- const $ = k[h], ne = U.slice($.guardianIndex * G + 1, ($.guardianIndex + 1) * G + 1);
338
- H.set(ne, h * 20);
337
+ const $ = k[h], ne = U.slice($.guardianIndex * L + 1, ($.guardianIndex + 1) * L + 1);
338
+ q.set(ne, h * 20);
339
339
  }
340
340
  const z = N({
341
341
  appArgs: [
342
- i.verifySigs,
342
+ c.verifySigs,
343
343
  f.concat(...k.map((h) => f.concat(new Uint8Array([h.guardianIndex]), h.signature.encode()))),
344
- H,
344
+ q,
345
345
  m
346
346
  ],
347
347
  accounts: b,
348
348
  appIndex: l(t),
349
- from: i.ALGO_VERIFY_HASH,
349
+ from: c.ALGO_VERIFY_HASH,
350
350
  onComplete: P.NoOpOC,
351
- suggestedParams: c
351
+ suggestedParams: i
352
352
  });
353
353
  z.fee = 0, a.push({
354
354
  tx: z,
@@ -358,21 +358,21 @@ const W = 1002e3, j = 15, Y = 127, D = 8, K = Y * D, ee = Y * j, V = D * ee, x =
358
358
  }
359
359
  });
360
360
  }
361
- const L = N({
362
- appArgs: [i.verifyVaa, le(n)],
361
+ const O = N({
362
+ appArgs: [c.verifyVaa, le(n)],
363
363
  accounts: b,
364
364
  appIndex: l(t),
365
365
  from: r,
366
366
  onComplete: P.NoOpOC,
367
- suggestedParams: c
367
+ suggestedParams: i
368
368
  });
369
- return L.fee = L.fee * (2 + E), a.push({ tx: L }), { accounts: b, txs: a };
369
+ return O.fee = O.fee * (2 + E), a.push({ tx: O }), { accounts: b, txs: a };
370
370
  }
371
371
  createUnsignedTx(e, t, o = !0) {
372
372
  return new ye(e, this.network, this.chain, t, o);
373
373
  }
374
374
  };
375
- d(i, "MAX_SIGS_PER_TXN", 6), d(i, "ALGO_VERIFY_HASH", "EZATROXX2HISIRZDRGXW4LRQ46Z6IUJYYIHU3PJGP7P5IQDPKVX42N767A"), d(i, "ALGO_VERIFY", new Uint8Array([
375
+ d(c, "MAX_SIGS_PER_TXN", 6), d(c, "ALGO_VERIFY_HASH", "EZATROXX2HISIRZDRGXW4LRQ46Z6IUJYYIHU3PJGP7P5IQDPKVX42N767A"), d(c, "ALGO_VERIFY", new Uint8Array([
376
376
  6,
377
377
  32,
378
378
  4,
@@ -517,11 +517,11 @@ d(i, "MAX_SIGS_PER_TXN", 6), d(i, "ALGO_VERIFY_HASH", "EZATROXX2HISIRZDRGXW4LRQ4
517
517
  34,
518
518
  137
519
519
  ])), // global state key for message fee
520
- d(i, "feeKey", S.encode("MessageFee")), // method selector for verifying a VAA
521
- d(i, "verifyVaa", f.encode("verifyVAA")), // method selector for verifying signatures of a VAA
522
- d(i, "verifySigs", f.encode("verifySigs")), // method selector string for publishing a message
523
- d(i, "publishMessage", f.encode("publishMessage"));
524
- let R = i;
520
+ d(c, "feeKey", S.encode("MessageFee")), // method selector for verifying a VAA
521
+ d(c, "verifyVaa", f.encode("verifyVAA")), // method selector for verifying signatures of a VAA
522
+ d(c, "verifySigs", f.encode("verifySigs")), // method selector string for publishing a message
523
+ d(c, "publishMessage", f.encode("publishMessage"));
524
+ let R = c;
525
525
  he("Algorand", "WormholeCore", R);
526
526
  const we = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
527
527
  __proto__: null,
@@ -1 +1 @@
1
- "use strict";var S=Object.defineProperty;var P=(l,o,t)=>o in l?S(l,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[o]=t;var h=(l,o,t)=>P(l,typeof o!="symbol"?o+"":o,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-CjaaWCsQ.js"),U=require("./index-_6ORrwJQ.js"),A=new e.Interface(["function start((bytes32,address,address,address,address,address,uint256,uint256,uint256,uint256)) returns (address,uint16,uint64)","function receiveMessageAndSwap(bytes)"]),q=new e.Interface(["function quoteExactInputSingle((address,address,uint256,uint24,uint160)) public view returns (uint256,uint160,uint32,uint256)"]),N="https://gfx.relayers.xlabs.xyz/api/v1/swap/quote";class R{static async quoteRelayer(o,t,r){var a;if(e.isNative(t)||e.isNative(r))throw new Error("how did you get here tho?");const n=e.hex.encode(t.toUniversalAddress().toUint8Array(),!1),s=e.hex.encode(r.toUniversalAddress().toUint8Array(),!1),i={targetChain:e.toChainId(o),sourceToken:n,targetToken:s};try{const c=await e.axios.post(N,i);return BigInt(c.data.fee)}catch(c){throw e.axios.isAxiosError(c)?new Error(`Error getting relayer fee: ${(a=c.response)==null?void 0:a.statusText}`):c}}}const m=100,E={ETH:[e.Wormhole.tokenId("Arbitrum","native"),e.Wormhole.tokenId("Base","native"),e.Wormhole.tokenId("Ethereum","native"),e.Wormhole.tokenId("Optimism","native")],WETH:[e.Wormhole.tokenId("Arbitrum","0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"),e.Wormhole.tokenId("Avalanche","0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB"),e.Wormhole.tokenId("Base","0x4200000000000000000000000000000000000006"),e.Wormhole.tokenId("Bsc","0x2170Ed0880ac9A755fd29B2688956BD959F933F8"),e.Wormhole.tokenId("Ethereum","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),e.Wormhole.tokenId("Optimism","0x4200000000000000000000000000000000000006"),e.Wormhole.tokenId("Polygon","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619")],wstETH:[e.Wormhole.tokenId("Arbitrum","0x5979D7b546E38E414F7E9822514be443A4800529"),e.Wormhole.tokenId("Base","0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"),e.Wormhole.tokenId("Ethereum","0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"),e.Wormhole.tokenId("Optimism","0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"),e.Wormhole.tokenId("Polygon","0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD")],USDT:[e.Wormhole.tokenId("Arbitrum","0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"),e.Wormhole.tokenId("Avalanche","0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"),e.Wormhole.tokenId("Base","0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"),e.Wormhole.tokenId("Bsc","0x55d398326f99059fF775485246999027B3197955"),e.Wormhole.tokenId("Ethereum","0xdAC17F958D2ee523a2206206994597C13D831ec7"),e.Wormhole.tokenId("Optimism","0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"),e.Wormhole.tokenId("Polygon","0xc2132D05D31c914a87C6611C10748AEb04B58e8F"),e.Wormhole.tokenId("Celo","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e")]};class p{constructor(o,t,r,n){h(this,"network");h(this,"chain");h(this,"provider");h(this,"contracts");h(this,"chainId");h(this,"core");h(this,"tokenBridge");if(this.network=o,this.chain=t,this.provider=r,this.contracts=n,!n.portico)throw new Error("Unsupported chain, no contract addresses for: "+t);this.core=new e.EvmWormholeCore(o,t,r,n),this.tokenBridge=new U.EvmTokenBridge(o,t,r,n),this.chainId=e.networkChainToNativeChainId.get(o,t)}static async fromRpc(o,t){const[r,n]=await e.EvmPlatform.chainFromRpc(o),s=t[n];if(s.network!==r)throw new Error(`Network mismatch: ${s.network} != ${r}`);return new p(r,n,o,s.contracts)}async*transfer(o,t,r,n,s,d,i){const{minAmountStart:a,minAmountFinish:c}=i.swapAmounts;if(a===0n)throw new Error("Invalid min swap amount");if(c===0n)throw new Error("Invalid min swap amount");const f=new e.EvmAddress(o).toString(),[u,g]=e.resolveWrappedToken(this.network,this.chain,r),[T,C]=e.resolveWrappedToken(this.network,t.chain,s),k=e.canonicalAddress(g),I=e.canonicalAddress(await this.getTransferrableToken(k)),b=e.canonicalAddress(t),v=e.canonicalAddress(C),F=new Date().valueOf()%2**4,B=e.PorticoBridge.serializeFlagSet({flags:{shouldWrapNative:u,shouldUnwrapNative:T},recipientChain:e.toChainId(t.chain),bridgeNonce:F,feeTierStart:m,feeTierFinish:m,padding:new Uint8Array(19)}),y=A.encodeFunctionData("start",[[B,k.toLowerCase(),I,v.toLowerCase(),b,d,n.toString(),a.toString(),c.toString(),i.relayerFee.toString()]]),x=this.getTokenGroup(g.address.toString()),w=this.getPorticoAddress(x);u||(yield*this.approve(k,f,n,w));const W=await this.core.getMessageFee(),D={to:w,data:y,value:W+(u?n:0n)};yield this.createUnsignedTransaction(e.addFrom(D,f),"PorticoBridge.Transfer")}async*redeem(o,t){const r=e.toChain(t.payload.payload.flagSet.recipientChain),n=t.payload.payload.finalTokenAddress.toNative(r).toString(),s=this.getTokenGroup(n),d=this.getPorticoAddress(s),a=await new e.Contract(d,A.fragments,this.provider).getFunction("receiveMessageAndSwap").populateTransaction(e.serialize(t)),c=new e.EvmAddress(o).toString();yield this.createUnsignedTransaction(e.addFrom(a,c),"PorticoBridge.Redeem")}async isTransferCompleted(o){return await this.tokenBridge.tokenBridge.isTransferCompleted(e.keccak256(o.hash))}async quoteSwap(o,t,r,n){const[,s]=e.resolveWrappedToken(this.network,this.chain,o),[,d]=e.resolveWrappedToken(this.network,this.chain,t),i=e.canonicalAddress(s),a=e.canonicalAddress(d);if(e.isEqualCaseInsensitive(i,a))return n;const c=this.getQuoterAddress(r);return(await new e.Contract(c,q.fragments,this.provider).getFunction("quoteExactInputSingle").staticCall([i,a,n,m,0]))[0]}async quoteRelay(o,t){return await R.quoteRelayer(this.chain,o,t)}async getTransferrableToken(o){const t=e.Wormhole.tokenId(this.chain,o),[,r]=e.resolveWrappedToken(this.network,this.chain,t);if(this.chain==="Ethereum")return r;const n=Object.values(E).find(i=>i.find(a=>a.chain===this.chain&&e.canonicalAddress(a)===e.canonicalAddress(r)));if(!n)throw new Error(`No token group found for ${o} on ${this.chain}`);const s=n.find(i=>i.chain==="Ethereum");if(!s)throw new Error(`No Ethereum origin token found for ${o} on ${this.chain}`);const d=await this.tokenBridge.getWrappedAsset(s);return e.Wormhole.tokenId(this.chain,d.toString())}supportedTokens(){const o=[];for(const[t,r]of Object.entries(E))for(const n of r)n.chain===this.chain&&o.push({group:t,token:n});return o}getTokenGroup(o){const r=this.supportedTokens().find(n=>e.canonicalAddress(n.token)===o);if(!r)throw new Error("Token not found");return r.group}async*approve(o,t,r,n){const s=e.EvmPlatform.getTokenImplementation(this.provider,o);if(await s.allowance(t,n)<r){const i=await s.approve.populateTransaction(n,r);yield this.createUnsignedTransaction(e.addFrom(i,t),"PorticoBridge.Approve")}}createUnsignedTransaction(o,t){return new e.EvmUnsignedTransaction(e.addChainId(o,this.chainId),this.network,this.chain,t,!1)}getPorticoAddress(o){const t=this.contracts.portico;return o==="USDT"&&t.porticoPancakeSwap||t.porticoUniswap}getQuoterAddress(o){const t=this.contracts.portico;return o==="USDT"&&t.pancakeSwapQuoterV2||t.uniswapQuoterV2}}e.registerProtocol(e._platform,"PorticoBridge",p);exports.EvmPorticoBridge=p;
1
+ "use strict";var S=Object.defineProperty;var P=(l,o,t)=>o in l?S(l,o,{enumerable:!0,configurable:!0,writable:!0,value:t}):l[o]=t;var h=(l,o,t)=>P(l,typeof o!="symbol"?o+"":o,t);Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const e=require("./index-DH03XiQv.js"),U=require("./index-CBF49TfW.js"),A=new e.Interface(["function start((bytes32,address,address,address,address,address,uint256,uint256,uint256,uint256)) returns (address,uint16,uint64)","function receiveMessageAndSwap(bytes)"]),q=new e.Interface(["function quoteExactInputSingle((address,address,uint256,uint24,uint160)) public view returns (uint256,uint160,uint32,uint256)"]),N="https://gfx.relayers.xlabs.xyz/api/v1/swap/quote";class R{static async quoteRelayer(o,t,r){var a;if(e.isNative(t)||e.isNative(r))throw new Error("how did you get here tho?");const n=e.hex.encode(t.toUniversalAddress().toUint8Array(),!1),s=e.hex.encode(r.toUniversalAddress().toUint8Array(),!1),i={targetChain:e.toChainId(o),sourceToken:n,targetToken:s};try{const c=await e.axios.post(N,i);return BigInt(c.data.fee)}catch(c){throw e.axios.isAxiosError(c)?new Error(`Error getting relayer fee: ${(a=c.response)==null?void 0:a.statusText}`):c}}}const m=100,E={ETH:[e.Wormhole.tokenId("Arbitrum","native"),e.Wormhole.tokenId("Base","native"),e.Wormhole.tokenId("Ethereum","native"),e.Wormhole.tokenId("Optimism","native")],WETH:[e.Wormhole.tokenId("Arbitrum","0x82aF49447D8a07e3bd95BD0d56f35241523fBab1"),e.Wormhole.tokenId("Avalanche","0x49D5c2BdFfac6CE2BFdB6640F4F80f226bc10bAB"),e.Wormhole.tokenId("Base","0x4200000000000000000000000000000000000006"),e.Wormhole.tokenId("Bsc","0x2170Ed0880ac9A755fd29B2688956BD959F933F8"),e.Wormhole.tokenId("Ethereum","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),e.Wormhole.tokenId("Optimism","0x4200000000000000000000000000000000000006"),e.Wormhole.tokenId("Polygon","0x7ceB23fD6bC0adD59E62ac25578270cFf1b9f619")],wstETH:[e.Wormhole.tokenId("Arbitrum","0x5979D7b546E38E414F7E9822514be443A4800529"),e.Wormhole.tokenId("Base","0xc1CBa3fCea344f92D9239c08C0568f6F2F0ee452"),e.Wormhole.tokenId("Ethereum","0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0"),e.Wormhole.tokenId("Optimism","0x1F32b1c2345538c0c6f582fCB022739c4A194Ebb"),e.Wormhole.tokenId("Polygon","0x03b54A6e9a984069379fae1a4fC4dBAE93B3bCCD")],USDT:[e.Wormhole.tokenId("Arbitrum","0xFd086bC7CD5C481DCC9C85ebE478A1C0b69FCbb9"),e.Wormhole.tokenId("Avalanche","0x9702230A8Ea53601f5cD2dc00fDBc13d4dF4A8c7"),e.Wormhole.tokenId("Base","0xfde4C96c8593536E31F229EA8f37b2ADa2699bb2"),e.Wormhole.tokenId("Bsc","0x55d398326f99059fF775485246999027B3197955"),e.Wormhole.tokenId("Ethereum","0xdAC17F958D2ee523a2206206994597C13D831ec7"),e.Wormhole.tokenId("Optimism","0x94b008aA00579c1307B0EF2c499aD98a8ce58e58"),e.Wormhole.tokenId("Polygon","0xc2132D05D31c914a87C6611C10748AEb04B58e8F"),e.Wormhole.tokenId("Celo","0x48065fbBE25f71C9282ddf5e1cD6D6A887483D5e")]};class p{constructor(o,t,r,n){h(this,"network");h(this,"chain");h(this,"provider");h(this,"contracts");h(this,"chainId");h(this,"core");h(this,"tokenBridge");if(this.network=o,this.chain=t,this.provider=r,this.contracts=n,!n.portico)throw new Error("Unsupported chain, no contract addresses for: "+t);this.core=new e.EvmWormholeCore(o,t,r,n),this.tokenBridge=new U.EvmTokenBridge(o,t,r,n),this.chainId=e.networkChainToNativeChainId.get(o,t)}static async fromRpc(o,t){const[r,n]=await e.EvmPlatform.chainFromRpc(o),s=t[n];if(s.network!==r)throw new Error(`Network mismatch: ${s.network} != ${r}`);return new p(r,n,o,s.contracts)}async*transfer(o,t,r,n,s,d,i){const{minAmountStart:a,minAmountFinish:c}=i.swapAmounts;if(a===0n)throw new Error("Invalid min swap amount");if(c===0n)throw new Error("Invalid min swap amount");const f=new e.EvmAddress(o).toString(),[u,g]=e.resolveWrappedToken(this.network,this.chain,r),[T,C]=e.resolveWrappedToken(this.network,t.chain,s),k=e.canonicalAddress(g),I=e.canonicalAddress(await this.getTransferrableToken(k)),b=e.canonicalAddress(t),v=e.canonicalAddress(C),F=new Date().valueOf()%2**4,B=e.PorticoBridge.serializeFlagSet({flags:{shouldWrapNative:u,shouldUnwrapNative:T},recipientChain:e.toChainId(t.chain),bridgeNonce:F,feeTierStart:m,feeTierFinish:m,padding:new Uint8Array(19)}),y=A.encodeFunctionData("start",[[B,k.toLowerCase(),I,v.toLowerCase(),b,d,n.toString(),a.toString(),c.toString(),i.relayerFee.toString()]]),x=this.getTokenGroup(g.address.toString()),w=this.getPorticoAddress(x);u||(yield*this.approve(k,f,n,w));const W=await this.core.getMessageFee(),D={to:w,data:y,value:W+(u?n:0n)};yield this.createUnsignedTransaction(e.addFrom(D,f),"PorticoBridge.Transfer")}async*redeem(o,t){const r=e.toChain(t.payload.payload.flagSet.recipientChain),n=t.payload.payload.finalTokenAddress.toNative(r).toString(),s=this.getTokenGroup(n),d=this.getPorticoAddress(s),a=await new e.Contract(d,A.fragments,this.provider).getFunction("receiveMessageAndSwap").populateTransaction(e.serialize(t)),c=new e.EvmAddress(o).toString();yield this.createUnsignedTransaction(e.addFrom(a,c),"PorticoBridge.Redeem")}async isTransferCompleted(o){return await this.tokenBridge.tokenBridge.isTransferCompleted(e.keccak256(o.hash))}async quoteSwap(o,t,r,n){const[,s]=e.resolveWrappedToken(this.network,this.chain,o),[,d]=e.resolveWrappedToken(this.network,this.chain,t),i=e.canonicalAddress(s),a=e.canonicalAddress(d);if(e.isEqualCaseInsensitive(i,a))return n;const c=this.getQuoterAddress(r);return(await new e.Contract(c,q.fragments,this.provider).getFunction("quoteExactInputSingle").staticCall([i,a,n,m,0]))[0]}async quoteRelay(o,t){return await R.quoteRelayer(this.chain,o,t)}async getTransferrableToken(o){const t=e.Wormhole.tokenId(this.chain,o),[,r]=e.resolveWrappedToken(this.network,this.chain,t);if(this.chain==="Ethereum")return r;const n=Object.values(E).find(i=>i.find(a=>a.chain===this.chain&&e.canonicalAddress(a)===e.canonicalAddress(r)));if(!n)throw new Error(`No token group found for ${o} on ${this.chain}`);const s=n.find(i=>i.chain==="Ethereum");if(!s)throw new Error(`No Ethereum origin token found for ${o} on ${this.chain}`);const d=await this.tokenBridge.getWrappedAsset(s);return e.Wormhole.tokenId(this.chain,d.toString())}supportedTokens(){const o=[];for(const[t,r]of Object.entries(E))for(const n of r)n.chain===this.chain&&o.push({group:t,token:n});return o}getTokenGroup(o){const r=this.supportedTokens().find(n=>e.canonicalAddress(n.token)===o);if(!r)throw new Error("Token not found");return r.group}async*approve(o,t,r,n){const s=e.EvmPlatform.getTokenImplementation(this.provider,o);if(await s.allowance(t,n)<r){const i=await s.approve.populateTransaction(n,r);yield this.createUnsignedTransaction(e.addFrom(i,t),"PorticoBridge.Approve")}}createUnsignedTransaction(o,t){return new e.EvmUnsignedTransaction(e.addChainId(o,this.chainId),this.network,this.chain,t,!1)}getPorticoAddress(o){const t=this.contracts.portico;return o==="USDT"&&t.porticoPancakeSwap||t.porticoUniswap}getQuoterAddress(o){const t=this.contracts.portico;return o==="USDT"&&t.pancakeSwapQuoterV2||t.uniswapQuoterV2}}e.registerProtocol(e._platform,"PorticoBridge",p);exports.EvmPorticoBridge=p;