@wormhole-foundation/wormhole-connect 3.0.0-beta.4-development → 3.0.0-beta.5-development
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/assets/{aptos-174MkQkp.js → aptos-D9VsvuGi.js} +2 -2
- package/dist/assets/{ccip-Clh7lDFd.js → ccip-u-dcupj6.js} +1 -1
- package/dist/assets/{create-BrCILL-b.js → create-CPwTP7kz.js} +1 -1
- package/dist/assets/{evm-Dxka2v4f.js → evm-BsYn5oKw.js} +3 -3
- package/dist/assets/{evm-zU4C--zf.js → evm-PXwgtnG4.js} +2 -2
- package/dist/assets/{index-VJdR0Vsp.js → index-B3ZaqhJg.js} +1 -1
- package/dist/assets/{index-CVMIiUin.js → index-B5MVX_TK.js} +1 -1
- package/dist/assets/{index-4D-1dcJ9.js → index-B6dxRQ86.js} +1 -1
- package/dist/assets/{index-CBLLe3hL.js → index-B8PSBQZ9.js} +1 -1
- package/dist/assets/{index-CvMogzDh.js → index-BjJiAUgL.js} +1 -1
- package/dist/assets/{index-DsjGpXT9.js → index-Bpj3nBYn.js} +1 -1
- package/dist/assets/{index-CW9rA1zL.js → index-CCKwEjtb.js} +1 -1
- package/dist/assets/{index-CxTqvuay.js → index-CMzm2YRG.js} +1 -1
- package/dist/assets/{index-CAi0XN_b.js → index-C_fbsqYy.js} +1 -1
- package/dist/assets/{index-5IQaHp4s.js → index-CeaghD18.js} +1 -1
- package/dist/assets/{index-BcCKudwp.js → index-CgFxnAZU.js} +2 -2
- package/dist/assets/{index-toVQVrsP.js → index-Ci4biYvU.js} +1 -1
- package/dist/assets/{index-B6DtW1dg.js → index-Cz_gZSPA.js} +1 -1
- package/dist/assets/{index-CbDl1Nk6.js → index-D7mpnTIe.js} +1 -1
- package/dist/assets/{index-GUU3bnHw.js → index-DGS3sLO1.js} +1 -1
- package/dist/assets/{index-CTAjt_cp.js → index-DL0M3nJj.js} +1 -1
- package/dist/assets/{index-CbV0zEo3.js → index-DNbxAEYp.js} +1 -1
- package/dist/assets/{index-CdW-fp8-.js → index-DtRRvCNn.js} +1 -1
- package/dist/assets/{index-6HbyQ3jY.js → index-ZIIwf20G.js} +1 -1
- package/dist/assets/{index-DN2i-14o.js → index-wvkrobsf.js} +1 -1
- package/dist/assets/{index-Bi_XAyhv.js → index-xgCvqsOD.js} +1 -1
- package/dist/assets/{index.es-BK07yBK8.js → index.es-Cw18p-se.js} +6 -6
- package/dist/assets/{signer-Cqdo4YRC.js → signer-C3DgLdvN.js} +2 -2
- package/dist/assets/{solana-CeiXWtGd.js → solana-CGFN2NGX.js} +2 -2
- package/dist/assets/solana-D-RpLbqD.js +2 -0
- package/dist/assets/solanaEmbed.esm-BkAurkzW.js +37 -0
- package/dist/assets/{sui-TntjpiE6.js → sui-CnHcn_0B.js} +2 -2
- package/dist/assets/{tokens-wBpWq5l5.js → tokens-FDI1dtAz.js} +1 -1
- package/dist/main.js +51 -51
- package/dist/src/config/tokens.d.ts +10 -3
- package/dist/src/config/tokens.d.ts.map +1 -1
- package/dist/src/utils/coingecko.d.ts.map +1 -1
- package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts +0 -2
- package/dist/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/{account-CKUCmcgT.mjs → account-BK8xMTUI.mjs} +1 -1
- package/lib/{address-Cj96wodd.mjs → address-BWXkejmE.mjs} +1 -1
- package/lib/{address-Drr_9OcK.mjs → address-CBux52Na.mjs} +2 -2
- package/lib/{address-B9anhmbU.mjs → address-DKHa7TFU.mjs} +1 -1
- package/lib/{aptos-CUrw_CM5.js → aptos-B9U6O-dl.js} +1 -1
- package/lib/{aptos-DPIwkCrX.mjs → aptos-C180o9od.mjs} +7 -7
- package/lib/{aptos-CMqi9xnz.mjs → aptos-DdLaZAbX.mjs} +3 -3
- package/lib/{base64-BcnUThiU.mjs → base64-Dmj19Uvu.mjs} +1 -1
- package/lib/{blake2b-CnkNeJT4.mjs → blake2b-CgbIfNRX.mjs} +1 -1
- package/lib/{browser-ponyfill-oWZrCgRw.mjs → browser-ponyfill-BecG2Lnb.mjs} +1 -1
- package/lib/{ccip-DjEPg__u.mjs → ccip-DZPSxGo-.mjs} +1 -1
- package/lib/{ccip-tbJnHDO1.js → ccip-Wh0YfVvY.js} +1 -1
- package/lib/{chain-CNVMEdrk.mjs → chain-sKZNJgPZ.mjs} +1 -1
- package/lib/{chunk-IMTC3J2M-B7fKwIuX.mjs → chunk-IMTC3J2M-DKLPKqnP.mjs} +3 -3
- package/lib/{constants-uvbe2N_4.mjs → constants-BpnA30ER.mjs} +1 -1
- package/lib/{constants-D8PkP8FD.js → constants-Ricf667V.js} +1 -1
- package/lib/{contract-DANWVftx.mjs → contract-BVaUamai.mjs} +1 -1
- package/lib/{create-B9LwWha4.mjs → create-CQ6n4Ga8.mjs} +1 -1
- package/lib/{evm-C51GRwXY.mjs → evm-BfosdVcf.mjs} +9 -9
- package/lib/{evm-B552wdhN.mjs → evm-C-aa4dBG.mjs} +9 -9
- package/lib/{evm-D-QB4hVf.js → evm-CgF7zwuT.js} +3 -3
- package/lib/executor.js +1 -1
- package/lib/executor.mjs +207 -193
- package/lib/hosted.js +1 -1
- package/lib/hosted.mjs +1 -1
- package/lib/{index-Dw7INWis.mjs → index-07cEoDZD.mjs} +4 -4
- package/lib/{index-DoFo485M.mjs → index-B36we0ml.mjs} +7 -7
- package/lib/{index-CKg04pdA.mjs → index-B5XhLD_L.mjs} +5 -5
- package/lib/{index-BR4w3fuE.mjs → index-B9hin5U8.mjs} +5 -5
- package/lib/{index-DQ5bBanH.js → index-BMxhTd-v.js} +1 -1
- package/lib/{index-CEXcD8Mw.mjs → index-BUfjw4S2.mjs} +4 -4
- package/lib/{index-DHAgduQ-.mjs → index-BUlzgqNa.mjs} +4 -4
- package/lib/{index-BlJpOhTM.mjs → index-Batb-GTa.mjs} +5 -5
- package/lib/{index-CT2-qOL1.mjs → index-Bb8InrQU.mjs} +2 -2
- package/lib/{index-DlREYA36.mjs → index-BjaIqtyy.mjs} +2 -2
- package/lib/{index-CGHEayyy.mjs → index-ByaMu-qS.mjs} +21697 -21680
- package/lib/{index-C7eKFnUC.mjs → index-C-_xpVRa.mjs} +5 -5
- package/lib/{index-B4NYDFvU.mjs → index-CKaF7Gzs.mjs} +5 -5
- package/lib/{index-CYdhveYx.mjs → index-CLy98PXT.mjs} +6 -6
- package/lib/{index-DSSOE7Me.mjs → index-CjroDahP.mjs} +2 -2
- package/lib/{index-BO0DC-jc.mjs → index-Cry2AYTm.mjs} +3 -3
- package/lib/{index-pN0Dgjjf.mjs → index-CsdQttEt.mjs} +5 -5
- package/lib/{index-C9XIIFQK.mjs → index-Cu7gFSJv.mjs} +1 -1
- package/lib/{index-mXHkgOxH.mjs → index-Cx-ODuWg.mjs} +4 -4
- package/lib/{index-DD-AZ3hI.mjs → index-D8AYsaEU.mjs} +5 -5
- package/lib/{index-CM_IP492.mjs → index-DDBLdcME.mjs} +6 -6
- package/lib/{index-BAuH_G93.mjs → index-DNcx7dMI.mjs} +5 -5
- package/lib/{index-l0sxQXRT.mjs → index-DRleG63r.mjs} +1 -1
- package/lib/{index-CfC3_uPF.mjs → index-DdvRmaTh.mjs} +7 -7
- package/lib/{index-BQ0RlDhv.mjs → index-DgIxcujP.mjs} +6 -6
- package/lib/{index-xc0U6vWT.js → index-DgerPSSh.js} +1 -1
- package/lib/{index-CCRPy0B_.mjs → index-DyvQhGPY.mjs} +2 -2
- package/lib/index-FrHiagMc.js +355 -0
- package/lib/{index-4UEV-pyS.js → index-IyP4Vr-d.js} +1 -1
- package/lib/{index-B1XGfrNH.mjs → index-aA-2Ygs3.mjs} +1 -1
- package/lib/{index-2f5GRlqp.mjs → index-rAnJYuJr.mjs} +1 -1
- package/lib/{index.es-BmrEYzpc.js → index.es-DRN2pshI.js} +1 -1
- package/lib/{index.es-CWb9-nuQ.mjs → index.es-DlSoduAW.mjs} +7 -7
- package/lib/index.js +1 -1
- package/lib/index.mjs +1 -1
- package/lib/mayan.mjs +10 -10
- package/lib/{mint-DVxIczlI.mjs → mint-C3SdQH_S.mjs} +2 -2
- package/lib/ntt.mjs +10 -10
- package/lib/{platform-D-nUFU0e.mjs → platform-CUeBR_i4.mjs} +4 -4
- package/lib/{platform-PaIJsXKV.mjs → platform-Czq0KkFa.mjs} +4 -4
- package/lib/{platform-CbDx4hex.mjs → platform-Droe0nZu.mjs} +4 -4
- package/lib/{provider-jsonrpc-C_IZFSfB.mjs → provider-jsonrpc-CVWSLk8g.mjs} +2 -2
- package/lib/{sha3-DQQvDwj1.mjs → sha3-BMK6V2DM.mjs} +1 -1
- package/lib/{signer-CsMX8mEc.mjs → signer-CYkXKdE1.mjs} +2 -2
- package/lib/{solana-CdLrMjvN.mjs → solana-33GlUplS.mjs} +6 -6
- package/lib/{solana-Bo3NnEnJ.js → solana-Bbay1OHx.js} +1 -1
- package/lib/solana-Bs7_C3BS.mjs +18 -0
- package/lib/{solanaEmbed.esm-CYlp6Icj.js → solanaEmbed.esm-Du3QS4H_.js} +1 -1
- package/lib/{solanaEmbed.esm-DiWgOIVr.mjs → solanaEmbed.esm-baNcElxT.mjs} +3 -3
- package/lib/src/config/tokens.d.ts +10 -3
- package/lib/src/config/tokens.d.ts.map +1 -1
- package/lib/src/utils/coingecko.d.ts.map +1 -1
- package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts +0 -2
- package/lib/src/views/v2/Bridge/AssetPicker/TokenList.d.ts.map +1 -1
- package/lib/{sui-BSLo7-bI.mjs → sui-BJsKaZg2.mjs} +8 -8
- package/lib/{sui-z1y1QOrV.js → sui-Crq4-j1d.js} +1 -1
- package/lib/{sui-CXBd6k8g.mjs → sui-D0FrnfOj.mjs} +3 -3
- package/lib/{tokens-GzwBLIsP.mjs → tokens-CF4wGtlH.mjs} +4 -4
- package/lib/{tokens-C9OdyBk_.js → tokens-Cz8rSlKv.js} +1 -1
- package/lib/{units-DP5zqyxn.mjs → units-YkCOGDr9.mjs} +2 -2
- package/lib/{unsignedTransaction-fSrwDjHx.mjs → unsignedTransaction-C0WXQMmv.mjs} +3 -3
- package/lib/{web3-DCo8oN-v.mjs → web3-B3Usc-Qj.mjs} +1 -1
- package/package.json +2 -2
- package/dist/assets/events-Qrc8Qc0_.js +0 -1
- package/dist/assets/solana-DqfcEf7L.js +0 -2
- package/dist/assets/solanaEmbed.esm-BW4sfcDG.js +0 -37
- package/lib/index-CUZbT8Rs.js +0 -355
- package/lib/solana-C_0khyJw.mjs +0 -18
|
@@ -1 +1 @@
|
|
|
1
|
-
var q=Object.defineProperty;var j=(t,e,s)=>e in t?q(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var y=(t,e,s)=>j(t,typeof e!="symbol"?e+"":e,s);import{P as u,bZ as Y,b_ as I,b$ as x,c0 as ee,c1 as ne,c2 as se,d as M,T as ae,cn as O,bQ as E,cc as N,aQ as te,aI as b,cd as B,D as v,cb as ie,K as re,ce as D,aJ as me}from"../main.js";import{P as _,c as U,i as R}from"./index-CW9rA1zL.js";import{r as oe}from"./chain-CxM3TvYC.js";import{b as ue,e as le}from"./signer-Cqdo4YRC.js";const h=new u("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new u("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const A=new u("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new u("So11111111111111111111111111111111111111112");new u("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class ce extends Error{constructor(e){super(e)}}class de extends ce{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const ge=Y([I("mintAuthorityOption"),x("mintAuthority"),ee("supply"),ne("decimals"),se("isInitialized"),I("freezeAuthorityOption"),x("freezeAuthority")]);ge.span;function fe(t,e,s=!1,a=h,i=A){if(!s&&!u.isOnCurve(e.toBuffer()))throw new de;const[n]=u.findProgramAddressSync([e.toBuffer(),a.toBuffer(),t.toBuffer()],i);return n}function pe(t,e,s,a,i=h,n=A){return ye(t,e,s,a,M.Buffer.alloc(0),i,n)}function ye(t,e,s,a,i,n=h,r=A){const m=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:O.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1}];return new ae({keys:m,programId:r,data:i})}function L(t,e){return new _(V.TokenMessengerIdl,new u(t),e===void 0?{connection:null}:e)}function Me(t,e){return L(t,U(e))}function W(t,e){return new _(V.MessageTransmitterIdl,new u(t),e===void 0?{connection:null}:e)}function Se(t,e){return W(t,U(e))}const o=(t,e,s)=>{const a=[M.Buffer.from(R.bytes.utf8.encode(t))];if(s)for(const n of s)typeof n=="string"?a.push(M.Buffer.from(R.bytes.utf8.encode(n))):Array.isArray(n)?a.push(M.Buffer.from(n)):M.Buffer.isBuffer(n)?a.push(n):a.push(n.toBuffer());const i=u.findProgramAddressSync(a,e);return{publicKey:i[0],bump:i[1]}};function ke(t,e,s,a,i,n,r,m,l){const c=o("message_transmitter",t),d=o("token_messenger",e),f=o("token_minter",e),p=o("local_token",e,[s]),S=o("remote_token_messenger",e,[a.toString()]),k=o("sender_authority",e),P=L(e),T=o("__event_authority",e);return P.methods.depositForBurn({amount:new E(m.toString()),destinationDomain:a,mintRecipient:new u(r.toUint8Array())}).accounts({owner:i,senderAuthorityPda:k.publicKey,burnTokenAccount:n,messageTransmitter:c.publicKey,tokenMessenger:d.publicKey,remoteTokenMessenger:S.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:s,messageTransmitterProgram:t,tokenMessengerMinterProgram:e,tokenProgram:h,eventAuthority:T.publicKey,eventRentPayer:i,messageSentEventData:l}).instruction()}const C=6400n;function z(t){return(t-BigInt(1))/C*C+BigInt(1)}function F(t,e,s){const a=e.toString();return o("used_nonces",s,[a,z(t).toString()]).publicKey}async function he(t,e,s,a,i,n){const r=M.Buffer.from(N.serialize(a)),m=M.Buffer.from(te.decode(i)),l=new u(s),c=new u(a.payload.burnToken.toUint8Array()),d=new b(a.payload.mintRecipient).unwrap(),f=n?new u(n):d,p=a.sourceDomain.toString(),S=o("message_transmitter",t),k=o("token_messenger",e),P=o("token_minter",e),T=o("local_token",e,[l]),H=o("remote_token_messenger",e,[p]),G=o("token_pair",e,[p,c]),X=o("custody",e,[l]),Q=o("message_transmitter_authority",t,[e]).publicKey,$=F(a.nonce,a.sourceDomain,t),J=o("__event_authority",t),Z=o("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:k.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:H.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:T.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:G.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:d}),g.push({isSigner:!1,isWritable:!0,pubkey:X.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:h}),g.push({isSigner:!1,isWritable:!1,pubkey:Z.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const K=W(t);return K.methods.receiveMessage({message:r,attestation:m}).accounts({payer:f,caller:f,authorityPda:Q,messageTransmitter:S.publicKey,usedNonces:$,receiver:e,systemProgram:O.programId,eventAuthority:J.publicKey,program:K.programId}).remainingAccounts(g).transaction()}class w{constructor(e,s,a,i){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var m,l;if(this.network=e,this.chain=s,this.connection=a,this.contracts=i,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=(m=i.cctp)==null?void 0:m.messageTransmitter;if(!n)throw new Error(`Circle Messenge Transmitter contract for domain ${s} not found`);this.messageTransmitter=Se(new u(n),this.connection);const r=(l=i.cctp)==null?void 0:l.tokenMessenger;if(!r)throw new Error(`Circle Token Messenger contract for domain ${s} not found`);this.tokenMessenger=Me(new u(r),this.connection)}static async fromRpc(e,s){const[a,i]=await ue.chainFromRpc(e),n=s[i];if(n.network!==a)throw new Error(`Network mismatch: ${n.network} != ${a}`);return new w(a,i,e,n.contracts)}async*redeem(e,s,a){const i=new u(B.get(this.network,this.chain)),n=new b(e).unwrap(),r=new b(s.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(r)){const d=new v().add(pe(n,r,n,i));d.feePayer=n,yield this.createUnsignedTx({transaction:d},"CircleBridge.CreateATA")}const l=await he(this.messageTransmitter.programId,this.tokenMessenger.programId,i,s,a,n),c=new v;c.feePayer=n,c.add(l),yield this.createUnsignedTx({transaction:c},"CircleBridge.Redeem")}async*transfer(e,s,a){const i=new u(B.get(this.network,this.chain)),n=new b(e).unwrap(),r=fe(i,n),m=ie.get(this.network,s.chain),l=s.address.toUniversalAddress(),c=re.generate(),d=await ke(this.messageTransmitter.programId,this.tokenMessenger.programId,i,m,n,r,l,a,c.publicKey),f=new v;f.feePayer=n,f.add(d),yield this.createUnsignedTx({transaction:f,signers:[c]},"CircleBridge.Transfer")}async isTransferCompleted(e){const s=F(e.nonce,e.sourceDomain,this.messageTransmitter.programId),a=z(e.nonce),{usedNonces:i}=await this.messageTransmitter.account.usedNonces.fetch(s),n=Number(e.nonce-a),r=i[Math.floor(n/64)];if(!r)throw new Error("Invalid nonce byte index");const m=n%64,l=new E((BigInt(1)<<BigInt(m)).toString());return!r.and(l).isZero()}async parseTransactionDetails(e){const s=await this.connection.getTransaction(e);if(!s||!s.meta)throw new Error("Transaction not found");const a=s.transaction.message.getAccountKeys();if(a.length<2)throw new Error("No message account found");const i=a.get(1),n=await this.connection.getAccountInfo(i);if(!n)throw new Error("No account data found");const r=new Uint8Array(n.data).slice(44),[m,l]=N.deserialize(r),{payload:c}=m,d=c.messageSender,f=c.mintRecipient,p=D(this.network,m.sourceDomain),S=D(this.network,m.destinationDomain),k={chain:p,address:c.burnToken};return{from:{chain:p,address:d},to:{chain:S,address:f},token:k,amount:c.amount,message:m,id:{hash:l}}}createUnsignedTx(e,s,a=!1){return new le(e,this.network,this.chain,s,a)}}const be={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"}]},Pe={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"}]};oe(me,"CircleBridge",w);const V={TokenMessengerIdl:be,MessageTransmitterIdl:Pe};export{w as SolanaCircleBridge,z as calculateFirstNonce,ke as createDepositForBurnInstruction,W as createMessageTransmitterProgramInterface,Se as createReadOnlyMessageTransmitterProgramInterface,Me as createReadOnlyTokenMessengerProgramInterface,he as createReceiveMessageInstruction,L as createTokenMessengerProgramInterface,o as findProgramAddress,V as idl,F as nonceAccount};
|
|
1
|
+
var Z=Object.defineProperty;var j=(t,e,s)=>e in t?Z(t,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):t[e]=s;var y=(t,e,s)=>j(t,typeof e!="symbol"?e+"":e,s);import{P as u,b_ as Y,b$ as I,c0 as x,c1 as ee,c2 as ne,c3 as se,d as M,T as ae,co as O,bR as E,cd as N,aQ as te,aI as b,ce as B,D as v,cc as ie,K as re,cf as D,aJ as me}from"../main.js";import{P as _,c as U,i as R}from"./index-CCKwEjtb.js";import{r as oe}from"./chain-CxM3TvYC.js";import{b as ue,e as le}from"./signer-C3DgLdvN.js";const h=new u("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new u("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const A=new u("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new u("So11111111111111111111111111111111111111112");new u("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class ce extends Error{constructor(e){super(e)}}class de extends ce{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const ge=Y([I("mintAuthorityOption"),x("mintAuthority"),ee("supply"),ne("decimals"),se("isInitialized"),I("freezeAuthorityOption"),x("freezeAuthority")]);ge.span;function fe(t,e,s=!1,a=h,i=A){if(!s&&!u.isOnCurve(e.toBuffer()))throw new de;const[n]=u.findProgramAddressSync([e.toBuffer(),a.toBuffer(),t.toBuffer()],i);return n}function pe(t,e,s,a,i=h,n=A){return ye(t,e,s,a,M.Buffer.alloc(0),i,n)}function ye(t,e,s,a,i,n=h,r=A){const m=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:O.programId,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1}];return new ae({keys:m,programId:r,data:i})}function L(t,e){return new _(V.TokenMessengerIdl,new u(t),e===void 0?{connection:null}:e)}function Me(t,e){return L(t,U(e))}function W(t,e){return new _(V.MessageTransmitterIdl,new u(t),e===void 0?{connection:null}:e)}function Se(t,e){return W(t,U(e))}const o=(t,e,s)=>{const a=[M.Buffer.from(R.bytes.utf8.encode(t))];if(s)for(const n of s)typeof n=="string"?a.push(M.Buffer.from(R.bytes.utf8.encode(n))):Array.isArray(n)?a.push(M.Buffer.from(n)):M.Buffer.isBuffer(n)?a.push(n):a.push(n.toBuffer());const i=u.findProgramAddressSync(a,e);return{publicKey:i[0],bump:i[1]}};function ke(t,e,s,a,i,n,r,m,l){const c=o("message_transmitter",t),d=o("token_messenger",e),f=o("token_minter",e),p=o("local_token",e,[s]),S=o("remote_token_messenger",e,[a.toString()]),k=o("sender_authority",e),P=L(e),T=o("__event_authority",e);return P.methods.depositForBurn({amount:new E(m.toString()),destinationDomain:a,mintRecipient:new u(r.toUint8Array())}).accounts({owner:i,senderAuthorityPda:k.publicKey,burnTokenAccount:n,messageTransmitter:c.publicKey,tokenMessenger:d.publicKey,remoteTokenMessenger:S.publicKey,tokenMinter:f.publicKey,localToken:p.publicKey,burnTokenMint:s,messageTransmitterProgram:t,tokenMessengerMinterProgram:e,tokenProgram:h,eventAuthority:T.publicKey,eventRentPayer:i,messageSentEventData:l}).instruction()}const C=6400n;function z(t){return(t-BigInt(1))/C*C+BigInt(1)}function F(t,e,s){const a=e.toString();return o("used_nonces",s,[a,z(t).toString()]).publicKey}async function he(t,e,s,a,i,n){const r=M.Buffer.from(N.serialize(a)),m=M.Buffer.from(te.decode(i)),l=new u(s),c=new u(a.payload.burnToken.toUint8Array()),d=new b(a.payload.mintRecipient).unwrap(),f=n?new u(n):d,p=a.sourceDomain.toString(),S=o("message_transmitter",t),k=o("token_messenger",e),P=o("token_minter",e),T=o("local_token",e,[l]),H=o("remote_token_messenger",e,[p]),G=o("token_pair",e,[p,c]),X=o("custody",e,[l]),$=o("message_transmitter_authority",t,[e]).publicKey,J=F(a.nonce,a.sourceDomain,t),Q=o("__event_authority",t),q=o("__event_authority",e),g=[];g.push({isSigner:!1,isWritable:!1,pubkey:k.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:H.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:P.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:T.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:G.publicKey}),g.push({isSigner:!1,isWritable:!0,pubkey:d}),g.push({isSigner:!1,isWritable:!0,pubkey:X.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:h}),g.push({isSigner:!1,isWritable:!1,pubkey:q.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const K=W(t);return K.methods.receiveMessage({message:r,attestation:m}).accounts({payer:f,caller:f,authorityPda:$,messageTransmitter:S.publicKey,usedNonces:J,receiver:e,systemProgram:O.programId,eventAuthority:Q.publicKey,program:K.programId}).remainingAccounts(g).transaction()}class w{constructor(e,s,a,i){y(this,"network");y(this,"chain");y(this,"connection");y(this,"contracts");y(this,"tokenMessenger");y(this,"messageTransmitter");var m,l;if(this.network=e,this.chain=s,this.connection=a,this.contracts=i,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=(m=i.cctp)==null?void 0:m.messageTransmitter;if(!n)throw new Error(`Circle Messenge Transmitter contract for domain ${s} not found`);this.messageTransmitter=Se(new u(n),this.connection);const r=(l=i.cctp)==null?void 0:l.tokenMessenger;if(!r)throw new Error(`Circle Token Messenger contract for domain ${s} not found`);this.tokenMessenger=Me(new u(r),this.connection)}static async fromRpc(e,s){const[a,i]=await ue.chainFromRpc(e),n=s[i];if(n.network!==a)throw new Error(`Network mismatch: ${n.network} != ${a}`);return new w(a,i,e,n.contracts)}async*redeem(e,s,a){const i=new u(B.get(this.network,this.chain)),n=new b(e).unwrap(),r=new b(s.payload.mintRecipient).unwrap();if(!await this.connection.getAccountInfo(r)){const d=new v().add(pe(n,r,n,i));d.feePayer=n,yield this.createUnsignedTx({transaction:d},"CircleBridge.CreateATA")}const l=await he(this.messageTransmitter.programId,this.tokenMessenger.programId,i,s,a,n),c=new v;c.feePayer=n,c.add(l),yield this.createUnsignedTx({transaction:c},"CircleBridge.Redeem")}async*transfer(e,s,a){const i=new u(B.get(this.network,this.chain)),n=new b(e).unwrap(),r=fe(i,n),m=ie.get(this.network,s.chain),l=s.address.toUniversalAddress(),c=re.generate(),d=await ke(this.messageTransmitter.programId,this.tokenMessenger.programId,i,m,n,r,l,a,c.publicKey),f=new v;f.feePayer=n,f.add(d),yield this.createUnsignedTx({transaction:f,signers:[c]},"CircleBridge.Transfer")}async isTransferCompleted(e){const s=F(e.nonce,e.sourceDomain,this.messageTransmitter.programId),a=z(e.nonce),{usedNonces:i}=await this.messageTransmitter.account.usedNonces.fetch(s),n=Number(e.nonce-a),r=i[Math.floor(n/64)];if(!r)throw new Error("Invalid nonce byte index");const m=n%64,l=new E((BigInt(1)<<BigInt(m)).toString());return!r.and(l).isZero()}async parseTransactionDetails(e){const s=await this.connection.getTransaction(e);if(!s||!s.meta)throw new Error("Transaction not found");const a=s.transaction.message.getAccountKeys();if(a.length<2)throw new Error("No message account found");const i=a.get(1),n=await this.connection.getAccountInfo(i);if(!n)throw new Error("No account data found");const r=new Uint8Array(n.data).slice(44),[m,l]=N.deserialize(r),{payload:c}=m,d=c.messageSender,f=c.mintRecipient,p=D(this.network,m.sourceDomain),S=D(this.network,m.destinationDomain),k={chain:p,address:c.burnToken};return{from:{chain:p,address:d},to:{chain:S,address:f},token:k,amount:c.amount,message:m,id:{hash:l}}}createUnsignedTx(e,s,a=!1){return new le(e,this.network,this.chain,s,a)}}const be={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"}]},Pe={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"}]};oe(me,"CircleBridge",w);const V={TokenMessengerIdl:be,MessageTransmitterIdl:Pe};export{w as SolanaCircleBridge,z as calculateFirstNonce,ke as createDepositForBurnInstruction,W as createMessageTransmitterProgramInterface,Se as createReadOnlyMessageTransmitterProgramInterface,Me as createReadOnlyTokenMessengerProgramInterface,he as createReceiveMessageInstruction,L as createTokenMessengerProgramInterface,o as findProgramAddress,V as idl,F as nonceAccount};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var T=Object.defineProperty;var
|
|
1
|
+
var T=Object.defineProperty;var p=(i,t,e)=>t in i?T(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var s=(i,t,e)=>p(i,typeof t!="symbol"?t+"":t,e);import{cm as l,af as m,bG as g,ak as d,c4 as y,c7 as o,c9 as f,cb as b,ad as u}from"../main.js";import{E as k,a as C}from"./index-B8PSBQZ9.js";import{C as v}from"./contract-CiHLuMan.js";import{E as h}from"./evm-PXwgtnG4.js";import{r as A}from"./chain-CxM3TvYC.js";import"./create-CPwTP7kz.js";import"./provider-jsonrpc-B1nSkRdE.js";class c{constructor(t,e,a,n){s(this,"network");s(this,"chain");s(this,"provider");s(this,"contracts");s(this,"chainId");s(this,"core");s(this,"gatewayAddress");s(this,"gateway");s(this,"tbtcTokenAddr");if(this.network=t,this.chain=e,this.provider=a,this.contracts=n,this.network!=="Mainnet")throw new Error("TBTC is only supported on Mainnet");if(!this.contracts.tbtc)throw new Error("TBTC contract address is required");const r=l.getNativeTbtcToken(this.chain);if(!r)throw new Error("Native tbtc token not found");this.chainId=m.get(t,e),this.core=new k(t,e,a,n),this.gatewayAddress=this.contracts.tbtc,this.gateway=new v(this.gatewayAddress,["function sendTbtc(uint256 amount, uint16 recipientChain, bytes32 recipient, uint256 arbiterFee, uint32 nonce) payable returns (uint64)","function receiveTbtc(bytes calldata encodedVm)"],a),this.tbtcTokenAddr=g(r)}static async fromRpc(t,e){const[a,n]=await h.chainFromRpc(t),r=e[n];if(r.network!==a)throw new Error(`Network mismatch: ${r.network} != ${a}`);return new c(a,n,t,r.contracts)}async*transfer(t,e,a){const n=new d(t).toString(),r=await this.gateway.sendTbtc.populateTransaction(a,y(e.chain),e.address.toUniversalAddress().toUint8Array(),0n,0n);r.value=await this.core.getMessageFee(),yield*this.approve(n,a,this.gatewayAddress),yield this.createUnsignedTransaction(o(r,n),"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");const a=new d(t).toString(),n=await this.gateway.receiveTbtc.populateTransaction(f(e));yield this.createUnsignedTransaction(o(n,a),"TBTCBridge.Redeem")}async*approve(t,e,a){const n=h.getTokenImplementation(this.provider,this.tbtcTokenAddr);if(await n.allowance(t,a)<e){const w=await n.approve.populateTransaction(a,e);yield this.createUnsignedTransaction(o(w,t),"TBTC.Approve")}}createUnsignedTransaction(t,e){return new C(b(t,this.chainId),this.network,this.chain,e,!1)}}A(u,"TBTCBridge",c);export{c as EvmTBTCBridge};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var A=Object.defineProperty;var B=(d,e,s)=>e in d?A(d,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):d[e]=s;var o=(d,e,s)=>B(d,typeof e!="symbol"?e+"":e,s);import{N as p,l as g,O as w,P as u}from"./chunk-IMTC3J2M-Cf0gtUo3.js";import{
|
|
1
|
+
var A=Object.defineProperty;var B=(d,e,s)=>e in d?A(d,e,{enumerable:!0,configurable:!0,writable:!0,value:s}):d[e]=s;var o=(d,e,s)=>B(d,typeof e!="symbol"?e+"":e,s);import{N as p,l as g,O as w,P as u}from"./chunk-IMTC3J2M-Cf0gtUo3.js";import{cL as S,ce as I,cc as U,cj as D,aQ as f,cd as l,cf as T}from"../main.js";import{A as R}from"./aptos-D9VsvuGi.js";import{A as E}from"./unsignedTransaction-DsxtoHjl.js";import{r as $}from"./chain-CxM3TvYC.js";import"./index-CEwrJRrR.js";import"./base64-CNiYPz6A.js";const N=[["Mainnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000019bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d0000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765177e17751820e4b4371873ca8c30279be63bdea63b88ed0f2239c2eea10f17729bce6734f7b63e835108e3bd8c36743d4709fe435f44791918801d0989640a9d000001070b000e010e02110011010102"}],["Testnet",{depositForBurn:"0xa11ceb0b0700000a0701000802080e031614042a04052e30075e870108e5014000000001000201030004000001050701000100060b0001070304010801020805060108010309080900010002010205060c030e05050208000b010108020108020105010b0101090003060c0b01010900030108000004060c08000e0501030e66756e6769626c655f6173736574066f626a656374167072696d6172795f66756e6769626c655f73746f72650f746f6b656e5f6d657373656e6765720d46756e6769626c654173736574064f626a656374084d6574616461746111616464726573735f746f5f6f626a656374087769746864726177106465706f7369745f666f725f6275726e00000000000000000000000000000000000000000000000000000000000000015f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b90000010f0b0438000c060a000b060b0138010c050b000b050b020b0311020102",handleReceiveMessage:"0xa11ceb0b0700000a0601000402040403080c051416072a53087d40000001010002000000030203000101040304000103060c0a020a020003060c060a02060a020108000101136d6573736167655f7472616e736d69747465720f746f6b656e5f6d657373656e67657207526563656970740f726563656976655f6d6573736167651668616e646c655f726563656976655f6d657373616765081e86cebf457a0c6004f35bd648a2794698f52e0dde09a48619dcd3d4cc23d95f9b937419dda90aa06c1836b7847f65bbbe3f1217567758dc2488be31a477b9000001070b000e010e02110011010102"}]],v=S(N,[0,1]);class b{constructor(e,s,n,t){o(this,"network");o(this,"chain");o(this,"provider");o(this,"contracts");o(this,"usdcId");o(this,"tokenMessengerId");o(this,"messageTransmitterId");o(this,"moveScripts");var a,i,c;if(this.network=e,this.chain=s,this.provider=n,this.contracts=t,e==="Devnet")throw new Error("CircleBridge not supported on Devnet");const r=I.get(this.network,this.chain);if(!r)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!((a=t.cctp)!=null&&a.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${s} not found`);if(!((i=t.cctp)!=null&&i.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${s} not found`);if(!v.has(e))throw new Error("No Aptos CCTP move scripts found");this.usdcId=r,this.tokenMessengerId=(c=t.cctp)==null?void 0:c.tokenMessenger,this.messageTransmitterId=t.cctp.messageTransmitter,this.moveScripts=v.get(e)}async*transfer(e,s,n){const t=new p(U.get(this.network,s.chain)),r=g.from(this.usdcId),a=g.from(s.address.toUniversalAddress().toUint8Array()),i=[new w(n),t,a,r],c={bytecode:this.moveScripts.depositForBurn,functionArguments:i};yield this.createUnsignedTx(c,"Aptos.CircleBridge.Transfer")}async isTransferCompleted(e){const s=new p(e.sourceDomain).bcsToBytes(),n=new w(e.nonce).bcsToBytes(),t=D(new Uint8Array([...s,45,...n])),r=f.encode(t);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[r]}}))[0]}async*redeem(e,s,n){const t=[u.U8(l.serialize(s)),u.U8(f.decode(n))],r={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:t};yield this.createUnsignedTx(r,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(e){var h;const s=await this.provider.getTransactionByHash({transactionHash:e}),n=this.messageTransmitterId.replace(/^0x0+/,"0x"),t=(h=s.events)==null?void 0:h.find(x=>x.type===`${n}::message_transmitter::MessageSent`);if(!t)throw new Error("No MessageSent event found");const r=f.decode(t.data.message),[a,i]=l.deserialize(r),{payload:c}=a,C=c.messageSender,k=c.mintRecipient,m=T(this.network,a.sourceDomain),y=T(this.network,a.destinationDomain),M={chain:m,address:c.burnToken};return{from:{chain:m,address:C},to:{chain:y,address:k},token:M,amount:c.amount,message:a,id:{hash:i}}}static async fromRpc(e,s){const[n,t]=await R.chainFromRpc(e),r=s[t];if(r.network!==n)throw new Error(`Network mismatch: ${r.network} != ${n}`);return new b(n,t,e,r.contracts)}createUnsignedTx(e,s,n=!1){return new E(e,this.network,this.chain,s,n)}}$("Aptos","CircleBridge",b);export{b as AptosCircleBridge};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
var k=Object.defineProperty;var v=(u,s,t)=>s in u?k(u,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[s]=t;var i=(u,s,t)=>v(u,typeof s!="symbol"?s+"":s,t);import{T as f,S as w}from"./sui-
|
|
1
|
+
var k=Object.defineProperty;var v=(u,s,t)=>s in u?k(u,s,{enumerable:!0,configurable:!0,writable:!0,value:t}):u[s]=t;var i=(u,s,t)=>v(u,typeof s!="symbol"?s+"":s,t);import{T as f,S as w}from"./sui-CnHcn_0B.js";import{cL as C,ce as S,cc as _,cd as b,aQ as y,cf as T}from"../main.js";import{S as M}from"./unsignedTransaction-arVvzoJx.js";import{r as x}from"./chain-CxM3TvYC.js";import"./blake2b-D2bgIwtM.js";import"./index-CEwrJRrR.js";const j=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],E=C(j,[0,1]);class p{constructor(s,t,r,e){i(this,"network");i(this,"chain");i(this,"provider");i(this,"contracts");i(this,"usdcId");i(this,"usdcTreasuryId");i(this,"tokenMessengerId");i(this,"tokenMessengerStateId");i(this,"messageTransmitterId");i(this,"messageTransmitterStateId");var m,d,g,h;if(this.network=s,this.chain=t,this.provider=r,this.contracts=e,s==="Devnet")throw new Error("CircleBridge not supported on Devnet");const n=S.get(this.network,this.chain);if(!n)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);const{tokenMessengerState:o,messageTransmitterState:a,usdcTreasury:c}=E(s);if(!((m=e.cctp)!=null&&m.tokenMessenger))throw new Error(`Circle Token Messenger contract for domain ${t} not found`);if(!((d=e.cctp)!=null&&d.messageTransmitter))throw new Error(`Circle Message Transmitter contract for domain ${t} not found`);this.usdcId=n,this.usdcTreasuryId=c,this.tokenMessengerId=(g=e.cctp)==null?void 0:g.tokenMessenger,this.messageTransmitterId=(h=e.cctp)==null?void 0:h.messageTransmitter,this.tokenMessengerStateId=o,this.messageTransmitterStateId=a}async*transfer(s,t,r){const e=new f,n=_.get(this.network,t.chain),[o,...a]=await w.getCoins(this.provider,s,this.usdcId);if(o===void 0)throw new Error("No USDC in wallet");const c=e.object(o.coinObjectId);a.length>0&&e.mergeCoins(c,a.map(d=>e.object(d.coinObjectId)));const[m]=e.splitCoins(c,[r]);e.moveCall({target:`${this.tokenMessengerId}::deposit_for_burn::deposit_for_burn`,arguments:[m,e.pure.u32(n),e.pure.address(t.address.toUniversalAddress().toString()),e.object(this.tokenMessengerStateId),e.object(this.messageTransmitterStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Transfer")}async isTransferCompleted(s){const t=new f;t.moveCall({target:`${this.messageTransmitterId}::state::is_nonce_used`,arguments:[t.object(this.messageTransmitterStateId),t.pure.u32(s.sourceDomain),t.pure.u64(s.nonce)]});const r=await this.provider.devInspectTransactionBlock({sender:"0x0000000000000000000000000000000000000000000000000000000000000000",transactionBlock:t});try{return!!r.results[0].returnValues[0][0][0]}catch(e){return console.error(`Error reading if nonce was used: ${e}`),!1}}async*redeem(s,t,r){const e=new f,[n]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::receive_message`,arguments:[e.pure.vector("u8",b.serialize(t)),e.pure.vector("u8",y.decode(r)),e.object(this.messageTransmitterStateId)]});if(!n)throw new Error("Failed to produce receipt");const[o]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::handle_receive_message`,arguments:[n,e.object(this.tokenMessengerStateId),e.object("0x403"),e.object(this.usdcTreasuryId)],typeArguments:[this.usdcId]});if(!o)throw new Error("Failed to produce stamp receipt ticket with burn message");const[a]=e.moveCall({target:`${this.tokenMessengerId}::handle_receive_message::deconstruct_stamp_receipt_ticket_with_burn_message`,arguments:[o]});if(!a)throw new Error("Failed to produce stamp receipt ticket");const[c]=e.moveCall({target:`${this.messageTransmitterId}::receive_message::stamp_receipt`,arguments:[a,e.object(this.messageTransmitterStateId)],typeArguments:[`${this.tokenMessengerId}::message_transmitter_authenticator::MessageTransmitterAuthenticator`]});if(!c)throw new Error("Failed to produce stamped receipt");e.moveCall({target:`${this.messageTransmitterId}::receive_message::complete_receive_message`,arguments:[c,e.object(this.messageTransmitterStateId)]}),yield this.createUnsignedTx(e,"Sui.CircleBridge.Redeem")}async parseTransactionDetails(s){var l;const t=await this.provider.waitForTransaction({digest:s,options:{showEvents:!0,showEffects:!0,showInput:!0}});if(!t)throw new Error("Transaction not found");if(!t.events)throw new Error("Transaction events not found");const r=(l=t.events)==null?void 0:l.find(I=>I.type.includes("send_message::MessageSent"));if(!r)throw new Error("No MessageSent event found");const e=new Uint8Array((r==null?void 0:r.parsedJson).message),[n,o]=b.deserialize(e),{payload:a}=n,c=a.messageSender,m=a.mintRecipient,d=T(this.network,n.sourceDomain),g=T(this.network,n.destinationDomain),h={chain:d,address:a.burnToken};return{from:{chain:d,address:c},to:{chain:g,address:m},token:h,amount:a.amount,message:n,id:{hash:o}}}static async fromRpc(s,t){const[r,e]=await w.chainFromRpc(s),n=t[e];if(n.network!==r)throw new Error(`Network mismatch: ${n.network} != ${r}`);return new p(r,e,s,n.contracts)}createUnsignedTx(s,t,r=!1){return new M(s,this.network,this.chain,t,r)}}x("Sui","CircleBridge",p);export{p as SuiCircleBridge,j as _suiCircleObjects,E as suiCircleObjects};
|