@wormhole-foundation/wormhole-connect 2.4.0-beta.4-development → 2.4.0-beta.6-development

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/assets/{aptos-C2a0dQjT.js → aptos-BaxuZv2A.js} +2 -2
  2. package/dist/assets/{ccip-OC0Vc4gm.js → ccip-Br2IvhSW.js} +1 -1
  3. package/dist/assets/{evm-BqmuByVY.js → evm-CEkHuuN5.js} +3 -3
  4. package/dist/assets/{evm-DVLSeRFU.js → evm-DajrgWJp.js} +2 -2
  5. package/dist/assets/{index-BeEE7MyN.js → index-B8SSPOGN.js} +1 -1
  6. package/dist/assets/{index-CODUkWzQ.js → index-BGgxsbk4.js} +1 -1
  7. package/dist/assets/{index-iO-U9jSW.js → index-BIKKjy76.js} +2 -2
  8. package/dist/assets/{index-CB3XpWtg.js → index-BWKZaYh0.js} +1 -1
  9. package/dist/assets/{index-CvqWMPrS.js → index-BxMnYxyf.js} +1 -1
  10. package/dist/assets/{index-PnI0Le4b.js → index-CIIbEJG8.js} +1 -1
  11. package/dist/assets/{index-BIdhtTCf.js → index-D1RqQWR4.js} +1 -1
  12. package/dist/assets/{index-BVlgnsQb.js → index-DVzhMXXA.js} +1 -1
  13. package/dist/assets/{index-COKaKwn8.js → index-DnDUIJZk.js} +1 -1
  14. package/dist/assets/{index-Dcsj5S2N.js → index-DwbsyLxo.js} +1 -1
  15. package/dist/assets/index-GDpnrg5w.js +1 -0
  16. package/dist/assets/{index-M4NDMEge.js → index-ICy6eYwP.js} +1 -1
  17. package/dist/assets/{index-C1Dta-NJ.js → index-Zgbd9ue1.js} +1 -1
  18. package/dist/assets/{index-BZDxvV4g.js → index-ndTMsj-g.js} +1 -1
  19. package/dist/assets/{index-CBMmMx3W.js → index-ylKZk0sO.js} +1 -1
  20. package/dist/assets/{index-C-kVvSEJ.js → index-z2SBICrL.js} +1 -1
  21. package/dist/assets/{index.es-j8vEfzbO.js → index.es-AACkekVm.js} +6 -6
  22. package/dist/assets/{solana-pOvS3swt.js → solana-Cli5bij_.js} +2 -2
  23. package/dist/assets/solana-DlYSFsGk.js +2 -0
  24. package/dist/assets/solanaEmbed.esm-P5uPPwsm.js +37 -0
  25. package/dist/assets/{sui-DZhbOaP_.js → sui-76yNbUUP.js} +2 -2
  26. package/dist/main.js +106 -106
  27. package/dist/src/AppRouter.d.ts.map +1 -1
  28. package/dist/src/components/SampleApp/index.d.ts.map +1 -1
  29. package/dist/src/consts/wallet.d.ts.map +1 -1
  30. package/dist/src/theme.d.ts +2 -0
  31. package/dist/src/theme.d.ts.map +1 -1
  32. package/dist/src/utils/coingecko.d.ts.map +1 -1
  33. package/dist/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
  34. package/dist/src/views/v2/Bridge/AssetPicker/index.d.ts.map +1 -1
  35. package/lib/{aptos-TTV2w234.js → aptos-B2d701iL.js} +2 -2
  36. package/lib/{aptos-DU1D2bsY.js → aptos-BYgw8KbL.js} +1 -1
  37. package/lib/{aptos-qwmh1AJp.mjs → aptos-Cx2NRBhV.mjs} +5 -5
  38. package/lib/{aptos-CkWuq_27.mjs → aptos-D32iveio.mjs} +2 -2
  39. package/lib/{base64-r6lIUfD-.mjs → base64-CS-t4Jp3.mjs} +1 -1
  40. package/lib/{base64-CkebPGW0.js → base64-KGHVh_fo.js} +1 -1
  41. package/lib/{ccip-DdUs_h_I.js → ccip-CkdoT4fo.js} +1 -1
  42. package/lib/{ccip-D869mIiq.mjs → ccip-DT5SVCsk.mjs} +1 -1
  43. package/lib/{chunk-IMTC3J2M-CSrenBj8.mjs → chunk-IMTC3J2M-BekcMtbR.mjs} +3 -3
  44. package/lib/{chunk-IMTC3J2M-rihZh7hM.js → chunk-IMTC3J2M-Bp7UmuL7.js} +1 -1
  45. package/lib/{evm-BtEIk2Ro.mjs → evm-C2wdlyGy.mjs} +5 -5
  46. package/lib/{evm-Df4WZQgF.js → evm-ZrLPh0aT.js} +1 -1
  47. package/lib/{evm-Bj5TkyBv.js → evm-gtANOzh_.js} +3 -3
  48. package/lib/{evm-BCvj1OtP.mjs → evm-pqv5AmPx.mjs} +6 -6
  49. package/lib/{index-Cf6wneHs.mjs → index-3CcycgxO.mjs} +2 -2
  50. package/lib/{index-yU0Hsqz_.js → index-3n8R7_nm.js} +1 -1
  51. package/lib/{index-DS1lD1iG.mjs → index-6KA_om4J.mjs} +2 -2
  52. package/lib/{index-BfQHVxEi.mjs → index-B5zEqERt.mjs} +2 -2
  53. package/lib/{index-BL_uPuTy.mjs → index-B7w-Z1qw.mjs} +1 -1
  54. package/lib/{index-DU1he9Nx.js → index-BFhdLIwV.js} +5 -5
  55. package/lib/{index-Dgohn547.mjs → index-BQkj72G3.mjs} +3 -3
  56. package/lib/{index-l0_fPapQ.js → index-BRaDJTdV.js} +1 -1
  57. package/lib/{index-D5jQOGNt.mjs → index-BS7yguuC.mjs} +2 -2
  58. package/lib/{index-20yIH7p6.js → index-Bc6-KGpl.js} +1 -1
  59. package/lib/{index-DNGByy1S.js → index-Be_nyvv-.js} +1 -1
  60. package/lib/{index-tsZGjIYB.mjs → index-Bpw-luLW.mjs} +1 -1
  61. package/lib/{index-Dfo3bBnl.mjs → index-BrFiV6ml.mjs} +2 -2
  62. package/lib/{index-DqfeHeDN.mjs → index-Bv3a66FQ.mjs} +1 -1
  63. package/lib/{index-DOLtniOC.mjs → index-C8__-BvE.mjs} +2 -2
  64. package/lib/{index-DjHz-TGq.mjs → index-CN7rbmv3.mjs} +1 -1
  65. package/lib/{index-Cn5RoB2l.js → index-CNdN0i2J.js} +1 -1
  66. package/lib/{index-vPc_VIRu.js → index-CRb9IbJP.js} +1 -1
  67. package/lib/{index-C0UDZaND.js → index-ChdaB60-.js} +1 -1
  68. package/lib/{index-Cv_SfKSZ.js → index-CkCqt7a-.js} +1 -1
  69. package/lib/{index-BOtebTDA.js → index-ClFZzjWo.js} +1 -1
  70. package/lib/{index-LaHWWgzV.mjs → index-Cxo7XEgx.mjs} +1 -1
  71. package/lib/{index-C-9QGhXS.js → index-D2WzZE5z.js} +1 -1
  72. package/lib/{index-BnQbapb-.js → index-D41-bb9L.js} +1 -1
  73. package/lib/{index-ChLwWlxD.js → index-D6IPbglF.js} +1 -1
  74. package/lib/{index-CxOOdI6c.js → index-DIXRIs-8.js} +1 -1
  75. package/lib/{index-JY_vmjxX.js → index-DPBbWUgq.js} +1 -1
  76. package/lib/{index-D8mnxtTR.js → index-DSxGwgfz.js} +1 -1
  77. package/lib/{index-BXHY_Wc_.mjs → index-DVX_Ui4H.mjs} +2 -2
  78. package/lib/{index-ObRYlj1l.mjs → index-DVsO6_MG.mjs} +51 -42
  79. package/lib/{index-CIWjtrm4.mjs → index-DXqgaeP7.mjs} +1 -1
  80. package/lib/{index-DG9DA23c.js → index-DfF1QWxf.js} +1 -1
  81. package/lib/{index-ZuBMF5ZM.mjs → index-DkWk2Ei2.mjs} +4 -4
  82. package/lib/{index-C6Oecme5.js → index-DoxjwHxG.js} +1 -1
  83. package/lib/{index-CBM9cmhA.mjs → index-Dq6f4FNC.mjs} +2 -2
  84. package/lib/{index-CxnykIim.mjs → index-DssifKHm.mjs} +1 -1
  85. package/lib/{index-CCJUXjWs.mjs → index-DuydCAHj.mjs} +1 -1
  86. package/lib/{index-BnvAiffX.js → index-KlmCOa1v.js} +1 -1
  87. package/lib/{index-C54QUs8N.mjs → index-LDJw-t-c.mjs} +2 -2
  88. package/lib/{index-DnIR5ghZ.js → index-Lf0LuGqV.js} +1 -1
  89. package/lib/{index-C2w2yYzm.mjs → index-Nij_Saob.mjs} +3 -3
  90. package/lib/{index-v9fEg88t.js → index-SiongsQ9.js} +1 -1
  91. package/lib/{index-CZi3G6c5.js → index-Vr5ewH9o.js} +1 -1
  92. package/lib/{index-DIdfi9U5.mjs → index-ZBFKA4Z2.mjs} +1 -1
  93. package/lib/{index-CskmLcFl.js → index-o-2ADG2m.js} +1 -1
  94. package/lib/{index-B3Lgw0sO.mjs → index-rpNMowr_.mjs} +1 -1
  95. package/lib/{index.es-Bqw6r4nv.js → index.es-BF1IWsY6.js} +2 -2
  96. package/lib/{index.es-DFa1opYl.mjs → index.es-CI_klE4T.mjs} +5 -5
  97. package/lib/index.js +1 -1
  98. package/lib/index.mjs +1 -1
  99. package/lib/{signer-_KpSCeJr.mjs → signer-B7IqWjWF.mjs} +1 -1
  100. package/lib/{signer-DEoUkKh3.js → signer-IUSxOc-V.js} +1 -1
  101. package/lib/{solana-CeI-x62u.mjs → solana-BjSKSZug.mjs} +4 -4
  102. package/lib/{solana-Dbf-kAb8.js → solana-BlsRfkyh.js} +1 -1
  103. package/lib/solana-D7OBO42M.mjs +17 -0
  104. package/lib/solana-uNqtUduY.js +1 -0
  105. package/lib/{solanaEmbed.esm-rMe_voKF.mjs → solanaEmbed.esm-C2yV7iVs.mjs} +1 -1
  106. package/lib/{solanaEmbed.esm-CM69eDrj.js → solanaEmbed.esm-CLpBoYFx.js} +1 -1
  107. package/lib/src/AppRouter.d.ts.map +1 -1
  108. package/lib/src/components/SampleApp/index.d.ts.map +1 -1
  109. package/lib/src/consts/wallet.d.ts.map +1 -1
  110. package/lib/src/theme.d.ts +2 -0
  111. package/lib/src/theme.d.ts.map +1 -1
  112. package/lib/src/utils/coingecko.d.ts.map +1 -1
  113. package/lib/src/views/v2/Bridge/AmountInput/index.d.ts.map +1 -1
  114. package/lib/src/views/v2/Bridge/AssetPicker/index.d.ts.map +1 -1
  115. package/lib/{sui-1KKOjsyu.js → sui-5P-JTGT2.js} +1 -1
  116. package/lib/{sui-CtQtzdVy.mjs → sui-B0N24-KV.mjs} +1 -1
  117. package/lib/{sui-BRucFXyI.js → sui-C-8cs2Zt.js} +1 -1
  118. package/lib/{sui-DMYKKmcs.mjs → sui-DpF0u1Gb.mjs} +5 -5
  119. package/package.json +1 -1
  120. package/dist/assets/events-7fnqQH7x.js +0 -1
  121. package/dist/assets/index-n50xdA-U.js +0 -1
  122. package/dist/assets/solana-D-pftkkJ.js +0 -2
  123. package/dist/assets/solanaEmbed.esm-DPIgn-PE.js +0 -37
  124. package/lib/solana-CzIZTTUh.js +0 -1
  125. package/lib/solana-UZrOCesE.mjs +0 -17
