@wormhole-foundation/wormhole-connect 4.1.0-beta.1-development → 5.0.0

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 (352) hide show
  1. package/dist/assets/{aptos-C9pj8h2Q.js → aptos-DgUCX7ng.js} +3 -3
  2. package/dist/assets/{evm-DCydYqBI.js → evm-B6bqAPTR.js} +4 -4
  3. package/dist/assets/{evm-CJXv6IQV.js → evm-Ve5nG8Fs.js} +1 -1
  4. package/dist/assets/{index-LvDsy6wR.js → index-BJokXZAc.js} +1 -1
  5. package/dist/assets/{index-BqxX-Ey7.js → index-BJv9sngo.js} +1 -1
  6. package/dist/assets/{index-C9cy4cDs.js → index-BjZMFLjq.js} +1 -1
  7. package/dist/assets/{index-FJ-n91Op.js → index-BwbPlAQZ.js} +1 -1
  8. package/dist/assets/{index-Clu5I99l.js → index-Bzg4DNh9.js} +1 -1
  9. package/dist/assets/{index-ezhfpCvx.js → index-CKXa657f.js} +1 -1
  10. package/dist/assets/index-CXiuP738.js +1 -0
  11. package/dist/assets/{index-CNExx9Zb.js → index-CvTvoHH-.js} +1 -1
  12. package/dist/assets/{index-C25bHdOM.js → index-D1ULRVbZ.js} +1 -1
  13. package/dist/assets/{index-DpabQJOX.js → index-DlH9IMQl.js} +1 -1
  14. package/dist/assets/{index-C8u74RER.js → index-Dsb-5apv.js} +1 -1
  15. package/dist/assets/{index-D9ApKauA.js → index-_YFUWLUM.js} +1 -1
  16. package/dist/assets/{index-CoIvdDsX.js → index-jg26xdEi.js} +1 -1
  17. package/dist/assets/{provider-jsonrpc-DuMpLBV0.js → provider-jsonrpc-DNgUKjG6.js} +1 -1
  18. package/dist/assets/{solana-DWuIx6gK.js → solana-D4RepnSA.js} +2 -2
  19. package/dist/assets/{sui-BcTGBE_4.js → sui-Du5h-f8S.js} +3 -3
  20. package/dist/main.mjs +185 -140
  21. package/dist/src/components/ConfigurablePageHeader.d.ts +1 -1
  22. package/dist/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  23. package/dist/src/components/Header.d.ts +1 -0
  24. package/dist/src/components/Header.d.ts.map +1 -1
  25. package/dist/src/components/PageHeader.d.ts +1 -3
  26. package/dist/src/components/PageHeader.d.ts.map +1 -1
  27. package/dist/src/components/SampleApp/index.d.ts.map +1 -1
  28. package/dist/src/components/v3/BackButton.d.ts +6 -0
  29. package/dist/src/components/v3/BackButton.d.ts.map +1 -0
  30. package/dist/src/components/v3/FormContent.d.ts +5 -0
  31. package/dist/src/components/v3/FormContent.d.ts.map +1 -0
  32. package/dist/src/config/constants.d.ts.map +1 -1
  33. package/dist/src/config/events.d.ts +2 -1
  34. package/dist/src/config/events.d.ts.map +1 -1
  35. package/dist/src/config/mainnet/chains.d.ts.map +1 -1
  36. package/dist/src/config/mainnet/rpcs.d.ts.map +1 -1
  37. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  38. package/dist/src/config/mainnet/wrappedTokens.d.ts +6 -0
  39. package/dist/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  40. package/dist/src/config/types.d.ts +6 -11
  41. package/dist/src/config/types.d.ts.map +1 -1
  42. package/dist/src/config/ui.d.ts +9 -0
  43. package/dist/src/config/ui.d.ts.map +1 -1
  44. package/dist/src/consts/wallet.d.ts.map +1 -1
  45. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  46. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  47. package/dist/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  48. package/dist/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  49. package/dist/src/hooks/useTransactionHistory.d.ts.map +1 -1
  50. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  51. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  52. package/dist/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  53. package/dist/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  54. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  55. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  56. package/dist/src/icons/PoweredBy.d.ts.map +1 -1
  57. package/dist/src/icons/TokenIcons.d.ts.map +1 -1
  58. package/dist/src/icons/Tokens/AUSD.d.ts +4 -0
  59. package/dist/src/icons/Tokens/AUSD.d.ts.map +1 -0
  60. package/dist/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  61. package/dist/src/routes/mayan/utils.d.ts.map +1 -1
  62. package/dist/src/routes/monad/consts.d.ts +1 -0
  63. package/dist/src/routes/monad/consts.d.ts.map +1 -1
  64. package/dist/src/routes/monad/monad.test.d.ts +1 -0
  65. package/dist/src/routes/monad/monad.test.d.ts.map +1 -0
  66. package/dist/src/routes/monad/utils.d.ts.map +1 -1
  67. package/dist/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  68. package/dist/src/telemetry/types.d.ts +5 -2
  69. package/dist/src/telemetry/types.d.ts.map +1 -1
  70. package/dist/src/theme.d.ts +4 -3
  71. package/dist/src/theme.d.ts.map +1 -1
  72. package/dist/src/utils/errors.d.ts +1 -0
  73. package/dist/src/utils/errors.d.ts.map +1 -1
  74. package/dist/src/utils/fees.d.ts.map +1 -1
  75. package/dist/src/utils/index.d.ts.map +1 -1
  76. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  77. package/dist/src/utils/wallet/index.d.ts +1 -0
  78. package/dist/src/utils/wallet/index.d.ts.map +1 -1
  79. package/dist/src/views/Terms.d.ts.map +1 -1
  80. package/dist/src/views/TxSearch.d.ts.map +1 -1
  81. package/dist/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  82. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  83. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  84. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  85. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  86. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  87. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  88. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  89. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  90. package/dist/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  91. package/dist/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  92. package/dist/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  93. package/dist/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  94. package/dist/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  95. package/dist/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  96. package/dist/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  97. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  98. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  99. package/dist/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  100. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  101. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  102. package/dist/src/views/v3/Bridge/index.d.ts.map +1 -1
  103. package/dist/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  104. package/dist/src/views/v3/Redeem/index.d.ts.map +1 -1
  105. package/dist/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  106. package/dist/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  107. package/lib/{account-cIQhxn1E.js → account-K005OXgL.js} +1 -1
  108. package/lib/{account-BVl6Reot.mjs → account-TXlxMyv4.mjs} +2 -2
  109. package/lib/{address-rVHWlcKQ.mjs → address-CX0E32ut.mjs} +1 -1
  110. package/lib/{address-W9jn6Qdk.js → address-DqbIfKOu.js} +1 -1
  111. package/lib/{aptos-DWDR5o78.js → aptos-BnjZOhUE.js} +1 -1
  112. package/lib/{aptos-CNHYHK9c.js → aptos-CnswqE-C.js} +2 -2
  113. package/lib/{aptos-D1WFzBMy.mjs → aptos-DRfXJ8Ba.mjs} +7 -7
  114. package/lib/{aptos-B84P9rJZ.mjs → aptos-fTiHvXXE.mjs} +5 -5
  115. package/lib/{associatedTokenAccount-C4vEEbG5.js → associatedTokenAccount-CeqdaO2m.js} +1 -1
  116. package/lib/{associatedTokenAccount-DF6phO3l.mjs → associatedTokenAccount-Dsm4Hq32.mjs} +3 -3
  117. package/lib/{basic-BERCwt2M.mjs → basic-BqusrmRE.mjs} +3 -3
  118. package/lib/{basic-NhXxxbR1.js → basic-BrW22Cj9.js} +1 -1
  119. package/lib/{basic-CukRIaOD.mjs → basic-CK5Bsf0B.mjs} +3 -3
  120. package/lib/{basic-DJXXfABO.js → basic-ChOmeQQk.js} +1 -1
  121. package/lib/{chunk-KJH4KKG6-Brt4fyqz.mjs → chunk-KJH4KKG6-BfVMUPsB.mjs} +3 -3
  122. package/lib/{chunk-KJH4KKG6-BbF5W1_N.js → chunk-KJH4KKG6-CJx-rDa6.js} +1 -1
  123. package/lib/constants-C1w_RyOP.js +1 -0
  124. package/lib/{constants-VaoVbllu.mjs → constants-DcDpDarO.mjs} +6 -5
  125. package/lib/{core-BCZrVb_s.mjs → core-DQ-6Q1F1.mjs} +6 -6
  126. package/lib/{core-BE6SS7Ye.js → core-FA2gBc-s.js} +3 -3
  127. package/lib/{create-CChLkbGc.mjs → create-C5dhTMHL.mjs} +1 -1
  128. package/lib/{create-4w0DrcRO.js → create-bA3Gyivs.js} +1 -1
  129. package/lib/{evm-CmmnpcFD.mjs → evm-BJ4Lx-r9.mjs} +5 -5
  130. package/lib/{evm--K7mr7Kr.js → evm-BTgO_HRP.js} +2 -2
  131. package/lib/{evm-DKaWm7eC.mjs → evm-C-vXMfGr.mjs} +7 -7
  132. package/lib/{evm-C5BixKBn.js → evm-qxndAh3z.js} +1 -1
  133. package/lib/executor.js +1 -1
  134. package/lib/executor.mjs +13 -15
  135. package/lib/hosted.js +1 -1
  136. package/lib/hosted.mjs +1 -1
  137. package/lib/hypercore-D7kZiwbe.js +4 -0
  138. package/lib/{hypercore-birmbh9T.mjs → hypercore-DKqayfki.mjs} +4858 -3107
  139. package/lib/{index-qL4D-cpk.js → index-1T4sIL8n.js} +1 -1
  140. package/lib/{index-Ap7250Gf.mjs → index-39tU5Y5t.mjs} +6 -6
  141. package/lib/{index-BUbUhbMe.js → index-3Zg1AdoI.js} +1 -1
  142. package/lib/{index-D7gCsil9.js → index-6m7yero0.js} +1 -1
  143. package/lib/{index-CH0iw38J.mjs → index-B1URQBlH.mjs} +3 -3
  144. package/lib/{index-C5I7QiZ7.mjs → index-B6Ppg6EZ.mjs} +3 -3
  145. package/lib/{index-CED5jdrg.js → index-B7b8sctd.js} +1 -1
  146. package/lib/{index-xvG6cxNx.js → index-BEIFBxtP.js} +1 -1
  147. package/lib/{index-zIzzPp6D.mjs → index-BHpJUZne.mjs} +3 -3
  148. package/lib/{index-BTcij9Np.js → index-BJ0xVutl.js} +1 -1
  149. package/lib/{index-C61IKE_V.mjs → index-BSIPYyeZ.mjs} +2 -2
  150. package/lib/{index-EbSw7SbC.js → index-BTjUHY0e.js} +1 -1
  151. package/lib/{index-C8YhpD9T.mjs → index-BVciucyT.mjs} +4 -4
  152. package/lib/{index-BuHdMHLz.mjs → index-Ba1zbu3Q.mjs} +2 -2
  153. package/lib/{index-BU35GfG0.mjs → index-Bdtj4LUz.mjs} +2 -2
  154. package/lib/{index-Bs28m4ya.js → index-BfzaCmg7.js} +1 -1
  155. package/lib/{index-CN7M4gwf.mjs → index-BviSNDV7.mjs} +5 -5
  156. package/lib/{index-BRFbmsc_.js → index-C-F8_8dY.js} +1 -1
  157. package/lib/{index-Cys9e11O.js → index-C-SMuVS3.js} +1 -1
  158. package/lib/{index-pYTU7pQK.mjs → index-C6MalNd5.mjs} +4 -3
  159. package/lib/{index-Cg1Xo1eZ.js → index-C85u3Gj5.js} +1 -1
  160. package/lib/{index-Da9rvmCc.js → index-Cb0UWLGI.js} +1 -1
  161. package/lib/{index-HrZv1SyT.js → index-Cb_8WAm1.js} +8 -8
  162. package/lib/{index-DHnmtpvA.mjs → index-CcbY14s5.mjs} +4 -4
  163. package/lib/{index-CR1itkLl.mjs → index-CgqBQ88K.mjs} +3248 -3055
  164. package/lib/{index-Txz5xwr6.mjs → index-CowAVUcg.mjs} +1 -1
  165. package/lib/{index-BKgliEPZ.mjs → index-CrWTw0Se.mjs} +2 -2
  166. package/lib/{index-B_JJ50Y-.mjs → index-D-HUNEka.mjs} +4 -4
  167. package/lib/{index-BhMcIAHt.js → index-DJ2w1fz1.js} +1 -1
  168. package/lib/{index-BN_2mA2n.mjs → index-DcFL403C.mjs} +1 -1
  169. package/lib/{index-CO4ZoIAU.mjs → index-DjmVBSGQ.mjs} +4 -4
  170. package/lib/{index-Co3mm7UN.mjs → index-DrJE8udd.mjs} +1 -1
  171. package/lib/{index-fTUcaKb4.js → index-DuhYwr0t.js} +1 -1
  172. package/lib/{index-BQ0lWQfT.mjs → index-DwEx1Hn-.mjs} +2 -2
  173. package/lib/{index-DBofyYkS.js → index-DziujHu1.js} +1 -1
  174. package/lib/{index-Dou5sFku.js → index-JWbF-m3e.js} +1 -1
  175. package/lib/index-Oxm0y6-t.js +1 -0
  176. package/lib/{index-D1odbjeH.mjs → index-VnJcNK62.mjs} +3 -3
  177. package/lib/{index-DVxmRy4C.js → index-WrXSs0ic.js} +1 -1
  178. package/lib/{index-Cw0jWBks.js → index-XjDX4fWv.js} +1 -1
  179. package/lib/{index-CsdD1TNi.js → index-aMKUba1k.js} +1 -1
  180. package/lib/{index-DSnylejH.mjs → index-dufPAW5T.mjs} +292 -269
  181. package/lib/{index-lZY5fTXF.js → index-lAqXlt-a.js} +1 -1
  182. package/lib/{index-N4FkpEh9.mjs → index-mNO1mk2F.mjs} +4 -4
  183. package/lib/{index-BScgBddV.mjs → index-o1SAPXm_.mjs} +3 -3
  184. package/lib/{index-DNZ-Pkpm.mjs → index-rxQSA9t0.mjs} +6 -6
  185. package/lib/{index-DALvn9lg.js → index-v7w8krM0.js} +1 -1
  186. package/lib/{index-japympio.js → index-wadjmD_G.js} +1 -1
  187. package/lib/{index.es-DmmqAOLD.js → index.es-B9kBDkCQ.js} +3 -3
  188. package/lib/{index.es-Dg6IFrL4.js → index.es-BZRO-bNH.js} +1 -1
  189. package/lib/{index.es-B0fk_42a.mjs → index.es-CF3YY88z.mjs} +4 -4
  190. package/lib/{index.es-CDqFguL5.mjs → index.es-CaAL5X4E.mjs} +4 -4
  191. package/lib/index.js +78 -33
  192. package/lib/index.mjs +9158 -8833
  193. package/lib/{keypair-DWucLGoA.js → keypair-DCgXFOw5.js} +1 -1
  194. package/lib/{keypair-CP7syX9B.mjs → keypair-vpG2fl-q.mjs} +3 -3
  195. package/lib/lifi.js +1 -1
  196. package/lib/lifi.mjs +75 -76
  197. package/lib/mayan.js +2 -2
  198. package/lib/mayan.mjs +11 -10
  199. package/lib/{mint-CoNdQTGM.mjs → mint-BPrKG-Zc.mjs} +3 -3
  200. package/lib/{mint-CxQ6P5lT.js → mint-DW-XgF68.js} +1 -1
  201. package/lib/monad.js +1 -1
  202. package/lib/monad.mjs +91 -58
  203. package/lib/multiToken-B9BoSxdr.js +1 -0
  204. package/lib/{multiToken-Bm-K5dRJ.mjs → multiToken-DMllgxzT.mjs} +4 -3
  205. package/lib/ntt.js +2 -2
  206. package/lib/ntt.mjs +77 -86
  207. package/lib/{platform-Cil_UtAQ.mjs → platform-CSpAb386.mjs} +2788 -2748
  208. package/lib/{platform-BMKYxqvv.js → platform-Csj1Outc.js} +1 -1
  209. package/lib/platform-DCcL7jHP.js +11 -0
  210. package/lib/{platform-vRQufc6j.mjs → platform-YzJZdSCf.mjs} +3 -3
  211. package/lib/{secp256k1-LTcmQEQ5.mjs → secp256k1-1o6o1kFy.mjs} +1 -1
  212. package/lib/{secp256k1-DzRCmd6a.mjs → secp256k1-BjlnTj1_.mjs} +1 -1
  213. package/lib/{secp256k1-CglUNI04.js → secp256k1-CeYT4ndf.js} +1 -1
  214. package/lib/{secp256k1-DROP2Lhv.mjs → secp256k1-Cw_BiEuN.mjs} +1 -1
  215. package/lib/{secp256k1-BkoM1Jum.js → secp256k1-D5cKS6q_.js} +1 -1
  216. package/lib/{secp256k1-CcVQkYNr.js → secp256k1-_QlJc7sK.js} +1 -1
  217. package/lib/{signer-0hWrZ5BZ.mjs → signer-D2GRgRrw.mjs} +2 -2
  218. package/lib/{signer-DyqulDUM.js → signer-gjSiV5v3.js} +1 -1
  219. package/lib/solana-DfW5T_64.mjs +18 -0
  220. package/lib/{solana-C4k_Yg7w.js → solana-DvHFhri3.js} +4 -4
  221. package/lib/solana-Edd9tIkX.js +1 -0
  222. package/lib/{solana-D1LVIhGd.mjs → solana-TgPr9kpk.mjs} +10 -10
  223. package/lib/{solanaEmbed.esm-AvWQUA9e.mjs → solanaEmbed.esm-Bh1-aAL4.mjs} +4 -4
  224. package/lib/{solanaEmbed.esm--Ac-IlRA.js → solanaEmbed.esm-C8TjRcIV.js} +1 -1
  225. package/lib/{solidity-CbDkqHjE.js → solidity-BW7c8rFv.js} +1 -1
  226. package/lib/{solidity-Dk_mvceo.mjs → solidity-D9gSgFcp.mjs} +1 -1
  227. package/lib/src/components/ConfigurablePageHeader.d.ts +1 -1
  228. package/lib/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  229. package/lib/src/components/Header.d.ts +1 -0
  230. package/lib/src/components/Header.d.ts.map +1 -1
  231. package/lib/src/components/PageHeader.d.ts +1 -3
  232. package/lib/src/components/PageHeader.d.ts.map +1 -1
  233. package/lib/src/components/SampleApp/index.d.ts.map +1 -1
  234. package/lib/src/components/v3/BackButton.d.ts +6 -0
  235. package/lib/src/components/v3/BackButton.d.ts.map +1 -0
  236. package/lib/src/components/v3/FormContent.d.ts +5 -0
  237. package/lib/src/components/v3/FormContent.d.ts.map +1 -0
  238. package/lib/src/config/constants.d.ts.map +1 -1
  239. package/lib/src/config/events.d.ts +2 -1
  240. package/lib/src/config/events.d.ts.map +1 -1
  241. package/lib/src/config/mainnet/chains.d.ts.map +1 -1
  242. package/lib/src/config/mainnet/rpcs.d.ts.map +1 -1
  243. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  244. package/lib/src/config/mainnet/wrappedTokens.d.ts +6 -0
  245. package/lib/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  246. package/lib/src/config/types.d.ts +6 -11
  247. package/lib/src/config/types.d.ts.map +1 -1
  248. package/lib/src/config/ui.d.ts +9 -0
  249. package/lib/src/config/ui.d.ts.map +1 -1
  250. package/lib/src/consts/wallet.d.ts.map +1 -1
  251. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  252. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  253. package/lib/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  254. package/lib/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  255. package/lib/src/hooks/useTransactionHistory.d.ts.map +1 -1
  256. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  257. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  258. package/lib/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  259. package/lib/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  260. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  261. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  262. package/lib/src/icons/PoweredBy.d.ts.map +1 -1
  263. package/lib/src/icons/TokenIcons.d.ts.map +1 -1
  264. package/lib/src/icons/Tokens/AUSD.d.ts +4 -0
  265. package/lib/src/icons/Tokens/AUSD.d.ts.map +1 -0
  266. package/lib/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  267. package/lib/src/routes/mayan/utils.d.ts.map +1 -1
  268. package/lib/src/routes/monad/consts.d.ts +1 -0
  269. package/lib/src/routes/monad/consts.d.ts.map +1 -1
  270. package/lib/src/routes/monad/monad.test.d.ts +1 -0
  271. package/lib/src/routes/monad/monad.test.d.ts.map +1 -0
  272. package/lib/src/routes/monad/utils.d.ts.map +1 -1
  273. package/lib/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  274. package/lib/src/telemetry/types.d.ts +5 -2
  275. package/lib/src/telemetry/types.d.ts.map +1 -1
  276. package/lib/src/theme.d.ts +4 -3
  277. package/lib/src/theme.d.ts.map +1 -1
  278. package/lib/src/utils/errors.d.ts +1 -0
  279. package/lib/src/utils/errors.d.ts.map +1 -1
  280. package/lib/src/utils/fees.d.ts.map +1 -1
  281. package/lib/src/utils/index.d.ts.map +1 -1
  282. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  283. package/lib/src/utils/wallet/index.d.ts +1 -0
  284. package/lib/src/utils/wallet/index.d.ts.map +1 -1
  285. package/lib/src/views/Terms.d.ts.map +1 -1
  286. package/lib/src/views/TxSearch.d.ts.map +1 -1
  287. package/lib/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  288. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  289. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  290. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  291. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  292. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  293. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  294. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  295. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  296. package/lib/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  297. package/lib/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  298. package/lib/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  299. package/lib/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  300. package/lib/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  301. package/lib/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  302. package/lib/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  303. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  304. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  305. package/lib/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  306. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  307. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  308. package/lib/src/views/v3/Bridge/index.d.ts.map +1 -1
  309. package/lib/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  310. package/lib/src/views/v3/Redeem/index.d.ts.map +1 -1
  311. package/lib/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  312. package/lib/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  313. package/lib/{sui-LiXjD27c.js → sui-BtyZE8YC.js} +1 -1
  314. package/lib/{sui-BPAb7kcs.mjs → sui-CoWRa3vr.mjs} +4 -4
  315. package/lib/{sui-CgmDTkXK.js → sui-DwFrGd2Y.js} +1 -1
  316. package/lib/{sui-cpCvd7RC.mjs → sui-QP4AZGNc.mjs} +6 -6
  317. package/lib/{tokenHelpers-CbE0g9BP.js → tokenHelpers-CeTyb4rG.js} +1 -1
  318. package/lib/{tokenHelpers-DvWQs1tu.mjs → tokenHelpers-VYjmKUxj.mjs} +1 -1
  319. package/lib/{tokens-BJDttoCp.mjs → tokens-D6uJqrsR.mjs} +3 -3
  320. package/lib/{tokens-CvZuVW-g.js → tokens-mXZqt-qL.js} +1 -1
  321. package/lib/types-CgveSjsw.js +1 -0
  322. package/lib/{types-iFgwQ7vG.mjs → types-Dxx2g1wS.mjs} +170 -168
  323. package/lib/{unsignedTransaction-DCDxTFq8.mjs → unsignedTransaction-D2Ja0SuN.mjs} +2 -2
  324. package/lib/{unsignedTransaction-DA4tlY5u.js → unsignedTransaction-qRBv5Cnd.js} +2 -2
  325. package/lib/{utils-DMf7wRGI.js → utils-BEljbqMf.js} +1 -1
  326. package/lib/{utils-BSxsyW2c.mjs → utils-mBHX3Jpu.mjs} +4 -4
  327. package/lib/{w3m-modal-DM5Pf8SH.mjs → w3m-modal-BEe8ji9_.mjs} +2 -2
  328. package/lib/{w3m-modal-CtQ0TPA4.mjs → w3m-modal-D3eqrCT1.mjs} +2 -2
  329. package/lib/{w3m-modal-k23UDiov.js → w3m-modal-Duc13ei7.js} +1 -1
  330. package/lib/{w3m-modal-ByamyZny.js → w3m-modal-f_sUVzPx.js} +1 -1
  331. package/lib/{wallet-CMTEE6Oa.mjs → wallet-Cyosy4Hc.mjs} +1 -1
  332. package/lib/{wallet-BMli0fbu.js → wallet-a0_jwP8j.js} +1 -1
  333. package/lib/{web3-CUwFm9Lx.mjs → web3-CdErAVj5.mjs} +2 -2
  334. package/lib/{web3-DdUeM7iQ.js → web3-x1WCGDiy.js} +1 -1
  335. package/package.json +49 -47
  336. package/dist/assets/index-_UMHESh0.js +0 -1
  337. package/dist/src/components/Button.d.ts +0 -13
  338. package/dist/src/components/Button.d.ts.map +0 -1
  339. package/dist/src/icons/Down.d.ts +0 -5
  340. package/dist/src/icons/Down.d.ts.map +0 -1
  341. package/lib/constants-B9TBfA4z.js +0 -1
  342. package/lib/hypercore-4R7JGmbr.js +0 -4
  343. package/lib/index-C8eqQ_7p.js +0 -1
  344. package/lib/multiToken-YoNvxjur.js +0 -1
  345. package/lib/platform-CCG_jgOO.js +0 -11
  346. package/lib/solana-DKFJvqX8.mjs +0 -18
  347. package/lib/solana-Dmje_Si8.js +0 -1
  348. package/lib/src/components/Button.d.ts +0 -13
  349. package/lib/src/components/Button.d.ts.map +0 -1
  350. package/lib/src/icons/Down.d.ts +0 -5
  351. package/lib/src/icons/Down.d.ts.map +0 -1
  352. package/lib/types-CjNs2oB0.js +0 -1
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./index-DALvn9lg.js"),i=require("./unsignedTransaction-DA4tlY5u.js"),ae=require("./index-lZY5fTXF.js"),o=require("./platform-CCG_jgOO.js"),p=require("./web3-DdUeM7iQ.js"),A=require("./account-cIQhxn1E.js"),k=new i.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Ie=new i.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),O=new i.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),N=new i.PublicKey("So11111111111111111111111111111111111111112");new i.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class j extends Error{constructor(e){super(e)}}class ze extends j{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}}class jt extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}}class gt extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}}class re extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}}class en extends j{constructor(){super(...arguments),this.name="TokenInvalidMintError"}}class ht extends j{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var Q;(function(t){t[t.InitializeMint=0]="InitializeMint",t[t.InitializeAccount=1]="InitializeAccount",t[t.InitializeMultisig=2]="InitializeMultisig",t[t.Transfer=3]="Transfer",t[t.Approve=4]="Approve",t[t.Revoke=5]="Revoke",t[t.SetAuthority=6]="SetAuthority",t[t.MintTo=7]="MintTo",t[t.Burn=8]="Burn",t[t.CloseAccount=9]="CloseAccount",t[t.FreezeAccount=10]="FreezeAccount",t[t.ThawAccount=11]="ThawAccount",t[t.TransferChecked=12]="TransferChecked",t[t.ApproveChecked=13]="ApproveChecked",t[t.MintToChecked=14]="MintToChecked",t[t.BurnChecked=15]="BurnChecked",t[t.InitializeAccount2=16]="InitializeAccount2",t[t.SyncNative=17]="SyncNative",t[t.InitializeAccount3=18]="InitializeAccount3",t[t.InitializeMultisig2=19]="InitializeMultisig2",t[t.InitializeMint2=20]="InitializeMint2",t[t.GetAccountDataSize=21]="GetAccountDataSize",t[t.InitializeImmutableOwner=22]="InitializeImmutableOwner",t[t.AmountToUiAmount=23]="AmountToUiAmount",t[t.UiAmountToAmount=24]="UiAmountToAmount",t[t.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",t[t.TransferFeeExtension=26]="TransferFeeExtension",t[t.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",t[t.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",t[t.Reallocate=29]="Reallocate",t[t.MemoTransferExtension=30]="MemoTransferExtension",t[t.CreateNativeMint=31]="CreateNativeMint",t[t.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",t[t.InterestBearingMintExtension=33]="InterestBearingMintExtension",t[t.CpiGuardExtension=34]="CpiGuardExtension",t[t.InitializePermanentDelegate=35]="InitializePermanentDelegate",t[t.TransferHookExtension=36]="TransferHookExtension",t[t.MetadataPointerExtension=39]="MetadataPointerExtension"})(Q||(Q={}));function qe(t,e,r){if(r.length){t.push({pubkey:e,isSigner:!1,isWritable:!1});for(const n of r)t.push({pubkey:n instanceof i.PublicKey?n:n.publicKey,isSigner:!0,isWritable:!1})}else t.push({pubkey:e,isSigner:!0,isWritable:!1});return t}const st=i.LayoutExports.struct([i.LayoutExports.u8("instruction"),p.u64("amount")]);function tn(t,e,r,n,a=[],s=k){const u=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],r,a),c=o.Buffer.alloc(st.span);return st.encode({instruction:Q.Approve,amount:BigInt(n)},c),new i.TransactionInstruction({keys:u,programId:s,data:c})}const ot=i.LayoutExports.struct([i.LayoutExports.u8("instruction")]);function Ee(t,e,r,n=[],a=k){const s=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],r,n),u=o.Buffer.alloc(ot.span);return ot.encode({instruction:Q.CloseAccount},u),new i.TransactionInstruction({keys:s,programId:a,data:u})}var me;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Mint=1]="Mint",t[t.Account=2]="Account"})(me||(me={}));const De=1,nn=i.LayoutExports.struct([i.LayoutExports.u8("m"),i.LayoutExports.u8("n"),p.bool("isInitialized"),p.publicKey("signer1"),p.publicKey("signer2"),p.publicKey("signer3"),p.publicKey("signer4"),p.publicKey("signer5"),p.publicKey("signer6"),p.publicKey("signer7"),p.publicKey("signer8"),p.publicKey("signer9"),p.publicKey("signer10"),p.publicKey("signer11")]),Ve=nn.span;var fe;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initialized=1]="Initialized",t[t.Frozen=2]="Frozen"})(fe||(fe={}));const pt=i.LayoutExports.struct([p.publicKey("mint"),p.publicKey("owner"),p.u64("amount"),i.LayoutExports.u32("delegateOption"),p.publicKey("delegate"),i.LayoutExports.u8("state"),i.LayoutExports.u32("isNativeOption"),p.u64("isNative"),p.u64("delegatedAmount"),i.LayoutExports.u32("closeAuthorityOption"),p.publicKey("closeAuthority")]),E=pt.span;async function yt(t,e,r,n=k){const a=await t.getAccountInfo(e,r);return an(e,a,n)}async function Re(t,e){return await rn(t,[],e)}async function rn(t,e,r){const n=Un(e);return await t.getMinimumBalanceForRentExemption(n,r)}function an(t,e,r=k){if(!e)throw new ze;if(!e.owner.equals(r))throw new gt;if(e.data.length<E)throw new re;const n=pt.decode(e.data.slice(0,E));let a=o.Buffer.alloc(0);if(e.data.length>E){if(e.data.length===Ve)throw new re;if(e.data[E]!=me.Account)throw new jt;a=e.data.slice(E+De)}return{address:t,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==fe.Uninitialized,isFrozen:n.state===fe.Frozen,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:a}}const wt=i.LayoutExports.struct([i.LayoutExports.u32("mintAuthorityOption"),p.publicKey("mintAuthority"),p.u64("supply"),i.LayoutExports.u8("decimals"),p.bool("isInitialized"),i.LayoutExports.u32("freezeAuthorityOption"),p.publicKey("freezeAuthority")]),Ke=wt.span;async function ct(t,e,r,n=k){const a=await t.getAccountInfo(e,r);return sn(e,a,n)}function sn(t,e,r=k){if(!e)throw new ze;if(!e.owner.equals(r))throw new gt;if(e.data.length<Ke)throw new re;const n=wt.decode(e.data.slice(0,Ke));let a=o.Buffer.alloc(0);if(e.data.length>Ke){if(e.data.length<=E)throw new re;if(e.data.length===Ve)throw new re;if(e.data[E]!=me.Mint)throw new en;a=e.data.slice(E+De)}return{address:t,mintAuthority:n.mintAuthorityOption?n.mintAuthority:null,supply:n.supply,decimals:n.decimals,isInitialized:n.isInitialized,freezeAuthority:n.freezeAuthorityOption?n.freezeAuthority:null,tlvData:a}}async function ut(t,e,r=!1,n=k,a=O){if(!r&&!i.PublicKey.isOnCurve(e.toBuffer()))throw new ht;const[s]=await i.PublicKey.findProgramAddress([e.toBuffer(),n.toBuffer(),t.toBuffer()],a);return s}function F(t,e,r=!1,n=k,a=O){if(!r&&!i.PublicKey.isOnCurve(e.toBuffer()))throw new ht;const[s]=i.PublicKey.findProgramAddressSync([e.toBuffer(),n.toBuffer(),t.toBuffer()],a);return s}const on=i.LayoutExports.struct([p.bool("lockCpi")]),cn=on.span,un=i.LayoutExports.struct([i.LayoutExports.u8("state")]),dn=un.span,ln=i.LayoutExports.struct([]),mn=ln.span,fn=i.LayoutExports.struct([p.publicKey("rateAuthority"),i.LayoutExports.ns64("initializationTimestamp"),i.LayoutExports.s16("preUpdateAverageRate"),i.LayoutExports.ns64("lastUpdateTimestamp"),i.LayoutExports.s16("currentRate")]),gn=fn.span,hn=i.LayoutExports.struct([p.bool("requireIncomingTransferMemos")]),pn=hn.span,St=i.LayoutExports.struct([p.publicKey("authority"),p.publicKey("metadataAddress")]),yn=St.span;function wn(t){const e=Ln(T.MetadataPointer,t.tlvData);if(e!==null){const{authority:r,metadataAddress:n}=St.decode(e);return{authority:r.equals(i.PublicKey.default)?null:r,metadataAddress:n.equals(i.PublicKey.default)?null:n}}else return null}const Sn=i.LayoutExports.struct([p.publicKey("closeAuthority")]),An=Sn.span,At=i.LayoutExports.struct([]),Mn=At.span,kn=At.span,bn=i.LayoutExports.struct([p.publicKey("delegate")]),Tn=bn.span,Pn=1e4;BigInt(Pn);function dt(t){return i.LayoutExports.struct([p.u64("epoch"),p.u64("maximumFee"),i.LayoutExports.u16("transferFeeBasisPoints")],t)}const Bn=i.LayoutExports.struct([p.publicKey("transferFeeConfigAuthority"),p.publicKey("withdrawWithheldAuthority"),p.u64("withheldAmount"),dt("olderTransferFee"),dt("newerTransferFee")]),Cn=Bn.span,vn=i.LayoutExports.struct([p.u64("withheldAmount")]),In=vn.span,En=i.LayoutExports.struct([p.publicKey("authority"),p.publicKey("programId")]),Rn=En.span,Kn=i.LayoutExports.struct([p.bool("transferring")]),Wn=Kn.span,lt=i.LayoutExports.struct([i.LayoutExports.u8("discriminator"),i.LayoutExports.blob(32,"addressConfig"),p.bool("isSigner"),p.bool("isWritable")]),Nn=i.LayoutExports.struct([i.LayoutExports.u32("count"),i.LayoutExports.seq(lt,i.LayoutExports.greedy(lt.span),"extraAccounts")]);i.LayoutExports.struct([p.u64("instructionDiscriminator"),i.LayoutExports.u32("length"),Nn.replicate("extraAccountsList")]);var T;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.TransferFeeConfig=1]="TransferFeeConfig",t[t.TransferFeeAmount=2]="TransferFeeAmount",t[t.MintCloseAuthority=3]="MintCloseAuthority",t[t.ConfidentialTransferMint=4]="ConfidentialTransferMint",t[t.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",t[t.DefaultAccountState=6]="DefaultAccountState",t[t.ImmutableOwner=7]="ImmutableOwner",t[t.MemoTransfer=8]="MemoTransfer",t[t.NonTransferable=9]="NonTransferable",t[t.InterestBearingConfig=10]="InterestBearingConfig",t[t.CpiGuard=11]="CpiGuard",t[t.PermanentDelegate=12]="PermanentDelegate",t[t.NonTransferableAccount=13]="NonTransferableAccount",t[t.TransferHook=14]="TransferHook",t[t.TransferHookAccount=15]="TransferHookAccount",t[t.MetadataPointer=18]="MetadataPointer"})(T||(T={}));const V=2,ge=2;function _n(t){switch(t){case T.Uninitialized:return 0;case T.TransferFeeConfig:return Cn;case T.TransferFeeAmount:return In;case T.MintCloseAuthority:return An;case T.ConfidentialTransferMint:return 97;case T.ConfidentialTransferAccount:return 286;case T.CpiGuard:return cn;case T.DefaultAccountState:return dn;case T.ImmutableOwner:return mn;case T.MemoTransfer:return pn;case T.MetadataPointer:return yn;case T.NonTransferable:return Mn;case T.InterestBearingConfig:return gn;case T.PermanentDelegate:return Tn;case T.NonTransferableAccount:return kn;case T.TransferHook:return Rn;case T.TransferHookAccount:return Wn;default:throw Error(`Unknown extension type: ${t}`)}}function xn(t,e){if(t.length===0)return e;{const r=E+De+t.filter((n,a)=>a===t.indexOf(n)).map(n=>_n(n)+V+ge).reduce((n,a)=>n+a);return r===Ve?r+V:r}}function Un(t){return xn(t,E)}function Ln(t,e){let r=0;for(;r+V+ge<=e.length;){const n=e.readUInt16LE(r),a=e.readUInt16LE(r+V),s=r+V+ge;if(n==t)return e.slice(s,s+a);r=s+a}return null}function Fn(t){const e=[];let r=0;for(;r<t.length;){const n=t.readUInt16LE(r);e.push(n);const a=t.readUInt16LE(r+V);r+=V+ge+a}return e}const mt=i.LayoutExports.struct([i.LayoutExports.u8("instruction")]);function We(t,e,r,n=k){const a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],s=o.Buffer.alloc(mt.span);return mt.encode({instruction:Q.InitializeAccount},s),new i.TransactionInstruction({keys:a,programId:n,data:s})}function Mt(t,e,r,n,a=k,s=O){return kt(t,e,r,n,o.Buffer.alloc(0),a,s)}function On(t,e,r,n,a=k,s=O){return kt(t,e,r,n,o.Buffer.from([1]),a,s)}function kt(t,e,r,n,a,s=k,u=O){const c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new i.TransactionInstruction({keys:c,programId:u,data:a})}const ft=i.LayoutExports.struct([i.LayoutExports.u8("instruction"),p.u64("amount")]);function Ne(t,e,r,n,a=[],s=k){const u=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],r,a),c=o.Buffer.alloc(ft.span);return ft.encode({instruction:Q.Transfer,amount:BigInt(n)},c),new i.TransactionInstruction({keys:u,programId:s,data:c})}function he(t,e){const r=o.Buffer.alloc(2);return r.writeUInt16BE(o.toChainId(e)),A.deriveAddress([o.Buffer.from("foreign_contract"),r],t)}function bt(t){return A.deriveAddress([o.Buffer.from("redeemer")],t)}function pe(t,e){return A.deriveAddress([o.Buffer.from("mint"),new i.PublicKey(e).toBuffer()],t)}function Ye(t){return A.deriveAddress([o.Buffer.from("sender")],t)}function Ge(t,e){return A.deriveAddress([o.Buffer.from("tmp"),new i.PublicKey(e).toBuffer()],t)}function Ze(t,e,r){return A.deriveAddress([o.Buffer.from("bridged"),new i.PublicKey(e).toBuffer(),o.Buffer.from(o.bignum.toBytes(BigInt(r.toString()),8))],t)}function I(t){return A.deriveAddress([o.Buffer.from("config")],t)}async function zn(t,e,r){return t.getAccountInfo(I(e),r).then(n=>ye.deserialize(A.getAccountData(n)))}class ye{wormhole;constructor(e){this.wormhole=new i.PublicKey(e)}static deserialize(e){if(e.length!=32)throw new Error("data.length != 32");const r=e.subarray(0,32);return new ye(r)}}function oe(t,e){return A.deriveAddress([new i.PublicKey(e).toBuffer()],t)}function z(t,e,r){const n=typeof r=="string"?new o.UniversalAddress(r).toUint8Array():r;return A.deriveAddress([(()=>{const a=o.Buffer.alloc(2);return a.writeUInt16BE(e),a})(),n],t)}async function qn(t,e,r){return t.getAccountInfo(new i.PublicKey(e),r).then(n=>we.deserialize(A.getAccountData(n)))}class we{chain;contract;constructor(e,r){this.chain=e,this.contract=r}static deserialize(e){if(e.length!=34)throw new Error("data.length != 34");const r=e.readUInt16LE(0),n=e.subarray(2,34);return new we(r,n)}}function Se(t){return A.deriveAddress([o.Buffer.from("sender")],t)}function Ae(t){return A.deriveAddress([o.Buffer.from("redeemer")],t)}function Y(t){return A.deriveAddress([o.Buffer.from("authority_signer")],t)}function ee(t){return A.deriveAddress([o.Buffer.from("custody_signer")],t)}function te(t){return A.deriveAddress([o.Buffer.from("mint_signer")],t)}function G(t,e,r){return A.deriveAddress([o.Buffer.from("wrapped"),(()=>{const n=o.Buffer.alloc(2);return n.writeUInt16BE(e),n})(),r],t)}function x(t,e){return A.deriveAddress([o.Buffer.from("meta"),new i.PublicKey(e).toBuffer()],t)}async function ie(t,e,r,n){return t.getAccountInfo(x(e,r),n).then(a=>Me.deserialize(A.getAccountData(a)))}class Me{chain;tokenAddress;originalDecimals;lastUpdatedSequence;constructor(e,r,n,a){this.chain=e,this.tokenAddress=r,this.originalDecimals=n,this.lastUpdatedSequence=a}static deserialize(e){if(e.length!==35&&e.length!==43)throw new Error(`invalid wrapped meta length: ${e.length}`);const r=e.readUInt16LE(0),n=e.subarray(2,34),a=e.readUInt8(34),s=e.length===43?e.readBigUInt64LE(35):void 0;return new Me(r,n,a,s)}}function _e(t,e,r,n,a){return tn(new i.PublicKey(e),Y(t),new i.PublicKey(r),n,void 0,new i.PublicKey(a))}class Dn{idl;constructor(e){this.idl=e}async encode(e,r){throw new Error(`Invalid account name: ${e}`)}decode(e,r){return this.decodeUnchecked(e,r)}decodeUnchecked(e,r){throw new Error(`Invalid account name: ${e}`)}memcmp(e,r){throw new Error(`Invalid account name: ${e}`)}size(e){return w.accountSize(this.idl,e)??0}}class Vn{constructor(e){}decode(e){throw new Error("Token Bridge program does not have events")}}class Yn{constructor(e){}encode(e,r){switch(e){case"initialize":return Gn(r);case"attestToken":return Zn(r);case"completeNative":return Hn(r);case"completeWrapped":return $n(r);case"transferWrapped":return Qn(r);case"transferNative":return Xn(r);case"registerChain":return Jn(r);case"createWrapped":return jn(r);case"upgradeContract":return er(r);case"transferWrappedWithPayload":return tr(r);case"transferNativeWithPayload":return nr(r);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,r){throw new Error("Token Bridge program does not have state")}}var K;(function(t){t[t.Initialize=0]="Initialize",t[t.AttestToken=1]="AttestToken",t[t.CompleteNative=2]="CompleteNative",t[t.CompleteWrapped=3]="CompleteWrapped",t[t.TransferWrapped=4]="TransferWrapped",t[t.TransferNative=5]="TransferNative",t[t.RegisterChain=6]="RegisterChain",t[t.CreateWrapped=7]="CreateWrapped",t[t.UpgradeContract=8]="UpgradeContract",t[t.CompleteNativeWithPayload=9]="CompleteNativeWithPayload",t[t.CompleteWrappedWithPayload=10]="CompleteWrappedWithPayload",t[t.TransferWrappedWithPayload=11]="TransferWrappedWithPayload",t[t.TransferNativeWithPayload=12]="TransferNativeWithPayload"})(K||(K={}));function _(t,e){const r=e===void 0?0:e.length,n=o.Buffer.alloc(1+r);return n.writeUInt8(t,0),r>0&&n.write(e.toString("hex"),1,"hex"),n}function Gn({wormhole:t}){const e=o.Buffer.alloc(32);return e.write(new i.PublicKey(t).toBuffer().toString("hex"),0,"hex"),_(K.Initialize,e)}function Zn({nonce:t}){const e=o.Buffer.alloc(4);return e.writeUInt32LE(t,0),_(K.AttestToken,e)}function Hn({}){return _(K.CompleteNative)}function $n({}){return _(K.CompleteWrapped)}function Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){if(typeof e!="bigint"&&(e=BigInt(e)),typeof r!="bigint"&&(r=BigInt(r)),!o.Buffer.isBuffer(n))throw new Error("targetAddress must be Buffer");const s=o.Buffer.alloc(54);return s.writeUInt32LE(t,0),s.writeBigUInt64LE(e,4),s.writeBigUInt64LE(r,12),s.write(n.toString("hex"),20,"hex"),s.writeUInt16LE(a,52),s}function Qn({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){return _(K.TransferWrapped,Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}))}function Xn({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){return _(K.TransferNative,Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}))}function Jn({}){return _(K.RegisterChain)}function jn({}){return _(K.CreateWrapped)}function er({}){return _(K.UpgradeContract)}function Pt({nonce:t,amount:e,targetAddress:r,targetChain:n,payload:a}){if(typeof e!="bigint"&&(e=BigInt(e)),!o.Buffer.isBuffer(r))throw new Error("targetAddress must be Buffer");if(!o.Buffer.isBuffer(a))throw new Error("payload must be Buffer");const s=o.Buffer.alloc(50);return s.writeUInt32LE(t,0),s.writeBigUInt64LE(e,4),s.write(r.toString("hex"),12,"hex"),s.writeUInt16LE(n,44),s.writeUInt32LE(a.length,46),o.Buffer.concat([s,a,o.Buffer.alloc(1)])}function tr({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a,payload:s}){return _(K.TransferWrappedWithPayload,Pt({nonce:t,amount:e,targetAddress:n,targetChain:a,payload:s}))}function nr({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a,payload:s}){return _(K.TransferNativeWithPayload,Pt({nonce:t,amount:e,targetAddress:n,targetChain:a,payload:s}))}class rr{constructor(e){}encode(e,r){throw new Error("Token Bridge program does not have state")}decode(e){throw new Error("Token Bridge program does not have state")}}class ir{constructor(e){}encode(e,r){throw new Error("Token Bridge program does not have user-defined types")}decode(e,r){throw new Error("Token Bridge program does not have user-defined types")}}class ar{instruction;accounts;state;events;types;constructor(e){this.instruction=new Yn(e),this.accounts=new Dn(e),this.state=new rr(e),this.events=new Vn(e),this.types=new ir(e)}}const He={version:"0.1.0",name:"wormhole",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"wormhole",type:"publicKey"}]},{name:"attestToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"splMetadata",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"}]},{name:"completeNative",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"toFees",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"rent",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"completeWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"toFees",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"mintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"fromOwner",isMut:!0,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"}]},{name:"transferNative",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"}]},{name:"registerChain",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"endpoint",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!0,isSigner:!1},{name:"splMetadata",isMut:!0,isSigner:!1},{name:"mintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"splMetadataProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"upgradeContract",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"upgradeAuthority",isMut:!1,isSigner:!1},{name:"spill",isMut:!0,isSigner:!1},{name:"implementation",isMut:!0,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"tokenBridgeProgram",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeable",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferWrappedWithPayload",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"fromOwner",isMut:!0,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"sender",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"},{name:"payload",type:"bytes"},{name:"cpiProgramId",type:{option:"publicKey"}}]},{name:"transferNativeWithPayload",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"sender",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"},{name:"payload",type:"bytes"},{name:"cpiProgramId",type:{option:"publicKey"}}]}],accounts:[]};function Bt(t,e){return new ae.Program(He,new i.PublicKey(t),e===void 0?{connection:null}:e,Ct())}function W(t,e){return Bt(t,ae.createReadOnlyProvider(e))}function Ct(){return new ar(He)}class L{address;verified;share;constructor(e,r,n){this.address=new i.PublicKey(e),this.verified=r,this.share=n}static size=34;serialize(){const e=o.Buffer.alloc(L.size);return e.write(this.address.toBuffer().toString("hex"),0,"hex"),this.verified&&e.writeUInt8(1,32),e.writeUInt8(this.share,33),e}static deserialize(e){const r=e.subarray(0,32),n=e.readUInt8(32)>0,a=e.readUInt8(33);return new L(r,n,a)}}class ce{name;symbol;uri;sellerFeeBasisPoints;creators;constructor(e,r,n,a,s){this.name=e,this.symbol=r,this.uri=n,this.sellerFeeBasisPoints=a,this.creators=s}serialize(){const e=this.name.length,r=this.symbol.length,n=this.uri.length,a=this.creators,[s,u]=(()=>{if(a===null)return[0,0];const d=a.length;return[d,4+d*L.size]})(),c=o.Buffer.alloc(15+e+r+n+u);if(c.writeUInt32LE(e,0),c.write(this.name,4),c.writeUInt32LE(r,4+e),c.write(this.symbol,8+e),c.writeUInt32LE(n,8+e+r),c.write(this.uri,12+e+r),c.writeUInt16LE(this.sellerFeeBasisPoints,12+e+r+n),a===null)c.writeUInt8(0,14+e+r+n);else{c.writeUInt8(1,14+e+r+n),c.writeUInt32LE(s,15+e+r+n);for(let d=0;d<s;++d){const l=a.at(d),f=19+e+r+n+d*L.size;c.write(l.serialize().toString("hex"),f,"hex")}}return c}static deserialize(e){const r=e.readUInt32LE(0),n=e.subarray(4,4+r).toString(),a=e.readUInt32LE(4+r),s=e.subarray(8+r,8+r+a).toString(),u=e.readUInt32LE(8+r+a),c=e.subarray(12+r+a,12+r+a+u).toString(),d=e.readUInt16LE(12+r+a+u),l=e.readUInt8(14+r+a+u),f=(()=>{if(l==0)return null;const m=[],g=e.readUInt32LE(15+r+a+u);for(let h=0;h<g;++h){const y=19+r+a+u+h*L.size;m.push(L.deserialize(e.subarray(y,y+L.size)))}return m})();return new ce(n,s,c,d,f)}}class se extends ce{isMutable;constructor(e,r,n,a,s,u){super(e,r,n,a,s),this.isMutable=u}static serialize(e,r,n,a,s,u){return new se(e,r,n,a,s,u).serialize()}static serializeInstructionData(e,r,n,a,s,u){return o.Buffer.concat([o.Buffer.alloc(1,0),se.serialize(e,r,n,a,s,u)])}serialize(){return o.Buffer.concat([super.serialize(),o.Buffer.alloc(1,this.isMutable?1:0)])}}class X{constructor(){}static programId=new i.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");static createMetadataAccounts(e,r,n,a,s,u,c=!1,d,l,f,m=!1,g=ue(r)){const h=[A.newAccountMeta(g,!1),A.newReadOnlyAccountMeta(r,!1),A.newReadOnlyAccountMeta(n,!0),A.newReadOnlyAccountMeta(e,!0),A.newReadOnlyAccountMeta(u,c),A.newReadOnlyAccountMeta(i.SystemProgram.programId,!1),A.newReadOnlyAccountMeta(i.SYSVAR_RENT_PUBKEY,!1)],y=se.serializeInstructionData(a,s,d===void 0?"":d,f===void 0?0:f,l===void 0?null:l,m);return{programId:X.programId,keys:h,data:y}}}function ue(t){return A.deriveAddress([o.Buffer.from("metadata"),X.programId.toBuffer(),new i.PublicKey(t).toBuffer()],X.programId)}exports.Key=void 0;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.EditionV1=1]="EditionV1",t[t.MasterEditionV1=2]="MasterEditionV1",t[t.ReservationListV1=3]="ReservationListV1",t[t.MetadataV1=4]="MetadataV1",t[t.ReservationListV2=5]="ReservationListV2",t[t.MasterEditionV2=6]="MasterEditionV2",t[t.EditionMarker=7]="EditionMarker"})(exports.Key||(exports.Key={}));class ke{key;updateAuthority;mint;data;primarySaleHappened;isMutable;constructor(e,r,n,a,s,u){this.key=e,this.updateAuthority=new i.PublicKey(r),this.mint=new i.PublicKey(n),this.data=a,this.primarySaleHappened=s,this.isMutable=u}static deserialize(e){const r=e.readUInt8(0),n=e.subarray(1,33),a=e.subarray(33,65),s=ce.deserialize(e.subarray(65)),u=s.serialize().length,c=e.readUInt8(65+u)>0,d=e.readUInt8(66+u)>0;return new ke(r,n,a,s,c,d)}}async function sr(t,e,r){return t.getAccountInfo(ue(e),r).then(n=>ke.deserialize(A.getAccountData(n)))}function vt(t,e,r,n,a,s,u,c){const d=W(e,t).methods.attestToken(u);return console.log(xe(e,r,n,a,s,c)),d._ixFn(...d._args,{accounts:xe(e,r,n,a,s,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function xe(t,e,r,n,a,s){const{bridge:u,emitter:c,sequence:d,feeCollector:l,clock:f,rent:m,systemProgram:g}=w.getPostMessageAccounts(e,r,a,t);return{payer:new i.PublicKey(r),config:I(t),mint:new i.PublicKey(n),wrappedMeta:x(t,n),splMetadata:s?new i.PublicKey(s):ue(n),wormholeBridge:u,wormholeMessage:new i.PublicKey(a),wormholeEmitter:c,wormholeSequence:d,wormholeFeeCollector:l,clock:f,rent:m,systemProgram:g,wormholeProgram:new i.PublicKey(e)}}function Ue(t,e,r,n,a,s,u){const c=W(e,t).methods.completeNative();return c._ixFn(...c._args,{accounts:It(e,r,n,a,s,u),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function It(t,e,r,n,a,s){const u=new i.PublicKey(n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),to:new i.PublicKey(n.payload.to.address.toUint8Array()),toFees:new i.PublicKey(a===void 0?n.payload.to.address.toUint8Array():a),custody:oe(t,u),mint:u,custodySigner:ee(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:s?new i.PublicKey(s):k,wormholeProgram:new i.PublicKey(e)}}function Et(t,e,r,n,a,s){const u=W(e,t).methods.completeWrapped();return u._ixFn(...u._args,{accounts:Rt(e,r,n,a,s),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Rt(t,e,r,n,a){const s=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),to:new i.PublicKey(n.payload.to.address.toUint8Array()),toFees:new i.PublicKey(a===void 0?n.payload.to.address.toUint8Array():a),mint:s,wrappedMeta:x(t,s),mintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}function Kt(t,e,r,n,a){const s=W(e,t).methods.createWrapped();return s._ixFn(...s._args,{accounts:Wt(e,r,n,a),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Wt(t,e,r,n){const a=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),mint:a,wrappedMeta:x(t,a),splMetadata:ue(a),mintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,splMetadataProgram:X.programId,wormholeProgram:new i.PublicKey(e)}}function or(t,e,r){const n=W(t).methods.initialize(r);return n._ixFn(...n._args,{accounts:Nt(t,e),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Nt(t,e){return{payer:new i.PublicKey(e),config:I(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId}}function cr(t,e,r,n){const a=W(t).methods.registerChain();return a._ixFn(...a._args,{accounts:_t(t,e,r,n),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function _t(t,e,r,n){return{payer:new i.PublicKey(r),config:I(t),endpoint:z(t,o.toChainId(n.payload.actionArgs.foreignChain),n.payload.actionArgs.foreignAddress.toUint8Array()),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,wormholeProgram:new i.PublicKey(e)}}function ur(t,e,r,n,a){const s=W(t).methods.upgradeContract();return s._ixFn(...s._args,{accounts:xt(t,e,r,n,a),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function xt(t,e,r,n,a){return{payer:new i.PublicKey(r),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),upgradeAuthority:w.deriveUpgradeAuthorityKey(t),spill:new i.PublicKey(a===void 0?r:a),implementation:new i.PublicKey(n.payload.actionArgs.newContract),programData:w.deriveProgramDataAddress(t),tokenBridgeProgram:new i.PublicKey(t),rent:i.SYSVAR_RENT_PUBKEY,clock:i.SYSVAR_CLOCK_PUBKEY,bpfLoaderUpgradeable:w.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,systemProgram:i.SystemProgram.programId}}function Le(t,e,r,n,a,s,u,c,d,l,f,m,g){const h=W(e,t).methods.transferNative(d,l,f,o.Buffer.from(m),g);return h._ixFn(...h._args,{accounts:Ut(e,r,n,a,s,u,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Ut(t,e,r,n,a,s,u){const{wormholeBridge:c,wormholeMessage:d,wormholeEmitter:l,wormholeSequence:f,wormholeFeeCollector:m,clock:g,rent:h,systemProgram:y}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),mint:new i.PublicKey(s),custody:oe(t,s),authoritySigner:Y(t),custodySigner:ee(t),wormholeBridge:c,wormholeMessage:d,wormholeEmitter:l,wormholeSequence:f,wormholeFeeCollector:m,clock:g,rent:h,systemProgram:y,tokenProgram:new i.PublicKey(u),wormholeProgram:new i.PublicKey(e)}}function Fe(t,e,r,n,a,s,u,c,d,l,f,m,g){const h=W(e,t).methods.transferNativeWithPayload(d,l,o.Buffer.from(f),m,o.Buffer.from(g),null);return h._ixFn(...h._args,{accounts:$e(e,r,n,a,s,u,void 0,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function $e(t,e,r,n,a,s,u,c){const{wormholeBridge:d,wormholeMessage:l,wormholeEmitter:f,wormholeSequence:m,wormholeFeeCollector:g,clock:h,rent:y,systemProgram:S}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),mint:new i.PublicKey(s),custody:oe(t,s),authoritySigner:Y(t),custodySigner:ee(t),wormholeBridge:d,wormholeMessage:l,wormholeEmitter:f,wormholeSequence:m,wormholeFeeCollector:g,clock:h,sender:new i.PublicKey(u===void 0?r:Se(u)),rent:y,systemProgram:S,tokenProgram:c?new i.PublicKey(c):k,wormholeProgram:new i.PublicKey(e)}}function Lt(t,e,r,n,a,s,u,c,d,l,f,m,g,h,y){const S=W(e,t).methods.transferWrapped(f,m,g,o.Buffer.from(h),y);return S._ixFn(...S._args,{accounts:Ft(e,r,n,a,s,u,c,d,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Ft(t,e,r,n,a,s,u,c,d){const l=G(t,u,c),{wormholeBridge:f,wormholeMessage:m,wormholeEmitter:g,wormholeSequence:h,wormholeFeeCollector:y,clock:S,rent:B,systemProgram:P}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),fromOwner:new i.PublicKey(s),mint:l,wrappedMeta:x(t,l),authoritySigner:Y(t),wormholeBridge:f,wormholeMessage:m,wormholeEmitter:g,wormholeSequence:h,wormholeFeeCollector:y,clock:S,rent:B,systemProgram:P,wormholeProgram:new i.PublicKey(e),tokenProgram:new i.PublicKey(d)}}function Ot(t,e,r,n,a,s,u,c,d,l,f,m,g,h,y){const S=W(e,t).methods.transferWrappedWithPayload(f,m,o.Buffer.from(g),h,o.Buffer.from(y),null);return S._ixFn(...S._args,{accounts:Qe(e,r,n,a,s,u,c,d,void 0,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Qe(t,e,r,n,a,s,u,c,d,l){const f=G(t,u,c),{wormholeBridge:m,wormholeMessage:g,wormholeEmitter:h,wormholeSequence:y,wormholeFeeCollector:S,clock:B,rent:P,systemProgram:b}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),fromOwner:new i.PublicKey(s),mint:f,wrappedMeta:x(t,f),authoritySigner:Y(t),wormholeBridge:m,wormholeMessage:g,wormholeEmitter:h,wormholeSequence:y,wormholeFeeCollector:S,clock:B,sender:new i.PublicKey(d===void 0?r:Se(d)),rent:P,systemProgram:b,wormholeProgram:new i.PublicKey(e),tokenProgram:l?new i.PublicKey(l):k}}function dr(t,e,r){const{wormholeEmitter:n,wormholeBridge:a,wormholeFeeCollector:s,wormholeSequence:u}=w.getWormholeDerivedAccounts(e,r);return{tokenBridgeConfig:I(e),tokenBridgeAuthoritySigner:Y(e),tokenBridgeCustodySigner:ee(e),tokenBridgeMintAuthority:te(e),tokenBridgeSender:Se(t),tokenBridgeRedeemer:Ae(t),wormholeBridge:a,tokenBridgeEmitter:n,wormholeFeeCollector:s,tokenBridgeSequence:u}}function zt(t,e,r,n,a,s,u){const c=$e(e,r,n,a,s,u,t);return{payer:c.payer,tokenBridgeConfig:c.config,fromTokenAccount:c.from,mint:c.mint,tokenBridgeCustody:c.custody,tokenBridgeAuthoritySigner:c.authoritySigner,tokenBridgeCustodySigner:c.custodySigner,wormholeBridge:c.wormholeBridge,wormholeMessage:c.wormholeMessage,tokenBridgeEmitter:c.wormholeEmitter,tokenBridgeSequence:c.wormholeSequence,wormholeFeeCollector:c.wormholeFeeCollector,clock:c.clock,tokenBridgeSender:c.sender,rent:c.rent,systemProgram:c.systemProgram,tokenProgram:c.tokenProgram,wormholeProgram:c.wormholeProgram}}function qt(t,e,r,n,a,s,u,c,d){const l=Qe(e,r,n,a,s,d===void 0?t:d,u,c,t);return{payer:l.payer,tokenBridgeConfig:l.config,fromTokenAccount:l.from,fromTokenAccountOwner:l.fromOwner,tokenBridgeWrappedMint:l.mint,tokenBridgeWrappedMeta:l.wrappedMeta,tokenBridgeAuthoritySigner:l.authoritySigner,wormholeBridge:l.wormholeBridge,wormholeMessage:l.wormholeMessage,tokenBridgeEmitter:l.wormholeEmitter,tokenBridgeSequence:l.wormholeSequence,wormholeFeeCollector:l.wormholeFeeCollector,clock:l.clock,tokenBridgeSender:l.sender,rent:l.rent,systemProgram:l.systemProgram,tokenProgram:l.tokenProgram,wormholeProgram:l.wormholeProgram}}function lr(t,e,r,n,a){const s=new i.PublicKey(n.payload.token.address.toUint8Array()),u=new i.PublicKey(n.payload.to.address.toUint8Array());return{payer:new i.PublicKey(r),tokenBridgeConfig:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),tokenBridgeClaim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),tokenBridgeForeignEndpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),toTokenAccount:new i.PublicKey(a),tokenBridgeRedeemer:Ae(u),toFeesTokenAccount:new i.PublicKey(a),tokenBridgeCustody:oe(t,s),mint:s,tokenBridgeCustodySigner:ee(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}function mr(t,e,r,n,a){const s=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array()),u=new i.PublicKey(n.payload.to.address.toUint8Array());return{payer:new i.PublicKey(r),tokenBridgeConfig:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),tokenBridgeClaim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),tokenBridgeForeignEndpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),toTokenAccount:new i.PublicKey(a),tokenBridgeRedeemer:Ae(u),toFeesTokenAccount:new i.PublicKey(a),tokenBridgeWrappedMint:s,tokenBridgeWrappedMeta:x(t,s),tokenBridgeMintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}const Dt={version:"0.1.0",name:"token_bridge_relayer",constants:[{name:"SEED_PREFIX_BRIDGED",type:"bytes",value:"[98, 114, 105, 100, 103, 101, 100]"},{name:"SEED_PREFIX_TMP",type:"bytes",value:"[116, 109, 112]"},{name:"SWAP_RATE_PRECISION",type:"u32",value:"100_000_000"}],instructions:[{name:"initialize",docs:["This instruction is be used to generate your program's config.","And for convenience, we will store Wormhole-related PDAs in the","config so we can verify these accounts with a simple == constraint.","# Arguments","","* `ctx` - `Initialize` context","* `fee_recipient` - Recipient of all relayer fees and swap proceeds","* `assistant` - Privileged key to manage certain accounts"],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Deployer of the program."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account, which saves program data useful for other","instructions, specifically for outbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account, which saves program data useful for other","instructions, specifically for inbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner config account, which saves the owner, assistant and","pending owner keys. This account is used to manage the ownership of the","program."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1,docs:["that holds data; it is purely just a signer for posting Wormhole","messages on behalf of the Token Bridge program."]},{name:"tokenBridgeSequence",isMut:!1,isSigner:!1,docs:["Token Bridge emitter's sequence account. Like with all Wormhole","emitters, this account keeps track of the sequence number of the last","posted message."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]},{name:"programData",isMut:!0,isSigner:!1,docs:["upgrade authority. We check this PDA address just in case there is another program that this","deployer has deployed.","","NOTE: Set upgrade authority is scary because any public key can be used to set as the","authority."]},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[{name:"feeRecipient",type:"publicKey"},{name:"assistant",type:"publicKey"}]},{name:"registerForeignContract",docs:["This instruction registers a new foreign contract (from another","network) and saves the emitter information in a ForeignEmitter account.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can add and update foreign","contracts.","","# Arguments","","* `ctx` - `RegisterForeignContract` context","* `chain` - Wormhole Chain ID","* `address` - Wormhole Emitter Address","* `relayer_fee` - Relayer fee scaled by the `relayer_fee_precision`"],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"foreignContract",isMut:!0,isSigner:!1,docs:["Foreign Contract account. Create this account if an emitter has not been","registered yet for this Wormhole chain ID. If there already is a","contract address saved in this account, overwrite it."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["Token Bridge foreign endpoint. This account should really be one","endpoint per chain, but Token Bridge's PDA allows for multiple","endpoints for each chain. We store the proper endpoint for the","emitter chain."]},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1,docs:["Token Bridge program."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}},{name:"relayerFee",type:"u64"}]},{name:"registerToken",docs:["This instruction registers a new token and saves the initial `swap_rate`","and `max_native_token_amount` in a RegisteredToken account.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can register a token.","","# Arguments","","* `ctx` - `RegisterToken` context","* `swap_rate`:","- USD conversion rate scaled by the `swap_rate_precision`. For example,","- if the conversion rate is $15 and the `swap_rate_precision` is","- 1000000, the `swap_rate` should be set to 15000000.","* `max_native_swap_amount`:","- Maximum amount of native tokens that can be swapped for this token","- on this chain."],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. Create this","account if the mint has not been registered yet. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"swapRate",type:"u64"},{name:"maxNativeSwapAmount",type:"u64"}]},{name:"deregisterToken",docs:["This instruction deregisters a token by closing the existing","`RegisteredToken` account for a particular mint. This instruction is","owner-only, meaning that only the owner of the program (defined in the","[Config] account) can deregister a token."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","closing [`RegisteredToken`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. This account","also determines if a mint is registered or not."]}],args:[]},{name:"updateRelayerFee",docs:["This instruction updates the `relayer_fee` in the `ForeignContract` account.","The `relayer_fee` is scaled by the `relayer_fee_precision`. For example,","if the `relayer_fee` is $15 and the `relayer_fee_precision` is 1000000,","the `relayer_fee` should be set to 15000000. This instruction can","only be called by the owner or assistant, which are defined in the","[OwnerConfig] account.","","# Arguments","","* `ctx` - `UpdateRelayerFee` context","* `chain` - Wormhole Chain ID","* `fee` - Relayer fee scaled by the `relayer_fee_precision`"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Signer of the transaction. Must be the owner or assistant."]},{name:"ownerConfig",isMut:!1,isSigner:!1,docs:["The owner_config is used when updating the swap rate","so that the assistant key can be used in addition to the","owner key."]},{name:"foreignContract",isMut:!0,isSigner:!1,docs:["This account holds the USD denominated relayer fee for the specified","`chain`. This account is used to determine the cost of relaying","a transfer to a target chain. If there already is a relayer fee","saved in this account, overwrite it."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"chain",type:"u16"},{name:"fee",type:"u64"}]},{name:"updateRelayerFeePrecision",docs:["This instruction updates the `relayer_fee_precision` in the","`SenderConfig` and `RedeemerConfig` accounts. The `relayer_fee_precision`","is used to scale the `relayer_fee`. This instruction is owner-only,","meaning that only the owner of the program (defined in the [Config]","account) can register a token.","","# Arguments","","* `ctx` - `UpdatePrecision` context","* `relayer_fee_precision` - Precision used to scale the relayer fee."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`RedeemerConfig`] and [`SenderConfig`] account."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account. This program requires that the `owner`","specified in the context equals the pubkey specified in this account.","Mutable."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account. This program requires that the `owner`","specified in the context equals the pubkey specified in this account.","Mutable. The `owner` check is redundant here, but we keep it as an","extra protection for future changes to the context. Mutable."]}],args:[{name:"relayerFeePrecision",type:"u32"}]},{name:"updateSwapRate",docs:["This instruction updates the `swap_rate` in the `RegisteredToken`","account. This instruction can only be called by the owner or","assistant, which are defined in the [OwnerConfig] account.","","# Arguments","","* `ctx` - `UpdateSwapRate` context","* `swap_rate` - USD conversion rate for the specified token."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["The signer of the transaction. Must be the owner or assistant."]},{name:"ownerConfig",isMut:!1,isSigner:!1,docs:["The owner_config is used when updating the swap rate so that the","assistant key can be used in additional to the owner key."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. The program","will modify this account to update the swap rate. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]}],args:[{name:"swapRate",type:"u64"}]},{name:"updateMaxNativeSwapAmount",docs:["This instruction updates the `max_native_swap_amount` in the","`RegisteredToken` account. This instruction is owner-only,","meaning that only the owner of the program (defined in the [Config]","account) can register a token.","","# Arguments","","* `ctx` - `UpdateMaxNativeSwapAmount` context","* `max_native_swap_amount`:","- Maximum amount of native tokens that can be swapped for this token","- on this chain."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. The program","will modify this account when the swap rate or max native swap amount","changes. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]}],args:[{name:"maxNativeSwapAmount",type:"u64"}]},{name:"setPauseForTransfers",docs:["This instruction updates the `paused` boolean in the `SenderConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can pause outbound","transfers.","","# Arguments","","* `ctx` - `PauseOutboundTransfers` context","* `paused` - Boolean indicating whether outbound transfers are paused."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account."]},{name:"config",isMut:!0,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"paused",type:"bool"}]},{name:"submitOwnershipTransferRequest",docs:["This instruction sets the `pending_owner` field in the `OwnerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can submit an","ownership transfer request.","","# Arguments","","* `ctx` - `ManageOwnership` context","* `new_owner` - Pubkey of the pending owner."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"newOwner",type:"publicKey"}]},{name:"confirmOwnershipTransferRequest",docs:["This instruction confirms that the `pending_owner` is the signer of","the transaction and updates the `owner` field in the `SenderConfig`,","`RedeemerConfig`, and `OwnerConfig` accounts."],accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0,docs:["Must be the pending owner of the program set in the [`OwnerConfig`]","account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `pending_owner`","specified in the context equals the pubkey specified in this account."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account. This instruction will update the `owner`","specified in this account to the `pending_owner` specified in the","[`OwnerConfig`] account. Mutable."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account. This instruction will update the `owner`","specified in this account to the `pending_owner` specified in the","[`OwnerConfig`] account. Mutable."]}],args:[]},{name:"cancelOwnershipTransferRequest",docs:["This instruction cancels the ownership transfer request by setting","the `pending_owner` field in the `OwnerConfig` account to `None`.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can cancel an ownership","transfer request."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[]},{name:"updateAssistant",docs:["This instruction updates the `assistant` field in the `OwnerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can update the","assistant.","","# Arguments","","* `ctx` - `ManageOwnership` context","* `new_assistant` - Pubkey of the new assistant."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"newAssistant",type:"publicKey"}]},{name:"updateFeeRecipient",docs:["This instruction updates the `fee_recipient` field in the `RedeemerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can update the","fee recipient.","","# Arguments","","* `ctx` - `UpdateFeeRecipient` context","* `new_fee_recipient` - Pubkey of the new fee recipient."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`RedeemerConfig`] account."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account, which saves program data useful for other","instructions, specifically for inbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]}],args:[{name:"newFeeRecipient",type:"publicKey"}]},{name:"transferNativeTokensWithRelay",docs:["This instruction is used to transfer native tokens from Solana to a","foreign blockchain. The user can optionally specify a","`to_native_token_amount` to swap some of the tokens for the native","asset on the target chain. For a fee, an off-chain relayer will redeem","the transfer on the target chain. If the user is transferring native","SOL, the contract will automatically wrap the lamports into a WSOL.","","# Arguments","","* `ctx` - `TransferNativeWithRelay` context","* `amount` - Amount of tokens to send","* `to_native_token_amount`:","- Amount of tokens to swap for native assets on the target chain","* `recipient_chain` - Chain ID of the target chain","* `recipient_address` - Address of the target wallet on the target chain","* `batch_id` - Nonce of Wormhole message","* `wrap_native` - Whether to wrap native SOL"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"payerSequence",isMut:!0,isSigner:!1,docs:["Used to keep track of payer's Wormhole sequence number."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. Acts as the signer for the Token Bridge token","transfer. Read-only."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. Send tokens to the contract specified in this","account. Funnily enough, the Token Bridge program does not have any","requirements for outbound transfers for the recipient chain to be","registered. This account provides extra protection against sending","tokens to an unregistered Wormhole chain ID. Read-only."]},{name:"mint",isMut:!0,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract. Mutable."]},{name:"fromTokenAccount",isMut:!0,isSigner:!1,docs:["Payer's associated token account. We may want to make this a generic","token account in the future."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged out, the token account","will have zero balance and can be closed."]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1,docs:["account that holds this mint's balance. This account needs to be","unchecked because a token account may not have been created for this","mint yet. Mutable."]},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1,docs:["tokens transferred in this account for our program. Mutable."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"toNativeTokenAmount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"batchId",type:"u32"},{name:"wrapNative",type:"bool"}]},{name:"transferWrappedTokensWithRelay",docs:["This instruction is used to transfer wrapped tokens from Solana to a","foreign blockchain. The user can optionally specify a","`to_native_token_amount` to swap some of the tokens for the native","assets on the target chain. For a fee, an off-chain relayer will redeem","the transfer on the target chain. This instruction should only be called","when the user is transferring a wrapped token.","","# Arguments","","* `ctx` - `TransferWrappedWithRelay` context","* `amount` - Amount of tokens to send","* `to_native_token_amount`:","- Amount of tokens to swap for native assets on the target chain","* `recipient_chain` - Chain ID of the target chain","* `recipient_address` - Address of the target wallet on the target chain","* `batch_id` - Nonce of Wormhole message"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens."]},{name:"payerSequence",isMut:!0,isSigner:!1,docs:["Used to keep track of payer's Wormhole sequence number."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. Acts as the Token Bridge sender PDA. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. Send tokens to the contract specified in this","account. Funnily enough, the Token Bridge program does not have any","requirements for outbound transfers for the recipient chain to be","registered. This account provides extra protection against sending","tokens to an unregistered Wormhole chain ID. Read-only."]},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1,docs:["Token Bridge wrapped mint info. This is the SPL token that will be","bridged to the foreign contract. The wrapped mint PDA must agree","with the native token's metadata. Mutable."]},{name:"fromTokenAccount",isMut:!0,isSigner:!1,docs:["Payer's associated token account. We may want to make this a generic","token account in the future."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged out, the token account","will have zero balance and can be closed."]},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1,docs:["about the token from its native chain:","* Wormhole Chain ID","* Token's native contract address","* Token's native decimals"]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1,docs:["tokens transferred in this account."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"toNativeTokenAmount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"batchId",type:"u32"}]},{name:"completeNativeTransferWithRelay",docs:["This instruction is used to redeem token transfers from foreign emitters.","It takes custody of the released native tokens and sends the tokens to the","encoded `recipient`. It pays the `fee_recipient` in the token","denomination. If requested by the user, it will perform a swap with the","off-chain relayer to provide the user with lamports. If the token","being transferred is WSOL, the contract will unwrap the WSOL and send","the lamports to the recipient and pay the relayer in lamports.","","# Arguments","","* `ctx` - `CompleteNativeWithRelay` context","* `vaa_hash` - Hash of the VAA that triggered the transfer"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Redeemer Config account. Acts as the Token Bridge redeemer, which signs","for the complete transfer instruction. Read-only."]},{name:"feeRecipientTokenAccount",isMut:!0,isSigner:!1,docs:["Fee recipient's token account. Must be an associated token account. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. The registered contract specified in this","account must agree with the target address for the Token Bridge's token","transfer. Read-only."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over from the","foreign contract. This must match the token address specified in the","signed Wormhole message. Read-only."]},{name:"recipientTokenAccount",isMut:!0,isSigner:!1,docs:["Recipient associated token account. The recipient authority check","is necessary to ensure that the recipient is the intended recipient","of the bridged tokens. Mutable."]},{name:"recipient",isMut:!0,isSigner:!1,docs:["transaction. This instruction verifies that the recipient key","passed in this context matches the intended recipient in the vaa."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"nativeRegisteredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged in, the tokens will be","transferred to the destination token accounts. This account will have","zero balance and can be closed."]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1,docs:["Verified Wormhole message account. The Wormhole program verified","signatures and posted the account data here. Read-only."]},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["is true if the bridged assets have been claimed. If the transfer has","not been redeemed, this account will not exist yet.","","NOTE: The Token Bridge program's claim account is only initialized when","a transfer is redeemed (and the boolean value `true` is written as","its data).","","The Token Bridge program will automatically fail if this transfer","is redeemed again. But we choose to short-circuit the failure as the","first evaluation of this instruction."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["endpoint per chain, but the PDA allows for multiple endpoints for each","chain! We store the proper endpoint for the emitter chain."]},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1,docs:["account that holds this mint's balance."]},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"completeWrappedTransferWithRelay",docs:["This instruction is used to redeem token transfers from foreign emitters.","It takes custody of the minted wrapped tokens and sends the tokens to the","encoded `recipient`. It pays the `fee_recipient` in the wrapped-token","denomination. If requested by the user, it will perform a swap with the","off-chain relayer to provide the user with lamports.","","# Arguments","","* `ctx` - `CompleteWrappedWithRelay` context","* `vaa_hash` - Hash of the VAA that triggered the transfer"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Redeemer Config account. Acts as the Token Bridge redeemer, which signs","for the complete transfer instruction. Read-only."]},{name:"feeRecipientTokenAccount",isMut:!0,isSigner:!1,docs:["Fee recipient's token account. Must be an associated token account. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. The registered contract specified in this","account must agree with the target address for the Token Bridge's token","transfer. Read-only."]},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1,docs:["Token Bridge wrapped mint info. This is the SPL token that will be","bridged from the foreign contract. The wrapped mint PDA must agree","with the native token's metadata in the wormhole message. Mutable."]},{name:"recipientTokenAccount",isMut:!0,isSigner:!1,docs:["Recipient associated token account. The recipient authority check","is necessary to ensure that the recipient is the intended recipient","of the bridged tokens. Mutable."]},{name:"recipient",isMut:!0,isSigner:!1,docs:["transaction. This instruction verifies that the recipient key","passed in this context matches the intended recipient in the vaa."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"nativeRegisteredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged in, the tokens will be","transferred to the destination token accounts. This account will have","zero balance and can be closed."]},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1,docs:["about the token from its native chain:","* Wormhole Chain ID","* Token's native contract address","* Token's native decimals"]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1,docs:["Verified Wormhole message account. The Wormhole program verified","signatures and posted the account data here. Read-only."]},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["is true if the bridged assets have been claimed. If the transfer has","not been redeemed, this account will not exist yet.","","NOTE: The Token Bridge program's claim account is only initialized when","a transfer is redeemed (and the boolean value `true` is written as","its data).","","The Token Bridge program will automatically fail if this transfer","is redeemed again. But we choose to short-circuit the failure as the","first evaluation of this instruction."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["endpoint per chain, but the PDA allows for multiple endpoints for each","chain! We store the proper endpoint for the emitter chain."]},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]}],accounts:[{name:"foreignContract",docs:["Foreign emitter account data."],type:{kind:"struct",fields:[{name:"chain",docs:["Emitter chain. Cannot equal `1` (Solana's Chain ID)."],type:"u16"},{name:"address",docs:["Emitter address. Cannot be zero address."],type:{array:["u8",32]}},{name:"tokenBridgeForeignEndpoint",docs:["Token Bridge program's foreign endpoint account key."],type:"publicKey"},{name:"fee",docs:["The fee that is paid to the `fee_recipient` upon redeeming a transfer.","This value is set in terms of USD and scaled by the `relayer_fee_precision`.","For example, if the `relayer_fee_precision` is `100000000` and the intended","fee is $5, then the `fee` value should be `500000000`."],type:"u64"}]}},{name:"ownerConfig",docs:["Owner account data."],type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"assistant",docs:["Program's assistant. Can be used to update the relayer fee and swap rate."],type:"publicKey"},{name:"pendingOwner",docs:["Intermediate storage for the pending owner. Is used to transfer ownership."],type:{option:"publicKey"}}]}},{name:"redeemerConfig",type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"bump",docs:["PDA bump."],type:"u8"},{name:"relayerFeePrecision",docs:["Relayer fee and swap rate precision."],type:"u32"},{name:"feeRecipient",docs:["Recipient of all relayer fees and swap proceeds."],type:"publicKey"}]}},{name:"registeredToken",docs:["Registered token account data."],type:{kind:"struct",fields:[{name:"swapRate",docs:["Token swap rate. The swap rate is the USD conversion rate of the token."],type:"u64"},{name:"maxNativeSwapAmount",docs:["Maximum amount of native SOL the contract will swap for each transfer."],type:"u64"}]}},{name:"senderConfig",type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"bump",docs:["PDA bump."],type:"u8"},{name:"tokenBridge",docs:["Token Bridge program's relevant addresses."],type:{defined:"OutboundTokenBridgeAddresses"}},{name:"relayerFeePrecision",docs:["Relayer fee and swap rate precision."],type:"u32"},{name:"paused",docs:["Boolean indicating whether outbound transfers are paused."],type:"bool"}]}},{name:"signerSequence",type:{kind:"struct",fields:[{name:"value",type:"u64"}]}}],types:[{name:"OutboundTokenBridgeAddresses",type:{kind:"struct",fields:[{name:"sequence",type:"publicKey"}]}},{name:"TokenBridgeRelayerMessage",docs:["Expected message types for this program. Only valid payloads are:","* `TransferWithRelay`: Payload ID == 1.","","Payload IDs are encoded as u8."],type:{kind:"enum",variants:[{name:"TransferWithRelay",fields:[{name:"target_relayer_fee",type:"u64"},{name:"to_native_token_amount",type:"u64"},{name:"recipient",type:{array:["u8",32]}}]}]}}],errors:[{code:6e3,name:"InvalidWormholeBridge",msg:"InvalidWormholeBridge"},{code:6001,name:"InvalidWormholeFeeCollector",msg:"InvalidWormholeFeeCollector"},{code:6002,name:"OwnerOnly",msg:"OwnerOnly"},{code:6003,name:"OutboundTransfersPaused",msg:"OutboundTransfersPaused"},{code:6004,name:"OwnerOrAssistantOnly",msg:"OwnerOrAssistantOnly"},{code:6005,name:"NotPendingOwner",msg:"NotPendingOwner"},{code:6006,name:"AlreadyTheOwner",msg:"AlreadyTheOwner"},{code:6007,name:"AlreadyTheAssistant",msg:"AlreadyTheAssistant"},{code:6008,name:"AlreadyTheFeeRecipient",msg:"AlreadyTheFeeRecipient"},{code:6009,name:"BumpNotFound",msg:"BumpNotFound"},{code:6010,name:"FailedToMakeImmutable",msg:"FailedToMakeImmutable"},{code:6011,name:"InvalidForeignContract",msg:"InvalidForeignContract"},{code:6012,name:"ZeroBridgeAmount",msg:"ZeroBridgeAmount"},{code:6013,name:"InvalidToNativeAmount",msg:"InvalidToNativeAmount"},{code:6014,name:"NativeMintRequired",msg:"NativeMintRequired"},{code:6015,name:"SwapsNotAllowedForNativeMint",msg:"SwapsNotAllowedForNativeMint"},{code:6016,name:"InvalidTokenBridgeConfig",msg:"InvalidTokenBridgeConfig"},{code:6017,name:"InvalidTokenBridgeAuthoritySigner",msg:"InvalidTokenBridgeAuthoritySigner"},{code:6018,name:"InvalidTokenBridgeCustodySigner",msg:"InvalidTokenBridgeCustodySigner"},{code:6019,name:"InvalidTokenBridgeEmitter",msg:"InvalidTokenBridgeEmitter"},{code:6020,name:"InvalidTokenBridgeSequence",msg:"InvalidTokenBridgeSequence"},{code:6021,name:"InvalidRecipient",msg:"InvalidRecipient"},{code:6022,name:"InvalidTransferToChain",msg:"InvalidTransferToChain"},{code:6023,name:"InvalidTransferTokenChain",msg:"InvalidTransferTokenChain"},{code:6024,name:"InvalidPrecision",msg:"InvalidPrecision"},{code:6025,name:"InvalidTransferToAddress",msg:"InvalidTransferToAddress"},{code:6026,name:"AlreadyRedeemed",msg:"AlreadyRedeemed"},{code:6027,name:"InvalidTokenBridgeForeignEndpoint",msg:"InvalidTokenBridgeForeignEndpoint"},{code:6028,name:"InvalidTokenBridgeMintAuthority",msg:"InvalidTokenBridgeMintAuthority"},{code:6029,name:"InvalidPublicKey",msg:"InvalidPublicKey"},{code:6030,name:"ZeroSwapRate",msg:"ZeroSwapRate"},{code:6031,name:"TokenNotRegistered",msg:"TokenNotRegistered"},{code:6032,name:"ChainNotRegistered",msg:"ChainNotRegistered"},{code:6033,name:"TokenAlreadyRegistered",msg:"TokenAlreadyRegistered"},{code:6034,name:"FeeCalculationError",msg:"TokenFeeCalculationError"},{code:6035,name:"InvalidSwapCalculation",msg:"InvalidSwapCalculation"},{code:6036,name:"InsufficientFunds",msg:"InsufficientFunds"}]};function be(t,e){return new ae.Program(Dt,new i.PublicKey(t),{connection:e})}function Vt(t,e){return A.deriveAddress([o.Buffer.from("seq"),new i.PublicKey(e).toBuffer()],t)}async function Yt(t,e,r,n,a,s,u,c,d,l,f,m){const{methods:{transferNativeTokensWithRelay:g},account:{signerSequence:h}}=be(e,t),y=Vt(e,r),S=await h.fetch(y).then(({value:M})=>M).catch(M=>{if(M.message?.includes("Account does not exist"))return new i.BN(0);throw M}),B=Ze(e,r,S),P=F(new i.PublicKey(s),new i.PublicKey(r)),b=Ge(e,s),R=zt(e,n,a,r,B,P,s);return g(new i.BN(u.toString()),new i.BN(c.toString()),o.toChainId(l),[...d],f,m).accounts({config:Ye(e),payerSequence:y,foreignContract:he(e,l),registeredToken:pe(e,s),tmpTokenAccount:b,tokenBridgeProgram:new i.PublicKey(n),...R}).instruction()}async function Gt(t,e,r,n,a,s,u,c,d,l,f){const{methods:{transferWrappedTokensWithRelay:m},account:{signerSequence:g}}=be(e,t),h=Vt(e,r),y=await g.fetch(h).then(({value:v})=>v).catch(v=>{if(v.message?.includes("Account does not exist"))return new i.BN(0);throw v}),S=Ze(e,r,y),B=F(new i.PublicKey(s),new i.PublicKey(r)),{chain:P,tokenAddress:b}=await ie(t,n,s),R=Ge(e,s),M=qt(e,n,a,r,S,B,P,b);return m(new i.BN(u.toString()),new i.BN(c.toString()),o.toChainId(l),[...d],f).accounts({config:Ye(e),payerSequence:h,foreignContract:he(e,l),registeredToken:pe(e,new i.PublicKey(s)),tmpTokenAccount:R,tokenBridgeProgram:new i.PublicKey(n),...M}).instruction()}class J{network;chain;connection;contracts;chainId;coreBridge;tokenBridge;constructor(e,r,n,a){this.network=e,this.chain=r,this.connection=n,this.contracts=a,this.chainId=o.toChainId(r);const s=a.tokenBridge;if(!s)throw new Error(`TokenBridge contract Address for chain ${r} not found`);this.tokenBridge=W(s,n),this.coreBridge=new w.SolanaWormholeCore(e,r,n,a)}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch for chain ${a}: ${s.network} != ${n}`);return new J(n,a,e,s.contracts)}async isWrappedAsset(e){return ie(this.connection,this.tokenBridge.programId,new i.SolanaAddress(e).toUint8Array()).catch(r=>null).then(r=>r!=null)}async getOriginalAsset(e){if(!await this.isWrappedAsset(e))throw o.ErrNotWrapped(e.toString());const r=new i.SolanaAddress(e).toUint8Array(),n=new i.PublicKey(r);try{const a=await ie(this.connection,this.tokenBridge.programId,r);return a===null?{chain:this.chain,address:new i.SolanaAddress(n.toBytes()).toUniversalAddress()}:{chain:o.toChain(a.chain),address:new o.UniversalAddress(new Uint8Array(a.tokenAddress))}}catch{throw o.ErrNotWrapped(e.toString())}}async getTokenUniversalAddress(e){return new i.SolanaAddress(e).toUniversalAddress()}async getTokenNativeAddress(e,r){return new i.SolanaAddress(r).toNative()}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(o.isNative(e.address))throw new Error("Native cannot be a wrapped asset");if(e.chain===this.chain)throw new Error(`Token ${e.address} is already native to chain ${this.chain}`);const r=G(this.tokenBridge.programId,o.toChainId(e.chain),e.address.toUniversalAddress().toUint8Array());try{return await ie(this.connection,this.tokenBridge.programId,r),o.toNative(this.chain,r.toBase58())}catch{}throw o.ErrNotWrapped(`${r}: ${e.address.toUniversalAddress().toString()}`)}async isTransferCompleted(e){return w.getClaim(this.connection,this.tokenBridge.programId,e.emitterAddress.toUint8Array(),o.toChainId(e.emitterChain),e.sequence,this.connection.commitment).catch(()=>!1)}async getWrappedNative(){return o.toNative(this.chain,N.toBase58())}async*createAttestation(e,r){if(!r)throw new Error("Payer required to create attestation");const n=new i.SolanaAddress(r).unwrap(),a=0,s=await this.coreBridge.getMessageFee(),u=w.createBridgeFeeTransferInstruction(this.coreBridge.coreBridge.programId,n,s),c=new i.SolanaAddress(e).unwrap(),d=await i.SolanaPlatform.getTokenProgramId(this.connection,c);let l;if(d.equals(Ie)){const h=await ct(this.connection,c,void 0,d),y=wn(h);y?.metadataAddress&&(l=y?.metadataAddress)}const f=i.Keypair.generate(),m=vt(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,new i.SolanaAddress(e).unwrap(),f.publicKey,a,l),g=new i.Transaction$1().add(u,m);g.feePayer=n,yield this.createUnsignedTx({transaction:g,signers:[f]},"Solana.AttestToken")}async*submitAttestation(e,r){if(!r)throw new Error("Payer required to create attestation");const n=new i.SolanaAddress(r).unwrap();yield*this.coreBridge.postVaa(n,e);const a=new i.Transaction$1().add(Kt(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,e));a.feePayer=n,yield this.createUnsignedTx({transaction:a},"Solana.CreateWrapped")}async transferSol(e,r,n,a){const s=new i.SolanaAddress(e).unwrap(),u=s,c=r.address.toUniversalAddress().toUint8Array(),d=o.toChainId(r.chain),l=0,f=0n,m=i.Keypair.generate(),g=i.Keypair.generate(),h=await Re(this.connection),y=i.SystemProgram.createAccount({fromPubkey:u,newAccountPubkey:g.publicKey,lamports:h,space:E,programId:k}),S=i.SystemProgram.transfer({fromPubkey:u,lamports:n,toPubkey:g.publicKey}),B=We(g.publicKey,N,u),P=_e(this.tokenBridge.programId,g.publicKey,u,n,k),b=a?Fe(this.connection,this.tokenBridge.programId,this.coreBridge.address,s,m.publicKey,g.publicKey,N,k,l,n,c,d,a):Le(this.connection,this.tokenBridge.programId,this.coreBridge.address,s,m.publicKey,g.publicKey,N,k,l,n,f,c,d),R=Ee(g.publicKey,u,u),M=new i.Transaction$1;return M.feePayer=u,M.add(y,S,B,P,b,R),this.createUnsignedTx({transaction:M,signers:[m,g]},"TokenBridge.TransferNative")}async*transfer(e,r,n,a,s){if(o.isNative(n)){yield await this.transferSol(e,r,a,s);return}const u=new i.SolanaAddress(n).unwrap(),c=new i.SolanaAddress(e).unwrap(),d=await i.SolanaPlatform.getTokenProgramId(this.connection,u);if(d.equals(Ie))throw new Error("Transfers of Token-2022 assets are not supported via the Manual Token Bridge route. Please use the Executor Token Bridge route instead.");let l=await ut(u,c,!1,d);const f=!await this.isWrappedAsset(n);let m,g=!1;if(f&&d.equals(Ie)){const C=await this.connection.getAccountInfo(l);if(C&&C.data.length>E){const q=await yt(this.connection,l,void 0,d);q.tlvData&&(g=Fn(q.tlvData).includes(T.ImmutableOwner))}}const h=r.address.toUniversalAddress().toUint8Array(),y=o.toChainId(r.chain),S=0,B=0n,P=i.Keypair.generate(),b=[],R=[P];if(g){m=i.Keypair.generate(),R.push(m);const C=await Re(this.connection);b.push(i.SystemProgram.createAccount({fromPubkey:c,newAccountPubkey:m.publicKey,lamports:C,space:E,programId:d})),b.push(We(m.publicKey,u,c,d)),b.push(Ne(l,m.publicKey,c,a,[],d)),l=m.publicKey}let M;if(f)M=s?Fe(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,u,d,S,a,h,y,s):Le(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,u,d,S,a,B,h,y);else{const C=await this.getOriginalAsset(n);if(o.isNative(C.address))throw new Error("Native cannot be an original asset");M=s?Ot(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,c,o.toChainId(C.chain),C.address.toUint8Array(),d,S,a,h,y,s):Lt(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,c,o.toChainId(C.chain),C.address.toUint8Array(),d,S,a,B,h,y)}const v=_e(this.tokenBridge.programId,l,c,a,d);b.push(v),b.push(M),m&&b.push(Ee(m.publicKey,c,c,[],d));const U=new i.Transaction$1().add(...b);U.feePayer=c,yield this.createUnsignedTx({transaction:U,signers:R},"TokenBridge.TransferTokens")}async*redeemAndUnwrap(e,r){const n=new i.SolanaAddress(e).unwrap(),a=new i.SolanaAddress(r.payload.to.address).unwrap(),s=await ct(this.connection,N).then(y=>r.payload.token.amount*BigInt(Math.pow(10,y.decimals-8))),u=await Re(this.connection),c=i.Keypair.generate(),d=Ue(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,r),l=i.SystemProgram.createAccount({fromPubkey:n,newAccountPubkey:c.publicKey,lamports:u,space:E,programId:k}),f=We(c.publicKey,N,n),m=Ne(a,c.publicKey,n,s.valueOf()),g=Ee(c.publicKey,n,n),h=new i.Transaction$1;h.feePayer=n,h.add(d,l,f,m,g),yield this.createUnsignedTx({transaction:h,signers:[c]},"TokenBridge.RedeemAndUnwrap")}async*createAta(e,r,n){const a=new i.SolanaAddress(e).unwrap(),s=new i.SolanaAddress(r).unwrap(),u=await ut(s,a,!1,n);if(await this.connection.getAccountInfo(u)===null){const d=new i.Transaction$1().add(Mt(a,u,a,s,n));d.feePayer=a,yield this.createUnsignedTx({transaction:d},"Redeem.CreateATA")}}async*redeem(e,r,n=!0){const a=r.payload.token.chain===this.chain?r.payload.token.address:(await this.getWrappedAsset(r.payload.token)).toUniversalAddress(),s=await i.SolanaPlatform.getTokenProgramId(this.connection,new i.SolanaAddress(a).unwrap());if(yield*this.createAta(e,a,s),yield*this.coreBridge.postVaa(e,r),n){const l=new i.SolanaAddress(await this.getWrappedNative());if(o.bytes.equals(a.toUint8Array(),l.toUint8Array())){yield*this.redeemAndUnwrap(e,r);return}}const u=new i.SolanaAddress(e).unwrap(),c=r.payload.token.chain==this.chain?Ue:Et,d=new i.Transaction$1().add(c(this.connection,this.tokenBridge.programId,this.coreBridge.address,u,r,void 0,s));d.feePayer=u,yield this.createUnsignedTx({transaction:d},"Solana.RedeemTransfer")}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}const fr={Testnet:["7VPWjBhCXrpYYBiRKZh1ubh9tLZZNkZGp2ReRphEV4Mc","3WK3mEDNPrNuQReBvM28NcsqrExMnPxD9pPJmgrUeKKH","BaGfF51MQ3a61papTRDYaNefBgTQ9ywnVne5fCff4bxT","ACbmcQxbbhiXWM1GmapUSMmBYKMvnFLfAAXKqdo8xKwo","GQtMXZxnuacCFTXVeTvyHi6P9F6chbtzhVc8JgD8hv7c","3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR","DMw2tLaq1bVoAEKtkoUtieSk9bfCPUvubYLatTMsSVop","84F2QX9278ToDmA98u4A86xSV9hz1ovazr8zwGaX6qjS","So11111111111111111111111111111111111111112","8987WGkYa5viiZ9DD8sS3PB5XghKmWjkEgmzvwDuoAEc","BJZ72CjPQojVoH68mzrd4VQ4nr6KuhbAGnhZEZCujKxY"],Mainnet:["7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs","A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM","Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1","3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh","9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa","Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG","KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE","DRQBDBEWmwWGK13fRTLhSPzjbvMSUavhV6nW4RUH8W6T","9kvAcwQbqejuJMd59mKuw2bfSsLRaQ7zuvaTVHEeBBec","7ixSaXGsHAFy34wogPk2YXiUX3BMmQMFdercdaHLnBby","G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr","So11111111111111111111111111111111111111112"],Devnet:[]},H=9,ne=new i.BN(10),$=new i.BN(1e8);class Te{network;chain;connection;contracts;chainId;coreBridgeProgramId;tokenBridgeProgramId;tokenBridgeRelayer;constructor(e,r,n,a){this.network=e,this.chain=r,this.connection=n,this.contracts=a,this.chainId=o.toChainId(r);const s=a.tokenBridgeRelayer;if(!s)throw new Error(`TokenBridge contract Address for chain ${r} not found`);this.tokenBridgeRelayer=be(s,n),this.tokenBridgeProgramId=new i.PublicKey(a.tokenBridge),this.coreBridgeProgramId=new i.PublicKey(a.coreBridge)}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch for chain ${a}: ${s.network} != ${n}`);return new Te(n,a,e,s.contracts)}async*transfer(e,r,n,a,s){const c=new i.SolanaAddress(e).unwrap(),d=r.address.toUniversalAddress().toUint8Array(),l=this.mintAddress(n),f=new i.Transaction$1;if(o.isNative(n)){const y=F(l,c);try{await yt(this.connection,y)}catch(S){if(S instanceof ze){const B=Mt(c,y,c,l);f.add(B)}else throw S}}const m=s||0n,g=o.isNative(n),h=g?await Yt(this.connection,this.tokenBridgeRelayer.programId,c,this.tokenBridgeProgramId,this.coreBridgeProgramId,l,a,m,d,r.chain,0,g):await Gt(this.connection,this.tokenBridgeRelayer.programId,c,this.tokenBridgeProgramId,this.coreBridgeProgramId,l,a,m,d,r.chain,0);f.add(h),f.feePayer=c,yield this.createUnsignedTx({transaction:f},"AutomaticTokenBridge.Transfer")}async*redeem(e,r){const n=new i.Transaction$1;throw yield this.createUnsignedTx({transaction:n},"AutomaticTokenBridge.Redeem"),new Error("Method not implemented.")}async getRelayerFee(e,r){const n=this.mintAddress(r),[{fee:a},{swapRate:s},{relayerFeePrecision:u}]=await Promise.all([this.getForeignContract(e),this.getRegisteredToken(n),this.getRedeemerConfig()]),c=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,r)),d=ne.pow(new i.BN(c)).mul(a).mul($).div(new i.BN(u).mul(s));return BigInt(d.toString())}async maxSwapAmount(e){const r=this.mintAddress(e),[{swapRate:n,maxNativeSwapAmount:a},{swapRate:s}]=await Promise.all([this.getRegisteredToken(r),this.getRegisteredToken(N)]),u=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e)),c=this.calculateNativeSwapRate(s,n),d=u>H?a.mul(c).mul(ne.pow(new i.BN(u-H))).div($):a.mul(c).div(ne.pow(new i.BN(H-u)).mul($));return BigInt(d.toString())}async nativeTokenAmount(e,r){if(r===0n)return 0n;const n=this.mintAddress(e),a=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e)),[{swapRate:s},{swapRate:u}]=await Promise.all([this.getRegisteredToken(n),this.getRegisteredToken(N)]),c=this.calculateNativeSwapRate(u,s),d=a>H?$.mul(new i.BN(r.toString())).div(c.mul(ne.pow(new i.BN(a-H)))):$.mul(new i.BN(r.toString())).mul(ne.pow(new i.BN(H-a))).div(c);return BigInt(d.toString())}async isRegisteredToken(e){const r=this.mintAddress(e);try{return await this.getRegisteredToken(r),!0}catch(n){if(n.message?.includes("Account does not exist"))return!1;throw n}}mintAddress(e){return o.isNative(e)?new i.PublicKey(N):new i.SolanaAddress(e).unwrap()}async getRegisteredTokens(){return fr[this.network].map(e=>o.toNative(this.chain,e))}calculateNativeSwapRate(e,r){return $.mul(e).div(r)}async getForeignContract(e){return await this.tokenBridgeRelayer.account.foreignContract.fetch(he(this.tokenBridgeRelayer.programId,e))}async getRegisteredToken(e){return await this.tokenBridgeRelayer.account.registeredToken.fetch(pe(this.tokenBridgeRelayer.programId,e))}async getRedeemerConfig(){return await this.tokenBridgeRelayer.account.redeemerConfig.fetch(bt(this.tokenBridgeRelayer.programId))}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}const Oe={version:"0.4.0",name:"tokenBridgeRelayer",instructions:[{name:"completeNativeTransferWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"completeWrappedTransferWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"senderConfig",isMut:!0,isSigner:!1},{name:"redeemerConfig",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]},{name:"resolveExecuteVaaV1",accounts:[],args:[{name:"vaaBody",type:"bytes"}],returns:{defined:"ResolverInstructionGroups"}},{name:"transferNativeTokensWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"fromTokenAccount",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"payee",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferNativeTokensWithRelayArgs"}}]},{name:"transferWrappedTokensWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1},{name:"fromTokenAccount",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"payee",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferWrappedTokensWithRelayArgs"}}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"RedeemerConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}},{name:"SenderConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],types:[{name:"InstructionGroup",type:{kind:"struct",fields:[{name:"instructions",type:{vec:{defined:"SerializableInstruction"}}},{name:"addressLookupTables",type:{vec:"publicKey"}}]}},{name:"InstructionGroups",type:{kind:"struct",fields:[{name:"groups",type:{vec:{defined:"InstructionGroup"}}}]}},{name:"MissingAccounts",type:{kind:"struct",fields:[{name:"accounts",type:{vec:"publicKey"}},{name:"addressLookupTables",type:{vec:"publicKey"}}]}},{name:"ResolverInstructionGroups",type:{kind:"enum",variants:[{name:"Resolved",fields:[{name:"groups",type:{defined:"InstructionGroups"}}]},{name:"Missing",fields:[{name:"accounts",type:{defined:"MissingAccounts"}}]},{name:"Account"}]}},{name:"SerializableAccountMeta",type:{kind:"struct",fields:[{name:"pubkey",type:"publicKey"},{name:"isSigner",type:"bool"},{name:"isWritable",type:"bool"}]}},{name:"SerializableInstruction",type:{kind:"struct",fields:[{name:"programId",type:"publicKey"},{name:"accounts",type:{vec:{defined:"SerializableAccountMeta"}}},{name:"data",type:"bytes"}]}},{name:"TransferNativeTokensWithRelayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"nonce",type:"u32"},{name:"wrapNative",type:"bool"},{name:"dstTransferRecipient",type:{array:["u8",32]}},{name:"dstExecutionAddress",type:{array:["u8",32]}},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}},{name:"TransferWrappedTokensWithRelayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"nonce",type:"u32"},{name:"dstTransferRecipient",type:{array:["u8",32]}},{name:"dstExecutionAddress",type:{array:["u8",32]}},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}],errors:[{code:6e3,name:"InvalidWormholeBridge",msg:"invalidWormholeBridge"},{code:6001,name:"InvalidWormholeFeeCollector",msg:"invalidWormholeFeeCollector"},{code:6002,name:"OwnerOnly",msg:"ownerOnly"},{code:6003,name:"OutboundTransfersPaused",msg:"outboundTransfersPaused"},{code:6004,name:"OwnerOrAssistantOnly",msg:"ownerOrAssistantOnly"},{code:6005,name:"NotPendingOwner",msg:"notPendingOwner"},{code:6006,name:"AlreadyTheOwner",msg:"alreadyTheOwner"},{code:6007,name:"AlreadyTheAssistant",msg:"alreadyTheAssistant"},{code:6008,name:"AlreadyTheFeeRecipient",msg:"alreadyTheFeeRecipient"},{code:6009,name:"BumpNotFound",msg:"bumpNotFound"},{code:6010,name:"FailedToMakeImmutable",msg:"failedToMakeImmutable"},{code:6011,name:"InvalidForeignContract",msg:"invalidForeignContract"},{code:6012,name:"ZeroBridgeAmount",msg:"zeroBridgeAmount"},{code:6013,name:"InvalidToNativeAmount",msg:"invalidToNativeAmount"},{code:6014,name:"NativeMintRequired",msg:"nativeMintRequired"},{code:6015,name:"SwapsNotAllowedForNativeMint",msg:"swapsNotAllowedForNativeMint"},{code:6016,name:"InvalidTokenBridgeConfig",msg:"invalidTokenBridgeConfig"},{code:6017,name:"InvalidTokenBridgeAuthoritySigner",msg:"invalidTokenBridgeAuthoritySigner"},{code:6018,name:"InvalidTokenBridgeCustodySigner",msg:"invalidTokenBridgeCustodySigner"},{code:6019,name:"InvalidTokenBridgeEmitter",msg:"invalidTokenBridgeEmitter"},{code:6020,name:"InvalidTokenBridgeSequence",msg:"invalidTokenBridgeSequence"},{code:6021,name:"InvalidRecipient",msg:"invalidRecipient"},{code:6022,name:"InvalidTransferToChain",msg:"invalidTransferToChain"},{code:6023,name:"InvalidTransferTokenChain",msg:"invalidTransferTokenChain"},{code:6024,name:"InvalidPrecision",msg:"invalidPrecision"},{code:6025,name:"InvalidTransferToAddress",msg:"invalidTransferToAddress"},{code:6026,name:"AlreadyRedeemed",msg:"alreadyRedeemed"},{code:6027,name:"InvalidTokenBridgeForeignEndpoint",msg:"invalidTokenBridgeForeignEndpoint"},{code:6028,name:"InvalidTokenBridgeMintAuthority",msg:"invalidTokenBridgeMintAuthority"},{code:6029,name:"InvalidPublicKey",msg:"invalidPublicKey"},{code:6030,name:"ZeroSwapRate",msg:"zeroSwapRate"},{code:6031,name:"TokenNotRegistered",msg:"tokenNotRegistered"},{code:6032,name:"ChainNotRegistered",msg:"chainNotRegistered"},{code:6033,name:"TokenAlreadyRegistered",msg:"tokenAlreadyRegistered"},{code:6034,name:"FeeCalculationError",msg:"tokenFeeCalculationError"},{code:6035,name:"InvalidSwapCalculation",msg:"invalidSwapCalculation"},{code:6036,name:"InsufficientFunds",msg:"insufficientFunds"},{code:6037,name:"FailedToParseVaaBody",msg:"failedToParseVaaBody"}]};class D{network;chain;connection;contracts;relayerProgramId;executorProgramId;wormholeProgramId;tokenBridgeProgramId;relayerProgram;constructor(e,r,n,a){if(this.network=e,this.chain=r,this.connection=n,this.contracts=a,!a.executorTokenBridge)throw new Error(`Executor Token Bridge contracts not found for network ${e} and chain ${r}`);this.relayerProgramId=new i.PublicKey(a.executorTokenBridge.relayer),this.executorProgramId=new i.PublicKey(a.executor),this.wormholeProgramId=new i.PublicKey(a.coreBridge),this.tokenBridgeProgramId=new i.PublicKey(a.tokenBridge),this.relayerProgram=new ae.Program(Oe,this.relayerProgramId,{connection:this.connection})}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new D(n,a,e,s.contracts)}async*transfer(e,r,n,a,s,u){const c=o.executorTokenBridge.get(this.network,r.chain);if(!c||!c.relayer)throw new Error(`Token Bridge Executor Relayer contract for domain ${r.chain} not found`);const d=c.relayer,l=new i.SolanaAddress(e).unwrap(),f=o.toChainId(r.chain),m=r.address.toUniversalAddress(),{estimatedCost:g,signedQuote:h,relayInstructions:y}=s,S=o.serialize(o.signedQuoteLayout,h),B=o.serialize(o.relayInstructionsLayout,y),P=new J(this.network,this.chain,this.connection,this.contracts),b=o.isNative(n),R=!b&&await P.isWrappedAsset(n),M=b?N:new i.SolanaAddress(n).unwrap(),v=await i.SolanaPlatform.getTokenProgramId(this.connection,M),U=new i.PublicKey(h.quote.payeeAddress),C=i.Keypair.generate(),q=o.toUniversal(r.chain,d),Pe=q,de=i.PublicKey.findProgramAddressSync([o.Buffer.from("config")],this.tokenBridgeProgramId)[0],Be=i.PublicKey.findProgramAddressSync([M.toBuffer()],this.tokenBridgeProgramId)[0],le=i.PublicKey.findProgramAddressSync([o.Buffer.from("authority_signer")],this.tokenBridgeProgramId)[0],Zt=i.PublicKey.findProgramAddressSync([o.Buffer.from("custody_signer")],this.tokenBridgeProgramId)[0],{wormholeEmitter:Xe,wormholeSequence:Je,wormholeFeeCollector:je,wormholeBridge:et}=w.getWormholeDerivedAccounts(this.tokenBridgeProgramId,this.wormholeProgramId),tt=i.PublicKey.findProgramAddressSync([o.Buffer.from("sender")],this.relayerProgramId)[0],nt=F(M,l,!1,v),rt=i.PublicKey.findProgramAddressSync([o.Buffer.from("tmp"),M.toBytes()],this.relayerProgramId)[0],Z=[];if(u&&u.feeAmount>0n){const Ce=new i.PublicKey(u.referrer.address.toString());if(M.equals(N))Z.push(i.SystemProgram.transfer({fromPubkey:l,toPubkey:Ce,lamports:u.feeAmount}));else{const ve=F(M,Ce,!0,v),Jt=F(M,l,!0,v);await this.connection.getAccountInfo(ve)||Z.push(On(l,ve,Ce,M,v)),Z.push(Ne(Jt,ve,l,u.feeAmount,void 0,v))}}const Ht=u?u.remainingAmount:a,it={amount:new i.BN(Ht.toString()),recipientChain:f,recipientAddress:Array.from(m.toUint8Array()),nonce:0,dstTransferRecipient:Array.from(q.toUint8Array()),dstExecutionAddress:Array.from(Pe.toUint8Array()),execAmount:new i.BN(g.toString()),signedQuoteBytes:o.Buffer.from(S),relayInstructions:o.Buffer.from(B)};R?Z.push(await this.relayerProgram.methods.transferWrappedTokensWithRelay(it).accountsStrict({payer:l,config:tt,tokenBridgeWrappedMint:M,fromTokenAccount:nt,tmpTokenAccount:rt,tokenBridgeWrappedMeta:x(this.tokenBridgeProgramId,M),tokenBridgeConfig:de,tokenBridgeAuthoritySigner:le,wormholeBridge:et,wormholeMessage:C.publicKey,tokenBridgeEmitter:Xe,tokenBridgeSequence:Je,wormholeFeeCollector:je,payee:U,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,systemProgram:i.SystemProgram.programId,tokenProgram:v,executorProgram:this.executorProgramId,clock:i.SYSVAR_CLOCK_PUBKEY,rent:i.SYSVAR_RENT_PUBKEY}).instruction()):Z.push(await this.relayerProgram.methods.transferNativeTokensWithRelay({...it,wrapNative:o.isNative(n)}).accountsStrict({payer:l,config:tt,mint:M,fromTokenAccount:nt,tmpTokenAccount:rt,tokenBridgeConfig:de,tokenBridgeCustody:Be,tokenBridgeAuthoritySigner:le,tokenBridgeCustodySigner:Zt,wormholeBridge:et,wormholeMessage:C.publicKey,tokenBridgeEmitter:Xe,tokenBridgeSequence:Je,wormholeFeeCollector:je,payee:U,systemProgram:i.SystemProgram.programId,tokenProgram:v,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,associatedTokenProgram:O,executorProgram:this.executorProgramId,clock:i.SYSVAR_CLOCK_PUBKEY,rent:i.SYSVAR_RENT_PUBKEY}).instruction());const at=await this.getAddressLookupTable(),{blockhash:$t}=await this.connection.getLatestBlockhash(),Qt=new i.TransactionMessage({payerKey:l,instructions:Z,recentBlockhash:$t}).compileToV0Message(at?[at]:[]),Xt=new i.VersionedTransaction(Qt);yield this.createUnsignedTx({transaction:Xt,signers:[C]},"ExecutorTokenBridge.transfer")}async*redeem(e,r){const n=new i.SolanaAddress(e).unwrap(),a=new i.SolanaAddress(r.payload.payload.targetRecipient).unwrap(),s=r.payload.token.chain,u=r.payload.token.address,c=s===this.chain;let d;if(c)d=new i.SolanaAddress(u).unwrap();else{const le=await new J(this.network,this.chain,this.connection,this.contracts).getWrappedAsset({chain:s,address:u});d=new i.SolanaAddress(le).unwrap()}const l=await i.SolanaPlatform.getTokenProgramId(this.connection,d),f=F(d,a,!0,l),m=w.derivePostedVaaKey(this.wormholeProgramId,o.Buffer.from(r.hash));await this.connection.getAccountInfo(m)||(yield*new w.SolanaWormholeCore(this.network,this.chain,this.connection,this.contracts).postVaa(n,r));const h=new i.SolanaAddress(r.payload.to.address).unwrap(),y=new ae.Program(Oe,h,{connection:this.connection}),S=i.PublicKey.findProgramAddressSync([o.Buffer.from("redeemer")],y.programId)[0],B=i.PublicKey.findProgramAddressSync([o.Buffer.from("config")],this.tokenBridgeProgramId)[0],P=i.PublicKey.findProgramAddressSync([o.Buffer.from("tmp"),d.toBytes()],y.programId)[0],b=w.deriveClaimKey(this.tokenBridgeProgramId,r.emitterAddress.toUint8Array(),o.toChainId(r.emitterChain),r.sequence),R=z(this.tokenBridgeProgramId,o.toChainId(r.emitterChain),r.emitterAddress.toUint8Array()),M=i.PublicKey.findProgramAddressSync([d.toBuffer()],this.tokenBridgeProgramId)[0],v=i.PublicKey.findProgramAddressSync([o.Buffer.from("custody_signer")],this.tokenBridgeProgramId)[0];let U;const C=Array.from(r.hash);c?U=await y.methods.completeNativeTransferWithRelay(C).accountsStrict({payer:n,config:S,mint:d,recipientTokenAccount:f,recipient:a,tmpTokenAccount:P,tokenBridgeConfig:B,vaa:m,tokenBridgeClaim:b,tokenBridgeForeignEndpoint:R,tokenBridgeCustody:M,tokenBridgeCustodySigner:v,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,tokenProgram:l,associatedTokenProgram:O,systemProgram:i.SystemProgram.programId,rent:i.SYSVAR_RENT_PUBKEY}).instruction():U=await y.methods.completeWrappedTransferWithRelay(C).accountsStrict({payer:n,config:S,tokenBridgeWrappedMint:d,recipientTokenAccount:f,recipient:a,tmpTokenAccount:P,tokenBridgeWrappedMeta:x(this.tokenBridgeProgramId,d),tokenBridgeConfig:B,vaa:m,tokenBridgeClaim:b,tokenBridgeForeignEndpoint:R,tokenBridgeMintAuthority:te(this.tokenBridgeProgramId),wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,tokenProgram:l,associatedTokenProgram:O,systemProgram:i.SystemProgram.programId,rent:i.SYSVAR_RENT_PUBKEY}).instruction();const{blockhash:q}=await this.connection.getLatestBlockhash(),Pe=new i.TransactionMessage({payerKey:n,instructions:[U],recentBlockhash:q}).compileToV0Message(),de=new i.VersionedTransaction(Pe);yield this.createUnsignedTx({transaction:de,signers:[]},"ExecutorTokenBridge.redeem")}async getAddressLookupTable(){const e=i.PublicKey.findProgramAddressSync([o.Buffer.from("lut")],this.relayerProgramId)[0];try{const r=(await this.relayerProgram.account.lut.fetch(e)).address,n=await this.connection.getAddressLookupTable(r);if(n.value)return n.value}catch{}return null}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e,r){let n=0n;if(n+=2n*5000n+7n*5000n+1400000n,n+=2n*5000n+7n*5000n,n+=5000n+3200000n,o.isNative(e.address)||o.canonicalAddress(e)===N.toString()?n+=5000n+5000000n:n+=5000n+1200000n,r){const a=new i.PublicKey(r.address.toString());if(!o.isNative(e.address)){const s=new i.SolanaAddress(e.address).unwrap(),u=await this.connection.getAccountInfo(s);if(u===null)throw new Error("Couldn't determine token program. Mint account is null.");const c=F(s,a,!0,u.owner);await this.connection.getAccountInfo(c)===null&&(D.associatedTokenAccountMinRent||(D.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),n+=D.associatedTokenAccountMinRent)}}return{msgValue:n,gasLimit:310000n}}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}o.registerProtocol(i._platform,"TokenBridge",J);o.registerProtocol(i._platform,"AutomaticTokenBridge",Te);o.registerProtocol(i._platform,"ExecutorTokenBridge",D);exports.CreateMetadataAccountArgs=se;exports.Creator=L;exports.Data=ce;exports.EndpointRegistration=we;exports.ExecutorTokenBridgeRelayerIdl=Oe;exports.Metadata=ke;exports.SolanaAutomaticTokenBridge=Te;exports.SolanaExecutorTokenBridge=D;exports.SolanaTokenBridge=J;exports.SplTokenMetadataProgram=X;exports.TOKEN_BRIDGE_IDL=He;exports.TOKEN_BRIDGE_RELAYER_IDL=Dt;exports.TokenBridgeConfig=ye;exports.WrappedMeta=Me;exports.coder=Ct;exports.createApproveAuthoritySignerInstruction=_e;exports.createAttestTokenInstruction=vt;exports.createCompleteTransferNativeInstruction=Ue;exports.createCompleteTransferWrappedInstruction=Et;exports.createCreateWrappedInstruction=Kt;exports.createInitializeInstruction=or;exports.createReadOnlyTokenBridgeProgramInterface=W;exports.createRegisterChainInstruction=cr;exports.createTokenBridgeProgramInterface=Bt;exports.createTokenBridgeRelayerProgramInterface=be;exports.createTransferNativeInstruction=Le;exports.createTransferNativeTokensWithRelayInstruction=Yt;exports.createTransferNativeWithPayloadInstruction=Fe;exports.createTransferWrappedInstruction=Lt;exports.createTransferWrappedTokensWithRelayInstruction=Gt;exports.createTransferWrappedWithPayloadInstruction=Ot;exports.createUpgradeContractInstruction=ur;exports.deriveAuthoritySignerKey=Y;exports.deriveCustodyKey=oe;exports.deriveCustodySignerKey=ee;exports.deriveEndpointKey=z;exports.deriveForeignContractAddress=he;exports.deriveMintAuthorityKey=te;exports.deriveRedeemerAccountKey=Ae;exports.deriveRedeemerConfigAddress=bt;exports.deriveRegisteredTokenAddress=pe;exports.deriveSenderAccountKey=Se;exports.deriveSenderConfigAddress=Ye;exports.deriveSplTokenMetadataKey=ue;exports.deriveTmpTokenAccountAddress=Ge;exports.deriveTokenBridgeConfigKey=I;exports.deriveTokenTransferMessageAddress=Ze;exports.deriveWrappedMetaKey=x;exports.deriveWrappedMintKey=G;exports.getAttestTokenAccounts=xe;exports.getCompleteTransferNativeAccounts=It;exports.getCompleteTransferNativeWithPayloadCpiAccounts=lr;exports.getCompleteTransferWrappedAccounts=Rt;exports.getCompleteTransferWrappedWithPayloadCpiAccounts=mr;exports.getCreateWrappedAccounts=Wt;exports.getEndpointRegistration=qn;exports.getInitializeAccounts=Nt;exports.getMetadata=sr;exports.getRegisterChainAccounts=_t;exports.getTokenBridgeConfig=zn;exports.getTokenBridgeDerivedAccounts=dr;exports.getTransferNativeAccounts=Ut;exports.getTransferNativeWithPayloadAccounts=$e;exports.getTransferNativeWithPayloadCpiAccounts=zt;exports.getTransferWrappedAccounts=Ft;exports.getTransferWrappedWithPayloadAccounts=Qe;exports.getTransferWrappedWithPayloadCpiAccounts=qt;exports.getUpgradeContractAccounts=xt;exports.getWrappedMeta=ie;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const w=require("./index-v7w8krM0.js"),i=require("./unsignedTransaction-qRBv5Cnd.js"),ae=require("./index-lAqXlt-a.js"),o=require("./platform-DCcL7jHP.js"),p=require("./web3-x1WCGDiy.js"),A=require("./account-K005OXgL.js"),k=new i.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Ie=new i.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),O=new i.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),N=new i.PublicKey("So11111111111111111111111111111111111111112");new i.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class j extends Error{constructor(e){super(e)}}class ze extends j{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}}class jt extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}}class gt extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}}class re extends j{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}}class en extends j{constructor(){super(...arguments),this.name="TokenInvalidMintError"}}class ht extends j{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}var Q;(function(t){t[t.InitializeMint=0]="InitializeMint",t[t.InitializeAccount=1]="InitializeAccount",t[t.InitializeMultisig=2]="InitializeMultisig",t[t.Transfer=3]="Transfer",t[t.Approve=4]="Approve",t[t.Revoke=5]="Revoke",t[t.SetAuthority=6]="SetAuthority",t[t.MintTo=7]="MintTo",t[t.Burn=8]="Burn",t[t.CloseAccount=9]="CloseAccount",t[t.FreezeAccount=10]="FreezeAccount",t[t.ThawAccount=11]="ThawAccount",t[t.TransferChecked=12]="TransferChecked",t[t.ApproveChecked=13]="ApproveChecked",t[t.MintToChecked=14]="MintToChecked",t[t.BurnChecked=15]="BurnChecked",t[t.InitializeAccount2=16]="InitializeAccount2",t[t.SyncNative=17]="SyncNative",t[t.InitializeAccount3=18]="InitializeAccount3",t[t.InitializeMultisig2=19]="InitializeMultisig2",t[t.InitializeMint2=20]="InitializeMint2",t[t.GetAccountDataSize=21]="GetAccountDataSize",t[t.InitializeImmutableOwner=22]="InitializeImmutableOwner",t[t.AmountToUiAmount=23]="AmountToUiAmount",t[t.UiAmountToAmount=24]="UiAmountToAmount",t[t.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",t[t.TransferFeeExtension=26]="TransferFeeExtension",t[t.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",t[t.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",t[t.Reallocate=29]="Reallocate",t[t.MemoTransferExtension=30]="MemoTransferExtension",t[t.CreateNativeMint=31]="CreateNativeMint",t[t.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",t[t.InterestBearingMintExtension=33]="InterestBearingMintExtension",t[t.CpiGuardExtension=34]="CpiGuardExtension",t[t.InitializePermanentDelegate=35]="InitializePermanentDelegate",t[t.TransferHookExtension=36]="TransferHookExtension",t[t.MetadataPointerExtension=39]="MetadataPointerExtension"})(Q||(Q={}));function qe(t,e,r){if(r.length){t.push({pubkey:e,isSigner:!1,isWritable:!1});for(const n of r)t.push({pubkey:n instanceof i.PublicKey?n:n.publicKey,isSigner:!0,isWritable:!1})}else t.push({pubkey:e,isSigner:!0,isWritable:!1});return t}const st=i.LayoutExports.struct([i.LayoutExports.u8("instruction"),p.u64("amount")]);function tn(t,e,r,n,a=[],s=k){const u=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}],r,a),c=o.Buffer.alloc(st.span);return st.encode({instruction:Q.Approve,amount:BigInt(n)},c),new i.TransactionInstruction({keys:u,programId:s,data:c})}const ot=i.LayoutExports.struct([i.LayoutExports.u8("instruction")]);function Ee(t,e,r,n=[],a=k){const s=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],r,n),u=o.Buffer.alloc(ot.span);return ot.encode({instruction:Q.CloseAccount},u),new i.TransactionInstruction({keys:s,programId:a,data:u})}var me;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Mint=1]="Mint",t[t.Account=2]="Account"})(me||(me={}));const De=1,nn=i.LayoutExports.struct([i.LayoutExports.u8("m"),i.LayoutExports.u8("n"),p.bool("isInitialized"),p.publicKey("signer1"),p.publicKey("signer2"),p.publicKey("signer3"),p.publicKey("signer4"),p.publicKey("signer5"),p.publicKey("signer6"),p.publicKey("signer7"),p.publicKey("signer8"),p.publicKey("signer9"),p.publicKey("signer10"),p.publicKey("signer11")]),Ve=nn.span;var fe;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initialized=1]="Initialized",t[t.Frozen=2]="Frozen"})(fe||(fe={}));const pt=i.LayoutExports.struct([p.publicKey("mint"),p.publicKey("owner"),p.u64("amount"),i.LayoutExports.u32("delegateOption"),p.publicKey("delegate"),i.LayoutExports.u8("state"),i.LayoutExports.u32("isNativeOption"),p.u64("isNative"),p.u64("delegatedAmount"),i.LayoutExports.u32("closeAuthorityOption"),p.publicKey("closeAuthority")]),E=pt.span;async function yt(t,e,r,n=k){const a=await t.getAccountInfo(e,r);return an(e,a,n)}async function Re(t,e){return await rn(t,[],e)}async function rn(t,e,r){const n=Un(e);return await t.getMinimumBalanceForRentExemption(n,r)}function an(t,e,r=k){if(!e)throw new ze;if(!e.owner.equals(r))throw new gt;if(e.data.length<E)throw new re;const n=pt.decode(e.data.slice(0,E));let a=o.Buffer.alloc(0);if(e.data.length>E){if(e.data.length===Ve)throw new re;if(e.data[E]!=me.Account)throw new jt;a=e.data.slice(E+De)}return{address:t,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==fe.Uninitialized,isFrozen:n.state===fe.Frozen,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:a}}const wt=i.LayoutExports.struct([i.LayoutExports.u32("mintAuthorityOption"),p.publicKey("mintAuthority"),p.u64("supply"),i.LayoutExports.u8("decimals"),p.bool("isInitialized"),i.LayoutExports.u32("freezeAuthorityOption"),p.publicKey("freezeAuthority")]),Ke=wt.span;async function ct(t,e,r,n=k){const a=await t.getAccountInfo(e,r);return sn(e,a,n)}function sn(t,e,r=k){if(!e)throw new ze;if(!e.owner.equals(r))throw new gt;if(e.data.length<Ke)throw new re;const n=wt.decode(e.data.slice(0,Ke));let a=o.Buffer.alloc(0);if(e.data.length>Ke){if(e.data.length<=E)throw new re;if(e.data.length===Ve)throw new re;if(e.data[E]!=me.Mint)throw new en;a=e.data.slice(E+De)}return{address:t,mintAuthority:n.mintAuthorityOption?n.mintAuthority:null,supply:n.supply,decimals:n.decimals,isInitialized:n.isInitialized,freezeAuthority:n.freezeAuthorityOption?n.freezeAuthority:null,tlvData:a}}async function ut(t,e,r=!1,n=k,a=O){if(!r&&!i.PublicKey.isOnCurve(e.toBuffer()))throw new ht;const[s]=await i.PublicKey.findProgramAddress([e.toBuffer(),n.toBuffer(),t.toBuffer()],a);return s}function F(t,e,r=!1,n=k,a=O){if(!r&&!i.PublicKey.isOnCurve(e.toBuffer()))throw new ht;const[s]=i.PublicKey.findProgramAddressSync([e.toBuffer(),n.toBuffer(),t.toBuffer()],a);return s}const on=i.LayoutExports.struct([p.bool("lockCpi")]),cn=on.span,un=i.LayoutExports.struct([i.LayoutExports.u8("state")]),dn=un.span,ln=i.LayoutExports.struct([]),mn=ln.span,fn=i.LayoutExports.struct([p.publicKey("rateAuthority"),i.LayoutExports.ns64("initializationTimestamp"),i.LayoutExports.s16("preUpdateAverageRate"),i.LayoutExports.ns64("lastUpdateTimestamp"),i.LayoutExports.s16("currentRate")]),gn=fn.span,hn=i.LayoutExports.struct([p.bool("requireIncomingTransferMemos")]),pn=hn.span,St=i.LayoutExports.struct([p.publicKey("authority"),p.publicKey("metadataAddress")]),yn=St.span;function wn(t){const e=Ln(T.MetadataPointer,t.tlvData);if(e!==null){const{authority:r,metadataAddress:n}=St.decode(e);return{authority:r.equals(i.PublicKey.default)?null:r,metadataAddress:n.equals(i.PublicKey.default)?null:n}}else return null}const Sn=i.LayoutExports.struct([p.publicKey("closeAuthority")]),An=Sn.span,At=i.LayoutExports.struct([]),Mn=At.span,kn=At.span,bn=i.LayoutExports.struct([p.publicKey("delegate")]),Tn=bn.span,Pn=1e4;BigInt(Pn);function dt(t){return i.LayoutExports.struct([p.u64("epoch"),p.u64("maximumFee"),i.LayoutExports.u16("transferFeeBasisPoints")],t)}const Bn=i.LayoutExports.struct([p.publicKey("transferFeeConfigAuthority"),p.publicKey("withdrawWithheldAuthority"),p.u64("withheldAmount"),dt("olderTransferFee"),dt("newerTransferFee")]),Cn=Bn.span,vn=i.LayoutExports.struct([p.u64("withheldAmount")]),In=vn.span,En=i.LayoutExports.struct([p.publicKey("authority"),p.publicKey("programId")]),Rn=En.span,Kn=i.LayoutExports.struct([p.bool("transferring")]),Wn=Kn.span,lt=i.LayoutExports.struct([i.LayoutExports.u8("discriminator"),i.LayoutExports.blob(32,"addressConfig"),p.bool("isSigner"),p.bool("isWritable")]),Nn=i.LayoutExports.struct([i.LayoutExports.u32("count"),i.LayoutExports.seq(lt,i.LayoutExports.greedy(lt.span),"extraAccounts")]);i.LayoutExports.struct([p.u64("instructionDiscriminator"),i.LayoutExports.u32("length"),Nn.replicate("extraAccountsList")]);var T;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.TransferFeeConfig=1]="TransferFeeConfig",t[t.TransferFeeAmount=2]="TransferFeeAmount",t[t.MintCloseAuthority=3]="MintCloseAuthority",t[t.ConfidentialTransferMint=4]="ConfidentialTransferMint",t[t.ConfidentialTransferAccount=5]="ConfidentialTransferAccount",t[t.DefaultAccountState=6]="DefaultAccountState",t[t.ImmutableOwner=7]="ImmutableOwner",t[t.MemoTransfer=8]="MemoTransfer",t[t.NonTransferable=9]="NonTransferable",t[t.InterestBearingConfig=10]="InterestBearingConfig",t[t.CpiGuard=11]="CpiGuard",t[t.PermanentDelegate=12]="PermanentDelegate",t[t.NonTransferableAccount=13]="NonTransferableAccount",t[t.TransferHook=14]="TransferHook",t[t.TransferHookAccount=15]="TransferHookAccount",t[t.MetadataPointer=18]="MetadataPointer"})(T||(T={}));const V=2,ge=2;function _n(t){switch(t){case T.Uninitialized:return 0;case T.TransferFeeConfig:return Cn;case T.TransferFeeAmount:return In;case T.MintCloseAuthority:return An;case T.ConfidentialTransferMint:return 97;case T.ConfidentialTransferAccount:return 286;case T.CpiGuard:return cn;case T.DefaultAccountState:return dn;case T.ImmutableOwner:return mn;case T.MemoTransfer:return pn;case T.MetadataPointer:return yn;case T.NonTransferable:return Mn;case T.InterestBearingConfig:return gn;case T.PermanentDelegate:return Tn;case T.NonTransferableAccount:return kn;case T.TransferHook:return Rn;case T.TransferHookAccount:return Wn;default:throw Error(`Unknown extension type: ${t}`)}}function xn(t,e){if(t.length===0)return e;{const r=E+De+t.filter((n,a)=>a===t.indexOf(n)).map(n=>_n(n)+V+ge).reduce((n,a)=>n+a);return r===Ve?r+V:r}}function Un(t){return xn(t,E)}function Ln(t,e){let r=0;for(;r+V+ge<=e.length;){const n=e.readUInt16LE(r),a=e.readUInt16LE(r+V),s=r+V+ge;if(n==t)return e.slice(s,s+a);r=s+a}return null}function Fn(t){const e=[];let r=0;for(;r<t.length;){const n=t.readUInt16LE(r);e.push(n);const a=t.readUInt16LE(r+V);r+=V+ge+a}return e}const mt=i.LayoutExports.struct([i.LayoutExports.u8("instruction")]);function We(t,e,r,n=k){const a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:i.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],s=o.Buffer.alloc(mt.span);return mt.encode({instruction:Q.InitializeAccount},s),new i.TransactionInstruction({keys:a,programId:n,data:s})}function Mt(t,e,r,n,a=k,s=O){return kt(t,e,r,n,o.Buffer.alloc(0),a,s)}function On(t,e,r,n,a=k,s=O){return kt(t,e,r,n,o.Buffer.from([1]),a,s)}function kt(t,e,r,n,a,s=k,u=O){const c=[{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new i.TransactionInstruction({keys:c,programId:u,data:a})}const ft=i.LayoutExports.struct([i.LayoutExports.u8("instruction"),p.u64("amount")]);function Ne(t,e,r,n,a=[],s=k){const u=qe([{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!0}],r,a),c=o.Buffer.alloc(ft.span);return ft.encode({instruction:Q.Transfer,amount:BigInt(n)},c),new i.TransactionInstruction({keys:u,programId:s,data:c})}function he(t,e){const r=o.Buffer.alloc(2);return r.writeUInt16BE(o.toChainId(e)),A.deriveAddress([o.Buffer.from("foreign_contract"),r],t)}function bt(t){return A.deriveAddress([o.Buffer.from("redeemer")],t)}function pe(t,e){return A.deriveAddress([o.Buffer.from("mint"),new i.PublicKey(e).toBuffer()],t)}function Ye(t){return A.deriveAddress([o.Buffer.from("sender")],t)}function Ge(t,e){return A.deriveAddress([o.Buffer.from("tmp"),new i.PublicKey(e).toBuffer()],t)}function Ze(t,e,r){return A.deriveAddress([o.Buffer.from("bridged"),new i.PublicKey(e).toBuffer(),o.Buffer.from(o.bignum.toBytes(BigInt(r.toString()),8))],t)}function I(t){return A.deriveAddress([o.Buffer.from("config")],t)}async function zn(t,e,r){return t.getAccountInfo(I(e),r).then(n=>ye.deserialize(A.getAccountData(n)))}class ye{wormhole;constructor(e){this.wormhole=new i.PublicKey(e)}static deserialize(e){if(e.length!=32)throw new Error("data.length != 32");const r=e.subarray(0,32);return new ye(r)}}function oe(t,e){return A.deriveAddress([new i.PublicKey(e).toBuffer()],t)}function z(t,e,r){const n=typeof r=="string"?new o.UniversalAddress(r).toUint8Array():r;return A.deriveAddress([(()=>{const a=o.Buffer.alloc(2);return a.writeUInt16BE(e),a})(),n],t)}async function qn(t,e,r){return t.getAccountInfo(new i.PublicKey(e),r).then(n=>we.deserialize(A.getAccountData(n)))}class we{chain;contract;constructor(e,r){this.chain=e,this.contract=r}static deserialize(e){if(e.length!=34)throw new Error("data.length != 34");const r=e.readUInt16LE(0),n=e.subarray(2,34);return new we(r,n)}}function Se(t){return A.deriveAddress([o.Buffer.from("sender")],t)}function Ae(t){return A.deriveAddress([o.Buffer.from("redeemer")],t)}function Y(t){return A.deriveAddress([o.Buffer.from("authority_signer")],t)}function ee(t){return A.deriveAddress([o.Buffer.from("custody_signer")],t)}function te(t){return A.deriveAddress([o.Buffer.from("mint_signer")],t)}function G(t,e,r){return A.deriveAddress([o.Buffer.from("wrapped"),(()=>{const n=o.Buffer.alloc(2);return n.writeUInt16BE(e),n})(),r],t)}function x(t,e){return A.deriveAddress([o.Buffer.from("meta"),new i.PublicKey(e).toBuffer()],t)}async function ie(t,e,r,n){return t.getAccountInfo(x(e,r),n).then(a=>Me.deserialize(A.getAccountData(a)))}class Me{chain;tokenAddress;originalDecimals;lastUpdatedSequence;constructor(e,r,n,a){this.chain=e,this.tokenAddress=r,this.originalDecimals=n,this.lastUpdatedSequence=a}static deserialize(e){if(e.length!==35&&e.length!==43)throw new Error(`invalid wrapped meta length: ${e.length}`);const r=e.readUInt16LE(0),n=e.subarray(2,34),a=e.readUInt8(34),s=e.length===43?e.readBigUInt64LE(35):void 0;return new Me(r,n,a,s)}}function _e(t,e,r,n,a){return tn(new i.PublicKey(e),Y(t),new i.PublicKey(r),n,void 0,new i.PublicKey(a))}class Dn{idl;constructor(e){this.idl=e}async encode(e,r){throw new Error(`Invalid account name: ${e}`)}decode(e,r){return this.decodeUnchecked(e,r)}decodeUnchecked(e,r){throw new Error(`Invalid account name: ${e}`)}memcmp(e,r){throw new Error(`Invalid account name: ${e}`)}size(e){return w.accountSize(this.idl,e)??0}}class Vn{constructor(e){}decode(e){throw new Error("Token Bridge program does not have events")}}class Yn{constructor(e){}encode(e,r){switch(e){case"initialize":return Gn(r);case"attestToken":return Zn(r);case"completeNative":return Hn(r);case"completeWrapped":return $n(r);case"transferWrapped":return Qn(r);case"transferNative":return Xn(r);case"registerChain":return Jn(r);case"createWrapped":return jn(r);case"upgradeContract":return er(r);case"transferWrappedWithPayload":return tr(r);case"transferNativeWithPayload":return nr(r);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,r){throw new Error("Token Bridge program does not have state")}}var K;(function(t){t[t.Initialize=0]="Initialize",t[t.AttestToken=1]="AttestToken",t[t.CompleteNative=2]="CompleteNative",t[t.CompleteWrapped=3]="CompleteWrapped",t[t.TransferWrapped=4]="TransferWrapped",t[t.TransferNative=5]="TransferNative",t[t.RegisterChain=6]="RegisterChain",t[t.CreateWrapped=7]="CreateWrapped",t[t.UpgradeContract=8]="UpgradeContract",t[t.CompleteNativeWithPayload=9]="CompleteNativeWithPayload",t[t.CompleteWrappedWithPayload=10]="CompleteWrappedWithPayload",t[t.TransferWrappedWithPayload=11]="TransferWrappedWithPayload",t[t.TransferNativeWithPayload=12]="TransferNativeWithPayload"})(K||(K={}));function _(t,e){const r=e===void 0?0:e.length,n=o.Buffer.alloc(1+r);return n.writeUInt8(t,0),r>0&&n.write(e.toString("hex"),1,"hex"),n}function Gn({wormhole:t}){const e=o.Buffer.alloc(32);return e.write(new i.PublicKey(t).toBuffer().toString("hex"),0,"hex"),_(K.Initialize,e)}function Zn({nonce:t}){const e=o.Buffer.alloc(4);return e.writeUInt32LE(t,0),_(K.AttestToken,e)}function Hn({}){return _(K.CompleteNative)}function $n({}){return _(K.CompleteWrapped)}function Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){if(typeof e!="bigint"&&(e=BigInt(e)),typeof r!="bigint"&&(r=BigInt(r)),!o.Buffer.isBuffer(n))throw new Error("targetAddress must be Buffer");const s=o.Buffer.alloc(54);return s.writeUInt32LE(t,0),s.writeBigUInt64LE(e,4),s.writeBigUInt64LE(r,12),s.write(n.toString("hex"),20,"hex"),s.writeUInt16LE(a,52),s}function Qn({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){return _(K.TransferWrapped,Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}))}function Xn({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}){return _(K.TransferNative,Tt({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a}))}function Jn({}){return _(K.RegisterChain)}function jn({}){return _(K.CreateWrapped)}function er({}){return _(K.UpgradeContract)}function Pt({nonce:t,amount:e,targetAddress:r,targetChain:n,payload:a}){if(typeof e!="bigint"&&(e=BigInt(e)),!o.Buffer.isBuffer(r))throw new Error("targetAddress must be Buffer");if(!o.Buffer.isBuffer(a))throw new Error("payload must be Buffer");const s=o.Buffer.alloc(50);return s.writeUInt32LE(t,0),s.writeBigUInt64LE(e,4),s.write(r.toString("hex"),12,"hex"),s.writeUInt16LE(n,44),s.writeUInt32LE(a.length,46),o.Buffer.concat([s,a,o.Buffer.alloc(1)])}function tr({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a,payload:s}){return _(K.TransferWrappedWithPayload,Pt({nonce:t,amount:e,targetAddress:n,targetChain:a,payload:s}))}function nr({nonce:t,amount:e,fee:r,targetAddress:n,targetChain:a,payload:s}){return _(K.TransferNativeWithPayload,Pt({nonce:t,amount:e,targetAddress:n,targetChain:a,payload:s}))}class rr{constructor(e){}encode(e,r){throw new Error("Token Bridge program does not have state")}decode(e){throw new Error("Token Bridge program does not have state")}}class ir{constructor(e){}encode(e,r){throw new Error("Token Bridge program does not have user-defined types")}decode(e,r){throw new Error("Token Bridge program does not have user-defined types")}}class ar{instruction;accounts;state;events;types;constructor(e){this.instruction=new Yn(e),this.accounts=new Dn(e),this.state=new rr(e),this.events=new Vn(e),this.types=new ir(e)}}const He={version:"0.1.0",name:"wormhole",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"wormhole",type:"publicKey"}]},{name:"attestToken",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"splMetadata",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"}]},{name:"completeNative",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"toFees",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"rent",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"completeWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"toFees",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"mintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"fromOwner",isMut:!0,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"}]},{name:"transferNative",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"}]},{name:"registerChain",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"endpoint",isMut:!0,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createWrapped",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"endpoint",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!0,isSigner:!1},{name:"splMetadata",isMut:!0,isSigner:!1},{name:"mintAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"splMetadataProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[]},{name:"upgradeContract",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"vaa",isMut:!1,isSigner:!1},{name:"claim",isMut:!0,isSigner:!1},{name:"upgradeAuthority",isMut:!1,isSigner:!1},{name:"spill",isMut:!0,isSigner:!1},{name:"implementation",isMut:!0,isSigner:!1},{name:"programData",isMut:!0,isSigner:!1},{name:"tokenBridgeProgram",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"bpfLoaderUpgradeable",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"transferWrappedWithPayload",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"fromOwner",isMut:!0,isSigner:!0},{name:"mint",isMut:!0,isSigner:!1},{name:"wrappedMeta",isMut:!1,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"sender",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"},{name:"payload",type:"bytes"},{name:"cpiProgramId",type:{option:"publicKey"}}]},{name:"transferNativeWithPayload",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"from",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"custody",isMut:!0,isSigner:!1},{name:"authoritySigner",isMut:!1,isSigner:!1},{name:"custodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"wormholeEmitter",isMut:!1,isSigner:!1},{name:"wormholeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"sender",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u32"},{name:"amount",type:"u64"},{name:"targetAddress",type:{array:["u8",32]}},{name:"targetChain",type:"u16"},{name:"payload",type:"bytes"},{name:"cpiProgramId",type:{option:"publicKey"}}]}],accounts:[]};function Bt(t,e){return new ae.Program(He,new i.PublicKey(t),e===void 0?{connection:null}:e,Ct())}function W(t,e){return Bt(t,ae.createReadOnlyProvider(e))}function Ct(){return new ar(He)}class L{address;verified;share;constructor(e,r,n){this.address=new i.PublicKey(e),this.verified=r,this.share=n}static size=34;serialize(){const e=o.Buffer.alloc(L.size);return e.write(this.address.toBuffer().toString("hex"),0,"hex"),this.verified&&e.writeUInt8(1,32),e.writeUInt8(this.share,33),e}static deserialize(e){const r=e.subarray(0,32),n=e.readUInt8(32)>0,a=e.readUInt8(33);return new L(r,n,a)}}class ce{name;symbol;uri;sellerFeeBasisPoints;creators;constructor(e,r,n,a,s){this.name=e,this.symbol=r,this.uri=n,this.sellerFeeBasisPoints=a,this.creators=s}serialize(){const e=this.name.length,r=this.symbol.length,n=this.uri.length,a=this.creators,[s,u]=(()=>{if(a===null)return[0,0];const d=a.length;return[d,4+d*L.size]})(),c=o.Buffer.alloc(15+e+r+n+u);if(c.writeUInt32LE(e,0),c.write(this.name,4),c.writeUInt32LE(r,4+e),c.write(this.symbol,8+e),c.writeUInt32LE(n,8+e+r),c.write(this.uri,12+e+r),c.writeUInt16LE(this.sellerFeeBasisPoints,12+e+r+n),a===null)c.writeUInt8(0,14+e+r+n);else{c.writeUInt8(1,14+e+r+n),c.writeUInt32LE(s,15+e+r+n);for(let d=0;d<s;++d){const l=a.at(d),f=19+e+r+n+d*L.size;c.write(l.serialize().toString("hex"),f,"hex")}}return c}static deserialize(e){const r=e.readUInt32LE(0),n=e.subarray(4,4+r).toString(),a=e.readUInt32LE(4+r),s=e.subarray(8+r,8+r+a).toString(),u=e.readUInt32LE(8+r+a),c=e.subarray(12+r+a,12+r+a+u).toString(),d=e.readUInt16LE(12+r+a+u),l=e.readUInt8(14+r+a+u),f=(()=>{if(l==0)return null;const m=[],g=e.readUInt32LE(15+r+a+u);for(let h=0;h<g;++h){const y=19+r+a+u+h*L.size;m.push(L.deserialize(e.subarray(y,y+L.size)))}return m})();return new ce(n,s,c,d,f)}}class se extends ce{isMutable;constructor(e,r,n,a,s,u){super(e,r,n,a,s),this.isMutable=u}static serialize(e,r,n,a,s,u){return new se(e,r,n,a,s,u).serialize()}static serializeInstructionData(e,r,n,a,s,u){return o.Buffer.concat([o.Buffer.alloc(1,0),se.serialize(e,r,n,a,s,u)])}serialize(){return o.Buffer.concat([super.serialize(),o.Buffer.alloc(1,this.isMutable?1:0)])}}class X{constructor(){}static programId=new i.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s");static createMetadataAccounts(e,r,n,a,s,u,c=!1,d,l,f,m=!1,g=ue(r)){const h=[A.newAccountMeta(g,!1),A.newReadOnlyAccountMeta(r,!1),A.newReadOnlyAccountMeta(n,!0),A.newReadOnlyAccountMeta(e,!0),A.newReadOnlyAccountMeta(u,c),A.newReadOnlyAccountMeta(i.SystemProgram.programId,!1),A.newReadOnlyAccountMeta(i.SYSVAR_RENT_PUBKEY,!1)],y=se.serializeInstructionData(a,s,d===void 0?"":d,f===void 0?0:f,l===void 0?null:l,m);return{programId:X.programId,keys:h,data:y}}}function ue(t){return A.deriveAddress([o.Buffer.from("metadata"),X.programId.toBuffer(),new i.PublicKey(t).toBuffer()],X.programId)}exports.Key=void 0;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.EditionV1=1]="EditionV1",t[t.MasterEditionV1=2]="MasterEditionV1",t[t.ReservationListV1=3]="ReservationListV1",t[t.MetadataV1=4]="MetadataV1",t[t.ReservationListV2=5]="ReservationListV2",t[t.MasterEditionV2=6]="MasterEditionV2",t[t.EditionMarker=7]="EditionMarker"})(exports.Key||(exports.Key={}));class ke{key;updateAuthority;mint;data;primarySaleHappened;isMutable;constructor(e,r,n,a,s,u){this.key=e,this.updateAuthority=new i.PublicKey(r),this.mint=new i.PublicKey(n),this.data=a,this.primarySaleHappened=s,this.isMutable=u}static deserialize(e){const r=e.readUInt8(0),n=e.subarray(1,33),a=e.subarray(33,65),s=ce.deserialize(e.subarray(65)),u=s.serialize().length,c=e.readUInt8(65+u)>0,d=e.readUInt8(66+u)>0;return new ke(r,n,a,s,c,d)}}async function sr(t,e,r){return t.getAccountInfo(ue(e),r).then(n=>ke.deserialize(A.getAccountData(n)))}function vt(t,e,r,n,a,s,u,c){const d=W(e,t).methods.attestToken(u);return console.log(xe(e,r,n,a,s,c)),d._ixFn(...d._args,{accounts:xe(e,r,n,a,s,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function xe(t,e,r,n,a,s){const{bridge:u,emitter:c,sequence:d,feeCollector:l,clock:f,rent:m,systemProgram:g}=w.getPostMessageAccounts(e,r,a,t);return{payer:new i.PublicKey(r),config:I(t),mint:new i.PublicKey(n),wrappedMeta:x(t,n),splMetadata:s?new i.PublicKey(s):ue(n),wormholeBridge:u,wormholeMessage:new i.PublicKey(a),wormholeEmitter:c,wormholeSequence:d,wormholeFeeCollector:l,clock:f,rent:m,systemProgram:g,wormholeProgram:new i.PublicKey(e)}}function Ue(t,e,r,n,a,s,u){const c=W(e,t).methods.completeNative();return c._ixFn(...c._args,{accounts:It(e,r,n,a,s,u),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function It(t,e,r,n,a,s){const u=new i.PublicKey(n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),to:new i.PublicKey(n.payload.to.address.toUint8Array()),toFees:new i.PublicKey(a===void 0?n.payload.to.address.toUint8Array():a),custody:oe(t,u),mint:u,custodySigner:ee(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:s?new i.PublicKey(s):k,wormholeProgram:new i.PublicKey(e)}}function Et(t,e,r,n,a,s){const u=W(e,t).methods.completeWrapped();return u._ixFn(...u._args,{accounts:Rt(e,r,n,a,s),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Rt(t,e,r,n,a){const s=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),to:new i.PublicKey(n.payload.to.address.toUint8Array()),toFees:new i.PublicKey(a===void 0?n.payload.to.address.toUint8Array():a),mint:s,wrappedMeta:x(t,s),mintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}function Kt(t,e,r,n,a){const s=W(e,t).methods.createWrapped();return s._ixFn(...s._args,{accounts:Wt(e,r,n,a),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Wt(t,e,r,n){const a=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array());return{payer:new i.PublicKey(r),config:I(t),endpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),mint:a,wrappedMeta:x(t,a),splMetadata:ue(a),mintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,splMetadataProgram:X.programId,wormholeProgram:new i.PublicKey(e)}}function or(t,e,r){const n=W(t).methods.initialize(r);return n._ixFn(...n._args,{accounts:Nt(t,e),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Nt(t,e){return{payer:new i.PublicKey(e),config:I(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId}}function cr(t,e,r,n){const a=W(t).methods.registerChain();return a._ixFn(...a._args,{accounts:_t(t,e,r,n),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function _t(t,e,r,n){return{payer:new i.PublicKey(r),config:I(t),endpoint:z(t,o.toChainId(n.payload.actionArgs.foreignChain),n.payload.actionArgs.foreignAddress.toUint8Array()),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,wormholeProgram:new i.PublicKey(e)}}function ur(t,e,r,n,a){const s=W(t).methods.upgradeContract();return s._ixFn(...s._args,{accounts:xt(t,e,r,n,a),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function xt(t,e,r,n,a){return{payer:new i.PublicKey(r),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),claim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),upgradeAuthority:w.deriveUpgradeAuthorityKey(t),spill:new i.PublicKey(a===void 0?r:a),implementation:new i.PublicKey(n.payload.actionArgs.newContract),programData:w.deriveProgramDataAddress(t),tokenBridgeProgram:new i.PublicKey(t),rent:i.SYSVAR_RENT_PUBKEY,clock:i.SYSVAR_CLOCK_PUBKEY,bpfLoaderUpgradeable:w.BPF_LOADER_UPGRADEABLE_PROGRAM_ID,systemProgram:i.SystemProgram.programId}}function Le(t,e,r,n,a,s,u,c,d,l,f,m,g){const h=W(e,t).methods.transferNative(d,l,f,o.Buffer.from(m),g);return h._ixFn(...h._args,{accounts:Ut(e,r,n,a,s,u,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Ut(t,e,r,n,a,s,u){const{wormholeBridge:c,wormholeMessage:d,wormholeEmitter:l,wormholeSequence:f,wormholeFeeCollector:m,clock:g,rent:h,systemProgram:y}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),mint:new i.PublicKey(s),custody:oe(t,s),authoritySigner:Y(t),custodySigner:ee(t),wormholeBridge:c,wormholeMessage:d,wormholeEmitter:l,wormholeSequence:f,wormholeFeeCollector:m,clock:g,rent:h,systemProgram:y,tokenProgram:new i.PublicKey(u),wormholeProgram:new i.PublicKey(e)}}function Fe(t,e,r,n,a,s,u,c,d,l,f,m,g){const h=W(e,t).methods.transferNativeWithPayload(d,l,o.Buffer.from(f),m,o.Buffer.from(g),null);return h._ixFn(...h._args,{accounts:$e(e,r,n,a,s,u,void 0,c),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function $e(t,e,r,n,a,s,u,c){const{wormholeBridge:d,wormholeMessage:l,wormholeEmitter:f,wormholeSequence:m,wormholeFeeCollector:g,clock:h,rent:y,systemProgram:S}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),mint:new i.PublicKey(s),custody:oe(t,s),authoritySigner:Y(t),custodySigner:ee(t),wormholeBridge:d,wormholeMessage:l,wormholeEmitter:f,wormholeSequence:m,wormholeFeeCollector:g,clock:h,sender:new i.PublicKey(u===void 0?r:Se(u)),rent:y,systemProgram:S,tokenProgram:c?new i.PublicKey(c):k,wormholeProgram:new i.PublicKey(e)}}function Lt(t,e,r,n,a,s,u,c,d,l,f,m,g,h,y){const S=W(e,t).methods.transferWrapped(f,m,g,o.Buffer.from(h),y);return S._ixFn(...S._args,{accounts:Ft(e,r,n,a,s,u,c,d,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Ft(t,e,r,n,a,s,u,c,d){const l=G(t,u,c),{wormholeBridge:f,wormholeMessage:m,wormholeEmitter:g,wormholeSequence:h,wormholeFeeCollector:y,clock:S,rent:B,systemProgram:P}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),fromOwner:new i.PublicKey(s),mint:l,wrappedMeta:x(t,l),authoritySigner:Y(t),wormholeBridge:f,wormholeMessage:m,wormholeEmitter:g,wormholeSequence:h,wormholeFeeCollector:y,clock:S,rent:B,systemProgram:P,wormholeProgram:new i.PublicKey(e),tokenProgram:new i.PublicKey(d)}}function Ot(t,e,r,n,a,s,u,c,d,l,f,m,g,h,y){const S=W(e,t).methods.transferWrappedWithPayload(f,m,o.Buffer.from(g),h,o.Buffer.from(y),null);return S._ixFn(...S._args,{accounts:Qe(e,r,n,a,s,u,c,d,void 0,l),signers:void 0,remainingAccounts:void 0,preInstructions:void 0,postInstructions:void 0})}function Qe(t,e,r,n,a,s,u,c,d,l){const f=G(t,u,c),{wormholeBridge:m,wormholeMessage:g,wormholeEmitter:h,wormholeSequence:y,wormholeFeeCollector:S,clock:B,rent:P,systemProgram:b}=w.getPostMessageCpiAccounts(t,e,r,n);return{payer:new i.PublicKey(r),config:I(t),from:new i.PublicKey(a),fromOwner:new i.PublicKey(s),mint:f,wrappedMeta:x(t,f),authoritySigner:Y(t),wormholeBridge:m,wormholeMessage:g,wormholeEmitter:h,wormholeSequence:y,wormholeFeeCollector:S,clock:B,sender:new i.PublicKey(d===void 0?r:Se(d)),rent:P,systemProgram:b,wormholeProgram:new i.PublicKey(e),tokenProgram:l?new i.PublicKey(l):k}}function dr(t,e,r){const{wormholeEmitter:n,wormholeBridge:a,wormholeFeeCollector:s,wormholeSequence:u}=w.getWormholeDerivedAccounts(e,r);return{tokenBridgeConfig:I(e),tokenBridgeAuthoritySigner:Y(e),tokenBridgeCustodySigner:ee(e),tokenBridgeMintAuthority:te(e),tokenBridgeSender:Se(t),tokenBridgeRedeemer:Ae(t),wormholeBridge:a,tokenBridgeEmitter:n,wormholeFeeCollector:s,tokenBridgeSequence:u}}function zt(t,e,r,n,a,s,u){const c=$e(e,r,n,a,s,u,t);return{payer:c.payer,tokenBridgeConfig:c.config,fromTokenAccount:c.from,mint:c.mint,tokenBridgeCustody:c.custody,tokenBridgeAuthoritySigner:c.authoritySigner,tokenBridgeCustodySigner:c.custodySigner,wormholeBridge:c.wormholeBridge,wormholeMessage:c.wormholeMessage,tokenBridgeEmitter:c.wormholeEmitter,tokenBridgeSequence:c.wormholeSequence,wormholeFeeCollector:c.wormholeFeeCollector,clock:c.clock,tokenBridgeSender:c.sender,rent:c.rent,systemProgram:c.systemProgram,tokenProgram:c.tokenProgram,wormholeProgram:c.wormholeProgram}}function qt(t,e,r,n,a,s,u,c,d){const l=Qe(e,r,n,a,s,d===void 0?t:d,u,c,t);return{payer:l.payer,tokenBridgeConfig:l.config,fromTokenAccount:l.from,fromTokenAccountOwner:l.fromOwner,tokenBridgeWrappedMint:l.mint,tokenBridgeWrappedMeta:l.wrappedMeta,tokenBridgeAuthoritySigner:l.authoritySigner,wormholeBridge:l.wormholeBridge,wormholeMessage:l.wormholeMessage,tokenBridgeEmitter:l.wormholeEmitter,tokenBridgeSequence:l.wormholeSequence,wormholeFeeCollector:l.wormholeFeeCollector,clock:l.clock,tokenBridgeSender:l.sender,rent:l.rent,systemProgram:l.systemProgram,tokenProgram:l.tokenProgram,wormholeProgram:l.wormholeProgram}}function lr(t,e,r,n,a){const s=new i.PublicKey(n.payload.token.address.toUint8Array()),u=new i.PublicKey(n.payload.to.address.toUint8Array());return{payer:new i.PublicKey(r),tokenBridgeConfig:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),tokenBridgeClaim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),tokenBridgeForeignEndpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),toTokenAccount:new i.PublicKey(a),tokenBridgeRedeemer:Ae(u),toFeesTokenAccount:new i.PublicKey(a),tokenBridgeCustody:oe(t,s),mint:s,tokenBridgeCustodySigner:ee(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}function mr(t,e,r,n,a){const s=G(t,o.toChainId(n.payload.token.chain),n.payload.token.address.toUint8Array()),u=new i.PublicKey(n.payload.to.address.toUint8Array());return{payer:new i.PublicKey(r),tokenBridgeConfig:I(t),vaa:w.derivePostedVaaKey(e,o.Buffer.from(n.hash)),tokenBridgeClaim:w.deriveClaimKey(t,n.emitterAddress.toUint8Array(),o.toChainId(n.emitterChain),n.sequence),tokenBridgeForeignEndpoint:z(t,o.toChainId(n.emitterChain),n.emitterAddress.toUint8Array()),toTokenAccount:new i.PublicKey(a),tokenBridgeRedeemer:Ae(u),toFeesTokenAccount:new i.PublicKey(a),tokenBridgeWrappedMint:s,tokenBridgeWrappedMeta:x(t,s),tokenBridgeMintAuthority:te(t),rent:i.SYSVAR_RENT_PUBKEY,systemProgram:i.SystemProgram.programId,tokenProgram:k,wormholeProgram:new i.PublicKey(e)}}const Dt={version:"0.1.0",name:"token_bridge_relayer",constants:[{name:"SEED_PREFIX_BRIDGED",type:"bytes",value:"[98, 114, 105, 100, 103, 101, 100]"},{name:"SEED_PREFIX_TMP",type:"bytes",value:"[116, 109, 112]"},{name:"SWAP_RATE_PRECISION",type:"u32",value:"100_000_000"}],instructions:[{name:"initialize",docs:["This instruction is be used to generate your program's config.","And for convenience, we will store Wormhole-related PDAs in the","config so we can verify these accounts with a simple == constraint.","# Arguments","","* `ctx` - `Initialize` context","* `fee_recipient` - Recipient of all relayer fees and swap proceeds","* `assistant` - Privileged key to manage certain accounts"],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Deployer of the program."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account, which saves program data useful for other","instructions, specifically for outbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account, which saves program data useful for other","instructions, specifically for inbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner config account, which saves the owner, assistant and","pending owner keys. This account is used to manage the ownership of the","program."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1,docs:["that holds data; it is purely just a signer for posting Wormhole","messages on behalf of the Token Bridge program."]},{name:"tokenBridgeSequence",isMut:!1,isSigner:!1,docs:["Token Bridge emitter's sequence account. Like with all Wormhole","emitters, this account keeps track of the sequence number of the last","posted message."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]},{name:"programData",isMut:!0,isSigner:!1,docs:["upgrade authority. We check this PDA address just in case there is another program that this","deployer has deployed.","","NOTE: Set upgrade authority is scary because any public key can be used to set as the","authority."]},{name:"bpfLoaderUpgradeableProgram",isMut:!1,isSigner:!1}],args:[{name:"feeRecipient",type:"publicKey"},{name:"assistant",type:"publicKey"}]},{name:"registerForeignContract",docs:["This instruction registers a new foreign contract (from another","network) and saves the emitter information in a ForeignEmitter account.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can add and update foreign","contracts.","","# Arguments","","* `ctx` - `RegisterForeignContract` context","* `chain` - Wormhole Chain ID","* `address` - Wormhole Emitter Address","* `relayer_fee` - Relayer fee scaled by the `relayer_fee_precision`"],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"foreignContract",isMut:!0,isSigner:!1,docs:["Foreign Contract account. Create this account if an emitter has not been","registered yet for this Wormhole chain ID. If there already is a","contract address saved in this account, overwrite it."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["Token Bridge foreign endpoint. This account should really be one","endpoint per chain, but Token Bridge's PDA allows for multiple","endpoints for each chain. We store the proper endpoint for the","emitter chain."]},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1,docs:["Token Bridge program."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"chain",type:"u16"},{name:"address",type:{array:["u8",32]}},{name:"relayerFee",type:"u64"}]},{name:"registerToken",docs:["This instruction registers a new token and saves the initial `swap_rate`","and `max_native_token_amount` in a RegisteredToken account.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can register a token.","","# Arguments","","* `ctx` - `RegisterToken` context","* `swap_rate`:","- USD conversion rate scaled by the `swap_rate_precision`. For example,","- if the conversion rate is $15 and the `swap_rate_precision` is","- 1000000, the `swap_rate` should be set to 15000000.","* `max_native_swap_amount`:","- Maximum amount of native tokens that can be swapped for this token","- on this chain."],accounts:[{name:"owner",isMut:!0,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. Create this","account if the mint has not been registered yet. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"swapRate",type:"u64"},{name:"maxNativeSwapAmount",type:"u64"}]},{name:"deregisterToken",docs:["This instruction deregisters a token by closing the existing","`RegisteredToken` account for a particular mint. This instruction is","owner-only, meaning that only the owner of the program (defined in the","[Config] account) can deregister a token."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","closing [`RegisteredToken`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. This account","also determines if a mint is registered or not."]}],args:[]},{name:"updateRelayerFee",docs:["This instruction updates the `relayer_fee` in the `ForeignContract` account.","The `relayer_fee` is scaled by the `relayer_fee_precision`. For example,","if the `relayer_fee` is $15 and the `relayer_fee_precision` is 1000000,","the `relayer_fee` should be set to 15000000. This instruction can","only be called by the owner or assistant, which are defined in the","[OwnerConfig] account.","","# Arguments","","* `ctx` - `UpdateRelayerFee` context","* `chain` - Wormhole Chain ID","* `fee` - Relayer fee scaled by the `relayer_fee_precision`"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Signer of the transaction. Must be the owner or assistant."]},{name:"ownerConfig",isMut:!1,isSigner:!1,docs:["The owner_config is used when updating the swap rate","so that the assistant key can be used in addition to the","owner key."]},{name:"foreignContract",isMut:!0,isSigner:!1,docs:["This account holds the USD denominated relayer fee for the specified","`chain`. This account is used to determine the cost of relaying","a transfer to a target chain. If there already is a relayer fee","saved in this account, overwrite it."]},{name:"systemProgram",isMut:!1,isSigner:!1,docs:["System program."]}],args:[{name:"chain",type:"u16"},{name:"fee",type:"u64"}]},{name:"updateRelayerFeePrecision",docs:["This instruction updates the `relayer_fee_precision` in the","`SenderConfig` and `RedeemerConfig` accounts. The `relayer_fee_precision`","is used to scale the `relayer_fee`. This instruction is owner-only,","meaning that only the owner of the program (defined in the [Config]","account) can register a token.","","# Arguments","","* `ctx` - `UpdatePrecision` context","* `relayer_fee_precision` - Precision used to scale the relayer fee."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`RedeemerConfig`] and [`SenderConfig`] account."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account. This program requires that the `owner`","specified in the context equals the pubkey specified in this account.","Mutable."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account. This program requires that the `owner`","specified in the context equals the pubkey specified in this account.","Mutable. The `owner` check is redundant here, but we keep it as an","extra protection for future changes to the context. Mutable."]}],args:[{name:"relayerFeePrecision",type:"u32"}]},{name:"updateSwapRate",docs:["This instruction updates the `swap_rate` in the `RegisteredToken`","account. This instruction can only be called by the owner or","assistant, which are defined in the [OwnerConfig] account.","","# Arguments","","* `ctx` - `UpdateSwapRate` context","* `swap_rate` - USD conversion rate for the specified token."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["The signer of the transaction. Must be the owner or assistant."]},{name:"ownerConfig",isMut:!1,isSigner:!1,docs:["The owner_config is used when updating the swap rate so that the","assistant key can be used in additional to the owner key."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. The program","will modify this account to update the swap rate. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]}],args:[{name:"swapRate",type:"u64"}]},{name:"updateMaxNativeSwapAmount",docs:["This instruction updates the `max_native_swap_amount` in the","`RegisteredToken` account. This instruction is owner-only,","meaning that only the owner of the program (defined in the [Config]","account) can register a token.","","# Arguments","","* `ctx` - `UpdateMaxNativeSwapAmount` context","* `max_native_swap_amount`:","- Maximum amount of native tokens that can be swapped for this token","- on this chain."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account. Signer for","creating [`ForeignContract`] account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Read-only."]},{name:"registeredToken",isMut:!0,isSigner:!1,docs:["Registered Token account. This account stores information about the","token, including the swap rate and max native swap amount. The program","will modify this account when the swap rate or max native swap amount","changes. Mutable."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract."]}],args:[{name:"maxNativeSwapAmount",type:"u64"}]},{name:"setPauseForTransfers",docs:["This instruction updates the `paused` boolean in the `SenderConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can pause outbound","transfers.","","# Arguments","","* `ctx` - `PauseOutboundTransfers` context","* `paused` - Boolean indicating whether outbound transfers are paused."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`SenderConfig`] account."]},{name:"config",isMut:!0,isSigner:!1,docs:["Sender Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"paused",type:"bool"}]},{name:"submitOwnershipTransferRequest",docs:["This instruction sets the `pending_owner` field in the `OwnerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can submit an","ownership transfer request.","","# Arguments","","* `ctx` - `ManageOwnership` context","* `new_owner` - Pubkey of the pending owner."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"newOwner",type:"publicKey"}]},{name:"confirmOwnershipTransferRequest",docs:["This instruction confirms that the `pending_owner` is the signer of","the transaction and updates the `owner` field in the `SenderConfig`,","`RedeemerConfig`, and `OwnerConfig` accounts."],accounts:[{name:"pendingOwner",isMut:!1,isSigner:!0,docs:["Must be the pending owner of the program set in the [`OwnerConfig`]","account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `pending_owner`","specified in the context equals the pubkey specified in this account."]},{name:"senderConfig",isMut:!0,isSigner:!1,docs:["Sender Config account. This instruction will update the `owner`","specified in this account to the `pending_owner` specified in the","[`OwnerConfig`] account. Mutable."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account. This instruction will update the `owner`","specified in this account to the `pending_owner` specified in the","[`OwnerConfig`] account. Mutable."]}],args:[]},{name:"cancelOwnershipTransferRequest",docs:["This instruction cancels the ownership transfer request by setting","the `pending_owner` field in the `OwnerConfig` account to `None`.","This instruction is owner-only, meaning that only the owner of the","program (defined in the [Config] account) can cancel an ownership","transfer request."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[]},{name:"updateAssistant",docs:["This instruction updates the `assistant` field in the `OwnerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can update the","assistant.","","# Arguments","","* `ctx` - `ManageOwnership` context","* `new_assistant` - Pubkey of the new assistant."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`OwnerConfig`] account."]},{name:"ownerConfig",isMut:!0,isSigner:!1,docs:["Owner Config account. This program requires that the `owner` specified","in the context equals the pubkey specified in this account. Mutable."]}],args:[{name:"newAssistant",type:"publicKey"}]},{name:"updateFeeRecipient",docs:["This instruction updates the `fee_recipient` field in the `RedeemerConfig`","account. This instruction is owner-only, meaning that only the owner","of the program (defined in the [Config] account) can update the","fee recipient.","","# Arguments","","* `ctx` - `UpdateFeeRecipient` context","* `new_fee_recipient` - Pubkey of the new fee recipient."],accounts:[{name:"owner",isMut:!1,isSigner:!0,docs:["Owner of the program set in the [`RedeemerConfig`] account."]},{name:"redeemerConfig",isMut:!0,isSigner:!1,docs:["Redeemer Config account, which saves program data useful for other","instructions, specifically for inbound transfers. Also saves the payer","of the [`initialize`](crate::initialize) instruction as the program's","owner."]}],args:[{name:"newFeeRecipient",type:"publicKey"}]},{name:"transferNativeTokensWithRelay",docs:["This instruction is used to transfer native tokens from Solana to a","foreign blockchain. The user can optionally specify a","`to_native_token_amount` to swap some of the tokens for the native","asset on the target chain. For a fee, an off-chain relayer will redeem","the transfer on the target chain. If the user is transferring native","SOL, the contract will automatically wrap the lamports into a WSOL.","","# Arguments","","* `ctx` - `TransferNativeWithRelay` context","* `amount` - Amount of tokens to send","* `to_native_token_amount`:","- Amount of tokens to swap for native assets on the target chain","* `recipient_chain` - Chain ID of the target chain","* `recipient_address` - Address of the target wallet on the target chain","* `batch_id` - Nonce of Wormhole message","* `wrap_native` - Whether to wrap native SOL"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"payerSequence",isMut:!0,isSigner:!1,docs:["Used to keep track of payer's Wormhole sequence number."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. Acts as the signer for the Token Bridge token","transfer. Read-only."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. Send tokens to the contract specified in this","account. Funnily enough, the Token Bridge program does not have any","requirements for outbound transfers for the recipient chain to be","registered. This account provides extra protection against sending","tokens to an unregistered Wormhole chain ID. Read-only."]},{name:"mint",isMut:!0,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over to the","foreign contract. Mutable."]},{name:"fromTokenAccount",isMut:!0,isSigner:!1,docs:["Payer's associated token account. We may want to make this a generic","token account in the future."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged out, the token account","will have zero balance and can be closed."]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1,docs:["account that holds this mint's balance. This account needs to be","unchecked because a token account may not have been created for this","mint yet. Mutable."]},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1,docs:["tokens transferred in this account for our program. Mutable."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"toNativeTokenAmount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"batchId",type:"u32"},{name:"wrapNative",type:"bool"}]},{name:"transferWrappedTokensWithRelay",docs:["This instruction is used to transfer wrapped tokens from Solana to a","foreign blockchain. The user can optionally specify a","`to_native_token_amount` to swap some of the tokens for the native","assets on the target chain. For a fee, an off-chain relayer will redeem","the transfer on the target chain. This instruction should only be called","when the user is transferring a wrapped token.","","# Arguments","","* `ctx` - `TransferWrappedWithRelay` context","* `amount` - Amount of tokens to send","* `to_native_token_amount`:","- Amount of tokens to swap for native assets on the target chain","* `recipient_chain` - Chain ID of the target chain","* `recipient_address` - Address of the target wallet on the target chain","* `batch_id` - Nonce of Wormhole message"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens."]},{name:"payerSequence",isMut:!0,isSigner:!1,docs:["Used to keep track of payer's Wormhole sequence number."]},{name:"config",isMut:!1,isSigner:!1,docs:["Sender Config account. Acts as the Token Bridge sender PDA. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. Send tokens to the contract specified in this","account. Funnily enough, the Token Bridge program does not have any","requirements for outbound transfers for the recipient chain to be","registered. This account provides extra protection against sending","tokens to an unregistered Wormhole chain ID. Read-only."]},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1,docs:["Token Bridge wrapped mint info. This is the SPL token that will be","bridged to the foreign contract. The wrapped mint PDA must agree","with the native token's metadata. Mutable."]},{name:"fromTokenAccount",isMut:!0,isSigner:!1,docs:["Payer's associated token account. We may want to make this a generic","token account in the future."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged out, the token account","will have zero balance and can be closed."]},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1,docs:["about the token from its native chain:","* Wormhole Chain ID","* Token's native contract address","* Token's native decimals"]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!1,docs:["tokens transferred in this account."]},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"toNativeTokenAmount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"batchId",type:"u32"}]},{name:"completeNativeTransferWithRelay",docs:["This instruction is used to redeem token transfers from foreign emitters.","It takes custody of the released native tokens and sends the tokens to the","encoded `recipient`. It pays the `fee_recipient` in the token","denomination. If requested by the user, it will perform a swap with the","off-chain relayer to provide the user with lamports. If the token","being transferred is WSOL, the contract will unwrap the WSOL and send","the lamports to the recipient and pay the relayer in lamports.","","# Arguments","","* `ctx` - `CompleteNativeWithRelay` context","* `vaa_hash` - Hash of the VAA that triggered the transfer"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Redeemer Config account. Acts as the Token Bridge redeemer, which signs","for the complete transfer instruction. Read-only."]},{name:"feeRecipientTokenAccount",isMut:!0,isSigner:!1,docs:["Fee recipient's token account. Must be an associated token account. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. The registered contract specified in this","account must agree with the target address for the Token Bridge's token","transfer. Read-only."]},{name:"mint",isMut:!1,isSigner:!1,docs:["Mint info. This is the SPL token that will be bridged over from the","foreign contract. This must match the token address specified in the","signed Wormhole message. Read-only."]},{name:"recipientTokenAccount",isMut:!0,isSigner:!1,docs:["Recipient associated token account. The recipient authority check","is necessary to ensure that the recipient is the intended recipient","of the bridged tokens. Mutable."]},{name:"recipient",isMut:!0,isSigner:!1,docs:["transaction. This instruction verifies that the recipient key","passed in this context matches the intended recipient in the vaa."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"nativeRegisteredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged in, the tokens will be","transferred to the destination token accounts. This account will have","zero balance and can be closed."]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1,docs:["Verified Wormhole message account. The Wormhole program verified","signatures and posted the account data here. Read-only."]},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["is true if the bridged assets have been claimed. If the transfer has","not been redeemed, this account will not exist yet.","","NOTE: The Token Bridge program's claim account is only initialized when","a transfer is redeemed (and the boolean value `true` is written as","its data).","","The Token Bridge program will automatically fail if this transfer","is redeemed again. But we choose to short-circuit the failure as the","first evaluation of this instruction."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["endpoint per chain, but the PDA allows for multiple endpoints for each","chain! We store the proper endpoint for the emitter chain."]},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1,docs:["account that holds this mint's balance."]},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"completeWrappedTransferWithRelay",docs:["This instruction is used to redeem token transfers from foreign emitters.","It takes custody of the minted wrapped tokens and sends the tokens to the","encoded `recipient`. It pays the `fee_recipient` in the wrapped-token","denomination. If requested by the user, it will perform a swap with the","off-chain relayer to provide the user with lamports.","","# Arguments","","* `ctx` - `CompleteWrappedWithRelay` context","* `vaa_hash` - Hash of the VAA that triggered the transfer"],accounts:[{name:"payer",isMut:!0,isSigner:!0,docs:["Payer will pay Wormhole fee to transfer tokens and create temporary","token account."]},{name:"config",isMut:!1,isSigner:!1,docs:["Redeemer Config account. Acts as the Token Bridge redeemer, which signs","for the complete transfer instruction. Read-only."]},{name:"feeRecipientTokenAccount",isMut:!0,isSigner:!1,docs:["Fee recipient's token account. Must be an associated token account. Mutable."]},{name:"foreignContract",isMut:!1,isSigner:!1,docs:["Foreign Contract account. The registered contract specified in this","account must agree with the target address for the Token Bridge's token","transfer. Read-only."]},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1,docs:["Token Bridge wrapped mint info. This is the SPL token that will be","bridged from the foreign contract. The wrapped mint PDA must agree","with the native token's metadata in the wormhole message. Mutable."]},{name:"recipientTokenAccount",isMut:!0,isSigner:!1,docs:["Recipient associated token account. The recipient authority check","is necessary to ensure that the recipient is the intended recipient","of the bridged tokens. Mutable."]},{name:"recipient",isMut:!0,isSigner:!1,docs:["transaction. This instruction verifies that the recipient key","passed in this context matches the intended recipient in the vaa."]},{name:"registeredToken",isMut:!1,isSigner:!1},{name:"nativeRegisteredToken",isMut:!1,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1,docs:["Program's temporary token account. This account is created before the","instruction is invoked to temporarily take custody of the payer's","tokens. When the tokens are finally bridged in, the tokens will be","transferred to the destination token accounts. This account will have","zero balance and can be closed."]},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1,docs:["about the token from its native chain:","* Wormhole Chain ID","* Token's native contract address","* Token's native decimals"]},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1,docs:["Verified Wormhole message account. The Wormhole program verified","signatures and posted the account data here. Read-only."]},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1,docs:["is true if the bridged assets have been claimed. If the transfer has","not been redeemed, this account will not exist yet.","","NOTE: The Token Bridge program's claim account is only initialized when","a transfer is redeemed (and the boolean value `true` is written as","its data).","","The Token Bridge program will automatically fail if this transfer","is redeemed again. But we choose to short-circuit the failure as the","first evaluation of this instruction."]},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1,docs:["endpoint per chain, but the PDA allows for multiple endpoints for each","chain! We store the proper endpoint for the emitter chain."]},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]}],accounts:[{name:"foreignContract",docs:["Foreign emitter account data."],type:{kind:"struct",fields:[{name:"chain",docs:["Emitter chain. Cannot equal `1` (Solana's Chain ID)."],type:"u16"},{name:"address",docs:["Emitter address. Cannot be zero address."],type:{array:["u8",32]}},{name:"tokenBridgeForeignEndpoint",docs:["Token Bridge program's foreign endpoint account key."],type:"publicKey"},{name:"fee",docs:["The fee that is paid to the `fee_recipient` upon redeeming a transfer.","This value is set in terms of USD and scaled by the `relayer_fee_precision`.","For example, if the `relayer_fee_precision` is `100000000` and the intended","fee is $5, then the `fee` value should be `500000000`."],type:"u64"}]}},{name:"ownerConfig",docs:["Owner account data."],type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"assistant",docs:["Program's assistant. Can be used to update the relayer fee and swap rate."],type:"publicKey"},{name:"pendingOwner",docs:["Intermediate storage for the pending owner. Is used to transfer ownership."],type:{option:"publicKey"}}]}},{name:"redeemerConfig",type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"bump",docs:["PDA bump."],type:"u8"},{name:"relayerFeePrecision",docs:["Relayer fee and swap rate precision."],type:"u32"},{name:"feeRecipient",docs:["Recipient of all relayer fees and swap proceeds."],type:"publicKey"}]}},{name:"registeredToken",docs:["Registered token account data."],type:{kind:"struct",fields:[{name:"swapRate",docs:["Token swap rate. The swap rate is the USD conversion rate of the token."],type:"u64"},{name:"maxNativeSwapAmount",docs:["Maximum amount of native SOL the contract will swap for each transfer."],type:"u64"}]}},{name:"senderConfig",type:{kind:"struct",fields:[{name:"owner",docs:["Program's owner."],type:"publicKey"},{name:"bump",docs:["PDA bump."],type:"u8"},{name:"tokenBridge",docs:["Token Bridge program's relevant addresses."],type:{defined:"OutboundTokenBridgeAddresses"}},{name:"relayerFeePrecision",docs:["Relayer fee and swap rate precision."],type:"u32"},{name:"paused",docs:["Boolean indicating whether outbound transfers are paused."],type:"bool"}]}},{name:"signerSequence",type:{kind:"struct",fields:[{name:"value",type:"u64"}]}}],types:[{name:"OutboundTokenBridgeAddresses",type:{kind:"struct",fields:[{name:"sequence",type:"publicKey"}]}},{name:"TokenBridgeRelayerMessage",docs:["Expected message types for this program. Only valid payloads are:","* `TransferWithRelay`: Payload ID == 1.","","Payload IDs are encoded as u8."],type:{kind:"enum",variants:[{name:"TransferWithRelay",fields:[{name:"target_relayer_fee",type:"u64"},{name:"to_native_token_amount",type:"u64"},{name:"recipient",type:{array:["u8",32]}}]}]}}],errors:[{code:6e3,name:"InvalidWormholeBridge",msg:"InvalidWormholeBridge"},{code:6001,name:"InvalidWormholeFeeCollector",msg:"InvalidWormholeFeeCollector"},{code:6002,name:"OwnerOnly",msg:"OwnerOnly"},{code:6003,name:"OutboundTransfersPaused",msg:"OutboundTransfersPaused"},{code:6004,name:"OwnerOrAssistantOnly",msg:"OwnerOrAssistantOnly"},{code:6005,name:"NotPendingOwner",msg:"NotPendingOwner"},{code:6006,name:"AlreadyTheOwner",msg:"AlreadyTheOwner"},{code:6007,name:"AlreadyTheAssistant",msg:"AlreadyTheAssistant"},{code:6008,name:"AlreadyTheFeeRecipient",msg:"AlreadyTheFeeRecipient"},{code:6009,name:"BumpNotFound",msg:"BumpNotFound"},{code:6010,name:"FailedToMakeImmutable",msg:"FailedToMakeImmutable"},{code:6011,name:"InvalidForeignContract",msg:"InvalidForeignContract"},{code:6012,name:"ZeroBridgeAmount",msg:"ZeroBridgeAmount"},{code:6013,name:"InvalidToNativeAmount",msg:"InvalidToNativeAmount"},{code:6014,name:"NativeMintRequired",msg:"NativeMintRequired"},{code:6015,name:"SwapsNotAllowedForNativeMint",msg:"SwapsNotAllowedForNativeMint"},{code:6016,name:"InvalidTokenBridgeConfig",msg:"InvalidTokenBridgeConfig"},{code:6017,name:"InvalidTokenBridgeAuthoritySigner",msg:"InvalidTokenBridgeAuthoritySigner"},{code:6018,name:"InvalidTokenBridgeCustodySigner",msg:"InvalidTokenBridgeCustodySigner"},{code:6019,name:"InvalidTokenBridgeEmitter",msg:"InvalidTokenBridgeEmitter"},{code:6020,name:"InvalidTokenBridgeSequence",msg:"InvalidTokenBridgeSequence"},{code:6021,name:"InvalidRecipient",msg:"InvalidRecipient"},{code:6022,name:"InvalidTransferToChain",msg:"InvalidTransferToChain"},{code:6023,name:"InvalidTransferTokenChain",msg:"InvalidTransferTokenChain"},{code:6024,name:"InvalidPrecision",msg:"InvalidPrecision"},{code:6025,name:"InvalidTransferToAddress",msg:"InvalidTransferToAddress"},{code:6026,name:"AlreadyRedeemed",msg:"AlreadyRedeemed"},{code:6027,name:"InvalidTokenBridgeForeignEndpoint",msg:"InvalidTokenBridgeForeignEndpoint"},{code:6028,name:"InvalidTokenBridgeMintAuthority",msg:"InvalidTokenBridgeMintAuthority"},{code:6029,name:"InvalidPublicKey",msg:"InvalidPublicKey"},{code:6030,name:"ZeroSwapRate",msg:"ZeroSwapRate"},{code:6031,name:"TokenNotRegistered",msg:"TokenNotRegistered"},{code:6032,name:"ChainNotRegistered",msg:"ChainNotRegistered"},{code:6033,name:"TokenAlreadyRegistered",msg:"TokenAlreadyRegistered"},{code:6034,name:"FeeCalculationError",msg:"TokenFeeCalculationError"},{code:6035,name:"InvalidSwapCalculation",msg:"InvalidSwapCalculation"},{code:6036,name:"InsufficientFunds",msg:"InsufficientFunds"}]};function be(t,e){return new ae.Program(Dt,new i.PublicKey(t),{connection:e})}function Vt(t,e){return A.deriveAddress([o.Buffer.from("seq"),new i.PublicKey(e).toBuffer()],t)}async function Yt(t,e,r,n,a,s,u,c,d,l,f,m){const{methods:{transferNativeTokensWithRelay:g},account:{signerSequence:h}}=be(e,t),y=Vt(e,r),S=await h.fetch(y).then(({value:M})=>M).catch(M=>{if(M.message?.includes("Account does not exist"))return new i.BN(0);throw M}),B=Ze(e,r,S),P=F(new i.PublicKey(s),new i.PublicKey(r)),b=Ge(e,s),R=zt(e,n,a,r,B,P,s);return g(new i.BN(u.toString()),new i.BN(c.toString()),o.toChainId(l),[...d],f,m).accounts({config:Ye(e),payerSequence:y,foreignContract:he(e,l),registeredToken:pe(e,s),tmpTokenAccount:b,tokenBridgeProgram:new i.PublicKey(n),...R}).instruction()}async function Gt(t,e,r,n,a,s,u,c,d,l,f){const{methods:{transferWrappedTokensWithRelay:m},account:{signerSequence:g}}=be(e,t),h=Vt(e,r),y=await g.fetch(h).then(({value:v})=>v).catch(v=>{if(v.message?.includes("Account does not exist"))return new i.BN(0);throw v}),S=Ze(e,r,y),B=F(new i.PublicKey(s),new i.PublicKey(r)),{chain:P,tokenAddress:b}=await ie(t,n,s),R=Ge(e,s),M=qt(e,n,a,r,S,B,P,b);return m(new i.BN(u.toString()),new i.BN(c.toString()),o.toChainId(l),[...d],f).accounts({config:Ye(e),payerSequence:h,foreignContract:he(e,l),registeredToken:pe(e,new i.PublicKey(s)),tmpTokenAccount:R,tokenBridgeProgram:new i.PublicKey(n),...M}).instruction()}class J{network;chain;connection;contracts;chainId;coreBridge;tokenBridge;constructor(e,r,n,a){this.network=e,this.chain=r,this.connection=n,this.contracts=a,this.chainId=o.toChainId(r);const s=a.tokenBridge;if(!s)throw new Error(`TokenBridge contract Address for chain ${r} not found`);this.tokenBridge=W(s,n),this.coreBridge=new w.SolanaWormholeCore(e,r,n,a)}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch for chain ${a}: ${s.network} != ${n}`);return new J(n,a,e,s.contracts)}async isWrappedAsset(e){return ie(this.connection,this.tokenBridge.programId,new i.SolanaAddress(e).toUint8Array()).catch(r=>null).then(r=>r!=null)}async getOriginalAsset(e){if(!await this.isWrappedAsset(e))throw o.ErrNotWrapped(e.toString());const r=new i.SolanaAddress(e).toUint8Array(),n=new i.PublicKey(r);try{const a=await ie(this.connection,this.tokenBridge.programId,r);return a===null?{chain:this.chain,address:new i.SolanaAddress(n.toBytes()).toUniversalAddress()}:{chain:o.toChain(a.chain),address:new o.UniversalAddress(new Uint8Array(a.tokenAddress))}}catch{throw o.ErrNotWrapped(e.toString())}}async getTokenUniversalAddress(e){return new i.SolanaAddress(e).toUniversalAddress()}async getTokenNativeAddress(e,r){return new i.SolanaAddress(r).toNative()}async hasWrappedAsset(e){try{return await this.getWrappedAsset(e),!0}catch{}return!1}async getWrappedAsset(e){if(o.isNative(e.address))throw new Error("Native cannot be a wrapped asset");if(e.chain===this.chain)throw new Error(`Token ${e.address} is already native to chain ${this.chain}`);const r=G(this.tokenBridge.programId,o.toChainId(e.chain),e.address.toUniversalAddress().toUint8Array());try{return await ie(this.connection,this.tokenBridge.programId,r),o.toNative(this.chain,r.toBase58())}catch{}throw o.ErrNotWrapped(`${r}: ${e.address.toUniversalAddress().toString()}`)}async isTransferCompleted(e){return w.getClaim(this.connection,this.tokenBridge.programId,e.emitterAddress.toUint8Array(),o.toChainId(e.emitterChain),e.sequence,this.connection.commitment).catch(()=>!1)}async getWrappedNative(){return o.toNative(this.chain,N.toBase58())}async*createAttestation(e,r){if(!r)throw new Error("Payer required to create attestation");const n=new i.SolanaAddress(r).unwrap(),a=0,s=await this.coreBridge.getMessageFee(),u=w.createBridgeFeeTransferInstruction(this.coreBridge.coreBridge.programId,n,s),c=new i.SolanaAddress(e).unwrap(),d=await i.SolanaPlatform.getTokenProgramId(this.connection,c);let l;if(d.equals(Ie)){const h=await ct(this.connection,c,void 0,d),y=wn(h);y?.metadataAddress&&(l=y?.metadataAddress)}const f=i.Keypair.generate(),m=vt(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,new i.SolanaAddress(e).unwrap(),f.publicKey,a,l),g=new i.Transaction$1().add(u,m);g.feePayer=n,yield this.createUnsignedTx({transaction:g,signers:[f]},"Solana.AttestToken")}async*submitAttestation(e,r){if(!r)throw new Error("Payer required to create attestation");const n=new i.SolanaAddress(r).unwrap();yield*this.coreBridge.postVaa(n,e);const a=new i.Transaction$1().add(Kt(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,e));a.feePayer=n,yield this.createUnsignedTx({transaction:a},"Solana.CreateWrapped")}async transferSol(e,r,n,a){const s=new i.SolanaAddress(e).unwrap(),u=s,c=r.address.toUniversalAddress().toUint8Array(),d=o.toChainId(r.chain),l=0,f=0n,m=i.Keypair.generate(),g=i.Keypair.generate(),h=await Re(this.connection),y=i.SystemProgram.createAccount({fromPubkey:u,newAccountPubkey:g.publicKey,lamports:h,space:E,programId:k}),S=i.SystemProgram.transfer({fromPubkey:u,lamports:n,toPubkey:g.publicKey}),B=We(g.publicKey,N,u),P=_e(this.tokenBridge.programId,g.publicKey,u,n,k),b=a?Fe(this.connection,this.tokenBridge.programId,this.coreBridge.address,s,m.publicKey,g.publicKey,N,k,l,n,c,d,a):Le(this.connection,this.tokenBridge.programId,this.coreBridge.address,s,m.publicKey,g.publicKey,N,k,l,n,f,c,d),R=Ee(g.publicKey,u,u),M=new i.Transaction$1;return M.feePayer=u,M.add(y,S,B,P,b,R),this.createUnsignedTx({transaction:M,signers:[m,g]},"TokenBridge.TransferNative")}async*transfer(e,r,n,a,s){if(o.isNative(n)){yield await this.transferSol(e,r,a,s);return}const u=new i.SolanaAddress(n).unwrap(),c=new i.SolanaAddress(e).unwrap(),d=await i.SolanaPlatform.getTokenProgramId(this.connection,u);if(d.equals(Ie))throw new Error("Transfers of Token-2022 assets are not supported via the Manual Token Bridge route. Please use the Executor Token Bridge route instead.");let l=await ut(u,c,!1,d);const f=!await this.isWrappedAsset(n);let m,g=!1;if(f&&d.equals(Ie)){const C=await this.connection.getAccountInfo(l);if(C&&C.data.length>E){const q=await yt(this.connection,l,void 0,d);q.tlvData&&(g=Fn(q.tlvData).includes(T.ImmutableOwner))}}const h=r.address.toUniversalAddress().toUint8Array(),y=o.toChainId(r.chain),S=0,B=0n,P=i.Keypair.generate(),b=[],R=[P];if(g){m=i.Keypair.generate(),R.push(m);const C=await Re(this.connection);b.push(i.SystemProgram.createAccount({fromPubkey:c,newAccountPubkey:m.publicKey,lamports:C,space:E,programId:d})),b.push(We(m.publicKey,u,c,d)),b.push(Ne(l,m.publicKey,c,a,[],d)),l=m.publicKey}let M;if(f)M=s?Fe(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,u,d,S,a,h,y,s):Le(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,u,d,S,a,B,h,y);else{const C=await this.getOriginalAsset(n);if(o.isNative(C.address))throw new Error("Native cannot be an original asset");M=s?Ot(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,c,o.toChainId(C.chain),C.address.toUint8Array(),d,S,a,h,y,s):Lt(this.connection,this.tokenBridge.programId,this.coreBridge.address,c,P.publicKey,l,c,o.toChainId(C.chain),C.address.toUint8Array(),d,S,a,B,h,y)}const v=_e(this.tokenBridge.programId,l,c,a,d);b.push(v),b.push(M),m&&b.push(Ee(m.publicKey,c,c,[],d));const U=new i.Transaction$1().add(...b);U.feePayer=c,yield this.createUnsignedTx({transaction:U,signers:R},"TokenBridge.TransferTokens")}async*redeemAndUnwrap(e,r){const n=new i.SolanaAddress(e).unwrap(),a=new i.SolanaAddress(r.payload.to.address).unwrap(),s=await ct(this.connection,N).then(y=>r.payload.token.amount*BigInt(Math.pow(10,y.decimals-8))),u=await Re(this.connection),c=i.Keypair.generate(),d=Ue(this.connection,this.tokenBridge.programId,this.coreBridge.address,n,r),l=i.SystemProgram.createAccount({fromPubkey:n,newAccountPubkey:c.publicKey,lamports:u,space:E,programId:k}),f=We(c.publicKey,N,n),m=Ne(a,c.publicKey,n,s.valueOf()),g=Ee(c.publicKey,n,n),h=new i.Transaction$1;h.feePayer=n,h.add(d,l,f,m,g),yield this.createUnsignedTx({transaction:h,signers:[c]},"TokenBridge.RedeemAndUnwrap")}async*createAta(e,r,n){const a=new i.SolanaAddress(e).unwrap(),s=new i.SolanaAddress(r).unwrap(),u=await ut(s,a,!1,n);if(await this.connection.getAccountInfo(u)===null){const d=new i.Transaction$1().add(Mt(a,u,a,s,n));d.feePayer=a,yield this.createUnsignedTx({transaction:d},"Redeem.CreateATA")}}async*redeem(e,r,n=!0){const a=r.payload.token.chain===this.chain?r.payload.token.address:(await this.getWrappedAsset(r.payload.token)).toUniversalAddress(),s=await i.SolanaPlatform.getTokenProgramId(this.connection,new i.SolanaAddress(a).unwrap());if(yield*this.createAta(e,a,s),yield*this.coreBridge.postVaa(e,r),n){const l=new i.SolanaAddress(await this.getWrappedNative());if(o.bytes.equals(a.toUint8Array(),l.toUint8Array())){yield*this.redeemAndUnwrap(e,r);return}}const u=new i.SolanaAddress(e).unwrap(),c=r.payload.token.chain==this.chain?Ue:Et,d=new i.Transaction$1().add(c(this.connection,this.tokenBridge.programId,this.coreBridge.address,u,r,void 0,s));d.feePayer=u,yield this.createUnsignedTx({transaction:d},"Solana.RedeemTransfer")}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}const fr={Testnet:["7VPWjBhCXrpYYBiRKZh1ubh9tLZZNkZGp2ReRphEV4Mc","3WK3mEDNPrNuQReBvM28NcsqrExMnPxD9pPJmgrUeKKH","BaGfF51MQ3a61papTRDYaNefBgTQ9ywnVne5fCff4bxT","ACbmcQxbbhiXWM1GmapUSMmBYKMvnFLfAAXKqdo8xKwo","GQtMXZxnuacCFTXVeTvyHi6P9F6chbtzhVc8JgD8hv7c","3Ftc5hTz9sG4huk79onufGiebJNDMZNL8HYgdMJ9E7JR","DMw2tLaq1bVoAEKtkoUtieSk9bfCPUvubYLatTMsSVop","84F2QX9278ToDmA98u4A86xSV9hz1ovazr8zwGaX6qjS","So11111111111111111111111111111111111111112","8987WGkYa5viiZ9DD8sS3PB5XghKmWjkEgmzvwDuoAEc","BJZ72CjPQojVoH68mzrd4VQ4nr6KuhbAGnhZEZCujKxY"],Mainnet:["7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs","A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM","Dn4noZ5jgGfkntzcQSUZ8czkreiZ1ForXYoV2H8Dm7S1","3NZ9JMVBmGAqocybic2c7LQCJScmgsAZ6vQqTDzcqmJh","9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa","Gz7VkD4MacbEB6yC5XD3HcumEiYx2EtDYYrfikGsvopG","KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE","DRQBDBEWmwWGK13fRTLhSPzjbvMSUavhV6nW4RUH8W6T","9kvAcwQbqejuJMd59mKuw2bfSsLRaQ7zuvaTVHEeBBec","7ixSaXGsHAFy34wogPk2YXiUX3BMmQMFdercdaHLnBby","G1vJEgzepqhnVu35BN4jrkv3wVwkujYWFFCxhbEZ1CZr","So11111111111111111111111111111111111111112"],Devnet:[]},H=9,ne=new i.BN(10),$=new i.BN(1e8);class Te{network;chain;connection;contracts;chainId;coreBridgeProgramId;tokenBridgeProgramId;tokenBridgeRelayer;constructor(e,r,n,a){this.network=e,this.chain=r,this.connection=n,this.contracts=a,this.chainId=o.toChainId(r);const s=a.tokenBridgeRelayer;if(!s)throw new Error(`TokenBridge contract Address for chain ${r} not found`);this.tokenBridgeRelayer=be(s,n),this.tokenBridgeProgramId=new i.PublicKey(a.tokenBridge),this.coreBridgeProgramId=new i.PublicKey(a.coreBridge)}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch for chain ${a}: ${s.network} != ${n}`);return new Te(n,a,e,s.contracts)}async*transfer(e,r,n,a,s){const c=new i.SolanaAddress(e).unwrap(),d=r.address.toUniversalAddress().toUint8Array(),l=this.mintAddress(n),f=new i.Transaction$1;if(o.isNative(n)){const y=F(l,c);try{await yt(this.connection,y)}catch(S){if(S instanceof ze){const B=Mt(c,y,c,l);f.add(B)}else throw S}}const m=s||0n,g=o.isNative(n),h=g?await Yt(this.connection,this.tokenBridgeRelayer.programId,c,this.tokenBridgeProgramId,this.coreBridgeProgramId,l,a,m,d,r.chain,0,g):await Gt(this.connection,this.tokenBridgeRelayer.programId,c,this.tokenBridgeProgramId,this.coreBridgeProgramId,l,a,m,d,r.chain,0);f.add(h),f.feePayer=c,yield this.createUnsignedTx({transaction:f},"AutomaticTokenBridge.Transfer")}async*redeem(e,r){const n=new i.Transaction$1;throw yield this.createUnsignedTx({transaction:n},"AutomaticTokenBridge.Redeem"),new Error("Method not implemented.")}async getRelayerFee(e,r){const n=this.mintAddress(r),[{fee:a},{swapRate:s},{relayerFeePrecision:u}]=await Promise.all([this.getForeignContract(e),this.getRegisteredToken(n),this.getRedeemerConfig()]),c=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,r)),d=ne.pow(new i.BN(c)).mul(a).mul($).div(new i.BN(u).mul(s));return BigInt(d.toString())}async maxSwapAmount(e){const r=this.mintAddress(e),[{swapRate:n,maxNativeSwapAmount:a},{swapRate:s}]=await Promise.all([this.getRegisteredToken(r),this.getRegisteredToken(N)]),u=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e)),c=this.calculateNativeSwapRate(s,n),d=u>H?a.mul(c).mul(ne.pow(new i.BN(u-H))).div($):a.mul(c).div(ne.pow(new i.BN(H-u)).mul($));return BigInt(d.toString())}async nativeTokenAmount(e,r){if(r===0n)return 0n;const n=this.mintAddress(e),a=Number(await i.SolanaPlatform.getDecimals(this.network,this.chain,this.connection,e)),[{swapRate:s},{swapRate:u}]=await Promise.all([this.getRegisteredToken(n),this.getRegisteredToken(N)]),c=this.calculateNativeSwapRate(u,s),d=a>H?$.mul(new i.BN(r.toString())).div(c.mul(ne.pow(new i.BN(a-H)))):$.mul(new i.BN(r.toString())).mul(ne.pow(new i.BN(H-a))).div(c);return BigInt(d.toString())}async isRegisteredToken(e){const r=this.mintAddress(e);try{return await this.getRegisteredToken(r),!0}catch(n){if(n.message?.includes("Account does not exist"))return!1;throw n}}mintAddress(e){return o.isNative(e)?new i.PublicKey(N):new i.SolanaAddress(e).unwrap()}async getRegisteredTokens(){return fr[this.network].map(e=>o.toNative(this.chain,e))}calculateNativeSwapRate(e,r){return $.mul(e).div(r)}async getForeignContract(e){return await this.tokenBridgeRelayer.account.foreignContract.fetch(he(this.tokenBridgeRelayer.programId,e))}async getRegisteredToken(e){return await this.tokenBridgeRelayer.account.registeredToken.fetch(pe(this.tokenBridgeRelayer.programId,e))}async getRedeemerConfig(){return await this.tokenBridgeRelayer.account.redeemerConfig.fetch(bt(this.tokenBridgeRelayer.programId))}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}const Oe={version:"0.4.0",name:"tokenBridgeRelayer",instructions:[{name:"completeNativeTransferWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"completeWrappedTransferWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1},{name:"recipientTokenAccount",isMut:!0,isSigner:!1},{name:"recipient",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"vaa",isMut:!1,isSigner:!1},{name:"tokenBridgeClaim",isMut:!0,isSigner:!1},{name:"tokenBridgeForeignEndpoint",isMut:!1,isSigner:!1},{name:"tokenBridgeMintAuthority",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"vaaHash",type:{array:["u8",32]}}]},{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"senderConfig",isMut:!0,isSigner:!1},{name:"redeemerConfig",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"lutAddress",isMut:!0,isSigner:!1},{name:"lut",isMut:!0,isSigner:!1},{name:"lutProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"recentSlot",type:"u64"}]},{name:"resolveExecuteVaaV1",accounts:[],args:[{name:"vaaBody",type:"bytes"}],returns:{defined:"ResolverInstructionGroups"}},{name:"transferNativeTokensWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"fromTokenAccount",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeCustody",isMut:!0,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"tokenBridgeCustodySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"payee",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferNativeTokensWithRelayArgs"}}]},{name:"transferWrappedTokensWithRelay",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"tokenBridgeWrappedMint",isMut:!0,isSigner:!1},{name:"fromTokenAccount",isMut:!0,isSigner:!1},{name:"tmpTokenAccount",isMut:!0,isSigner:!1},{name:"tokenBridgeWrappedMeta",isMut:!1,isSigner:!1},{name:"tokenBridgeConfig",isMut:!1,isSigner:!1},{name:"tokenBridgeAuthoritySigner",isMut:!1,isSigner:!1},{name:"wormholeBridge",isMut:!0,isSigner:!1},{name:"wormholeMessage",isMut:!0,isSigner:!0},{name:"tokenBridgeEmitter",isMut:!1,isSigner:!1},{name:"tokenBridgeSequence",isMut:!0,isSigner:!1},{name:"wormholeFeeCollector",isMut:!0,isSigner:!1},{name:"payee",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"tokenBridgeProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"executorProgram",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"TransferWrappedTokensWithRelayArgs"}}]}],accounts:[{name:"LUT",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"address",type:"publicKey"}]}},{name:"RedeemerConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}},{name:"SenderConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"}]}}],types:[{name:"InstructionGroup",type:{kind:"struct",fields:[{name:"instructions",type:{vec:{defined:"SerializableInstruction"}}},{name:"addressLookupTables",type:{vec:"publicKey"}}]}},{name:"InstructionGroups",type:{kind:"struct",fields:[{name:"groups",type:{vec:{defined:"InstructionGroup"}}}]}},{name:"MissingAccounts",type:{kind:"struct",fields:[{name:"accounts",type:{vec:"publicKey"}},{name:"addressLookupTables",type:{vec:"publicKey"}}]}},{name:"ResolverInstructionGroups",type:{kind:"enum",variants:[{name:"Resolved",fields:[{name:"groups",type:{defined:"InstructionGroups"}}]},{name:"Missing",fields:[{name:"accounts",type:{defined:"MissingAccounts"}}]},{name:"Account"}]}},{name:"SerializableAccountMeta",type:{kind:"struct",fields:[{name:"pubkey",type:"publicKey"},{name:"isSigner",type:"bool"},{name:"isWritable",type:"bool"}]}},{name:"SerializableInstruction",type:{kind:"struct",fields:[{name:"programId",type:"publicKey"},{name:"accounts",type:{vec:{defined:"SerializableAccountMeta"}}},{name:"data",type:"bytes"}]}},{name:"TransferNativeTokensWithRelayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"nonce",type:"u32"},{name:"wrapNative",type:"bool"},{name:"dstTransferRecipient",type:{array:["u8",32]}},{name:"dstExecutionAddress",type:{array:["u8",32]}},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}},{name:"TransferWrappedTokensWithRelayArgs",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"recipientChain",type:"u16"},{name:"recipientAddress",type:{array:["u8",32]}},{name:"nonce",type:"u32"},{name:"dstTransferRecipient",type:{array:["u8",32]}},{name:"dstExecutionAddress",type:{array:["u8",32]}},{name:"execAmount",type:"u64"},{name:"signedQuoteBytes",type:"bytes"},{name:"relayInstructions",type:"bytes"}]}}],errors:[{code:6e3,name:"InvalidWormholeBridge",msg:"invalidWormholeBridge"},{code:6001,name:"InvalidWormholeFeeCollector",msg:"invalidWormholeFeeCollector"},{code:6002,name:"OwnerOnly",msg:"ownerOnly"},{code:6003,name:"OutboundTransfersPaused",msg:"outboundTransfersPaused"},{code:6004,name:"OwnerOrAssistantOnly",msg:"ownerOrAssistantOnly"},{code:6005,name:"NotPendingOwner",msg:"notPendingOwner"},{code:6006,name:"AlreadyTheOwner",msg:"alreadyTheOwner"},{code:6007,name:"AlreadyTheAssistant",msg:"alreadyTheAssistant"},{code:6008,name:"AlreadyTheFeeRecipient",msg:"alreadyTheFeeRecipient"},{code:6009,name:"BumpNotFound",msg:"bumpNotFound"},{code:6010,name:"FailedToMakeImmutable",msg:"failedToMakeImmutable"},{code:6011,name:"InvalidForeignContract",msg:"invalidForeignContract"},{code:6012,name:"ZeroBridgeAmount",msg:"zeroBridgeAmount"},{code:6013,name:"InvalidToNativeAmount",msg:"invalidToNativeAmount"},{code:6014,name:"NativeMintRequired",msg:"nativeMintRequired"},{code:6015,name:"SwapsNotAllowedForNativeMint",msg:"swapsNotAllowedForNativeMint"},{code:6016,name:"InvalidTokenBridgeConfig",msg:"invalidTokenBridgeConfig"},{code:6017,name:"InvalidTokenBridgeAuthoritySigner",msg:"invalidTokenBridgeAuthoritySigner"},{code:6018,name:"InvalidTokenBridgeCustodySigner",msg:"invalidTokenBridgeCustodySigner"},{code:6019,name:"InvalidTokenBridgeEmitter",msg:"invalidTokenBridgeEmitter"},{code:6020,name:"InvalidTokenBridgeSequence",msg:"invalidTokenBridgeSequence"},{code:6021,name:"InvalidRecipient",msg:"invalidRecipient"},{code:6022,name:"InvalidTransferToChain",msg:"invalidTransferToChain"},{code:6023,name:"InvalidTransferTokenChain",msg:"invalidTransferTokenChain"},{code:6024,name:"InvalidPrecision",msg:"invalidPrecision"},{code:6025,name:"InvalidTransferToAddress",msg:"invalidTransferToAddress"},{code:6026,name:"AlreadyRedeemed",msg:"alreadyRedeemed"},{code:6027,name:"InvalidTokenBridgeForeignEndpoint",msg:"invalidTokenBridgeForeignEndpoint"},{code:6028,name:"InvalidTokenBridgeMintAuthority",msg:"invalidTokenBridgeMintAuthority"},{code:6029,name:"InvalidPublicKey",msg:"invalidPublicKey"},{code:6030,name:"ZeroSwapRate",msg:"zeroSwapRate"},{code:6031,name:"TokenNotRegistered",msg:"tokenNotRegistered"},{code:6032,name:"ChainNotRegistered",msg:"chainNotRegistered"},{code:6033,name:"TokenAlreadyRegistered",msg:"tokenAlreadyRegistered"},{code:6034,name:"FeeCalculationError",msg:"tokenFeeCalculationError"},{code:6035,name:"InvalidSwapCalculation",msg:"invalidSwapCalculation"},{code:6036,name:"InsufficientFunds",msg:"insufficientFunds"},{code:6037,name:"FailedToParseVaaBody",msg:"failedToParseVaaBody"}]};class D{network;chain;connection;contracts;relayerProgramId;executorProgramId;wormholeProgramId;tokenBridgeProgramId;relayerProgram;constructor(e,r,n,a){if(this.network=e,this.chain=r,this.connection=n,this.contracts=a,!a.executorTokenBridge)throw new Error(`Executor Token Bridge contracts not found for network ${e} and chain ${r}`);this.relayerProgramId=new i.PublicKey(a.executorTokenBridge.relayer),this.executorProgramId=new i.PublicKey(a.executor),this.wormholeProgramId=new i.PublicKey(a.coreBridge),this.tokenBridgeProgramId=new i.PublicKey(a.tokenBridge),this.relayerProgram=new ae.Program(Oe,this.relayerProgramId,{connection:this.connection})}static async fromRpc(e,r){const[n,a]=await i.SolanaPlatform.chainFromRpc(e),s=r[a];if(s.network!==n)throw new Error(`Network mismatch: ${s.network} != ${n}`);return new D(n,a,e,s.contracts)}async*transfer(e,r,n,a,s,u){const c=o.executorTokenBridge.get(this.network,r.chain);if(!c||!c.relayer)throw new Error(`Token Bridge Executor Relayer contract for domain ${r.chain} not found`);const d=c.relayer,l=new i.SolanaAddress(e).unwrap(),f=o.toChainId(r.chain),m=r.address.toUniversalAddress(),{estimatedCost:g,signedQuote:h,relayInstructions:y}=s,S=o.serialize(o.signedQuoteLayout,h),B=o.serialize(o.relayInstructionsLayout,y),P=new J(this.network,this.chain,this.connection,this.contracts),b=o.isNative(n),R=!b&&await P.isWrappedAsset(n),M=b?N:new i.SolanaAddress(n).unwrap(),v=await i.SolanaPlatform.getTokenProgramId(this.connection,M),U=new i.PublicKey(h.quote.payeeAddress),C=i.Keypair.generate(),q=o.toUniversal(r.chain,d),Pe=q,de=i.PublicKey.findProgramAddressSync([o.Buffer.from("config")],this.tokenBridgeProgramId)[0],Be=i.PublicKey.findProgramAddressSync([M.toBuffer()],this.tokenBridgeProgramId)[0],le=i.PublicKey.findProgramAddressSync([o.Buffer.from("authority_signer")],this.tokenBridgeProgramId)[0],Zt=i.PublicKey.findProgramAddressSync([o.Buffer.from("custody_signer")],this.tokenBridgeProgramId)[0],{wormholeEmitter:Xe,wormholeSequence:Je,wormholeFeeCollector:je,wormholeBridge:et}=w.getWormholeDerivedAccounts(this.tokenBridgeProgramId,this.wormholeProgramId),tt=i.PublicKey.findProgramAddressSync([o.Buffer.from("sender")],this.relayerProgramId)[0],nt=F(M,l,!1,v),rt=i.PublicKey.findProgramAddressSync([o.Buffer.from("tmp"),M.toBytes()],this.relayerProgramId)[0],Z=[];if(u&&u.feeAmount>0n){const Ce=new i.PublicKey(u.referrer.address.toString());if(M.equals(N))Z.push(i.SystemProgram.transfer({fromPubkey:l,toPubkey:Ce,lamports:u.feeAmount}));else{const ve=F(M,Ce,!0,v),Jt=F(M,l,!0,v);await this.connection.getAccountInfo(ve)||Z.push(On(l,ve,Ce,M,v)),Z.push(Ne(Jt,ve,l,u.feeAmount,void 0,v))}}const Ht=u?u.remainingAmount:a,it={amount:new i.BN(Ht.toString()),recipientChain:f,recipientAddress:Array.from(m.toUint8Array()),nonce:0,dstTransferRecipient:Array.from(q.toUint8Array()),dstExecutionAddress:Array.from(Pe.toUint8Array()),execAmount:new i.BN(g.toString()),signedQuoteBytes:o.Buffer.from(S),relayInstructions:o.Buffer.from(B)};R?Z.push(await this.relayerProgram.methods.transferWrappedTokensWithRelay(it).accountsStrict({payer:l,config:tt,tokenBridgeWrappedMint:M,fromTokenAccount:nt,tmpTokenAccount:rt,tokenBridgeWrappedMeta:x(this.tokenBridgeProgramId,M),tokenBridgeConfig:de,tokenBridgeAuthoritySigner:le,wormholeBridge:et,wormholeMessage:C.publicKey,tokenBridgeEmitter:Xe,tokenBridgeSequence:Je,wormholeFeeCollector:je,payee:U,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,systemProgram:i.SystemProgram.programId,tokenProgram:v,executorProgram:this.executorProgramId,clock:i.SYSVAR_CLOCK_PUBKEY,rent:i.SYSVAR_RENT_PUBKEY}).instruction()):Z.push(await this.relayerProgram.methods.transferNativeTokensWithRelay({...it,wrapNative:o.isNative(n)}).accountsStrict({payer:l,config:tt,mint:M,fromTokenAccount:nt,tmpTokenAccount:rt,tokenBridgeConfig:de,tokenBridgeCustody:Be,tokenBridgeAuthoritySigner:le,tokenBridgeCustodySigner:Zt,wormholeBridge:et,wormholeMessage:C.publicKey,tokenBridgeEmitter:Xe,tokenBridgeSequence:Je,wormholeFeeCollector:je,payee:U,systemProgram:i.SystemProgram.programId,tokenProgram:v,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,associatedTokenProgram:O,executorProgram:this.executorProgramId,clock:i.SYSVAR_CLOCK_PUBKEY,rent:i.SYSVAR_RENT_PUBKEY}).instruction());const at=await this.getAddressLookupTable(),{blockhash:$t}=await this.connection.getLatestBlockhash(),Qt=new i.TransactionMessage({payerKey:l,instructions:Z,recentBlockhash:$t}).compileToV0Message(at?[at]:[]),Xt=new i.VersionedTransaction(Qt);yield this.createUnsignedTx({transaction:Xt,signers:[C]},"ExecutorTokenBridge.transfer")}async*redeem(e,r){const n=new i.SolanaAddress(e).unwrap(),a=new i.SolanaAddress(r.payload.payload.targetRecipient).unwrap(),s=r.payload.token.chain,u=r.payload.token.address,c=s===this.chain;let d;if(c)d=new i.SolanaAddress(u).unwrap();else{const le=await new J(this.network,this.chain,this.connection,this.contracts).getWrappedAsset({chain:s,address:u});d=new i.SolanaAddress(le).unwrap()}const l=await i.SolanaPlatform.getTokenProgramId(this.connection,d),f=F(d,a,!0,l),m=w.derivePostedVaaKey(this.wormholeProgramId,o.Buffer.from(r.hash));await this.connection.getAccountInfo(m)||(yield*new w.SolanaWormholeCore(this.network,this.chain,this.connection,this.contracts).postVaa(n,r));const h=new i.SolanaAddress(r.payload.to.address).unwrap(),y=new ae.Program(Oe,h,{connection:this.connection}),S=i.PublicKey.findProgramAddressSync([o.Buffer.from("redeemer")],y.programId)[0],B=i.PublicKey.findProgramAddressSync([o.Buffer.from("config")],this.tokenBridgeProgramId)[0],P=i.PublicKey.findProgramAddressSync([o.Buffer.from("tmp"),d.toBytes()],y.programId)[0],b=w.deriveClaimKey(this.tokenBridgeProgramId,r.emitterAddress.toUint8Array(),o.toChainId(r.emitterChain),r.sequence),R=z(this.tokenBridgeProgramId,o.toChainId(r.emitterChain),r.emitterAddress.toUint8Array()),M=i.PublicKey.findProgramAddressSync([d.toBuffer()],this.tokenBridgeProgramId)[0],v=i.PublicKey.findProgramAddressSync([o.Buffer.from("custody_signer")],this.tokenBridgeProgramId)[0];let U;const C=Array.from(r.hash);c?U=await y.methods.completeNativeTransferWithRelay(C).accountsStrict({payer:n,config:S,mint:d,recipientTokenAccount:f,recipient:a,tmpTokenAccount:P,tokenBridgeConfig:B,vaa:m,tokenBridgeClaim:b,tokenBridgeForeignEndpoint:R,tokenBridgeCustody:M,tokenBridgeCustodySigner:v,wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,tokenProgram:l,associatedTokenProgram:O,systemProgram:i.SystemProgram.programId,rent:i.SYSVAR_RENT_PUBKEY}).instruction():U=await y.methods.completeWrappedTransferWithRelay(C).accountsStrict({payer:n,config:S,tokenBridgeWrappedMint:d,recipientTokenAccount:f,recipient:a,tmpTokenAccount:P,tokenBridgeWrappedMeta:x(this.tokenBridgeProgramId,d),tokenBridgeConfig:B,vaa:m,tokenBridgeClaim:b,tokenBridgeForeignEndpoint:R,tokenBridgeMintAuthority:te(this.tokenBridgeProgramId),wormholeProgram:this.wormholeProgramId,tokenBridgeProgram:this.tokenBridgeProgramId,tokenProgram:l,associatedTokenProgram:O,systemProgram:i.SystemProgram.programId,rent:i.SYSVAR_RENT_PUBKEY}).instruction();const{blockhash:q}=await this.connection.getLatestBlockhash(),Pe=new i.TransactionMessage({payerKey:n,instructions:[U],recentBlockhash:q}).compileToV0Message(),de=new i.VersionedTransaction(Pe);yield this.createUnsignedTx({transaction:de,signers:[]},"ExecutorTokenBridge.redeem")}async getAddressLookupTable(){const e=i.PublicKey.findProgramAddressSync([o.Buffer.from("lut")],this.relayerProgramId)[0];try{const r=(await this.relayerProgram.account.lut.fetch(e)).address,n=await this.connection.getAddressLookupTable(r);if(n.value)return n.value}catch{}return null}static associatedTokenAccountMinRent=void 0;async estimateMsgValueAndGasLimit(e,r){let n=0n;if(n+=2n*5000n+7n*5000n+1400000n,n+=2n*5000n+7n*5000n,n+=5000n+3200000n,o.isNative(e.address)||o.canonicalAddress(e)===N.toString()?n+=5000n+5000000n:n+=5000n+1200000n,r){const a=new i.PublicKey(r.address.toString());if(!o.isNative(e.address)){const s=new i.SolanaAddress(e.address).unwrap(),u=await this.connection.getAccountInfo(s);if(u===null)throw new Error("Couldn't determine token program. Mint account is null.");const c=F(s,a,!0,u.owner);await this.connection.getAccountInfo(c)===null&&(D.associatedTokenAccountMinRent||(D.associatedTokenAccountMinRent=BigInt(await this.connection.getMinimumBalanceForRentExemption(165))),n+=D.associatedTokenAccountMinRent)}}return{msgValue:n,gasLimit:310000n}}createUnsignedTx(e,r,n=!1){return new i.SolanaUnsignedTransaction(e,this.network,this.chain,r,n)}}o.registerProtocol(i._platform,"TokenBridge",J);o.registerProtocol(i._platform,"AutomaticTokenBridge",Te);o.registerProtocol(i._platform,"ExecutorTokenBridge",D);exports.CreateMetadataAccountArgs=se;exports.Creator=L;exports.Data=ce;exports.EndpointRegistration=we;exports.ExecutorTokenBridgeRelayerIdl=Oe;exports.Metadata=ke;exports.SolanaAutomaticTokenBridge=Te;exports.SolanaExecutorTokenBridge=D;exports.SolanaTokenBridge=J;exports.SplTokenMetadataProgram=X;exports.TOKEN_BRIDGE_IDL=He;exports.TOKEN_BRIDGE_RELAYER_IDL=Dt;exports.TokenBridgeConfig=ye;exports.WrappedMeta=Me;exports.coder=Ct;exports.createApproveAuthoritySignerInstruction=_e;exports.createAttestTokenInstruction=vt;exports.createCompleteTransferNativeInstruction=Ue;exports.createCompleteTransferWrappedInstruction=Et;exports.createCreateWrappedInstruction=Kt;exports.createInitializeInstruction=or;exports.createReadOnlyTokenBridgeProgramInterface=W;exports.createRegisterChainInstruction=cr;exports.createTokenBridgeProgramInterface=Bt;exports.createTokenBridgeRelayerProgramInterface=be;exports.createTransferNativeInstruction=Le;exports.createTransferNativeTokensWithRelayInstruction=Yt;exports.createTransferNativeWithPayloadInstruction=Fe;exports.createTransferWrappedInstruction=Lt;exports.createTransferWrappedTokensWithRelayInstruction=Gt;exports.createTransferWrappedWithPayloadInstruction=Ot;exports.createUpgradeContractInstruction=ur;exports.deriveAuthoritySignerKey=Y;exports.deriveCustodyKey=oe;exports.deriveCustodySignerKey=ee;exports.deriveEndpointKey=z;exports.deriveForeignContractAddress=he;exports.deriveMintAuthorityKey=te;exports.deriveRedeemerAccountKey=Ae;exports.deriveRedeemerConfigAddress=bt;exports.deriveRegisteredTokenAddress=pe;exports.deriveSenderAccountKey=Se;exports.deriveSenderConfigAddress=Ye;exports.deriveSplTokenMetadataKey=ue;exports.deriveTmpTokenAccountAddress=Ge;exports.deriveTokenBridgeConfigKey=I;exports.deriveTokenTransferMessageAddress=Ze;exports.deriveWrappedMetaKey=x;exports.deriveWrappedMintKey=G;exports.getAttestTokenAccounts=xe;exports.getCompleteTransferNativeAccounts=It;exports.getCompleteTransferNativeWithPayloadCpiAccounts=lr;exports.getCompleteTransferWrappedAccounts=Rt;exports.getCompleteTransferWrappedWithPayloadCpiAccounts=mr;exports.getCreateWrappedAccounts=Wt;exports.getEndpointRegistration=qn;exports.getInitializeAccounts=Nt;exports.getMetadata=sr;exports.getRegisterChainAccounts=_t;exports.getTokenBridgeConfig=zn;exports.getTokenBridgeDerivedAccounts=dr;exports.getTransferNativeAccounts=Ut;exports.getTransferNativeWithPayloadAccounts=$e;exports.getTransferNativeWithPayloadCpiAccounts=zt;exports.getTransferWrappedAccounts=Ft;exports.getTransferWrappedWithPayloadAccounts=Qe;exports.getTransferWrappedWithPayloadCpiAccounts=qt;exports.getUpgradeContractAccounts=xt;exports.getWrappedMeta=ie;