@wormhole-foundation/wormhole-connect 4.1.0-beta.0-development → 4.2.0-beta.0-development

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (359) hide show
  1. package/README.md +1 -1
  2. package/dist/assets/{aptos-C9pj8h2Q.js → aptos-DgUCX7ng.js} +3 -3
  3. package/dist/assets/{evm-DCydYqBI.js → evm-B6bqAPTR.js} +4 -4
  4. package/dist/assets/{evm-CJXv6IQV.js → evm-Ve5nG8Fs.js} +1 -1
  5. package/dist/assets/{index-LvDsy6wR.js → index-BJokXZAc.js} +1 -1
  6. package/dist/assets/{index-BqxX-Ey7.js → index-BJv9sngo.js} +1 -1
  7. package/dist/assets/{index-C9cy4cDs.js → index-BjZMFLjq.js} +1 -1
  8. package/dist/assets/{index-FJ-n91Op.js → index-BwbPlAQZ.js} +1 -1
  9. package/dist/assets/{index-Clu5I99l.js → index-Bzg4DNh9.js} +1 -1
  10. package/dist/assets/{index-ezhfpCvx.js → index-CKXa657f.js} +1 -1
  11. package/dist/assets/index-CXiuP738.js +1 -0
  12. package/dist/assets/{index-CNExx9Zb.js → index-CvTvoHH-.js} +1 -1
  13. package/dist/assets/{index-C25bHdOM.js → index-D1ULRVbZ.js} +1 -1
  14. package/dist/assets/{index-DpabQJOX.js → index-DlH9IMQl.js} +1 -1
  15. package/dist/assets/{index-C8u74RER.js → index-Dsb-5apv.js} +1 -1
  16. package/dist/assets/{index-D9ApKauA.js → index-_YFUWLUM.js} +1 -1
  17. package/dist/assets/{index-CoIvdDsX.js → index-jg26xdEi.js} +1 -1
  18. package/dist/assets/{provider-jsonrpc-DuMpLBV0.js → provider-jsonrpc-DNgUKjG6.js} +1 -1
  19. package/dist/assets/{solana-DWuIx6gK.js → solana-D4RepnSA.js} +2 -2
  20. package/dist/assets/{sui-BcTGBE_4.js → sui-Du5h-f8S.js} +3 -3
  21. package/dist/main.mjs +185 -140
  22. package/dist/src/components/ConfigurablePageHeader.d.ts +1 -1
  23. package/dist/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  24. package/dist/src/components/Header.d.ts +1 -0
  25. package/dist/src/components/Header.d.ts.map +1 -1
  26. package/dist/src/components/PageHeader.d.ts +1 -3
  27. package/dist/src/components/PageHeader.d.ts.map +1 -1
  28. package/dist/src/components/SampleApp/index.d.ts.map +1 -1
  29. package/dist/src/components/v3/BackButton.d.ts +6 -0
  30. package/dist/src/components/v3/BackButton.d.ts.map +1 -0
  31. package/dist/src/components/v3/FormContent.d.ts +5 -0
  32. package/dist/src/components/v3/FormContent.d.ts.map +1 -0
  33. package/dist/src/config/constants.d.ts.map +1 -1
  34. package/dist/src/config/events.d.ts +2 -1
  35. package/dist/src/config/events.d.ts.map +1 -1
  36. package/dist/src/config/mainnet/chains.d.ts.map +1 -1
  37. package/dist/src/config/mainnet/rpcs.d.ts.map +1 -1
  38. package/dist/src/config/mainnet/tokens.d.ts.map +1 -1
  39. package/dist/src/config/mainnet/wrappedTokens.d.ts +6 -0
  40. package/dist/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  41. package/dist/src/config/testnet/chains.d.ts.map +1 -1
  42. package/dist/src/config/testnet/rpcs.d.ts.map +1 -1
  43. package/dist/src/config/testnet/tokens.d.ts.map +1 -1
  44. package/dist/src/config/types.d.ts +6 -11
  45. package/dist/src/config/types.d.ts.map +1 -1
  46. package/dist/src/config/ui.d.ts +9 -0
  47. package/dist/src/config/ui.d.ts.map +1 -1
  48. package/dist/src/consts/wallet.d.ts.map +1 -1
  49. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  50. package/dist/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  51. package/dist/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  52. package/dist/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  53. package/dist/src/hooks/useTransactionHistory.d.ts.map +1 -1
  54. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  55. package/dist/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  56. package/dist/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  57. package/dist/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  58. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  59. package/dist/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  60. package/dist/src/icons/PoweredBy.d.ts.map +1 -1
  61. package/dist/src/icons/TokenIcons.d.ts.map +1 -1
  62. package/dist/src/icons/Tokens/AUSD.d.ts +4 -0
  63. package/dist/src/icons/Tokens/AUSD.d.ts.map +1 -0
  64. package/dist/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  65. package/dist/src/routes/mayan/utils.d.ts.map +1 -1
  66. package/dist/src/routes/monad/consts.d.ts +1 -0
  67. package/dist/src/routes/monad/consts.d.ts.map +1 -1
  68. package/dist/src/routes/monad/monad.test.d.ts +1 -0
  69. package/dist/src/routes/monad/monad.test.d.ts.map +1 -0
  70. package/dist/src/routes/monad/utils.d.ts.map +1 -1
  71. package/dist/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  72. package/dist/src/sdklegacy/config/TESTNET.d.ts.map +1 -1
  73. package/dist/src/telemetry/types.d.ts +4 -2
  74. package/dist/src/telemetry/types.d.ts.map +1 -1
  75. package/dist/src/theme.d.ts +4 -3
  76. package/dist/src/theme.d.ts.map +1 -1
  77. package/dist/src/utils/errors.d.ts.map +1 -1
  78. package/dist/src/utils/fees.d.ts.map +1 -1
  79. package/dist/src/utils/index.d.ts.map +1 -1
  80. package/dist/src/utils/sdkv2.d.ts.map +1 -1
  81. package/dist/src/utils/wallet/index.d.ts +1 -0
  82. package/dist/src/utils/wallet/index.d.ts.map +1 -1
  83. package/dist/src/views/Terms.d.ts.map +1 -1
  84. package/dist/src/views/TxSearch.d.ts.map +1 -1
  85. package/dist/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  86. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  87. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  88. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  89. package/dist/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  90. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  91. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  92. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  93. package/dist/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  94. package/dist/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  95. package/dist/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  96. package/dist/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  97. package/dist/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  98. package/dist/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  99. package/dist/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  100. package/dist/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  101. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  102. package/dist/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  103. package/dist/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  104. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  105. package/dist/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  106. package/dist/src/views/v3/Bridge/index.d.ts.map +1 -1
  107. package/dist/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  108. package/dist/src/views/v3/Redeem/index.d.ts.map +1 -1
  109. package/dist/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  110. package/dist/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  111. package/lib/{account-cIQhxn1E.js → account-K005OXgL.js} +1 -1
  112. package/lib/{account-BVl6Reot.mjs → account-TXlxMyv4.mjs} +2 -2
  113. package/lib/{address-rVHWlcKQ.mjs → address-CX0E32ut.mjs} +1 -1
  114. package/lib/{address-W9jn6Qdk.js → address-DqbIfKOu.js} +1 -1
  115. package/lib/{aptos-BRApiL_4.mjs → aptos-B1Gf2eCD.mjs} +5 -5
  116. package/lib/{aptos-CNHYHK9c.js → aptos-CnswqE-C.js} +2 -2
  117. package/lib/{aptos-D1WFzBMy.mjs → aptos-DRfXJ8Ba.mjs} +7 -7
  118. package/lib/{aptos-d56Mw8DO.js → aptos-DcdKyekw.js} +1 -1
  119. package/lib/{associatedTokenAccount-C4vEEbG5.js → associatedTokenAccount-CeqdaO2m.js} +1 -1
  120. package/lib/{associatedTokenAccount-DF6phO3l.mjs → associatedTokenAccount-Dsm4Hq32.mjs} +3 -3
  121. package/lib/{basic-BxzNlZH2.js → basic-BS7Z1PMG.js} +1 -1
  122. package/lib/{basic-Bj1RjRlj.js → basic-C6VXQ7m-.js} +1 -1
  123. package/lib/{basic-DR75AlQZ.mjs → basic-CFbslwLM.mjs} +3 -3
  124. package/lib/{basic-DjAbnFVK.mjs → basic-DnhL0oWa.mjs} +3 -3
  125. package/lib/{chunk-KJH4KKG6-Brt4fyqz.mjs → chunk-KJH4KKG6-BfVMUPsB.mjs} +3 -3
  126. package/lib/{chunk-KJH4KKG6-BbF5W1_N.js → chunk-KJH4KKG6-CJx-rDa6.js} +1 -1
  127. package/lib/constants-BCFTvlgh.js +1 -0
  128. package/lib/{constants-PWEvTwIh.mjs → constants-CTJ_-E0d.mjs} +5 -4
  129. package/lib/{core-CkIseV8K.mjs → core-DT6TBPQP.mjs} +6 -6
  130. package/lib/{core-CCO0WKg_.js → core-RRp0K__1.js} +3 -3
  131. package/lib/{create-CChLkbGc.mjs → create-C5dhTMHL.mjs} +1 -1
  132. package/lib/{create-4w0DrcRO.js → create-bA3Gyivs.js} +1 -1
  133. package/lib/{evm-BAU31wxF.js → evm-BwCfQIyJ.js} +2 -2
  134. package/lib/{evm-CMxUV_bG.mjs → evm-BxF9XPn4.mjs} +7 -7
  135. package/lib/{evm-9NnChBii.js → evm-C3B8jHD7.js} +1 -1
  136. package/lib/{evm-2dSclZz6.mjs → evm-DlOCiplA.mjs} +5 -5
  137. package/lib/executor.js +1 -1
  138. package/lib/executor.mjs +13 -15
  139. package/lib/hosted.js +1 -1
  140. package/lib/hosted.mjs +1 -1
  141. package/lib/hypercore-DbqOAqKF.js +4 -0
  142. package/lib/{hypercore-Bmlyd4uI.mjs → hypercore-H7pw_pN4.mjs} +4858 -3107
  143. package/lib/{index-qL4D-cpk.js → index-1T4sIL8n.js} +1 -1
  144. package/lib/{index-Ap7250Gf.mjs → index-39tU5Y5t.mjs} +6 -6
  145. package/lib/{index-D7gCsil9.js → index-6m7yero0.js} +1 -1
  146. package/lib/{index-C5I7QiZ7.mjs → index-B6Ppg6EZ.mjs} +3 -3
  147. package/lib/{index-xvG6cxNx.js → index-BEIFBxtP.js} +1 -1
  148. package/lib/{index-zIzzPp6D.mjs → index-BHpJUZne.mjs} +3 -3
  149. package/lib/{index-CS6YnwIH.js → index-BJ0xVutl.js} +1 -1
  150. package/lib/{index-DUyGY36L.js → index-BNpkgexR.js} +1 -1
  151. package/lib/{index-C61IKE_V.mjs → index-BSIPYyeZ.mjs} +2 -2
  152. package/lib/{index-EbSw7SbC.js → index-BTjUHY0e.js} +1 -1
  153. package/lib/{index-BuHdMHLz.mjs → index-Ba1zbu3Q.mjs} +2 -2
  154. package/lib/{index-CPGWCfWD.js → index-BbE02hdW.js} +8 -8
  155. package/lib/{index-BU35GfG0.mjs → index-Bdtj4LUz.mjs} +2 -2
  156. package/lib/{index-BCKX-m7h.mjs → index-BmP0jPVN.mjs} +12 -11
  157. package/lib/{index-hyk_rzOj.mjs → index-BnKf2rOm.mjs} +3246 -3039
  158. package/lib/{index-Ds7-hb1n.mjs → index-BtU67kjy.mjs} +1 -1
  159. package/lib/{index-Cl9Df47-.mjs → index-BuEKhdrW.mjs} +3 -3
  160. package/lib/{index-CN7M4gwf.mjs → index-BviSNDV7.mjs} +5 -5
  161. package/lib/{index-Cys9e11O.js → index-C-SMuVS3.js} +1 -1
  162. package/lib/{index-Cg1Xo1eZ.js → index-C85u3Gj5.js} +1 -1
  163. package/lib/{index-arjwwpj2.mjs → index-CGqJokTg.mjs} +1 -1
  164. package/lib/{index-Da9rvmCc.js → index-Cb0UWLGI.js} +1 -1
  165. package/lib/{index-DHnmtpvA.mjs → index-CcbY14s5.mjs} +4 -4
  166. package/lib/{index-BKgliEPZ.mjs → index-CrWTw0Se.mjs} +2 -2
  167. package/lib/{index-B16yfCYF.mjs → index-CsLyPoC6.mjs} +4 -4
  168. package/lib/{index-B_JJ50Y-.mjs → index-D-HUNEka.mjs} +4 -4
  169. package/lib/index-DAJZN12d.js +1 -0
  170. package/lib/{index-BhMcIAHt.js → index-DJ2w1fz1.js} +1 -1
  171. package/lib/{index-C5j1HoFr.js → index-DVm_f5E1.js} +1 -1
  172. package/lib/{index-CO4ZoIAU.mjs → index-DjmVBSGQ.mjs} +4 -4
  173. package/lib/{index-Co3mm7UN.mjs → index-DrJE8udd.mjs} +1 -1
  174. package/lib/{index-fTUcaKb4.js → index-DuhYwr0t.js} +1 -1
  175. package/lib/{index-BQ0lWQfT.mjs → index-DwEx1Hn-.mjs} +2 -2
  176. package/lib/{index-DBofyYkS.js → index-DziujHu1.js} +1 -1
  177. package/lib/{index-Dou5sFku.js → index-JWbF-m3e.js} +1 -1
  178. package/lib/{index-_IZO0QRl.mjs → index-NAUBlFLG.mjs} +4 -4
  179. package/lib/{index-D1odbjeH.mjs → index-VnJcNK62.mjs} +3 -3
  180. package/lib/{index-DVxmRy4C.js → index-WrXSs0ic.js} +1 -1
  181. package/lib/{index-CsdD1TNi.js → index-aMKUba1k.js} +1 -1
  182. package/lib/{index-BXsTZ9x_.mjs → index-dufPAW5T.mjs} +298 -267
  183. package/lib/{index-lZY5fTXF.js → index-lAqXlt-a.js} +1 -1
  184. package/lib/{index-cRi8si5A.js → index-mikg85u5.js} +1 -1
  185. package/lib/{index-BScgBddV.mjs → index-o1SAPXm_.mjs} +3 -3
  186. package/lib/{index-CZHdN9pg.js → index-pn6NZmOS.js} +1 -1
  187. package/lib/{index-DNZ-Pkpm.mjs → index-rxQSA9t0.mjs} +6 -6
  188. package/lib/{index-CHvWl09c.js → index-t_koRpGi.js} +1 -1
  189. package/lib/{index-DALvn9lg.js → index-v7w8krM0.js} +1 -1
  190. package/lib/{index-japympio.js → index-wadjmD_G.js} +1 -1
  191. package/lib/{index.es-BC9c-IV7.mjs → index.es-3KAM8l3G.mjs} +4 -4
  192. package/lib/{index.es-DxdcaWwJ.js → index.es-B3FwsRfN.js} +3 -3
  193. package/lib/{index.es-ByyzusUN.mjs → index.es-CYyuSfPG.mjs} +4 -4
  194. package/lib/{index.es-BmZ1Eaml.js → index.es-ClIr5Gv-.js} +1 -1
  195. package/lib/index.js +78 -33
  196. package/lib/index.mjs +9157 -8833
  197. package/lib/{keypair-DWucLGoA.js → keypair-DCgXFOw5.js} +1 -1
  198. package/lib/{keypair-CP7syX9B.mjs → keypair-vpG2fl-q.mjs} +3 -3
  199. package/lib/lifi.js +1 -1
  200. package/lib/lifi.mjs +75 -76
  201. package/lib/mayan.js +2 -2
  202. package/lib/mayan.mjs +11 -10
  203. package/lib/{mint-CoNdQTGM.mjs → mint-BPrKG-Zc.mjs} +3 -3
  204. package/lib/{mint-CxQ6P5lT.js → mint-DW-XgF68.js} +1 -1
  205. package/lib/monad.js +1 -1
  206. package/lib/monad.mjs +91 -58
  207. package/lib/multiToken-B9BoSxdr.js +1 -0
  208. package/lib/{multiToken-Bm-K5dRJ.mjs → multiToken-DMllgxzT.mjs} +4 -3
  209. package/lib/ntt.js +2 -2
  210. package/lib/ntt.mjs +77 -86
  211. package/lib/{platform-Cil_UtAQ.mjs → platform-CSpAb386.mjs} +2788 -2748
  212. package/lib/{platform-BMKYxqvv.js → platform-Csj1Outc.js} +1 -1
  213. package/lib/platform-DCcL7jHP.js +11 -0
  214. package/lib/{platform-vRQufc6j.mjs → platform-YzJZdSCf.mjs} +3 -3
  215. package/lib/{secp256k1-D24BZJAq.js → secp256k1-B2G0zB-5.js} +1 -1
  216. package/lib/{secp256k1-CXRI4XfW.mjs → secp256k1-BZFiBDHQ.mjs} +1 -1
  217. package/lib/{secp256k1-r0ke-jeG.js → secp256k1-Bz-QjKBU.js} +1 -1
  218. package/lib/{secp256k1-rufcCDcw.mjs → secp256k1-Cteng3v9.mjs} +1 -1
  219. package/lib/{secp256k1-BLiUzGcX.js → secp256k1-CxjctkO3.js} +1 -1
  220. package/lib/{secp256k1-ZQ8UIhmk.mjs → secp256k1-D3i7kc2M.mjs} +1 -1
  221. package/lib/{signer-0hWrZ5BZ.mjs → signer-D2GRgRrw.mjs} +2 -2
  222. package/lib/{signer-DyqulDUM.js → signer-gjSiV5v3.js} +1 -1
  223. package/lib/{solana-CXtk3UX1.js → solana-BE2DAanS.js} +4 -4
  224. package/lib/{solana-lhrSUH_P.mjs → solana-Df231Yni.mjs} +10 -10
  225. package/lib/solana-DfW5T_64.mjs +18 -0
  226. package/lib/solana-Edd9tIkX.js +1 -0
  227. package/lib/{solanaEmbed.esm-CFu0h50b.mjs → solanaEmbed.esm-B9WG-Afi.mjs} +4 -4
  228. package/lib/{solanaEmbed.esm-BMynjubZ.js → solanaEmbed.esm-BqcrHrhl.js} +1 -1
  229. package/lib/{solidity-CbDkqHjE.js → solidity-BW7c8rFv.js} +1 -1
  230. package/lib/{solidity-Dk_mvceo.mjs → solidity-D9gSgFcp.mjs} +1 -1
  231. package/lib/src/components/ConfigurablePageHeader.d.ts +1 -1
  232. package/lib/src/components/ConfigurablePageHeader.d.ts.map +1 -1
  233. package/lib/src/components/Header.d.ts +1 -0
  234. package/lib/src/components/Header.d.ts.map +1 -1
  235. package/lib/src/components/PageHeader.d.ts +1 -3
  236. package/lib/src/components/PageHeader.d.ts.map +1 -1
  237. package/lib/src/components/SampleApp/index.d.ts.map +1 -1
  238. package/lib/src/components/v3/BackButton.d.ts +6 -0
  239. package/lib/src/components/v3/BackButton.d.ts.map +1 -0
  240. package/lib/src/components/v3/FormContent.d.ts +5 -0
  241. package/lib/src/components/v3/FormContent.d.ts.map +1 -0
  242. package/lib/src/config/constants.d.ts.map +1 -1
  243. package/lib/src/config/events.d.ts +2 -1
  244. package/lib/src/config/events.d.ts.map +1 -1
  245. package/lib/src/config/mainnet/chains.d.ts.map +1 -1
  246. package/lib/src/config/mainnet/rpcs.d.ts.map +1 -1
  247. package/lib/src/config/mainnet/tokens.d.ts.map +1 -1
  248. package/lib/src/config/mainnet/wrappedTokens.d.ts +6 -0
  249. package/lib/src/config/mainnet/wrappedTokens.d.ts.map +1 -1
  250. package/lib/src/config/testnet/chains.d.ts.map +1 -1
  251. package/lib/src/config/testnet/rpcs.d.ts.map +1 -1
  252. package/lib/src/config/testnet/tokens.d.ts.map +1 -1
  253. package/lib/src/config/types.d.ts +6 -11
  254. package/lib/src/config/types.d.ts.map +1 -1
  255. package/lib/src/config/ui.d.ts +9 -0
  256. package/lib/src/config/ui.d.ts.map +1 -1
  257. package/lib/src/consts/wallet.d.ts.map +1 -1
  258. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts +3 -1
  259. package/lib/src/hooks/useAutoEnableGasDropoff.d.ts.map +1 -1
  260. package/lib/src/hooks/useConnectToLastUsedWallet.d.ts.map +1 -1
  261. package/lib/src/hooks/useSortedRoutesWithQuotes.d.ts.map +1 -1
  262. package/lib/src/hooks/useTransactionHistory.d.ts.map +1 -1
  263. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts +2 -0
  264. package/lib/src/hooks/useTransactionHistoryLiFi.d.ts.map +1 -1
  265. package/lib/src/hooks/useTransactionHistoryMayan.d.ts +2 -0
  266. package/lib/src/hooks/useTransactionHistoryMayan.d.ts.map +1 -1
  267. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts +2 -1
  268. package/lib/src/hooks/useTransactionHistoryWHScan.d.ts.map +1 -1
  269. package/lib/src/icons/PoweredBy.d.ts.map +1 -1
  270. package/lib/src/icons/TokenIcons.d.ts.map +1 -1
  271. package/lib/src/icons/Tokens/AUSD.d.ts +4 -0
  272. package/lib/src/icons/Tokens/AUSD.d.ts.map +1 -0
  273. package/lib/src/routes/lifi/LiFiRoute.d.ts.map +1 -1
  274. package/lib/src/routes/mayan/utils.d.ts.map +1 -1
  275. package/lib/src/routes/monad/consts.d.ts +1 -0
  276. package/lib/src/routes/monad/consts.d.ts.map +1 -1
  277. package/lib/src/routes/monad/monad.test.d.ts +1 -0
  278. package/lib/src/routes/monad/monad.test.d.ts.map +1 -0
  279. package/lib/src/routes/monad/utils.d.ts.map +1 -1
  280. package/lib/src/sdklegacy/config/MAINNET.d.ts.map +1 -1
  281. package/lib/src/sdklegacy/config/TESTNET.d.ts.map +1 -1
  282. package/lib/src/telemetry/types.d.ts +4 -2
  283. package/lib/src/telemetry/types.d.ts.map +1 -1
  284. package/lib/src/theme.d.ts +4 -3
  285. package/lib/src/theme.d.ts.map +1 -1
  286. package/lib/src/utils/errors.d.ts.map +1 -1
  287. package/lib/src/utils/fees.d.ts.map +1 -1
  288. package/lib/src/utils/index.d.ts.map +1 -1
  289. package/lib/src/utils/sdkv2.d.ts.map +1 -1
  290. package/lib/src/utils/wallet/index.d.ts +1 -0
  291. package/lib/src/utils/wallet/index.d.ts.map +1 -1
  292. package/lib/src/views/Terms.d.ts.map +1 -1
  293. package/lib/src/views/TxSearch.d.ts.map +1 -1
  294. package/lib/src/views/v3/Bridge/AssetPicker/PickerModal.d.ts.map +1 -1
  295. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts +17 -0
  296. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButton.d.ts.map +1 -0
  297. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts +8 -0
  298. package/lib/src/views/v3/Bridge/AssetPicker/TokenPickerButtonContent.d.ts.map +1 -0
  299. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts +2 -0
  300. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButton.test.d.ts.map +1 -0
  301. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts +2 -0
  302. package/lib/src/views/v3/Bridge/AssetPicker/__tests__/TokenPickerButtonContent.test.d.ts.map +1 -0
  303. package/lib/src/views/v3/Bridge/AssetPicker/index.d.ts.map +1 -1
  304. package/lib/src/views/v3/Bridge/GasSlider/index.d.ts.map +1 -1
  305. package/lib/src/views/v3/Bridge/Routes/SingleRoute.d.ts.map +1 -1
  306. package/lib/src/views/v3/Bridge/Routes/index.d.ts +2 -1
  307. package/lib/src/views/v3/Bridge/Routes/index.d.ts.map +1 -1
  308. package/lib/src/views/v3/Bridge/WalletConnector/Controller.d.ts.map +1 -1
  309. package/lib/src/views/v3/Bridge/WalletConnector/ExplorerLink.d.ts.map +1 -1
  310. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts +9 -0
  311. package/lib/src/views/v3/Bridge/WalletConnector/WalletAddress.d.ts.map +1 -0
  312. package/lib/src/views/v3/Bridge/WalletConnector/WalletPickerContent.d.ts.map +1 -1
  313. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts +2 -0
  314. package/lib/src/views/v3/Bridge/WalletConnector/__tests__/WalletAddress.test.d.ts.map +1 -0
  315. package/lib/src/views/v3/Bridge/index.d.ts.map +1 -1
  316. package/lib/src/views/v3/Redeem/TransactionDetails/index.d.ts.map +1 -1
  317. package/lib/src/views/v3/Redeem/index.d.ts.map +1 -1
  318. package/lib/src/views/v3/TxHistory/Item/index.d.ts.map +1 -1
  319. package/lib/src/views/v3/TxHistory/Widget/Item.d.ts.map +1 -1
  320. package/lib/{sui-CZNJPZ5q.mjs → sui-B9tYcgyb.mjs} +4 -4
  321. package/lib/{sui-CBxh7zmc.js → sui-BVwNcgQT.js} +1 -1
  322. package/lib/{sui-LiXjD27c.js → sui-BtyZE8YC.js} +1 -1
  323. package/lib/{sui-cpCvd7RC.mjs → sui-QP4AZGNc.mjs} +6 -6
  324. package/lib/{tokenHelpers-DT6mPtNP.mjs → tokenHelpers-C53sepsl.mjs} +1 -1
  325. package/lib/{tokenHelpers-DZRdlDO-.js → tokenHelpers-DITWDel1.js} +1 -1
  326. package/lib/{tokens-FIs8YBYj.mjs → tokens-CO0YQ3R2.mjs} +3 -3
  327. package/lib/{tokens--uOMY2-j.js → tokens-CiSHS7oi.js} +1 -1
  328. package/lib/types-CgveSjsw.js +1 -0
  329. package/lib/{types-iFgwQ7vG.mjs → types-Dxx2g1wS.mjs} +170 -168
  330. package/lib/{unsignedTransaction-DCDxTFq8.mjs → unsignedTransaction-D2Ja0SuN.mjs} +2 -2
  331. package/lib/{unsignedTransaction-DA4tlY5u.js → unsignedTransaction-qRBv5Cnd.js} +2 -2
  332. package/lib/{utils-DMf7wRGI.js → utils-BEljbqMf.js} +1 -1
  333. package/lib/{utils-BSxsyW2c.mjs → utils-mBHX3Jpu.mjs} +4 -4
  334. package/lib/{w3m-modal-CBYJj-sR.mjs → w3m-modal-5v-rsnN8.mjs} +2 -2
  335. package/lib/{w3m-modal-B3FfPDki.js → w3m-modal-B0Lu-6W8.js} +1 -1
  336. package/lib/{w3m-modal-B5PtkowQ.js → w3m-modal-B2xHxAWg.js} +1 -1
  337. package/lib/{w3m-modal-h85Jyy9l.mjs → w3m-modal-SlcSCSnx.mjs} +2 -2
  338. package/lib/{wallet-CMTEE6Oa.mjs → wallet-Cyosy4Hc.mjs} +1 -1
  339. package/lib/{wallet-BMli0fbu.js → wallet-a0_jwP8j.js} +1 -1
  340. package/lib/{web3-CUwFm9Lx.mjs → web3-CdErAVj5.mjs} +2 -2
  341. package/lib/{web3-DdUeM7iQ.js → web3-x1WCGDiy.js} +1 -1
  342. package/package.json +49 -47
  343. package/dist/assets/index-_UMHESh0.js +0 -1
  344. package/dist/src/components/Button.d.ts +0 -13
  345. package/dist/src/components/Button.d.ts.map +0 -1
  346. package/dist/src/icons/Down.d.ts +0 -5
  347. package/dist/src/icons/Down.d.ts.map +0 -1
  348. package/lib/constants-Bkyn6tLV.js +0 -1
  349. package/lib/hypercore-DJV-pPts.js +0 -4
  350. package/lib/index-BYuhx88C.js +0 -1
  351. package/lib/multiToken-YoNvxjur.js +0 -1
  352. package/lib/platform-CCG_jgOO.js +0 -11
  353. package/lib/solana-DKFJvqX8.mjs +0 -18
  354. package/lib/solana-Dmje_Si8.js +0 -1
  355. package/lib/src/components/Button.d.ts +0 -13
  356. package/lib/src/components/Button.d.ts.map +0 -1
  357. package/lib/src/icons/Down.d.ts +0 -5
  358. package/lib/src/icons/Down.d.ts.map +0 -1
  359. package/lib/types-CjNs2oB0.js +0 -1