@@ -1 +1 @@
1
- var H=Object.defineProperty;var Z=(i,t,e)=>t in i?H(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var d=(i,t,e)=>Z(i,typeof t!="symbol"?t+"":t,e);import{P as s,i as c,bI as h,bf as Q,bg as E,bh as W,bi as X,bj as Y,bk as J,ch as $,ci as ee,cj as te,a6 as ie,a7 as K,cn as ne,co as se,cp as ae,cq as re,cr as oe,bu as x,cs as ce,ct as v,cu as de,cv as N,V as G,cw as ue,cx as me,cy as ge,cm as fe,bV as le,a8 as he}from"../main.js";import{deriveWrappedMetaKey as O,deriveTokenBridgeConfigKey as R,deriveAuthoritySignerKey as pe,deriveSenderAccountKey as ye,deriveMintAuthorityKey as we,deriveEndpointKey as ke}from"./index-BIdhtTCf.js";const Se={version:"0.1.0",name:"wormhole_gateway",instructions:[{name:"initialize",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!1,isSigner:!1,docs:["TBTC Program's mint PDA address bump is saved in this program's config. Ordinarily, we would","not have to deserialize this account. But we do in this case to make sure the TBTC program","has been initialized before this program."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"mintingLimit",type:"u64"}]},{name:"changeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"cancelAuthorityChange",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"takeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"pendingAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"updateGatewayAddress",accounts:[{name:"custodian",isMut:!1,isSigner:!1},{name:"gatewayInfo",isMut:!0,isSigner:!1},{name:"authority",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateGatewayAddressArgs"}}]},{name:"updateMintingLimit",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"newLimit",type:"u64"}]},{name:"receiveTbtc",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"postedVaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["transfer. By checking whether this account exists is a short-circuit way of bailing out","early if this transfer has already been redeemed (as opposed to letting the Token Bridge","instruction fail)."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1,docs:["Token account for minted tBTC.","","NOTE: Because the recipient is encoded in the transfer message payload, we can check the","authority from the deserialized VAA. But we should still check whether the authority is the","zero address in access control."]},{name:"recipient",isMut:!1,isSigner:!1,docs:["be created for him."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1,docs:["The gateway will create an associated token account for the recipient if it doesn't exist.","","NOTE: When the minting limit increases, the recipient can use this token account to mint","tBTC using the deposit_wormhole_tbtc instruction."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeRegisteredEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"messageHash",type:{array:["u8",32]}}]},{name:"sendTbtcGateway",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"gatewayInfo",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcGatewayArgs"}}]},{name:"sendTbtcWrapped",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcWrappedArgs"}}]},{name:"depositWormholeTbtc",accounts:[{name:"custodian",isMut:!0,isSigner:!1,docs:["NOTE: This account also acts as a minter for the TBTC program."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["This token account is owned by this program, whose mint is the wrapped TBTC mint. This PDA","address is stored in the custodian account."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the TBTC program. This PDA address is stored in the custodian account."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1},{name:"recipient",isMut:!1,isSigner:!0,docs:["This program requires that the owner of the TBTC token account sign for TBTC being minted","into his account."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]}],accounts:[{name:"custodian",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"authority",type:"publicKey"},{name:"pendingAuthority",type:{option:"publicKey"}},{name:"tbtcMint",type:"publicKey"},{name:"wrappedTbtcMint",type:"publicKey"},{name:"wrappedTbtcToken",type:"publicKey"},{name:"tokenBridgeSender",type:"publicKey"},{name:"tokenBridgeSenderBump",type:"u8"},{name:"mintingLimit",type:"u64"},{name:"mintedAmount",type:"u64"}]}},{name:"GatewayInfo",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}}],types:[{name:"UpdateGatewayAddressArgs",type:{kind:"struct",fields:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}}]}},{name:"SendTbtcGatewayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"nonce",type:"u32"}]}},{name:"SendTbtcWrappedArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"arbiterFee",type:"u64"},{name:"nonce",type:"u32"}]}}],events:[{name:"WormholeTbtcReceived",fields:[{name:"receiver",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"WormholeTbtcSent",fields:[{name:"amount",type:"u64",index:!1},{name:"recipientChain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1},{name:"recipient",type:{array:["u8",32]},index:!1},{name:"arbiterFee",type:"u64",index:!1},{name:"nonce",type:"u32",index:!1}]},{name:"WormholeTbtcDeposited",fields:[{name:"depositor",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"GatewayAddressUpdated",fields:[{name:"chain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1}]},{name:"MintingLimitUpdated",fields:[{name:"mintingLimit",type:"u64",index:!1}]}],errors:[{code:6016,name:"MintingLimitExceeded",msg:"Cannot mint more than the minting limit"},{code:6032,name:"IsNotAuthority",msg:"Only custodian authority is permitted for this action"},{code:6034,name:"IsNotPendingAuthority",msg:"Not valid pending authority to take authority"},{code:6036,name:"NoPendingAuthorityChange",msg:"No pending authority"},{code:6048,name:"ZeroRecipient",msg:"0x0 recipient not allowed"},{code:6064,name:"NotEnoughWrappedTbtc",msg:"Not enough wormhole tBTC in the gateway to bridge"},{code:6080,name:"ZeroAmount",msg:"Amount must not be 0"},{code:6112,name:"TransferAlreadyRedeemed",msg:"Token Bridge transfer already redeemed"},{code:6128,name:"InvalidEthereumTbtc",msg:"Token chain and address do not match Ethereum's tBTC"},{code:6144,name:"NoTbtcTransferred",msg:"No tBTC transferred"},{code:6160,name:"RecipientZeroAddress",msg:"0x0 receiver not allowed"},{code:6176,name:"MintedAmountUnderflow",msg:"Not enough minted by the gateway to satisfy sending tBTC"},{code:6178,name:"MintedAmountOverflow",msg:"Minted amount after deposit exceeds u64"}]};function V(i){return s.findProgramAddressSync([c.Buffer.from("redeemer")],new s(i))[0]}function Me(i,t){const e=c.Buffer.alloc(8);return e.writeBigUInt64LE(t),s.findProgramAddressSync([c.Buffer.from("msg"),e],new s(i))[0]}function Te(i,t){const e=c.Buffer.alloc(2);return e.writeUInt16LE(h(t)),s.findProgramAddressSync([c.Buffer.from("gateway-info"),e],new s(i))[0]}const T=new s("Gj93RRt6QB7FjmyokAD5rcMAku7pq3Fk2Aa8y6nNbwsV");function Be(){return s.findProgramAddressSync([c.Buffer.from("config")],T)[0]}function be(i){return s.findProgramAddressSync([c.Buffer.from("minter-info"),i.toBuffer()],T)[0]}const B=new s("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const b=new s("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s("So11111111111111111111111111111111111111112");new s("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ae extends Error{constructor(t){super(t)}}class Ce extends Ae{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const Pe=Q([E("mintAuthorityOption"),W("mintAuthority"),X("supply"),Y("decimals"),J("isInitialized"),E("freezeAuthorityOption"),W("freezeAuthority")]);Pe.span;async function M(i,t,e=!1,r=B,n=b){if(!e&&!s.isOnCurve(t.toBuffer()))throw new Ce;const[a]=await s.findProgramAddress([t.toBuffer(),r.toBuffer(),i.toBuffer()],n);return a}function Ie(i,t,e,r,n=B,a=b){return Ee(i,t,e,r,c.Buffer.alloc(0),n,a)}function Ee(i,t,e,r,n,a=B,o=b){const u=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:$.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}];return new ee({keys:u,programId:o,data:n})}class A{constructor(t,e,r,n){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"gateway");d(this,"tokenBridgeId");d(this,"coreBridgeId");if(this.network=t,this.chain=e,this.connection=r,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");if(!this.contracts.tokenBridge)throw new Error("TokenBridge contract address is required");if(!this.contracts.coreBridge)throw new Error("CoreBridge contract address is required");this.gateway=new te(Se,this.contracts.tbtc,{connection:r}),this.tokenBridgeId=new s(this.contracts.tokenBridge),this.coreBridgeId=new s(this.contracts.coreBridge)}static async fromRpc(t,e){const[r,n]=await ie.chainFromRpc(t),a=e[n];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new A(r,n,t,a.contracts)}async*transfer(t,e,r){const n=new K(t).unwrap(),a=V(this.gateway.programId),{tbtcMint:o,wrappedTbtcToken:u,wrappedTbtcMint:m}=await this.gateway.account.custodian.fetch(a),p=O(this.tokenBridgeId,m),g=R(this.tokenBridgeId),f=pe(this.tokenBridgeId),C=ne(this.coreBridgeId),{sequence:y}=await se(this.connection,this.tokenBridgeId,this.coreBridgeId),w=Me(this.gateway.programId,y),k=ae(this.coreBridgeId),l=re(this.tokenBridgeId),S=oe(l,this.coreBridgeId),L=Te(this.gateway.programId,e.chain),U=ye(this.gateway.programId),P={amount:new x(r.toString()),recipientChain:h(e.chain),recipient:[...e.address.toUniversalAddress().toUint8Array()],nonce:0},q=await M(o,n),D=ce.get(this.network,e.chain),I={custodian:a,wrappedTbtcToken:u,wrappedTbtcMint:m,tbtcMint:o,senderToken:q,sender:n,tokenBridgeConfig:g,tokenBridgeWrappedAsset:p,tokenBridgeTransferAuthority:f,coreBridgeData:k,coreMessage:w,tokenBridgeCoreEmitter:l,coreEmitterSequence:S,coreFeeCollector:C,clock:de,rent:v,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId},_=D?await this.gateway.methods.sendTbtcGateway({...P}).accounts({...I,gatewayInfo:L,tokenBridgeSender:U}).instruction():await this.gateway.methods.sendTbtcWrapped({...P,arbiterFee:new x(0)}).accounts(I).instruction(),{blockhash:F}=await this.connection.getLatestBlockhash(),z=N.compile({instructions:[_],payerKey:n,recentBlockhash:F}),j=new G(z);yield this.createUnsignedTransaction({transaction:j},"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");yield*new ue(this.network,this.chain,this.connection,this.contracts).postVaa(t,e);const n=[],a=new K(t).unwrap(),o=e.payload.payload.recipient.toNative(this.chain).unwrap(),u=V(this.gateway.programId),{tbtcMint:m,wrappedTbtcToken:p,wrappedTbtcMint:g}=await this.gateway.account.custodian.fetch(u),f=await M(m,o);await this.connection.getAccountInfo(f)||n.push(Ie(a,f,o,m));const y=O(this.tokenBridgeId,g),w=await M(g,o);n.push(await this.gateway.methods.receiveTbtc([...e.hash]).accounts({payer:a,custodian:u,postedVaa:ge(this.coreBridgeId,c.Buffer.from(e.hash)),tokenBridgeClaim:me(this.tokenBridgeId,e.emitterAddress.toUint8Array(),h(e.emitterChain),e.sequence),wrappedTbtcToken:p,wrappedTbtcMint:g,tbtcMint:m,recipientToken:f,recipient:o,recipientWrappedToken:w,tbtcConfig:Be(),tbtcMinterInfo:be(u),tokenBridgeConfig:R(this.tokenBridgeId),tokenBridgeRegisteredEmitter:ke(this.tokenBridgeId,h(e.emitterChain),e.emitterAddress.toUint8Array()),tokenBridgeWrappedAsset:y,tokenBridgeMintAuthority:we(this.tokenBridgeId),rent:v,tbtcProgram:T,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId}).instruction());const{blockhash:k}=await this.connection.getLatestBlockhash(),l=N.compile({instructions:n,payerKey:a,recentBlockhash:k}),S=new G(l);yield this.createUnsignedTransaction({transaction:S},"TBTCBridge.Send")}createUnsignedTransaction(t,e){return new fe(t,this.network,this.chain,e,!1)}}le(he,"TBTCBridge",A);export{A as SolanaTBTCBridge};
1
+ var H=Object.defineProperty;var Z=(i,t,e)=>t in i?H(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var d=(i,t,e)=>Z(i,typeof t!="symbol"?t+"":t,e);import{P as s,i as c,bJ as h,bf as J,bg as E,bh as W,bi as Q,bj as X,bk as Y,ci as $,cj as ee,ck as te,a6 as ie,a7 as K,co as ne,cp as se,cq as ae,cr as re,cs as oe,bv as x,ct as ce,cu as v,cv as de,cw as N,V as G,cx as ue,cy as ge,cz as me,cn as fe,bW as le,a8 as he}from"../main.js";import{deriveWrappedMetaKey as O,deriveTokenBridgeConfigKey as R,deriveAuthoritySignerKey as pe,deriveSenderAccountKey as ye,deriveMintAuthorityKey as we,deriveEndpointKey as ke}from"./index-D1RqQWR4.js";const Se={version:"0.1.0",name:"wormhole_gateway",instructions:[{name:"initialize",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!1,isSigner:!1,docs:["TBTC Program's mint PDA address bump is saved in this program's config. Ordinarily, we would","not have to deserialize this account. But we do in this case to make sure the TBTC program","has been initialized before this program."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"mintingLimit",type:"u64"}]},{name:"changeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"cancelAuthorityChange",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"takeAuthority",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"pendingAuthority",isMut:!1,isSigner:!0}],args:[]},{name:"updateGatewayAddress",accounts:[{name:"custodian",isMut:!1,isSigner:!1},{name:"gatewayInfo",isMut:!0,isSigner:!1},{name:"authority",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateGatewayAddressArgs"}}]},{name:"updateMintingLimit",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"newLimit",type:"u64"}]},{name:"receiveTbtc",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"custodian",isMut:!0,isSigner:!1},{name:"postedVaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["transfer. By checking whether this account exists is a short-circuit way of bailing out","early if this transfer has already been redeemed (as opposed to letting the Token Bridge","instruction fail)."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1,docs:["Token account for minted tBTC.","","NOTE: Because the recipient is encoded in the transfer message payload, we can check the","authority from the deserialized VAA. But we should still check whether the authority is the","zero address in access control."]},{name:"recipient",isMut:!1,isSigner:!1,docs:["be created for him."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1,docs:["The gateway will create an associated token account for the recipient if it doesn't exist.","","NOTE: When the minting limit increases, the recipient can use this token account to mint","tBTC using the deposit_wormhole_tbtc instruction."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeRegisteredEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"messageHash",type:{array:["u8",32]}}]},{name:"sendTbtcGateway",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"gatewayInfo",isMut:!1,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"tokenBridgeSender",isMut:!1,isSigner:!1,docs:["sign for transferring via Token Bridge program with a message."]},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcGatewayArgs"}}]},{name:"sendTbtcWrapped",accounts:[{name:"custodian",isMut:!0,isSigner:!1},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["Custody account."]},{name:"wrappedTbtcMint",isMut:!0,isSigner:!1},{name:"tbtcMint",isMut:!0,isSigner:!1},{name:"senderToken",isMut:!0,isSigner:!1},{name:"sender",isMut:!0,isSigner:!0},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedAsset",isMut:!1,isSigner:!1},{name:"tokenBridgeTransferAuthority",isMut:!1,isSigner:!1},{name:"coreBridgeData",isMut:!0,isSigner:!1},{name:"coreMessage",isMut:!0,isSigner:!1},{name:"tokenBridgeCoreEmitter",isMut:!1,isSigner:!1},{name:"coreEmitterSequence",isMut:!0,isSigner:!1},{name:"coreFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"coreBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"SendTbtcWrappedArgs"}}]},{name:"depositWormholeTbtc",accounts:[{name:"custodian",isMut:!0,isSigner:!1,docs:["NOTE: This account also acts as a minter for the TBTC program."]},{name:"wrappedTbtcToken",isMut:!0,isSigner:!1,docs:["This token account is owned by this program, whose mint is the wrapped TBTC mint. This PDA","address is stored in the custodian account."]},{name:"wrappedTbtcMint",isMut:!1,isSigner:!1,docs:["This mint is owned by the Wormhole Token Bridge program. This PDA address is stored in the","custodian account."]},{name:"tbtcMint",isMut:!0,isSigner:!1,docs:["This mint is owned by the TBTC program. This PDA address is stored in the custodian account."]},{name:"recipientWrappedToken",isMut:!0,isSigner:!1},{name:"recipientToken",isMut:!0,isSigner:!1},{name:"recipient",isMut:!1,isSigner:!0,docs:["This program requires that the owner of the TBTC token account sign for TBTC being minted","into his account."]},{name:"tbtcConfig",isMut:!1,isSigner:!1},{name:"tbtcMinterInfo",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tbtcProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]}],accounts:[{name:"custodian",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"authority",type:"publicKey"},{name:"pendingAuthority",type:{option:"publicKey"}},{name:"tbtcMint",type:"publicKey"},{name:"wrappedTbtcMint",type:"publicKey"},{name:"wrappedTbtcToken",type:"publicKey"},{name:"tokenBridgeSender",type:"publicKey"},{name:"tokenBridgeSenderBump",type:"u8"},{name:"mintingLimit",type:"u64"},{name:"mintedAmount",type:"u64"}]}},{name:"GatewayInfo",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:{array:["u8",32]}}]}}],types:[{name:"UpdateGatewayAddressArgs",type:{kind:"struct",fields:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}}]}},{name:"SendTbtcGatewayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"nonce",type:"u32"}]}},{name:"SendTbtcWrappedArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipient",type:{array:["u8",32]}},{name:"arbiterFee",type:"u64"},{name:"nonce",type:"u32"}]}}],events:[{name:"WormholeTbtcReceived",fields:[{name:"receiver",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"WormholeTbtcSent",fields:[{name:"amount",type:"u64",index:!1},{name:"recipientChain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1},{name:"recipient",type:{array:["u8",32]},index:!1},{name:"arbiterFee",type:"u64",index:!1},{name:"nonce",type:"u32",index:!1}]},{name:"WormholeTbtcDeposited",fields:[{name:"depositor",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"GatewayAddressUpdated",fields:[{name:"chain",type:"u16",index:!1},{name:"gateway",type:{array:["u8",32]},index:!1}]},{name:"MintingLimitUpdated",fields:[{name:"mintingLimit",type:"u64",index:!1}]}],errors:[{code:6016,name:"MintingLimitExceeded",msg:"Cannot mint more than the minting limit"},{code:6032,name:"IsNotAuthority",msg:"Only custodian authority is permitted for this action"},{code:6034,name:"IsNotPendingAuthority",msg:"Not valid pending authority to take authority"},{code:6036,name:"NoPendingAuthorityChange",msg:"No pending authority"},{code:6048,name:"ZeroRecipient",msg:"0x0 recipient not allowed"},{code:6064,name:"NotEnoughWrappedTbtc",msg:"Not enough wormhole tBTC in the gateway to bridge"},{code:6080,name:"ZeroAmount",msg:"Amount must not be 0"},{code:6112,name:"TransferAlreadyRedeemed",msg:"Token Bridge transfer already redeemed"},{code:6128,name:"InvalidEthereumTbtc",msg:"Token chain and address do not match Ethereum's tBTC"},{code:6144,name:"NoTbtcTransferred",msg:"No tBTC transferred"},{code:6160,name:"RecipientZeroAddress",msg:"0x0 receiver not allowed"},{code:6176,name:"MintedAmountUnderflow",msg:"Not enough minted by the gateway to satisfy sending tBTC"},{code:6178,name:"MintedAmountOverflow",msg:"Minted amount after deposit exceeds u64"}]};function L(i){return s.findProgramAddressSync([c.Buffer.from("redeemer")],new s(i))[0]}function Me(i,t){const e=c.Buffer.alloc(8);return e.writeBigUInt64LE(t),s.findProgramAddressSync([c.Buffer.from("msg"),e],new s(i))[0]}function Te(i,t){const e=c.Buffer.alloc(2);return e.writeUInt16LE(h(t)),s.findProgramAddressSync([c.Buffer.from("gateway-info"),e],new s(i))[0]}const T=new s("Gj93RRt6QB7FjmyokAD5rcMAku7pq3Fk2Aa8y6nNbwsV");function Be(){return s.findProgramAddressSync([c.Buffer.from("config")],T)[0]}function be(i){return s.findProgramAddressSync([c.Buffer.from("minter-info"),i.toBuffer()],T)[0]}const B=new s("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");new s("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb");const b=new s("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new s("So11111111111111111111111111111111111111112");new s("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class Ae extends Error{constructor(t){super(t)}}class Ce extends Ae{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}const Pe=J([E("mintAuthorityOption"),W("mintAuthority"),Q("supply"),X("decimals"),Y("isInitialized"),E("freezeAuthorityOption"),W("freezeAuthority")]);Pe.span;async function M(i,t,e=!1,r=B,n=b){if(!e&&!s.isOnCurve(t.toBuffer()))throw new Ce;const[a]=await s.findProgramAddress([t.toBuffer(),r.toBuffer(),i.toBuffer()],n);return a}function Ie(i,t,e,r,n=B,a=b){return Ee(i,t,e,r,c.Buffer.alloc(0),n,a)}function Ee(i,t,e,r,n,a=B,o=b){const u=[{pubkey:i,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:$.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}];return new ee({keys:u,programId:o,data:n})}class A{constructor(t,e,r,n){d(this,"network");d(this,"chain");d(this,"connection");d(this,"contracts");d(this,"gateway");d(this,"tokenBridgeId");d(this,"coreBridgeId");if(this.network=t,this.chain=e,this.connection=r,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");if(!this.contracts.tokenBridge)throw new Error("TokenBridge contract address is required");if(!this.contracts.coreBridge)throw new Error("CoreBridge contract address is required");this.gateway=new te(Se,this.contracts.tbtc,{connection:r}),this.tokenBridgeId=new s(this.contracts.tokenBridge),this.coreBridgeId=new s(this.contracts.coreBridge)}static async fromRpc(t,e){const[r,n]=await ie.chainFromRpc(t),a=e[n];if(a.network!==r)throw new Error(`Network mismatch: ${a.network} != ${r}`);return new A(r,n,t,a.contracts)}async*transfer(t,e,r){const n=new K(t).unwrap(),a=L(this.gateway.programId),{tbtcMint:o,wrappedTbtcToken:u,wrappedTbtcMint:g}=await this.gateway.account.custodian.fetch(a),p=O(this.tokenBridgeId,g),m=R(this.tokenBridgeId),f=pe(this.tokenBridgeId),C=ne(this.coreBridgeId),{sequence:y}=await se(this.connection,this.tokenBridgeId,this.coreBridgeId),w=Me(this.gateway.programId,y),k=ae(this.coreBridgeId),l=re(this.tokenBridgeId),S=oe(l,this.coreBridgeId),U=Te(this.gateway.programId,e.chain),V=ye(this.gateway.programId),P={amount:new x(r.toString()),recipientChain:h(e.chain),recipient:[...e.address.toUniversalAddress().toUint8Array()],nonce:0},q=await M(o,n),D=ce.get(this.network,e.chain),I={custodian:a,wrappedTbtcToken:u,wrappedTbtcMint:g,tbtcMint:o,senderToken:q,sender:n,tokenBridgeConfig:m,tokenBridgeWrappedAsset:p,tokenBridgeTransferAuthority:f,coreBridgeData:k,coreMessage:w,tokenBridgeCoreEmitter:l,coreEmitterSequence:S,coreFeeCollector:C,clock:de,rent:v,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId},_=D?await this.gateway.methods.sendTbtcGateway({...P}).accounts({...I,gatewayInfo:U,tokenBridgeSender:V}).instruction():await this.gateway.methods.sendTbtcWrapped({...P,arbiterFee:new x(0)}).accounts(I).instruction(),{blockhash:F}=await this.connection.getLatestBlockhash(),z=N.compile({instructions:[_],payerKey:n,recentBlockhash:F}),j=new G(z);yield this.createUnsignedTransaction({transaction:j},"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");yield*new ue(this.network,this.chain,this.connection,this.contracts).postVaa(t,e);const n=[],a=new K(t).unwrap(),o=e.payload.payload.recipient.toNative(this.chain).unwrap(),u=L(this.gateway.programId),{tbtcMint:g,wrappedTbtcToken:p,wrappedTbtcMint:m}=await this.gateway.account.custodian.fetch(u),f=await M(g,o);await this.connection.getAccountInfo(f)||n.push(Ie(a,f,o,g));const y=O(this.tokenBridgeId,m),w=await M(m,o);n.push(await this.gateway.methods.receiveTbtc([...e.hash]).accounts({payer:a,custodian:u,postedVaa:me(this.coreBridgeId,c.Buffer.from(e.hash)),tokenBridgeClaim:ge(this.tokenBridgeId,e.emitterAddress.toUint8Array(),h(e.emitterChain),e.sequence),wrappedTbtcToken:p,wrappedTbtcMint:m,tbtcMint:g,recipientToken:f,recipient:o,recipientWrappedToken:w,tbtcConfig:Be(),tbtcMinterInfo:be(u),tokenBridgeConfig:R(this.tokenBridgeId),tokenBridgeRegisteredEmitter:ke(this.tokenBridgeId,h(e.emitterChain),e.emitterAddress.toUint8Array()),tokenBridgeWrappedAsset:y,tokenBridgeMintAuthority:we(this.tokenBridgeId),rent:v,tbtcProgram:T,tokenBridgeProgram:this.tokenBridgeId,coreBridgeProgram:this.coreBridgeId}).instruction());const{blockhash:k}=await this.connection.getLatestBlockhash(),l=N.compile({instructions:n,payerKey:a,recentBlockhash:k}),S=new G(l);yield this.createUnsignedTransaction({transaction:S},"TBTCBridge.Send")}createUnsignedTransaction(t,e){return new fe(t,this.network,this.chain,e,!1)}}le(he,"TBTCBridge",A);export{A as SolanaTBTCBridge};
@@ -0,0 +1 @@
1
+ var Q=Object.defineProperty;var Z=(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)=>Z(t,typeof e!="symbol"?e+"":e,s);import{P as u,bf as Y,bg as I,bh as x,bi as ee,bj as ne,bk as se,i as M,ci as O,cj as ae,ck as E,cl as N,cm as B,bv as _,c5 as U,af as te,a7 as b,a6 as ie,c6 as D,T,c4 as re,ab as me,c7 as R,cn as oe,bW as ue,a8 as le}from"../main.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 W(t,e){return new E(V.TokenMessengerIdl,new u(t),e===void 0?{connection:null}:e)}function Me(t,e){return W(t,N(e))}function L(t,e){return new E(V.MessageTransmitterIdl,new u(t),e===void 0?{connection:null}:e)}function Se(t,e){return L(t,N(e))}const o=(t,e,s)=>{const a=[M.Buffer.from(B.bytes.utf8.encode(t))];if(s)for(const n of s)typeof n=="string"?a.push(M.Buffer.from(B.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=W(e),v=o("__event_authority",e);return P.methods.depositForBurn({amount:new _(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:v.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(U.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),v=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),J=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:v.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:J.publicKey}),g.push({isSigner:!1,isWritable:!1,pubkey:e});const K=L(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 ie.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(D.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 T().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 T;c.feePayer=n,c.add(l),yield this.createUnsignedTx({transaction:c},"CircleBridge.Redeem")}async*transfer(e,s,a){const i=new u(D.get(this.network,this.chain)),n=new b(e).unwrap(),r=fe(i,n),m=re.get(this.network,s.chain),l=s.address.toUniversalAddress(),c=me.generate(),d=await ke(this.messageTransmitter.programId,this.tokenMessenger.programId,i,m,n,r,l,a,c.publicKey),f=new T;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 _((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]=U.deserialize(r),{payload:c}=m,d=c.messageSender,f=c.mintRecipient,p=R(this.network,m.sourceDomain),S=R(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 oe(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"}]};ue(le,"CircleBridge",w);const V={TokenMessengerIdl:be,MessageTransmitterIdl:Pe};export{w as SolanaCircleBridge,V as idl};
@@ -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-DZhbOaP_.js";import{c$ as C,c5 as S,c3 as _,c4 as b,af as y,c6 as T,bV as M}from"../main.js";import{S as x}from"./unsignedTransaction-arVvzoJx.js";import"./blake2b-C_UGgjrB.js";import"./index-WlpSU6Q6.js";const j=[["Testnet",{tokenMessengerState:"0x5252abd1137094ed1db3e0d75bc36abcd287aee4bc310f8e047727ef5682e7c2",messageTransmitterState:"0x98234bd0fa9ac12cc0a20a144a22e36d6a32f7e0a97baaeaf9c76cdc6d122d2e",usdcTreasury:"0x7170137d4a6431bf83351ac025baf462909bffe2877d87716374fb42b9629ebe"}],["Mainnet",{tokenMessengerState:"0x45993eecc0382f37419864992c12faee2238f5cfe22b98ad3bf455baf65c8a2f",messageTransmitterState:"0xf68268c3d9b1df3215f2439400c1c4ea08ac4ef4bb7d6f3ca6a2a239e17510af",usdcTreasury:"0x57d6725e7a8b49a7b2a612f6bd66ab5f39fc95332ca48be421c3229d514a6de7"}]],$=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}=$(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 x(s,this.network,this.chain,t,r)}}M("Sui","CircleBridge",p);export{p as SuiCircleBridge};
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-76yNbUUP.js";import{d0 as C,c6 as S,c4 as _,c5 as b,af as y,c7 as T,bW as M}from"../main.js";import{S as x}from"./unsignedTransaction-arVvzoJx.js";import"./blake2b-C_UGgjrB.js";import"./index-WlpSU6Q6.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 x(s,this.network,this.chain,t,r)}}M("Sui","CircleBridge",p);export{p as SuiCircleBridge};
@@ -1 +1 @@
1
- var T=Object.defineProperty;var l=(i,t,e)=>t in i?T(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var r=(i,t,e)=>l(i,typeof t!="symbol"?t+"":t,e);import{cg as p,bK as g,bJ as b,p as y,bM as m,$ as d,a2 as h,bI as f,bO as o,bQ as u,bT as k,bU as v,bV as C,a4 as A}from"../main.js";class c{constructor(t,e,a,n){r(this,"network");r(this,"chain");r(this,"provider");r(this,"contracts");r(this,"chainId");r(this,"core");r(this,"gatewayAddress");r(this,"gateway");r(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 s=p.getNativeTbtcToken(this.chain);if(!s)throw new Error("Native tbtc token not found");this.chainId=g.get(t,e),this.core=new b(t,e,a,n),this.gatewayAddress=this.contracts.tbtc,this.gateway=new y(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=m(s)}static async fromRpc(t,e){const[a,n]=await d.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch: ${s.network} != ${a}`);return new c(a,n,t,s.contracts)}async*transfer(t,e,a){const n=new h(t).toString(),s=await this.gateway.sendTbtc.populateTransaction(a,f(e.chain),e.address.toUniversalAddress().toUint8Array(),0n,0n);s.value=await this.core.getMessageFee(),yield*this.approve(n,a,this.gatewayAddress),yield this.createUnsignedTransaction(o(s,n),"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");const a=new h(t).toString(),n=await this.gateway.receiveTbtc.populateTransaction(u(e));yield this.createUnsignedTransaction(o(n,a),"TBTCBridge.Redeem")}async*approve(t,e,a){const n=d.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 k(v(t,this.chainId),this.network,this.chain,e,!1)}}C(A,"TBTCBridge",c);export{c as EvmTBTCBridge};
1
+ var T=Object.defineProperty;var l=(i,t,e)=>t in i?T(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e;var r=(i,t,e)=>l(i,typeof t!="symbol"?t+"":t,e);import{ch as p,bL as b,bK as g,p as y,bN as m,$ as d,a2 as h,bJ as f,bP as o,bR as u,bU as k,bV as v,bW as C,a4 as A}from"../main.js";class c{constructor(t,e,a,n){r(this,"network");r(this,"chain");r(this,"provider");r(this,"contracts");r(this,"chainId");r(this,"core");r(this,"gatewayAddress");r(this,"gateway");r(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 s=p.getNativeTbtcToken(this.chain);if(!s)throw new Error("Native tbtc token not found");this.chainId=b.get(t,e),this.core=new g(t,e,a,n),this.gatewayAddress=this.contracts.tbtc,this.gateway=new y(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=m(s)}static async fromRpc(t,e){const[a,n]=await d.chainFromRpc(t),s=e[n];if(s.network!==a)throw new Error(`Network mismatch: ${s.network} != ${a}`);return new c(a,n,t,s.contracts)}async*transfer(t,e,a){const n=new h(t).toString(),s=await this.gateway.sendTbtc.populateTransaction(a,f(e.chain),e.address.toUniversalAddress().toUint8Array(),0n,0n);s.value=await this.core.getMessageFee(),yield*this.approve(n,a,this.gatewayAddress),yield this.createUnsignedTransaction(o(s,n),"TBTCBridge.Send")}async*redeem(t,e){if(e.payloadName!=="GatewayTransfer")throw new Error("Invalid VAA payload");const a=new h(t).toString(),n=await this.gateway.receiveTbtc.populateTransaction(u(e));yield this.createUnsignedTransaction(o(n,a),"TBTCBridge.Redeem")}async*approve(t,e,a){const n=d.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 k(v(t,this.chainId),this.network,this.chain,e,!1)}}C(A,"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-DIjpRZZk.js";import{c$ as S,c5 as I,c3 as U,cc as D,af as f,c4 as l,c6 as T,bV as R}from"../main.js";import{A as $}from"./aptos-C2a0dQjT.js";import{A as E}from"./unsignedTransaction-DsxtoHjl.js";import"./index-WlpSU6Q6.js";import"./base64-IWuz5NCL.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 r,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 a=I.get(this.network,this.chain);if(!a)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!((r=t.cctp)!=null&&r.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=a,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)),a=g.from(this.usdcId),r=g.from(s.address.toUniversalAddress().toUint8Array()),i=[new w(n),t,r,a],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])),a=f.encode(t);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[a]}}))[0]}async*redeem(e,s,n){const t=[u.U8(l.serialize(s)),u.U8(f.decode(n))],a={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:t};yield this.createUnsignedTx(a,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(e){var m;const s=await this.provider.getTransactionByHash({transactionHash:e}),n=this.messageTransmitterId.replace(/^0x0+/,"0x"),t=(m=s.events)==null?void 0:m.find(x=>x.type===`${n}::message_transmitter::MessageSent`);if(!t)throw new Error("No MessageSent event found");const a=f.decode(t.data.message),[r,i]=l.deserialize(a),{payload:c}=r,C=c.messageSender,k=c.mintRecipient,h=T(this.network,r.sourceDomain),y=T(this.network,r.destinationDomain),M={chain:h,address:c.burnToken};return{from:{chain:h,address:C},to:{chain:y,address:k},token:M,amount:c.amount,message:r,id:{hash:i}}}static async fromRpc(e,s){const[n,t]=await $.chainFromRpc(e),a=s[t];if(a.network!==n)throw new Error(`Network mismatch: ${a.network} != ${n}`);return new b(n,t,e,a.contracts)}createUnsignedTx(e,s,n=!1){return new E(e,this.network,this.chain,s,n)}}R("Aptos","CircleBridge",b);export{b as AptosCircleBridge};
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-DIjpRZZk.js";import{d0 as S,c6 as I,c4 as U,cd as D,af as f,c5 as l,c7 as T,bW as R}from"../main.js";import{A as E}from"./aptos-BaxuZv2A.js";import{A as $}from"./unsignedTransaction-DsxtoHjl.js";import"./index-WlpSU6Q6.js";import"./base64-IWuz5NCL.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 r,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 a=I.get(this.network,this.chain);if(!a)throw new Error(`No USDC contract configured for network=${this.network} chain=${this.chain}`);if(!((r=t.cctp)!=null&&r.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=a,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)),a=g.from(this.usdcId),r=g.from(s.address.toUniversalAddress().toUint8Array()),i=[new w(n),t,r,a],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])),a=f.encode(t);return(await this.provider.view({payload:{function:`${this.messageTransmitterId}::message_transmitter::is_nonce_used`,functionArguments:[a]}}))[0]}async*redeem(e,s,n){const t=[u.U8(l.serialize(s)),u.U8(f.decode(n))],a={bytecode:this.moveScripts.handleReceiveMessage,functionArguments:t};yield this.createUnsignedTx(a,"Aptos.CircleBridge.Redeem")}async parseTransactionDetails(e){var m;const s=await this.provider.getTransactionByHash({transactionHash:e}),n=this.messageTransmitterId.replace(/^0x0+/,"0x"),t=(m=s.events)==null?void 0:m.find(x=>x.type===`${n}::message_transmitter::MessageSent`);if(!t)throw new Error("No MessageSent event found");const a=f.decode(t.data.message),[r,i]=l.deserialize(a),{payload:c}=r,C=c.messageSender,k=c.mintRecipient,h=T(this.network,r.sourceDomain),y=T(this.network,r.destinationDomain),M={chain:h,address:c.burnToken};return{from:{chain:h,address:C},to:{chain:y,address:k},token:M,amount:c.amount,message:r,id:{hash:i}}}static async fromRpc(e,s){const[n,t]=await E.chainFromRpc(e),a=s[t];if(a.network!==n)throw new Error(`Network mismatch: ${a.network} != ${n}`);return new b(n,t,e,a.contracts)}createUnsignedTx(e,s,n=!1){return new $(e,this.network,this.chain,s,n)}}R("Aptos","CircleBridge",b);export{b as AptosCircleBridge};