package/lib/mayan.mjs CHANGED
@@ -1,10 +1,10 @@
1
- import { p as parseUnits, o, a as addresses_default$1, i as isHyperCoreChain, v as validateHyperCoreTransfer, b as generateFetchQuoteUrl$1, m as maybeGetHyperCorePermitSignature, c as createSwapFromSolanaInstructions$1, d as createSwapFromSuiMoveCalls$1, e as getSwapFromEvmTxPayload$1 } from "./hypercore-Bmlyd4uI.mjs";
2
- import { L as LayoutExports, T as TransactionInstruction, c as commonjsGlobal, S as SystemProgram, P as PublicKey, C as Connection, a as ComputeBudgetProgram, K as Keypair, b as SYSVAR_CLOCK_PUBKEY, d as SYSVAR_RENT_PUBKEY, e as Transaction, A as AddressLookupTableAccount, f as SUI_TYPE_ARG, h as SUI_CLOCK_OBJECT_ID, j as SolanaPlatform, k as SuiPlatform, M as MessageV0, l as SolanaUnsignedTransaction, V as VersionedTransaction, m as SuiUnsignedTransaction } from "./unsignedTransaction-DCDxTFq8.mjs";
3
- import { C as Buffer, p as process$1, D as Buffer$1, Z as ZeroAddress, E as Contract, F as toBeHex, G as zeroPadValue, H as keccak256, I as Interface, J as axios, K as deserialize, m as hex, e as TransferState, L as toChain, M as AutomaticRoute, W as Wormhole, N as canonicalAddress, i as isNative, a as parse, O as getDeciBps, u as units, f as fromBaseUnits, k as denoise, U as UnavailableError, b as usdcContract, P as MinAmountError, Q as isSignAndSendSigner, S as isSignOnlySigner, l as networkChainToNativeChainId, V as EvmPlatform, X as EvmUnsignedTransaction, q as isCompleted, Y as isRedeemed, x as isRefunded, _ as isSourceInitiated, $ as isSourceFinalized, v as isAttested, d as chainToPlatform } from "./platform-Cil_UtAQ.mjs";
4
- import { g as getAllTokenIdsForChain } from "./tokenHelpers-DT6mPtNP.mjs";
5
- import { a as addSigners, T as TokenInstruction, c as createAssociatedTokenAccountIdempotentInstruction } from "./associatedTokenAccount-DF6phO3l.mjs";
6
- import { T as TOKEN_PROGRAM_ID, b as getAssociatedTokenAddressSync } from "./mint-CoNdQTGM.mjs";
7
- import { u as u64 } from "./web3-CUwFm9Lx.mjs";
1
+ import { p as parseUnits, o, a as addresses_default$1, i as isHyperCoreChain, v as validateHyperCoreTransfer, b as generateFetchQuoteUrl$1, m as maybeGetHyperCorePermitSignature, c as createSwapFromSolanaInstructions$1, d as createSwapFromSuiMoveCalls$1, e as getSwapFromEvmTxPayload$1 } from "./hypercore-H7pw_pN4.mjs";
2
+ import { L as LayoutExports, T as TransactionInstruction, c as commonjsGlobal, S as SystemProgram, P as PublicKey, C as Connection, a as ComputeBudgetProgram, K as Keypair, b as SYSVAR_CLOCK_PUBKEY, d as SYSVAR_RENT_PUBKEY, e as Transaction, A as AddressLookupTableAccount, f as SUI_TYPE_ARG, h as SUI_CLOCK_OBJECT_ID, j as SolanaPlatform, k as SuiPlatform, M as MessageV0, l as SolanaUnsignedTransaction, V as VersionedTransaction, m as SuiUnsignedTransaction } from "./unsignedTransaction-D2Ja0SuN.mjs";
3
+ import { C as Buffer, p as process$1, D as Buffer$1, Z as ZeroAddress, E as Contract, F as toBeHex, G as zeroPadValue, H as keccak256, I as Interface, J as axios, K as deserialize, m as hex, e as TransferState, L as toChain, M as AutomaticRoute, W as Wormhole, N as canonicalAddress, i as isNative, a as parse, O as getDeciBps, u as units, f as fromBaseUnits, k as denoise, U as UnavailableError, b as usdcContract, P as MinAmountError, Q as isSignAndSendSigner, S as isSignOnlySigner, l as networkChainToNativeChainId, V as EvmPlatform, X as EvmUnsignedTransaction, q as isCompleted, Y as isRedeemed, x as isRefunded, _ as isSourceInitiated, $ as isSourceFinalized, v as isAttested, d as chainToPlatform } from "./platform-CSpAb386.mjs";
4
+ import { g as getAllTokenIdsForChain } from "./tokenHelpers-C53sepsl.mjs";
5
+ import { a as addSigners, T as TokenInstruction, c as createAssociatedTokenAccountIdempotentInstruction } from "./associatedTokenAccount-Dsm4Hq32.mjs";
6
+ import { T as TOKEN_PROGRAM_ID, b as getAssociatedTokenAddressSync } from "./mint-BPrKG-Zc.mjs";
7
+ import { u as u64 } from "./web3-CdErAVj5.mjs";
8
8
  const transferCheckedInstructionData = LayoutExports.struct([
9
9
  LayoutExports.u8("instruction"),
10
10
  u64("amount"),
@@ -7937,7 +7937,8 @@ const chainNameMap = {
7937
7937
  Sui: "sui",
7938
7938
  HyperEVM: "hyperevm",
7939
7939
  HyperCore: "hypercore",
7940
- Linea: "linea"
7940
+ Linea: "linea",
7941
+ Monad: "monad"
7941
7942
  }, testnetSupportedChainMap = {
7942
7943
  Solana: "solana",
7943
7944
  Sepolia: "ethereum",
@@ -8538,7 +8539,7 @@ class MayanRouteBase extends AutomaticRoute {
8538
8539
  Number(m),
8539
8540
  void 0,
8540
8541
  void 0
8541
- ) : getSwapFromEvmTxPayload$1(
8542
+ ) : await getSwapFromEvmTxPayload$1(
8542
8543
  h,
8543
8544
  i,
8544
8545
  p,
@@ -8615,7 +8616,7 @@ class MayanRouteBase extends AutomaticRoute {
8615
8616
  return t;
8616
8617
  } else
8617
8618
  throw new Error("Transfer must have been initiated");
8618
- await new Promise((i) => setTimeout(i, 1e3)), n -= Date.now() - u;
8619
+ await new Promise((i) => setTimeout(i, 3e3)), n -= Date.now() - u;
8619
8620
  }
8620
8621
  return t;
8621
8622
  }
@@ -1,6 +1,6 @@
1
- import { C as w } from "./platform-Cil_UtAQ.mjs";
2
- import { P as a, L as s } from "./unsignedTransaction-DCDxTFq8.mjs";
3
- import { b as T, p as r, u as f } from "./web3-CUwFm9Lx.mjs";
1
+ import { C as w } from "./platform-CSpAb386.mjs";
2
+ import { P as a, L as s } from "./unsignedTransaction-D2Ja0SuN.mjs";
3
+ import { b as T, p as r, u as f } from "./web3-CdErAVj5.mjs";
4
4
  const d = new a("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"), F = new a("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"), p = new a("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"), S = new a("So11111111111111111111111111111111111111112");
5
5
  new a("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");
6
6
  class u extends Error {
@@ -1 +1 @@
1
- "use strict";const T=require("./platform-CCG_jgOO.js"),r=require("./unsignedTransaction-DA4tlY5u.js"),o=require("./web3-DdUeM7iQ.js"),c=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),b=new r.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),f=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),O=new r.PublicKey("So11111111111111111111111111111111111111112");new r.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class u extends Error{constructor(e){super(e)}}class g extends u{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}}class K extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}}class E extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}}class l extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}}class N extends u{constructor(){super(...arguments),this.name="TokenInvalidMintError"}}class h extends u{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}class v extends u{constructor(){super(...arguments),this.name="TokenTransferHookAccountNotFound"}}class x extends u{constructor(){super(...arguments),this.name="TokenTransferHookInvalidSeed"}}class z extends u{constructor(){super(...arguments),this.name="TokenTransferHookAccountDataNotFound"}}var d;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Mint=1]="Mint",t[t.Account=2]="Account"})(d||(d={}));const w=1,P=r.LayoutExports.struct([r.LayoutExports.u8("m"),r.LayoutExports.u8("n"),o.bool("isInitialized"),o.publicKey("signer1"),o.publicKey("signer2"),o.publicKey("signer3"),o.publicKey("signer4"),o.publicKey("signer5"),o.publicKey("signer6"),o.publicKey("signer7"),o.publicKey("signer8"),o.publicKey("signer9"),o.publicKey("signer10"),o.publicKey("signer11")]),k=P.span;var A;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initialized=1]="Initialized",t[t.Frozen=2]="Frozen"})(A||(A={}));const m=r.LayoutExports.struct([o.publicKey("mint"),o.publicKey("owner"),o.u64("amount"),r.LayoutExports.u32("delegateOption"),o.publicKey("delegate"),r.LayoutExports.u8("state"),r.LayoutExports.u32("isNativeOption"),o.u64("isNative"),o.u64("delegatedAmount"),r.LayoutExports.u32("closeAuthorityOption"),o.publicKey("closeAuthority")]),a=m.span;async function _(t,e,s,n=c){const i=await t.getAccountInfo(e,s);return M(e,i,n)}function M(t,e,s=c){if(!e)throw new g;if(!e.owner.equals(s))throw new E;if(e.data.length<a)throw new l;const n=m.decode(e.data.slice(0,a));let i=T.Buffer.alloc(0);if(e.data.length>a){if(e.data.length===k)throw new l;if(e.data[a]!=d.Account)throw new K;i=e.data.slice(a+w)}return{address:t,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==A.Uninitialized,isFrozen:n.state===A.Frozen,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:i}}const I=r.LayoutExports.struct([r.LayoutExports.u32("mintAuthorityOption"),o.publicKey("mintAuthority"),o.u64("supply"),r.LayoutExports.u8("decimals"),o.bool("isInitialized"),r.LayoutExports.u32("freezeAuthorityOption"),o.publicKey("freezeAuthority")]),p=I.span;async function L(t,e,s,n=c){const i=await t.getAccountInfo(e,s);return S(e,i,n)}function S(t,e,s=c){if(!e)throw new g;if(!e.owner.equals(s))throw new E;if(e.data.length<p)throw new l;const n=I.decode(e.data.slice(0,p));let i=T.Buffer.alloc(0);if(e.data.length>p){if(e.data.length<=a)throw new l;if(e.data.length===k)throw new l;if(e.data[a]!=d.Mint)throw new N;i=e.data.slice(a+w)}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:i}}async function D(t,e,s=!1,n=c,i=f){if(!s&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new h;const[y]=await r.PublicKey.findProgramAddress([e.toBuffer(),n.toBuffer(),t.toBuffer()],i);return y}function B(t,e,s=!1,n=c,i=f){if(!s&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new h;const[y]=r.PublicKey.findProgramAddressSync([e.toBuffer(),n.toBuffer(),t.toBuffer()],i);return y}exports.ASSOCIATED_TOKEN_PROGRAM_ID=f;exports.NATIVE_MINT=O;exports.TOKEN_2022_PROGRAM_ID=b;exports.TOKEN_PROGRAM_ID=c;exports.TokenTransferHookAccountDataNotFound=z;exports.TokenTransferHookAccountNotFound=v;exports.TokenTransferHookInvalidSeed=x;exports.getAccount=_;exports.getAssociatedTokenAddress=D;exports.getAssociatedTokenAddressSync=B;exports.getMint=L;
1
+ "use strict";const T=require("./platform-DCcL7jHP.js"),r=require("./unsignedTransaction-qRBv5Cnd.js"),o=require("./web3-x1WCGDiy.js"),c=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),b=new r.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),f=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),O=new r.PublicKey("So11111111111111111111111111111111111111112");new r.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP");class u extends Error{constructor(e){super(e)}}class g extends u{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}}class K extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}}class E extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}}class l extends u{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}}class N extends u{constructor(){super(...arguments),this.name="TokenInvalidMintError"}}class h extends u{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}}class v extends u{constructor(){super(...arguments),this.name="TokenTransferHookAccountNotFound"}}class x extends u{constructor(){super(...arguments),this.name="TokenTransferHookInvalidSeed"}}class z extends u{constructor(){super(...arguments),this.name="TokenTransferHookAccountDataNotFound"}}var d;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Mint=1]="Mint",t[t.Account=2]="Account"})(d||(d={}));const w=1,P=r.LayoutExports.struct([r.LayoutExports.u8("m"),r.LayoutExports.u8("n"),o.bool("isInitialized"),o.publicKey("signer1"),o.publicKey("signer2"),o.publicKey("signer3"),o.publicKey("signer4"),o.publicKey("signer5"),o.publicKey("signer6"),o.publicKey("signer7"),o.publicKey("signer8"),o.publicKey("signer9"),o.publicKey("signer10"),o.publicKey("signer11")]),k=P.span;var A;(function(t){t[t.Uninitialized=0]="Uninitialized",t[t.Initialized=1]="Initialized",t[t.Frozen=2]="Frozen"})(A||(A={}));const m=r.LayoutExports.struct([o.publicKey("mint"),o.publicKey("owner"),o.u64("amount"),r.LayoutExports.u32("delegateOption"),o.publicKey("delegate"),r.LayoutExports.u8("state"),r.LayoutExports.u32("isNativeOption"),o.u64("isNative"),o.u64("delegatedAmount"),r.LayoutExports.u32("closeAuthorityOption"),o.publicKey("closeAuthority")]),a=m.span;async function _(t,e,s,n=c){const i=await t.getAccountInfo(e,s);return M(e,i,n)}function M(t,e,s=c){if(!e)throw new g;if(!e.owner.equals(s))throw new E;if(e.data.length<a)throw new l;const n=m.decode(e.data.slice(0,a));let i=T.Buffer.alloc(0);if(e.data.length>a){if(e.data.length===k)throw new l;if(e.data[a]!=d.Account)throw new K;i=e.data.slice(a+w)}return{address:t,mint:n.mint,owner:n.owner,amount:n.amount,delegate:n.delegateOption?n.delegate:null,delegatedAmount:n.delegatedAmount,isInitialized:n.state!==A.Uninitialized,isFrozen:n.state===A.Frozen,isNative:!!n.isNativeOption,rentExemptReserve:n.isNativeOption?n.isNative:null,closeAuthority:n.closeAuthorityOption?n.closeAuthority:null,tlvData:i}}const I=r.LayoutExports.struct([r.LayoutExports.u32("mintAuthorityOption"),o.publicKey("mintAuthority"),o.u64("supply"),r.LayoutExports.u8("decimals"),o.bool("isInitialized"),r.LayoutExports.u32("freezeAuthorityOption"),o.publicKey("freezeAuthority")]),p=I.span;async function L(t,e,s,n=c){const i=await t.getAccountInfo(e,s);return S(e,i,n)}function S(t,e,s=c){if(!e)throw new g;if(!e.owner.equals(s))throw new E;if(e.data.length<p)throw new l;const n=I.decode(e.data.slice(0,p));let i=T.Buffer.alloc(0);if(e.data.length>p){if(e.data.length<=a)throw new l;if(e.data.length===k)throw new l;if(e.data[a]!=d.Mint)throw new N;i=e.data.slice(a+w)}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:i}}async function D(t,e,s=!1,n=c,i=f){if(!s&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new h;const[y]=await r.PublicKey.findProgramAddress([e.toBuffer(),n.toBuffer(),t.toBuffer()],i);return y}function B(t,e,s=!1,n=c,i=f){if(!s&&!r.PublicKey.isOnCurve(e.toBuffer()))throw new h;const[y]=r.PublicKey.findProgramAddressSync([e.toBuffer(),n.toBuffer(),t.toBuffer()],i);return y}exports.ASSOCIATED_TOKEN_PROGRAM_ID=f;exports.NATIVE_MINT=O;exports.TOKEN_2022_PROGRAM_ID=b;exports.TOKEN_PROGRAM_ID=c;exports.TokenTransferHookAccountDataNotFound=z;exports.TokenTransferHookAccountNotFound=v;exports.TokenTransferHookInvalidSeed=x;exports.getAccount=_;exports.getAssociatedTokenAddress=D;exports.getAssociatedTokenAddressSync=B;exports.getMint=L;
package/lib/monad.js CHANGED
@@ -1 +1 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./types-CjNs2oB0.js"),e=require("./platform-CCG_jgOO.js"),k=require("./multiToken-YoNvxjur.js");require("./index-CS6YnwIH.js");class f extends e.FinalizableRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;static IS_AUTOMATIC=!1;staticConfig=this.constructor.config;static config={contracts:[]};static meta={name:"MultiTokenNttManualRoute"};static supportedNetworks(){return i.MultiTokenNttRoute.resolveSupportedNetworks(this.config.contracts)}static supportedChains(t){return i.MultiTokenNttRoute.resolveSupportedChains(this.config.contracts,t)}static async supportedDestinationTokens(t,n,o){return[await i.MultiTokenNttRoute.getDestinationTokenId(t,n,o,this.config.contracts)]}static isProtocolSupported(t){return t.supportsProtocol("MultiTokenNtt")}getDefaultOptions(){return{}}async isWrappedToken(t){return await i.MultiTokenNttRoute.isWrappedToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async getOriginalToken(t){return await i.MultiTokenNttRoute.getOriginalToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async validate(t,n){if(t.fromChain.chain===t.toChain.chain)return{valid:!1,error:new Error("Source and destination chains must differ"),params:n};const o=n.options??this.getDefaultOptions(),a=e.parse(n.amount,t.source.decimals),s=i.NttRoute.trimAmount(a,t.destination.decimals),r=i.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.fromChain.chain),u=i.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.toChain.chain),d=await t.fromChain.getProtocol("MultiTokenNtt",{multiTokenNtt:r}),l=e.isNative(t.source.id.address)?await d.getWrappedNativeToken():t.source.id,m=await d.getOriginalToken(l),g=await d.getSendTransceivers(t.toChain.chain),h=await this.estimateGasLimit(t,m);return{valid:!0,params:{amount:n.amount,normalizedParams:{amount:s,sourceContracts:r,destinationContracts:u,sourceTokenId:t.source.id,destinationTokenId:t.destination.id,originalTokenId:m,sendTransceivers:g,gasLimit:h},options:o}}}async estimateGasLimit(t,n){return i.MultiTokenNttRoute.estimateGasLimit(t,n,this.staticConfig.contracts,this.staticConfig.perTokenOverrides)}async quote(t,n){const o=e.scale(n.normalizedParams.amount,t.destination.decimals),a={success:!0,params:n,sourceToken:{token:t.source.id,amount:n.normalizedParams.amount},destinationToken:{token:t.destination.id,amount:o},eta:e.estimateFinalityTime(t.fromChain.chain)+e.guardianAttestationEta*1e3},{fromChain:s,toChain:r}=t,u=await r.getProtocol("MultiTokenNtt",{multiTokenNtt:n.normalizedParams.destinationContracts}),d=await u.getRateLimitDuration(),l=await i.MultiTokenNttRoute.checkRateLimit(u,s.chain,n.normalizedParams.originalTokenId,o,d);return l&&(a.warnings=l),a}async initiate(t,n,o,a){const{params:s}=o,{fromChain:r}=t,u=e.Wormhole.parseAddress(n.chain(),n.address()),l=(await r.getProtocol("MultiTokenNtt",{multiTokenNtt:s.normalizedParams.sourceContracts})).transfer(u,s.normalizedParams.sourceTokenId.address,e.units(s.normalizedParams.amount),a,s.normalizedParams.gasLimit,this.staticConfig.axelarGasMultiplier),m=await e.signSendWait(r,l,n);return{from:r.chain,to:a.chain,state:e.TransferState.SourceInitiated,originTxs:m,params:s,trackingInfo:{transceiverAttested:{}}}}async complete(t,n){return await i.MultiTokenNttRoute.complete(t,this.wh.getChain(n.to),n)}async resume(t){return await i.MultiTokenNttRoute.resume(t,this.wh,this.staticConfig.contracts)}async finalize(t,n){return await i.MultiTokenNttRoute.finalize(t,this.wh.getChain(n.to),n)}async*track(t,n){return yield*i.MultiTokenNttRoute.track(this.wh,t,!0,n)}}const p={Mainnet:[],Testnet:[e.Wormhole.tokenId("Monad","0xf817257fed379853cDe0fa4F97AB987181B1E5Ea"),e.Wormhole.tokenId("Monad","0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D"),e.Wormhole.tokenId("Monad","0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d"),e.Wormhole.tokenId("Monad","0xB5a30b0FDc5EA94A52fDc42e3E9760Cb8449Fb37")]},C={Mainnet:[],Testnet:[{chain:"Sepolia",manager:"0x6c5aAE4622B835058A41879bA5e128019B9047d6",gmpManager:"0xDaeE3A6B4196E3e46015b364F1DAe54CEAE74A91"},{chain:"Monad",manager:"0x600D3C45Cd002E7359D12597Bb8058a0C32A20Df",gmpManager:"0x641a6608e2959c0D7Fe2a5F267DFDA519ED43d98"}]};function T(c,t){return!(p[t.network]||[]).some(o=>e.isSameToken(o,c))}function M(c){const t=C[c];if(!t)throw new Error(`No Monad NTT contracts configured for network ${c}`);return t}function N(c){class t extends k.MultiTokenNttExecutorRoute{static meta={name:"MonadBridgeExecutorRoute"};static config=c;static async supportedDestinationTokens(o,a,s){return T(o,a)?super.supportedDestinationTokens(o,a,s):[]}}return t}function w(c){class t extends f{static meta={name:"MonadBridgeManualRoute"};static config=c;static async supportedDestinationTokens(o,a,s){return T(o,a)?super.supportedDestinationTokens(o,a,s):[]}}return t}exports.getContractsForNetwork=M;exports.monadBridgeExecutorRoute=N;exports.monadBridgeManualRoute=w;
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const i=require("./types-CgveSjsw.js"),e=require("./platform-DCcL7jHP.js"),k=require("./multiToken-B9BoSxdr.js");require("./index-BJ0xVutl.js");class T extends e.FinalizableRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!1;static IS_AUTOMATIC=!1;staticConfig=this.constructor.config;static config={contracts:[]};static meta={name:"MultiTokenNttManualRoute"};static supportedNetworks(){return i.MultiTokenNttRoute.resolveSupportedNetworks(this.config.contracts)}static supportedChains(t){return i.MultiTokenNttRoute.resolveSupportedChains(this.config.contracts,t)}static async supportedDestinationTokens(t,n,o){return[await i.MultiTokenNttRoute.getDestinationTokenId(t,n,o,this.config.contracts)]}static isProtocolSupported(t){return t.supportsProtocol("MultiTokenNtt")}getDefaultOptions(){return{}}async isWrappedToken(t){return await i.MultiTokenNttRoute.isWrappedToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async getOriginalToken(t){return await i.MultiTokenNttRoute.getOriginalToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async validate(t,n){if(t.fromChain.chain===t.toChain.chain)return{valid:!1,error:new Error("Source and destination chains must differ"),params:n};const o=n.options??this.getDefaultOptions(),a=e.parse(n.amount,t.source.decimals),s=i.NttRoute.trimAmount(a,t.destination.decimals),c=i.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.fromChain.chain),u=i.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.toChain.chain),d=await t.fromChain.getProtocol("MultiTokenNtt",{multiTokenNtt:c}),l=e.isNative(t.source.id.address)?await d.getWrappedNativeToken():t.source.id,m=await d.getOriginalToken(l),g=await d.getSendTransceivers(t.toChain.chain),f=await this.estimateGasLimit(t,m);return{valid:!0,params:{amount:n.amount,normalizedParams:{amount:s,sourceContracts:c,destinationContracts:u,sourceTokenId:t.source.id,destinationTokenId:t.destination.id,originalTokenId:m,sendTransceivers:g,gasLimit:f},options:o}}}async estimateGasLimit(t,n){return i.MultiTokenNttRoute.estimateGasLimit(t,n,this.staticConfig.contracts,this.staticConfig.perTokenOverrides)}async quote(t,n){const o=e.scale(n.normalizedParams.amount,t.destination.decimals),a={success:!0,params:n,sourceToken:{token:t.source.id,amount:n.normalizedParams.amount},destinationToken:{token:t.destination.id,amount:o},eta:t.fromChain.chain==="Monad"?180*1e3:e.estimateFinalityTime(t.fromChain.chain)+e.guardianAttestationEta*1e3},{fromChain:s,toChain:c}=t,u=await c.getProtocol("MultiTokenNtt",{multiTokenNtt:n.normalizedParams.destinationContracts}),d=await u.getRateLimitDuration(),l=await i.MultiTokenNttRoute.checkRateLimit(u,s.chain,n.normalizedParams.originalTokenId,o,d);return l&&(a.warnings=l),a}async initiate(t,n,o,a){const{params:s}=o,{fromChain:c}=t,u=e.Wormhole.parseAddress(n.chain(),n.address()),l=(await c.getProtocol("MultiTokenNtt",{multiTokenNtt:s.normalizedParams.sourceContracts})).transfer(u,s.normalizedParams.sourceTokenId.address,e.units(s.normalizedParams.amount),a,s.normalizedParams.gasLimit,this.staticConfig.axelarGasMultiplier),m=await e.signSendWait(c,l,n);return{from:c.chain,to:a.chain,state:e.TransferState.SourceInitiated,originTxs:m,params:s,trackingInfo:{transceiverAttested:{}}}}async complete(t,n){return await i.MultiTokenNttRoute.complete(t,this.wh.getChain(n.to),n)}async resume(t){return await i.MultiTokenNttRoute.resume(t,this.wh,this.staticConfig.contracts)}async finalize(t,n){return await i.MultiTokenNttRoute.finalize(t,this.wh.getChain(n.to),n)}async*track(t,n){return yield*i.MultiTokenNttRoute.track(this.wh,t,!0,n)}}const C={Mainnet:[],Testnet:[e.Wormhole.tokenId("Monad","0xf817257fed379853cDe0fa4F97AB987181B1E5Ea"),e.Wormhole.tokenId("Monad","0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D"),e.Wormhole.tokenId("Monad","0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d"),e.Wormhole.tokenId("Monad","0xB5a30b0FDc5EA94A52fDc42e3E9760Cb8449Fb37")]},p={Mainnet:[e.Wormhole.tokenId("Monad","native"),e.Wormhole.tokenId("Monad","0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A"),e.Wormhole.tokenId("Monad","0xEE8c0E9f1BFFb4Eb878d8f15f368A02a35481242"),e.Wormhole.tokenId("Ethereum","native"),e.Wormhole.tokenId("Ethereum","0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),e.Wormhole.tokenId("Ethereum","0x6917037F8944201b2648198a89906Edf863B9517")]},M={Mainnet:[{chain:"Ethereum",manager:"0x556790e948b9920A8868bCAFcC87D25e82e8a075",gmpManager:"0xc6793a32761a11e96c97A3D18fC6545ea931F0E9"},{chain:"Monad",manager:"0x36878C6FCa7e0E8a88F90dc410CfBBcA5B695C95",gmpManager:"0x92957b3D0CaB3eA7110fEd1ccc4eF564981a59Fc"}],Testnet:[{chain:"Sepolia",manager:"0x6c5aAE4622B835058A41879bA5e128019B9047d6",gmpManager:"0xDaeE3A6B4196E3e46015b364F1DAe54CEAE74A91"},{chain:"Monad",manager:"0x600D3C45Cd002E7359D12597Bb8058a0C32A20Df",gmpManager:"0x641a6608e2959c0D7Fe2a5F267DFDA519ED43d98"}]};function h(r,t){if(t.network==="Mainnet"){const o=p[t.network]||[];return o.length===0?!1:o.some(a=>e.isSameToken(a,r))}return!(C[t.network]||[]).some(o=>e.isSameToken(o,r))}function E(r){const t=M[r];if(!t)throw new Error(`No Monad NTT contracts configured for network ${r}`);return t}function D(r){class t extends k.MultiTokenNttExecutorRoute{static meta={name:"MonadBridgeExecutorRoute"};static config=r;static async supportedDestinationTokens(o,a,s){return h(o,a)?super.supportedDestinationTokens(o,a,s):[]}}return t}function N(r){class t extends T{static meta={name:"MonadBridgeManualRoute"};static config=r;static async supportedDestinationTokens(o,a,s){return h(o,a)?super.supportedDestinationTokens(o,a,s):[]}}return t}exports.getContractsForNetwork=E;exports.monadBridgeExecutorRoute=D;exports.monadBridgeManualRoute=N;
package/lib/monad.mjs CHANGED
@@ -1,8 +1,8 @@
1
- import { M as e, N as p } from "./types-iFgwQ7vG.mjs";
2
- import { ac as T, a as k, i as C, ad as w, ae as M, af as D, W as m, u as N, ag as E, e as A, h as S } from "./platform-Cil_UtAQ.mjs";
3
- import { M as x } from "./multiToken-Bm-K5dRJ.mjs";
4
- import "./index-BXsTZ9x_.mjs";
5
- class P extends T {
1
+ import { M as o, N as p } from "./types-Dxx2g1wS.mjs";
2
+ import { ac as k, a as T, i as M, ad as D, ae as E, af as A, W as s, u as w, ag as x, e as N, h as f } from "./platform-CSpAb386.mjs";
3
+ import { M as F } from "./multiToken-DMllgxzT.mjs";
4
+ import "./index-dufPAW5T.mjs";
5
+ class I extends k {
6
6
  static NATIVE_GAS_DROPOFF_SUPPORTED = !1;
7
7
  static IS_AUTOMATIC = !1;
8
8
  // @ts-ignore
@@ -12,13 +12,13 @@ class P extends T {
12
12
  static config = { contracts: [] };
13
13
  static meta = { name: "MultiTokenNttManualRoute" };
14
14
  static supportedNetworks() {
15
- return e.resolveSupportedNetworks(this.config.contracts);
15
+ return o.resolveSupportedNetworks(this.config.contracts);
16
16
  }
17
17
  static supportedChains(t) {
18
- return e.resolveSupportedChains(this.config.contracts, t);
18
+ return o.resolveSupportedChains(this.config.contracts, t);
19
19
  }
20
20
  static async supportedDestinationTokens(t, a, n) {
21
- return [await e.getDestinationTokenId(t, a, n, this.config.contracts)];
21
+ return [await o.getDestinationTokenId(t, a, n, this.config.contracts)];
22
22
  }
23
23
  static isProtocolSupported(t) {
24
24
  return t.supportsProtocol("MultiTokenNtt");
@@ -27,10 +27,10 @@ class P extends T {
27
27
  return {};
28
28
  }
29
29
  async isWrappedToken(t) {
30
- return await e.isWrappedToken(this.wh.getChain(t.chain), t, this.staticConfig.contracts);
30
+ return await o.isWrappedToken(this.wh.getChain(t.chain), t, this.staticConfig.contracts);
31
31
  }
32
32
  async getOriginalToken(t) {
33
- return await e.getOriginalToken(this.wh.getChain(t.chain), t, this.staticConfig.contracts);
33
+ return await o.getOriginalToken(this.wh.getChain(t.chain), t, this.staticConfig.contracts);
34
34
  }
35
35
  async validate(t, a) {
36
36
  if (t.fromChain.chain === t.toChain.chain)
@@ -39,29 +39,29 @@ class P extends T {
39
39
  error: new Error("Source and destination chains must differ"),
40
40
  params: a
41
41
  };
42
- const n = a.options ?? this.getDefaultOptions(), i = k(a.amount, t.source.decimals), o = p.trimAmount(i, t.destination.decimals), s = e.resolveContracts(this.staticConfig.contracts, t.fromChain.chain), c = e.resolveContracts(this.staticConfig.contracts, t.toChain.chain), d = await t.fromChain.getProtocol("MultiTokenNtt", {
43
- multiTokenNtt: s
44
- }), u = C(t.source.id.address) ? await d.getWrappedNativeToken() : t.source.id, l = await d.getOriginalToken(u), g = await d.getSendTransceivers(t.toChain.chain), h = await this.estimateGasLimit(t, l);
42
+ const n = a.options ?? this.getDefaultOptions(), e = T(a.amount, t.source.decimals), i = p.trimAmount(e, t.destination.decimals), c = o.resolveContracts(this.staticConfig.contracts, t.fromChain.chain), d = o.resolveContracts(this.staticConfig.contracts, t.toChain.chain), u = await t.fromChain.getProtocol("MultiTokenNtt", {
43
+ multiTokenNtt: c
44
+ }), m = M(t.source.id.address) ? await u.getWrappedNativeToken() : t.source.id, l = await u.getOriginalToken(m), h = await u.getSendTransceivers(t.toChain.chain), C = await this.estimateGasLimit(t, l);
45
45
  return { valid: !0, params: {
46
46
  amount: a.amount,
47
47
  normalizedParams: {
48
- amount: o,
49
- sourceContracts: s,
50
- destinationContracts: c,
48
+ amount: i,
49
+ sourceContracts: c,
50
+ destinationContracts: d,
51
51
  sourceTokenId: t.source.id,
52
52
  destinationTokenId: t.destination.id,
53
53
  originalTokenId: l,
54
- sendTransceivers: g,
55
- gasLimit: h
54
+ sendTransceivers: h,
55
+ gasLimit: C
56
56
  },
57
57
  options: n
58
58
  } };
59
59
  }
60
60
  async estimateGasLimit(t, a) {
61
- return e.estimateGasLimit(t, a, this.staticConfig.contracts, this.staticConfig.perTokenOverrides);
61
+ return o.estimateGasLimit(t, a, this.staticConfig.contracts, this.staticConfig.perTokenOverrides);
62
62
  }
63
63
  async quote(t, a) {
64
- const n = w(a.normalizedParams.amount, t.destination.decimals), i = {
64
+ const n = D(a.normalizedParams.amount, t.destination.decimals), e = {
65
65
  success: !0,
66
66
  params: a,
67
67
  sourceToken: {
@@ -72,53 +72,82 @@ class P extends T {
72
72
  token: t.destination.id,
73
73
  amount: n
74
74
  },
75
- eta: M(t.fromChain.chain) + D * 1e3
76
- }, { fromChain: o, toChain: s } = t, c = await s.getProtocol("MultiTokenNtt", {
75
+ // For Monad, set ETA to 3 minutes because Axelar takes this long
76
+ eta: t.fromChain.chain === "Monad" ? 180 * 1e3 : E(t.fromChain.chain) + A * 1e3
77
+ }, { fromChain: i, toChain: c } = t, d = await c.getProtocol("MultiTokenNtt", {
77
78
  multiTokenNtt: a.normalizedParams.destinationContracts
78
- }), d = await c.getRateLimitDuration(), u = await e.checkRateLimit(c, o.chain, a.normalizedParams.originalTokenId, n, d);
79
- return u && (i.warnings = u), i;
79
+ }), u = await d.getRateLimitDuration(), m = await o.checkRateLimit(d, i.chain, a.normalizedParams.originalTokenId, n, u);
80
+ return m && (e.warnings = m), e;
80
81
  }
81
- async initiate(t, a, n, i) {
82
- const { params: o } = n, { fromChain: s } = t, c = m.parseAddress(a.chain(), a.address()), u = (await s.getProtocol("MultiTokenNtt", {
83
- multiTokenNtt: o.normalizedParams.sourceContracts
84
- })).transfer(c, o.normalizedParams.sourceTokenId.address, N(o.normalizedParams.amount), i, o.normalizedParams.gasLimit, this.staticConfig.axelarGasMultiplier), l = await E(s, u, a);
82
+ async initiate(t, a, n, e) {
83
+ const { params: i } = n, { fromChain: c } = t, d = s.parseAddress(a.chain(), a.address()), m = (await c.getProtocol("MultiTokenNtt", {
84
+ multiTokenNtt: i.normalizedParams.sourceContracts
85
+ })).transfer(d, i.normalizedParams.sourceTokenId.address, w(i.normalizedParams.amount), e, i.normalizedParams.gasLimit, this.staticConfig.axelarGasMultiplier), l = await x(c, m, a);
85
86
  return {
86
- from: s.chain,
87
- to: i.chain,
88
- state: A.SourceInitiated,
87
+ from: c.chain,
88
+ to: e.chain,
89
+ state: N.SourceInitiated,
89
90
  originTxs: l,
90
- params: o,
91
+ params: i,
91
92
  trackingInfo: { transceiverAttested: {} }
92
93
  };
93
94
  }
94
95
  async complete(t, a) {
95
- return await e.complete(t, this.wh.getChain(a.to), a);
96
+ return await o.complete(t, this.wh.getChain(a.to), a);
96
97
  }
97
98
  async resume(t) {
98
- return await e.resume(t, this.wh, this.staticConfig.contracts);
99
+ return await o.resume(t, this.wh, this.staticConfig.contracts);
99
100
  }
100
101
  async finalize(t, a) {
101
- return await e.finalize(t, this.wh.getChain(a.to), a);
102
+ return await o.finalize(t, this.wh.getChain(a.to), a);
102
103
  }
103
104
  async *track(t, a) {
104
- return yield* e.track(this.wh, t, !0, a);
105
+ return yield* o.track(this.wh, t, !0, a);
105
106
  }
106
107
  }
107
- const I = {
108
+ const B = {
108
109
  Mainnet: [],
109
110
  Testnet: [
110
111
  // These tokens have Wormhole versions deployed, so let users to bridge those instead
111
- m.tokenId("Monad", "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea"),
112
+ s.tokenId("Monad", "0xf817257fed379853cDe0fa4F97AB987181B1E5Ea"),
112
113
  // USDC
113
- m.tokenId("Monad", "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D"),
114
+ s.tokenId("Monad", "0x88b8E2161DEDC77EF4ab7585569D2415a1C1055D"),
114
115
  // USDT
115
- m.tokenId("Monad", "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d"),
116
+ s.tokenId("Monad", "0xcf5a6076cfa32686c0Df13aBaDa2b40dec133F1d"),
116
117
  // WBTC
117
- m.tokenId("Monad", "0xB5a30b0FDc5EA94A52fDc42e3E9760Cb8449Fb37")
118
+ s.tokenId("Monad", "0xB5a30b0FDc5EA94A52fDc42e3E9760Cb8449Fb37")
118
119
  // WETH
119
120
  ]
120
- }, y = {
121
- Mainnet: [],
121
+ }, S = {
122
+ Mainnet: [
123
+ // Monad tokens
124
+ s.tokenId("Monad", "native"),
125
+ // MON
126
+ s.tokenId("Monad", "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A"),
127
+ // WMON
128
+ s.tokenId("Monad", "0xEE8c0E9f1BFFb4Eb878d8f15f368A02a35481242"),
129
+ // WETH (NTT Token on Monad)
130
+ // Ethereum tokens
131
+ s.tokenId("Ethereum", "native"),
132
+ // ETH
133
+ s.tokenId("Ethereum", "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2"),
134
+ // WETH
135
+ s.tokenId("Ethereum", "0x6917037F8944201b2648198a89906Edf863B9517")
136
+ // WMON (NTT Token on Ethereum)
137
+ ]
138
+ }, b = {
139
+ Mainnet: [
140
+ {
141
+ chain: "Ethereum",
142
+ manager: "0x556790e948b9920A8868bCAFcC87D25e82e8a075",
143
+ gmpManager: "0xc6793a32761a11e96c97A3D18fC6545ea931F0E9"
144
+ },
145
+ {
146
+ chain: "Monad",
147
+ manager: "0x36878C6FCa7e0E8a88F90dc410CfBBcA5B695C95",
148
+ gmpManager: "0x92957b3D0CaB3eA7110fEd1ccc4eF564981a59Fc"
149
+ }
150
+ ],
122
151
  Testnet: [
123
152
  {
124
153
  chain: "Sepolia",
@@ -132,41 +161,45 @@ const I = {
132
161
  }
133
162
  ]
134
163
  };
135
- function f(r, t) {
136
- return !(I[t.network] || []).some((n) => S(n, r));
164
+ function g(r, t) {
165
+ if (t.network === "Mainnet") {
166
+ const n = S[t.network] || [];
167
+ return n.length === 0 ? !1 : n.some((e) => f(e, r));
168
+ }
169
+ return !(B[t.network] || []).some((n) => f(n, r));
137
170
  }
138
- function z(r) {
139
- const t = y[r];
171
+ function O(r) {
172
+ const t = b[r];
140
173
  if (!t)
141
174
  throw new Error(`No Monad NTT contracts configured for network ${r}`);
142
175
  return t;
143
176
  }
144
- function O(r) {
145
- class t extends x {
177
+ function z(r) {
178
+ class t extends F {
146
179
  static meta = {
147
180
  name: "MonadBridgeExecutorRoute"
148
181
  };
149
182
  static config = r;
150
- static async supportedDestinationTokens(n, i, o) {
151
- return f(n, i) ? super.supportedDestinationTokens(n, i, o) : [];
183
+ static async supportedDestinationTokens(n, e, i) {
184
+ return g(n, e) ? super.supportedDestinationTokens(n, e, i) : [];
152
185
  }
153
186
  }
154
187
  return t;
155
188
  }
156
- function L(r) {
157
- class t extends P {
189
+ function _(r) {
190
+ class t extends I {
158
191
  static meta = {
159
192
  name: "MonadBridgeManualRoute"
160
193
  };
161
194
  static config = r;
162
- static async supportedDestinationTokens(n, i, o) {
163
- return f(n, i) ? super.supportedDestinationTokens(n, i, o) : [];
195
+ static async supportedDestinationTokens(n, e, i) {
196
+ return g(n, e) ? super.supportedDestinationTokens(n, e, i) : [];
164
197
  }
165
198
  }
166
199
  return t;
167
200
  }
168
201
  export {
169
- z as getContractsForNetwork,
170
- O as monadBridgeExecutorRoute,
171
- L as monadBridgeManualRoute
202
+ O as getContractsForNetwork,
203
+ z as monadBridgeExecutorRoute,
204
+ _ as monadBridgeManualRoute
172
205
  };
@@ -0,0 +1 @@
1
+ "use strict";const o=require("./types-CgveSjsw.js"),n=require("./platform-DCcL7jHP.js");class C extends n.AutomaticRoute{static NATIVE_GAS_DROPOFF_SUPPORTED=!0;staticConfig=this.constructor.config;static config={contracts:[]};static meta={name:"MultiTokenNttExecutorRoute"};static supportedNetworks(){return o.MultiTokenNttRoute.resolveSupportedNetworks(this.config.contracts)}static supportedChains(t){return o.MultiTokenNttRoute.resolveSupportedChains(this.config.contracts,t)}static async supportedDestinationTokens(t,e,i){return[await o.MultiTokenNttRoute.getDestinationTokenId(t,e,i,this.config.contracts)]}static isProtocolSupported(t){return t.supportsProtocol("MultiTokenNtt")}getDefaultOptions(){return{nativeGas:0}}async isWrappedToken(t){return await o.MultiTokenNttRoute.isWrappedToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async getOriginalToken(t){return await o.MultiTokenNttRoute.getOriginalToken(this.wh.getChain(t.chain),t,this.staticConfig.contracts)}async validate(t,e){if(t.fromChain.chain===t.toChain.chain)return{valid:!1,error:new Error("Source and destination chains must differ"),params:e};const i=e.options??this.getDefaultOptions();if(i.nativeGas!==void 0&&(i.nativeGas<0||i.nativeGas>1))return{valid:!1,error:new Error("Invalid native gas percentage"),params:e};const r=n.parse(e.amount,t.source.decimals),s=o.NttRoute.trimAmount(r,t.destination.decimals),c=o.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.fromChain.chain),u=o.MultiTokenNttRoute.resolveContracts(this.staticConfig.contracts,t.toChain.chain),f=await t.fromChain.getProtocol("MultiTokenNtt",{multiTokenNtt:c}),m=n.isNative(t.source.id.address)?await f.getWrappedNativeToken():t.source.id,h=await f.getOriginalToken(m),g=await f.getSendTransceivers(t.toChain.chain),d=this.getReferrerFeeDbps(t),l=await this.estimateGasLimit(t,h);return{valid:!0,params:{amount:e.amount,normalizedParams:{amount:s,sourceContracts:c,destinationContracts:u,referrerFeeDbps:d,sourceTokenId:t.source.id,destinationTokenId:t.destination.id,originalTokenId:h,gasLimit:l,sendTransceivers:g},options:i}}}async quote(t,e){const{fromChain:i,toChain:r}=t;try{const s=await this.fetchExecutorQuote(t,e),{deliveryPrice:c,transceiverInstructions:u}=await this.fetchDeliveryPriceAndInstructions(i,r,e),{remainingAmount:f,estimatedCost:m,gasDropOff:h,expires:g}=s,d=n.scale(n.fromBaseUnits(f,t.source.decimals),t.destination.decimals),l={success:!0,params:e,sourceToken:{token:t.source.id,amount:e.normalizedParams.amount},destinationToken:{token:t.destination.id,amount:d},relayFee:{token:n.nativeTokenId(i.chain),amount:n.fromBaseUnits(m+c,i.config.nativeTokenDecimals)},destinationNativeGas:n.fromBaseUnits(h,r.config.nativeTokenDecimals),eta:t.fromChain.chain==="Monad"?180*1e3:n.estimateFinalityTime(t.fromChain.chain)+n.guardianAttestationEta*1e3,expires:g,details:{...s,deliveryPrice:c,transceiverInstructions:u}},p=await r.getProtocol("MultiTokenNtt",{multiTokenNtt:e.normalizedParams.destinationContracts}),a=await p.getRateLimitDuration(),T=await o.MultiTokenNttRoute.checkRateLimit(p,i.chain,e.normalizedParams.originalTokenId,d,a);return T&&(l.warnings=T),l}catch(s){return{success:!1,error:s instanceof Error?s:new Error(String(s))}}}getReferrerFeeDbps(t){let e=0n;if(this.staticConfig.referrerFee&&(e=this.staticConfig.referrerFee.feeDbps,this.staticConfig.referrerFee.perTokenOverrides)){const i=n.canonicalAddress(t.source.id),r=this.staticConfig.referrerFee.perTokenOverrides[t.source.id.chain]?.[i];r?.referrerFeeDbps!==void 0&&(e=r.referrerFeeDbps)}return e}getReferrerAddress(t){let e=o.getDefaultReferrerAddress(t.chain);const i=this.staticConfig.referrerFee;if(i){const r=n.chainToPlatform(t.chain),s=i.referrerAddresses?.[r]??"";s&&(e=n.Wormhole.chainAddress(t.chain,s))}return e}async validateCapabilities(t,e){const i=await o.fetchCapabilities(t.network),r=i[n.toChainId(t.chain)];if(!r)throw new Error("Unsupported source chain");const s=i[n.toChainId(e.chain)];if(!s||!s.requestPrefixes.includes("ERN1"))throw new Error("Unsupported destination chain");return{sourceCapabilities:r,destinationCapabilities:s}}calculateGasDropOff(t,e){return e.options.nativeGas&&t>0n?BigInt(Math.round(e.options.nativeGas*100))*t/100n:0n}async estimateGasLimit(t,e){return o.MultiTokenNttRoute.estimateGasLimit(t,e,this.staticConfig.contracts,this.staticConfig.referrerFee?.perTokenOverrides)}async fetchExecutorQuote(t,e){const{fromChain:i,toChain:r}=t,s=this.getReferrerAddress(i),{referrerFee:c,remainingAmount:u,referrerFeeDbps:f}=o.calculateReferrerFee(e.normalizedParams.amount,e.normalizedParams.referrerFeeDbps??0n,t.destination.decimals);if(u<=0n)throw new Error("Amount after fee <= 0");const{destinationCapabilities:m}=await this.validateCapabilities(i,r),{recipient:h}=t,g=BigInt(m.gasDropOffLimit),d=this.calculateGasDropOff(g,e),l=[];l.push({request:{type:"GasInstruction",gasLimit:e.normalizedParams.gasLimit,msgValue:0n}}),d>0n&&l.push({request:{type:"GasDropOffInstruction",dropOff:d,recipient:h?h.address.toUniversalAddress():new n.UniversalAddress(new Uint8Array(32))}});const p=n.serialize(n.relayInstructionsLayout,{requests:l}),a=await o.fetchSignedQuote(i.network,i.chain,r.chain,n.hex.encode(p,!0));if(!a.estimatedCost)throw new Error("No estimated cost");const T=BigInt(a.estimatedCost),k=n.hex.decode(a.signedQuote),w=n.deserialize$1(n.signedQuoteLayout,k);return{signedQuote:k,relayInstructions:p,estimatedCost:T,payeeAddress:w.quote.payeeAddress,referrer:s,referrerFee:c,remainingAmount:u,referrerFeeDbps:f,expires:w.quote.expiryTime,gasDropOff:d}}async fetchDeliveryPriceAndInstructions(t,e,i){const r=await t.getProtocol("MultiTokenNtt",{multiTokenNtt:i.normalizedParams.sourceContracts}),s=await r.createTransceiverInstructions(e.chain,i.normalizedParams.gasLimit,this.staticConfig.axelarGasMultiplier);return{deliveryPrice:await r.quoteDeliveryPrice(e.chain,s),transceiverInstructions:s}}async initiate(t,e,i,r){if(!i.details)throw new Error("Missing quote details");const{details:s,params:c}=i,{fromChain:u}=t;n.deserialize$1(n.relayInstructionsLayout,s.relayInstructions).requests.forEach(({request:a})=>{if(a.type==="GasDropOffInstruction"&&!a.recipient.equals(r.address.toUniversalAddress()))throw new Error("Gas drop-off recipient does not match")});const m=n.Wormhole.parseAddress(e.chain(),e.address()),g=(await u.getProtocol("MultiTokenNttWithExecutor",{multiTokenNtt:c.normalizedParams.sourceContracts})).transfer(m,r,t.source.id,n.units(c.normalizedParams.amount),s),d=await n.signSendWait(u,g,e);let l=0;return(async()=>{for(;l<20;){try{const[a]=await o.fetchStatus(u.network,d.at(-1).txid,u.chain);if(a)break}catch{}l++,await new Promise(a=>setTimeout(a,2e3))}})(),{from:u.chain,to:r.chain,state:n.TransferState.SourceInitiated,originTxs:d,params:c,trackingInfo:{transceiverAttested:{}}}}async complete(t,e){return await o.MultiTokenNttRoute.complete(t,this.wh.getChain(e.to),e)}async resume(t){return await o.fetchStatus(this.wh.network,t.txid,t.chain),await o.MultiTokenNttRoute.resume(t,this.wh,this.staticConfig.contracts)}async finalize(t,e){return await o.MultiTokenNttRoute.finalize(t,this.wh.getChain(e.to),e)}async*track(t,e){return yield*o.MultiTokenNttRoute.track(this.wh,t,!1,e)}}exports.MultiTokenNttExecutorRoute=C;
@@ -1,5 +1,5 @@
1
- import { M as r, N as D, g as N, f as E, c as F, a as x, b as C } from "./types-iFgwQ7vG.mjs";
2
- import { M as O, a as b, i as G, ad as R, f as w, ae as z, af as M, n as S, N as L, d as Q, W as v, ah as y, ai as W, aj as U, ak as I, m as P, al as A, am as B, u as _, ag as V, e as j } from "./platform-Cil_UtAQ.mjs";
1
+ import { M as r, N as D, g as N, f as E, c as F, a as x, b as C } from "./types-Dxx2g1wS.mjs";
2
+ import { M as O, a as b, i as G, ad as R, f as w, ae as z, af as M, n as S, N as L, d as Q, W as v, ah as y, ai as W, aj as U, ak as I, m as P, al as A, am as B, u as _, ag as V, e as j } from "./platform-CSpAb386.mjs";
3
3
  class X extends O {
4
4
  static NATIVE_GAS_DROPOFF_SUPPORTED = !0;
5
5
  // Since we set the config on the static class, access it with this param
@@ -85,7 +85,8 @@ class X extends O {
85
85
  amount: w(h + o, i.config.nativeTokenDecimals)
86
86
  },
87
87
  destinationNativeGas: w(l, a.config.nativeTokenDecimals),
88
- eta: z(t.fromChain.chain) + M * 1e3,
88
+ // For Monad, set ETA to 3 minutes because Axelar takes this long
89
+ eta: t.fromChain.chain === "Monad" ? 180 * 1e3 : z(t.fromChain.chain) + M * 1e3,
89
90
  expires: m,
90
91
  details: {
91
92
  ...n,
package/lib/ntt.js CHANGED
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("./types-CjNs2oB0.js");require("./index-CS6YnwIH.js");const w=require("./platform-CCG_jgOO.js"),He=require("./index-lZY5fTXF.js"),p=require("./unsignedTransaction-DA4tlY5u.js"),at=require("./index-DALvn9lg.js"),q=require("./mint-CxQ6P5lT.js"),Qe=require("./web3-DdUeM7iQ.js"),Ye=require("./associatedTokenAccount-C4vEEbG5.js");function ha(i,e){if(!!!i)throw new Error(e)}const Yn={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},ga=new Set(Object.keys(Yn));function _n(i){const e=i?.kind;return typeof e=="string"&&ga.has(e)}var En;(function(i){i.QUERY="query",i.MUTATION="mutation",i.SUBSCRIPTION="subscription"})(En||(En={}));var nn;(function(i){i.NAME="Name",i.DOCUMENT="Document",i.OPERATION_DEFINITION="OperationDefinition",i.VARIABLE_DEFINITION="VariableDefinition",i.SELECTION_SET="SelectionSet",i.FIELD="Field",i.ARGUMENT="Argument",i.FRAGMENT_SPREAD="FragmentSpread",i.INLINE_FRAGMENT="InlineFragment",i.FRAGMENT_DEFINITION="FragmentDefinition",i.VARIABLE="Variable",i.INT="IntValue",i.FLOAT="FloatValue",i.STRING="StringValue",i.BOOLEAN="BooleanValue",i.NULL="NullValue",i.ENUM="EnumValue",i.LIST="ListValue",i.OBJECT="ObjectValue",i.OBJECT_FIELD="ObjectField",i.DIRECTIVE="Directive",i.NAMED_TYPE="NamedType",i.LIST_TYPE="ListType",i.NON_NULL_TYPE="NonNullType",i.SCHEMA_DEFINITION="SchemaDefinition",i.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",i.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",i.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",i.FIELD_DEFINITION="FieldDefinition",i.INPUT_VALUE_DEFINITION="InputValueDefinition",i.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",i.UNION_TYPE_DEFINITION="UnionTypeDefinition",i.ENUM_TYPE_DEFINITION="EnumTypeDefinition",i.ENUM_VALUE_DEFINITION="EnumValueDefinition",i.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",i.DIRECTIVE_DEFINITION="DirectiveDefinition",i.SCHEMA_EXTENSION="SchemaExtension",i.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",i.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",i.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",i.UNION_TYPE_EXTENSION="UnionTypeExtension",i.ENUM_TYPE_EXTENSION="EnumTypeExtension",i.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension"})(nn||(nn={}));function Rn(i){return i===9||i===32}function pa(i,e){const n=i.replace(/"""/g,'\\"""'),s=n.split(/\r\n|[\n\r]/g),c=s.length===1,a=s.length>1&&s.slice(1).every(P=>P.length===0||Rn(P.charCodeAt(0))),l=n.endsWith('\\"""'),y=i.endsWith('"')&&!l,M=i.endsWith("\\"),S=y||M,I=!c||i.length>70||S||a||l;let A="";const k=c&&Rn(i.charCodeAt(0));return(I&&!k||a)&&(A+=`
1
+ "use strict";Object.defineProperty(exports,Symbol.toStringTag,{value:"Module"});const L=require("./types-CgveSjsw.js");require("./index-BJ0xVutl.js");const w=require("./platform-DCcL7jHP.js"),He=require("./index-lAqXlt-a.js"),p=require("./unsignedTransaction-qRBv5Cnd.js"),at=require("./index-v7w8krM0.js"),q=require("./mint-DW-XgF68.js"),Qe=require("./web3-x1WCGDiy.js"),Ye=require("./associatedTokenAccount-CeqdaO2m.js");function ha(i,e){if(!!!i)throw new Error(e)}const Yn={Name:[],Document:["definitions"],OperationDefinition:["name","variableDefinitions","directives","selectionSet"],VariableDefinition:["variable","type","defaultValue","directives"],Variable:["name"],SelectionSet:["selections"],Field:["alias","name","arguments","directives","selectionSet"],Argument:["name","value"],FragmentSpread:["name","directives"],InlineFragment:["typeCondition","directives","selectionSet"],FragmentDefinition:["name","variableDefinitions","typeCondition","directives","selectionSet"],IntValue:[],FloatValue:[],StringValue:[],BooleanValue:[],NullValue:[],EnumValue:[],ListValue:["values"],ObjectValue:["fields"],ObjectField:["name","value"],Directive:["name","arguments"],NamedType:["name"],ListType:["type"],NonNullType:["type"],SchemaDefinition:["description","directives","operationTypes"],OperationTypeDefinition:["type"],ScalarTypeDefinition:["description","name","directives"],ObjectTypeDefinition:["description","name","interfaces","directives","fields"],FieldDefinition:["description","name","arguments","type","directives"],InputValueDefinition:["description","name","type","defaultValue","directives"],InterfaceTypeDefinition:["description","name","interfaces","directives","fields"],UnionTypeDefinition:["description","name","directives","types"],EnumTypeDefinition:["description","name","directives","values"],EnumValueDefinition:["description","name","directives"],InputObjectTypeDefinition:["description","name","directives","fields"],DirectiveDefinition:["description","name","arguments","locations"],SchemaExtension:["directives","operationTypes"],ScalarTypeExtension:["name","directives"],ObjectTypeExtension:["name","interfaces","directives","fields"],InterfaceTypeExtension:["name","interfaces","directives","fields"],UnionTypeExtension:["name","directives","types"],EnumTypeExtension:["name","directives","values"],InputObjectTypeExtension:["name","directives","fields"]},ga=new Set(Object.keys(Yn));function _n(i){const e=i?.kind;return typeof e=="string"&&ga.has(e)}var En;(function(i){i.QUERY="query",i.MUTATION="mutation",i.SUBSCRIPTION="subscription"})(En||(En={}));var nn;(function(i){i.NAME="Name",i.DOCUMENT="Document",i.OPERATION_DEFINITION="OperationDefinition",i.VARIABLE_DEFINITION="VariableDefinition",i.SELECTION_SET="SelectionSet",i.FIELD="Field",i.ARGUMENT="Argument",i.FRAGMENT_SPREAD="FragmentSpread",i.INLINE_FRAGMENT="InlineFragment",i.FRAGMENT_DEFINITION="FragmentDefinition",i.VARIABLE="Variable",i.INT="IntValue",i.FLOAT="FloatValue",i.STRING="StringValue",i.BOOLEAN="BooleanValue",i.NULL="NullValue",i.ENUM="EnumValue",i.LIST="ListValue",i.OBJECT="ObjectValue",i.OBJECT_FIELD="ObjectField",i.DIRECTIVE="Directive",i.NAMED_TYPE="NamedType",i.LIST_TYPE="ListType",i.NON_NULL_TYPE="NonNullType",i.SCHEMA_DEFINITION="SchemaDefinition",i.OPERATION_TYPE_DEFINITION="OperationTypeDefinition",i.SCALAR_TYPE_DEFINITION="ScalarTypeDefinition",i.OBJECT_TYPE_DEFINITION="ObjectTypeDefinition",i.FIELD_DEFINITION="FieldDefinition",i.INPUT_VALUE_DEFINITION="InputValueDefinition",i.INTERFACE_TYPE_DEFINITION="InterfaceTypeDefinition",i.UNION_TYPE_DEFINITION="UnionTypeDefinition",i.ENUM_TYPE_DEFINITION="EnumTypeDefinition",i.ENUM_VALUE_DEFINITION="EnumValueDefinition",i.INPUT_OBJECT_TYPE_DEFINITION="InputObjectTypeDefinition",i.DIRECTIVE_DEFINITION="DirectiveDefinition",i.SCHEMA_EXTENSION="SchemaExtension",i.SCALAR_TYPE_EXTENSION="ScalarTypeExtension",i.OBJECT_TYPE_EXTENSION="ObjectTypeExtension",i.INTERFACE_TYPE_EXTENSION="InterfaceTypeExtension",i.UNION_TYPE_EXTENSION="UnionTypeExtension",i.ENUM_TYPE_EXTENSION="EnumTypeExtension",i.INPUT_OBJECT_TYPE_EXTENSION="InputObjectTypeExtension"})(nn||(nn={}));function Rn(i){return i===9||i===32}function pa(i,e){const n=i.replace(/"""/g,'\\"""'),s=n.split(/\r\n|[\n\r]/g),c=s.length===1,a=s.length>1&&s.slice(1).every(P=>P.length===0||Rn(P.charCodeAt(0))),l=n.endsWith('\\"""'),y=i.endsWith('"')&&!l,M=i.endsWith("\\"),S=y||M,I=!c||i.length>70||S||a||l;let A="";const k=c&&Rn(i.charCodeAt(0));return(I&&!k||a)&&(A+=`
2
2
  `),A+=n,(I||S)&&(A+=`
3
3
  `),'"""'+A+'"""'}const ya=10,Xn=2;function va(i){return Ct(i,[])}function Ct(i,e){switch(typeof i){case"string":return JSON.stringify(i);case"function":return i.name?`[function ${i.name}]`:"[function]";case"object":return wa(i,e);default:return String(i)}}function wa(i,e){if(i===null)return"null";if(e.includes(i))return"[Circular]";const n=[...e,i];if(Sa(i)){const s=i.toJSON();if(s!==i)return typeof s=="string"?s:Ct(s,n)}else if(Array.isArray(i))return ba(i,n);return Ma(i,n)}function Sa(i){return typeof i.toJSON=="function"}function Ma(i,e){const n=Object.entries(i);return n.length===0?"{}":e.length>Xn?"["+Aa(i)+"]":"{ "+n.map(([c,a])=>c+": "+Ct(a,e)).join(", ")+" }"}function ba(i,e){if(i.length===0)return"[]";if(e.length>Xn)return"[Array]";const n=Math.min(ya,i.length),s=i.length-n,c=[];for(let a=0;a<n;++a)c.push(Ct(i[a],e));return s===1?c.push("... 1 more item"):s>1&&c.push(`... ${s} more items`),"["+c.join(", ")+"]"}function Aa(i){const e=Object.prototype.toString.call(i).replace(/^\[object /,"").replace(/]$/,"");if(e==="Object"&&typeof i.constructor=="function"){const n=i.constructor.name;if(typeof n=="string"&&n!=="")return n}return e}function Ia(i){return`"${i.replace(Ta,ka)}"`}const Ta=/[\x00-\x1f\x22\x5c\x7f-\x9f]/g;function ka(i){return Pa[i.charCodeAt(0)]}const Pa=["\\u0000","\\u0001","\\u0002","\\u0003","\\u0004","\\u0005","\\u0006","\\u0007","\\b","\\t","\\n","\\u000B","\\f","\\r","\\u000E","\\u000F","\\u0010","\\u0011","\\u0012","\\u0013","\\u0014","\\u0015","\\u0016","\\u0017","\\u0018","\\u0019","\\u001A","\\u001B","\\u001C","\\u001D","\\u001E","\\u001F","","",'\\"',"","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\\\","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","\\u007F","\\u0080","\\u0081","\\u0082","\\u0083","\\u0084","\\u0085","\\u0086","\\u0087","\\u0088","\\u0089","\\u008A","\\u008B","\\u008C","\\u008D","\\u008E","\\u008F","\\u0090","\\u0091","\\u0092","\\u0093","\\u0094","\\u0095","\\u0096","\\u0097","\\u0098","\\u0099","\\u009A","\\u009B","\\u009C","\\u009D","\\u009E","\\u009F"],xa=Object.freeze({});function Ca(i,e,n=Yn){const s=new Map;for(const D of Object.values(nn))s.set(D,_a(e,D));let c,a=Array.isArray(i),l=[i],y=-1,M=[],S=i,I,A;const k=[],P=[];do{y++;const D=y===l.length,W=D&&M.length!==0;if(D){if(I=P.length===0?void 0:k[k.length-1],S=A,A=P.pop(),W)if(a){S=S.slice();let U=0;for(const[z,K]of M){const X=z-U;K===null?(S.splice(X,1),U++):S[X]=K}}else{S={...S};for(const[U,z]of M)S[U]=z}y=c.index,l=c.keys,M=c.edits,a=c.inArray,c=c.prev}else if(A){if(I=a?y:l[y],S=A[I],S==null)continue;k.push(I)}let N;if(!Array.isArray(S)){var O,B;_n(S)||ha(!1,`Invalid AST Node: ${va(S)}.`);const U=D?(O=s.get(S.kind))===null||O===void 0?void 0:O.leave:(B=s.get(S.kind))===null||B===void 0?void 0:B.enter;if(N=U?.call(e,S,I,A,k,P),N===xa)break;if(N===!1){if(!D){k.pop();continue}}else if(N!==void 0&&(M.push([I,N]),!D))if(_n(N))S=N;else{k.pop();continue}}if(N===void 0&&W&&M.push([I,S]),D)k.pop();else{var $;c={inArray:a,index:y,keys:l,edits:M,prev:c},a=Array.isArray(S),l=a?S:($=n[S.kind])!==null&&$!==void 0?$:[],y=-1,M=[],A&&P.push(A),A=S}}while(c!==void 0);return M.length!==0?M[M.length-1][1]:i}function _a(i,e){const n=i[e];return typeof n=="object"?n:typeof n=="function"?{enter:n,leave:void 0}:{enter:i.enter,leave:i.leave}}function Ea(i){return Ca(i,Oa)}const Ra=80,Oa={Name:{leave:i=>i.value},Variable:{leave:i=>"$"+i.name},Document:{leave:i=>_(i.definitions,`
4
4
 
@@ -646,4 +646,4 @@ fragment OBJECT_OWNER_FIELDS on ObjectOwner {
646
646
  }
647
647
  }
648
648
  }
649
- `),a=(await n.query({query:s})).data?.objects.nodes?.[0]?.address;if(!a)throw new Error(`CoinMetadata object not found for type ${e}`);return a}class xt{contracts;coreBridgeStateId;static async extractTokenTypeFromSuiState(e,n){const s=await e.getObject({id:n,options:{showType:!0}});if(!s.data?.type)throw new Error("Failed to fetch state object type");const c=s.data.type,a=c.indexOf("<"),l=c.lastIndexOf(">");if(a===-1||l===-1)throw new Error(`No generic type parameter found in state object type: ${c}`);return c.substring(a+1,l)}async getNttState(){try{return(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields}catch(e){throw new Error(`Failed to fetch NTT state object: ${e instanceof Error?e.message:String(e)}`)}}network;chain;provider;adminCapId;packageId;constructor(e,n,s,c){if(this.contracts=c,!c.ntt)throw new Error("NTT contracts not found");if(!c.coreBridge)throw new Error("Core Bridge contract not found");this.network=e,this.chain=n,this.provider=s,this.coreBridgeStateId=ut[e].coreBridgeStateId}static async fromRpc(e,n){const[s,c]=await p.SuiPlatform.chainFromRpc(e),a=n[c];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);if(!("ntt"in a.contracts))throw new Error("Ntt contracts not found");const l=a.contracts.ntt;return new xt(s,c,e,{...a.contracts,ntt:l})}async getMode(){const n=(await this.getNttState()).mode;if(n.variant==="Locking")return"locking";if(n.variant==="Burning")return"burning";throw new Error("Invalid mode in NTT state")}async isPaused(){return(await this.getNttState()).paused}async getAdminCapId(){if(this.adminCapId)return this.adminCapId;const e=await this.getNttState();if(!e.admin_cap_id)throw new Error("AdminCap ID not found in NTT state");return this.adminCapId=e.admin_cap_id,this.adminCapId}async getPackageId(){if(this.packageId)return this.packageId;const e=await this.getPackageIdFromObject(this.contracts.ntt.manager);return this.packageId=e,this.packageId}async getPackageIdFromObject(e){return(await Pi(this.provider,e)).current}async getOwner(){const e=await this.getAdminCapId();try{const n=await this.provider.getObject({id:e,options:{showOwner:!0}});if(!n.data?.owner)throw new Error("Could not fetch AdminCap owner information");let s;if(typeof n.data.owner=="object"&&"AddressOwner"in n.data.owner)s=n.data.owner.AddressOwner;else if(typeof n.data.owner=="string")s=n.data.owner;else throw new Error(`AdminCap has unexpected owner type: ${JSON.stringify(n.data.owner)}`);return s}catch(n){throw new Error(`Failed to get AdminCap owner: ${n}`)}}async getPauser(){return this.getOwner()}async getThreshold(){const e=await this.getNttState();return parseInt(e.threshold,10)}async*setThreshold(e,n){const s=await this.getAdminCapId(),c=await this.getPackageId(),a=new p.Transaction;a.moveCall({target:`${c}::state::set_threshold`,typeArguments:[this.contracts.ntt.token],arguments:[a.object(s),a.object(this.contracts.ntt.manager),a.pure.u8(e)]}),yield new p.SuiUnsignedTransaction(a,this.network,this.chain,"Set Threshold")}async getTokenDecimals(){const e=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!e?.decimals)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);return e.decimals}async getCustodyAddress(){return this.contracts.ntt.manager}async*pause(){const e=await this.getAdminCapId(),n=await this.getPackageId(),s=new p.Transaction;s.moveCall({target:`${n}::state::pause`,typeArguments:[this.contracts.ntt.token],arguments:[s.object(e),s.object(this.contracts.ntt.manager)]}),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Pause Contract")}async*unpause(){const e=await this.getAdminCapId(),n=await this.getPackageId(),s=new p.Transaction;s.moveCall({target:`${n}::state::unpause`,typeArguments:[this.contracts.ntt.token],arguments:[s.object(e),s.object(this.contracts.ntt.manager)]}),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Unpause Contract")}async*setOwner(e,n){const s=new p.Transaction,c=await this.getAdminCapId(),a=await this.getUpgradeCapId();s.transferObjects([s.object(c),s.object(a)],e.toString()),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Transfer Ownership")}async*setPauser(e,n){throw new Error("setPauser not supported: owner and pauser are the same in Sui NTT. Use setOwner instead.")}async*setPeer(e,n,s,c){const a=await this.getAdminCapId(),l=await this.getPackageId(),y=new p.Transaction,M=w.chainToChainId(e.chain),S=e.address.toUint8Array();try{const A=await this.getPackageIdFromObject(this.contracts.coreBridge),k=y.moveCall({target:`${A}::bytes32::from_bytes`,arguments:[y.pure.vector("u8",S)]}),P=y.moveCall({target:`${A}::external_address::new`,arguments:[k]});y.moveCall({target:`${l}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[y.object(a),y.object(this.contracts.ntt.manager),y.pure.u16(M),P,y.pure.u8(n),y.pure.u64(s.toString()),y.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(A){throw new Error(`Failed to create setPeer transaction: ${A instanceof Error?A.message:String(A)}`)}yield new p.SuiUnsignedTransaction(y,this.network,this.chain,"Set Peer")}async getPeer(e){const n=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!n.data?.content||n.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const c=n.data.content.fields.peers,a=w.chainToChainId(e);try{const l=await this.provider.getDynamicFieldObject({parentId:c.fields.id.id,name:{type:"u16",value:a}});if(!l.data?.content||l.data.content.dataType!=="moveObject")return null;const y=l.data.content.fields.value.fields,S=y.address.fields.value.fields.data,I=new Uint8Array(S),A={chain:e,address:w.toUniversal(e,I)},k=parseInt(y.token_decimals,10),P=y.inbound_rate_limit.fields,O=BigInt(P.limit);return{address:A,tokenDecimals:k,inboundLimit:O}}catch(l){return console.error(l),null}}async*setTransceiverPeer(e,n,s){if(e!==0)throw new Error("Only transceiver index 0 (wormhole) is currently supported");const c=this.contracts.ntt.transceiver?.wormhole;if(!c)throw new Error("Wormhole transceiver not found in contracts");const a=await this.getPackageIdFromObject(c),M=(await et(this.provider,c,"Failed to fetch transceiver state object")).fields.admin_cap_id,S=new p.Transaction,I=w.chainToChainId(n.chain),A=n.address.toUint8Array(),k=Array.from(A);try{const O=await this.getPackageIdFromObject(this.contracts.coreBridge),B=S.moveCall({target:`${O}::bytes32::from_bytes`,arguments:[S.pure.vector("u8",k)]}),$=S.moveCall({target:`${O}::external_address::new`,arguments:[B]}),D=await this.getPackageId(),W=S.moveCall({target:`${a}::wormhole_transceiver::set_peer`,typeArguments:[`${D}::auth::ManagerAuth`],arguments:[S.object(M),S.object(c),S.pure.u16(I),$]}),N=this.contracts.coreBridge,[U]=S.splitCoins(S.gas,[0]);S.moveCall({target:`${O}::publish_message::publish_message`,arguments:[S.object(N),U,W,S.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(O){throw new Error(`Failed to create setTransceiverPeer transaction: ${O instanceof Error?O.message:String(O)}`)}yield new p.SuiUnsignedTransaction(S,this.network,this.chain,"Set Transceiver Peer")}async*transfer(e,n,s,c){const a=await this.getPackageId(),l=new p.Transaction,y=w.chainToChainId(s.chain);let M;try{if(typeof s.address.toUint8Array=="function")M=s.address.toUint8Array();else if(typeof s.address.toUniversalAddress=="function"){const F=s.address.toUniversalAddress();if(!F)throw new Error("toUniversalAddress() returned null or undefined");M=F.toUint8Array()}else throw new Error(`destination.address does not have expected methods. Type: ${typeof s.address}`)}catch(F){throw new Error(`Failed to convert destination address to bytes: ${F instanceof Error?F.message:String(F)}`)}const S=await un(this.network,this.contracts.ntt.token),I=this.contracts.ntt.token,A=fa(I),P=new p.SuiAddress(A?p.SuiPlatform.nativeTokenId(this.network,this.chain).address:I).getCoinType(),[O]=await(async()=>{if(A)return l.splitCoins(l.gas,[n]);{const F=await p.SuiPlatform.getCoins(this.provider,e,P);if(F.length===0)throw new Error(`No coins found for token type ${P}`);const[Z,...d]=F;if(!Z)throw new Error(`No primary coin found for token type ${P}`);const t=l.object(Z.coinObjectId);return d.length>0&&l.mergeCoins(t,d.map(r=>l.object(r.coinObjectId))),l.splitCoins(t,[n])}})(),[B]=l.moveCall({target:`${a}::upgrades::new_version_gated`,arguments:[]}),[$,D]=l.moveCall({target:`${a}::ntt::prepare_transfer`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager),O,l.object(S),l.pure.u16(y),l.pure.vector("u8",M),l.pure.option("vector<u8>",null),l.pure.bool(c.queue||!1)]}),[W]=l.moveCall({target:`${a}::state::get_next_sequence`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager)]}),N=await dt(this.provider,this.coreBridgeStateId);l.moveCall({target:`${a}::ntt::transfer_tx_sender`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager),B,l.object(S),$,l.object(p.SUI_CLOCK_OBJECT_ID)]});const U=this.contracts.ntt.transceiver?.wormhole;if(!U)throw new Error("Wormhole transceiver not found in contracts");const z=await this.getPackageIdFromObject(U),[K]=l.moveCall({target:`${a}::state::create_transceiver_message`,typeArguments:[`${z}::wormhole_transceiver::TransceiverAuth`,P],arguments:[l.object(this.contracts.ntt.manager),W,l.object(p.SUI_CLOCK_OBJECT_ID)]}),[X]=l.moveCall({target:`${z}::wormhole_transceiver::release_outbound`,typeArguments:[`${a}::auth::ManagerAuth`],arguments:[l.object(U),K]}),[Ue]=l.splitCoins(l.gas,[l.pure.u64(0n)]);l.moveCall({target:`${N}::publish_message::publish_message`,arguments:[l.object(this.coreBridgeStateId),Ue,X,l.object(p.SUI_CLOCK_OBJECT_ID)]});const[Fe]=l.moveCall({target:"0x2::coin::from_balance",typeArguments:[P],arguments:[D]});A?l.mergeCoins(l.gas,[Fe]):l.transferObjects([Fe],e.toString()),yield new p.SuiUnsignedTransaction(l,this.network,this.chain,"NTT Transfer")}async*redeem(e,n){if(await this.isPaused())throw new Error("Contract is paused");if(e.length===0)throw new Error("No attestations provided");const c=await this.getPackageId(),a=await un(this.network,this.contracts.ntt.token),l=new p.Transaction;for(const M of e)await this.addRedeemCall(l,M,c,a);await this.addReleaseCall(l,e,c,a),yield new p.SuiUnsignedTransaction(l,this.network,this.chain,"Redeem NTT Transfer")}async quoteDeliveryPrice(e,n){throw new Error("Not implemented")}async isRelayingAvailable(e){return!1}async getCurrentOutboundCapacity(){const s=(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields,c=Date.now(),a=BigInt(s.limit),l=BigInt(s.capacity_at_last_tx),y=BigInt(s.last_tx_timestamp),M=BigInt(c)-y,S=en,I=M*a/S,A=l+I;return A>a?a:A}async getOutboundLimit(){const s=(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields;return BigInt(s.limit)}async*setOutboundLimit(e,n){const s=await this.getAdminCapId();if(!s)throw new Error("AdminCap ID not found");const c=await this.getPackageId();if(!c)throw new Error("Package ID not found");const a=new p.Transaction;a.moveCall({target:`${c}::state::set_outbound_rate_limit`,typeArguments:[this.contracts.ntt.token],arguments:[a.object(s),a.object(this.contracts.ntt.manager),a.pure.u64(e.toString()),a.object(p.SUI_CLOCK_OBJECT_ID)]}),yield new p.SuiUnsignedTransaction(a,this.network,this.chain,"Set Outbound Limit")}async getCurrentInboundCapacity(e){const n=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!n.data?.content||n.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const c=n.data.content.fields.peers,a=w.chainToChainId(e);try{const l=await this.provider.getDynamicFieldObject({parentId:c.fields.id.id,name:{type:"u16",value:a}});if(!l.data?.content||l.data.content.dataType!=="moveObject")throw new Error(`No peer found for chain ${e}`);const M=l.data.content.fields.value.fields.inbound_rate_limit.fields,S=Date.now(),I=BigInt(M.limit),A=BigInt(M.capacity_at_last_tx),k=BigInt(M.last_tx_timestamp),P=BigInt(S)-k,O=en,B=P*I/O,$=A+B;return $>I?I:$}catch(l){throw new Error(`Failed to get inbound capacity for chain ${e}: ${l instanceof Error?l.message:String(l)}`)}}async getInboundLimit(e){const n=await this.getPeer(e);if(!n)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);return n.inboundLimit}async*setInboundLimit(e,n,s){const c=await this.getAdminCapId(),a=await this.getPackageId(),l=await this.getPeer(e);if(!l)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);const y=new p.Transaction,M=w.chainToChainId(e),S=l.address.address.toUint8Array(),I=Array.from(S);try{const k=await this.getPackageIdFromObject(this.contracts.coreBridge),P=y.moveCall({target:`${k}::bytes32::from_bytes`,arguments:[y.pure.vector("u8",I)]}),O=y.moveCall({target:`${k}::external_address::new`,arguments:[P]});y.moveCall({target:`${a}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[y.object(c),y.object(this.contracts.ntt.manager),y.pure.u16(M),O,y.pure.u8(l.tokenDecimals),y.pure.u64(n.toString()),y.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(k){throw new Error(`Failed to create setInboundLimit transaction: ${k instanceof Error?k.message:String(k)}`)}yield new p.SuiUnsignedTransaction(y,this.network,this.chain,"Set Inbound Limit")}async getRateLimitDuration(){return en}async getIsApproved(e){const n=await this.getInboxItem(e);if(!n)return!1;const{inboxItemFields:s,threshold:c}=n,a=s.votes;let l=0;return a?.fields?.bitmap&&(l=xi(parseInt(a.fields.bitmap))),l>=c}async getIsExecuted(e){return(await this.getTransferReleaseStatus(e))?.$kind==="Released"}async getIsTransferInboundQueued(e){return(await this.getTransferReleaseStatus(e))?.$kind==="ReleaseAfter"}async getInboundQueuedTransfer(e,n){const s={emitterChain:e,payload:{nttManagerPayload:n}},c=await this.getTransferReleaseStatus(s);if(c?.$kind!=="ReleaseAfter")return null;const a=parseInt(c.ReleaseAfter),l=await this.getInboxItem(s);if(!l)return null;const{inboxItemFields:y}=l,M=y.data||{};let S;if(n.payload?.recipientAddress)S=n.payload.recipientAddress;else if(M.recipient)S=w.toUniversal(this.chain,M.recipient);else if(M.recipient_address)S=w.toUniversal(this.chain,M.recipient_address);else return null;let I;if(n.payload?.trimmedAmount)I=n.payload.trimmedAmount.amount;else if(M.amount)I=BigInt(M.amount.toString());else return null;return{recipient:S,amount:I,rateLimitExpiryTimestamp:a/1e3}}async*completeInboundQueuedTransfer(e,n,s){if(await this.isPaused())throw new Error("Contract is paused");const a={emitterChain:e,payload:{nttManagerPayload:n}};yield*this.redeem([a],s)}async getTransceiver(e){if(e!==0)return null;const n=this.contracts.ntt.transceiver?.wormhole;if(n){const s=this.chain,c=this;return{async getTransceiverType(){return"wormhole"},async getAddress(){const a=await et(c.provider,n);return{chain:s,address:w.toUniversal(s,a.fields.emitter_cap.fields.id.id)}},async*setPeer(a,l){yield*c.setTransceiverPeer(0,a,l)},async getPeer(a){return await c.getTransceiverPeer(0,a)},async*setPauser(){throw new Error("setPauser not implemented for Sui transceiver")},async getPauser(){return null},async*receive(){throw new Error("receive not implemented for Sui transceiver")}}}return null}async getTransceiverPeer(e,n){if(e!==0)return null;const s=this.contracts.ntt.transceiver?.wormhole;if(!s)return null;try{const c=await this.provider.getObject({id:s,options:{showContent:!0}});if(!c.data?.content||c.data.content.dataType!=="moveObject")return null;const l=c.data.content.fields.peers,y=w.chainToChainId(n),M=await this.provider.getDynamicFieldObject({parentId:l.fields.id.id,name:{type:"u16",value:y}});if(!M.data?.content||M.data.content.dataType!=="moveObject")return null;const I=M.data.content.fields.value.fields.value.fields.data,A=new Uint8Array(I);return{chain:n,address:w.toUniversal(n,A)}}catch(c){return console.error(c),null}}async getTransceiverType(e=0){if(e!==0)throw new Error(`Transceiver index ${e} not supported`);const n=this.contracts.ntt.transceiver?.wormhole;if(!n)throw new Error("Wormhole transceiver not found in contracts");const s=await this.provider.getObject({id:n,options:{showType:!0}});if(!s.data?.type)throw new Error("Unable to determine transceiver object type");const c=s.data.type.split("::")[0],a=new p.Transaction;a.moveCall({target:`${c}::transceiver::get_transceiver_type`,arguments:[]});const l=await this.provider.devInspectTransactionBlock({transactionBlock:a,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});if(l.results&&l.results.length>0){const y=l.results[0];if(y&&y.returnValues&&y.returnValues.length>0){const M=y.returnValues[0];if(M&&Array.isArray(M)&&M.length>0){const S=M[0];if(Array.isArray(S))return new TextDecoder().decode(new Uint8Array(S))}}}throw new Error("Failed to get transceiver info from response")}async verifyAddresses(){try{const e=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!e.data?.content||e.data.content.dataType!=="moveObject")return null;const c=e.data.content.fields.transceivers.fields.id.id,a=await this.provider.getDynamicFields({parentId:c}),l={manager:this.contracts.ntt.manager,token:await xt.extractTokenTypeFromSuiState(this.provider,this.contracts.ntt.manager),transceiver:{}};for(const S of a.data)if(S.name?.type?.includes("transceiver_registry::Key"))try{const I=await this.provider.getObject({id:S.objectId,options:{showContent:!0}});if(I.data?.content&&I.data.content.dataType==="moveObject"){const A=I.data.content.fields.value.fields,k=A.state_object_id;A.id===0&&(l.transceiver.wormhole=k)}}catch(I){console.warn(`Failed to read transceiver info: ${I}`)}const y={manager:this.contracts.ntt.manager,token:this.contracts.ntt.token,transceiver:this.contracts.ntt.transceiver||{}},M=(S,I)=>{for(const A in S)typeof S[A]=="object"&&S[A]!==null&&typeof I[A]=="object"&&I[A]!==null?(M(S[A],I[A]),Object.keys(S[A]).length===0&&delete S[A]):S[A]===I[A]&&delete S[A]};return M(l,y),Object.keys(l).length>0?l:null}catch(e){return console.warn(`Failed to verify addresses: ${e}`),null}}async getUpgradeCapId(){const e=await this.getNttState();if(!e.upgrade_cap_id)throw new Error("UpgradeCap ID not found in NTT state");return e.upgrade_cap_id}async addReleaseCall(e,n,s,c){const a=n.find(O=>O.payloadName==="WormholeTransfer");if(!a)throw new Error("No wormhole attestation found");const l=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!l.data?.content||l.data.content.dataType!=="moveObject")throw new Error("Failed to fetch manager state");const y=l.data.content,M=Jn(y.fields.inbox.type),S=a.payload.nttManagerPayload;let I;try{I=w.serialize(L.nativeTokenTransferLayout,S.payload)}catch(O){throw new Error(`Failed to serialize native token transfer payload: ${O instanceof Error?O.message:String(O)}`)}const A=await dt(this.provider,this.coreBridgeStateId),k=Zn(e,M,A,I,S.id,S.sender.toUint8Array()),[P]=e.moveCall({target:`${s}::upgrades::new_version_gated`,arguments:[]});if(!P)throw new Error("Failed to create version gated object");e.moveCall({target:`${s}::ntt::release`,typeArguments:[this.contracts.ntt.token],arguments:[e.object(this.contracts.ntt.manager),P,e.pure.u16(w.chainToChainId(a.emitterChain)),k,e.object(c),e.object(p.SUI_CLOCK_OBJECT_ID)]})}async addRedeemCall(e,n,s,c){const a=this.contracts.ntt.transceiver?.wormhole;if(!a)throw new Error("Wormhole transceiver not found in contracts");const l=await this.getPackageIdFromObject(a),y=await dt(this.provider,this.coreBridgeStateId),M=w.serialize$1(n),[S]=e.moveCall({target:`${y}::vaa::parse_and_verify`,arguments:[e.object(this.coreBridgeStateId),e.pure.vector("u8",Array.from(M)),e.object(p.SUI_CLOCK_OBJECT_ID)]});if(!S)throw new Error("Failed to parse VAA");const I=await this.getPackageId(),[A]=e.moveCall({target:`${l}::wormhole_transceiver::validate_message`,typeArguments:[`${I}::auth::ManagerAuth`],arguments:[e.object(a),S]});if(!A)throw new Error("Failed to validate VAA through transceiver");const k=e.moveCall({target:`${s}::upgrades::new_version_gated`,arguments:[]});e.moveCall({target:`${s}::ntt::redeem`,typeArguments:[this.contracts.ntt.token,`${l}::wormhole_transceiver::TransceiverAuth`],arguments:[e.object(this.contracts.ntt.manager),k,e.object(c),A,e.object(p.SUI_CLOCK_OBJECT_ID)]})}async getTransferReleaseStatus(e){const n=await this.getInboxItem(e);if(!n)return null;const{inboxItemFields:s}=n;return s.release_status}async getInboxItem(e){const n=await this.getNttState(),s=parseInt(n.threshold),c=Jn(n.inbox.type),a=this.contracts.ntt.token,l=e.emitterChain;if(!l)throw new Error("No emitter chain found in attestation");const y=w.chainToChainId(l),M=await this.getPackageId(),S=e.payload.nttManagerPayload;if(!S)throw new Error("No NTT manager payload found in attestation");let I;try{I=w.serialize(L.nativeTokenTransferLayout,S.payload)}catch($){throw new Error(`Failed to serialize native token transfer payload: ${$ instanceof Error?$.message:String($)}`)}const A=new p.Transaction,k=await dt(this.provider,this.contracts.coreBridge),P=Zn(A,c,k,I,S.id,S.sender.toUint8Array()),[O]=A.moveCall({target:`${M}::state::borrow_inbox_item`,typeArguments:[a],arguments:[A.object(this.contracts.ntt.manager),A.pure.u16(y),P]});A.moveCall({target:"0x2::bcs::to_bytes",typeArguments:[`${M}::inbox::InboxItem<${c}::native_token_transfer::NativeTokenTransfer>`],arguments:[O]});const B=await this.provider.devInspectTransactionBlock({transactionBlock:A,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});return Ci(B,s)}}class mn{network;chain;provider;contracts;executorId;executorRequestsId;coreBridgeStateId;nttContracts;constructor(e,n,s,c){if(this.network=e,this.chain=n,this.provider=s,this.contracts=c,!ut[e])throw new Error(`Network ${e} not supported`);this.executorId=ut[e].executorId,this.executorRequestsId=ut[e].executorRequestsId,this.coreBridgeStateId=ut[e].coreBridgeStateId,this.nttContracts=c.ntt}static async fromRpc(e,n){const[s,c]=await p.SuiPlatform.chainFromRpc(e),a=n[c];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new mn(s,c,e,a.contracts)}async*transfer(e,n,s,c,a,l=!1){if(new Date>c.expires)throw new Error("Quote has expired");if(!(await this.getSupportedDestinationChains()).includes(n.chain))throw new Error("Executor only supports Solana and EVM destination chains");const M=await this.createSuiNttTransferWithExecutor(e,n,c,a);yield new p.SuiUnsignedTransaction(M,this.network,this.chain,"NTT Transfer with Executor")}async createSuiNttTransferWithExecutor(e,n,s,c){const a=new p.Transaction,l=w.chainToChainId(n.chain),y=c.contracts.ntt.manager,M=c.contracts.ntt.token,S=fa(M),A=new p.SuiAddress(S?p.SuiPlatform.nativeTokenId(this.network,this.chain).address:M).getCoinType(),{packageId:k,fields:P}=await Hn(c.provider,y),[O]=await ki(c.provider,P.transceivers.fields.id.id);if(!O)throw new Error("No transceiver state ID found");const{packageId:B}=await Hn(c.provider,O);let $;try{n.address.toUniversalAddress?$=n.address.toUniversalAddress().toUint8Array():$=n.address.toUint8Array()}catch(o){throw new Error(`Failed to convert destination address to bytes: ${o instanceof Error?o.message:String(o)}`)}const D=await un(this.network,this.contracts.ntt.token);let W;if(!S){const o=await p.SuiPlatform.getCoins(this.provider,e,A),[h,...C]=o.filter(x=>p.isSameType(x.coinType,A));if(h===void 0)throw new Error(`Coins array doesn't contain any coins of type ${A}`);W=a.object(h.coinObjectId),C.length&&a.mergeCoins(W,C.map(x=>a.object(x.coinObjectId)))}const[N]=S?a.splitCoins(a.gas,[a.pure.u64(s.remainingAmount)]):a.splitCoins(W,[a.pure.u64(s.remainingAmount)]),[U]=a.moveCall({target:`${k}::upgrades::new_version_gated`,arguments:[]}),[z,K]=a.moveCall({target:`${k}::ntt::prepare_transfer`,typeArguments:[A],arguments:[a.object(y),N,a.object(D),a.pure.u16(l),a.pure.vector("u8",Array.from($)),a.pure.option("vector<u8>",null),a.pure.bool(!1)]}),[X]=a.moveCall({target:`${k}::state::get_chain_id`,typeArguments:[A],arguments:[a.object(y)]}),[Ue]=a.moveCall({target:`${k}::state::get_next_sequence`,typeArguments:[A],arguments:[a.object(y)]}),Fe=await dt(this.provider,this.coreBridgeStateId),[Le]=a.moveCall({target:`${Fe}::bytes32::to_bytes`,arguments:[Ue]});a.moveCall({target:`${k}::ntt::transfer_tx_sender`,typeArguments:[A],arguments:[a.object(y),U,a.object(D),z,a.object(p.SUI_CLOCK_OBJECT_ID)]});const[F]=a.moveCall({target:`${k}::state::create_transceiver_message`,typeArguments:[`${B}::wormhole_transceiver::TransceiverAuth`,A],arguments:[a.object(y),Ue,a.object(p.SUI_CLOCK_OBJECT_ID)]}),[Z]=a.moveCall({target:`${B}::wormhole_transceiver::release_outbound`,typeArguments:[`${k}::auth::ManagerAuth`],arguments:[a.object(O),F]}),[d]=a.splitCoins(a.gas,[a.pure.u64(0n)]);a.moveCall({target:`${Fe}::publish_message::publish_message`,arguments:[a.object(this.coreBridgeStateId),d,Z,a.object(p.SUI_CLOCK_OBJECT_ID)]});const[t]=a.moveCall({target:"0x2::coin::from_balance",typeArguments:[A],arguments:[K]});if(S?a.mergeCoins(a.gas,[t]):a.transferObjects([t],`0x${w.Buffer.from(e.address).toString("hex")}`),s.referrerFee>0n){const o=`0x${w.Buffer.from(s.referrer.address.toUint8Array()).toString("hex")}`,[h]=S?a.splitCoins(a.gas,[a.pure.u64(s.referrerFee)]):a.splitCoins(W,[a.pure.u64(s.referrerFee)]);a.transferObjects([h],o)}const r=w.Buffer.from(y.substring(2),"hex"),[u]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_ntt_v1_request`,arguments:[X,a.pure.vector("u8",r),Le]}),[f]=a.splitCoins(a.gas,[a.pure.u64(s.estimatedCost)]);let g;if(n.chain==="Solana"){const o=n.address.toString();g=`0x${new p.PublicKey(o).toBuffer().toString("hex")}`}else g=n.address.toString(),g.startsWith("0x")||(g=`0x${g}`);let v;const b=(await c.getPeer(n.chain))?.address;b&&(v=b.address.toString());let m;return v?m=v:m=g,a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[f,a.object(p.SUI_CLOCK_OBJECT_ID),a.pure.u16(l),a.pure.address(m),a.pure.address(typeof e=="string"?e:`0x${Array.from(e.address||[]).map(o=>o.toString(16).padStart(2,"0")).join("")}`),a.pure.vector("u8",Array.from(s.signedQuote)),u,a.pure.vector("u8",Array.from(s.relayInstructions))]}),a}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:20000000n}}getSupportedDestinationChains(){return["Solana","Ethereum","Bsc","Polygon","Avalanche","Arbitrum","Optimism","Base"]}}w.registerProtocol(p._platform$1,"Ntt",xt);w.registerProtocol(p._platform$1,"NttWithExecutor",mn);const _i=(i,e)=>[aa(i),sa(i),ia({ntt:i,...e})];exports.nttAutomaticRoute=sa;exports.nttExecutorRoute=ia;exports.nttManualRoute=aa;exports.nttRoutes=_i;
649
+ `),a=(await n.query({query:s})).data?.objects.nodes?.[0]?.address;if(!a)throw new Error(`CoinMetadata object not found for type ${e}`);return a}class xt{contracts;coreBridgeStateId;static async extractTokenTypeFromSuiState(e,n){const s=await e.getObject({id:n,options:{showType:!0}});if(!s.data?.type)throw new Error("Failed to fetch state object type");const c=s.data.type,a=c.indexOf("<"),l=c.lastIndexOf(">");if(a===-1||l===-1)throw new Error(`No generic type parameter found in state object type: ${c}`);return c.substring(a+1,l)}async getNttState(){try{return(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields}catch(e){throw new Error(`Failed to fetch NTT state object: ${e instanceof Error?e.message:String(e)}`)}}network;chain;provider;adminCapId;packageId;constructor(e,n,s,c){if(this.contracts=c,!c.ntt)throw new Error("NTT contracts not found");if(!c.coreBridge)throw new Error("Core Bridge contract not found");this.network=e,this.chain=n,this.provider=s,this.coreBridgeStateId=ut[e].coreBridgeStateId}static async fromRpc(e,n){const[s,c]=await p.SuiPlatform.chainFromRpc(e),a=n[c];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);if(!("ntt"in a.contracts))throw new Error("Ntt contracts not found");const l=a.contracts.ntt;return new xt(s,c,e,{...a.contracts,ntt:l})}async getMode(){const n=(await this.getNttState()).mode;if(n.variant==="Locking")return"locking";if(n.variant==="Burning")return"burning";throw new Error("Invalid mode in NTT state")}async isPaused(){return(await this.getNttState()).paused}async getAdminCapId(){if(this.adminCapId)return this.adminCapId;const e=await this.getNttState();if(!e.admin_cap_id)throw new Error("AdminCap ID not found in NTT state");return this.adminCapId=e.admin_cap_id,this.adminCapId}async getPackageId(){if(this.packageId)return this.packageId;const e=await this.getPackageIdFromObject(this.contracts.ntt.manager);return this.packageId=e,this.packageId}async getPackageIdFromObject(e){return(await Pi(this.provider,e)).current}async getOwner(){const e=await this.getAdminCapId();try{const n=await this.provider.getObject({id:e,options:{showOwner:!0}});if(!n.data?.owner)throw new Error("Could not fetch AdminCap owner information");let s;if(typeof n.data.owner=="object"&&"AddressOwner"in n.data.owner)s=n.data.owner.AddressOwner;else if(typeof n.data.owner=="string")s=n.data.owner;else throw new Error(`AdminCap has unexpected owner type: ${JSON.stringify(n.data.owner)}`);return s}catch(n){throw new Error(`Failed to get AdminCap owner: ${n}`)}}async getPauser(){return this.getOwner()}async getThreshold(){const e=await this.getNttState();return parseInt(e.threshold,10)}async*setThreshold(e,n){const s=await this.getAdminCapId(),c=await this.getPackageId(),a=new p.Transaction;a.moveCall({target:`${c}::state::set_threshold`,typeArguments:[this.contracts.ntt.token],arguments:[a.object(s),a.object(this.contracts.ntt.manager),a.pure.u8(e)]}),yield new p.SuiUnsignedTransaction(a,this.network,this.chain,"Set Threshold")}async getTokenDecimals(){const e=await this.provider.getCoinMetadata({coinType:this.contracts.ntt.token});if(!e?.decimals)throw new Error(`CoinMetadata not found for ${this.contracts.ntt.token}`);return e.decimals}async getCustodyAddress(){return this.contracts.ntt.manager}async*pause(){const e=await this.getAdminCapId(),n=await this.getPackageId(),s=new p.Transaction;s.moveCall({target:`${n}::state::pause`,typeArguments:[this.contracts.ntt.token],arguments:[s.object(e),s.object(this.contracts.ntt.manager)]}),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Pause Contract")}async*unpause(){const e=await this.getAdminCapId(),n=await this.getPackageId(),s=new p.Transaction;s.moveCall({target:`${n}::state::unpause`,typeArguments:[this.contracts.ntt.token],arguments:[s.object(e),s.object(this.contracts.ntt.manager)]}),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Unpause Contract")}async*setOwner(e,n){const s=new p.Transaction,c=await this.getAdminCapId(),a=await this.getUpgradeCapId();s.transferObjects([s.object(c),s.object(a)],e.toString()),yield new p.SuiUnsignedTransaction(s,this.network,this.chain,"Transfer Ownership")}async*setPauser(e,n){throw new Error("setPauser not supported: owner and pauser are the same in Sui NTT. Use setOwner instead.")}async*setPeer(e,n,s,c){const a=await this.getAdminCapId(),l=await this.getPackageId(),y=new p.Transaction,M=w.chainToChainId(e.chain),S=e.address.toUint8Array();try{const A=await this.getPackageIdFromObject(this.contracts.coreBridge),k=y.moveCall({target:`${A}::bytes32::from_bytes`,arguments:[y.pure.vector("u8",S)]}),P=y.moveCall({target:`${A}::external_address::new`,arguments:[k]});y.moveCall({target:`${l}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[y.object(a),y.object(this.contracts.ntt.manager),y.pure.u16(M),P,y.pure.u8(n),y.pure.u64(s.toString()),y.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(A){throw new Error(`Failed to create setPeer transaction: ${A instanceof Error?A.message:String(A)}`)}yield new p.SuiUnsignedTransaction(y,this.network,this.chain,"Set Peer")}async getPeer(e){const n=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!n.data?.content||n.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const c=n.data.content.fields.peers,a=w.chainToChainId(e);try{const l=await this.provider.getDynamicFieldObject({parentId:c.fields.id.id,name:{type:"u16",value:a}});if(!l.data?.content||l.data.content.dataType!=="moveObject")return null;const y=l.data.content.fields.value.fields,S=y.address.fields.value.fields.data,I=new Uint8Array(S),A={chain:e,address:w.toUniversal(e,I)},k=parseInt(y.token_decimals,10),P=y.inbound_rate_limit.fields,O=BigInt(P.limit);return{address:A,tokenDecimals:k,inboundLimit:O}}catch(l){return console.error(l),null}}async*setTransceiverPeer(e,n,s){if(e!==0)throw new Error("Only transceiver index 0 (wormhole) is currently supported");const c=this.contracts.ntt.transceiver?.wormhole;if(!c)throw new Error("Wormhole transceiver not found in contracts");const a=await this.getPackageIdFromObject(c),M=(await et(this.provider,c,"Failed to fetch transceiver state object")).fields.admin_cap_id,S=new p.Transaction,I=w.chainToChainId(n.chain),A=n.address.toUint8Array(),k=Array.from(A);try{const O=await this.getPackageIdFromObject(this.contracts.coreBridge),B=S.moveCall({target:`${O}::bytes32::from_bytes`,arguments:[S.pure.vector("u8",k)]}),$=S.moveCall({target:`${O}::external_address::new`,arguments:[B]}),D=await this.getPackageId(),W=S.moveCall({target:`${a}::wormhole_transceiver::set_peer`,typeArguments:[`${D}::auth::ManagerAuth`],arguments:[S.object(M),S.object(c),S.pure.u16(I),$]}),N=this.contracts.coreBridge,[U]=S.splitCoins(S.gas,[0]);S.moveCall({target:`${O}::publish_message::publish_message`,arguments:[S.object(N),U,W,S.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(O){throw new Error(`Failed to create setTransceiverPeer transaction: ${O instanceof Error?O.message:String(O)}`)}yield new p.SuiUnsignedTransaction(S,this.network,this.chain,"Set Transceiver Peer")}async*transfer(e,n,s,c){const a=await this.getPackageId(),l=new p.Transaction,y=w.chainToChainId(s.chain);let M;try{if(typeof s.address.toUint8Array=="function")M=s.address.toUint8Array();else if(typeof s.address.toUniversalAddress=="function"){const F=s.address.toUniversalAddress();if(!F)throw new Error("toUniversalAddress() returned null or undefined");M=F.toUint8Array()}else throw new Error(`destination.address does not have expected methods. Type: ${typeof s.address}`)}catch(F){throw new Error(`Failed to convert destination address to bytes: ${F instanceof Error?F.message:String(F)}`)}const S=await un(this.network,this.contracts.ntt.token),I=this.contracts.ntt.token,A=fa(I),P=new p.SuiAddress(A?p.SuiPlatform.nativeTokenId(this.network,this.chain).address:I).getCoinType(),[O]=await(async()=>{if(A)return l.splitCoins(l.gas,[n]);{const F=await p.SuiPlatform.getCoins(this.provider,e,P);if(F.length===0)throw new Error(`No coins found for token type ${P}`);const[Z,...d]=F;if(!Z)throw new Error(`No primary coin found for token type ${P}`);const t=l.object(Z.coinObjectId);return d.length>0&&l.mergeCoins(t,d.map(r=>l.object(r.coinObjectId))),l.splitCoins(t,[n])}})(),[B]=l.moveCall({target:`${a}::upgrades::new_version_gated`,arguments:[]}),[$,D]=l.moveCall({target:`${a}::ntt::prepare_transfer`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager),O,l.object(S),l.pure.u16(y),l.pure.vector("u8",M),l.pure.option("vector<u8>",null),l.pure.bool(c.queue||!1)]}),[W]=l.moveCall({target:`${a}::state::get_next_sequence`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager)]}),N=await dt(this.provider,this.coreBridgeStateId);l.moveCall({target:`${a}::ntt::transfer_tx_sender`,typeArguments:[P],arguments:[l.object(this.contracts.ntt.manager),B,l.object(S),$,l.object(p.SUI_CLOCK_OBJECT_ID)]});const U=this.contracts.ntt.transceiver?.wormhole;if(!U)throw new Error("Wormhole transceiver not found in contracts");const z=await this.getPackageIdFromObject(U),[K]=l.moveCall({target:`${a}::state::create_transceiver_message`,typeArguments:[`${z}::wormhole_transceiver::TransceiverAuth`,P],arguments:[l.object(this.contracts.ntt.manager),W,l.object(p.SUI_CLOCK_OBJECT_ID)]}),[X]=l.moveCall({target:`${z}::wormhole_transceiver::release_outbound`,typeArguments:[`${a}::auth::ManagerAuth`],arguments:[l.object(U),K]}),[Ue]=l.splitCoins(l.gas,[l.pure.u64(0n)]);l.moveCall({target:`${N}::publish_message::publish_message`,arguments:[l.object(this.coreBridgeStateId),Ue,X,l.object(p.SUI_CLOCK_OBJECT_ID)]});const[Fe]=l.moveCall({target:"0x2::coin::from_balance",typeArguments:[P],arguments:[D]});A?l.mergeCoins(l.gas,[Fe]):l.transferObjects([Fe],e.toString()),yield new p.SuiUnsignedTransaction(l,this.network,this.chain,"NTT Transfer")}async*redeem(e,n){if(await this.isPaused())throw new Error("Contract is paused");if(e.length===0)throw new Error("No attestations provided");const c=await this.getPackageId(),a=await un(this.network,this.contracts.ntt.token),l=new p.Transaction;for(const M of e)await this.addRedeemCall(l,M,c,a);await this.addReleaseCall(l,e,c,a),yield new p.SuiUnsignedTransaction(l,this.network,this.chain,"Redeem NTT Transfer")}async quoteDeliveryPrice(e,n){throw new Error("Not implemented")}async isRelayingAvailable(e){return!1}async getCurrentOutboundCapacity(){const s=(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields,c=Date.now(),a=BigInt(s.limit),l=BigInt(s.capacity_at_last_tx),y=BigInt(s.last_tx_timestamp),M=BigInt(c)-y,S=en,I=M*a/S,A=l+I;return A>a?a:A}async getOutboundLimit(){const s=(await et(this.provider,this.contracts.ntt.manager,"Failed to fetch NTT state object")).fields.outbox.fields.rate_limit.fields;return BigInt(s.limit)}async*setOutboundLimit(e,n){const s=await this.getAdminCapId();if(!s)throw new Error("AdminCap ID not found");const c=await this.getPackageId();if(!c)throw new Error("Package ID not found");const a=new p.Transaction;a.moveCall({target:`${c}::state::set_outbound_rate_limit`,typeArguments:[this.contracts.ntt.token],arguments:[a.object(s),a.object(this.contracts.ntt.manager),a.pure.u64(e.toString()),a.object(p.SUI_CLOCK_OBJECT_ID)]}),yield new p.SuiUnsignedTransaction(a,this.network,this.chain,"Set Outbound Limit")}async getCurrentInboundCapacity(e){const n=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!n.data?.content||n.data.content.dataType!=="moveObject")throw new Error("Failed to fetch NTT state object");const c=n.data.content.fields.peers,a=w.chainToChainId(e);try{const l=await this.provider.getDynamicFieldObject({parentId:c.fields.id.id,name:{type:"u16",value:a}});if(!l.data?.content||l.data.content.dataType!=="moveObject")throw new Error(`No peer found for chain ${e}`);const M=l.data.content.fields.value.fields.inbound_rate_limit.fields,S=Date.now(),I=BigInt(M.limit),A=BigInt(M.capacity_at_last_tx),k=BigInt(M.last_tx_timestamp),P=BigInt(S)-k,O=en,B=P*I/O,$=A+B;return $>I?I:$}catch(l){throw new Error(`Failed to get inbound capacity for chain ${e}: ${l instanceof Error?l.message:String(l)}`)}}async getInboundLimit(e){const n=await this.getPeer(e);if(!n)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);return n.inboundLimit}async*setInboundLimit(e,n,s){const c=await this.getAdminCapId(),a=await this.getPackageId(),l=await this.getPeer(e);if(!l)throw new Error(`No peer found for chain ${e}. Set up the peer first using setPeer.`);const y=new p.Transaction,M=w.chainToChainId(e),S=l.address.address.toUint8Array(),I=Array.from(S);try{const k=await this.getPackageIdFromObject(this.contracts.coreBridge),P=y.moveCall({target:`${k}::bytes32::from_bytes`,arguments:[y.pure.vector("u8",I)]}),O=y.moveCall({target:`${k}::external_address::new`,arguments:[P]});y.moveCall({target:`${a}::state::set_peer`,typeArguments:[this.contracts.ntt.token],arguments:[y.object(c),y.object(this.contracts.ntt.manager),y.pure.u16(M),O,y.pure.u8(l.tokenDecimals),y.pure.u64(n.toString()),y.object(p.SUI_CLOCK_OBJECT_ID)]})}catch(k){throw new Error(`Failed to create setInboundLimit transaction: ${k instanceof Error?k.message:String(k)}`)}yield new p.SuiUnsignedTransaction(y,this.network,this.chain,"Set Inbound Limit")}async getRateLimitDuration(){return en}async getIsApproved(e){const n=await this.getInboxItem(e);if(!n)return!1;const{inboxItemFields:s,threshold:c}=n,a=s.votes;let l=0;return a?.fields?.bitmap&&(l=xi(parseInt(a.fields.bitmap))),l>=c}async getIsExecuted(e){return(await this.getTransferReleaseStatus(e))?.$kind==="Released"}async getIsTransferInboundQueued(e){return(await this.getTransferReleaseStatus(e))?.$kind==="ReleaseAfter"}async getInboundQueuedTransfer(e,n){const s={emitterChain:e,payload:{nttManagerPayload:n}},c=await this.getTransferReleaseStatus(s);if(c?.$kind!=="ReleaseAfter")return null;const a=parseInt(c.ReleaseAfter),l=await this.getInboxItem(s);if(!l)return null;const{inboxItemFields:y}=l,M=y.data||{};let S;if(n.payload?.recipientAddress)S=n.payload.recipientAddress;else if(M.recipient)S=w.toUniversal(this.chain,M.recipient);else if(M.recipient_address)S=w.toUniversal(this.chain,M.recipient_address);else return null;let I;if(n.payload?.trimmedAmount)I=n.payload.trimmedAmount.amount;else if(M.amount)I=BigInt(M.amount.toString());else return null;return{recipient:S,amount:I,rateLimitExpiryTimestamp:a/1e3}}async*completeInboundQueuedTransfer(e,n,s){if(await this.isPaused())throw new Error("Contract is paused");const a={emitterChain:e,payload:{nttManagerPayload:n}};yield*this.redeem([a],s)}async getTransceiver(e){if(e!==0)return null;const n=this.contracts.ntt.transceiver?.wormhole;if(n){const s=this.chain,c=this;return{async getTransceiverType(){return"wormhole"},async getAddress(){const a=await et(c.provider,n);return{chain:s,address:w.toUniversal(s,a.fields.emitter_cap.fields.id.id)}},async*setPeer(a,l){yield*c.setTransceiverPeer(0,a,l)},async getPeer(a){return await c.getTransceiverPeer(0,a)},async*setPauser(){throw new Error("setPauser not implemented for Sui transceiver")},async getPauser(){return null},async*receive(){throw new Error("receive not implemented for Sui transceiver")}}}return null}async getTransceiverPeer(e,n){if(e!==0)return null;const s=this.contracts.ntt.transceiver?.wormhole;if(!s)return null;try{const c=await this.provider.getObject({id:s,options:{showContent:!0}});if(!c.data?.content||c.data.content.dataType!=="moveObject")return null;const l=c.data.content.fields.peers,y=w.chainToChainId(n),M=await this.provider.getDynamicFieldObject({parentId:l.fields.id.id,name:{type:"u16",value:y}});if(!M.data?.content||M.data.content.dataType!=="moveObject")return null;const I=M.data.content.fields.value.fields.value.fields.data,A=new Uint8Array(I);return{chain:n,address:w.toUniversal(n,A)}}catch(c){return console.error(c),null}}async getTransceiverType(e=0){if(e!==0)throw new Error(`Transceiver index ${e} not supported`);const n=this.contracts.ntt.transceiver?.wormhole;if(!n)throw new Error("Wormhole transceiver not found in contracts");const s=await this.provider.getObject({id:n,options:{showType:!0}});if(!s.data?.type)throw new Error("Unable to determine transceiver object type");const c=s.data.type.split("::")[0],a=new p.Transaction;a.moveCall({target:`${c}::transceiver::get_transceiver_type`,arguments:[]});const l=await this.provider.devInspectTransactionBlock({transactionBlock:a,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});if(l.results&&l.results.length>0){const y=l.results[0];if(y&&y.returnValues&&y.returnValues.length>0){const M=y.returnValues[0];if(M&&Array.isArray(M)&&M.length>0){const S=M[0];if(Array.isArray(S))return new TextDecoder().decode(new Uint8Array(S))}}}throw new Error("Failed to get transceiver info from response")}async verifyAddresses(){try{const e=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!e.data?.content||e.data.content.dataType!=="moveObject")return null;const c=e.data.content.fields.transceivers.fields.id.id,a=await this.provider.getDynamicFields({parentId:c}),l={manager:this.contracts.ntt.manager,token:await xt.extractTokenTypeFromSuiState(this.provider,this.contracts.ntt.manager),transceiver:{}};for(const S of a.data)if(S.name?.type?.includes("transceiver_registry::Key"))try{const I=await this.provider.getObject({id:S.objectId,options:{showContent:!0}});if(I.data?.content&&I.data.content.dataType==="moveObject"){const A=I.data.content.fields.value.fields,k=A.state_object_id;A.id===0&&(l.transceiver.wormhole=k)}}catch(I){console.warn(`Failed to read transceiver info: ${I}`)}const y={manager:this.contracts.ntt.manager,token:this.contracts.ntt.token,transceiver:this.contracts.ntt.transceiver||{}},M=(S,I)=>{for(const A in S)typeof S[A]=="object"&&S[A]!==null&&typeof I[A]=="object"&&I[A]!==null?(M(S[A],I[A]),Object.keys(S[A]).length===0&&delete S[A]):S[A]===I[A]&&delete S[A]};return M(l,y),Object.keys(l).length>0?l:null}catch(e){return console.warn(`Failed to verify addresses: ${e}`),null}}async getUpgradeCapId(){const e=await this.getNttState();if(!e.upgrade_cap_id)throw new Error("UpgradeCap ID not found in NTT state");return e.upgrade_cap_id}async addReleaseCall(e,n,s,c){const a=n.find(O=>O.payloadName==="WormholeTransfer");if(!a)throw new Error("No wormhole attestation found");const l=await this.provider.getObject({id:this.contracts.ntt.manager,options:{showContent:!0}});if(!l.data?.content||l.data.content.dataType!=="moveObject")throw new Error("Failed to fetch manager state");const y=l.data.content,M=Jn(y.fields.inbox.type),S=a.payload.nttManagerPayload;let I;try{I=w.serialize(L.nativeTokenTransferLayout,S.payload)}catch(O){throw new Error(`Failed to serialize native token transfer payload: ${O instanceof Error?O.message:String(O)}`)}const A=await dt(this.provider,this.coreBridgeStateId),k=Zn(e,M,A,I,S.id,S.sender.toUint8Array()),[P]=e.moveCall({target:`${s}::upgrades::new_version_gated`,arguments:[]});if(!P)throw new Error("Failed to create version gated object");e.moveCall({target:`${s}::ntt::release`,typeArguments:[this.contracts.ntt.token],arguments:[e.object(this.contracts.ntt.manager),P,e.pure.u16(w.chainToChainId(a.emitterChain)),k,e.object(c),e.object(p.SUI_CLOCK_OBJECT_ID)]})}async addRedeemCall(e,n,s,c){const a=this.contracts.ntt.transceiver?.wormhole;if(!a)throw new Error("Wormhole transceiver not found in contracts");const l=await this.getPackageIdFromObject(a),y=await dt(this.provider,this.coreBridgeStateId),M=w.serialize$1(n),[S]=e.moveCall({target:`${y}::vaa::parse_and_verify`,arguments:[e.object(this.coreBridgeStateId),e.pure.vector("u8",Array.from(M)),e.object(p.SUI_CLOCK_OBJECT_ID)]});if(!S)throw new Error("Failed to parse VAA");const I=await this.getPackageId(),[A]=e.moveCall({target:`${l}::wormhole_transceiver::validate_message`,typeArguments:[`${I}::auth::ManagerAuth`],arguments:[e.object(a),S]});if(!A)throw new Error("Failed to validate VAA through transceiver");const k=e.moveCall({target:`${s}::upgrades::new_version_gated`,arguments:[]});e.moveCall({target:`${s}::ntt::redeem`,typeArguments:[this.contracts.ntt.token,`${l}::wormhole_transceiver::TransceiverAuth`],arguments:[e.object(this.contracts.ntt.manager),k,e.object(c),A,e.object(p.SUI_CLOCK_OBJECT_ID)]})}async getTransferReleaseStatus(e){const n=await this.getInboxItem(e);if(!n)return null;const{inboxItemFields:s}=n;return s.release_status}async getInboxItem(e){const n=await this.getNttState(),s=parseInt(n.threshold),c=Jn(n.inbox.type),a=this.contracts.ntt.token,l=e.emitterChain;if(!l)throw new Error("No emitter chain found in attestation");const y=w.chainToChainId(l),M=await this.getPackageId(),S=e.payload.nttManagerPayload;if(!S)throw new Error("No NTT manager payload found in attestation");let I;try{I=w.serialize(L.nativeTokenTransferLayout,S.payload)}catch($){throw new Error(`Failed to serialize native token transfer payload: ${$ instanceof Error?$.message:String($)}`)}const A=new p.Transaction,k=await dt(this.provider,this.contracts.coreBridge),P=Zn(A,c,k,I,S.id,S.sender.toUint8Array()),[O]=A.moveCall({target:`${M}::state::borrow_inbox_item`,typeArguments:[a],arguments:[A.object(this.contracts.ntt.manager),A.pure.u16(y),P]});A.moveCall({target:"0x2::bcs::to_bytes",typeArguments:[`${M}::inbox::InboxItem<${c}::native_token_transfer::NativeTokenTransfer>`],arguments:[O]});const B=await this.provider.devInspectTransactionBlock({transactionBlock:A,sender:"0x0000000000000000000000000000000000000000000000000000000000000000"});return Ci(B,s)}}class mn{network;chain;provider;contracts;executorId;executorRequestsId;coreBridgeStateId;nttContracts;constructor(e,n,s,c){if(this.network=e,this.chain=n,this.provider=s,this.contracts=c,!ut[e])throw new Error(`Network ${e} not supported`);this.executorId=ut[e].executorId,this.executorRequestsId=ut[e].executorRequestsId,this.coreBridgeStateId=ut[e].coreBridgeStateId,this.nttContracts=c.ntt}static async fromRpc(e,n){const[s,c]=await p.SuiPlatform.chainFromRpc(e),a=n[c];if(a.network!==s)throw new Error(`Network mismatch: ${a.network} != ${s}`);return new mn(s,c,e,a.contracts)}async*transfer(e,n,s,c,a,l=!1){if(new Date>c.expires)throw new Error("Quote has expired");if(!this.isSupportedDestinationChain(n.chain))throw new Error("Executor only supports Solana and EVM destination chains");const y=await this.createSuiNttTransferWithExecutor(e,n,c,a);yield new p.SuiUnsignedTransaction(y,this.network,this.chain,"NTT Transfer with Executor")}async createSuiNttTransferWithExecutor(e,n,s,c){const a=new p.Transaction,l=w.chainToChainId(n.chain),y=c.contracts.ntt.manager,M=c.contracts.ntt.token,S=fa(M),A=new p.SuiAddress(S?p.SuiPlatform.nativeTokenId(this.network,this.chain).address:M).getCoinType(),{packageId:k,fields:P}=await Hn(c.provider,y),[O]=await ki(c.provider,P.transceivers.fields.id.id);if(!O)throw new Error("No transceiver state ID found");const{packageId:B}=await Hn(c.provider,O);let $;try{n.address.toUniversalAddress?$=n.address.toUniversalAddress().toUint8Array():$=n.address.toUint8Array()}catch(o){throw new Error(`Failed to convert destination address to bytes: ${o instanceof Error?o.message:String(o)}`)}const D=await un(this.network,this.contracts.ntt.token);let W;if(!S){const o=await p.SuiPlatform.getCoins(this.provider,e,A),[h,...C]=o.filter(x=>p.isSameType(x.coinType,A));if(h===void 0)throw new Error(`Coins array doesn't contain any coins of type ${A}`);W=a.object(h.coinObjectId),C.length&&a.mergeCoins(W,C.map(x=>a.object(x.coinObjectId)))}const[N]=S?a.splitCoins(a.gas,[a.pure.u64(s.remainingAmount)]):a.splitCoins(W,[a.pure.u64(s.remainingAmount)]),[U]=a.moveCall({target:`${k}::upgrades::new_version_gated`,arguments:[]}),[z,K]=a.moveCall({target:`${k}::ntt::prepare_transfer`,typeArguments:[A],arguments:[a.object(y),N,a.object(D),a.pure.u16(l),a.pure.vector("u8",Array.from($)),a.pure.option("vector<u8>",null),a.pure.bool(!1)]}),[X]=a.moveCall({target:`${k}::state::get_chain_id`,typeArguments:[A],arguments:[a.object(y)]}),[Ue]=a.moveCall({target:`${k}::state::get_next_sequence`,typeArguments:[A],arguments:[a.object(y)]}),Fe=await dt(this.provider,this.coreBridgeStateId),[Le]=a.moveCall({target:`${Fe}::bytes32::to_bytes`,arguments:[Ue]});a.moveCall({target:`${k}::ntt::transfer_tx_sender`,typeArguments:[A],arguments:[a.object(y),U,a.object(D),z,a.object(p.SUI_CLOCK_OBJECT_ID)]});const[F]=a.moveCall({target:`${k}::state::create_transceiver_message`,typeArguments:[`${B}::wormhole_transceiver::TransceiverAuth`,A],arguments:[a.object(y),Ue,a.object(p.SUI_CLOCK_OBJECT_ID)]}),[Z]=a.moveCall({target:`${B}::wormhole_transceiver::release_outbound`,typeArguments:[`${k}::auth::ManagerAuth`],arguments:[a.object(O),F]}),[d]=a.splitCoins(a.gas,[a.pure.u64(0n)]);a.moveCall({target:`${Fe}::publish_message::publish_message`,arguments:[a.object(this.coreBridgeStateId),d,Z,a.object(p.SUI_CLOCK_OBJECT_ID)]});const[t]=a.moveCall({target:"0x2::coin::from_balance",typeArguments:[A],arguments:[K]});if(S?a.mergeCoins(a.gas,[t]):a.transferObjects([t],`0x${w.Buffer.from(e.address).toString("hex")}`),s.referrerFee>0n){const o=`0x${w.Buffer.from(s.referrer.address.toUint8Array()).toString("hex")}`,[h]=S?a.splitCoins(a.gas,[a.pure.u64(s.referrerFee)]):a.splitCoins(W,[a.pure.u64(s.referrerFee)]);a.transferObjects([h],o)}const r=w.Buffer.from(y.substring(2),"hex"),[u]=a.moveCall({target:`${this.executorRequestsId}::executor_requests::make_ntt_v1_request`,arguments:[X,a.pure.vector("u8",r),Le]}),[f]=a.splitCoins(a.gas,[a.pure.u64(s.estimatedCost)]);let g;if(n.chain==="Solana"){const o=n.address.toString();g=`0x${new p.PublicKey(o).toBuffer().toString("hex")}`}else g=n.address.toString(),g.startsWith("0x")||(g=`0x${g}`);let v;const b=(await c.getPeer(n.chain))?.address;b&&(v=b.address.toString());let m;return v?m=v:m=g,a.moveCall({target:`${this.executorId}::executor::request_execution`,arguments:[f,a.object(p.SUI_CLOCK_OBJECT_ID),a.pure.u16(l),a.pure.address(m),a.pure.address(typeof e=="string"?e:`0x${Array.from(e.address||[]).map(o=>o.toString(16).padStart(2,"0")).join("")}`),a.pure.vector("u8",Array.from(s.signedQuote)),u,a.pure.vector("u8",Array.from(s.relayInstructions))]}),a}async estimateMsgValueAndGasLimit(e){return{msgValue:0n,gasLimit:20000000n}}isSupportedDestinationChain(e){const n=w.chainToPlatform(e);return n==="Solana"||n==="Evm"}}w.registerProtocol(p._platform$1,"Ntt",xt);w.registerProtocol(p._platform$1,"NttWithExecutor",mn);const _i=(i,e)=>[aa(i),sa(i),ia({ntt:i,...e})];exports.nttAutomaticRoute=sa;exports.nttExecutorRoute=ia;exports.nttManualRoute=aa;exports.nttRoutes=_i;