@allbridge/bridge-core-sdk 3.20.0 → 3.21.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (684) hide show
  1. package/dist/browser/index.js +1 -1
  2. package/dist/browser/index.js.map +4 -4
  3. package/dist/cjs/index.js +1 -1
  4. package/dist/cjs/index.js.map +4 -4
  5. package/dist/esm/index.js +1 -1
  6. package/dist/esm/index.js.map +4 -4
  7. package/dist/src/chains/chain.enums.d.ts +7 -2
  8. package/dist/src/chains/chain.enums.js +5 -0
  9. package/dist/src/chains/chain.enums.js.map +1 -1
  10. package/dist/src/chains/index.js +6 -0
  11. package/dist/src/chains/index.js.map +1 -1
  12. package/dist/src/client/core-api/api-client.js.map +1 -1
  13. package/dist/src/client/core-api/core-api-mapper.js +1 -0
  14. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  15. package/dist/src/client/core-api/core-api.model.d.ts +2 -1
  16. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  17. package/dist/src/client/core-api/core-client-filtered.js.map +1 -1
  18. package/dist/src/client/core-api/core-client-pool-info-caching.js.map +1 -1
  19. package/dist/src/configs/mainnet.js +2 -1
  20. package/dist/src/configs/mainnet.js.map +1 -1
  21. package/dist/src/exceptions/exceptions.js.map +1 -1
  22. package/dist/src/index.js.map +1 -1
  23. package/dist/src/models/index.d.ts +1 -1
  24. package/dist/src/models/index.js.map +1 -1
  25. package/dist/src/services/bridge/evm/index.js +4 -57
  26. package/dist/src/services/bridge/evm/index.js.map +1 -1
  27. package/dist/src/services/bridge/get-cctp-sol-token-recipient-address.d.ts +5 -0
  28. package/dist/src/services/bridge/get-cctp-sol-token-recipient-address.js +66 -0
  29. package/dist/src/services/bridge/get-cctp-sol-token-recipient-address.js.map +1 -0
  30. package/dist/src/services/bridge/index.js +4 -0
  31. package/dist/src/services/bridge/index.js.map +1 -1
  32. package/dist/src/services/bridge/models/bridge.model.d.ts +4 -2
  33. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  34. package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
  35. package/dist/src/services/bridge/sol/index.js.map +1 -1
  36. package/dist/src/services/bridge/sol/jupiter.js.map +1 -1
  37. package/dist/src/services/bridge/srb/index.js.map +1 -1
  38. package/dist/src/services/bridge/sui/index.d.ts +20 -0
  39. package/dist/src/services/bridge/sui/index.js +238 -0
  40. package/dist/src/services/bridge/sui/index.js.map +1 -0
  41. package/dist/src/services/bridge/trx/index.js.map +1 -1
  42. package/dist/src/services/bridge/utils.d.ts +5 -4
  43. package/dist/src/services/bridge/utils.js +41 -4
  44. package/dist/src/services/bridge/utils.js.map +1 -1
  45. package/dist/src/services/index.js.map +1 -1
  46. package/dist/src/services/liquidity-pool/evm/index.js.map +1 -1
  47. package/dist/src/services/liquidity-pool/index.js +4 -0
  48. package/dist/src/services/liquidity-pool/index.js.map +1 -1
  49. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js.map +1 -1
  50. package/dist/src/services/liquidity-pool/sol/index.js.map +1 -1
  51. package/dist/src/services/liquidity-pool/srb/index.js.map +1 -1
  52. package/dist/src/services/liquidity-pool/sui/index.d.ts +19 -0
  53. package/dist/src/services/liquidity-pool/sui/index.js +216 -0
  54. package/dist/src/services/liquidity-pool/sui/index.js.map +1 -0
  55. package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
  56. package/dist/src/services/models/index.d.ts +1 -0
  57. package/dist/src/services/models/index.js.map +1 -1
  58. package/dist/src/services/models/srb/bridge-contract.js.map +1 -1
  59. package/dist/src/services/models/srb/gas-oracle-contract.js.map +1 -1
  60. package/dist/src/services/models/srb/messenger-contract.js.map +1 -1
  61. package/dist/src/services/models/srb/pool-contract.js.map +1 -1
  62. package/dist/src/services/models/srb/token-contract.js.map +1 -1
  63. package/dist/src/services/models/sui/_dependencies/source/0x1/ascii/structs.d.ts +91 -0
  64. package/dist/src/services/models/sui/_dependencies/source/0x1/ascii/structs.js +292 -0
  65. package/dist/src/services/models/sui/_dependencies/source/0x1/ascii/structs.js.map +1 -0
  66. package/dist/src/services/models/sui/_dependencies/source/0x1/bit-vector/structs.d.ts +55 -0
  67. package/dist/src/services/models/sui/_dependencies/source/0x1/bit-vector/structs.js +172 -0
  68. package/dist/src/services/models/sui/_dependencies/source/0x1/bit-vector/structs.js.map +1 -0
  69. package/dist/src/services/models/sui/_dependencies/source/0x1/fixed-point32/structs.d.ts +45 -0
  70. package/dist/src/services/models/sui/_dependencies/source/0x1/fixed-point32/structs.js +141 -0
  71. package/dist/src/services/models/sui/_dependencies/source/0x1/fixed-point32/structs.js.map +1 -0
  72. package/dist/src/services/models/sui/_dependencies/source/0x1/index.d.ts +3 -0
  73. package/dist/src/services/models/sui/_dependencies/source/0x1/index.js +8 -0
  74. package/dist/src/services/models/sui/_dependencies/source/0x1/index.js.map +1 -0
  75. package/dist/src/services/models/sui/_dependencies/source/0x1/init.d.ts +2 -0
  76. package/dist/src/services/models/sui/_dependencies/source/0x1/init.js +47 -0
  77. package/dist/src/services/models/sui/_dependencies/source/0x1/init.js.map +1 -0
  78. package/dist/src/services/models/sui/_dependencies/source/0x1/option/structs.d.ts +51 -0
  79. package/dist/src/services/models/sui/_dependencies/source/0x1/option/structs.js +178 -0
  80. package/dist/src/services/models/sui/_dependencies/source/0x1/option/structs.js.map +1 -0
  81. package/dist/src/services/models/sui/_dependencies/source/0x1/string/structs.d.ts +49 -0
  82. package/dist/src/services/models/sui/_dependencies/source/0x1/string/structs.js +165 -0
  83. package/dist/src/services/models/sui/_dependencies/source/0x1/string/structs.js.map +1 -0
  84. package/dist/src/services/models/sui/_dependencies/source/0x1/type-name/structs.d.ts +52 -0
  85. package/dist/src/services/models/sui/_dependencies/source/0x1/type-name/structs.js +142 -0
  86. package/dist/src/services/models/sui/_dependencies/source/0x1/type-name/structs.js.map +1 -0
  87. package/dist/src/services/models/sui/_dependencies/source/0x1/uq32-32/structs.d.ts +45 -0
  88. package/dist/src/services/models/sui/_dependencies/source/0x1/uq32-32/structs.js +141 -0
  89. package/dist/src/services/models/sui/_dependencies/source/0x1/uq32-32/structs.js.map +1 -0
  90. package/dist/src/services/models/sui/_dependencies/source/0x1/uq64-64/structs.d.ts +45 -0
  91. package/dist/src/services/models/sui/_dependencies/source/0x1/uq64-64/structs.js +141 -0
  92. package/dist/src/services/models/sui/_dependencies/source/0x1/uq64-64/structs.js.map +1 -0
  93. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/burn-message/structs.d.ts +69 -0
  94. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/burn-message/structs.js +178 -0
  95. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/burn-message/structs.js.map +1 -0
  96. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/deposit-for-burn/structs.d.ts +186 -0
  97. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/deposit-for-burn/structs.js +381 -0
  98. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/deposit-for-burn/structs.js.map +1 -0
  99. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/handle-receive-message/structs.d.ts +142 -0
  100. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/handle-receive-message/structs.js +151 -0
  101. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/handle-receive-message/structs.js.map +1 -0
  102. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/index.d.ts +3 -0
  103. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/index.js +8 -0
  104. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/index.js.map +1 -0
  105. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/init.d.ts +2 -0
  106. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/init.js +41 -0
  107. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/init.js.map +1 -0
  108. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/message-transmitter-authenticator/structs.d.ts +45 -0
  109. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/message-transmitter-authenticator/structs.js +141 -0
  110. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/message-transmitter-authenticator/structs.js.map +1 -0
  111. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/state/structs.d.ts +190 -0
  112. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/state/structs.js +218 -0
  113. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/state/structs.js.map +1 -0
  114. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/index.d.ts +3 -0
  115. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/index.js +8 -0
  116. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/index.js.map +1 -0
  117. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/init.d.ts +2 -0
  118. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/init.js +37 -0
  119. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/init.js.map +1 -0
  120. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/mint-allowance/structs.d.ts +45 -0
  121. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/mint-allowance/structs.js +154 -0
  122. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/mint-allowance/structs.js.map +1 -0
  123. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/treasury/structs.d.ts +270 -0
  124. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/treasury/structs.js +623 -0
  125. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/treasury/structs.js.map +1 -0
  126. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/index.d.ts +3 -0
  127. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/index.js +8 -0
  128. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/index.js.map +1 -0
  129. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/init.d.ts +2 -0
  130. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/init.js +38 -0
  131. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/init.js.map +1 -0
  132. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/message/structs.d.ts +91 -0
  133. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/message/structs.js +223 -0
  134. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/message/structs.js.map +1 -0
  135. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/receive-message/structs.d.ts +275 -0
  136. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/receive-message/structs.js +500 -0
  137. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/receive-message/structs.js.map +1 -0
  138. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/state/structs.d.ts +151 -0
  139. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/state/structs.js +234 -0
  140. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/state/structs.js.map +1 -0
  141. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes20/structs.d.ts +49 -0
  142. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes20/structs.js +165 -0
  143. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes20/structs.js.map +1 -0
  144. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32/structs.d.ts +49 -0
  145. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32/structs.js +165 -0
  146. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32/structs.js.map +1 -0
  147. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed-vaas/structs.d.ts +76 -0
  148. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed-vaas/structs.js +167 -0
  149. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed-vaas/structs.js.map +1 -0
  150. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/cursor/structs.d.ts +50 -0
  151. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/cursor/structs.js +177 -0
  152. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/cursor/structs.js.map +1 -0
  153. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/emitter/structs.d.ts +106 -0
  154. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/emitter/structs.js +280 -0
  155. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/emitter/structs.js.map +1 -0
  156. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external-address/structs.d.ts +56 -0
  157. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external-address/structs.js +142 -0
  158. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external-address/structs.js.map +1 -0
  159. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/fee-collector/structs.d.ts +62 -0
  160. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/fee-collector/structs.js +174 -0
  161. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/fee-collector/structs.js.map +1 -0
  162. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian/structs.d.ts +56 -0
  163. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian/structs.js +142 -0
  164. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian/structs.js.map +1 -0
  165. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian-set/structs.d.ts +80 -0
  166. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian-set/structs.js +180 -0
  167. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian-set/structs.js.map +1 -0
  168. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/index.d.ts +3 -0
  169. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/index.js +8 -0
  170. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/index.js.map +1 -0
  171. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/init.d.ts +2 -0
  172. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/init.js +59 -0
  173. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/init.js.map +1 -0
  174. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/publish-message/structs.d.ts +150 -0
  175. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/publish-message/structs.js +353 -0
  176. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/publish-message/structs.js.map +1 -0
  177. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set/structs.d.ts +109 -0
  178. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set/structs.js +308 -0
  179. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set/structs.js.map +1 -0
  180. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/state/structs.d.ts +235 -0
  181. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/state/structs.js +228 -0
  182. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/state/structs.js.map +1 -0
  183. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/vaa/structs.d.ts +127 -0
  184. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/vaa/structs.js +223 -0
  185. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/vaa/structs.js.map +1 -0
  186. package/dist/src/services/models/sui/_framework/init-loader.d.ts +2 -0
  187. package/dist/src/services/models/sui/_framework/init-loader.js +57 -0
  188. package/dist/src/services/models/sui/_framework/init-loader.js.map +1 -0
  189. package/dist/src/services/models/sui/_framework/loader.d.ts +17 -0
  190. package/dist/src/services/models/sui/_framework/loader.js +56 -0
  191. package/dist/src/services/models/sui/_framework/loader.js.map +1 -0
  192. package/dist/src/services/models/sui/_framework/reified.d.ts +108 -0
  193. package/dist/src/services/models/sui/_framework/reified.js +239 -0
  194. package/dist/src/services/models/sui/_framework/reified.js.map +1 -0
  195. package/dist/src/services/models/sui/_framework/util.d.ts +86 -0
  196. package/dist/src/services/models/sui/_framework/util.js +333 -0
  197. package/dist/src/services/models/sui/_framework/util.js.map +1 -0
  198. package/dist/src/services/models/sui/_framework/vector.d.ts +35 -0
  199. package/dist/src/services/models/sui/_framework/vector.js +82 -0
  200. package/dist/src/services/models/sui/_framework/vector.js.map +1 -0
  201. package/dist/src/services/models/sui/bridge/another-bridge/functions.d.ts +30 -0
  202. package/dist/src/services/models/sui/bridge/another-bridge/functions.js +69 -0
  203. package/dist/src/services/models/sui/bridge/another-bridge/functions.js.map +1 -0
  204. package/dist/src/services/models/sui/bridge/another-bridge/structs.d.ts +98 -0
  205. package/dist/src/services/models/sui/bridge/another-bridge/structs.js +181 -0
  206. package/dist/src/services/models/sui/bridge/another-bridge/structs.js.map +1 -0
  207. package/dist/src/services/models/sui/bridge/bridge/functions.d.ts +153 -0
  208. package/dist/src/services/models/sui/bridge/bridge/functions.js +284 -0
  209. package/dist/src/services/models/sui/bridge/bridge/functions.js.map +1 -0
  210. package/dist/src/services/models/sui/bridge/bridge/structs.d.ts +383 -0
  211. package/dist/src/services/models/sui/bridge/bridge/structs.js +624 -0
  212. package/dist/src/services/models/sui/bridge/bridge/structs.js.map +1 -0
  213. package/dist/src/services/models/sui/bridge/bridge-interface/functions.d.ts +257 -0
  214. package/dist/src/services/models/sui/bridge/bridge-interface/functions.js +486 -0
  215. package/dist/src/services/models/sui/bridge/bridge-interface/functions.js.map +1 -0
  216. package/dist/src/services/models/sui/bridge/events/functions.d.ts +58 -0
  217. package/dist/src/services/models/sui/bridge/events/functions.js +103 -0
  218. package/dist/src/services/models/sui/bridge/events/functions.js.map +1 -0
  219. package/dist/src/services/models/sui/bridge/events/structs.d.ts +652 -0
  220. package/dist/src/services/models/sui/bridge/events/structs.js +1430 -0
  221. package/dist/src/services/models/sui/bridge/events/structs.js.map +1 -0
  222. package/dist/src/services/models/sui/bridge/index.d.ts +14 -0
  223. package/dist/src/services/models/sui/bridge/index.js +34 -0
  224. package/dist/src/services/models/sui/bridge/index.js.map +1 -0
  225. package/dist/src/services/models/sui/bridge/init.d.ts +2 -0
  226. package/dist/src/services/models/sui/bridge/init.js +57 -0
  227. package/dist/src/services/models/sui/bridge/init.js.map +1 -0
  228. package/dist/src/services/models/sui/bridge/pool/functions.d.ts +86 -0
  229. package/dist/src/services/models/sui/bridge/pool/functions.js +215 -0
  230. package/dist/src/services/models/sui/bridge/pool/functions.js.map +1 -0
  231. package/dist/src/services/models/sui/bridge/pool/structs.d.ts +271 -0
  232. package/dist/src/services/models/sui/bridge/pool/structs.js +467 -0
  233. package/dist/src/services/models/sui/bridge/pool/structs.js.map +1 -0
  234. package/dist/src/services/models/sui/bridge/pool-rewards/functions.d.ts +37 -0
  235. package/dist/src/services/models/sui/bridge/pool-rewards/functions.js +86 -0
  236. package/dist/src/services/models/sui/bridge/pool-rewards/functions.js.map +1 -0
  237. package/dist/src/services/models/sui/bridge/pool-rewards/structs.d.ts +86 -0
  238. package/dist/src/services/models/sui/bridge/pool-rewards/structs.js +181 -0
  239. package/dist/src/services/models/sui/bridge/pool-rewards/structs.js.map +1 -0
  240. package/dist/src/services/models/sui/bridge/pool-state/functions.d.ts +59 -0
  241. package/dist/src/services/models/sui/bridge/pool-state/functions.js +171 -0
  242. package/dist/src/services/models/sui/bridge/pool-state/functions.js.map +1 -0
  243. package/dist/src/services/models/sui/bridge/pool-state/structs.d.ts +69 -0
  244. package/dist/src/services/models/sui/bridge/pool-state/structs.js +180 -0
  245. package/dist/src/services/models/sui/bridge/pool-state/structs.js.map +1 -0
  246. package/dist/src/services/models/sui/bridge/user-deposit/functions.d.ts +22 -0
  247. package/dist/src/services/models/sui/bridge/user-deposit/functions.js +62 -0
  248. package/dist/src/services/models/sui/bridge/user-deposit/functions.js.map +1 -0
  249. package/dist/src/services/models/sui/bridge/user-deposit/structs.d.ts +66 -0
  250. package/dist/src/services/models/sui/bridge/user-deposit/structs.js +167 -0
  251. package/dist/src/services/models/sui/bridge/user-deposit/structs.js.map +1 -0
  252. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/functions.d.ts +102 -0
  253. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/functions.js +178 -0
  254. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/functions.js.map +1 -0
  255. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/structs.d.ts +281 -0
  256. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/structs.js +472 -0
  257. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/structs.js.map +1 -0
  258. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge-interface/functions.d.ts +103 -0
  259. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge-interface/functions.js +160 -0
  260. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge-interface/functions.js.map +1 -0
  261. package/dist/src/services/models/sui/cctp-bridge/events/functions.d.ts +30 -0
  262. package/dist/src/services/models/sui/cctp-bridge/events/functions.js +54 -0
  263. package/dist/src/services/models/sui/cctp-bridge/events/functions.js.map +1 -0
  264. package/dist/src/services/models/sui/cctp-bridge/events/structs.d.ts +310 -0
  265. package/dist/src/services/models/sui/cctp-bridge/events/structs.js +656 -0
  266. package/dist/src/services/models/sui/cctp-bridge/events/structs.js.map +1 -0
  267. package/dist/src/services/models/sui/cctp-bridge/index.d.ts +14 -0
  268. package/dist/src/services/models/sui/cctp-bridge/index.js +34 -0
  269. package/dist/src/services/models/sui/cctp-bridge/index.js.map +1 -0
  270. package/dist/src/services/models/sui/cctp-bridge/init.d.ts +2 -0
  271. package/dist/src/services/models/sui/cctp-bridge/init.js +41 -0
  272. package/dist/src/services/models/sui/cctp-bridge/init.js.map +1 -0
  273. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/functions.d.ts +2 -0
  274. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/functions.js +12 -0
  275. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/functions.js.map +1 -0
  276. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/structs.d.ts +45 -0
  277. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/structs.js +141 -0
  278. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/structs.js.map +1 -0
  279. package/dist/src/services/models/sui/gas-oracle/gas-oracle/functions.d.ts +61 -0
  280. package/dist/src/services/models/sui/gas-oracle/gas-oracle/functions.js +128 -0
  281. package/dist/src/services/models/sui/gas-oracle/gas-oracle/functions.js.map +1 -0
  282. package/dist/src/services/models/sui/gas-oracle/gas-oracle/structs.d.ts +180 -0
  283. package/dist/src/services/models/sui/gas-oracle/gas-oracle/structs.js +443 -0
  284. package/dist/src/services/models/sui/gas-oracle/gas-oracle/structs.js.map +1 -0
  285. package/dist/src/services/models/sui/gas-oracle/gas-oracle-interface/functions.d.ts +69 -0
  286. package/dist/src/services/models/sui/gas-oracle/gas-oracle-interface/functions.js +118 -0
  287. package/dist/src/services/models/sui/gas-oracle/gas-oracle-interface/functions.js.map +1 -0
  288. package/dist/src/services/models/sui/gas-oracle/index.d.ts +14 -0
  289. package/dist/src/services/models/sui/gas-oracle/index.js +34 -0
  290. package/dist/src/services/models/sui/gas-oracle/index.js.map +1 -0
  291. package/dist/src/services/models/sui/gas-oracle/init.d.ts +2 -0
  292. package/dist/src/services/models/sui/gas-oracle/init.js +34 -0
  293. package/dist/src/services/models/sui/gas-oracle/init.js.map +1 -0
  294. package/dist/src/services/models/sui/messenger/events/functions.d.ts +3 -0
  295. package/dist/src/services/models/sui/messenger/events/functions.js +20 -0
  296. package/dist/src/services/models/sui/messenger/events/functions.js.map +1 -0
  297. package/dist/src/services/models/sui/messenger/events/structs.d.ts +100 -0
  298. package/dist/src/services/models/sui/messenger/events/structs.js +273 -0
  299. package/dist/src/services/models/sui/messenger/events/structs.js.map +1 -0
  300. package/dist/src/services/models/sui/messenger/index.d.ts +14 -0
  301. package/dist/src/services/models/sui/messenger/index.js +34 -0
  302. package/dist/src/services/models/sui/messenger/index.js.map +1 -0
  303. package/dist/src/services/models/sui/messenger/init.d.ts +2 -0
  304. package/dist/src/services/models/sui/messenger/init.js +36 -0
  305. package/dist/src/services/models/sui/messenger/init.js.map +1 -0
  306. package/dist/src/services/models/sui/messenger/messenger/functions.d.ts +66 -0
  307. package/dist/src/services/models/sui/messenger/messenger/functions.js +143 -0
  308. package/dist/src/services/models/sui/messenger/messenger/functions.js.map +1 -0
  309. package/dist/src/services/models/sui/messenger/messenger/structs.d.ts +269 -0
  310. package/dist/src/services/models/sui/messenger/messenger/structs.js +351 -0
  311. package/dist/src/services/models/sui/messenger/messenger/structs.js.map +1 -0
  312. package/dist/src/services/models/sui/messenger/messenger-interface/functions.d.ts +81 -0
  313. package/dist/src/services/models/sui/messenger/messenger-interface/functions.js +127 -0
  314. package/dist/src/services/models/sui/messenger/messenger-interface/functions.js.map +1 -0
  315. package/dist/src/services/models/sui/sui/address/functions.d.ts +11 -0
  316. package/dist/src/services/models/sui/sui/address/functions.js +76 -0
  317. package/dist/src/services/models/sui/sui/address/functions.js.map +1 -0
  318. package/dist/src/services/models/sui/sui/authenticator-state/functions.d.ts +42 -0
  319. package/dist/src/services/models/sui/sui/authenticator-state/functions.js +99 -0
  320. package/dist/src/services/models/sui/sui/authenticator-state/functions.js.map +1 -0
  321. package/dist/src/services/models/sui/sui/authenticator-state/structs.d.ts +463 -0
  322. package/dist/src/services/models/sui/sui/authenticator-state/structs.js +747 -0
  323. package/dist/src/services/models/sui/sui/authenticator-state/structs.js.map +1 -0
  324. package/dist/src/services/models/sui/sui/bag/functions.d.ts +37 -0
  325. package/dist/src/services/models/sui/sui/bag/functions.js +79 -0
  326. package/dist/src/services/models/sui/sui/bag/functions.js.map +1 -0
  327. package/dist/src/services/models/sui/sui/bag/structs.d.ts +60 -0
  328. package/dist/src/services/models/sui/sui/bag/structs.js +149 -0
  329. package/dist/src/services/models/sui/sui/bag/structs.js.map +1 -0
  330. package/dist/src/services/models/sui/sui/balance/functions.d.ts +31 -0
  331. package/dist/src/services/models/sui/sui/balance/functions.js +110 -0
  332. package/dist/src/services/models/sui/sui/balance/functions.js.map +1 -0
  333. package/dist/src/services/models/sui/sui/balance/structs.d.ts +87 -0
  334. package/dist/src/services/models/sui/sui/balance/structs.js +294 -0
  335. package/dist/src/services/models/sui/sui/balance/structs.js.map +1 -0
  336. package/dist/src/services/models/sui/sui/bcs/functions.d.ts +31 -0
  337. package/dist/src/services/models/sui/sui/bcs/functions.js +210 -0
  338. package/dist/src/services/models/sui/sui/bcs/functions.js.map +1 -0
  339. package/dist/src/services/models/sui/sui/bcs/structs.d.ts +49 -0
  340. package/dist/src/services/models/sui/sui/bcs/structs.js +165 -0
  341. package/dist/src/services/models/sui/sui/bcs/structs.js.map +1 -0
  342. package/dist/src/services/models/sui/sui/bls12381/functions.d.ts +130 -0
  343. package/dist/src/services/models/sui/sui/bls12381/functions.js +323 -0
  344. package/dist/src/services/models/sui/sui/bls12381/functions.js.map +1 -0
  345. package/dist/src/services/models/sui/sui/bls12381/structs.d.ts +213 -0
  346. package/dist/src/services/models/sui/sui/bls12381/structs.js +665 -0
  347. package/dist/src/services/models/sui/sui/bls12381/structs.js.map +1 -0
  348. package/dist/src/services/models/sui/sui/borrow/functions.d.ts +11 -0
  349. package/dist/src/services/models/sui/sui/borrow/functions.js +38 -0
  350. package/dist/src/services/models/sui/sui/borrow/functions.js.map +1 -0
  351. package/dist/src/services/models/sui/sui/borrow/structs.d.ts +116 -0
  352. package/dist/src/services/models/sui/sui/borrow/structs.js +306 -0
  353. package/dist/src/services/models/sui/sui/borrow/structs.js.map +1 -0
  354. package/dist/src/services/models/sui/sui/clock/functions.d.ts +8 -0
  355. package/dist/src/services/models/sui/sui/clock/functions.js +27 -0
  356. package/dist/src/services/models/sui/sui/clock/functions.js.map +1 -0
  357. package/dist/src/services/models/sui/sui/clock/structs.d.ts +60 -0
  358. package/dist/src/services/models/sui/sui/clock/structs.js +149 -0
  359. package/dist/src/services/models/sui/sui/clock/structs.js.map +1 -0
  360. package/dist/src/services/models/sui/sui/coin/functions.d.ts +174 -0
  361. package/dist/src/services/models/sui/sui/coin/functions.js +391 -0
  362. package/dist/src/services/models/sui/sui/coin/functions.js.map +1 -0
  363. package/dist/src/services/models/sui/sui/coin/structs.d.ts +467 -0
  364. package/dist/src/services/models/sui/sui/coin/structs.js +1084 -0
  365. package/dist/src/services/models/sui/sui/coin/structs.js.map +1 -0
  366. package/dist/src/services/models/sui/sui/config/functions.d.ts +54 -0
  367. package/dist/src/services/models/sui/sui/config/functions.js +108 -0
  368. package/dist/src/services/models/sui/sui/config/functions.js.map +1 -0
  369. package/dist/src/services/models/sui/sui/config/structs.d.ts +198 -0
  370. package/dist/src/services/models/sui/sui/config/structs.js +454 -0
  371. package/dist/src/services/models/sui/sui/config/structs.js.map +1 -0
  372. package/dist/src/services/models/sui/sui/deny-list/functions.d.ts +124 -0
  373. package/dist/src/services/models/sui/sui/deny-list/functions.js +188 -0
  374. package/dist/src/services/models/sui/sui/deny-list/functions.js.map +1 -0
  375. package/dist/src/services/models/sui/sui/deny-list/structs.d.ts +429 -0
  376. package/dist/src/services/models/sui/sui/deny-list/structs.js +993 -0
  377. package/dist/src/services/models/sui/sui/deny-list/structs.js.map +1 -0
  378. package/dist/src/services/models/sui/sui/display/functions.d.ts +43 -0
  379. package/dist/src/services/models/sui/sui/display/functions.js +131 -0
  380. package/dist/src/services/models/sui/sui/display/functions.js.map +1 -0
  381. package/dist/src/services/models/sui/sui/display/structs.d.ts +256 -0
  382. package/dist/src/services/models/sui/sui/display/structs.js +471 -0
  383. package/dist/src/services/models/sui/sui/display/structs.js.map +1 -0
  384. package/dist/src/services/models/sui/sui/dynamic-field/functions.d.ts +83 -0
  385. package/dist/src/services/models/sui/sui/dynamic-field/functions.js +137 -0
  386. package/dist/src/services/models/sui/sui/dynamic-field/functions.js.map +1 -0
  387. package/dist/src/services/models/sui/sui/dynamic-field/structs.d.ts +67 -0
  388. package/dist/src/services/models/sui/sui/dynamic-field/structs.js +169 -0
  389. package/dist/src/services/models/sui/sui/dynamic-field/structs.js.map +1 -0
  390. package/dist/src/services/models/sui/sui/dynamic-object-field/functions.d.ts +64 -0
  391. package/dist/src/services/models/sui/sui/dynamic-object-field/functions.js +110 -0
  392. package/dist/src/services/models/sui/sui/dynamic-object-field/functions.js.map +1 -0
  393. package/dist/src/services/models/sui/sui/dynamic-object-field/structs.d.ts +46 -0
  394. package/dist/src/services/models/sui/sui/dynamic-object-field/structs.js +153 -0
  395. package/dist/src/services/models/sui/sui/dynamic-object-field/structs.js.map +1 -0
  396. package/dist/src/services/models/sui/sui/ecdsa-k1/functions.d.ts +15 -0
  397. package/dist/src/services/models/sui/sui/ecdsa-k1/functions.js +32 -0
  398. package/dist/src/services/models/sui/sui/ecdsa-k1/functions.js.map +1 -0
  399. package/dist/src/services/models/sui/sui/ecdsa-r1/functions.d.ts +14 -0
  400. package/dist/src/services/models/sui/sui/ecdsa-r1/functions.js +25 -0
  401. package/dist/src/services/models/sui/sui/ecdsa-r1/functions.js.map +1 -0
  402. package/dist/src/services/models/sui/sui/ecvrf/functions.d.ts +8 -0
  403. package/dist/src/services/models/sui/sui/ecvrf/functions.js +18 -0
  404. package/dist/src/services/models/sui/sui/ecvrf/functions.js.map +1 -0
  405. package/dist/src/services/models/sui/sui/ed25519/functions.d.ts +7 -0
  406. package/dist/src/services/models/sui/sui/ed25519/functions.js +17 -0
  407. package/dist/src/services/models/sui/sui/ed25519/functions.js.map +1 -0
  408. package/dist/src/services/models/sui/sui/event/functions.d.ts +3 -0
  409. package/dist/src/services/models/sui/sui/event/functions.js +14 -0
  410. package/dist/src/services/models/sui/sui/event/functions.js.map +1 -0
  411. package/dist/src/services/models/sui/sui/groth16/functions.d.ts +40 -0
  412. package/dist/src/services/models/sui/sui/groth16/functions.js +94 -0
  413. package/dist/src/services/models/sui/sui/groth16/functions.js.map +1 -0
  414. package/dist/src/services/models/sui/sui/groth16/structs.d.ts +203 -0
  415. package/dist/src/services/models/sui/sui/groth16/structs.js +575 -0
  416. package/dist/src/services/models/sui/sui/groth16/structs.js.map +1 -0
  417. package/dist/src/services/models/sui/sui/group-ops/functions.d.ts +128 -0
  418. package/dist/src/services/models/sui/sui/group-ops/functions.js +184 -0
  419. package/dist/src/services/models/sui/sui/group-ops/functions.js.map +1 -0
  420. package/dist/src/services/models/sui/sui/group-ops/structs.d.ts +49 -0
  421. package/dist/src/services/models/sui/sui/group-ops/structs.js +176 -0
  422. package/dist/src/services/models/sui/sui/group-ops/structs.js.map +1 -0
  423. package/dist/src/services/models/sui/sui/hash/functions.d.ts +3 -0
  424. package/dist/src/services/models/sui/sui/hash/functions.js +20 -0
  425. package/dist/src/services/models/sui/sui/hash/functions.js.map +1 -0
  426. package/dist/src/services/models/sui/sui/hex/functions.d.ts +4 -0
  427. package/dist/src/services/models/sui/sui/hex/functions.js +27 -0
  428. package/dist/src/services/models/sui/sui/hex/functions.js.map +1 -0
  429. package/dist/src/services/models/sui/sui/hmac/functions.d.ts +6 -0
  430. package/dist/src/services/models/sui/sui/hmac/functions.js +13 -0
  431. package/dist/src/services/models/sui/sui/hmac/functions.js.map +1 -0
  432. package/dist/src/services/models/sui/sui/index.d.ts +3 -0
  433. package/dist/src/services/models/sui/sui/index.js +8 -0
  434. package/dist/src/services/models/sui/sui/index.js.map +1 -0
  435. package/dist/src/services/models/sui/sui/init.d.ts +2 -0
  436. package/dist/src/services/models/sui/sui/init.js +163 -0
  437. package/dist/src/services/models/sui/sui/init.js.map +1 -0
  438. package/dist/src/services/models/sui/sui/kiosk/functions.d.ts +179 -0
  439. package/dist/src/services/models/sui/sui/kiosk/functions.js +327 -0
  440. package/dist/src/services/models/sui/sui/kiosk/functions.js.map +1 -0
  441. package/dist/src/services/models/sui/sui/kiosk/structs.d.ts +605 -0
  442. package/dist/src/services/models/sui/sui/kiosk/structs.js +1501 -0
  443. package/dist/src/services/models/sui/sui/kiosk/structs.js.map +1 -0
  444. package/dist/src/services/models/sui/sui/kiosk-extension/functions.d.ts +54 -0
  445. package/dist/src/services/models/sui/sui/kiosk-extension/functions.js +133 -0
  446. package/dist/src/services/models/sui/sui/kiosk-extension/functions.js.map +1 -0
  447. package/dist/src/services/models/sui/sui/kiosk-extension/structs.d.ts +120 -0
  448. package/dist/src/services/models/sui/sui/kiosk-extension/structs.js +298 -0
  449. package/dist/src/services/models/sui/sui/kiosk-extension/structs.js.map +1 -0
  450. package/dist/src/services/models/sui/sui/linked-table/functions.d.ts +53 -0
  451. package/dist/src/services/models/sui/sui/linked-table/functions.js +142 -0
  452. package/dist/src/services/models/sui/sui/linked-table/functions.js.map +1 -0
  453. package/dist/src/services/models/sui/sui/linked-table/structs.d.ts +168 -0
  454. package/dist/src/services/models/sui/sui/linked-table/structs.js +335 -0
  455. package/dist/src/services/models/sui/sui/linked-table/structs.js.map +1 -0
  456. package/dist/src/services/models/sui/sui/math/functions.d.ts +28 -0
  457. package/dist/src/services/models/sui/sui/math/functions.js +55 -0
  458. package/dist/src/services/models/sui/sui/math/functions.js.map +1 -0
  459. package/dist/src/services/models/sui/sui/object/functions.d.ts +26 -0
  460. package/dist/src/services/models/sui/sui/object/functions.js +177 -0
  461. package/dist/src/services/models/sui/sui/object/functions.js.map +1 -0
  462. package/dist/src/services/models/sui/sui/object/structs.d.ts +91 -0
  463. package/dist/src/services/models/sui/sui/object/structs.js +273 -0
  464. package/dist/src/services/models/sui/sui/object/structs.js.map +1 -0
  465. package/dist/src/services/models/sui/sui/object-bag/functions.d.ts +42 -0
  466. package/dist/src/services/models/sui/sui/object-bag/functions.js +90 -0
  467. package/dist/src/services/models/sui/sui/object-bag/functions.js.map +1 -0
  468. package/dist/src/services/models/sui/sui/object-bag/structs.d.ts +60 -0
  469. package/dist/src/services/models/sui/sui/object-bag/structs.js +149 -0
  470. package/dist/src/services/models/sui/sui/object-bag/structs.js.map +1 -0
  471. package/dist/src/services/models/sui/sui/object-table/functions.d.ts +37 -0
  472. package/dist/src/services/models/sui/sui/object-table/functions.js +86 -0
  473. package/dist/src/services/models/sui/sui/object-table/functions.js.map +1 -0
  474. package/dist/src/services/models/sui/sui/object-table/structs.d.ts +60 -0
  475. package/dist/src/services/models/sui/sui/object-table/structs.js +162 -0
  476. package/dist/src/services/models/sui/sui/object-table/structs.js.map +1 -0
  477. package/dist/src/services/models/sui/sui/package/functions.d.ts +39 -0
  478. package/dist/src/services/models/sui/sui/package/functions.js +178 -0
  479. package/dist/src/services/models/sui/sui/package/functions.js.map +1 -0
  480. package/dist/src/services/models/sui/sui/package/structs.d.ts +279 -0
  481. package/dist/src/services/models/sui/sui/package/structs.js +623 -0
  482. package/dist/src/services/models/sui/sui/package/structs.js.map +1 -0
  483. package/dist/src/services/models/sui/sui/pay/functions.d.ts +38 -0
  484. package/dist/src/services/models/sui/sui/pay/functions.js +71 -0
  485. package/dist/src/services/models/sui/sui/pay/functions.js.map +1 -0
  486. package/dist/src/services/models/sui/sui/poseidon/functions.d.ts +3 -0
  487. package/dist/src/services/models/sui/sui/poseidon/functions.js +20 -0
  488. package/dist/src/services/models/sui/sui/poseidon/functions.js.map +1 -0
  489. package/dist/src/services/models/sui/sui/priority-queue/functions.d.ts +32 -0
  490. package/dist/src/services/models/sui/sui/priority-queue/functions.js +75 -0
  491. package/dist/src/services/models/sui/sui/priority-queue/functions.js.map +1 -0
  492. package/dist/src/services/models/sui/sui/priority-queue/structs.d.ts +110 -0
  493. package/dist/src/services/models/sui/sui/priority-queue/structs.js +329 -0
  494. package/dist/src/services/models/sui/sui/priority-queue/structs.js.map +1 -0
  495. package/dist/src/services/models/sui/sui/random/functions.d.ts +73 -0
  496. package/dist/src/services/models/sui/sui/random/functions.js +173 -0
  497. package/dist/src/services/models/sui/sui/random/functions.js.map +1 -0
  498. package/dist/src/services/models/sui/sui/random/structs.d.ts +203 -0
  499. package/dist/src/services/models/sui/sui/random/structs.js +471 -0
  500. package/dist/src/services/models/sui/sui/random/structs.js.map +1 -0
  501. package/dist/src/services/models/sui/sui/sui/functions.d.ts +7 -0
  502. package/dist/src/services/models/sui/sui/sui/functions.js +17 -0
  503. package/dist/src/services/models/sui/sui/sui/functions.js.map +1 -0
  504. package/dist/src/services/models/sui/sui/sui/structs.d.ts +45 -0
  505. package/dist/src/services/models/sui/sui/sui/structs.js +141 -0
  506. package/dist/src/services/models/sui/sui/sui/structs.js.map +1 -0
  507. package/dist/src/services/models/sui/sui/table/functions.d.ts +33 -0
  508. package/dist/src/services/models/sui/sui/table/functions.js +86 -0
  509. package/dist/src/services/models/sui/sui/table/functions.js.map +1 -0
  510. package/dist/src/services/models/sui/sui/table/structs.d.ts +60 -0
  511. package/dist/src/services/models/sui/sui/table/structs.js +162 -0
  512. package/dist/src/services/models/sui/sui/table/structs.js.map +1 -0
  513. package/dist/src/services/models/sui/sui/table-vec/functions.d.ts +35 -0
  514. package/dist/src/services/models/sui/sui/table-vec/functions.js +102 -0
  515. package/dist/src/services/models/sui/sui/table-vec/functions.js.map +1 -0
  516. package/dist/src/services/models/sui/sui/table-vec/structs.d.ts +67 -0
  517. package/dist/src/services/models/sui/sui/table-vec/structs.js +177 -0
  518. package/dist/src/services/models/sui/sui/table-vec/structs.js.map +1 -0
  519. package/dist/src/services/models/sui/sui/token/functions.d.ts +144 -0
  520. package/dist/src/services/models/sui/sui/token/functions.js +375 -0
  521. package/dist/src/services/models/sui/sui/token/functions.js.map +1 -0
  522. package/dist/src/services/models/sui/sui/token/structs.d.ts +460 -0
  523. package/dist/src/services/models/sui/sui/token/structs.js +951 -0
  524. package/dist/src/services/models/sui/sui/token/structs.js.map +1 -0
  525. package/dist/src/services/models/sui/sui/transfer/functions.d.ts +40 -0
  526. package/dist/src/services/models/sui/sui/transfer/functions.js +115 -0
  527. package/dist/src/services/models/sui/sui/transfer/functions.js.map +1 -0
  528. package/dist/src/services/models/sui/sui/transfer/structs.d.ts +56 -0
  529. package/dist/src/services/models/sui/sui/transfer/structs.js +160 -0
  530. package/dist/src/services/models/sui/sui/transfer/structs.js.map +1 -0
  531. package/dist/src/services/models/sui/sui/transfer-policy/functions.d.ts +65 -0
  532. package/dist/src/services/models/sui/sui/transfer-policy/functions.js +161 -0
  533. package/dist/src/services/models/sui/sui/transfer-policy/functions.js.map +1 -0
  534. package/dist/src/services/models/sui/sui/transfer-policy/structs.d.ts +369 -0
  535. package/dist/src/services/models/sui/sui/transfer-policy/structs.js +941 -0
  536. package/dist/src/services/models/sui/sui/transfer-policy/structs.js.map +1 -0
  537. package/dist/src/services/models/sui/sui/tx-context/functions.d.ts +12 -0
  538. package/dist/src/services/models/sui/sui/tx-context/functions.js +55 -0
  539. package/dist/src/services/models/sui/sui/tx-context/functions.js.map +1 -0
  540. package/dist/src/services/models/sui/sui/tx-context/structs.d.ts +73 -0
  541. package/dist/src/services/models/sui/sui/tx-context/structs.js +196 -0
  542. package/dist/src/services/models/sui/sui/tx-context/structs.js.map +1 -0
  543. package/dist/src/services/models/sui/sui/types/functions.d.ts +3 -0
  544. package/dist/src/services/models/sui/sui/types/functions.js +14 -0
  545. package/dist/src/services/models/sui/sui/types/functions.js.map +1 -0
  546. package/dist/src/services/models/sui/sui/url/functions.d.ts +9 -0
  547. package/dist/src/services/models/sui/sui/url/functions.js +35 -0
  548. package/dist/src/services/models/sui/sui/url/functions.js.map +1 -0
  549. package/dist/src/services/models/sui/sui/url/structs.d.ts +52 -0
  550. package/dist/src/services/models/sui/sui/url/structs.js +142 -0
  551. package/dist/src/services/models/sui/sui/url/structs.js.map +1 -0
  552. package/dist/src/services/models/sui/sui/vdf/functions.d.ts +17 -0
  553. package/dist/src/services/models/sui/sui/vdf/functions.js +44 -0
  554. package/dist/src/services/models/sui/sui/vdf/functions.js.map +1 -0
  555. package/dist/src/services/models/sui/sui/vec-map/functions.d.ts +70 -0
  556. package/dist/src/services/models/sui/sui/vec-map/functions.js +158 -0
  557. package/dist/src/services/models/sui/sui/vec-map/functions.js.map +1 -0
  558. package/dist/src/services/models/sui/sui/vec-map/structs.d.ts +110 -0
  559. package/dist/src/services/models/sui/sui/vec-map/structs.js +329 -0
  560. package/dist/src/services/models/sui/sui/vec-map/structs.js.map +1 -0
  561. package/dist/src/services/models/sui/sui/vec-set/functions.d.ts +34 -0
  562. package/dist/src/services/models/sui/sui/vec-set/functions.js +102 -0
  563. package/dist/src/services/models/sui/sui/vec-set/functions.js.map +1 -0
  564. package/dist/src/services/models/sui/sui/vec-set/structs.d.ts +50 -0
  565. package/dist/src/services/models/sui/sui/vec-set/structs.js +177 -0
  566. package/dist/src/services/models/sui/sui/vec-set/structs.js.map +1 -0
  567. package/dist/src/services/models/sui/sui/versioned/functions.d.ts +19 -0
  568. package/dist/src/services/models/sui/sui/versioned/functions.js +66 -0
  569. package/dist/src/services/models/sui/sui/versioned/functions.js.map +1 -0
  570. package/dist/src/services/models/sui/sui/versioned/structs.d.ts +112 -0
  571. package/dist/src/services/models/sui/sui/versioned/structs.js +287 -0
  572. package/dist/src/services/models/sui/sui/versioned/structs.js.map +1 -0
  573. package/dist/src/services/models/sui/sui/zklogin-verified-id/functions.d.ts +33 -0
  574. package/dist/src/services/models/sui/sui/zklogin-verified-id/functions.js +90 -0
  575. package/dist/src/services/models/sui/sui/zklogin-verified-id/functions.js.map +1 -0
  576. package/dist/src/services/models/sui/sui/zklogin-verified-id/structs.d.ts +109 -0
  577. package/dist/src/services/models/sui/sui/zklogin-verified-id/structs.js +181 -0
  578. package/dist/src/services/models/sui/sui/zklogin-verified-id/structs.js.map +1 -0
  579. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/functions.d.ts +21 -0
  580. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/functions.js +57 -0
  581. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/functions.js.map +1 -0
  582. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/structs.d.ts +73 -0
  583. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/structs.js +160 -0
  584. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/structs.js.map +1 -0
  585. package/dist/src/services/models/sui/utils/bytes32/functions.d.ts +15 -0
  586. package/dist/src/services/models/sui/utils/bytes32/functions.js +107 -0
  587. package/dist/src/services/models/sui/utils/bytes32/functions.js.map +1 -0
  588. package/dist/src/services/models/sui/utils/bytes32/structs.d.ts +49 -0
  589. package/dist/src/services/models/sui/utils/bytes32/structs.js +165 -0
  590. package/dist/src/services/models/sui/utils/bytes32/structs.js.map +1 -0
  591. package/dist/src/services/models/sui/utils/fee-collector/functions.d.ts +16 -0
  592. package/dist/src/services/models/sui/utils/fee-collector/functions.js +46 -0
  593. package/dist/src/services/models/sui/utils/fee-collector/functions.js.map +1 -0
  594. package/dist/src/services/models/sui/utils/fee-collector/structs.d.ts +66 -0
  595. package/dist/src/services/models/sui/utils/fee-collector/structs.js +153 -0
  596. package/dist/src/services/models/sui/utils/fee-collector/structs.js.map +1 -0
  597. package/dist/src/services/models/sui/utils/index.d.ts +14 -0
  598. package/dist/src/services/models/sui/utils/index.js +34 -0
  599. package/dist/src/services/models/sui/utils/index.js.map +1 -0
  600. package/dist/src/services/models/sui/utils/init.d.ts +2 -0
  601. package/dist/src/services/models/sui/utils/init.js +43 -0
  602. package/dist/src/services/models/sui/utils/init.js.map +1 -0
  603. package/dist/src/services/models/sui/utils/message/functions.d.ts +33 -0
  604. package/dist/src/services/models/sui/utils/message/functions.js +87 -0
  605. package/dist/src/services/models/sui/utils/message/functions.js.map +1 -0
  606. package/dist/src/services/models/sui/utils/message/structs.d.ts +56 -0
  607. package/dist/src/services/models/sui/utils/message/structs.js +142 -0
  608. package/dist/src/services/models/sui/utils/message/structs.js.map +1 -0
  609. package/dist/src/services/models/sui/utils/messenger-protocol/functions.d.ts +4 -0
  610. package/dist/src/services/models/sui/utils/messenger-protocol/functions.js +27 -0
  611. package/dist/src/services/models/sui/utils/messenger-protocol/functions.js.map +1 -0
  612. package/dist/src/services/models/sui/utils/messenger-protocol/structs.d.ts +45 -0
  613. package/dist/src/services/models/sui/utils/messenger-protocol/structs.js +141 -0
  614. package/dist/src/services/models/sui/utils/messenger-protocol/structs.js.map +1 -0
  615. package/dist/src/services/models/sui/utils/set/functions.d.ts +19 -0
  616. package/dist/src/services/models/sui/utils/set/functions.js +46 -0
  617. package/dist/src/services/models/sui/utils/set/functions.js.map +1 -0
  618. package/dist/src/services/models/sui/utils/set/structs.d.ts +109 -0
  619. package/dist/src/services/models/sui/utils/set/structs.js +308 -0
  620. package/dist/src/services/models/sui/utils/set/structs.js.map +1 -0
  621. package/dist/src/services/models/sui/utils/version/functions.d.ts +19 -0
  622. package/dist/src/services/models/sui/utils/version/functions.js +30 -0
  623. package/dist/src/services/models/sui/utils/version/functions.js.map +1 -0
  624. package/dist/src/services/models/sui/utils/version/structs.d.ts +45 -0
  625. package/dist/src/services/models/sui/utils/version/structs.js +154 -0
  626. package/dist/src/services/models/sui/utils/version/structs.js.map +1 -0
  627. package/dist/src/services/models/sui/wormhole-messenger/events/functions.d.ts +11 -0
  628. package/dist/src/services/models/sui/wormhole-messenger/events/functions.js +20 -0
  629. package/dist/src/services/models/sui/wormhole-messenger/events/functions.js.map +1 -0
  630. package/dist/src/services/models/sui/wormhole-messenger/events/structs.d.ts +112 -0
  631. package/dist/src/services/models/sui/wormhole-messenger/events/structs.js +287 -0
  632. package/dist/src/services/models/sui/wormhole-messenger/events/structs.js.map +1 -0
  633. package/dist/src/services/models/sui/wormhole-messenger/index.d.ts +14 -0
  634. package/dist/src/services/models/sui/wormhole-messenger/index.js +34 -0
  635. package/dist/src/services/models/sui/wormhole-messenger/index.js.map +1 -0
  636. package/dist/src/services/models/sui/wormhole-messenger/init.d.ts +2 -0
  637. package/dist/src/services/models/sui/wormhole-messenger/init.js +36 -0
  638. package/dist/src/services/models/sui/wormhole-messenger/init.js.map +1 -0
  639. package/dist/src/services/models/sui/wormhole-messenger/wh-messenger-interface/functions.d.ts +85 -0
  640. package/dist/src/services/models/sui/wormhole-messenger/wh-messenger-interface/functions.js +139 -0
  641. package/dist/src/services/models/sui/wormhole-messenger/wh-messenger-interface/functions.js.map +1 -0
  642. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/functions.d.ts +79 -0
  643. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/functions.js +170 -0
  644. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/functions.js.map +1 -0
  645. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/structs.d.ts +278 -0
  646. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/structs.js +354 -0
  647. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/structs.js.map +1 -0
  648. package/dist/src/services/token/evm/index.js.map +1 -1
  649. package/dist/src/services/token/index.js +4 -0
  650. package/dist/src/services/token/index.js.map +1 -1
  651. package/dist/src/services/token/sol/index.js.map +1 -1
  652. package/dist/src/services/token/srb/index.js.map +1 -1
  653. package/dist/src/services/token/sui/index.d.ts +17 -0
  654. package/dist/src/services/token/sui/index.js +54 -0
  655. package/dist/src/services/token/sui/index.js.map +1 -0
  656. package/dist/src/services/token/trx/index.js.map +1 -1
  657. package/dist/src/services/utils/calculation/index.js.map +1 -1
  658. package/dist/src/services/utils/sol/accounts.js.map +1 -1
  659. package/dist/src/services/utils/sol/anchor-provider.js.map +1 -1
  660. package/dist/src/services/utils/sol/compute-budget.js.map +1 -1
  661. package/dist/src/services/utils/sol/index.js.map +1 -1
  662. package/dist/src/services/utils/sui/coins.d.ts +9 -0
  663. package/dist/src/services/utils/sui/coins.js +38 -0
  664. package/dist/src/services/utils/sui/coins.js.map +1 -0
  665. package/dist/src/services/utils/sui/paginated.d.ts +7 -0
  666. package/dist/src/services/utils/sui/paginated.js +14 -0
  667. package/dist/src/services/utils/sui/paginated.js.map +1 -0
  668. package/dist/src/services/utils/sui/view.d.ts +4 -0
  669. package/dist/src/services/utils/sui/view.js +26 -0
  670. package/dist/src/services/utils/sui/view.js.map +1 -0
  671. package/dist/src/tokens-info/tokens-info.model.d.ts +33 -0
  672. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  673. package/dist/src/utils/calculation/index.js.map +1 -1
  674. package/dist/src/utils/calculation/swap-and-bridge-details.js.map +1 -1
  675. package/dist/src/utils/calculation/swap-and-bridge-fee-calc.js.map +1 -1
  676. package/dist/src/utils/index.js.map +1 -1
  677. package/dist/src/utils/sol/index.js.map +1 -1
  678. package/dist/src/utils/sol/utils.js.map +1 -1
  679. package/dist/src/utils/srb/index.js.map +1 -1
  680. package/dist/src/utils/utils.js.map +1 -1
  681. package/dist/src/version.d.ts +1 -1
  682. package/dist/src/version.js +1 -1
  683. package/dist/src/version.js.map +1 -1
  684. package/package.json +2 -1
package/dist/cjs/index.js CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";var Va=Object.create;var Rt=Object.defineProperty;var Oa=Object.getOwnPropertyDescriptor;var Ea=Object.getOwnPropertyNames;var Xa=Object.getPrototypeOf,Ya=Object.prototype.hasOwnProperty;var La=(o,a)=>{for(var n in a)Rt(o,n,{get:a[n],enumerable:!0})},xn=(o,a,n,i)=>{if(a&&typeof a=="object"||typeof a=="function")for(let s of Ea(a))!Ya.call(o,s)&&s!==n&&Rt(o,s,{get:()=>a[s],enumerable:!(i=Oa(a,s))||i.enumerable});return o};var ke=(o,a,n)=>(n=o!=null?Va(Xa(o)):{},xn(a||!o||!o.__esModule?Rt(n,"default",{value:o,enumerable:!0}):n,o)),Ja=o=>xn(Rt({},"__esModule",{value:!0}),o);var Zi={};La(Zi,{AddressStatus:()=>vt,AllbridgeCoreSdk:()=>kn,AmountFormat:()=>ut,AmountNotEnoughError:()=>Ze,ArgumentInvalidDecimalsError:()=>st,CCTPDoesNotSupportedError:()=>ee,ChainSymbol:()=>te,ChainType:()=>N,ErrorCode:()=>Wn,ExtraGasMaxLimitExceededError:()=>it,FeePaymentMethod:()=>Ue,InsufficientPoolLiquidityError:()=>ye,InvalidAmountError:()=>at,InvalidGasFeePaymentOptionError:()=>Xe,InvalidMessengerOptionError:()=>cn,InvalidTxError:()=>De,JupiterError:()=>O,Messenger:()=>Te,MethodNotSupportedError:()=>L,NodeRpcUrlNotInitializedError:()=>rt,SdkError:()=>T,SdkRootError:()=>_,SolanaAutoTxFee:()=>Ot,TimeoutError:()=>Le,TxTooLargeError:()=>ot,VerifyTxError:()=>Ye,mainnet:()=>nt,nodeRpcUrlsDefault:()=>Qa,nodeUrlsDefault:()=>Ka});module.exports=Ja(Zi);var nt={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7}},cachePoolInfoChainSec:20},Ka={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Qa={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org"};var ue=require("big.js");var _=class extends Error{errorCode;constructor(a,n){super(n),this.errorCode=a}},T=class extends _{constructor(a){super("SdkError",a)}},at=class extends _{constructor(a){super("InvalidAmountError",a)}},Ze=class extends _{constructor(a){super("AmountNotEnoughError",a)}},ye=class extends _{constructor(a){super("InsufficientPoolLiquidityError",a)}},O=class extends _{constructor(a){super("JupiterError",a)}},Xe=class extends _{constructor(a){super("InvalidGasFeePaymentOptionError",a)}},cn=class extends _{constructor(a){super("InvalidMessengerOptionError",a)}},L=class extends _{constructor(a){super("MethodNotSupportedError",a)}},Ye=class extends _{constructor(a){super("VerifyTxError",a)}},De=class extends _{constructor(a){super("InvalidTxError",a)}},it=class extends _{constructor(a){super("ExtraGasMaxLimitExceededError",a)}},st=class extends _{constructor(a,n,i){super("ArgumentInvalidDecimalsError",`Argument '${a}' decimals '${n}' cannot be greater than '${i}'`)}},Le=class extends _{constructor(a){super("TimeoutError",a)}},rt=class extends _{constructor(a){super("NodeRpcUrlNotInitializedError",`For chain '${a}' Node RPC URL not initialized`)}},ee=class extends _{constructor(a){super("CCTPDoesNotSupportedError",a)}},ot=class extends _{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},Wn=(f=>(f.SDK_ERROR="SdkError",f.INVALID_AMOUNT_ERROR="InvalidAmountError",f.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",f.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",f.JUPITER_ERROR="JupiterError",f.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",f.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",f.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",f.VERIFY_TX_ERROR="VerifyTxError",f.INVALID_TX_ERROR="InvalidTxError",f.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",f.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",f.TIMEOUT_ERROR="TimeoutError",f.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",f.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",f.TX_TOO_LARGE="TxTooLargeError",f))(Wn||{});var te=(p=>(p.BSC="BSC",p.ETH="ETH",p.BAS="BAS",p.SOL="SOL",p.TRX="TRX",p.POL="POL",p.ARB="ARB",p.CEL="CEL",p.AVA="AVA",p.SRB="SRB",p.STLR="STLR",p.OPT="OPT",p))(te||{}),N=(s=>(s.EVM="EVM",s.SOLANA="SOLANA",s.TRX="TRX",s.SRB="SRB",s))(N||{});var Ha={EVM:18,SOLANA:9,TRX:6,SRB:7},za={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"}},R=(()=>{let o={...za};return{addChainsProperties(a){o={...o,...a}},getChainProperty(a){let n=o[a];if(!n)throw new T(`Cannot find chain properties for ${a}`);return n},getChainsProperties(){return o},getChainDecimalsByType(a){return Ha[a]}}})();var Yn=ke(require("axios"));var Fn="3.20.0";var g=require("big.js"),It=ke(require("bn.js"));function mn(o,a){return(0,g.Big)(100).minus((0,g.Big)(100).times(a).div(o)).toNumber()}function _e(o,a){return xe(o,a,3).round(0,g.Big.roundDown)}function H(o,a){return xe(o,3,a)}function xe(o,a,n){let i=(0,g.Big)(n).minus(a).toNumber();return(0,g.Big)(o).times(At(i))}function At(o){return(0,g.Big)(10).pow(o)}function M(o,a){return(0,g.Big)(o).times(At(a))}function B(o,a){let n=(0,g.Big)(o);return n.eq(0)?(0,g.Big)(0):(0,g.Big)(n).div(At(a))}function z(o){return B((0,g.Big)(o.tokenBalance).minus(o.vUsdBalance).toFixed(),3).div(2).toFixed()}function he(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return"0";let r=s.times(a),A=s.minus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).plus(c),l=be(m,i.aValue,i.dValue);return(0,g.Big)(i.vUsdBalance).minus(l).round(0,g.Big.roundDown).toFixed()}function ct(o,{feeShare:a,decimals:n},i){let s=(0,g.Big)(o);if(s.lte(0))return(0,g.Big)(0).toFixed();let r=s.plus(i.vUsdBalance),A=be(r,i.aValue,i.dValue),c=H((0,g.Big)(i.tokenBalance).minus(A),n),m=(0,g.Big)(c).times(a);return(0,g.Big)(c).minus(m).round(0,g.Big.roundDown).toFixed()}function Gn(o,a){let n=(0,g.Big)(o);if(n.lte(0))return a;let i=n.plus(a.vUsdBalance),s=be(i,a.aValue,a.dValue);return{aValue:a.aValue,dValue:a.dValue,tokenBalance:s.toFixed(0),vUsdBalance:i.toFixed(0)}}function Zn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(i.vUsdBalance).minus(o);if(s.lte(0))throw new ye;let r=be(s,i.aValue,i.dValue),A=(0,g.Big)(r).minus(i.tokenBalance),c=H(A,n),m=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),l=(0,g.Big)(c).times(m).round(0,g.Big.roundUp);return(0,g.Big)(c).plus(l).round(0,g.Big.roundDown)}function Dn(o,{feeShare:a,decimals:n},i){if((0,g.Big)(o).lte(0))return(0,g.Big)(0);let s=(0,g.Big)(a).div((0,g.Big)(1).minus(a)),r=(0,g.Big)(o).times(s).round(0,g.Big.roundUp),A=(0,g.Big)(o).plus(r),c=_e(A,n),m=(0,g.Big)(i.tokenBalance).minus(c);if(m.lte(0))throw new ye;let l=be(m,i.aValue,i.dValue);return(0,g.Big)(l).minus(i.vUsdBalance).round(0,g.Big.roundDown)}function be(o,a,n){let i=(0,g.Big)(4).times(a).times((0,g.Big)(n).minus(o)).minus(n),s=(0,g.Big)(n).pow(3),r=i.pow(2),A=(0,g.Big)(o).times((0,g.Big)(o).times(r).plus((0,g.Big)(4).times(a).times(s))).sqrt().round(0,g.Big.roundDown),c=(0,g.Big)(8).times(a).times(o),m=i.times(o).plus(A).div(c).round(0,g.Big.roundDown);return m.eq(0)?(0,g.Big)(0):m.plus(1)}function _n(o,a,n,i){let s=new It.default(o),r=new It.default(n),A=new It.default(a);return s.mul(r).shrn(i).sub(A).toString()}function Nn(o){return(0,g.Big)(o).gt(0)?`${Number((0,g.Big)(o).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Un(o,a,n){let i=(0,g.Big)(a).times(n),s=(0,g.Big)(a).plus(n),r=(0,g.Big)(8).times(o).times(i).times(s),A=i.times((0,g.Big)(16).times(o).minus(4)).div(3),c=r.times(r),m=A.times(A).times(A),l=c.plus(m),d=(0,g.Big)(l).sqrt(),u=(0,g.Big)(Math.cbrt(+r.plus(d).toFixed())),p=(0,g.Big)(Math.cbrt(+r.minus(d).toFixed()));return u.plus(p).toFixed()}var vt=(A=>(A.OK="OK",A.INVALID="INVALID",A.FORBIDDEN="FORBIDDEN",A.UNINITIALIZED="UNINITIALIZED",A.CONTRACT_ADDRESS="CONTRACT_ADDRESS",A.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",A))(vt||{});var Te=(i=>(i[i.ALLBRIDGE=1]="ALLBRIDGE",i[i.WORMHOLE=2]="WORMHOLE",i[i.CCTP=3]="CCTP",i))(Te||{});function Vn(o){return Object.entries(o).reduce((a,n)=>{let i=n[0],s=n[1],r=ti(i,s);return r&&(a[i]=r),a},{})}function On(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens){let A=Je({chainSymbol:s,poolAddress:r.poolAddress}),c=z(r.poolInfo);a[A]={...r.poolInfo,imbalance:c}}}return a}function ja(o,a){let{name:n,...i}=o,{poolInfo:s,...r}=a;return{...r,...i,chainName:n}}function qa(o){switch(o){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function $a(o){return Object.entries(o).reduce((a,[n,i])=>(a[n]=ei(i),a),{})}function ei(o){return Object.entries(o).reduce((a,[n,i])=>{let s=qa(n);return s&&(a[s]=i),a},{})}function ti(o,a){let n=R.getChainsProperties()[o];if(!n)return null;let i={...n,allbridgeChainId:a.chainId,bridgeAddress:a.bridgeAddress,transferTime:$a(a.transferTime),txCostAmount:a.txCostAmount,confirmations:a.confirmations};return{...i,tokens:a.tokens.map(s=>ja(i,s))}}function Je(o){return o.chainSymbol+"_"+o.poolAddress}function En(o){let a=[];for(let[n,i]of Object.entries(o)){let s=n;for(let r of i.tokens)a.push({chainSymbol:s,poolAddress:r.poolAddress})}return a}function Xn(o){let a={};for(let[n,i]of Object.entries(o)){let s=n;for(let[r,A]of Object.entries(i))A.imbalance=z(A),a[Je({chainSymbol:s,poolAddress:r})]=A}return a}var Mt=class{api;constructor(a){this.api=Yn.default.create({baseURL:a.coreApiUrl,headers:{Accept:"application/json",...a.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+Fn},params:a.coreApiQueryParams})}async getTokenInfo(){let{data:a}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:Vn(a),poolInfoMap:On(a)}}async getPendingInfo(){let{data:a}=await this.api.get("/pending-info");return a}async getGasBalance(a,n){let{data:i}=await this.api.get(`/check/${a}/${n}`);return i}async getTransferStatus(a,n){let{data:i}=await this.api.get(`/chain/${a}/${n}`);return i}async getReceiveTransactionCost(a){let{data:n}=await this.api.post("/receive-fee",a,{headers:{"Content-Type":"application/json"}});return{exchangeRate:n.exchangeRate,fee:n.fee,sourceNativeTokenPrice:n.sourceNativeTokenPrice}}async getPoolInfoMap(a){let n=a instanceof Array?a:[a],{data:i}=await this.api.post("/pool-info",{pools:n},{headers:{"Content-Type":"application/json"}});return Xn(i)}};var ni=(o,a)=>o!==null&&Object.prototype.hasOwnProperty.call(o,a),Ln="__cache__",ln=function(o){return typeof o!="string"?Ln+JSON.stringify(o):Ln+o},un=class{constructor(a={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=a.defaultTtl||60*1e3}put(a,n,i){let s=(i?i.ttl:void 0)||this.defaultTtl,r=(i?i.callback:void 0)||function(){},A=ln(a),c=this.cache[A];c&&clearTimeout(c.handle);let m=setTimeout(()=>this.remove(a),s);this.cache[A]={handle:m,data:n,callback:r}}get(a){let n=this.cache[ln(a)];return n&&n.data}remove(a){let n=ln(a),i=this.cache[n];i&&(clearTimeout(i.handle),delete this.cache[n],i.callback(a,i.data))}clear(){for(let a in this.cache)ni(this.cache,a)&&clearTimeout(this.cache[a].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Ce=un;var dn=20*1e3,ai=55*1e3,kt=class{constructor(a){this.apiClient=a;this.tokenInfoCache=new Ce({defaultTtl:ai}),this.receivedTransactionCache=new Ce({defaultTtl:dn}),this.pendingInfoCache=new Ce({defaultTtl:dn}),this.gasBalanceCache=new Ce({defaultTtl:dn})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let a="TOKEN_INFO_CACHE_KEY",n=this.tokenInfoCache.get(a);if(n)return n;let i=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(a,i),i}async getGasBalance(a,n){let i=`GAS_BALANCE_${a}_${n}`,s=this.gasBalanceCache.get(i);if(s)return s;let r=this.apiClient.getGasBalance(a,n);return this.gasBalanceCache.put(i,r),r}async getPendingInfo(){let a="PENDING_INFO_CACHE_KEY",n=this.pendingInfoCache.get(a);if(n)return n;let i=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(a,i),i}async getReceiveTransactionCost(a){let n=`RECEIVE_TX_COST_${a.sourceChainId}_${a.destinationChainId}_${a.messenger}`,i=this.receivedTransactionCache.get(n);if(i)return i;let s=await this.apiClient.getReceiveTransactionCost(a);return this.receivedTransactionCache.put(n,s),s}async getTransferStatus(a,n){return this.apiClient.getTransferStatus(a,n)}async getPoolInfoMap(a){return this.apiClient.getPoolInfoMap(a)}};var xt=class{constructor(a){this.apiClient=a}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let a=await this.getChainDetailsMap();return Object.values(a).flatMap(n=>n.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(a,n){return this.apiClient.getGasBalance(a,n)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(a,n){return await this.apiClient.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.apiClient.getReceiveTransactionCost(a)}async getPoolInfoMap(a){return await this.apiClient.getPoolInfoMap(a)}};var Wt=class{constructor(a,n){this.client=a;this.isStaging=n.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(a){let n=await this.client.getChainDetailsMap(),i={};for(let s in n){let r=n[s];r&&(i[s]={...r,tokens:Jn(r.tokens,a,this.isStaging)})}return i}async tokens(a){return Jn(await this.client.tokens(),a,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getTransferStatus(a,n){return await this.client.getTransferStatus(a,n)}async getReceiveTransactionCost(a){return await this.client.getReceiveTransactionCost(a)}cachePut(a,n){return this.client.cachePut(a,n)}getPoolInfoByKey(a){return this.client.getPoolInfoByKey(a)}refreshPoolInfo(a){return this.client.refreshPoolInfo(a)}};function Jn(o,a,n){return o.filter(i=>n?!0:i.flags[a]).map(ii)}function ii(o){let{flags:a,...n}=o;return n}var si=55*1e3,Ft=class{constructor(a){this.client=a;this.poolInfoCache=new pn}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(a,n){return this.client.getTransferStatus(a,n)}getReceiveTransactionCost(a){return this.client.getReceiveTransactionCost(a)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(a,n){return this.client.getGasBalance(a,n)}async getPoolInfoByKey(a){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let n=this.poolInfoCache.get(a);if(n)return n;{let i=await this.client.getPoolInfoMap(a);this.poolInfoCache.putAll(i);let s=i[Je(a)];if(s)return s;throw new T("Cannot find pool info for "+a.poolAddress+" on chain "+a.chainSymbol)}}async refreshPoolInfo(a){let n;if(a)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),n=await this.client.getPoolInfoMap(a);else{let i=await this.client.getChainDetailsMapAndPoolInfoMap();n=await this.client.getPoolInfoMap(En(i.chainDetailsMap))}this.poolInfoCache.putAll(n)}cachePut(a,n){this.poolInfoCache.put(Je(a),n)}},pn=class{cache;constructor(){this.cache=new Ce({defaultTtl:si})}putAll(a){for(let[n,i]of Object.entries(a))this.cache.put(n,i)}putAllIfNotExists(a){for(let[n,i]of Object.entries(a))this.cache.get(n)||this.cache.put(n,i)}put(a,n){this.cache.put(a,n)}get(a){let n=Je(a);return this.cache.get(n)}};var Ba=require("tronweb"),Ca=require("web3");var gn=require("big.js");async function V(o,a){return await o.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}function W(o){if((0,gn.Big)(o).lte(0))throw new at("Amount must be greater than zero")}function F(o,a,n){let i=(0,gn.Big)(a).toFixed(),[s,r]=i.split(".");if(r&&r.length>n)throw new st(o,r.length,n)}async function Gt(o,a,n){return await Promise.race([o,new Promise((i,s)=>{setTimeout(()=>s(new Le(a)),n)})])}async function fn(o,a,n,i){if(n<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${n} was received.`);let s=0;for(;;)try{return await Gt(o(),a,i)}catch{if(++s>=n)throw new Le(a)}}async function Kn(o,a,n,i=1.5,s=!1){let r=[],A=0,c=await o();if(r.push(c),!a(c))return r;let m=new Date(Date.now()+n*1e3).valueOf(),l=1e3,d=l;for(;Date.now()<m;){let u=r[r.length-1];if(u===void 0||!a(u))break;A++,s&&console.info(`Waiting ${l}ms before trying again (bringing the total wait time to ${d}ms so far, of total ${n*1e3}ms)`),await new Promise(y=>setTimeout(y,l)),l=l*i,new Date(Date.now()+l).valueOf()>m&&(l=m-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${l}ms`)),d=l+d;let p=await o(u);r.push(p),s&&a(p)&&console.info(`${A}. Called ${o.name}; ${r.length} prev attempts. Most recent: ${JSON.stringify(r[r.length-1],null,2)}`)}return r}var Nt=ke(require("@project-serum/anchor")),Bn=require("@solana/web3.js"),ca=require("big.js");var ri={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Qn=ri;var oi={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Hn=oi;var X=ke(require("@project-serum/anchor")),Y=require("@solana/web3.js");async function re(o,a){return X.utils.token.associatedAddress({mint:a,owner:o})}async function We(o){let[a]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("config")],o);return a}async function zn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("lock"),Uint8Array.from(o)],a);return n}async function mt(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([o])],a);return n}async function Ke(o){let a=await We(o),[n]=await Y.PublicKey.findProgramAddress([a.toBuffer()],o);return n}async function jn(o,a){let[n]=await Y.PublicKey.findProgramAddress([o.toBuffer()],a);return n}async function Qe(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}async function qn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([o]),a],n);return i}async function yn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([o])],a);return n}async function hn(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([o])],a);return n}async function $n(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("sent_message"),o],a);return n}async function bn(o,a,n){let[i]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("user_deposit"),a.toBytes(),o.toBytes()],n);return i}async function ea(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("cctp_bridge"),o.toBytes()],a);return n}async function ta(o,a){let[n]=await Y.PublicKey.findProgramAddress([X.utils.bytes.utf8.encode("token"),o.toBytes()],a);return n}function na(o,a){let[n]=Y.PublicKey.findProgramAddressSync([X.utils.bytes.utf8.encode("lock"),a.toBuffer()],o);return n}function aa(o,a,n,i){let s=Ne("message_transmitter",n),r=Ne("token_messenger",i),A=Ne("__event_authority",i),c=Ne("token_minter",i),m=Ne("local_token",i,[a]),l=Ne("remote_token_messenger",i,[o.toString()]),d=Ne("sender_authority",i);return{messageTransmitterAccount:s,tokenMessenger:r,tokenMessengerEventAuthority:A,tokenMinter:c,localToken:m,remoteTokenMessengerKey:l,authorityPda:d}}function Ne(o,a,n=[]){let i=[Buffer.from(X.utils.bytes.utf8.encode(o))];for(let r of n)typeof r=="string"?i.push(Buffer.from(X.utils.bytes.utf8.encode(r))):Array.isArray(r)||Buffer.isBuffer(r)?i.push(Buffer.from(Uint8Array.from(r))):i.push(Buffer.from(Uint8Array.from(r.toBuffer())));return Y.PublicKey.findProgramAddressSync(i,a)[0]}var ia=require("@project-serum/anchor"),Zt=require("@solana/web3.js");function Fe(o,a){let n=new Zt.Connection(o,"confirmed"),i=new Zt.PublicKey(a);return new ia.AnchorProvider(n,{publicKey:i},{preflightCommitment:"confirmed",commitment:"confirmed"})}var oe=class{};var sa=require("@solana/web3.js"),ra=require("@stellar/stellar-sdk"),Pe=require("big.js"),Pn=ke(require("randombytes")),Tn=require("tronweb");function Re(o,a,n){let i;switch(a){case"EVM":{i=Ai(o);break}case"SOLANA":{i=new sa.PublicKey(o).toBuffer();break}case"TRX":{i=ci(o);break}case"SRB":{i=new ra.Address(o).toBuffer();break}}switch(n){case"EVM":return"0x"+i.toString("hex");case"SOLANA":return Array.from(i);case"TRX":return i;case"SRB":return i.toJSON().data}}function oa(o){return Buffer.from(o.replace(/^0x/i,""),"hex")}function Ai(o){let n=oa(o);return Buffer.concat([Buffer.alloc(32-n.length,0),n],32)}function ci(o){let a=Dt(o),n=oa(a);return mi(n,32)}function Dt(o){let a=Tn.utils.crypto.decodeBase58Address(o);return a?Tn.utils.bytes.byteArray2hexStr(a).replace(/^41/,"0x"):""}function mi(o,a){if(o.length>=a)return o;let n=Buffer.alloc(a,0);return o.copy(n,a-o.length),n}function _t(){return(0,Pn.default)(32)}function lt(){let o=(0,Pn.default)(32).readBigInt64BE();return o<0?o*-1n:o}function Ge(o,a){let n={},i=a.sourceToken;return n.amount=M(a.amount,i.decimals).toFixed(),n.contractAddress=i.bridgeAddress,n.fromAccountAddress=a.fromAccountAddress,n.fromTokenAddress=Re(i.tokenAddress,o,o),n.toAccountAddress=a.toAccountAddress,n.toTokenAddress=Re(a.destinationToken.tokenAddress,o,o),n.minimumReceiveAmount=a.minimumReceiveAmount?M(a.minimumReceiveAmount,a.destinationToken.decimals).toFixed():"0",n}async function Ie(o,a,n){let i={};i.fromChainId=a.sourceToken.allbridgeChainId,i.fromChainSymbol=a.sourceToken.chainSymbol;let s=R.getChainProperty(a.destinationToken.chainSymbol).chainType;i.fromTokenAddress=a.sourceToken.tokenAddress,i.toChainId=a.destinationToken.allbridgeChainId,i.toTokenAddress=a.destinationToken.tokenAddress,a.gasFeePaymentMethod==="stablecoin"?i.gasFeePaymentMethod="stablecoin":i.gasFeePaymentMethod="native";let r=a.sourceToken;if(a.messenger===3){if(!r.cctpAddress||!a.destinationToken.cctpAddress)throw new ee("Such route does not support CCTP protocol");i.contractAddress=r.cctpAddress}else i.contractAddress=r.bridgeAddress;i.messenger=a.messenger,i.fromAccountAddress=a.fromAccountAddress,i.amount=M(a.amount,r.decimals).toFixed();let{fee:A,feeFormat:c}=a;if(!A){let u=(await Sn(i.fromChainId,a.sourceToken.chainType,i.toChainId,r.decimals,i.messenger,n))[i.gasFeePaymentMethod];if(!u)throw new Xe;A=u.int,c="int"}if(c=="float")switch(i.gasFeePaymentMethod){case"native":i.fee=M(A,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.fee=M(A,r.decimals).toFixed(0);break}else i.fee=A;let{extraGas:m,extraGasFormat:l}=a;if(m&&+m>0){if(l=="float")switch(i.gasFeePaymentMethod){case"native":i.extraGas=M(m,R.getChainDecimalsByType(r.chainType)).toFixed(0);break;case"stablecoin":i.extraGas=M(m,r.decimals).toFixed(0);break}else i.extraGas=m;await ui(i.extraGas,i.gasFeePaymentMethod,r,a.destinationToken,n)}return i.fromTokenAddress=Re(i.fromTokenAddress,o,o),i.toAccountAddress=Re(a.toAccountAddress,s,o),i.toTokenAddress=Re(i.toTokenAddress,s,o),i.gasFeePaymentMethod=="stablecoin"&&li(i.amount,r.decimals,i.fee,i.extraGas),i}function li(o,a,n,i){let s=(0,Pe.Big)(o).minus(n).minus(i??0);if(s.lte(0))throw new Ze(`Amount not enough to pay fee, ${B((0,Pe.Big)(s).minus(1).neg(),a).toFixed()} stables is missing`)}async function Sn(o,a,n,i,s,r){let A=await r.getReceiveTransactionCost({sourceChainId:o,destinationChainId:n,messenger:s}),c={native:{int:A.fee,float:B(A.fee,R.getChainDecimalsByType(a)).toFixed()}};if(A.sourceNativeTokenPrice){let m=xe(new Pe.Big(A.fee).mul(A.sourceNativeTokenPrice),R.getChainDecimalsByType(a),i).toFixed(0,Pe.Big.roundUp);c.stablecoin={int:m,float:B(m,i).toFixed()}}return c}async function ui(o,a,n,i,s){let A=(await wn(n,i,s)).extraGasMax[a];if(!A)throw new Xe(`Impossible to pay extra gas by '${a}' payment method`);let c=A.int;if((0,Pe.Big)(o).gt(c))throw new it(`Extra gas ${o} in int format, exceeded limit ${c} for '${a}' payment method`)}async function wn(o,a,n){let i={},s=await n.getReceiveTransactionCost({sourceChainId:o.allbridgeChainId,destinationChainId:a.allbridgeChainId,messenger:1}),r=a.txCostAmount.maxAmount,A=B(r,R.getChainDecimalsByType(a.chainType)).toFixed(),c=(0,Pe.Big)(A).div(s.exchangeRate).toFixed(R.getChainDecimalsByType(o.chainType),Pe.Big.roundDown),m=M(c,R.getChainDecimalsByType(o.chainType)).toFixed(0);if(i.native={int:m,float:c},s.sourceNativeTokenPrice){let l=(0,Pe.Big)(c).mul(s.sourceNativeTokenPrice).toFixed(o.decimals,Pe.Big.roundDown);i.stablecoin={int:M(l,o.decimals).toFixed(0),float:l}}return{extraGasMax:i,destinationChain:{gasAmountMax:{int:r,float:A},swap:{int:a.txCostAmount.swap,float:B(a.txCostAmount.swap,R.getChainDecimalsByType(a.chainType)).toFixed()},transfer:{int:a.txCostAmount.transfer,float:B(a.txCostAmount.transfer,R.getChainDecimalsByType(a.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Aa(o){return o.sourceToken.chainSymbol!==o.destinationToken.chainSymbol}var dt=class extends oe{constructor(n,i,s){super();this.web3=n;this.api=i;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(n){let i=await this.buildRawTransactionSend(n);return this.sendRawTransaction(i)}async buildRawTransactionSwap(n){let i=Ge(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:l}=n,u=this.getBridgeContract(s).methods.swap(i,A,m,c,l);return Promise.resolve({from:r,to:s,data:u.encodeABI()})}async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api),{amount:s,contractAddress:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,messenger:u,fee:p,gasFeePaymentMethod:y,extraGas:h}=i,b="0x"+_t().toString("hex"),f,P,w=p;if(h&&(w=(0,ca.Big)(w).plus(h).toFixed()),u===3){let S=await this.buildRawTransactionCctpSend(n,i,w);f=S.sendMethod,P=S.value}else{let S=this.getBridgeContract(r);y==="stablecoin"?(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,w),P="0"):(f=S.methods.swapAndBridge(c,s,l,m,d,b,u,0),P=w)}return Promise.resolve({from:A,to:r,value:P,data:f.encodeABI()})}async buildRawTransactionCctpSend(n,i,s){let{amount:r,contractAddress:A,toChainId:c,toAccountAddress:m,gasFeePaymentMethod:l}=i,d=this.getCctpBridgeContract(A),u,p;if(n.destinationToken.chainType==="SOLANA"){let y,h=new Bn.PublicKey(n.toAccountAddress),b=new Bn.PublicKey(n.destinationToken.tokenAddress),f=await re(h,b),P=Fe(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),n.toAccountAddress);Nt.setProvider(P);let w=await Nt.Spl.token(P).account.token.fetchNullable(f);if(w?.authority.equals(h))y=Re(f.toBase58(),"SOLANA",this.chainType);else{let S=await P.connection.getTokenAccountsByOwner(h,{mint:b});if(S.value.length===0&&!w)y=Re(f.toBase58(),"SOLANA",this.chainType);else if(S.value.length>0){let D=S.value[0];if(!D?.pubkey)throw new T("First token account or its public key is undefined");y=Re(D.pubkey.toBase58(),"SOLANA",this.chainType)}else throw new T("Associated account has wrong owner")}l==="stablecoin"?(u=d.methods.bridgeWithWalletAddress(r,y,m,c,s),p="0"):(u=d.methods.bridgeWithWalletAddress(r,y,m,c,0),p=s)}else l==="stablecoin"?(u=d.methods.bridge(r,m,c,s),p="0"):(u=d.methods.bridge(r,m,c,0),p=s);return{sendMethod:u,value:p}}async sendRawTransaction(n){let i=await this.web3.eth.estimateGas(n),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:r}=await this.web3.eth.sendTransaction({...n,gas:i,...s});return{txId:r.toString()}}getBridgeContract(n){return new this.web3.eth.Contract(Qn.abi,n)}getCctpBridgeContract(n){return new this.web3.eth.Contract(Hn.abi,n)}};var Ut=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){let i,s;n?(i=a,s=n):s=a;let r=pt(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:r},i)}async send(a,n){return W(a.amount),F("amount",a.amount,a.sourceToken.decimals),Aa(a)?Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSend(a):Vt(a.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionSwap(a)}};var G=require("@project-serum/anchor"),v=require("@solana/web3.js"),ne=require("big.js");var gt={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var ma={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var la=require("@project-serum/anchor"),ua=ke(require("big.js")),ft=require("web3");async function He(o,a){return await la.Spl.token(a).account.token.fetch(o)}async function da(o,a,n){let i=await a.account.pool.fetch(n),s=i.decimals,r=(0,ua.default)(i.feeShareBp.toString()).div(1e4).toFixed(),A={aValue:i.a.toString(),dValue:i.d.toString(),totalLpAmount:i.totalLpAmount.toString(),tokenBalance:i.tokenBalance.toString(),vUsdBalance:i.vUsdBalance.toString(),accRewardPerShareP:i.accRewardPerShareP.toString()};return he(o,{decimals:s,feeShare:r},A)}function pa(o){let a=o.amount,n="0x"+o.recipient.toString("hex"),i=o.sourceChainId,s=o.destinationChainId,r="0x"+o.receiveToken.toString("hex"),A="0x"+o.nonce.toString("hex"),c=1,m="0x"+o.chainBridge.toString("hex"),l=ft.Web3.utils.encodePacked({t:"uint256",v:a},{t:"bytes32",v:n},{t:"uint256",v:i},{t:"bytes32",v:r},{t:"uint256",v:A},{t:"uint8",v:c});if(!l)throw new T("message cannot be undefined");let d=ft.Web3.utils.keccak256(Buffer.from(l.replace("0x",""),"hex")),u=Buffer.from(d.replace("0x",""),"hex");u[0]=i,u[1]=s;let p=ft.Web3.utils.encodePacked({t:"bytes32",v:"0x"+u.toString("hex")},{t:"bytes32",v:m});if(!p)throw new De("messageWithSigner cannot be undefined");let y=ft.Web3.utils.keccak256(Buffer.from(p.replace("0x",""),"hex")),h=Buffer.from(y.replace("0x",""),"hex");return h[0]=u[0],h[1]=u[1],h}var j=require("@solana/web3.js"),ga=require("big.js");var Cn=require("@solana/web3.js");async function Ve(o,a){return await Promise.all(o.message.addressTableLookups.map(async n=>new Cn.AddressLookupTableAccount({key:n.accountKey,state:Cn.AddressLookupTableAccount.deserialize(await a.getAccountInfo(n.accountKey).then(i=>{if(!i)throw new T("Cannot get AccountInfo");return i.data}))})))}var Ot="AUTO";async function ze(o,a,n){let i=new j.Connection(n,"confirmed"),s=(await i.simulateTransaction(o)).value.unitsConsumed;await ya(o.instructions,s,a,i)}async function fa(o,a,n){let i=new j.Connection(n,"confirmed"),s=await Ve(o,i),r=j.TransactionMessage.decompile(o.message,{addressLookupTableAccounts:s});if(o.serialize().length>1232)throw new ot;await ya(r.instructions,769230,a,i),o.message=r.compileToV0Message(s)}async function ya(o,a,n,i){if(a>0){let s=di(a,o);if(n?.solana){let r=n.solana;if(r===Ot)await Rn(o,i);else if("pricePerUnitInMicroLamports"in r)await Rn(o,i,r.pricePerUnitInMicroLamports);else{let A=(0,ga.Big)(r.extraFeeInLamports).div(s).mul(At(6)).toFixed(0);await Rn(o,i,A)}}}}function di(o,a){let n=a.findIndex(r=>r.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(r)==="SetComputeUnitLimit"),i=Number((o*1.3).toFixed(0)),s=j.ComputeBudgetProgram.setComputeUnitLimit({units:i});return n>=0?a[n]=s:a.push(s),i.toString()}async function Rn(o,a,n){let i=o.findIndex(A=>A.programId.equals(j.ComputeBudgetProgram.programId)&&j.ComputeBudgetInstruction.decodeInstructionType(A)==="SetComputeUnitPrice"),s=BigInt(n||await pi(a)),r=j.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return i>=0?o[i]=r:o.push(r),s.toString()}async function pi(o){let a=await o.getRecentPrioritizationFees(),n=0;for(let i of a)n+=i.prioritizationFee;return(n/a.length).toFixed(0)}var ha=require("@solana/spl-token"),Oe=require("@solana/web3.js"),je=ke(require("axios"));var Et=class{connection;jupiterUrl;maxAccounts;constructor(a,n,i){this.connection=new Oe.Connection(a),this.jupiterUrl=n.replace(/\/$/,""),this.maxAccounts=i}async getJupiterSwapTx(a,n,i,s){let r;try{let u=s?"ExactOut":"ExactIn",p=`${this.jupiterUrl}/quote?inputMint=${n}&outputMint=${ha.NATIVE_MINT.toString()}&amount=${i}&swapMode=${u}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(p+=`&maxAccounts=${this.maxAccounts}`),r=await je.default.get(p)}catch(u){throw u instanceof je.AxiosError&&u.response&&u.response.data&&u.response.data.error?new O(u.response.data.error):new O("Cannot get route")}let A;if(s&&r?.data?.inAmount)A=r.data.inAmount;else if(s)throw new O("Cannot get inAmount");let c;try{c=await je.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:r.data,userPublicKey:a,wrapAndUnwrapSol:!0})}catch(u){throw u instanceof je.AxiosError&&u.response&&u.response.data&&u.response.data.error?new O(u.response.data.error):new O("Cannot get swap transaction")}let m;if(c?.data?.swapTransaction)m=c.data.swapTransaction;else throw new O("Cannot get swap transaction");let l=Buffer.from(m,"base64"),d=Oe.VersionedTransaction.deserialize(l);return s?{tx:d,amountIn:A}:{tx:d}}async amendJupiterWithSdkTx(a,n){try{let i=await Ve(a,this.connection),s=await Ve(n,this.connection),r=Oe.TransactionMessage.decompile(a.message,{addressLookupTableAccounts:i}),A=Oe.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s});if(A.instructions.shift(),r.instructions.push(...A.instructions),i.push(...s),a.message=r.compileToV0Message(i),n.message.header.numRequiredSignatures===2&&a.signatures.length===1){let c=n.signatures[0];if(!c)throw new T("Signature is undefined");a.signatures.push(c)}return a}catch(i){throw i instanceof Error&&i.message?new O(`Some error occurred during creation final swap and bridge transaction. ${i.message}`):new O("Some error occurred during creation final swap and bridge transaction")}}};var In=1e6,ba=1.1,Xt=class extends oe{constructor(n,i,s){super();this.solanaRpcUrl=n;this.params=i;this.api=s;this.jupiterService=new Et(n,i.jupiterUrl,i.jupiterMaxAccounts)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(n){let i=Ge(this.chainType,n);return await this.buildSwapTransaction(i,n.sourceToken.poolAddress,n.destinationToken.poolAddress,n.txFeeParams)}async buildSwapTransaction(n,i,s,r){let{fromAccountAddress:A,amount:c,contractAddress:m,fromTokenAddress:l,toTokenAddress:d,toAccountAddress:u,minimumReceiveAmount:p}=n,y=A,h=m,b=l,f=d,P=s,w=u,S=new v.PublicKey(y),D=Fe(this.solanaRpcUrl,S.toString()),k=new G.Program(gt,h,D),C=await Ke(k.programId),K=await We(k.programId),U=new v.PublicKey(b),de=await Qe(U,k.programId),pe=new v.PublicKey(i),Be=await re(S,U),ae=new v.PublicKey(w),J=new v.PublicKey(f),$=await Qe(J,k.programId),ie=new v.PublicKey(P),Q=await re(ae,J),ge=[G.web3.ComputeBudgetProgram.setComputeUnitLimit({units:In})];try{await He(Q,D)}catch{let Ua=await G.Spl.associatedToken(D).methods.create().accounts({mint:J,owner:ae,associatedAccount:Q}).instruction();ge.push(Ua)}let fe=await k.methods.swap(new G.BN(c),new G.BN(p||0)).accounts({payer:S,config:K,bridgeAuthority:C,user:S,sendBridgeToken:de,sendMint:U,sendPool:pe,sendUserToken:Be,receiveBridgeToken:$,receiveMint:J,receivePool:ie,receiveUserToken:Q}).preInstructions(ge).transaction(),se=D.connection;return fe.recentBlockhash=(await se.getLatestBlockhash()).blockhash,fe.feePayer=S,await ze(fe,r,this.solanaRpcUrl),await this.convertToVersionedTransaction(fe,se)}async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api),s=this.addPoolAddress(n,i),r=s.gasFeePaymentMethod=="stablecoin",A;if(r)try{let{tx:l,solTxSendUpdatedParams:d}=await this.processJup(s,n,!0);A=l,s={...s,...d}}catch{try{let{tx:d,solTxSendUpdatedParams:u}=await this.processJup(s,n,!1);A=d,s={...s,...u}}catch(d){throw d instanceof _?d:d instanceof Error&&d.message?new O(`Some error occurred during creation Jupiter swap transaction. ${d.message}`):new O("Some error occurred during creation Jupiter swap transaction")}}let c,m;switch(i.messenger){case 1:{let l=await this.prepareSwapAndBridgeData(s);c=await this.buildSwapAndBridgeAllbridgeTransaction(l);break}case 2:{let l=await this.prepareSwapAndBridgeData(s),{transaction:d,messageAccount:u}=await this.buildSwapAndBridgeWormholeTransaction(l);c=d,m=u;break}case 3:{let l=await this.prepareSwapAndBridgeCctpData(s),{transaction:d,messageSentEventDataKeypair:u}=await this.buildSwapAndBridgeCctpTransaction(n.destinationToken.chainSymbol,l);c=d,m=u;break}}if(r){if(!A)throw new O("Swap tx is absent");c=await this.jupiterService.amendJupiterWithSdkTx(A,c)}return await fa(c,n.txFeeParams,this.solanaRpcUrl),m&&c.sign([m]),c}async processJup(n,i,s){let{fee:r,extraGas:A,gasFeePaymentMethod:c}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(i.sourceToken.decimals,n),m=s?(0,ne.Big)(r):(0,ne.Big)(n.fee);A&&(m=m.plus(A)),s||(m=m.mul(ba));let{tx:l,amountIn:d}=await this.jupiterService.getJupiterSwapTx(i.fromAccountAddress,i.sourceToken.tokenAddress,m.toFixed(0),s),u;if(s){if(!d)throw new O("Cannot get inAmount");u=(0,ne.Big)(n.amount).minus((0,ne.Big)(d).mul(ba)).toFixed(0)}else u=(0,ne.Big)(n.amount).minus(m).toFixed(0);if((0,ne.Big)(u).lte(0))throw new Ze(`Amount not enough to pay fee, ${B((0,ne.Big)(u).minus(1).neg(),i.sourceToken.decimals).toFixed()} stables is missing`);return{tx:l,solTxSendUpdatedParams:{amount:u,fee:r,extraGas:A,gasFeePaymentMethod:c}}}addPoolAddress(n,i){return{...i,poolAddress:n.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(n,i){if(i.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:i.fromChainId,destinationChainId:i.toChainId,messenger:i.messenger})).sourceNativeTokenPrice,r=(0,ne.Big)(i.fee).div(s).mul((0,ne.Big)(10).pow(R.getChainDecimalsByType("SOLANA")-n)).toFixed(0),A;return i.extraGas&&(A=(0,ne.Big)(i.extraGas).div(s).mul((0,ne.Big)(10).pow(R.getChainDecimalsByType("SOLANA")-n)).toFixed(0)),{fee:r,extraGas:A,gasFeePaymentMethod:"native"}}return{fee:i.fee,extraGas:i.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(n,i,s){return G.web3.SystemProgram.transfer({fromPubkey:i,toPubkey:s,lamports:+n})}async prepareSwapAndBridgeData(n){let{amount:i,contractAddress:s,fromChainId:r,fromAccountAddress:A,fromTokenAddress:c,toChainId:m,toAccountAddress:l,toTokenAddress:d,poolAddress:u,extraGas:p}=n,y=c,h=A,b=m,f=d,P=l,w=s,S=r,D=Fe(this.solanaRpcUrl,h),k=new G.Program(gt,w,D),C=Array.from(_t()),K=new v.PublicKey(u),U=await da(i,k,K),de=await zn(C,k.programId),pe=await Ke(k.programId),Be=await re(new v.PublicKey(h),new v.PublicKey(y)),ae=await Qe(new v.PublicKey(y),k.programId),J=await yn(b,k.programId),$=await qn(b,Buffer.from(f),k.programId),ie=await We(k.programId),Q=await k.account.config.fetch(ie),ge=await mt(b,Q.gasOracleProgramId),fe=await mt(S,Q.gasOracleProgramId),se=pa({amount:U,recipient:Buffer.from(P),nonce:Buffer.from(C),receiveToken:Buffer.from(f),destinationChainId:b,sourceChainId:S,chainBridge:(await Ke(k.programId)).toBuffer()}),I={};return I.bridge=k,I.amount=new G.BN(i),I.vusdAmount=new G.BN(U),I.nonce=C,I.recipient=Array.from(P),I.receiveToken=Array.from(f),I.poolAccount=K,I.lockAccount=de,I.bridgeAuthority=pe,I.userToken=Be,I.bridgeTokenAccount=ae,I.chainBridgeAccount=J,I.otherBridgeTokenAccount=$,I.userAccount=new v.PublicKey(h),I.destinationChainId=b,I.mint=new v.PublicKey(y),I.config=ie,I.configAccountInfo=Q,I.gasPrice=ge,I.thisGasPrice=fe,I.message=se,p&&(I.extraGasInstruction=this.getExtraGasInstruction(p,I.userAccount,ie)),I}async buildSwapAndBridgeAllbridgeTransaction(n){let{bridge:i,vusdAmount:s,nonce:r,recipient:A,receiveToken:c,poolAccount:m,lockAccount:l,bridgeAuthority:d,userToken:u,bridgeTokenAccount:p,chainBridgeAccount:y,otherBridgeTokenAccount:h,userAccount:b,destinationChainId:f,mint:P,config:w,configAccountInfo:S,gasPrice:D,thisGasPrice:k,message:C,extraGasInstruction:K}=n,U=S.allbridgeMessengerProgramId,de=await hn(f,U),pe=await We(U),Be=await $n(C,U),ae=[];K&&ae.push(K);let J=await i.methods.swapAndBridge({vusdAmount:s,nonce:r,destinationChainId:f,recipient:A,receiveToken:c}).accounts({mint:P,user:b,config:w,lock:l,pool:m,gasPrice:D,thisGasPrice:k,bridgeAuthority:d,userToken:u,bridgeToken:p,chainBridge:y,messenger:U,messengerGasUsage:de,messengerConfig:pe,sentMessageAccount:Be,otherBridgeToken:h}).preInstructions([G.web3.ComputeBudgetProgram.setComputeUnitLimit({units:In})]).postInstructions(ae).transaction(),$=Fe(this.solanaRpcUrl,b.toString()).connection;return J.recentBlockhash=(await $.getLatestBlockhash()).blockhash,J.feePayer=b,await this.convertToVersionedTransaction(J,$)}async convertToVersionedTransaction(n,i){let s=await i.getAddressLookupTable(new v.PublicKey(this.params.solanaLookUpTable)).then(A=>A.value);if(!s)throw new T("Cannot find allbridgeLookupTableAccount");let r=new G.web3.TransactionMessage({payerKey:n.feePayer,recentBlockhash:n.recentBlockhash,instructions:n.instructions}).compileToV0Message([s]);return new G.web3.VersionedTransaction(r)}async buildSwapAndBridgeWormholeTransaction(n){let{bridge:i,vusdAmount:s,nonce:r,recipient:A,receiveToken:c,poolAccount:m,lockAccount:l,bridgeAuthority:d,userToken:u,bridgeTokenAccount:p,chainBridgeAccount:y,otherBridgeTokenAccount:h,userAccount:b,destinationChainId:f,mint:P,config:w,configAccountInfo:S,gasPrice:D,thisGasPrice:k,message:C,extraGasInstruction:K}=n,U=this.params.wormholeMessengerProgramId,[de]=v.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new v.PublicKey(U)),[pe]=v.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new v.PublicKey(U)),[Be]=v.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),d.toBuffer()],new v.PublicKey(U)),ae=await hn(f,S.wormholeMessengerProgramId),J=await We(S.wormholeMessengerProgramId),$=v.Keypair.generate(),ie=Fe(this.solanaRpcUrl,b.toString()),Q=await ie.connection.getAccountInfo(de);if(Q==null)throw new T("Cannot fetch wormhole bridge account info");let ge=new G.BN(Q.data.slice(16,24),"le").toString(),fe=v.SystemProgram.transfer({fromPubkey:b,toPubkey:pe,lamports:+ge}),se=[];K&&se.push(K);let I={mint:P,user:b,config:w,lock:l,pool:m,gasPrice:D,thisGasPrice:k,bridgeAuthority:d,userToken:u,bridgeToken:p,chainBridge:y,otherBridgeToken:h,messengerGasUsage:ae,wormholeProgram:U,bridge:de,message:$.publicKey,wormholeMessenger:S.wormholeMessengerProgramId,sequence:Be,feeCollector:pe,wormholeMessengerConfig:J,clock:G.web3.SYSVAR_CLOCK_PUBKEY},Ct=await i.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:r,destinationChainId:f,recipient:A,receiveToken:c}).accounts(I).preInstructions([G.web3.ComputeBudgetProgram.setComputeUnitLimit({units:In}),fe]).postInstructions(se).signers([$]).transaction();return Ct.recentBlockhash=(await ie.connection.getLatestBlockhash()).blockhash,Ct.feePayer=b,{transaction:await this.convertToVersionedTransaction(Ct,ie.connection),messageAccount:$}}async prepareSwapAndBridgeCctpData(n){let{contractAddress:i,amount:s,fromAccountAddress:r,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:l,extraGas:d}=n,u=i;if(!u)throw new ee("Such route does not support CCTP protocol");let p=4,y=r,h=l,b=m,f=Fe(this.solanaRpcUrl,y),P=new G.Program(ma,u,f),w=new v.PublicKey(A),S=await ea(w,P.programId),D=new v.PublicKey(y),k=await P.account.cctpBridge.fetch(S),C={};return C.cctpBridge=P,C.cctpBridgeAccount=S,C.cctpAddressAccount=new v.PublicKey(u),C.amount=new G.BN(s),C.recipient=Array.from(b),C.receiveToken=Array.from(h),C.userToken=await re(D,w),C.bridgeAuthority=await jn(S,P.programId),C.bridgeTokenAccount=await ta(w,P.programId),C.chainBridgeAccount=await yn(c,P.programId),C.userAccount=D,C.destinationChainId=c,C.mint=w,C.gasPrice=await mt(c,k.gasOracleProgramId),C.thisGasPrice=await mt(p,k.gasOracleProgramId),C.provider=f,d&&(C.extraGasInstruction=this.getExtraGasInstruction(d,C.userAccount,S)),C}async buildSwapAndBridgeCctpTransaction(n,i){let{cctpBridge:s,cctpBridgeAccount:r,amount:A,recipient:c,receiveToken:m,bridgeAuthority:l,userToken:d,bridgeTokenAccount:u,chainBridgeAccount:p,userAccount:y,destinationChainId:h,mint:b,gasPrice:f,thisGasPrice:P,extraGasInstruction:w,provider:S}=i,D=this.params.cctpParams.cctpDomains[n],k=this.params.cctpParams.cctpTransmitterProgramId,C=this.params.cctpParams.cctpTokenMessengerMinter;if(D==null||!k||!C)throw new T("CCTP is not configured");let K=new v.PublicKey(k),U=new v.PublicKey(C),{messageTransmitterAccount:de,tokenMessenger:pe,tokenMessengerEventAuthority:Be,tokenMinter:ae,localToken:J,remoteTokenMessengerKey:$,authorityPda:ie}=aa(D,b,K,U),Q=[];w&&Q.push(w);let ge=v.Keypair.generate(),fe=na(s.programId,ge.publicKey),se=await s.methods.bridge({amount:A,destinationChainId:h,recipient:c,receiveToken:m}).accounts({mint:b,user:y,cctpBridge:r,messageSentEventData:ge.publicKey,lock:fe,cctpMessenger:U,messageTransmitterProgram:K,messageTransmitterAccount:de,tokenMessenger:pe,tokenMinter:ae,localToken:J,remoteTokenMessengerKey:$,authorityPda:ie,eventAuthority:Be,bridgeToken:u,gasPrice:f,thisGasPrice:P,chainBridge:p,userToken:d,bridgeAuthority:l}).preInstructions([G.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(Q).transaction(),I=S.connection;return se.recentBlockhash=(await I.getLatestBlockhash()).blockhash,se.feePayer=y,{transaction:await this.convertToVersionedTransaction(se,I),messageSentEventDataKeypair:ge}}send(n){throw new L}};var Yt=require("@stellar/stellar-sdk"),Ta=require("big.js");var t=require("@stellar/stellar-sdk"),gi=t.contract.Spec,fi=t.contract.Client;var yt=class extends fi{constructor(n){super(new gi(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),n);this.options=n}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Lt=class extends oe{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s}chainType="SRB";async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api);return await this.buildRawTransactionSendFromParams(i)}async buildRawTransactionSendFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:l,fee:d,gasFeePaymentMethod:u,extraGas:p}=n,y=d;p&&(y=(0,Ta.Big)(y).plus(p).toFixed());let h=this.getContract(yt,s,r),b;return u==="stablecoin"?b=await h.swap_and_bridge({sender:r,token:Yt.Address.contract(Buffer.from(A)).toString(),amount:BigInt(i),recipient:Buffer.from(m),destination_chain_id:+c,receive_token:Buffer.from(l),nonce:lt(),gas_amount:BigInt(0),fee_token_amount:BigInt(y)}):b=await h.swap_and_bridge({sender:r,token:Yt.Address.contract(Buffer.from(A)).toString(),amount:BigInt(i),recipient:Buffer.from(m),destination_chain_id:+c,receive_token:Buffer.from(l),nonce:lt(),gas_amount:BigInt(y),fee_token_amount:BigInt(0)}),b.toXDR()}async buildRawTransactionSwap(n){let i=Ge(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:l}=n;return(await this.getContract(yt,s,r).swap({sender:r,amount:BigInt(i),token:Yt.Address.contract(Buffer.from(A)).toBuffer(),receive_token:Buffer.from(m),recipient:c,receive_amount_min:BigInt(l)})).toXDR()}send(n){throw new L}getContract(n,i,s){let r={publicKey:s,contractId:i,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(r)}};var wa=require("big.js");var Pa=ke(require("bn.js"));function Jt(o){return"0x"+new Pa.default(o).toString("hex")}function Sa(o){return new Promise(a=>setTimeout(()=>a(),o))}async function Kt(o,a){let n=await o.trx.sign(a);if(!n.signature)throw new De("Transaction was not signed properly");let s=(await o.trx.sendRawTransaction(n)).transaction.txID;return await yi(o,s),{txId:s}}async function yi(o,a,n=1e4){let i=Date.now();for(;;){if(Date.now()-i>n)throw new Ye("Transaction not found");let s=await o.trx.getUnconfirmedTransactionInfo(a);if(!s?.receipt){await Sa(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new Ye(`Transaction status is ${s.receipt.result}`)}}var ht=class extends oe{constructor(n,i){super();this.tronWeb=n;this.api=i}chainType="TRX";async send(n){let i=await Ie(this.chainType,n,this.api),s=await this.buildRawTransactionSendFromParams(i);return await Kt(this.tronWeb,s)}async buildRawTransactionSwap(n){let i=Ge(this.chainType,n);return await this.buildRawTransactionSwapFromParams(i)}async buildRawTransactionSwapFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toAccountAddress:c,toTokenAddress:m,minimumReceiveAmount:l}=n,d=[{type:"uint256",value:i},{type:"bytes32",value:A},{type:"bytes32",value:m},{type:"address",value:c},{type:"uint256",value:l}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",d,"0",r)}async buildRawTransactionSend(n){let i=await Ie(this.chainType,n,this.api);return this.buildRawTransactionSendFromParams(i)}async buildRawTransactionSendFromParams(n){let{amount:i,contractAddress:s,fromAccountAddress:r,fromTokenAddress:A,toChainId:c,toAccountAddress:m,toTokenAddress:l,messenger:d,fee:u,gasFeePaymentMethod:p,extraGas:y}=n,h=u;y&&(h=(0,wa.Big)(h).plus(y).toFixed());let b=lt().toString(),f,P,w;return d==3?(p==="stablecoin"?(f=[{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"uint256",value:h}],P="0"):(f=[{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"uint256",value:0}],P=h),w="bridge(uint256,bytes32,uint256,uint256)"):(p==="stablecoin"?(f=[{type:"bytes32",value:A},{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"bytes32",value:l},{type:"uint256",value:b},{type:"uint8",value:d},{type:"uint256",value:h}],P="0"):(f=[{type:"bytes32",value:A},{type:"uint256",value:i},{type:"bytes32",value:m},{type:"uint256",value:c},{type:"bytes32",value:l},{type:"uint256",value:b},{type:"uint8",value:d},{type:"uint256",value:0}],P=h),w="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,w,f,P,r)}async buildRawTransaction(n,i,s,r,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:+r},s,A);if(!c?.result?.result)throw new T("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}};var Qt=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s;this.rawTxBuilder=new Ut(a,n,i,s)}rawTxBuilder;async getAllowance(a,n){let i,s;n?(i=a,s=n):s=a;let r=pt(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:r},i)}async checkAllowance(a,n){let i,s;n?(i=a,s=n):s=a;let r=pt(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:r},i)}async approve(a,n){let i=pt(n.token,n.messenger);return this.tokenService.approve(a,{...n,spender:i})}async send(a,n){return W(n.amount),F("amount",n.amount,n.sourceToken.decimals),Vt(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).send(n)}};function pt(o,a){if(a&&a==3){if(o.cctpAddress)return o.cctpAddress;throw new ee("Such route does not support CCTP protocol")}else return o.bridgeAddress}function Vt(o,a,n,i,s){switch(R.getChainProperty(o).chainType){case"EVM":{if(s)return new dt(s,a,n);{let r=n.getNodeRpcUrl(o);return new dt(new Ca.Web3(r),a,n)}}case"TRX":{if(s)return new ht(s,a);{let r=n.getNodeRpcUrl(o);return new ht(new Ba.TronWeb({fullHost:r,solidityNode:r,eventServer:r}),a)}}case"SOLANA":return new Xt(n.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:i.wormholeMessengerProgramId,solanaLookUpTable:i.solanaLookUpTable,cctpParams:i.cctpParams,jupiterUrl:i.jupiterUrl,jupiterMaxAccounts:i.jupiterMaxAccounts},a);case"SRB":return new Lt(n,i,a)}}var va=require("big.js");var Ma=require("tronweb"),et=require("web3");var Se=require("big.js");function Ra(o,a,n,i,s){let r=M(o,3),A=(0,Se.Big)(r),c=(0,Se.Big)(n),m=(0,Se.Big)(i).plus(s),l,d;if(c.eq(0)||m.eq(0)){let p=A.div(2);l=(0,Se.Big)(i).plus(p),d=(0,Se.Big)(s).plus(p)}else l=(0,Se.Big)(i).plus(A.mul(i).div(m)),d=(0,Se.Big)(s).plus(A.mul(s).div(m));return(0,Se.Big)(Un(a,l.toFixed(),d.toFixed())).minus(c).toFixed()}function Ia(o){let a=M(o,3);return(0,Se.Big)(a).round().toFixed()}var ve=require("web3");var hi={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},qe=hi;var q=class{lpAmount;rewardDebt;constructor(a){this.lpAmount=a.lpAmount,this.rewardDebt=a.rewardDebt}get userLiquidity(){return B(this.lpAmount,3).toFixed()}earned(a,n){let i=_n(this.lpAmount,this.rewardDebt,a.accRewardPerShareP,a.p);return n?B(i,n).toFixed():i}};var Ae=class{};var bt=class extends Ae{constructor(n,i){super();this.web3=n;this.api=i}chainType="EVM";P=52;async getUserBalanceInfo(n,i){let s;try{s=await Gt(this.getUserBalanceInfoByBatch(n,i),`Cannot get UserBalanceInfo for ${i.name} on ${i.chainSymbol}`,5e3)}catch{s=await fn(()=>this.getUserBalanceInfoPerProperty(n,i),`Cannot get UserBalanceInfo for ${i.name} on ${i.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(n){let i;try{i=await Gt(this.getPoolInfoByBatch(n),`Cannot get PoolInfo for ${n.name} on ${n.chainSymbol}`,5e3)}catch{i=await fn(()=>this.getPoolInfoPerProperty(n),`Cannot get PoolInfo for ${n.name} on ${n.chainSymbol}`,5,2e3)}return i}async getUserBalanceInfoByBatch(n,i){let s=new this.web3.eth.BatchRequest,r=this.getPoolContract(i.poolAddress),A=r.methods.userRewardDebt(n).encodeABI(),c=r.methods.balanceOf(n).encodeABI();s.add({method:"eth_call",params:[{to:i.poolAddress,data:A},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:c},"latest"]});let[m,l]=await s.execute();if(m&&l&&!m.error&&!l.error)return new q({lpAmount:ve.Web3.utils.toBigInt(l.result).toString(),rewardDebt:ve.Web3.utils.toBigInt(m.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(n,i){let s=(await this.getPoolContract(i.poolAddress).methods.userRewardDebt(n).call()).toString(),r=(await this.getPoolContract(i.poolAddress).methods.balanceOf(n).call()).toString();return new q({lpAmount:r,rewardDebt:s})}async getPoolInfoByBatch(n){let i=new this.web3.eth.BatchRequest,s=this.getPoolContract(n.poolAddress),r=s.methods.a().encodeABI(),A=s.methods.d().encodeABI(),c=s.methods.tokenBalance().encodeABI(),m=s.methods.vUsdBalance().encodeABI(),l=s.methods.totalSupply().encodeABI(),d=s.methods.accRewardPerShareP().encodeABI();i.add({method:"eth_call",params:[{to:n.poolAddress,data:r},"latest"]}),i.add({method:"eth_call",params:[{to:n.poolAddress,data:A},"latest"]}),i.add({method:"eth_call",params:[{to:n.poolAddress,data:c},"latest"]}),i.add({method:"eth_call",params:[{to:n.poolAddress,data:m},"latest"]}),i.add({method:"eth_call",params:[{to:n.poolAddress,data:l},"latest"]}),i.add({method:"eth_call",params:[{to:n.poolAddress,data:d},"latest"]});let[u,p,y,h,b,f]=await i.execute();if(u&&p&&y&&h&&b&&f&&!u.error&&!p.error&&!y.error&&!h.error&&!b.error&&!f.error){let P=ve.Web3.utils.toBigInt(y.result).toString(),w=ve.Web3.utils.toBigInt(h.result).toString(),S=z({tokenBalance:P,vUsdBalance:w});return{aValue:ve.Web3.utils.toBigInt(u.result).toString(),dValue:ve.Web3.utils.toBigInt(p.result).toString(),tokenBalance:P,vUsdBalance:w,totalLpAmount:ve.Web3.utils.toBigInt(b.result).toString(),accRewardPerShareP:ve.Web3.utils.toBigInt(f.result).toString(),p:this.P,imbalance:S}}throw new Error("Batched failed")}async getPoolInfoPerProperty(n){let i=this.getPoolContract(n.poolAddress),s=(await i.methods.a().call()).toString(),r=(await i.methods.d().call()).toString(),A=(await i.methods.tokenBalance().call()).toString(),c=(await i.methods.vUsdBalance().call()).toString(),m=(await i.methods.totalSupply().call()).toString(),l=(await i.methods.accRewardPerShareP().call()).toString(),d=z({tokenBalance:A,vUsdBalance:c});return{aValue:s,dValue:r,tokenBalance:A,vUsdBalance:c,totalLpAmount:m,accRewardPerShareP:l,p:this.P,imbalance:d}}async buildRawTransactionDeposit(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.deposit(n.amount).encodeABI()})}async buildRawTransactionWithdraw(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.withdraw(n.amount).encodeABI()})}async buildRawTransactionClaimRewards(n){return Promise.resolve({...this.buildTxParams(n),data:this.getPoolContract(n.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(n){return{from:n.accountAddress,to:n.token.poolAddress,value:"0"}}getPoolContract(n){return new this.web3.eth.Contract(qe.abi,n)}};var Ht=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s}async approve(a,n){if(n){let i=a,s=n;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},i)}else{let i=a;return this.tokenService.buildRawTransactionApprove({...i,spender:i.token.poolAddress})}}async deposit(a,n){return W(a.amount),F("amount",a.amount,a.token.decimals),a.amount=M(a.amount,a.token.decimals).toFixed(),$e(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionDeposit(a)}async withdraw(a,n){return W(a.amount),F("amount",a.amount,a.token.decimals),a.amount=M(a.amount,3).toFixed(),$e(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionWithdraw(a)}async claimRewards(a,n){return $e(a.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).buildRawTransactionClaimRewards(a)}};var me=require("@project-serum/anchor"),ce=require("@solana/web3.js");var zt=class extends Ae{constructor(n,i){super();this.solanaRpcUrl=n;this.api=i}chainType="SOLANA";P=48;async getUserBalanceInfo(n,i){let s=this.buildAnchorProvider(n),r=this.getBridge(i.bridgeAddress,s),A=new ce.PublicKey(i.poolAddress),c=await r.account.pool.fetch(A);try{let m=await bn(new ce.PublicKey(n),c.mint,r.programId),{lpAmount:l,rewardDebt:d}=await r.account.userDeposit.fetch(m);return new q({lpAmount:l.toString(),rewardDebt:d.toString()})}catch{return new q({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(n){let i=this.buildAnchorProvider(n.bridgeAddress),s=await this.getBridge(n.bridgeAddress,i).account.pool.fetch(n.poolAddress),r=s.vUsdBalance.toString(),A=s.tokenBalance.toString(),c=z({tokenBalance:A,vUsdBalance:r});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:r,tokenBalance:A,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:c}}async buildRawTransactionDeposit(n){let{bridge:i,accounts:s,preInstructions:r}=await this.prepareDataForTransaction(n),A=await i.methods.deposit(new me.BN(n.amount)).accounts(s).preInstructions(r).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new ce.PublicKey(n.accountAddress),await ze(A,n.txFeeParams,this.solanaRpcUrl),A}async buildRawTransactionWithdraw(n){let{bridge:i,accounts:s,preInstructions:r}=await this.prepareDataForTransaction(n),A=await i.methods.withdraw(new me.BN(n.amount)).accounts(s).preInstructions(r).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new ce.PublicKey(n.accountAddress),await ze(A,n.txFeeParams,this.solanaRpcUrl),A}async buildRawTransactionClaimRewards(n){let{bridge:i,accounts:s,preInstructions:r}=await this.prepareDataForTransaction(n),A=await i.methods.claimRewards().accounts(s).preInstructions(r).transaction();return A.recentBlockhash=(await this.buildAnchorProvider(n.accountAddress).connection.getLatestBlockhash()).blockhash,A.feePayer=new ce.PublicKey(n.accountAddress),await ze(A,n.txFeeParams,this.solanaRpcUrl),A}async prepareDataForTransaction(n){let i=this.buildAnchorProvider(n.accountAddress),s=this.getBridge(n.token.bridgeAddress,i),{accounts:r,preInstructions:A}=await this._getLPTransactionData(s,n.token.poolAddress,n.accountAddress,i);return{bridge:s,accounts:r,preInstructions:A}}getBridge(n,i){return new me.Program(gt,n,i)}buildAnchorProvider(n){let i=new ce.Connection(this.solanaRpcUrl,"confirmed"),s=new ce.PublicKey(n);return new me.AnchorProvider(i,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(n,i,s,r){let A=new ce.PublicKey(s),c=await We(n.programId),m=await Ke(n.programId),l=new ce.PublicKey(i),u=(await n.account.pool.fetch(l)).mint,p=await re(A,u),y=await Qe(u,n.programId),h=await bn(A,u,n.programId),b=[me.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await He(p,r)}catch{let S=await me.Spl.associatedToken(r).methods.create().accounts({mint:u,owner:A,associatedAccount:p}).instruction();b.push(S)}try{await n.account.userDeposit.fetch(h)}catch{let w=await n.methods.initDepositAccount().accounts({mint:u,user:A,userDeposit:h}).instruction();b.push(w)}return{accounts:{mint:u,user:A,config:c,pool:l,bridgeAuthority:m,userDeposit:h,userToken:p,bridgeToken:y},preInstructions:b}}};var VA=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),bi=e.contract.Spec,Ti=e.contract.Client;var jt=class extends Ti{constructor(n){super(new bi(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),n);this.options=n}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};var qt=class extends Ae{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s}chainType="SRB";P=48;async getUserBalanceInfo(n,i){let r=(await this.getContract(i.poolAddress).get_user_deposit({user:n})).result;if(r.isErr())throw new T;let A=r.unwrap();return new q({lpAmount:A.lp_amount.toString(),rewardDebt:A.reward_debt.toString()})}async getPoolInfoFromChain(n){let s=(await this.getContract(n.poolAddress).get_pool()).result;if(s.isErr())throw new T;let r=s.unwrap();return{aValue:r.a.toString(),accRewardPerShareP:r.acc_reward_per_share_p.toString(),dValue:r.d.toString(),tokenBalance:r.token_balance.toString(),p:this.P,totalLpAmount:r.total_lp_amount.toString(),vUsdBalance:r.v_usd_balance.toString(),imbalance:z({tokenBalance:r.token_balance.toString(),vUsdBalance:r.v_usd_balance.toString()})}}async buildRawTransactionDeposit(n){return(await this.getContract(n.token.poolAddress,n.accountAddress).deposit({sender:n.accountAddress,amount:BigInt(n.amount)})).toXDR()}async buildRawTransactionWithdraw(n){return(await this.getContract(n.token.poolAddress,n.accountAddress).withdraw({sender:n.accountAddress,amount_lp:BigInt(n.amount)})).toXDR()}async buildRawTransactionClaimRewards(n){return(await this.getContract(n.token.poolAddress,n.accountAddress).claim_rewards({sender:n.accountAddress})).toXDR()}getContract(n,i){let s={publicKey:i,contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new jt(s)}};var we=require("web3");var Tt=class extends Ae{constructor(n,i,s){super();this.tronWeb=n;this.api=i;s&&(this.web3=new we.Web3(s))}chainType="TRX";P=52;web3;async getUserBalanceInfo(n,i){let s;if(this.web3)try{s=await this.getUserBalanceInfoByBatch(this.web3,n,i)}catch{s=await this.getUserBalanceInfoPerProperty(n,i)}else s=await this.getUserBalanceInfoPerProperty(n,i);return s}async getUserBalanceInfoByBatch(n,i,s){let r=new n.BatchRequest,A=new n.eth.Contract(qe.abi,Dt(s.poolAddress)),c=A.methods.userRewardDebt(i).encodeABI(),m=A.methods.balanceOf(i).encodeABI();r.add({method:"eth_call",params:[{to:s.poolAddress,data:c},"latest"]}),r.add({method:"eth_call",params:[{to:s.poolAddress,data:m},"latest"]});let[l,d]=await r.execute();if(l&&d&&!l.error&&!d.error)return new q({lpAmount:we.Web3.utils.toBigInt(d.result).toString(),rewardDebt:we.Web3.utils.toBigInt(l.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(n,i){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(n);let s=this.getContract(i.poolAddress),r=(await s.methods.userRewardDebt(n).call()).toString(),A=(await s.methods.balanceOf(n).call()).toString();return new q({lpAmount:A,rewardDebt:r})}async getPoolInfoFromChain(n){let i;if(this.web3)try{i=await this.getPoolInfoByBatch(this.web3,n)}catch{i=await this.getPoolInfoPerProperty(n)}else i=await this.getPoolInfoPerProperty(n);return i}async getPoolInfoByBatch(n,i){let s=new n.BatchRequest,r=new n.eth.Contract(qe.abi,Dt(i.poolAddress),this.web3),A=r.methods.a().encodeABI(),c=r.methods.d().encodeABI(),m=r.methods.tokenBalance().encodeABI(),l=r.methods.vUsdBalance().encodeABI(),d=r.methods.totalSupply().encodeABI(),u=r.methods.accRewardPerShareP().encodeABI();s.add({method:"eth_call",params:[{to:i.poolAddress,data:A},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:m},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:l},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:d},"latest"]}),s.add({method:"eth_call",params:[{to:i.poolAddress,data:u},"latest"]});let[p,y,h,b,f,P]=await s.execute();if(p&&y&&h&&b&&f&&P&&!p.error&&!y.error&&!h.error&&!b.error&&!f.error&&!P.error){let w=we.Web3.utils.toBigInt(h.result).toString(),S=we.Web3.utils.toBigInt(b.result).toString(),D=z({tokenBalance:w,vUsdBalance:S});return{aValue:we.Web3.utils.toBigInt(p.result).toString(),dValue:we.Web3.utils.toBigInt(y.result).toString(),tokenBalance:w,vUsdBalance:S,totalLpAmount:we.Web3.utils.toBigInt(f.result).toString(),accRewardPerShareP:we.Web3.utils.toBigInt(P.result).toString(),p:this.P,imbalance:D}}throw new Error("Batched failed")}async getPoolInfoPerProperty(n){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(n.poolAddress);let i=this.getContract(n.poolAddress),[s,r,A,c,m,l]=await Promise.all([i.methods.a().call(),i.methods.d().call(),i.methods.tokenBalance().call(),i.methods.vUsdBalance().call(),i.methods.totalSupply().call(),i.methods.accRewardPerShareP().call()]),d=A.toString(),u=c.toString(),p=z({tokenBalance:d,vUsdBalance:u});return{aValue:s.toString(),dValue:r.toString(),tokenBalance:d,vUsdBalance:u,totalLpAmount:m.toString(),accRewardPerShareP:l.toString(),p:this.P,imbalance:p}}buildRawTransactionDeposit(n){let{amount:i,accountAddress:s}=n,r=[{type:"uint256",value:i}];return this.buildRawTransaction(n.token.poolAddress,"deposit(uint256)",r,"0",s)}buildRawTransactionWithdraw(n){let{amount:i,accountAddress:s}=n,r=[{type:"uint256",value:i}];return this.buildRawTransaction(n.token.poolAddress,"withdraw(uint256)",r,"0",s)}buildRawTransactionClaimRewards(n){let{accountAddress:i}=n,s=[];return this.buildRawTransaction(n.token.poolAddress,"claimRewards()",s,"0",i)}async buildRawTransaction(n,i,s,r,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:+r},s,A);if(!c?.result?.result)throw new T("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}getContract(n){return this.tronWeb.contract(qe.abi,n)}};var $t=class{constructor(a,n,i,s){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i;this.tokenService=s;this.rawTxBuilder=new Ht(a,n,this.params,s);let r=i.cachePoolInfoChainSec>0?i.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Ce({defaultTtl:r})}rawTxBuilder;cache;async getAllowance(a,n){if(n){let i=a,s=n;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},i)}else{let i=a;return await this.tokenService.getAllowance({...i,spender:i.token.poolAddress})}}async checkAllowance(a,n){if(n){let i=a,s=n;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},i)}else{let i=a;return this.tokenService.checkAllowance({...i,spender:i.token.poolAddress})}}async approve(a,n){return this.tokenService.approve(a,{...n,spender:n.token.poolAddress})}async getAmountToBeDeposited(a,n,i){W(a),F("amount",a,n.decimals);let s=await this.getPoolInfoFromChain(n,i),{vUsdBalance:r,tokenBalance:A,aValue:c,dValue:m}=s,l=Ra(a,c,m,A,r);return B(l,3).toFixed()}async getAmountToBeWithdrawn(a,n,i,s){W(a),F("amount",a,i.decimals);let r=await this.getPoolInfoFromChain(i,s),A=Ia(a),c=H(A,i.decimals),l=(await this.getUserBalanceInfo(n,i,s)).earned(r)||"0",d=(0,va.Big)(c).plus(l).toFixed();return B(d,i.decimals).toFixed()}async getUserBalanceInfo(a,n,i){return $e(n.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,i).getUserBalanceInfo(a,n)}async getPoolInfoFromChain(a,n){let i={chainSymbol:a.chainSymbol,poolAddress:a.poolAddress},s=this.cache.get(i);if(s)return s;{let r=await $e(a.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).getPoolInfoFromChain(a);return this.cache.put(i,r),this.api.cachePut({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress},r),r}}};function $e(o,a,n,i,s){switch(R.getChainProperty(o).chainType){case"EVM":{if(s)return new bt(s,a);{let r=n.getNodeRpcUrl(o),A=new et.Web3(r);return A.defaultReturnFormat={number:et.FMT_NUMBER.STR,bytes:et.FMT_BYTES.HEX},new bt(A,a)}}case"TRX":{let r=n.getNodeRpcUrl(o),A=i.tronJsonRpc;if(s)return new Tt(s,a,A);{let c=new Ma.TronWeb({fullHost:r});return new Tt(c,a,A)}}case"SOLANA":{let r=n.getNodeRpcUrl(o);return new zt(r,a)}case"SRB":return new qt(n,i,a)}}var Z=require("big.js");function Wa(o,a,n){let i=Pi(o,{decimals:a.decimals,feeShare:a.feeShare},a.poolInfo),s=Si(i.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:i,swapFromVUsdCalcResult:s}}function Fa(o,a,n){let i=wi(o,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=Bi(i.amountIncludingCommissionInSystemPrecision,{decimals:a.decimals,feeShare:a.feeShare},a.poolInfo);return{swapToVUsdCalcResult:i,swapFromVUsdCalcResult:s}}function Pi(o,{feeShare:a,decimals:n},i){let s=(0,Z.Big)(o),r=s.times(a),A=s.minus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:ka(_e(A,n),i),amountExcludingCommissionInSystemPrecision:ka(_e(s,n),i)}}function ka(o,a){if(o.eq(0))return"0";let n=(0,Z.Big)(a.tokenBalance).plus(o),i=be(n.toFixed(),a.aValue,a.dValue);return(0,Z.Big)(a.vUsdBalance).minus(i).round().toFixed()}function Si(o,{feeShare:a,decimals:n},i){if((0,Z.Big)(o).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let r=(0,Z.Big)(o).plus(i.vUsdBalance),A=be(r,i.aValue,i.dValue),c=H((0,Z.Big)(i.tokenBalance).minus(A),n),m=(0,Z.Big)(c).times(a),l=(0,Z.Big)(c).minus(m).round();return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.toFixed(),amountExcludingCommissionInTokenPrecision:c.toFixed()}}function wi(o,{feeShare:a,decimals:n},i){let s=(0,Z.Big)(a).div((0,Z.Big)(1).minus(a)),r=(0,Z.Big)(o).times(s),A=(0,Z.Big)(o).plus(r);return{bridgeFeeInTokenPrecision:r.round().toFixed(),amountIncludingCommissionInSystemPrecision:xa(_e(A,n),i),amountExcludingCommissionInSystemPrecision:xa(_e(o,n),i)}}function xa(o,a){let n=(0,Z.Big)(a.tokenBalance).minus(o),i=be(n.toFixed(),a.aValue,a.dValue);return(0,Z.Big)(i).minus(a.vUsdBalance).round().toFixed()}function Bi(o,{feeShare:a,decimals:n},i){if((0,Z.Big)(o).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,Z.Big)(i.vUsdBalance).minus(o),r=be(s.toFixed(),i.aValue,i.dValue),A=(0,Z.Big)(r).minus(i.tokenBalance),c=H(A.toFixed(),n),m=(0,Z.Big)(a).div((0,Z.Big)(1).minus(a)),l=(0,Z.Big)(c).times(m),d=(0,Z.Big)(c).plus(l);return{bridgeFeeInTokenPrecision:l.round().toFixed(),amountIncludingCommissionInTokenPrecision:d.round().toFixed(),amountExcludingCommissionInTokenPrecision:c.toFixed()}}var Me=require("big.js");function Ga(o,a,n,i,s){let r=he(o,a,n),A=H(r,a.decimals),c=ct(r,i,s),m=(0,Me.Big)(o).times(a.feeShare),l=(0,Me.Big)(c).div((0,Me.Big)(1).minus(i.feeShare)).minus(c);return{sourceLPSwap:{fee:B(m,a.decimals).neg().round(a.decimals,Me.Big.roundUp).toFixed(),swap:B((0,Me.Big)(o).minus(A).minus(m),a.decimals).neg().round(a.decimals,Me.Big.roundUp).toFixed()},destLPSwap:{fee:B(l,i.decimals).neg().round(i.decimals,Me.Big.roundUp).toFixed(),swap:B(H(r,i.decimals).minus(c).minus(l),i.decimals).neg().round(i.decimals,Me.Big.roundUp).toFixed()}}}var tt=require("@solana/web3.js");var en=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.params=n}async addMemoToTx(a,n){if(n.length>28)throw new T("InvalidArgumentException memo cannot be more than 28 characters");let i=new tt.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await Ve(a,i),r=tt.TransactionMessage.decompile(a.message,{addressLookupTableAccounts:s}),A=r.instructions[r.instructions.length-1];if(!A?.keys)throw new T("Last instruction or its keys are invalid.");A.keys.push({pubkey:new tt.PublicKey(Buffer.from(n)),isSigner:!1,isWritable:!1}),a.message=r.compileToV0Message(s)}};var x=require("@stellar/stellar-sdk");var Wu=require("@stellar/stellar-sdk"),Ci=Wu.contract.Spec,Ri=Wu.contract.Client;var Pt=class extends Ri{constructor(n){super(new Ci(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),n);this.options=n}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var Ii=100,vi=180,tn=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.params=n}async buildChangeTrustLineXdrTx(a){let i=await new x.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(a.sender),r=(await this.getContract(Pt,a.tokenAddress).name()).result,[A,c]=r.split(":");if(A===void 0||c===void 0)throw new T("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let m=new x.Asset(A,c),l=x.Operation.changeTrust({asset:m,limit:a.limit});return new x.TransactionBuilder(i,{fee:Ii.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(l).setTimeout(vi).build().toXDR()}async getBalanceLine(a,n){let s=(await this.getContract(Pt,n).name()).result,[r,A]=s.split(":"),c=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new x.Horizon.Server(c).loadAccount(a)).balances.find(u=>(u.asset_type==="credit_alphanum4"||u.asset_type==="credit_alphanum12")&&u.asset_code==r&&u.asset_issuer==A)}async submitTransactionStellar(a){let n=new x.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),i=x.TransactionBuilder.fromXDR(a,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await n.submitTransaction(i)}async simulateAndCheckRestoreTxRequiredSoroban(a,n){let i=new x.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await i.getAccount(n),r=x.TransactionBuilder.fromXDR(a,this.params.sorobanNetworkPassphrase),A=await i.simulateTransaction(r);if(x.rpc.Api.isSimulationRestore(A))return new x.TransactionBuilder(s,{fee:(+x.BASE_FEE+ +A.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(A.restorePreamble.transactionData.build()).addOperation(x.Operation.restoreFootprint({})).setTimeout(x.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(a){let n=new x.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),i=x.TransactionBuilder.fromXDR(a,this.params.sorobanNetworkPassphrase);return n.sendTransaction(i)}async confirmTx(a,n=15){let i=new x.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Kn(()=>i.getTransaction(a),A=>A.status===x.rpc.Api.GetTransactionStatus.NOT_FOUND,n);if(s.length===0)throw new T("No transaction responses found.");let r=s[s.length-1];if(!r)throw new T("Unexpected error: last response is undefined.");return r}getContract(a,n){let i={contractId:n,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new a(i)}};var nn=class{constructor(a,n){this.nodeRpcUrlsConfig=a;this.srb=new tn(a,n),this.sol=new en(a,n)}srb;sol};var Ue=(n=>(n.WITH_NATIVE_CURRENCY="native",n.WITH_STABLECOIN="stablecoin",n))(Ue||{}),ut=(n=>(n.INT="int",n.FLOAT="float",n))(ut||{});var Da=require("big.js"),_a=require("tronweb"),Na=require("web3");var Mi={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},an=Mi;var vn=require("big.js"),le=class{async checkAllowance(a){let n=await this.getAllowance(a);return(0,vn.Big)(n).gte((0,vn.Big)(a.amount))}};var ki="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",xi="0xdac17f958d2ee523a2206206994597c13d831ec7",Wi=1e5,St=class extends le{constructor(n,i){super();this.web3=n;this.api=i}chainType="EVM";getAllowance(n){let i=n.token.tokenAddress,s=n.owner,r=n.spender;return this.getAllowanceByTokenAddress(i,s,r)}getAllowanceByTokenAddress(n,i,s){return this.getERC20Contract(n).methods.allowance(i,s).call()}async getTokenBalance(n){return await this.getERC20Contract(n.token.tokenAddress).methods.balanceOf(n.account).call()}async getNativeTokenBalance(n){return(await this.web3.eth.getBalance(n.account)).toString()}async approve(n){if(this.isUsdt(n.tokenAddress)&&await this.getAllowanceByTokenAddress(n.tokenAddress,n.owner,n.spender)!=="0"){let r=await this.buildRawTransactionApprove({...n,amount:"0"});await this.sendRawTransaction(r,n.chainSymbol)}let i=await this.buildRawTransactionApprove(n);return await this.sendRawTransaction(i,n.chainSymbol)}isUsdt(n){return n.toLowerCase()===xi}buildRawTransactionApprove(n){let{tokenAddress:i,spender:s,owner:r,amount:A}=n,m=this.getERC20Contract(i).methods.approve(s,A==null?ki:Jt(A));return Promise.resolve({from:r,to:i,value:"0",data:m.encodeABI()})}async sendRawTransaction(n,i){let s=n,r={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};i==="POL"?s.gas=Wi:s.gas=await this.web3.eth.estimateGas(n);let{transactionHash:A}=await this.web3.eth.sendTransaction({...s,...r});return{txId:A.toString()}}getERC20Contract(n){return new this.web3.eth.Contract(an.abi,n)}};var Za=require("@project-serum/anchor"),Ee=require("@solana/web3.js");var sn=class extends le{constructor(n,i){super();this.solanaRpcUrl=n;this.api=i}chainType="SOLANA";approve(n){throw new L}buildRawTransactionApprove(n){throw new L}buildAnchorProvider(n){let i=new Ee.Connection(this.solanaRpcUrl,"confirmed"),s=new Ee.PublicKey(n);return new Za.AnchorProvider(i,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(n){throw new L}async getTokenBalance(n){let{account:i,token:s}=n;try{let r=await re(new Ee.PublicKey(i),new Ee.PublicKey(s.tokenAddress));return(await He(r,this.buildAnchorProvider(i))).amount.toString()}catch(r){if(r instanceof Error)return r.message.startsWith("Account does not exist"),"0";throw r}}async getNativeTokenBalance(n){return(await this.buildAnchorProvider(n.account).connection.getBalance(new Ee.PublicKey(n.account))).toString()}};var Mn=require("@stellar/stellar-sdk");var rn=class extends le{constructor(n,i,s){super();this.nodeRpcUrlsConfig=n;this.params=i;this.api=s}chainType="SRB";getAllowance(){throw new L}async getTokenBalance(n){if(!n.token.originTokenAddress)throw new T("OriginTokenAddress missing");let[i,s]=n.token.originTokenAddress.split(":"),r=new Mn.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),A;try{A=await r.loadAccount(n.account)}catch(l){if(l instanceof Mn.NotFoundError)return"0";throw l}let m=A.balances.find(l=>(l.asset_type==="credit_alphanum4"||l.asset_type==="credit_alphanum12")&&l.asset_code==i&&l.asset_issuer==s);return m?.balance?M(m.balance,R.getChainDecimalsByType(R.getChainProperty(n.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(n){let A=(await new Mn.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.account)).balances.find(c=>c.asset_type==="native");return A?.balance?M(A.balance,R.getChainDecimalsByType(R.getChainProperty(n.chainSymbol).chainType)).toFixed():"0"}approve(){throw new L}buildRawTransactionApprove(){throw new L}};var Fi="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",wt=class extends le{constructor(n,i){super();this.tronWeb=n;this.api=i}chainType="TRX";async getAllowance(n){let{token:{tokenAddress:i},owner:s}=n;return(await(await this.getContract(i)).methods.allowance(s,n.spender).call()).toString()}async getTokenBalance(n){return(await(await this.getContract(n.token.tokenAddress)).balanceOf(n.account).call()).toString()}async getNativeTokenBalance(n){return(await this.tronWeb.trx.getBalance(n.account)).toString()}async approve(n){let i=await this.buildRawTransactionApprove(n);return await Kt(this.tronWeb,i)}async buildRawTransactionApprove(n){let{tokenAddress:i,spender:s,owner:r,amount:A}=n,c=A==null?Fi:Jt(A),m=[{type:"address",value:s},{type:"uint256",value:c}];return this.buildRawTransaction(i,"approve(address,uint256)",m,"0",r)}getContract(n){return this.tronWeb.contract(an.abi,n)}async buildRawTransaction(n,i,s,r,A){let c=await this.tronWeb.transactionBuilder.triggerSmartContract(n,i,{callValue:+r},s,A);if(!c?.result?.result)throw new T("Unknown error: "+JSON.stringify(c,null,2));return c.transaction}};var on=class{constructor(a,n,i){this.api=a;this.nodeRpcUrlsConfig=n;this.params=i}async getAllowance(a,n){let i=await this.getChainTokenService(a.token.chainSymbol,a.owner,n).getAllowance(a);return B(i,a.token.decimals).toFixed()}async checkAllowance(a,n){return W(a.amount),F("amount",a.amount,a.token.decimals),this.getChainTokenService(a.token.chainSymbol,a.owner,n).checkAllowance(this.prepareCheckAllowanceParams(a))}async approve(a,n){return n.amount&&(W(n.amount),F("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,a).approve(this.prepareApproveParams(n))}async buildRawTransactionApprove(a,n){return a.amount&&(W(a.amount),F("amount",a.amount,a.token.decimals)),this.getChainTokenService(a.token.chainSymbol,a.owner,n).buildRawTransactionApprove(this.prepareApproveParams(a))}async getTokenBalance(a,n){let i=await this.getChainTokenService(a.token.chainSymbol,a.account,n).getTokenBalance(a);return a.token.decimals?B(i,a.token.decimals).toFixed():i}async getNativeTokenBalance(a,n){let i=await this.getChainTokenService(a.chainSymbol,a.account,n).getNativeTokenBalance(a);return{int:i,float:B(i,R.getChainDecimalsByType(R.getChainProperty(a.chainSymbol).chainType)).toFixed()}}getChainTokenService(a,n,i){switch(R.getChainProperty(a).chainType){case"EVM":{if(i)return new St(i,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a);return new St(new Na.Web3(s),this.api)}}case"TRX":{if(i)return new wt(i,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a),r=new _a.TronWeb({fullHost:s});return r.setAddress(n),new wt(r,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(a);return new sn(s,this.api)}case"SRB":return new rn(this.nodeRpcUrlsConfig,this.params,this.api)}}prepareCheckAllowanceParams(a){return{...a,amount:M(a.amount,a.token.decimals)}}prepareApproveParams(a){return{tokenAddress:a.token.tokenAddress,owner:a.owner,spender:a.spender,chainSymbol:a.token.chainSymbol,amount:a.amount==null?void 0:(0,Da.Big)(a.amount).toFixed()}}};var Bt=class{constructor(a){this.nodeRpcUrls=a}getNodeRpcUrl(a){let n=this.nodeRpcUrls[a];if(n!==void 0)return n;throw new rt(a)}},An=class{api;tokenService;params;bridge;pool;constructor(a,n=nt){R.addChainsProperties(n.additionalChainsProperties);let i=new Mt(n),s=new kt(i),r=new xt(s),A=new Ft(r);this.api=new Wt(A,n),this.tokenService=new on(this.api,a,n),this.bridge=new Qt(this.api,a,n,this.tokenService),this.pool=new $t(this.api,a,n,this.tokenService),this.params=n}async chainDetailsMap(a){return this.api.getChainDetailsMap(a)}async tokens(a){return this.api.tokens(a)}async tokensByChain(a,n){let s=(await this.api.getChainDetailsMap(n))[a];return s?s.tokens:[]}async getTransferStatus(a,n){return this.api.getTransferStatus(a,n)}async getGasBalance(a,n){return this.api.getGasBalance(a,n)}async checkAddress(){return new Promise(a=>{a({status:"OK",gasBalance:null})})}async getPendingStatusInfo(a,n,i,s){W(a);let r;n=="float"?(F("amount",a,i.decimals),r=M(a,i.decimals).toFixed()):r=a;let A=he(r,i,await V(this.api,i)),c=await V(this.api,s),m=this.getAmountFromVUsdFormatted(A,s,c),l,d=await this.api.getPendingInfo();for(let u in d[s.chainSymbol]){let p=d[s.chainSymbol];if(!p)throw new T("Cannot find pending info for "+s.chainSymbol);l=p[u]}if(l){let u=Gn(l.totalSentAmount,c),p=this.getAmountFromVUsdFormatted(A,s,u),y;return(0,ue.Big)(p.int).gt(m.int)?y={min:m,max:p}:y={min:p,max:m},{pendingTxs:l.pendingTxs,pendingAmount:{int:xe(l.totalSentAmount,3,s.decimals).toFixed(0),float:B(l.totalSentAmount,3).toFixed()},estimatedAmount:y}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:m,max:m}}}async getTokenBalance(a,n){return this.tokenService.getTokenBalance(a,n)}async getNativeTokenBalance(a,n){return this.tokenService.getNativeTokenBalance(a,n)}async calculateFeePercentOnSourceChain(a,n){W(a),F("amountFloat",a,n.decimals);let i=M(a,n.decimals);if(i.eq(0))return 0;let s=he(i,n,await V(this.api,n)),r=H(s,n.decimals);return mn(i,r)}async calculateFeePercentOnDestinationChain(a,n,i){W(a),F("amountFloat",a,n.decimals);let s=M(a,n.decimals);if(s.eq(0))return 0;let r=he(s,n,await V(this.api,n)),A=ct(r,i,await V(this.api,i)),c=H(r,i.decimals);return mn(c,A)}async getAmountToBeReceivedAndGasFeeOptions(a,n,i,s){return W(a),F("amountToSendFloat",a,n.decimals),{amountToSendFloat:(0,ue.Big)(a).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(a,n,i,s),gasFeeOptions:await this.getGasFeeOptions(n,i,s)}}async getAmountToSendAndGasFeeOptions(a,n,i,s){return W(a),F("amountToBeReceivedFloat",a,i.decimals),{amountToSendFloat:await this.getAmountToSend(a,n,i,s),amountToBeReceivedFloat:(0,ue.Big)(a).toFixed(),gasFeeOptions:await this.getGasFeeOptions(n,i,s)}}async getAmountToBeReceived(a,n,i,s){let r=await V(this.api,n),A=await V(this.api,i);return this.getAmountToBeReceivedFromPools(a,n,i,r,A,s)}async getAmountToBeReceivedFromChain(a,n,i,s,r,A){let c=await this.pool.getPoolInfoFromChain(n,r),m=await this.pool.getPoolInfoFromChain(i,A);return this.getAmountToBeReceivedFromPools(a,n,i,c,m,s)}getAmountToBeReceivedFromPools(a,n,i,s,r,A){W(a),F("amountToSendFloat",a,n.decimals);let c=M(a,n.decimals);if(A&&A==3){if(!n.cctpAddress||!i.cctpAddress||!n.cctpFeeShare)throw new ee("Such route does not support CCTP protocol");let l=c.mul((0,ue.Big)(1).minus(n.cctpFeeShare)).round(0,ue.Big.roundUp),d=xe(l,n.decimals,i.decimals).round(0);return B(d,i.decimals).toFixed()}let m=he(c,n,s);return this.getAmountFromVUsdFormatted(m,i,r).float}async getAmountToSend(a,n,i,s){let r=await V(this.api,n),A=await V(this.api,i);return this.getAmountToSendFromPools(a,n,i,r,A,s)}async getAmountToSendFromChain(a,n,i,s,r,A){let c=await this.pool.getPoolInfoFromChain(n,r),m=await this.pool.getPoolInfoFromChain(i,A);return this.getAmountToSendFromPools(a,n,i,c,m,s)}getAmountToSendFromPools(a,n,i,s,r,A){W(a),F("amountToBeReceivedFloat",a,i.decimals);let c=M(a,i.decimals);if(A&&A==3){if(!n.cctpAddress||!i.cctpAddress||!n.cctpFeeShare)throw new ee("Such route does not support CCTP protocol");let d=c.div((0,ue.Big)(1).minus(n.cctpFeeShare)).round(0,ue.Big.roundDown),u=xe(d,i.decimals,n.decimals).round(0);return B(u,n.decimals).toFixed()}let m=Dn(c,i,r),l=Zn(m,n,s);if((0,ue.Big)(l).lte(0))throw new ye;return B(l,n.decimals).toFixed()}async getGasFeeOptions(a,n,i){return Sn(a.allbridgeChainId,a.chainType,n.allbridgeChainId,a.decimals,i,this.api)}getAverageTransferTime(a,n,i){return a.transferTime?.[n.chainSymbol]?.[i]??null}async getPoolInfoByToken(a){return await this.api.getPoolInfoByKey({chainSymbol:a.chainSymbol,poolAddress:a.poolAddress})}async refreshPoolInfo(a){if(a){let i=(a instanceof Array?a:[a]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(i)}return this.api.refreshPoolInfo()}aprInPercents(a){return Nn(a)}async getExtraGasMaxLimits(a,n){return await wn(a,n,this.api)}async getVUsdFromAmount(a,n,i){W(a);let s;n=="float"?(F("amount",a,i.decimals),s=M(a,i.decimals).toFixed()):s=a;let r=he(s,i,await V(this.api,i));return{int:r,float:B(r,3).toFixed()}}async getAmountFromVUsd(a,n){return this.getAmountFromVUsdFormatted(a,n,await V(this.api,n))}getAmountFromVUsdFormatted(a,n,i){W(a);let s=ct(a,n,i);if((0,ue.Big)(s).lt(0))throw new ye;return{int:s,float:B(s,n.decimals).toFixed()}}async swapAndBridgeFeeCalculation(a,n,i){return Wa(a,{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await V(this.api,n)},{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await V(this.api,i)})}async swapAndBridgeFeeCalculationReverse(a,n,i){let s=Fa(a,{decimals:n.decimals,feeShare:n.feeShare,poolInfo:await V(this.api,n)},{decimals:i.decimals,feeShare:i.feeShare,poolInfo:await V(this.api,i)}),r=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,ue.Big)(r).lt(0))throw new ye;return s}async getSendAmountDetails(a,n,i,s){W(a);let r;return n=="float"?(F("amount",a,i.decimals),r=M(a,i.decimals).toFixed()):r=a,Ga(r,i,await V(this.api,i),s,await V(this.api,s))}};function Gi(o){return"solanaRpcUrl"in o}var kn=class{params;bridge;pool;utils;service;constructor(a,n=nt){let i;Gi(a)?i=new Bt({SOL:a.solanaRpcUrl,TRX:a.tronRpcUrl}):i=new Bt(a),this.service=new An(i,n),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new nn(i,n),this.params=n}async chainDetailsMap(a="swap"){return this.service.chainDetailsMap(a)}async tokens(a="swap"){return this.service.tokens(a)}async tokensByChain(a,n="swap"){return this.service.tokensByChain(a,n)}async getTransferStatus(a,n){return this.service.getTransferStatus(a,n)}async getGasBalance(a,n){return this.service.getGasBalance(a,n)}async checkAddress(a,n,i){return await this.service.checkAddress()}async getPendingStatusInfo(a,n,i,s){return this.service.getPendingStatusInfo(a,n,i,s)}async getTokenBalance(a,n){return this.service.getTokenBalance(a,n)}async getNativeTokenBalance(a,n){return this.service.getNativeTokenBalance(a,n)}async calculateFeePercentOnSourceChain(a,n){return this.service.calculateFeePercentOnSourceChain(a,n)}async calculateFeePercentOnDestinationChain(a,n,i){return this.service.calculateFeePercentOnDestinationChain(a,n,i)}async getAmountToBeReceivedAndGasFeeOptions(a,n,i,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(a,n,i,s)}async getAmountToSendAndGasFeeOptions(a,n,i,s){return this.service.getAmountToSendAndGasFeeOptions(a,n,i,s)}async getAmountToBeReceived(a,n,i,s){return this.service.getAmountToBeReceived(a,n,i,s)}async getAmountToBeReceivedFromChain(a,n,i,s,r,A){return this.service.getAmountToBeReceivedFromChain(a,n,i,s,r,A)}getAmountToBeReceivedFromPools(a,n,i,s,r,A){return this.service.getAmountToBeReceivedFromPools(a,n,i,s,r,A)}async getAmountToSend(a,n,i,s){return this.service.getAmountToSend(a,n,i,s)}async getAmountToSendFromChain(a,n,i,s,r,A){return this.service.getAmountToSendFromChain(a,n,i,s,r,A)}getAmountToSendFromPools(a,n,i,s,r,A){return this.service.getAmountToSendFromPools(a,n,i,s,r,A)}async getGasFeeOptions(a,n,i){return this.service.getGasFeeOptions(a,n,i)}getAverageTransferTime(a,n,i){return this.service.getAverageTransferTime(a,n,i)}async getPoolInfoByToken(a){return this.service.getPoolInfoByToken(a)}async refreshPoolInfo(a){return this.service.refreshPoolInfo(a)}aprInPercents(a){return this.service.aprInPercents(a)}async getExtraGasMaxLimits(a,n){return this.service.getExtraGasMaxLimits(a,n)}async getVUsdFromAmount(a,n,i){return this.service.getVUsdFromAmount(a,n,i)}async getAmountFromVUsd(a,n){return this.service.getAmountFromVUsd(a,n)}async swapAndBridgeFeeCalculation(a,n,i){return this.service.swapAndBridgeFeeCalculation(a,n,i)}async swapAndBridgeFeeCalculationReverse(a,n,i){return this.service.swapAndBridgeFeeCalculationReverse(a,n,i)}async getSendAmountDetails(a,n,i,s){return this.service.getSendAmountDetails(a,n,i,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
1
+ "use strict";var xc=Object.create;var Pr=Object.defineProperty;var Oc=Object.getOwnPropertyDescriptor;var Fc=Object.getOwnPropertyNames;var Nc=Object.getPrototypeOf,Dc=Object.prototype.hasOwnProperty;var yn=(i,n)=>()=>(i&&(n=i(i=0)),n);var Ui=(i,n)=>()=>(n||i((n={exports:{}}).exports,n),n.exports),Wc=(i,n)=>{for(var r in n)Pr(i,r,{get:n[r],enumerable:!0})},ps=(i,n,r,a)=>{if(n&&typeof n=="object"||typeof n=="function")for(let s of Fc(n))!Dc.call(i,s)&&s!==r&&Pr(i,s,{get:()=>n[s],enumerable:!(a=Oc(n,s))||a.enumerable});return i};var oe=(i,n,r)=>(r=i!=null?xc(Nc(i)):{},ps(n||!i||!i.__esModule?Pr(r,"default",{value:i,enumerable:!0}):r,i)),Uc=i=>ps(Pr({},"__esModule",{value:!0}),i);function zr(i){try{return(0,Kr.fromBase58)(i).length===lA}catch{return!1}}function Ne(i){return pA(i)&&gA(i)===ir}function Mn(i){return Ne(i)}function dA(i){return i.includes("::")?ca(i):i}function ca(i){let[n,r]=i.split("::"),a=i.slice(n.length+r.length+4),s=a.includes("<")?a.slice(0,a.indexOf("<")):a,o=a.includes("<")?(0,Kr.splitGenericParameters)(a.slice(a.indexOf("<")+1,a.lastIndexOf(">"))).map(c=>dA(c.trim())):[];return{address:x(n),module:r,name:s,typeParams:o}}function ar(i){let{address:n,module:r,name:a,typeParams:s}=typeof i=="string"?ca(i):i,o=s?.length>0?`<${s.map(c=>typeof c=="string"?c:ar(c)).join(",")}>`:"";return`${n}::${r}::${a}${o}`}function x(i,n=!1){let r=i.toLowerCase();return!n&&r.startsWith("0x")&&(r=r.slice(2)),`0x${r.padStart(ir*2,"0")}`}function Ce(i,n=!1){return x(i,n)}function pA(i){return/^(0x|0X)?[a-fA-F0-9]+$/.test(i)&&i.length%2===0}function gA(i){return/^(0x|0X)/.test(i)?(i.length-2)/2:i.length/2}var Kr,lA,ir,Ie=yn(()=>{Kr=require("@mysten/bcs"),lA=32;ir=32});var po,fA,yA,xt,Aa=yn(()=>{po=require("@mysten/bcs");Ie();fA=/^vector<(.+)>$/,yA=/^([^:]+)::([^:]+)::([^<]+)(<(.+)>)?/,xt=class i{static parseFromStr(n,r=!1){if(n==="address")return{address:null};if(n==="bool")return{bool:null};if(n==="u8")return{u8:null};if(n==="u16")return{u16:null};if(n==="u32")return{u32:null};if(n==="u64")return{u64:null};if(n==="u128")return{u128:null};if(n==="u256")return{u256:null};if(n==="signer")return{signer:null};let a=n.match(fA);if(a)return{vector:i.parseFromStr(a[1],r)};let s=n.match(yA);if(s)return{struct:{address:r?x(s[1]):s[1],module:s[2],name:s[3],typeParams:s[5]===void 0?[]:i.parseStructTypeArgs(s[5],r)}};throw new Error(`Encountered unexpected token when parsing type args for ${n}`)}static parseStructTypeArgs(n,r=!1){return(0,po.splitGenericParameters)(n).map(a=>i.parseFromStr(a,r))}static tagToString(n){if("bool"in n)return"bool";if("u8"in n)return"u8";if("u16"in n)return"u16";if("u32"in n)return"u32";if("u64"in n)return"u64";if("u128"in n)return"u128";if("u256"in n)return"u256";if("address"in n)return"address";if("signer"in n)return"signer";if("vector"in n)return`vector<${i.tagToString(n.vector)}>`;if("struct"in n){let r=n.struct,a=r.typeParams.map(i.tagToString).join(", ");return`${r.address}::${r.module}::${r.name}${a?`<${a}>`:""}`}throw new Error("Invalid TypeTag")}}});function hA(i){return f.bcs.u64({name:"unsafe_u64",...i}).transform({input:n=>n,output:n=>Number(n)})}function bA(i){return f.bcs.enum("Option",{None:null,Some:i})}function va(i){return f.bcs.struct(`IntentMessage<${i.name}>`,{intent:Ba,value:i})}var f,H,De,Be,ua,ma,la,da,Hr,qe,pa,ga,fa,ya,ha,ba,Ta,Sa,Pa,wa,Ca,Ia,Ba,Ra,ka,Ma,xa,go,TA,Oa,fo,yo,Fa=yn(()=>{f=require("@mysten/bcs");Ie();Aa();H=f.bcs.bytes(ir).transform({validate:i=>{let n=typeof i=="string"?i:(0,f.toHex)(i);if(!n||!Ne(x(n)))throw new Error(`Invalid Sui address ${n}`)},input:i=>typeof i=="string"?(0,f.fromHex)(x(i)):i,output:i=>x((0,f.toHex)(i))}),De=f.bcs.vector(f.bcs.u8()).transform({name:"ObjectDigest",input:i=>(0,f.fromBase58)(i),output:i=>(0,f.toBase58)(new Uint8Array(i)),validate:i=>{if((0,f.fromBase58)(i).length!==32)throw new Error("ObjectDigest must be 32 bytes")}}),Be=f.bcs.struct("SuiObjectRef",{objectId:H,version:f.bcs.u64(),digest:De}),ua=f.bcs.struct("SharedObjectRef",{objectId:H,initialSharedVersion:f.bcs.u64(),mutable:f.bcs.bool()}),ma=f.bcs.enum("ObjectArg",{ImmOrOwnedObject:Be,SharedObject:ua,Receiving:Be}),la=f.bcs.enum("CallArg",{Pure:f.bcs.struct("Pure",{bytes:f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})}),Object:ma}),da=f.bcs.enum("TypeTag",{bool:null,u8:null,u64:null,u128:null,address:null,signer:null,vector:f.bcs.lazy(()=>da),struct:f.bcs.lazy(()=>ba),u16:null,u32:null,u256:null}),Hr=da.transform({input:i=>typeof i=="string"?xt.parseFromStr(i,!0):i,output:i=>xt.tagToString(i)}),qe=f.bcs.enum("Argument",{GasCoin:null,Input:f.bcs.u16(),Result:f.bcs.u16(),NestedResult:f.bcs.tuple([f.bcs.u16(),f.bcs.u16()])}),pa=f.bcs.struct("ProgrammableMoveCall",{package:H,module:f.bcs.string(),function:f.bcs.string(),typeArguments:f.bcs.vector(Hr),arguments:f.bcs.vector(qe)}),ga=f.bcs.enum("Command",{MoveCall:pa,TransferObjects:f.bcs.struct("TransferObjects",{objects:f.bcs.vector(qe),address:qe}),SplitCoins:f.bcs.struct("SplitCoins",{coin:qe,amounts:f.bcs.vector(qe)}),MergeCoins:f.bcs.struct("MergeCoins",{destination:qe,sources:f.bcs.vector(qe)}),Publish:f.bcs.struct("Publish",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(H)}),MakeMoveVec:f.bcs.struct("MakeMoveVec",{type:bA(Hr).transform({input:i=>i===null?{None:!0}:{Some:i},output:i=>i.Some??null}),elements:f.bcs.vector(qe)}),Upgrade:f.bcs.struct("Upgrade",{modules:f.bcs.vector(f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))})),dependencies:f.bcs.vector(H),package:H,ticket:qe})}),fa=f.bcs.struct("ProgrammableTransaction",{inputs:f.bcs.vector(la),commands:f.bcs.vector(ga)}),ya=f.bcs.enum("TransactionKind",{ProgrammableTransaction:fa,ChangeEpoch:null,Genesis:null,ConsensusCommitPrologue:null}),ha=f.bcs.enum("TransactionExpiration",{None:null,Epoch:hA()}),ba=f.bcs.struct("StructTag",{address:H,module:f.bcs.string(),name:f.bcs.string(),typeParams:f.bcs.vector(da)}),Ta=f.bcs.struct("GasData",{payment:f.bcs.vector(Be),owner:H,price:f.bcs.u64(),budget:f.bcs.u64()}),Sa=f.bcs.struct("TransactionDataV1",{kind:ya,sender:H,gasData:Ta,expiration:ha}),Pa=f.bcs.enum("TransactionData",{V1:Sa}),wa=f.bcs.enum("IntentScope",{TransactionData:null,TransactionEffects:null,CheckpointSummary:null,PersonalMessage:null}),Ca=f.bcs.enum("IntentVersion",{V0:null}),Ia=f.bcs.enum("AppId",{Sui:null}),Ba=f.bcs.struct("Intent",{scope:wa,version:Ca,appId:Ia});Ra=f.bcs.enum("CompressedSignature",{ED25519:f.bcs.fixedArray(64,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(64,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(64,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),ka=f.bcs.enum("PublicKey",{ED25519:f.bcs.fixedArray(32,f.bcs.u8()),Secp256k1:f.bcs.fixedArray(33,f.bcs.u8()),Secp256r1:f.bcs.fixedArray(33,f.bcs.u8()),ZkLogin:f.bcs.vector(f.bcs.u8())}),Ma=f.bcs.struct("MultiSigPkMap",{pubKey:ka,weight:f.bcs.u8()}),xa=f.bcs.struct("MultiSigPublicKey",{pk_map:f.bcs.vector(Ma),threshold:f.bcs.u16()}),go=f.bcs.struct("MultiSig",{sigs:f.bcs.vector(Ra),bitmap:f.bcs.u16(),multisig_pk:xa}),TA=f.bcs.vector(f.bcs.u8()).transform({input:i=>typeof i=="string"?(0,f.fromBase64)(i):i,output:i=>(0,f.toBase64)(new Uint8Array(i))}),Oa=f.bcs.struct("SenderSignedTransaction",{intentMessage:va(Pa),txSignatures:f.bcs.vector(TA)}),fo=f.bcs.vector(Oa,{name:"SenderSignedData"}),yo=f.bcs.struct("PasskeyAuthenticator",{authenticatorData:f.bcs.vector(f.bcs.u8()),clientDataJson:f.bcs.string(),userSignature:f.bcs.vector(f.bcs.u8())})});var y,SA,PA,ho,wA,CA,IA,bo,To,xn,BA,Na,vA,RA,kA,MA,xA,OA,So,Po=yn(()=>{y=require("@mysten/bcs");Fa();SA=y.bcs.enum("PackageUpgradeError",{UnableToFetchPackage:y.bcs.struct("UnableToFetchPackage",{packageId:H}),NotAPackage:y.bcs.struct("NotAPackage",{objectId:H}),IncompatibleUpgrade:null,DigestDoesNotMatch:y.bcs.struct("DigestDoesNotMatch",{digest:y.bcs.vector(y.bcs.u8())}),UnknownUpgradePolicy:y.bcs.struct("UnknownUpgradePolicy",{policy:y.bcs.u8()}),PackageIDDoesNotMatch:y.bcs.struct("PackageIDDoesNotMatch",{packageId:H,ticketId:H})}),PA=y.bcs.struct("ModuleId",{address:H,name:y.bcs.string()}),ho=y.bcs.struct("MoveLocation",{module:PA,function:y.bcs.u16(),instruction:y.bcs.u16(),functionName:y.bcs.option(y.bcs.string())}),wA=y.bcs.enum("CommandArgumentError",{TypeMismatch:null,InvalidBCSBytes:null,InvalidUsageOfPureArg:null,InvalidArgumentToPrivateEntryFunction:null,IndexOutOfBounds:y.bcs.struct("IndexOutOfBounds",{idx:y.bcs.u16()}),SecondaryIndexOutOfBounds:y.bcs.struct("SecondaryIndexOutOfBounds",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidResultArity:y.bcs.struct("InvalidResultArity",{resultIdx:y.bcs.u16()}),InvalidGasCoinUsage:null,InvalidValueUsage:null,InvalidObjectByValue:null,InvalidObjectByMutRef:null,SharedObjectOperationNotAllowed:null}),CA=y.bcs.enum("TypeArgumentError",{TypeNotFound:null,ConstraintNotSatisfied:null}),IA=y.bcs.enum("ExecutionFailureStatus",{InsufficientGas:null,InvalidGasObject:null,InvariantViolation:null,FeatureNotYetSupported:null,MoveObjectTooBig:y.bcs.struct("MoveObjectTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),MovePackageTooBig:y.bcs.struct("MovePackageTooBig",{objectSize:y.bcs.u64(),maxObjectSize:y.bcs.u64()}),CircularObjectOwnership:y.bcs.struct("CircularObjectOwnership",{object:H}),InsufficientCoinBalance:null,CoinBalanceOverflow:null,PublishErrorNonZeroAddress:null,SuiMoveVerificationError:null,MovePrimitiveRuntimeError:y.bcs.option(ho),MoveAbort:y.bcs.tuple([ho,y.bcs.u64()]),VMVerificationOrDeserializationError:null,VMInvariantViolation:null,FunctionNotFound:null,ArityMismatch:null,TypeArityMismatch:null,NonEntryFunctionInvoked:null,CommandArgumentError:y.bcs.struct("CommandArgumentError",{argIdx:y.bcs.u16(),kind:wA}),TypeArgumentError:y.bcs.struct("TypeArgumentError",{argumentIdx:y.bcs.u16(),kind:CA}),UnusedValueWithoutDrop:y.bcs.struct("UnusedValueWithoutDrop",{resultIdx:y.bcs.u16(),secondaryIdx:y.bcs.u16()}),InvalidPublicFunctionReturnType:y.bcs.struct("InvalidPublicFunctionReturnType",{idx:y.bcs.u16()}),InvalidTransferObject:null,EffectsTooLarge:y.bcs.struct("EffectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),PublishUpgradeMissingDependency:null,PublishUpgradeDependencyDowngrade:null,PackageUpgradeError:y.bcs.struct("PackageUpgradeError",{upgradeError:SA}),WrittenObjectsTooLarge:y.bcs.struct("WrittenObjectsTooLarge",{currentSize:y.bcs.u64(),maxSize:y.bcs.u64()}),CertificateDenied:null,SuiMoveVerificationTimedout:null,SharedObjectOperationNotAllowed:null,InputObjectDeleted:null,ExecutionCancelledDueToSharedObjectCongestion:y.bcs.struct("ExecutionCancelledDueToSharedObjectCongestion",{congestedObjects:y.bcs.vector(H)}),AddressDeniedForCoin:y.bcs.struct("AddressDeniedForCoin",{address:H,coinType:y.bcs.string()}),CoinTypeGlobalPause:y.bcs.struct("CoinTypeGlobalPause",{coinType:y.bcs.string()}),ExecutionCancelledDueToRandomnessUnavailable:null}),bo=y.bcs.enum("ExecutionStatus",{Success:null,Failed:y.bcs.struct("ExecutionFailed",{error:IA,command:y.bcs.option(y.bcs.u64())})}),To=y.bcs.struct("GasCostSummary",{computationCost:y.bcs.u64(),storageCost:y.bcs.u64(),storageRebate:y.bcs.u64(),nonRefundableStorageFee:y.bcs.u64()}),xn=y.bcs.enum("Owner",{AddressOwner:H,ObjectOwner:H,Shared:y.bcs.struct("Shared",{initialSharedVersion:y.bcs.u64()}),Immutable:null}),BA=y.bcs.struct("TransactionEffectsV1",{status:bo,executedEpoch:y.bcs.u64(),gasUsed:To,modifiedAtVersions:y.bcs.vector(y.bcs.tuple([H,y.bcs.u64()])),sharedObjects:y.bcs.vector(Be),transactionDigest:De,created:y.bcs.vector(y.bcs.tuple([Be,xn])),mutated:y.bcs.vector(y.bcs.tuple([Be,xn])),unwrapped:y.bcs.vector(y.bcs.tuple([Be,xn])),deleted:y.bcs.vector(Be),unwrappedThenDeleted:y.bcs.vector(Be),wrapped:y.bcs.vector(Be),gasObject:y.bcs.tuple([Be,xn]),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De)}),Na=y.bcs.tuple([y.bcs.u64(),De]),vA=y.bcs.enum("ObjectIn",{NotExist:null,Exist:y.bcs.tuple([Na,xn])}),RA=y.bcs.enum("ObjectOut",{NotExist:null,ObjectWrite:y.bcs.tuple([De,xn]),PackageWrite:Na}),kA=y.bcs.enum("IDOperation",{None:null,Created:null,Deleted:null}),MA=y.bcs.struct("EffectsObjectChange",{inputState:vA,outputState:RA,idOperation:kA}),xA=y.bcs.enum("UnchangedSharedKind",{ReadOnlyRoot:Na,MutateDeleted:y.bcs.u64(),ReadDeleted:y.bcs.u64(),Cancelled:y.bcs.u64(),PerEpochConfig:null}),OA=y.bcs.struct("TransactionEffectsV2",{status:bo,executedEpoch:y.bcs.u64(),gasUsed:To,transactionDigest:De,gasObjectIndex:y.bcs.option(y.bcs.u32()),eventsDigest:y.bcs.option(De),dependencies:y.bcs.vector(De),lamportVersion:y.bcs.u64(),changedObjects:y.bcs.vector(y.bcs.tuple([H,MA])),unchangedSharedObjects:y.bcs.vector(y.bcs.tuple([H,xA])),auxDataDigest:y.bcs.option(De)}),So=y.bcs.enum("TransactionEffects",{V1:BA,V2:OA})});var et,FA,b,le=yn(()=>{et=require("@mysten/bcs");Fa();Po();Aa();FA=require("@mysten/bcs"),b={...et.bcs,U8:et.bcs.u8(),U16:et.bcs.u16(),U32:et.bcs.u32(),U64:et.bcs.u64(),U128:et.bcs.u128(),U256:et.bcs.u256(),ULEB128:et.bcs.uleb128(),Bool:et.bcs.bool(),String:et.bcs.string(),Address:H,AppId:Ia,Argument:qe,CallArg:la,CompressedSignature:Ra,GasData:Ta,Intent:Ba,IntentMessage:va,IntentScope:wa,IntentVersion:Ca,MultiSig:go,MultiSigPkMap:Ma,MultiSigPublicKey:xa,ObjectArg:ma,ObjectDigest:De,ProgrammableMoveCall:pa,ProgrammableTransaction:fa,PublicKey:ka,SenderSignedData:fo,SenderSignedTransaction:Oa,SharedObjectRef:ua,StructTag:ba,SuiObjectRef:Be,Command:ga,TransactionData:Pa,TransactionDataV1:Sa,TransactionExpiration:ha,TransactionKind:ya,TypeTag:Hr,TransactionEffects:So,PasskeyAuthenticator:yo}});function ju(i,n=["<",">"]){let[r,a]=n,s=[],o="",c=0;for(let A=0;A<i.length;A++){let u=i[A];if(u===r&&c++,u===a&&c--,c===0&&u===","){s.push(o.trim()),o="";continue}o+=u}return s.push(o.trim()),s}function he(i){if(typeof i!="string")throw new Error(`Illegal type passed as a name of the type: ${i}`);let[n,r]=["<",">"],a=i.indexOf(n),s=Array.from(i).reverse().indexOf(r);if(a===-1&&s===-1)return{typeName:i,typeArgs:[]};if(a===-1||s===-1)throw new Error(`Unclosed generic in name '${i}'`);let o=i.slice(0,a),c=ju(i.slice(a+1,i.length-s-1),[n,r]);return{typeName:o,typeArgs:c}}function Yo(i){return!i||typeof i!="object"||Array.isArray(i)?!1:"GasCoin"in i||"Input"in i||"Result"in i||"NestedResult"in i}function k(i,n){return Yo(n)?n:i.object(n)}function $e(i,n,r){if(Yo(n))return k(i,n);function a(m){let{typeName:l,typeArgs:g}=he(m);switch(l){case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;case"address":return b.Address;case"0x1::string::String":case"0x1::ascii::String":return b.String;case"0x2::object::ID":return b.Address;case"0x1::option::Option":return b.option(a(g[0]));case"vector":return b.vector(a(g[0]));default:throw new Error(`invalid primitive type ${m}`)}}function s(m){for(let l of m){if(typeof l>"u"||l===null)return!0;if(Array.isArray(l))return s(l)}return!1}function o(m){for(let l of m){if(!Array.isArray(l)){if(l===null)continue;switch(typeof l){case"string":case"number":case"bigint":case"boolean":continue;default:return!1}}return o(l)}return!0}function c(m){for(let l of m){if(!Array.isArray(l))switch(typeof l){case"string":case"number":case"bigint":case"boolean":return!0;default:continue}return c(l)}return!1}let{typeName:A,typeArgs:u}=he(r);switch(A){case"0x1::option::Option":if(n===null)return i.pure.option("bool",null);if(o([n]))return i.pure(a(r).serialize(n));if(c([n]))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.moveCall({target:"0x1::option::some",typeArguments:[u[0]],arguments:[$e(i,n,u[0])]});case"vector":if(!Array.isArray(n))throw new Error("expected an array for vector type");if(n.length===0)return i.pure(b.vector(b.Bool).serialize([]));if(s(n))throw new Error("the provided array contains undefined or null values");if(o(n))return i.pure(a(r).serialize(n));if(c(n))throw new Error("mixing primitive and TransactionArgument values is not supported");return i.makeMoveVec({type:u[0],elements:n});default:return i.pure(a(r).serialize(n))}}function Eu(i){let n=i.split("0x").join("");for(let r=0;r<n.length;r++)if(n[r]!=="0")return`0x${n.substring(r)}`;return"0x0"}function v(i){let{typeName:n,typeArgs:r}=he(i);switch(n){case"bool":case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"address":case"signer":return n;case"vector":return`vector<${v(r[0])}>`;default:{let a=n.split("::");a[0]=Eu(a[0]);let s=a.join("::");return r.length>0?`${s}<${r.map(o=>v(o)).join(",")}>`:s}}}function _(i,...n){return n.length>0?`${i}<${n.join(", ")}>`:i}var de=yn(()=>{"use strict";le()});var zt=Ui((Yg,Ko)=>{"use strict";de();var Ha=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Gu=new Ha;Ko.exports=Gu});var ts=Ui((Qg,nc)=>{"use strict";de();var es=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},_u=new es;nc.exports=_u});var is=Ui((nf,ic)=>{"use strict";de();var rs=class i{static $PACKAGE_ID="";static $PUBLISHED_AT="";static $PKG_V=[];get PACKAGE_ID(){return v(i.$PACKAGE_ID)}get PUBLISHED_AT(){return v(i.$PUBLISHED_AT)}get PKG_V1(){return v(i.$PKG_V[1])}setPackageId(n){i.$PACKAGE_ID=n}setPublishedAt(n){i.$PUBLISHED_AT=n}setPkgV(n,r){i.$PKG_V[n]=r}setAddress(n,r){i.$PACKAGE_ID=n,i.$PUBLISHED_AT=n,i.$PKG_V[1]=r||n}},Vu=new rs;ic.exports=Vu});var Am={};Wc(Am,{AddressStatus:()=>Cr,AllbridgeCoreSdk:()=>ds,AmountFormat:()=>Yn,AmountNotEnoughError:()=>Qt,ArgumentInvalidDecimalsError:()=>Vn,CCTPDoesNotSupportedError:()=>Ge,ChainSymbol:()=>Me,ChainType:()=>Q,ErrorCode:()=>gs,ExtraGasMaxLimitExceededError:()=>_n,FeePaymentMethod:()=>Zt,InsufficientPoolLiquidityError:()=>ft,InvalidAmountError:()=>gt,InvalidGasFeePaymentOptionError:()=>hn,InvalidMessengerOptionError:()=>ji,InvalidTxError:()=>qt,JupiterError:()=>me,Messenger:()=>Ye,MethodNotSupportedError:()=>ce,NodeRpcUrlNotInitializedError:()=>$n,SdkError:()=>C,SdkRootError:()=>ae,SolanaAutoTxFee:()=>jr,TimeoutError:()=>Tn,TxTooLargeError:()=>Zn,VerifyTxError:()=>bn,mainnet:()=>Gn,nodeRpcUrlsDefault:()=>Ec,nodeUrlsDefault:()=>jc});module.exports=Uc(Am);var Gn={coreApiUrl:"https://core.api.allbridgecoreapi.net",coreApiQueryParams:{},coreApiHeaders:{},jupiterUrl:"https://quote-api.jup.ag/v6",wormholeMessengerProgramId:"worm2ZoG2kUd4vFXhvjh93UUH596ayRfgQ2MgjNMTth",solanaLookUpTable:"2JcBAEVnAwVo4u8d61iqgHPrzZuugur7cVTjWubsVLHj",sorobanNetworkPassphrase:"Public Global Stellar Network ; September 2015",tronJsonRpc:"https://api.trongrid.io/jsonrpc",cctpParams:{cctpTransmitterProgramId:"CCTPmbSD7gX1bxKPAmg77w8oFzNFpaQiQUWD43TKaecd",cctpTokenMessengerMinter:"CCTPiPYPc6AsJuwueEnWgSgucamXDZwBd53dQ11YiKX3",cctpDomains:{ETH:0,AVA:1,OPT:2,ARB:3,SOL:5,BAS:6,POL:7,SUI:8}},cachePoolInfoChainSec:20},jc={solanaRpcUrl:"https://api.mainnet-beta.solana.com",tronRpcUrl:"https://api.trongrid.io"},Ec={SOL:"https://api.mainnet-beta.solana.com",TRX:"https://api.trongrid.io",SRB:"https://rpc.stellar.org:443",STLR:"https://horizon.stellar.org",SUI:"https://fullnode.mainnet.sui.io"};var ut=require("big.js");var ae=class extends Error{errorCode;constructor(n,r){super(r),this.errorCode=n}},C=class extends ae{constructor(n){super("SdkError",n)}},gt=class extends ae{constructor(n){super("InvalidAmountError",n)}},Qt=class extends ae{constructor(n){super("AmountNotEnoughError",n)}},ft=class extends ae{constructor(n){super("InsufficientPoolLiquidityError",n)}},me=class extends ae{constructor(n){super("JupiterError",n)}},hn=class extends ae{constructor(n){super("InvalidGasFeePaymentOptionError",n)}},ji=class extends ae{constructor(n){super("InvalidMessengerOptionError",n)}},ce=class extends ae{constructor(n){super("MethodNotSupportedError",n)}},bn=class extends ae{constructor(n){super("VerifyTxError",n)}},qt=class extends ae{constructor(n){super("InvalidTxError",n)}},_n=class extends ae{constructor(n){super("ExtraGasMaxLimitExceededError",n)}},Vn=class extends ae{constructor(n,r,a){super("ArgumentInvalidDecimalsError",`Argument '${n}' decimals '${r}' cannot be greater than '${a}'`)}},Tn=class extends ae{constructor(n){super("TimeoutError",n)}},$n=class extends ae{constructor(n){super("NodeRpcUrlNotInitializedError",`For chain '${n}' Node RPC URL not initialized`)}},Ge=class extends ae{constructor(n){super("CCTPDoesNotSupportedError",n)}},Zn=class extends ae{constructor(){super("TxTooLargeError","Transaction too large: try again later or switch to another messenger or pay relayer fee in native gas currency")}},gs=(w=>(w.SDK_ERROR="SdkError",w.INVALID_AMOUNT_ERROR="InvalidAmountError",w.AMOUNT_NOT_ENOUGH_ERROR="AmountNotEnoughError",w.INSUFFICIENT_POOL_LIQUIDITY_ERROR="InsufficientPoolLiquidityError",w.JUPITER_ERROR="JupiterError",w.INVALID_GAS_FEE_PAYMENT_OPTION_ERROR="InvalidGasFeePaymentOptionError",w.INVALID_MESSENGER_OPTION_ERROR="InvalidMessengerOptionError",w.METHOD_NOT_SUPPORTED_ERROR="MethodNotSupportedError",w.VERIFY_TX_ERROR="VerifyTxError",w.INVALID_TX_ERROR="InvalidTxError",w.EXTRA_GAS_MAX_LIMIT_EXCEEDED_ERROR="ExtraGasMaxLimitExceededError",w.ARGUMENT_INVALID_DECIMALS_ERROR="ArgumentInvalidDecimalsError",w.TIMEOUT_ERROR="TimeoutError",w.NODE_RPC_URL_NOT_INITIALIZED_ERROR="NodeRpcUrlNotInitializedError",w.CCTP_DOES_NOT_SUPPORTED_ERROR="CCTPDoesNotSupportedError",w.TX_TOO_LARGE="TxTooLargeError",w))(gs||{});var Me=(h=>(h.BSC="BSC",h.ETH="ETH",h.BAS="BAS",h.SOL="SOL",h.TRX="TRX",h.POL="POL",h.ARB="ARB",h.CEL="CEL",h.AVA="AVA",h.SRB="SRB",h.STLR="STLR",h.OPT="OPT",h.SUI="SUI",h))(Me||{}),Q=(o=>(o.EVM="EVM",o.SOLANA="SOLANA",o.TRX="TRX",o.SRB="SRB",o.SUI="SUI",o))(Q||{});var Gc={EVM:18,SOLANA:9,TRX:6,SRB:7,SUI:9},_c={BSC:{chainSymbol:"BSC",chainId:"0x38",name:"BNB Chain",chainType:"EVM"},ETH:{chainSymbol:"ETH",chainId:"0x1",name:"Ethereum",chainType:"EVM"},BAS:{chainSymbol:"BAS",chainId:"0x2105",name:"Base",chainType:"EVM"},ARB:{chainSymbol:"ARB",chainId:"0xa4b1",name:"Arbitrum",chainType:"EVM"},AVA:{chainSymbol:"AVA",chainId:"0xa86a",name:"Avalanche",chainType:"EVM"},CEL:{chainSymbol:"CEL",chainId:"0xa4ec",name:"Celo",chainType:"EVM"},POL:{chainSymbol:"POL",chainId:"0x89",name:"Polygon",chainType:"EVM"},OPT:{chainSymbol:"OPT",chainId:"0xa",name:"OP Mainnet",chainType:"EVM"},SOL:{chainSymbol:"SOL",name:"Solana",chainType:"SOLANA"},TRX:{chainSymbol:"TRX",name:"Tron",chainType:"TRX"},SRB:{chainSymbol:"SRB",name:"Stellar",chainType:"SRB"},STLR:{chainSymbol:"STLR",name:"Stellar",chainType:"SRB"},SUI:{chainSymbol:"SUI",name:"Sui",chainType:"SUI"}},$=(()=>{let i={..._c};return{addChainsProperties(n){i={...i,...n}},getChainProperty(n){let r=i[n];if(!r)throw new C(`Cannot find chain properties for ${n}`);return r},getChainsProperties(){return i},getChainDecimalsByType(n){return Gc[n]}}})();var vs=oe(require("axios"));var fs="3.21.0";var B=require("big.js"),wr=oe(require("bn.js"));function Ei(i,n){return(0,B.Big)(100).minus((0,B.Big)(100).times(n).div(i)).toNumber()}function en(i,n){return _t(i,n,3).round(0,B.Big.roundDown)}function xe(i,n){return _t(i,3,n)}function _t(i,n,r){let a=(0,B.Big)(r).minus(n).toNumber();return(0,B.Big)(i).times(Jn(a))}function Jn(i){return(0,B.Big)(10).pow(i)}function L(i,n){return(0,B.Big)(i).times(Jn(n))}function G(i,n){let r=(0,B.Big)(i);return r.eq(0)?(0,B.Big)(0):(0,B.Big)(r).div(Jn(n))}function Te(i){return G((0,B.Big)(i.tokenBalance).minus(i.vUsdBalance).toFixed(),3).div(2).toFixed()}function yt(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return"0";let o=s.times(n),c=s.minus(o),A=en(c,r),u=(0,B.Big)(a.tokenBalance).plus(A),m=ht(u,a.aValue,a.dValue);return(0,B.Big)(a.vUsdBalance).minus(m).round(0,B.Big.roundDown).toFixed()}function Ln(i,{feeShare:n,decimals:r},a){let s=(0,B.Big)(i);if(s.lte(0))return(0,B.Big)(0).toFixed();let o=s.plus(a.vUsdBalance),c=ht(o,a.aValue,a.dValue),A=xe((0,B.Big)(a.tokenBalance).minus(c),r),u=(0,B.Big)(A).times(n);return(0,B.Big)(A).minus(u).round(0,B.Big.roundDown).toFixed()}function ys(i,n){let r=(0,B.Big)(i);if(r.lte(0))return n;let a=r.plus(n.vUsdBalance),s=ht(a,n.aValue,n.dValue);return{aValue:n.aValue,dValue:n.dValue,tokenBalance:s.toFixed(0),vUsdBalance:a.toFixed(0)}}function hs(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(a.vUsdBalance).minus(i);if(s.lte(0))throw new ft;let o=ht(s,a.aValue,a.dValue),c=(0,B.Big)(o).minus(a.tokenBalance),A=xe(c,r),u=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),m=(0,B.Big)(A).times(u).round(0,B.Big.roundUp);return(0,B.Big)(A).plus(m).round(0,B.Big.roundDown)}function bs(i,{feeShare:n,decimals:r},a){if((0,B.Big)(i).lte(0))return(0,B.Big)(0);let s=(0,B.Big)(n).div((0,B.Big)(1).minus(n)),o=(0,B.Big)(i).times(s).round(0,B.Big.roundUp),c=(0,B.Big)(i).plus(o),A=en(c,r),u=(0,B.Big)(a.tokenBalance).minus(A);if(u.lte(0))throw new ft;let m=ht(u,a.aValue,a.dValue);return(0,B.Big)(m).minus(a.vUsdBalance).round(0,B.Big.roundDown)}function ht(i,n,r){let a=(0,B.Big)(4).times(n).times((0,B.Big)(r).minus(i)).minus(r),s=(0,B.Big)(r).pow(3),o=a.pow(2),c=(0,B.Big)(i).times((0,B.Big)(i).times(o).plus((0,B.Big)(4).times(n).times(s))).sqrt().round(0,B.Big.roundDown),A=(0,B.Big)(8).times(n).times(i),u=a.times(i).plus(c).div(A).round(0,B.Big.roundDown);return u.eq(0)?(0,B.Big)(0):u.plus(1)}function Ts(i,n,r,a){let s=new wr.default(i),o=new wr.default(r),c=new wr.default(n);return s.mul(o).shrn(a).sub(c).toString()}function Ss(i){return(0,B.Big)(i).gt(0)?`${Number((0,B.Big)(i).times(100).toFixed(2)).toLocaleString()}%`:"N/A"}function Ps(i,n,r){let a=(0,B.Big)(n).times(r),s=(0,B.Big)(n).plus(r),o=(0,B.Big)(8).times(i).times(a).times(s),c=a.times((0,B.Big)(16).times(i).minus(4)).div(3),A=o.times(o),u=c.times(c).times(c),m=A.plus(u),l=(0,B.Big)(m).sqrt(),g=(0,B.Big)(Math.cbrt(+o.plus(l).toFixed())),S=(0,B.Big)(Math.cbrt(+o.minus(l).toFixed()));return g.plus(S).toFixed()}var Cr=(c=>(c.OK="OK",c.INVALID="INVALID",c.FORBIDDEN="FORBIDDEN",c.UNINITIALIZED="UNINITIALIZED",c.CONTRACT_ADDRESS="CONTRACT_ADDRESS",c.WRONG_ASSOCIATED_ACCOUNT_OWNER="WRONG_ASSOCIATED_ACCOUNT_OWNER",c))(Cr||{});var Ye=(a=>(a[a.ALLBRIDGE=1]="ALLBRIDGE",a[a.WORMHOLE=2]="WORMHOLE",a[a.CCTP=3]="CCTP",a))(Ye||{});function ws(i){return Object.entries(i).reduce((n,r)=>{let a=r[0],s=r[1],o=Lc(a,s);return o&&(n[a]=o),n},{})}function Cs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens){let c=Sn({chainSymbol:s,poolAddress:o.poolAddress}),A=Te(o.poolInfo);n[c]={...o.poolInfo,imbalance:A}}}return n}function Vc(i,n){let{name:r,...a}=i,{poolInfo:s,...o}=n;return{...o,...a,chainName:r}}function $c(i){switch(i){case"allbridge":return 1;case"wormhole":return 2;case"cctp":return 3;default:return null}}function Zc(i){return Object.entries(i).reduce((n,[r,a])=>(n[r]=Jc(a),n),{})}function Jc(i){return Object.entries(i).reduce((n,[r,a])=>{let s=$c(r);return s&&(n[s]=a),n},{})}function Lc(i,n){let r=$.getChainsProperties()[i];if(!r)return null;let a={...r,allbridgeChainId:n.chainId,bridgeAddress:n.bridgeAddress,transferTime:Zc(n.transferTime),txCostAmount:n.txCostAmount,confirmations:n.confirmations,suiAddresses:n.suiAddresses};return{...a,tokens:n.tokens.map(s=>Vc(a,s))}}function Sn(i){return i.chainSymbol+"_"+i.poolAddress}function Is(i){let n=[];for(let[r,a]of Object.entries(i)){let s=r;for(let o of a.tokens)n.push({chainSymbol:s,poolAddress:o.poolAddress})}return n}function Bs(i){let n={};for(let[r,a]of Object.entries(i)){let s=r;for(let[o,c]of Object.entries(a))c.imbalance=Te(c),n[Sn({chainSymbol:s,poolAddress:o})]=c}return n}var Ir=class{api;constructor(n){this.api=vs.default.create({baseURL:n.coreApiUrl,headers:{Accept:"application/json",...n.coreApiHeaders,"x-Sdk-Agent":"AllbridgeCoreSDK/"+fs},params:n.coreApiQueryParams})}async getTokenInfo(){let{data:n}=await this.api.get("/token-info",{params:{filter:"all"}});return{chainDetailsMap:ws(n),poolInfoMap:Cs(n)}}async getPendingInfo(){let{data:n}=await this.api.get("/pending-info");return n}async getGasBalance(n,r){let{data:a}=await this.api.get(`/check/${n}/${r}`);return a}async getTransferStatus(n,r){let{data:a}=await this.api.get(`/chain/${n}/${r}`);return a}async getReceiveTransactionCost(n){let{data:r}=await this.api.post("/receive-fee",n,{headers:{"Content-Type":"application/json"}});return{exchangeRate:r.exchangeRate,fee:r.fee,sourceNativeTokenPrice:r.sourceNativeTokenPrice}}async getPoolInfoMap(n){let r=n instanceof Array?n:[n],{data:a}=await this.api.post("/pool-info",{pools:r},{headers:{"Content-Type":"application/json"}});return Bs(a)}};var Xc=(i,n)=>i!==null&&Object.prototype.hasOwnProperty.call(i,n),Rs="__cache__",Gi=function(i){return typeof i!="string"?Rs+JSON.stringify(i):Rs+i},_i=class{constructor(n={defaultTtl:60*1e3}){this.cache={},this.defaultTtl=n.defaultTtl||60*1e3}put(n,r,a){let s=(a?a.ttl:void 0)||this.defaultTtl,o=(a?a.callback:void 0)||function(){},c=Gi(n),A=this.cache[c];A&&clearTimeout(A.handle);let u=setTimeout(()=>this.remove(n),s);this.cache[c]={handle:u,data:r,callback:o}}get(n){let r=this.cache[Gi(n)];return r&&r.data}remove(n){let r=Gi(n),a=this.cache[r];a&&(clearTimeout(a.handle),delete this.cache[r],a.callback(n,a.data))}clear(){for(let n in this.cache)Xc(this.cache,n)&&clearTimeout(this.cache[n].handle);this.cache={}}size(){return Object.keys(this.cache).length}},Rt=_i;var Vi=20*1e3,Yc=55*1e3,Br=class{constructor(n){this.apiClient=n;this.tokenInfoCache=new Rt({defaultTtl:Yc}),this.receivedTransactionCache=new Rt({defaultTtl:Vi}),this.pendingInfoCache=new Rt({defaultTtl:Vi}),this.gasBalanceCache=new Rt({defaultTtl:Vi})}tokenInfoCache;pendingInfoCache;gasBalanceCache;receivedTransactionCache;getTokenInfo(){let n="TOKEN_INFO_CACHE_KEY",r=this.tokenInfoCache.get(n);if(r)return r;let a=this.apiClient.getTokenInfo();return this.tokenInfoCache.put(n,a),a}async getGasBalance(n,r){let a=`GAS_BALANCE_${n}_${r}`,s=this.gasBalanceCache.get(a);if(s)return s;let o=this.apiClient.getGasBalance(n,r);return this.gasBalanceCache.put(a,o),o}async getPendingInfo(){let n="PENDING_INFO_CACHE_KEY",r=this.pendingInfoCache.get(n);if(r)return r;let a=this.apiClient.getPendingInfo();return this.pendingInfoCache.put(n,a),a}async getReceiveTransactionCost(n){let r=`RECEIVE_TX_COST_${n.sourceChainId}_${n.destinationChainId}_${n.messenger}`,a=this.receivedTransactionCache.get(r);if(a)return a;let s=await this.apiClient.getReceiveTransactionCost(n);return this.receivedTransactionCache.put(r,s),s}async getTransferStatus(n,r){return this.apiClient.getTransferStatus(n,r)}async getPoolInfoMap(n){return this.apiClient.getPoolInfoMap(n)}};var vr=class{constructor(n){this.apiClient=n}async getChainDetailsMap(){return(await this.apiClient.getTokenInfo()).chainDetailsMap}async tokens(){let n=await this.getChainDetailsMap();return Object.values(n).flatMap(r=>r.tokens)}async getPendingInfo(){return this.apiClient.getPendingInfo()}async getGasBalance(n,r){return this.apiClient.getGasBalance(n,r)}async getChainDetailsMapAndPoolInfoMap(){return await this.apiClient.getTokenInfo()}async getTransferStatus(n,r){return await this.apiClient.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.apiClient.getReceiveTransactionCost(n)}async getPoolInfoMap(n){return await this.apiClient.getPoolInfoMap(n)}};var Rr=class{constructor(n,r){this.client=n;this.isStaging=r.coreApiQueryParams?.staging==="true"}isStaging;async getChainDetailsMap(n){let r=await this.client.getChainDetailsMap(),a={};for(let s in r){let o=r[s];o&&(a[s]={...o,tokens:ks(o.tokens,n,this.isStaging)})}return a}async tokens(n){return ks(await this.client.tokens(),n,this.isStaging)}async getPendingInfo(){return this.client.getPendingInfo()}async getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getTransferStatus(n,r){return await this.client.getTransferStatus(n,r)}async getReceiveTransactionCost(n){return await this.client.getReceiveTransactionCost(n)}cachePut(n,r){return this.client.cachePut(n,r)}getPoolInfoByKey(n){return this.client.getPoolInfoByKey(n)}refreshPoolInfo(n){return this.client.refreshPoolInfo(n)}};function ks(i,n,r){return i.filter(a=>r?!0:a.flags[n]).map(Kc)}function Kc(i){let{flags:n,...r}=i;return r}var zc=55*1e3,kr=class{constructor(n){this.client=n;this.poolInfoCache=new $i}poolInfoCache;async getChainDetailsMap(){return(await this.client.getChainDetailsMapAndPoolInfoMap()).chainDetailsMap}async tokens(){return await this.client.tokens()}getTransferStatus(n,r){return this.client.getTransferStatus(n,r)}getReceiveTransactionCost(n){return this.client.getReceiveTransactionCost(n)}getPendingInfo(){return this.client.getPendingInfo()}getGasBalance(n,r){return this.client.getGasBalance(n,r)}async getPoolInfoByKey(n){this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap);let r=this.poolInfoCache.get(n);if(r)return r;{let a=await this.client.getPoolInfoMap(n);this.poolInfoCache.putAll(a);let s=a[Sn(n)];if(s)return s;throw new C("Cannot find pool info for "+n.poolAddress+" on chain "+n.chainSymbol)}}async refreshPoolInfo(n){let r;if(n)this.poolInfoCache.putAllIfNotExists((await this.client.getChainDetailsMapAndPoolInfoMap()).poolInfoMap),r=await this.client.getPoolInfoMap(n);else{let a=await this.client.getChainDetailsMapAndPoolInfoMap();r=await this.client.getPoolInfoMap(Is(a.chainDetailsMap))}this.poolInfoCache.putAll(r)}cachePut(n,r){this.poolInfoCache.put(Sn(n),r)}},$i=class{cache;constructor(){this.cache=new Rt({defaultTtl:zc})}putAll(n){for(let[r,a]of Object.entries(n))this.cache.put(r,a)}putAllIfNotExists(n){for(let[r,a]of Object.entries(n))this.cache.get(r)||this.cache.put(r,a)}put(n,r){this.cache.put(n,r)}get(n){let r=Sn(n);return this.cache.get(r)}};var lc=require("tronweb"),dc=require("web3");var Zi=require("big.js");async function ue(i,n){return await i.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}function z(i){if((0,Zi.Big)(i).lte(0))throw new gt("Amount must be greater than zero")}function q(i,n,r){let a=(0,Zi.Big)(n).toFixed(),[s,o]=a.split(".");if(o&&o.length>r)throw new Vn(i,o.length,r)}async function Mr(i,n,r){return await Promise.race([i,new Promise((a,s)=>{setTimeout(()=>s(new Tn(n)),r)})])}async function Ji(i,n,r,a){if(r<1)throw new Error(`Bad argument: 'maxRetries' must be greater than 0, but ${r} was received.`);let s=0;for(;;)try{return await Mr(i(),n,a)}catch{if(++s>=r)throw new Tn(n)}}async function Ms(i,n,r,a=1.5,s=!1){let o=[],c=0,A=await i();if(o.push(A),!n(A))return o;let u=new Date(Date.now()+r*1e3).valueOf(),m=1e3,l=m;for(;Date.now()<u;){let g=o[o.length-1];if(g===void 0||!n(g))break;c++,s&&console.info(`Waiting ${m}ms before trying again (bringing the total wait time to ${l}ms so far, of total ${r*1e3}ms)`),await new Promise(h=>setTimeout(h,m)),m=m*a,new Date(Date.now()+m).valueOf()>u&&(m=u-Date.now(),s&&console.info(`was gonna wait too long; new waitTime: ${m}ms`)),l=m+l;let S=await i(g);o.push(S),s&&n(S)&&console.info(`${c}. Called ${i.name}; ${o.length} prev attempts. Most recent: ${JSON.stringify(o[o.length-1],null,2)}`)}return o}var Xs=require("big.js");var Hc={abi:[{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"uint256",name:"_chainPrecision",type:"uint256"},{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"},{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"},{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"gas",type:"uint256"}],name:"BridgingFeeFromTokens",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"bridgeTransactionCost",type:"uint256"},{indexed:!1,internalType:"uint256",name:"messageTransactionCost",type:"uint256"}],name:"ReceiveFee",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Received",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"bytes32",name:"sendToken",type:"bytes32"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"sendAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receiveAmount",type:"uint256"}],name:"Swapped",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{indexed:!1,internalType:"bytes32",name:"message",type:"bytes32"}],name:"TokensReceived",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"receiveToken",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"addBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract Pool",name:"pool",type:"address"},{internalType:"bytes32",name:"token",type:"bytes32"}],name:"addPool",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"canSwap",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"address",name:"tokenAddress",type:"address"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"getMessageGasUsage",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"},{internalType:"enum MessengerProtocol",name:"protocol",type:"uint8"}],name:"hasReceivedMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"message",type:"bytes32"}],name:"hasSentMessage",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"}],name:"hashMessage",outputs:[{internalType:"bytes32",name:"",type:"bytes32"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"otherBridgeTokens",outputs:[{internalType:"bool",name:"isSupported",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"otherBridges",outputs:[{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"tokenId",type:"bytes32"}],name:"pools",outputs:[{internalType:"contract Pool",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"processedMessages",outputs:[{internalType:"uint256",name:"isProcessed",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"bridgeAddress",type:"bytes32"}],name:"registerBridge",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_chainId",type:"uint256"},{internalType:"bytes32",name:"tokenAddress",type:"bytes32"}],name:"removeBridgeToken",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"messageHash",type:"bytes32"}],name:"sentMessages",outputs:[{internalType:"uint256",name:"isSent",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"contract Messenger",name:"_allbridgeMessenger",type:"address"}],name:"setAllbridgeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"_gasOracle",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_rebalancer",type:"address"}],name:"setRebalancer",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract WormholeMessenger",name:"_wormholeMessenger",type:"address"}],name:"setWormholeMessenger",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopSwap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"address",name:"recipient",type:"address"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"}],name:"swap",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"bytes32",name:"token",type:"bytes32"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"bytes32",name:"receiveToken",type:"bytes32"},{internalType:"uint256",name:"nonce",type:"uint256"},{internalType:"enum MessengerProtocol",name:"messenger",type:"uint8"},{internalType:"uint256",name:"feeTokenAmount",type:"uint256"}],name:"swapAndBridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IERC20",name:"token",type:"address"}],name:"withdrawBridgingFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGasTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},xs=Hc;var Qc={abi:[{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint256",name:"chainPrecision_",type:"uint256"},{internalType:"address",name:"tokenAddress",type:"address"},{internalType:"address",name:"cctpMessenger_",type:"address"},{internalType:"address",name:"cctpTransmitter_",type:"address"},{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedExtraGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"ReceivedGas",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"RecipientReplaced",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"}],name:"TokensSentExtras",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"bytes32",name:"recipient",type:"bytes32"},{indexed:!1,internalType:"uint256",name:"destinationChainId",type:"uint256"},{indexed:!1,internalType:"uint256",name:"nonce",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromGas",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeFromTokens",type:"uint256"},{indexed:!1,internalType:"uint256",name:"relayerFee",type:"uint256"},{indexed:!1,internalType:"uint256",name:"receivedRelayerFeeTokenAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"adminFeeTokenAmount",type:"uint256"}],name:"TokensSent",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridge",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bytes32",name:"recipient",type:"bytes32"},{internalType:"bytes32",name:"recipientWalletAddress",type:"bytes32"},{internalType:"uint256",name:"destinationChainId",type:"uint256"},{internalType:"uint256",name:"relayerFeeTokenAmount",type:"uint256"}],name:"bridgeWithWalletAddress",outputs:[],stateMutability:"payable",type:"function"},{inputs:[],name:"chainId",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"bytes",name:"originalMessage",type:"bytes"},{internalType:"bytes",name:"originalAttestation",type:"bytes"},{internalType:"bytes32",name:"newRecipient",type:"bytes32"}],name:"changeRecipient",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"gasUsage",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"destinationChainId",type:"uint256"}],name:"getBridgingCostInTokens",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"getDomainByChainId",outputs:[{internalType:"uint32",name:"",type:"uint32"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"}],name:"getTransactionCost",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"sourceChainId",type:"uint256"},{internalType:"uint64",name:"nonce",type:"uint64"}],name:"isMessageProcessed",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"recipient",type:"address"},{internalType:"bytes",name:"message",type:"bytes"},{internalType:"bytes",name:"signature",type:"bytes"}],name:"receiveTokens",outputs:[],stateMutability:"payable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"},{internalType:"uint32",name:"domain",type:"uint32"}],name:"registerBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"adminFeeShareBP_",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"contract IGasOracle",name:"gasOracle_",type:"address"}],name:"setGasOracle",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId",type:"uint256"},{internalType:"uint256",name:"gasAmount",type:"uint256"}],name:"setGasUsage",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"chainId_",type:"uint256"}],name:"unregisterBridgeDestination",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"withdrawFeeInTokens",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"withdrawGas",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Os=Qc;var Nr=oe(require("@project-serum/anchor")),qi=require("@solana/web3.js");var ge=oe(require("@project-serum/anchor")),fe=require("@solana/web3.js");async function Ke(i,n){return ge.utils.token.associatedAddress({mint:n,owner:i})}async function Vt(i){let[n]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("config")],i);return n}async function Fs(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("lock"),Uint8Array.from(i)],n);return r}async function Xn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("price_v2"),Uint8Array.from([i])],n);return r}async function Pn(i){let n=await Vt(i),[r]=await fe.PublicKey.findProgramAddress([n.toBuffer()],i);return r}async function Ns(i,n){let[r]=await fe.PublicKey.findProgramAddress([i.toBuffer()],n);return r}async function wn(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}async function Ds(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("other_bridge_token"),Buffer.from([i]),n],r);return a}async function Li(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("chain_bridge"),Uint8Array.from([i])],n);return r}async function Xi(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("gas_usage"),Uint8Array.from([i])],n);return r}async function Ws(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("sent_message"),i],n);return r}async function Yi(i,n,r){let[a]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("user_deposit"),n.toBytes(),i.toBytes()],r);return a}async function Us(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("cctp_bridge"),i.toBytes()],n);return r}async function js(i,n){let[r]=await fe.PublicKey.findProgramAddress([ge.utils.bytes.utf8.encode("token"),i.toBytes()],n);return r}function Es(i,n){let[r]=fe.PublicKey.findProgramAddressSync([ge.utils.bytes.utf8.encode("lock"),n.toBuffer()],i);return r}function Gs(i,n,r,a){let s=tn("message_transmitter",r),o=tn("token_messenger",a),c=tn("__event_authority",a),A=tn("token_minter",a),u=tn("local_token",a,[n]),m=tn("remote_token_messenger",a,[i.toString()]),l=tn("sender_authority",a);return{messageTransmitterAccount:s,tokenMessenger:o,tokenMessengerEventAuthority:c,tokenMinter:A,localToken:u,remoteTokenMessengerKey:m,authorityPda:l}}function tn(i,n,r=[]){let a=[Buffer.from(ge.utils.bytes.utf8.encode(i))];for(let o of r)typeof o=="string"?a.push(Buffer.from(ge.utils.bytes.utf8.encode(o))):Array.isArray(o)||Buffer.isBuffer(o)?a.push(Buffer.from(Uint8Array.from(o))):a.push(Buffer.from(Uint8Array.from(o.toBuffer())));return fe.PublicKey.findProgramAddressSync(a,n)[0]}var _s=require("@project-serum/anchor"),xr=require("@solana/web3.js");function $t(i,n){let r=new xr.Connection(i,"confirmed"),a=new xr.PublicKey(n);return new _s.AnchorProvider(r,{publicKey:a},{preflightCommitment:"confirmed",commitment:"confirmed"})}var $s=require("@solana/web3.js"),Zs=require("@stellar/stellar-sdk"),bt=require("big.js"),zi=oe(require("randombytes")),Ki=require("tronweb");function kt(i,n,r){let a;switch(n){case"EVM":{a=Vs(i);break}case"SOLANA":{a=new $s.PublicKey(i).toBuffer();break}case"TRX":{a=qc(i);break}case"SRB":{a=new Zs.Address(i).toBuffer();break}case"SUI":{a=Vs(i);break}}switch(r){case"EVM":return"0x"+a.toString("hex");case"SOLANA":return Array.from(a);case"TRX":return a;case"SRB":return a.toJSON().data;case"SUI":return"0x"+a.toString("hex")}}function ze(i){return i.replace(/^0x/i,"")}function Js(i){return Buffer.from(i.replace(/^0x/i,""),"hex")}function Vs(i){let r=Js(i);return Buffer.concat([Buffer.alloc(32-r.length,0),r],32)}function qc(i){let n=Or(i),r=Js(n);return eA(r,32)}function Or(i){let n=Ki.utils.crypto.decodeBase58Address(i);return n?Ki.utils.bytes.byteArray2hexStr(n).replace(/^41/,"0x"):""}function eA(i,n){if(i.length>=n)return i;let r=Buffer.alloc(n,0);return i.copy(r,n-i.length),r}function Fr(){return(0,zi.default)(32)}function Tt(){let i=(0,zi.default)(32).readBigInt64BE();return i<0?i*-1n:i}function St(i,n){let r={},a=n.sourceToken;if(r.amount=L(n.amount,a.decimals).toFixed(),r.contractAddress=a.bridgeAddress,r.fromAccountAddress=n.fromAccountAddress,i==="SUI"){if(!a.originTokenAddress)throw new C("SUI sourceToken must contain 'originTokenAddress'");r.fromTokenAddress=a.originTokenAddress}else r.fromTokenAddress=kt(a.tokenAddress,i,i);if(r.toAccountAddress=n.toAccountAddress,i==="SUI"){if(!n.destinationToken.originTokenAddress)throw new C("SUI destinationToken must contain 'originTokenAddress'");r.toTokenAddress=n.destinationToken.originTokenAddress}else r.toTokenAddress=kt(n.destinationToken.tokenAddress,i,i);return r.minimumReceiveAmount=n.minimumReceiveAmount?L(n.minimumReceiveAmount,n.destinationToken.decimals).toFixed():"0",r}async function He(i,n,r){let a={};a.fromChainId=n.sourceToken.allbridgeChainId,a.fromChainSymbol=n.sourceToken.chainSymbol;let s=$.getChainProperty(n.destinationToken.chainSymbol).chainType;if(i==="SUI"){if(!n.sourceToken.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");a.fromTokenAddress=n.sourceToken.originTokenAddress}else a.fromTokenAddress=n.sourceToken.tokenAddress;a.toChainId=n.destinationToken.allbridgeChainId,a.toTokenAddress=n.destinationToken.tokenAddress,n.gasFeePaymentMethod==="stablecoin"?a.gasFeePaymentMethod="stablecoin":a.gasFeePaymentMethod="native";let o=n.sourceToken;if(n.messenger===3){if(!o.cctpAddress||!n.destinationToken.cctpAddress)throw new Ge("Such route does not support CCTP protocol");a.contractAddress=o.cctpAddress}else a.contractAddress=o.bridgeAddress;a.messenger=n.messenger,a.fromAccountAddress=n.fromAccountAddress,a.amount=L(n.amount,o.decimals).toFixed();let{fee:c,feeFormat:A}=n;if(!c){let g=(await Hi(a.fromChainId,n.sourceToken.chainType,a.toChainId,o.decimals,a.messenger,r))[a.gasFeePaymentMethod];if(!g)throw new hn;c=g.int,A="int"}if(A=="float")switch(a.gasFeePaymentMethod){case"native":a.fee=L(c,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.fee=L(c,o.decimals).toFixed(0);break}else a.fee=c;let{extraGas:u,extraGasFormat:m}=n;if(u&&+u>0){if(m=="float")switch(a.gasFeePaymentMethod){case"native":a.extraGas=L(u,$.getChainDecimalsByType(o.chainType)).toFixed(0);break;case"stablecoin":a.extraGas=L(u,o.decimals).toFixed(0);break}else a.extraGas=u;await nA(a.extraGas,a.gasFeePaymentMethod,o,n.destinationToken,r)}return i!=="SUI"&&(a.fromTokenAddress=kt(a.fromTokenAddress,i,i)),a.toAccountAddress=kt(n.toAccountAddress,s,i),a.toTokenAddress=kt(a.toTokenAddress,s,i),a.gasFeePaymentMethod=="stablecoin"&&tA(a.amount,o.decimals,a.fee,a.extraGas),a}function tA(i,n,r,a){let s=(0,bt.Big)(i).minus(r).minus(a??0);if(s.lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,bt.Big)(s).minus(1).neg(),n).toFixed()} stables is missing`)}async function Hi(i,n,r,a,s,o){let c=await o.getReceiveTransactionCost({sourceChainId:i,destinationChainId:r,messenger:s}),A={native:{int:c.fee,float:G(c.fee,$.getChainDecimalsByType(n)).toFixed()}};if(c.sourceNativeTokenPrice){let u=_t(new bt.Big(c.fee).mul(c.sourceNativeTokenPrice),$.getChainDecimalsByType(n),a).toFixed(0,bt.Big.roundUp);A.stablecoin={int:u,float:G(u,a).toFixed()}}return A}async function nA(i,n,r,a,s){let c=(await Qi(r,a,s)).extraGasMax[n];if(!c)throw new hn(`Impossible to pay extra gas by '${n}' payment method`);let A=c.int;if((0,bt.Big)(i).gt(A))throw new _n(`Extra gas ${i} in int format, exceeded limit ${A} for '${n}' payment method`)}async function Qi(i,n,r){let a={},s=await r.getReceiveTransactionCost({sourceChainId:i.allbridgeChainId,destinationChainId:n.allbridgeChainId,messenger:1}),o=n.txCostAmount.maxAmount,c=G(o,$.getChainDecimalsByType(n.chainType)).toFixed(),A=(0,bt.Big)(c).div(s.exchangeRate).toFixed($.getChainDecimalsByType(i.chainType),bt.Big.roundDown),u=L(A,$.getChainDecimalsByType(i.chainType)).toFixed(0);if(a.native={int:u,float:A},s.sourceNativeTokenPrice){let m=(0,bt.Big)(A).mul(s.sourceNativeTokenPrice).toFixed(i.decimals,bt.Big.roundDown);a.stablecoin={int:L(m,i.decimals).toFixed(0),float:m}}return{extraGasMax:a,destinationChain:{gasAmountMax:{int:o,float:c},swap:{int:n.txCostAmount.swap,float:G(n.txCostAmount.swap,$.getChainDecimalsByType(n.chainType)).toFixed()},transfer:{int:n.txCostAmount.transfer,float:G(n.txCostAmount.transfer,$.getChainDecimalsByType(n.chainType)).toFixed()}},exchangeRate:s.exchangeRate,sourceNativeTokenPrice:s.sourceNativeTokenPrice}}function Ls(i){return i.sourceToken.chainSymbol!==i.destinationToken.chainSymbol}async function Dr(i,n,r,a){let s,o=new qi.PublicKey(n),c=new qi.PublicKey(r),A=await Ke(o,c),u=$t(a,n);Nr.setProvider(u);let m=await Nr.Spl.token(u).account.token.fetchNullable(A);if(m?.authority.equals(o))s=kt(A.toBase58(),"SOLANA",i);else{let l=await u.connection.getTokenAccountsByOwner(o,{mint:c});if(l.value.length===0&&!m)s=kt(A.toBase58(),"SOLANA",i);else if(l.value.length>0){let g=l.value[0];if(!g?.pubkey)throw new C("First token account or its public key is undefined");s=kt(g.pubkey.toBase58(),"SOLANA",i)}else throw new C("Associated account has wrong owner")}return s}var Oe=class{};var Kn=class extends Oe{constructor(r,a,s){super();this.web3=r;this.api=a;this.nodeRpcUrlsConfig=s}chainType="EVM";async send(r){let a=await this.buildRawTransactionSend(r);return this.sendRawTransaction(a)}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,g=this.getBridgeContract(s).methods.swap(a,c,u,A,m);return Promise.resolve({from:o,to:s,data:g.encodeABI()})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{amount:s,contractAddress:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,messenger:g,fee:S,gasFeePaymentMethod:h,extraGas:T}=a,I="0x"+Fr().toString("hex"),w,R,O=S;if(T&&(O=(0,Xs.Big)(O).plus(T).toFixed()),g===3){let U=await this.buildRawTransactionCctpSend(r,a,O);w=U.sendMethod,R=U.value}else{let U=this.getBridgeContract(o);h==="stablecoin"?(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,O),R="0"):(w=U.methods.swapAndBridge(A,s,m,u,l,I,g,0),R=O)}return Promise.resolve({from:c,to:o,value:R,data:w.encodeABI()})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,contractAddress:c,toChainId:A,toAccountAddress:u,gasFeePaymentMethod:m}=a,l=this.getCctpBridgeContract(c),g,S;if(r.destinationToken.chainType==="SOLANA"){let h=await Dr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));m==="stablecoin"?(g=l.methods.bridgeWithWalletAddress(o,h,u,A,s),S="0"):(g=l.methods.bridgeWithWalletAddress(o,h,u,A,0),S=s)}else m==="stablecoin"?(g=l.methods.bridge(o,u,A,s),S="0"):(g=l.methods.bridge(o,u,A,0),S=s);return{sendMethod:g,value:S}}async sendRawTransaction(r){let a=await this.web3.eth.estimateGas(r),s={maxPriorityFeePerGas:null,maxFeePerGas:null},{transactionHash:o}=await this.web3.eth.sendTransaction({...r,gas:a,...s});return{txId:o.toString()}}getBridgeContract(r){return new this.web3.eth.Contract(xs.abi,r)}getCctpBridgeContract(r){return new this.web3.eth.Contract(Os.abi,r)}};var Wr=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.buildRawTransactionApprove({...s,spender:o},a)}async send(n,r){return z(n.amount),q("amount",n.amount,n.sourceToken.decimals),Ls(n)?Ur(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSend(n):Ur(n.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionSwap(n)}};var te=require("@project-serum/anchor"),J=require("@solana/web3.js"),_e=require("big.js");var Hn={version:"0.1.0",name:"bridge",instructions:[{name:"initialize",accounts:[{name:"admin",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"initializePool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"token",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializePoolArgs"}}]},{name:"initDepositAccount",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"amountLp",type:"u64"}]},{name:"swapAndBridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"messenger",isMut:!1,isSigner:!1},{name:"messengerConfig",isMut:!0,isSigner:!1},{name:"sentMessageAccount",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swapAndBridgeWormhole",accounts:[{name:"user",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"wormholeMessenger",isMut:!1,isSigner:!1},{name:"wormholeMessengerConfig",isMut:!0,isSigner:!1},{name:"wormholeProgram",isMut:!1,isSigner:!1},{name:"bridge",isMut:!0,isSigner:!1},{name:"message",isMut:!0,isSigner:!0},{name:"sequence",isMut:!0,isSigner:!1},{name:"feeCollector",isMut:!0,isSigner:!1},{name:"messengerGasUsage",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"swap",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"sendMint",isMut:!1,isSigner:!1},{name:"receiveMint",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1},{name:"sendPool",isMut:!0,isSigner:!1},{name:"receivePool",isMut:!0,isSigner:!1},{name:"sendBridgeToken",isMut:!0,isSigner:!1},{name:"receiveBridgeToken",isMut:!0,isSigner:!1},{name:"sendUserToken",isMut:!0,isSigner:!1},{name:"receiveUserToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"receiveAmountMin",type:"u64"}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"receiveAndSwap",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"receiveAndSwapWormhole",accounts:[{name:"user",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"receivedMessageAccount",isMut:!1,isSigner:!1},{name:"unlock",isMut:!0,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"messengerProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"UnlockArgs"}}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"startBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"stopBridge",accounts:[{name:"stopAuthority",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"actionType",type:{defined:"ActionType"}}]},{name:"setRebalancer",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"rebalancer",isMut:!1,isSigner:!1}],args:[]},{name:"setStopAuthority",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"newAuthority",isMut:!1,isSigner:!1},{name:"config",isMut:!0,isSigner:!1}],args:[]},{name:"setAllbridgeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setWormholeMessengerProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"setPoolFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setBalanceRatioMin",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"balanceRatioMinBp",type:"u16"}]},{name:"setPoolAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"addOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!1,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"removeOtherBridgeToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"config",isMut:!0,isSigner:!1},{name:"otherBridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"chainId",type:"u8"},{name:"tokenAddress",type:{array:["u8",32]}}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"adjustTotalLpAmount",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"config",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userDeposit",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"chainBridge",type:{kind:"struct",fields:[{name:"address",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"config",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"rebalancer",type:"publicKey"},{name:"stopAuthority",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"canSwap",type:"bool"},{name:"canDeposit",type:"bool"},{name:"canWithdraw",type:"bool"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"sentTokenAddress",type:"publicKey"},{name:"amount",type:"u64"},{name:"vusdAmount",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"nonce",type:{array:["u8",32]}},{name:"messenger",type:{defined:"Messenger"}},{name:"slot",type:"u64"},{name:"fee",type:"u64"}]}},{name:"otherBridgeToken",type:{kind:"struct",fields:[]}},{name:"pool",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"a",type:"u64"},{name:"d",type:"u64"},{name:"tokenBalance",type:"u64"},{name:"vUsdBalance",type:"u64"},{name:"reserves",type:"u64"},{name:"decimals",type:"u8"},{name:"totalLpAmount",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"accRewardPerShareP",type:"u128"},{name:"adminFeeAmount",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"unlock",type:{kind:"struct",fields:[{name:"hash",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"fee",type:"u64"},{name:"vUsdAmount",type:"u64"},{name:"slot",type:"u64"}]}},{name:"userDeposit",type:{kind:"struct",fields:[{name:"userAddress",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"lpAmount",type:"u64"},{name:"rewardDebt",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainBridgeAddress",type:{array:["u8",32]}},{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"allbridgeMessengerProgramId",type:"publicKey"},{name:"wormholeMessengerProgramId",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"}]}},{name:"InitializePoolArgs",type:{kind:"struct",fields:[{name:"a",type:"u64"},{name:"feeShareBp",type:"u64"},{name:"adminFeeShareBp",type:"u64"},{name:"balanceRatioMinBp",type:"u16"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"vusdAmount",type:"u64"}]}},{name:"UnlockArgs",type:{kind:"struct",fields:[{name:"nonce",type:{array:["u8",32]}},{name:"amount",type:"u64"},{name:"recipient",type:"publicKey"},{name:"sourceChainId",type:"u8"},{name:"receiveToken",type:"publicKey"},{name:"messenger",type:{defined:"Messenger"}},{name:"hash",type:{array:["u8",32]}},{name:"receiveAmountMin",type:"u64"}]}},{name:"RewardError",type:{kind:"enum",variants:[{name:"FeeTooHigh"}]}},{name:"Messenger",type:{kind:"enum",variants:[{name:"None"},{name:"Allbridge"},{name:"Wormhole"}]}},{name:"ActionType",type:{kind:"enum",variants:[{name:"Deposit"},{name:"Withdraw"},{name:"Swap"}]}}],errors:[{code:6e3,name:"AccountAlreadyInitialized",msg:"This account has already been initialized"},{code:6001,name:"AdminAuthorityInvalid",msg:"This instruction requires admin authority"},{code:6002,name:"InvalidSignature",msg:"Provided signature has wrong signer or message"},{code:6003,name:"InvalidHash",msg:"Wrong unlock message hash"},{code:6004,name:"PoolOverflow",msg:"PoolInfo overflow"},{code:6005,name:"ReservesExhausted",msg:"Reserves exhausted"},{code:6006,name:"ZeroAmount",msg:"Zero amount"},{code:6007,name:"ZeroChanges",msg:"Zero changes"},{code:6008,name:"HighVusdAmount",msg:"vUSD amount is too high"},{code:6009,name:"BalanceRatioExceeded",msg:"Balance ratio exceeded"},{code:6010,name:"InsufficientReceivedAmount",msg:"Received insufficient amount"},{code:6011,name:"ForbiddenAction",msg:"ForbiddenAction"},{code:6012,name:"ValueTooHigh",msg:"Value is too high"}]};var Ys={version:"0.1.0",name:"cctp_bridge",instructions:[{name:"initialize",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"admin",isMut:!0,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"InitializeArgs"}}]},{name:"bridge",accounts:[{name:"user",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"messageSentEventData",isMut:!0,isSigner:!0},{name:"lock",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1},{name:"cctpMessenger",isMut:!1,isSigner:!1},{name:"messageTransmitterProgram",isMut:!1,isSigner:!1},{name:"messageTransmitterAccount",isMut:!0,isSigner:!1},{name:"tokenMessenger",isMut:!1,isSigner:!1},{name:"tokenMinter",isMut:!1,isSigner:!1},{name:"localToken",isMut:!0,isSigner:!1},{name:"remoteTokenMessengerKey",isMut:!1,isSigner:!1},{name:"authorityPda",isMut:!1,isSigner:!1},{name:"eventAuthority",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"gasPrice",isMut:!1,isSigner:!1},{name:"thisGasPrice",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!1,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"BridgeArgs"}}]},{name:"registerChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"args",type:{defined:"RegisterChainBridgeArgs"}}]},{name:"updateChainBridge",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"chainBridge",isMut:!0,isSigner:!1}],args:[{name:"args",type:{defined:"UpdateChainBridgeArgs"}}]},{name:"setAdminFeeShare",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"feeShareBp",type:"u64"}]},{name:"setGasOracleProgramId",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]},{name:"withdrawGasToken",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"recipient",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawAdminFee",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!1,isSigner:!1},{name:"bridgeToken",isMut:!0,isSigner:!1},{name:"adminToken",isMut:!0,isSigner:!1},{name:"bridgeAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setCctpTokenMessengerMinter",accounts:[{name:"admin",isMut:!1,isSigner:!0},{name:"mint",isMut:!1,isSigner:!1},{name:"cctpBridge",isMut:!0,isSigner:!1}],args:[{name:"newProgramId",type:"publicKey"}]}],accounts:[{name:"cctpBridge",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"},{name:"gasOracleProgramId",type:"publicKey"},{name:"authorityBumpSeed",type:"u8"},{name:"adminFeeShareBp",type:"u64"},{name:"adminFeeAmount",type:"u64"}]}},{name:"chainBridge",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"}]}},{name:"lock",type:{kind:"struct",fields:[{name:"sender",type:"publicKey"},{name:"amount",type:"u64"},{name:"adminFee",type:"u64"},{name:"relayerFee",type:"u64"},{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"slot",type:"u64"}]}}],types:[{name:"RegisterChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"UpdateChainBridgeArgs",type:{kind:"struct",fields:[{name:"chainId",type:"u8"},{name:"gasUsage",type:"u64"},{name:"domain",type:"u32"},{name:"mint",type:"publicKey"}]}},{name:"BridgeArgs",type:{kind:"struct",fields:[{name:"recipient",type:{array:["u8",32]}},{name:"destinationChainId",type:"u8"},{name:"receiveToken",type:{array:["u8",32]}},{name:"amount",type:"u64"}]}},{name:"InitializeArgs",type:{kind:"struct",fields:[{name:"gasOracleProgramId",type:"publicKey"},{name:"cctpTokenMessengerMinter",type:"publicKey"}]}}],errors:[{code:6e3,name:"ValueTooHigh",msg:"Value is too high"}]};var Ks=require("@project-serum/anchor"),zs=oe(require("big.js")),Qn=require("web3");async function Cn(i,n){return await Ks.Spl.token(n).account.token.fetch(i)}async function Hs(i,n,r){let a=await n.account.pool.fetch(r),s=a.decimals,o=(0,zs.default)(a.feeShareBp.toString()).div(1e4).toFixed(),c={aValue:a.a.toString(),dValue:a.d.toString(),totalLpAmount:a.totalLpAmount.toString(),tokenBalance:a.tokenBalance.toString(),vUsdBalance:a.vUsdBalance.toString(),accRewardPerShareP:a.accRewardPerShareP.toString()};return yt(i,{decimals:s,feeShare:o},c)}function Qs(i){let n=i.amount,r="0x"+i.recipient.toString("hex"),a=i.sourceChainId,s=i.destinationChainId,o="0x"+i.receiveToken.toString("hex"),c="0x"+i.nonce.toString("hex"),A=1,u="0x"+i.chainBridge.toString("hex"),m=Qn.Web3.utils.encodePacked({t:"uint256",v:n},{t:"bytes32",v:r},{t:"uint256",v:a},{t:"bytes32",v:o},{t:"uint256",v:c},{t:"uint8",v:A});if(!m)throw new C("message cannot be undefined");let l=Qn.Web3.utils.keccak256(Buffer.from(m.replace("0x",""),"hex")),g=Buffer.from(l.replace("0x",""),"hex");g[0]=a,g[1]=s;let S=Qn.Web3.utils.encodePacked({t:"bytes32",v:"0x"+g.toString("hex")},{t:"bytes32",v:u});if(!S)throw new qt("messageWithSigner cannot be undefined");let h=Qn.Web3.utils.keccak256(Buffer.from(S.replace("0x",""),"hex")),T=Buffer.from(h.replace("0x",""),"hex");return T[0]=g[0],T[1]=g[1],T}var Fe=require("@solana/web3.js"),qs=require("big.js");var ea=require("@solana/web3.js");async function nn(i,n){return await Promise.all(i.message.addressTableLookups.map(async r=>new ea.AddressLookupTableAccount({key:r.accountKey,state:ea.AddressLookupTableAccount.deserialize(await n.getAccountInfo(r.accountKey).then(a=>{if(!a)throw new C("Cannot get AccountInfo");return a.data}))})))}var jr="AUTO";async function In(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=(await a.simulateTransaction(i)).value.unitsConsumed;await to(i.instructions,s,n,a)}async function eo(i,n,r){let a=new Fe.Connection(r,"confirmed"),s=await nn(i,a),o=Fe.TransactionMessage.decompile(i.message,{addressLookupTableAccounts:s});if(i.serialize().length>1232)throw new Zn;await to(o.instructions,769230,n,a),i.message=o.compileToV0Message(s)}async function to(i,n,r,a){if(n>0){let s=rA(n,i);if(r?.solana){let o=r.solana;if(o===jr)await ta(i,a);else if("pricePerUnitInMicroLamports"in o)await ta(i,a,o.pricePerUnitInMicroLamports);else{let c=(0,qs.Big)(o.extraFeeInLamports).div(s).mul(Jn(6)).toFixed(0);await ta(i,a,c)}}}}function rA(i,n){let r=n.findIndex(o=>o.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(o)==="SetComputeUnitLimit"),a=Number((i*1.3).toFixed(0)),s=Fe.ComputeBudgetProgram.setComputeUnitLimit({units:a});return r>=0?n[r]=s:n.push(s),a.toString()}async function ta(i,n,r){let a=i.findIndex(c=>c.programId.equals(Fe.ComputeBudgetProgram.programId)&&Fe.ComputeBudgetInstruction.decodeInstructionType(c)==="SetComputeUnitPrice"),s=BigInt(r||await iA(n)),o=Fe.ComputeBudgetProgram.setComputeUnitPrice({microLamports:s});return a>=0?i[a]=o:i.push(o),s.toString()}async function iA(i){let n=await i.getRecentPrioritizationFees(),r=0;for(let a of n)r+=a.prioritizationFee;return(r/n.length).toFixed(0)}var no=require("@solana/spl-token"),rn=require("@solana/web3.js"),Bn=oe(require("axios"));var Er=class{connection;jupiterUrl;maxAccounts;constructor(n,r,a){this.connection=new rn.Connection(n),this.jupiterUrl=r.replace(/\/$/,""),this.maxAccounts=a}async getJupiterSwapTx(n,r,a,s){let o;try{let g=s?"ExactOut":"ExactIn",S=`${this.jupiterUrl}/quote?inputMint=${r}&outputMint=${no.NATIVE_MINT.toString()}&amount=${a}&swapMode=${g}&slippageBps=100&onlyDirectRoutes=true`;this.maxAccounts&&(S+=`&maxAccounts=${this.maxAccounts}`),o=await Bn.default.get(S)}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get route")}let c;if(s&&o?.data?.inAmount)c=o.data.inAmount;else if(s)throw new me("Cannot get inAmount");let A;try{A=await Bn.default.post(`${this.jupiterUrl}/swap`,{quoteResponse:o.data,userPublicKey:n,wrapAndUnwrapSol:!0})}catch(g){throw g instanceof Bn.AxiosError&&g.response&&g.response.data&&g.response.data.error?new me(g.response.data.error):new me("Cannot get swap transaction")}let u;if(A?.data?.swapTransaction)u=A.data.swapTransaction;else throw new me("Cannot get swap transaction");let m=Buffer.from(u,"base64"),l=rn.VersionedTransaction.deserialize(m);return s?{tx:l,amountIn:c}:{tx:l}}async amendJupiterWithSdkTx(n,r){try{let a=await nn(n,this.connection),s=await nn(r,this.connection),o=rn.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:a}),c=rn.TransactionMessage.decompile(r.message,{addressLookupTableAccounts:s});if(c.instructions.shift(),o.instructions.push(...c.instructions),a.push(...s),n.message=o.compileToV0Message(a),r.message.header.numRequiredSignatures===2&&n.signatures.length===1){let A=r.signatures[0];if(!A)throw new C("Signature is undefined");n.signatures.push(A)}return n}catch(a){throw a instanceof Error&&a.message?new me(`Some error occurred during creation final swap and bridge transaction. ${a.message}`):new me("Some error occurred during creation final swap and bridge transaction")}}};var na=1e6,ro=1.1,Gr=class extends Oe{constructor(r,a,s){super();this.solanaRpcUrl=r;this.params=a;this.api=s;this.jupiterService=new Er(r,a.jupiterUrl,a.jupiterMaxAccounts)}chainType="SOLANA";jupiterService;async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildSwapTransaction(a,r.sourceToken.poolAddress,r.destinationToken.poolAddress,r.txFeeParams)}async buildSwapTransaction(r,a,s,o){let{fromAccountAddress:c,amount:A,contractAddress:u,fromTokenAddress:m,toTokenAddress:l,toAccountAddress:g,minimumReceiveAmount:S}=r,h=c,T=u,I=m,w=l,R=s,O=g,U=new J.PublicKey(h),Ae=$t(this.solanaRpcUrl,U.toString()),X=new te.Program(Hn,T,Ae),V=await Pn(X.programId),Re=await Vt(X.programId),se=new J.PublicKey(I),mt=await wn(se,X.programId),lt=new J.PublicKey(a),vt=await Ke(U,se),Je=new J.PublicKey(O),we=new J.PublicKey(w),Ee=await wn(we,X.programId),Le=new J.PublicKey(R),ke=await Ke(Je,we),dt=[te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na})];try{await Cn(ke,Ae)}catch{let Mc=await te.Spl.associatedToken(Ae).methods.create().accounts({mint:we,owner:Je,associatedAccount:ke}).instruction();dt.push(Mc)}let pt=await X.methods.swap(new te.BN(A),new te.BN(S||0)).accounts({payer:U,config:Re,bridgeAuthority:V,user:U,sendBridgeToken:mt,sendMint:se,sendPool:lt,sendUserToken:vt,receiveBridgeToken:Ee,receiveMint:we,receivePool:Le,receiveUserToken:ke}).preInstructions(dt).transaction(),Xe=Ae.connection;return pt.recentBlockhash=(await Xe.getLatestBlockhash()).blockhash,pt.feePayer=U,await In(pt,o,this.solanaRpcUrl),await this.convertToVersionedTransaction(pt,Xe)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),s=this.addPoolAddress(r,a),o=s.gasFeePaymentMethod=="stablecoin",c;if(o)try{let{tx:m,solTxSendUpdatedParams:l}=await this.processJup(s,r,!0);c=m,s={...s,...l}}catch{try{let{tx:l,solTxSendUpdatedParams:g}=await this.processJup(s,r,!1);c=l,s={...s,...g}}catch(l){throw l instanceof ae?l:l instanceof Error&&l.message?new me(`Some error occurred during creation Jupiter swap transaction. ${l.message}`):new me("Some error occurred during creation Jupiter swap transaction")}}let A,u;switch(a.messenger){case 1:{let m=await this.prepareSwapAndBridgeData(s);A=await this.buildSwapAndBridgeAllbridgeTransaction(m);break}case 2:{let m=await this.prepareSwapAndBridgeData(s),{transaction:l,messageAccount:g}=await this.buildSwapAndBridgeWormholeTransaction(m);A=l,u=g;break}case 3:{let m=await this.prepareSwapAndBridgeCctpData(s),{transaction:l,messageSentEventDataKeypair:g}=await this.buildSwapAndBridgeCctpTransaction(r.destinationToken.chainSymbol,m);A=l,u=g;break}}if(o){if(!c)throw new me("Swap tx is absent");A=await this.jupiterService.amendJupiterWithSdkTx(c,A)}return await eo(A,r.txFeeParams,this.solanaRpcUrl),u&&A.sign([u]),A}async processJup(r,a,s){let{fee:o,extraGas:c,gasFeePaymentMethod:A}=await this.convertStableCoinFeeAndExtraGasToNativeCurrency(a.sourceToken.decimals,r),u=s?(0,_e.Big)(o):(0,_e.Big)(r.fee);c&&(u=u.plus(c)),s||(u=u.mul(ro));let{tx:m,amountIn:l}=await this.jupiterService.getJupiterSwapTx(a.fromAccountAddress,a.sourceToken.tokenAddress,u.toFixed(0),s),g;if(s){if(!l)throw new me("Cannot get inAmount");g=(0,_e.Big)(r.amount).minus((0,_e.Big)(l).mul(ro)).toFixed(0)}else g=(0,_e.Big)(r.amount).minus(u).toFixed(0);if((0,_e.Big)(g).lte(0))throw new Qt(`Amount not enough to pay fee, ${G((0,_e.Big)(g).minus(1).neg(),a.sourceToken.decimals).toFixed()} stables is missing`);return{tx:m,solTxSendUpdatedParams:{amount:g,fee:o,extraGas:c,gasFeePaymentMethod:A}}}addPoolAddress(r,a){return{...a,poolAddress:r.sourceToken.poolAddress}}async convertStableCoinFeeAndExtraGasToNativeCurrency(r,a){if(a.gasFeePaymentMethod=="stablecoin"){let s=(await this.api.getReceiveTransactionCost({sourceChainId:a.fromChainId,destinationChainId:a.toChainId,messenger:a.messenger})).sourceNativeTokenPrice,o=(0,_e.Big)(a.fee).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0),c;return a.extraGas&&(c=(0,_e.Big)(a.extraGas).div(s).mul((0,_e.Big)(10).pow($.getChainDecimalsByType("SOLANA")-r)).toFixed(0)),{fee:o,extraGas:c,gasFeePaymentMethod:"native"}}return{fee:a.fee,extraGas:a.extraGas,gasFeePaymentMethod:"native"}}getExtraGasInstruction(r,a,s){return te.web3.SystemProgram.transfer({fromPubkey:a,toPubkey:s,lamports:+r})}async prepareSwapAndBridgeData(r){let{amount:a,contractAddress:s,fromChainId:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,toTokenAddress:l,poolAddress:g,extraGas:S}=r,h=A,T=c,I=u,w=l,R=m,O=s,U=o,Ae=$t(this.solanaRpcUrl,T),X=new te.Program(Hn,O,Ae),V=Array.from(Fr()),Re=new J.PublicKey(g),se=await Hs(a,X,Re),mt=await Fs(V,X.programId),lt=await Pn(X.programId),vt=await Ke(new J.PublicKey(T),new J.PublicKey(h)),Je=await wn(new J.PublicKey(h),X.programId),we=await Li(I,X.programId),Ee=await Ds(I,Buffer.from(w),X.programId),Le=await Vt(X.programId),ke=await X.account.config.fetch(Le),dt=await Xn(I,ke.gasOracleProgramId),pt=await Xn(U,ke.gasOracleProgramId),Xe=Qs({amount:se,recipient:Buffer.from(R),nonce:Buffer.from(V),receiveToken:Buffer.from(w),destinationChainId:I,sourceChainId:U,chainBridge:(await Pn(X.programId)).toBuffer()}),Z={};return Z.bridge=X,Z.amount=new te.BN(a),Z.vusdAmount=new te.BN(se),Z.nonce=V,Z.recipient=Array.from(R),Z.receiveToken=Array.from(w),Z.poolAccount=Re,Z.lockAccount=mt,Z.bridgeAuthority=lt,Z.userToken=vt,Z.bridgeTokenAccount=Je,Z.chainBridgeAccount=we,Z.otherBridgeTokenAccount=Ee,Z.userAccount=new J.PublicKey(T),Z.destinationChainId=I,Z.mint=new J.PublicKey(h),Z.config=Le,Z.configAccountInfo=ke,Z.gasPrice=dt,Z.thisGasPrice=pt,Z.message=Xe,S&&(Z.extraGasInstruction=this.getExtraGasInstruction(S,Z.userAccount,Le)),Z}async buildSwapAndBridgeAllbridgeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:h,otherBridgeTokenAccount:T,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=U.allbridgeMessengerProgramId,mt=await Xi(w,se),lt=await Vt(se),vt=await Ws(V,se),Je=[];Re&&Je.push(Re);let we=await a.methods.swapAndBridge({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts({mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:h,messenger:se,messengerGasUsage:mt,messengerConfig:lt,sentMessageAccount:vt,otherBridgeToken:T}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na})]).postInstructions(Je).transaction(),Ee=$t(this.solanaRpcUrl,I.toString()).connection;return we.recentBlockhash=(await Ee.getLatestBlockhash()).blockhash,we.feePayer=I,await this.convertToVersionedTransaction(we,Ee)}async convertToVersionedTransaction(r,a){let s=await a.getAddressLookupTable(new J.PublicKey(this.params.solanaLookUpTable)).then(c=>c.value);if(!s)throw new C("Cannot find allbridgeLookupTableAccount");let o=new te.web3.TransactionMessage({payerKey:r.feePayer,recentBlockhash:r.recentBlockhash,instructions:r.instructions}).compileToV0Message([s]);return new te.web3.VersionedTransaction(o)}async buildSwapAndBridgeWormholeTransaction(r){let{bridge:a,vusdAmount:s,nonce:o,recipient:c,receiveToken:A,poolAccount:u,lockAccount:m,bridgeAuthority:l,userToken:g,bridgeTokenAccount:S,chainBridgeAccount:h,otherBridgeTokenAccount:T,userAccount:I,destinationChainId:w,mint:R,config:O,configAccountInfo:U,gasPrice:Ae,thisGasPrice:X,message:V,extraGasInstruction:Re}=r,se=this.params.wormholeMessengerProgramId,[mt]=J.PublicKey.findProgramAddressSync([Buffer.from("Bridge")],new J.PublicKey(se)),[lt]=J.PublicKey.findProgramAddressSync([Buffer.from("fee_collector")],new J.PublicKey(se)),[vt]=J.PublicKey.findProgramAddressSync([Buffer.from("Sequence"),l.toBuffer()],new J.PublicKey(se)),Je=await Xi(w,U.wormholeMessengerProgramId),we=await Vt(U.wormholeMessengerProgramId),Ee=J.Keypair.generate(),Le=$t(this.solanaRpcUrl,I.toString()),ke=await Le.connection.getAccountInfo(mt);if(ke==null)throw new C("Cannot fetch wormhole bridge account info");let dt=new te.BN(ke.data.slice(16,24),"le").toString(),pt=J.SystemProgram.transfer({fromPubkey:I,toPubkey:lt,lamports:+dt}),Xe=[];Re&&Xe.push(Re);let Z={mint:R,user:I,config:O,lock:m,pool:u,gasPrice:Ae,thisGasPrice:X,bridgeAuthority:l,userToken:g,bridgeToken:S,chainBridge:h,otherBridgeToken:T,messengerGasUsage:Je,wormholeProgram:se,bridge:mt,message:Ee.publicKey,wormholeMessenger:U.wormholeMessengerProgramId,sequence:vt,feeCollector:lt,wormholeMessengerConfig:we,clock:te.web3.SYSVAR_CLOCK_PUBKEY},Sr=await a.methods.swapAndBridgeWormhole({vusdAmount:s,nonce:o,destinationChainId:w,recipient:c,receiveToken:A}).accounts(Z).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:na}),pt]).postInstructions(Xe).signers([Ee]).transaction();return Sr.recentBlockhash=(await Le.connection.getLatestBlockhash()).blockhash,Sr.feePayer=I,{transaction:await this.convertToVersionedTransaction(Sr,Le.connection),messageAccount:Ee}}async prepareSwapAndBridgeCctpData(r){let{contractAddress:a,amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,extraGas:l}=r,g=a;if(!g)throw new Ge("Such route does not support CCTP protocol");let S=4,h=o,T=m,I=u,w=$t(this.solanaRpcUrl,h),R=new te.Program(Ys,g,w),O=new J.PublicKey(c),U=await Us(O,R.programId),Ae=new J.PublicKey(h),X=await R.account.cctpBridge.fetch(U),V={};return V.cctpBridge=R,V.cctpBridgeAccount=U,V.cctpAddressAccount=new J.PublicKey(g),V.amount=new te.BN(s),V.recipient=Array.from(I),V.receiveToken=Array.from(T),V.userToken=await Ke(Ae,O),V.bridgeAuthority=await Ns(U,R.programId),V.bridgeTokenAccount=await js(O,R.programId),V.chainBridgeAccount=await Li(A,R.programId),V.userAccount=Ae,V.destinationChainId=A,V.mint=O,V.gasPrice=await Xn(A,X.gasOracleProgramId),V.thisGasPrice=await Xn(S,X.gasOracleProgramId),V.provider=w,l&&(V.extraGasInstruction=this.getExtraGasInstruction(l,V.userAccount,U)),V}async buildSwapAndBridgeCctpTransaction(r,a){let{cctpBridge:s,cctpBridgeAccount:o,amount:c,recipient:A,receiveToken:u,bridgeAuthority:m,userToken:l,bridgeTokenAccount:g,chainBridgeAccount:S,userAccount:h,destinationChainId:T,mint:I,gasPrice:w,thisGasPrice:R,extraGasInstruction:O,provider:U}=a,Ae=this.params.cctpParams.cctpDomains[r],X=this.params.cctpParams.cctpTransmitterProgramId,V=this.params.cctpParams.cctpTokenMessengerMinter;if(Ae==null||!X||!V)throw new C("CCTP is not configured");let Re=new J.PublicKey(X),se=new J.PublicKey(V),{messageTransmitterAccount:mt,tokenMessenger:lt,tokenMessengerEventAuthority:vt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le}=Gs(Ae,I,Re,se),ke=[];O&&ke.push(O);let dt=J.Keypair.generate(),pt=Es(s.programId,dt.publicKey),Xe=await s.methods.bridge({amount:c,destinationChainId:T,recipient:A,receiveToken:u}).accounts({mint:I,user:h,cctpBridge:o,messageSentEventData:dt.publicKey,lock:pt,cctpMessenger:se,messageTransmitterProgram:Re,messageTransmitterAccount:mt,tokenMessenger:lt,tokenMinter:Je,localToken:we,remoteTokenMessengerKey:Ee,authorityPda:Le,eventAuthority:vt,bridgeToken:g,gasPrice:w,thisGasPrice:R,chainBridge:S,userToken:l,bridgeAuthority:m}).preInstructions([te.web3.ComputeBudgetProgram.setComputeUnitLimit({units:2e6})]).postInstructions(ke).transaction(),Z=U.connection;return Xe.recentBlockhash=(await Z.getLatestBlockhash()).blockhash,Xe.feePayer=h,{transaction:await this.convertToVersionedTransaction(Xe,Z),messageSentEventDataKeypair:dt}}send(r){throw new ce}};var _r=require("@stellar/stellar-sdk"),io=require("big.js");var t=require("@stellar/stellar-sdk"),aA=t.contract.Spec,sA=t.contract.Client;var qn=class extends sA{constructor(r){super(new aA(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABAAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAApnYXNfb3JhY2xlAAAAAAATAAAAAAAAAAxuYXRpdmVfdG9rZW4AAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9hbmRfYnJpZGdlAAAAAAkAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACXJlY2lwaWVudAAAAAAAA+4AAAAgAAAAAAAAABRkZXN0aW5hdGlvbl9jaGFpbl9pZAAAAAQAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAFbm9uY2UAAAAAAAAMAAAAAAAAAApnYXNfYW1vdW50AAAAAAAKAAAAAAAAABBmZWVfdG9rZW5fYW1vdW50AAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOcmVjZWl2ZV90b2tlbnMAAAAAAAgAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAA9zb3VyY2VfY2hhaW5faWQAAAAABAAAAAAAAAANcmVjZWl2ZV90b2tlbgAAAAAAA+4AAAAgAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAAAAAAJZXh0cmFfZ2FzAAAAAAAD6AAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAEc3dhcAAAAAYAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAA+4AAAAgAAAAAAAAAA1yZWNlaXZlX3Rva2VuAAAAAAAD7gAAACAAAAAAAAAACXJlY2lwaWVudAAAAAAAABMAAAAAAAAAEnJlY2VpdmVfYW1vdW50X21pbgAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAJc3RvcF9zd2FwAAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc3RhcnRfc3dhcAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X2dhc19vcmFjbGUAAAAAAAEAAAAAAAAAC25ld19hZGRyZXNzAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAOc2V0X3JlYmFsYW5jZXIAAAAAAAEAAAAAAAAACnJlYmFsYW5jZXIAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X21lc3NlbmdlcgAAAAAAAAEAAAAAAAAACW1lc3NlbmdlcgAAAAAAABMAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc2V0X2dhc191c2FnZQAAAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAJZ2FzX3VzYWdlAAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAPcmVnaXN0ZXJfYnJpZGdlAAAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAAOYnJpZGdlX2FkZHJlc3MAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAQYWRkX2JyaWRnZV90b2tlbgAAAAIAAAAAAAAACGNoYWluX2lkAAAABAAAAAAAAAANdG9rZW5fYWRkcmVzcwAAAAAAA+4AAAAgAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATcmVtb3ZlX2JyaWRnZV90b2tlbgAAAAACAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAIYWRkX3Bvb2wAAAACAAAAAAAAAARwb29sAAAAEwAAAAAAAAAFdG9rZW4AAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAATd2l0aGRyYXdfZ2FzX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAfd2l0aGRyYXdfYnJpZGdpbmdfZmVlX2luX3Rva2VucwAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAVaGFzX3Byb2Nlc3NlZF9tZXNzYWdlAAAAAAAAAQAAAAAAAAAHbWVzc2FnZQAAAAPuAAAAIAAAAAEAAAPpAAAAAQAAAAM=","AAAAAAAAAAAAAAAUaGFzX3JlY2VpdmVkX21lc3NhZ2UAAAABAAAAAAAAAAdtZXNzYWdlAAAAA+4AAAAgAAAAAQAAA+kAAAABAAAAAw==","AAAAAAAAAAAAAAAQZ2V0X3Bvb2xfYWRkcmVzcwAAAAEAAAAAAAAADXRva2VuX2FkZHJlc3MAAAAAAAPuAAAAIAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAKZ2V0X2NvbmZpZwAAAAAAAAAAAAEAAAPpAAAH0AAAAAZCcmlkZ2UAAAAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAUZ2V0X3RyYW5zYWN0aW9uX2Nvc3QAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAANZ2V0X2dhc191c2FnZQAAAAAAAAEAAAAAAAAACGNoYWluX2lkAAAABAAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAOZ2V0X2dhc19vcmFjbGUAAAAAAAAAAAABAAAD6QAAABMAAAAD","AAAAAAAAAAAAAAASZ2V0X2Fub3RoZXJfYnJpZGdlAAAAAAABAAAAAAAAAAhjaGFpbl9pZAAAAAQAAAABAAAD6QAAB9AAAAANQW5vdGhlckJyaWRnZQAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAB1N3YXBwZWQAAAAABgAAAAAAAAAOcmVjZWl2ZV9hbW91bnQAAAAAAAoAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAAEwAAAAAAAAALc2VuZF9hbW91bnQAAAAACgAAAAAAAAAKc2VuZF90b2tlbgAAAAAD7gAAACAAAAAAAAAABnNlbmRlcgAAAAAAEw==","AAAAAQAAAAAAAAAAAAAAClRva2Vuc1NlbnQAAAAAAAUAAAAAAAAABmFtb3VudAAAAAAACgAAAAAAAAAUZGVzdGluYXRpb25fY2hhaW5faWQAAAAEAAAAAAAAAAVub25jZQAAAAAAAAwAAAAAAAAADXJlY2VpdmVfdG9rZW4AAAAAAAPuAAAAIAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAADlRva2Vuc1JlY2VpdmVkAAAAAAAEAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAB21lc3NhZ2UAAAAD7gAAACAAAAAAAAAABW5vbmNlAAAAAAAADAAAAAAAAAAJcmVjaXBpZW50AAAAAAAD7gAAACA=","AAAAAQAAAAAAAAAAAAAAClJlY2VpdmVGZWUAAAAAAAMAAAAAAAAAF2JyaWRnZV90cmFuc2FjdGlvbl9jb3N0AAAAAAoAAAAAAAAACWV4dHJhX2dhcwAAAAAAAAoAAAAAAAAAGG1lc3NhZ2VfdHJhbnNhY3Rpb25fY29zdAAAAAo=","AAAAAQAAAAAAAAAAAAAAFUJyaWRnaW5nRmVlRnJvbVRva2VucwAAAAAAAAIAAAAAAAAAEGZlZV90b2tlbl9hbW91bnQAAAAKAAAAAAAAAANnYXMAAAAACg==","AAAAAQAAAAAAAAAAAAAADUFub3RoZXJCcmlkZ2UAAAAAAAACAAAAAAAAAAdhZGRyZXNzAAAAA+4AAAAgAAAAAAAAAAZ0b2tlbnMAAAAAA+wAAAPuAAAAIAAAAAE=","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAABgAAAGBwcmVjb21wdXRlZCB2YWx1ZXMgb2YgdGhlIHNjYWxpbmcgZmFjdG9yIHJlcXVpcmVkIGZvciBwYXlpbmcgdGhlIGJyaWRnaW5nIGZlZSB3aXRoIHN0YWJsZSB0b2tlbnMAAAAeYnJpZGdpbmdfZmVlX2NvbnZlcnNpb25fZmFjdG9yAAAAAAPsAAAAEwAAAAoAAAAAAAAACGNhbl9zd2FwAAAAAQAAAGxwcmVjb21wdXRlZCB2YWx1ZXMgdG8gZGl2aWRlIGJ5IHRvIGNoYW5nZSB0aGUgcHJlY2lzaW9uIGZyb20gdGhlIEdhcyBPcmFjbGUgcHJlY2lzaW9uIHRvIHRoZSB0b2tlbiBwcmVjaXNpb24AAAAWZnJvbV9nYXNfb3JhY2xlX2ZhY3RvcgAAAAAD7AAAABMAAAAKAAAAAAAAAAltZXNzZW5nZXIAAAAAAAATAAAAAAAAAAVwb29scwAAAAAAA+wAAAPuAAAAIAAAABMAAAAAAAAACnJlYmFsYW5jZXIAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAwAAAAEAAAAAAAAAC090aGVyQnJpZGdlAAAAAAEAAAAEAAAAAQAAAAAAAAALU2VudE1lc3NhZ2UAAAAAAQAAA+4AAAAgAAAAAQAAAAAAAAAPUmVjZWl2ZWRNZXNzYWdlAAAAAAEAAAPuAAAAIA==","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,swap_and_bridge:this.txFromJSON,receive_tokens:this.txFromJSON,swap:this.txFromJSON,stop_swap:this.txFromJSON,start_swap:this.txFromJSON,set_gas_oracle:this.txFromJSON,set_stop_authority:this.txFromJSON,set_rebalancer:this.txFromJSON,set_messenger:this.txFromJSON,set_gas_usage:this.txFromJSON,register_bridge:this.txFromJSON,add_bridge_token:this.txFromJSON,remove_bridge_token:this.txFromJSON,add_pool:this.txFromJSON,withdraw_gas_tokens:this.txFromJSON,withdraw_bridging_fee_in_tokens:this.txFromJSON,has_processed_message:this.txFromJSON,has_received_message:this.txFromJSON,get_pool_address:this.txFromJSON,get_config:this.txFromJSON,get_stop_authority:this.txFromJSON,get_transaction_cost:this.txFromJSON,get_gas_usage:this.txFromJSON,get_admin:this.txFromJSON,get_gas_oracle:this.txFromJSON,get_another_bridge:this.txFromJSON,set_admin:this.txFromJSON,upgrade:this.txFromJSON}};var Vr=class extends Oe{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return await this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,io.Big)(h).plus(S).toFixed());let T=this.getContract(qn,s,o),I;return g==="stablecoin"?I=await T.swap_and_bridge({sender:o,token:_r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(0),fee_token_amount:BigInt(h)}):I=await T.swap_and_bridge({sender:o,token:_r.Address.contract(Buffer.from(c)).toString(),amount:BigInt(a),recipient:Buffer.from(u),destination_chain_id:+A,receive_token:Buffer.from(m),nonce:Tt(),gas_amount:BigInt(h),fee_token_amount:BigInt(0)}),I.toXDR()}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r;return(await this.getContract(qn,s,o).swap({sender:o,amount:BigInt(a),token:_r.Address.contract(Buffer.from(c)).toBuffer(),receive_token:Buffer.from(u),recipient:A,receive_amount_min:BigInt(m)})).toXDR()}send(r){throw new ce}getContract(r,a,s){let o={publicKey:s,contractId:a,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new r(o)}};var ao="1.18.0",so="1.40.0";var oA={"-32700":"ParseError","-32701":"OversizedRequest","-32702":"OversizedResponse","-32600":"InvalidRequest","-32601":"MethodNotFound","-32602":"InvalidParams","-32603":"InternalError","-32604":"ServerBusy","-32000":"CallExecutionFailed","-32001":"UnknownError","-32003":"SubscriptionClosed","-32004":"SubscriptionClosedWithError","-32005":"BatchesNotSupported","-32006":"TooManySubscriptions","-32050":"TransientError","-32002":"TransactionExecutionClientError"},$r=class extends Error{},vn=class extends $r{constructor(n,r){super(n),this.code=r,this.type=oA[r]??"ServerError"}},Zr=class extends $r{constructor(n,r,a){super(n),this.status=r,this.statusText=a}};var oo=i=>{throw TypeError(i)},ia=(i,n,r)=>n.has(i)||oo("Cannot "+r),ne=(i,n,r)=>(ia(i,n,"read from private field"),r?r.call(i):n.get(i)),an=(i,n,r)=>n.has(i)?oo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),Rn=(i,n,r,a)=>(ia(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),co=(i,n,r)=>(ia(i,n,"access private method"),r),cA=(i,n,r,a)=>({set _(s){Rn(i,n,s,r)},get _(){return ne(i,n,a)}}),sn,er,Mt,on,tr,kn,Jr,Ao,uo;function AA(i){let n=new URL(i);return n.protocol=n.protocol.replace("http","ws"),n.toString()}var uA={WebSocketConstructor:typeof WebSocket<"u"?WebSocket:void 0,callTimeout:3e4,reconnectTimeout:3e3,maxReconnects:5},Lr=class{constructor(n,r={}){if(an(this,Jr),an(this,sn,0),an(this,er,0),an(this,Mt,null),an(this,on,null),an(this,tr,new Set),an(this,kn,new Map),this.endpoint=n,this.options={...uA,...r},!this.options.WebSocketConstructor)throw new Error("Missing WebSocket constructor");this.endpoint.startsWith("http")&&(this.endpoint=AA(this.endpoint))}async makeRequest(n,r){let a=await co(this,Jr,Ao).call(this);return new Promise((s,o)=>{Rn(this,sn,ne(this,sn)+1),ne(this,kn).set(ne(this,sn),{resolve:s,reject:o,timeout:setTimeout(()=>{ne(this,kn).delete(ne(this,sn)),o(new Error(`Request timeout: ${n}`))},this.options.callTimeout)}),a.send(JSON.stringify({jsonrpc:"2.0",id:ne(this,sn),method:n,params:r}))}).then(({error:s,result:o})=>{if(s)throw new vn(s.message,s.code);return o})}async subscribe(n){let r=new ra(n);return ne(this,tr).add(r),await r.subscribe(this),()=>r.unsubscribe(this)}};sn=new WeakMap;er=new WeakMap;Mt=new WeakMap;on=new WeakMap;tr=new WeakMap;kn=new WeakMap;Jr=new WeakSet;Ao=function(){return ne(this,on)?ne(this,on):(Rn(this,on,new Promise(i=>{ne(this,Mt)?.close(),Rn(this,Mt,new this.options.WebSocketConstructor(this.endpoint)),ne(this,Mt).addEventListener("open",()=>{Rn(this,er,0),i(ne(this,Mt))}),ne(this,Mt).addEventListener("close",()=>{cA(this,er)._++,ne(this,er)<=this.options.maxReconnects&&setTimeout(()=>{co(this,Jr,uo).call(this)},this.options.reconnectTimeout)}),ne(this,Mt).addEventListener("message",({data:n})=>{let r;try{r=JSON.parse(n)}catch(a){console.error(new Error(`Failed to parse RPC message: ${n}`,{cause:a}));return}if("id"in r&&r.id!=null&&ne(this,kn).has(r.id)){let{resolve:a,timeout:s}=ne(this,kn).get(r.id);clearTimeout(s),a(r)}else if("params"in r){let{params:a}=r;ne(this,tr).forEach(s=>{s.subscriptionId===a.subscription&&a.subscription===s.subscriptionId&&s.onMessage(a.result)})}})})),ne(this,on))};uo=async function(){return ne(this,Mt)?.close(),Rn(this,on,null),Promise.allSettled([...ne(this,tr)].map(i=>i.subscribe(this)))};var ra=class{constructor(n){this.subscriptionId=null,this.subscribed=!1,this.input=n}onMessage(n){this.subscribed&&this.input.onMessage(n)}async unsubscribe(n){let{subscriptionId:r}=this;return this.subscribed=!1,r==null?!1:(this.subscriptionId=null,n.makeRequest(this.input.unsubscribe,[r]))}async subscribe(n){this.subscriptionId=null,this.subscribed=!0;let r=await n.makeRequest(this.input.method,this.input.params);this.subscribed&&(this.subscriptionId=r)}};var mo=i=>{throw TypeError(i)},oa=(i,n,r)=>n.has(i)||mo("Cannot "+r),Ve=(i,n,r)=>(oa(i,n,"read from private field"),r?r.call(i):n.get(i)),Xr=(i,n,r)=>n.has(i)?mo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),aa=(i,n,r,a)=>(oa(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),mA=(i,n,r)=>(oa(i,n,"access private method"),r),nr,Qe,rr,sa,lo,Yr=class{constructor(n){Xr(this,sa),Xr(this,nr,0),Xr(this,Qe),Xr(this,rr),aa(this,Qe,n)}fetch(n,r){let a=Ve(this,Qe).fetch??fetch;if(!a)throw new Error("The current environment does not support fetch, you can provide a fetch implementation in the options for SuiHTTPTransport.");return a(n,r)}async request(n){aa(this,nr,Ve(this,nr)+1);let r=await this.fetch(Ve(this,Qe).rpc?.url??Ve(this,Qe).url,{method:"POST",headers:{"Content-Type":"application/json","Client-Sdk-Type":"typescript","Client-Sdk-Version":ao,"Client-Target-Api-Version":so,"Client-Request-Method":n.method,...Ve(this,Qe).rpc?.headers},body:JSON.stringify({jsonrpc:"2.0",id:Ve(this,nr),method:n.method,params:n.params})});if(!r.ok)throw new Zr(`Unexpected status code: ${r.status}`,r.status,r.statusText);let a=await r.json();if("error"in a&&a.error!=null)throw new vn(a.error.message,a.error.code);return a.result}async subscribe(n){let r=await mA(this,sa,lo).call(this).subscribe(n);return async()=>!!await r()}};nr=new WeakMap;Qe=new WeakMap;rr=new WeakMap;sa=new WeakSet;lo=function(){if(!Ve(this,rr)){let i=Ve(this,Qe).WebSocketConstructor??WebSocket;if(!i)throw new Error("The current environment does not support WebSocket, you can provide a WebSocketConstructor in the options for SuiHTTPTransport.");aa(this,rr,new Lr(Ve(this,Qe).websocket?.url??Ve(this,Qe).url,{WebSocketConstructor:i,...Ve(this,Qe).websocket}))}return Ve(this,rr)};var Wt=require("@mysten/bcs");le();Ie();var j=require("@mysten/bcs");var NA=/^(?!.*(^(?!@)|[-.@])($|[-.@]))(?:[a-z0-9-]{0,63}(?:\.[a-z0-9-]{0,63})*)?@[a-z0-9-]{0,63}$/i,DA=/^(?!.*(^|[-.])($|[-.]))(?:[a-z0-9-]{0,63}\.)+sui$/i;function wo(i,n="at"){let r=i.toLowerCase(),a;if(r.includes("@")){if(!NA.test(r))throw new Error(`Invalid SuiNS name ${i}`);let[s,o]=r.split("@");a=[...s?s.split("."):[],o]}else{if(!DA.test(r))throw new Error(`Invalid SuiNS name ${i}`);a=r.split(".").slice(0,-1)}return n==="dot"?`${a.join(".")}.sui`:`${a.slice(0,-1).join(".")}@${a[a.length-1]}`}Ie();var WA=BigInt(1e9),Da="0x1",Qr="0x2";var qr=Ce("0x6");var Wa=`${Qr}::sui::SUI`,UA=Ce("0x5");Ie();var jA="object",EA="ID",GA="ascii",_A="String",VA="string",$A="String",ZA="option",JA="Option";function Co(i){let n=typeof i.body=="object"&&"datatype"in i.body?i.body.datatype:null;return!!n&&x(n.package)===x("0x2")&&n.module==="tx_context"&&n.type==="TxContext"}function ei(i){if(typeof i=="string")switch(i){case"address":return b.Address;case"bool":return b.Bool;case"u8":return b.U8;case"u16":return b.U16;case"u32":return b.U32;case"u64":return b.U64;case"u128":return b.U128;case"u256":return b.U256;default:throw new Error(`Unknown type signature ${i}`)}if("vector"in i){if(i.vector==="u8")return b.vector(b.U8).transform({input:r=>typeof r=="string"?new TextEncoder().encode(r):r,output:r=>r});let n=ei(i.vector);return n?b.vector(n):null}if("datatype"in i){let n=x(i.datatype.package);if(n===x(Da)){if(i.datatype.module===GA&&i.datatype.type===_A)return b.String;if(i.datatype.module===VA&&i.datatype.type===$A)return b.String;if(i.datatype.module===ZA&&i.datatype.type===JA){let r=ei(i.datatype.typeParameters[0]);return r?b.vector(r):null}}if(n===x(Qr)&&i.datatype.module===jA&&i.datatype.type===EA)return b.Address}return null}function Io(i){return typeof i=="object"&&"Reference"in i?{ref:"&",body:sr(i.Reference)}:typeof i=="object"&&"MutableReference"in i?{ref:"&mut",body:sr(i.MutableReference)}:{ref:null,body:sr(i)}}function sr(i){if(typeof i=="string")switch(i){case"Address":return"address";case"Bool":return"bool";case"U8":return"u8";case"U16":return"u16";case"U32":return"u32";case"U64":return"u64";case"U128":return"u128";case"U256":return"u256";default:throw new Error(`Unexpected type ${i}`)}if("Vector"in i)return{vector:sr(i.Vector)};if("Struct"in i)return{datatype:{package:i.Struct.address,module:i.Struct.module,type:i.Struct.name,typeParameters:i.Struct.typeArguments.map(sr)}};if("TypeParameter"in i)return{typeParameter:i.TypeParameter};throw new Error(`Unexpected type ${JSON.stringify(i)}`)}var Bo=require("@mysten/bcs");Ie();function LA(i){return{$kind:"Pure",Pure:{bytes:i instanceof Uint8Array?(0,Bo.toBase64)(i):i.toBase64()}}}var ve={Pure:LA,ObjectRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"ImmOrOwnedObject",ImmOrOwnedObject:{digest:n,version:r,objectId:x(i)}}}},SharedObjectRef({objectId:i,mutable:n,initialSharedVersion:r}){return{$kind:"Object",Object:{$kind:"SharedObject",SharedObject:{mutable:n,initialSharedVersion:r,objectId:x(i)}}}},ReceivingRef({objectId:i,digest:n,version:r}){return{$kind:"Object",Object:{$kind:"Receiving",Receiving:{digest:n,version:r,objectId:x(i)}}}}};var Ga=require("@mysten/bcs"),nt=require("valibot");Ie();var p=require("valibot");Ie();function Lt(i){let n=Object.entries(i).map(([r,a])=>(0,p.object)({[r]:a}));return(0,p.pipe)((0,p.union)(n),(0,p.transform)(r=>({...r,$kind:Object.keys(r)[0]})))}var cn=(0,p.pipe)((0,p.string)(),(0,p.transform)(i=>x(i)),(0,p.check)(Ne)),Se=cn,Jt=(0,p.string)(),ye=(0,p.pipe)((0,p.union)([(0,p.string)(),(0,p.pipe)((0,p.number)(),(0,p.integer)())]),(0,p.check)(i=>{try{return BigInt(i),BigInt(i)>=0&&BigInt(i)<=18446744073709551615n}catch{return!1}},"Invalid u64")),tt=(0,p.object)({objectId:cn,version:ye,digest:(0,p.string)()}),Y=(0,p.pipe)((0,p.union)([(0,p.object)({GasCoin:(0,p.literal)(!0)}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("pure"))}),(0,p.object)({Input:(0,p.pipe)((0,p.number)(),(0,p.integer)()),type:(0,p.optional)((0,p.literal)("object"))}),(0,p.object)({Result:(0,p.pipe)((0,p.number)(),(0,p.integer)())}),(0,p.object)({NestedResult:(0,p.tuple)([(0,p.pipe)((0,p.number)(),(0,p.integer)()),(0,p.pipe)((0,p.number)(),(0,p.integer)())])})]),(0,p.transform)(i=>({...i,$kind:Object.keys(i)[0]}))),XA=(0,p.object)({budget:(0,p.nullable)(ye),price:(0,p.nullable)(ye),owner:(0,p.nullable)(cn),payment:(0,p.nullable)((0,p.array)(tt))}),Ep=(0,p.object)({address:(0,p.string)(),module:(0,p.string)(),name:(0,p.string)(),typeParams:(0,p.array)((0,p.string)())}),Ua=(0,p.union)([(0,p.literal)("address"),(0,p.literal)("bool"),(0,p.literal)("u8"),(0,p.literal)("u16"),(0,p.literal)("u32"),(0,p.literal)("u64"),(0,p.literal)("u128"),(0,p.literal)("u256"),(0,p.object)({vector:(0,p.lazy)(()=>Ua)}),(0,p.object)({datatype:(0,p.object)({package:(0,p.string)(),module:(0,p.string)(),type:(0,p.string)(),typeParameters:(0,p.array)((0,p.lazy)(()=>Ua))})}),(0,p.object)({typeParameter:(0,p.pipe)((0,p.number)(),(0,p.integer)())})]),YA=(0,p.object)({ref:(0,p.nullable)((0,p.union)([(0,p.literal)("&"),(0,p.literal)("&mut")])),body:Ua}),KA=(0,p.object)({package:Se,module:(0,p.string)(),function:(0,p.string)(),typeArguments:(0,p.array)((0,p.string)()),arguments:(0,p.array)(Y),_argumentTypes:(0,p.optional)((0,p.nullable)((0,p.array)(YA)))}),zA=(0,p.object)({name:(0,p.string)(),inputs:(0,p.record)((0,p.string)(),(0,p.union)([Y,(0,p.array)(Y)])),data:(0,p.record)((0,p.string)(),(0,p.unknown)())}),HA=Lt({MoveCall:KA,TransferObjects:(0,p.object)({objects:(0,p.array)(Y),address:Y}),SplitCoins:(0,p.object)({coin:Y,amounts:(0,p.array)(Y)}),MergeCoins:(0,p.object)({destination:Y,sources:(0,p.array)(Y)}),Publish:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se)}),MakeMoveVec:(0,p.object)({type:(0,p.nullable)((0,p.string)()),elements:(0,p.array)(Y)}),Upgrade:(0,p.object)({modules:(0,p.array)(Jt),dependencies:(0,p.array)(Se),package:Se,ticket:Y}),$Intent:zA}),vo=Lt({ImmOrOwnedObject:tt,SharedObject:(0,p.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,p.boolean)()}),Receiving:tt}),QA=Lt({Object:vo,Pure:(0,p.object)({bytes:Jt}),UnresolvedPure:(0,p.object)({value:(0,p.unknown)()}),UnresolvedObject:(0,p.object)({objectId:Se,version:(0,p.optional)((0,p.nullable)(ye)),digest:(0,p.optional)((0,p.nullable)((0,p.string)())),initialSharedVersion:(0,p.optional)((0,p.nullable)(ye))})}),ja=Lt({Object:vo,Pure:(0,p.object)({bytes:Jt})}),Ea=Lt({None:(0,p.literal)(!0),Epoch:ye}),On=(0,p.object)({version:(0,p.literal)(2),sender:(0,p.nullish)(cn),expiration:(0,p.nullish)(Ea),gasData:XA,inputs:(0,p.array)(QA),commands:(0,p.array)(HA)});var We={MoveCall(i){let[n,r="",a=""]="target"in i?i.target.split("::"):[i.package,i.module,i.function];return{$kind:"MoveCall",MoveCall:{package:n,module:r,function:a,typeArguments:i.typeArguments??[],arguments:i.arguments??[]}}},TransferObjects(i,n){return{$kind:"TransferObjects",TransferObjects:{objects:i.map(r=>(0,nt.parse)(Y,r)),address:(0,nt.parse)(Y,n)}}},SplitCoins(i,n){return{$kind:"SplitCoins",SplitCoins:{coin:(0,nt.parse)(Y,i),amounts:n.map(r=>(0,nt.parse)(Y,r))}}},MergeCoins(i,n){return{$kind:"MergeCoins",MergeCoins:{destination:(0,nt.parse)(Y,i),sources:n.map(r=>(0,nt.parse)(Y,r))}}},Publish({modules:i,dependencies:n}){return{$kind:"Publish",Publish:{modules:i.map(r=>typeof r=="string"?r:(0,Ga.toBase64)(new Uint8Array(r))),dependencies:n.map(r=>Ce(r))}}},Upgrade({modules:i,dependencies:n,package:r,ticket:a}){return{$kind:"Upgrade",Upgrade:{modules:i.map(s=>typeof s=="string"?s:(0,Ga.toBase64)(new Uint8Array(s))),dependencies:n.map(s=>Ce(s)),package:r,ticket:(0,nt.parse)(Y,a)}}},MakeMoveVec({type:i,elements:n}){return{$kind:"MakeMoveVec",MakeMoveVec:{type:i??null,elements:n.map(r=>(0,nt.parse)(Y,r))}}},Intent({name:i,inputs:n={},data:r={}}){return{$kind:"$Intent",$Intent:{name:i,inputs:Object.fromEntries(Object.entries(n).map(([a,s])=>[a,Array.isArray(s)?s.map(o=>(0,nt.parse)(Y,o)):(0,nt.parse)(Y,s)])),data:r}}}};var Fn=require("@mysten/bcs"),Pt=require("valibot");Ie();var Xt=require("@mysten/bcs"),d=require("valibot");le();var _a=(0,d.object)({digest:(0,d.string)(),objectId:(0,d.string)(),version:(0,d.union)([(0,d.pipe)((0,d.number)(),(0,d.integer)()),(0,d.string)(),(0,d.bigint)()])}),qA=Lt({ImmOrOwned:_a,Shared:(0,d.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,d.boolean)()}),Receiving:_a}),Ro=Lt({Object:qA,Pure:(0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))}),Mo=(0,d.union)([(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.optional)((0,d.literal)("object"))}),(0,d.object)({kind:(0,d.literal)("Input"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),value:(0,d.unknown)(),type:(0,d.literal)("pure")})]),eu=(0,d.union)([(0,d.object)({Epoch:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),ko=(0,d.pipe)((0,d.union)([(0,d.number)(),(0,d.string)(),(0,d.bigint)()]),(0,d.check)(i=>{if(!["string","number","bigint"].includes(typeof i))return!1;try{return BigInt(i),!0}catch{return!1}})),Va=(0,d.union)([(0,d.object)({bool:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u8:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u64:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u128:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({address:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({signer:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({vector:(0,d.lazy)(()=>Va)}),(0,d.object)({struct:(0,d.lazy)(()=>tu)}),(0,d.object)({u16:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u32:(0,d.nullable)((0,d.literal)(!0))}),(0,d.object)({u256:(0,d.nullable)((0,d.literal)(!0))})]),tu=(0,d.object)({address:(0,d.string)(),module:(0,d.string)(),name:(0,d.string)(),typeParams:(0,d.array)(Va)}),nu=(0,d.object)({budget:(0,d.optional)(ko),price:(0,d.optional)(ko),payment:(0,d.optional)((0,d.array)(_a)),owner:(0,d.optional)((0,d.string)())}),ru=[Mo,(0,d.object)({kind:(0,d.literal)("GasCoin")}),(0,d.object)({kind:(0,d.literal)("Result"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)())}),(0,d.object)({kind:(0,d.literal)("NestedResult"),index:(0,d.pipe)((0,d.number)(),(0,d.integer)()),resultIndex:(0,d.pipe)((0,d.number)(),(0,d.integer)())})],Nt=(0,d.union)([...ru]),iu=(0,d.object)({kind:(0,d.literal)("MoveCall"),target:(0,d.pipe)((0,d.string)(),(0,d.check)(i=>i.split("::").length===3)),typeArguments:(0,d.array)((0,d.string)()),arguments:(0,d.array)(Nt)}),au=(0,d.object)({kind:(0,d.literal)("TransferObjects"),objects:(0,d.array)(Nt),address:Nt}),su=(0,d.object)({kind:(0,d.literal)("SplitCoins"),coin:Nt,amounts:(0,d.array)(Nt)}),ou=(0,d.object)({kind:(0,d.literal)("MergeCoins"),destination:Nt,sources:(0,d.array)(Nt)}),cu=(0,d.object)({kind:(0,d.literal)("MakeMoveVec"),type:(0,d.union)([(0,d.object)({Some:Va}),(0,d.object)({None:(0,d.nullable)((0,d.literal)(!0))})]),objects:(0,d.array)(Nt)}),Au=(0,d.object)({kind:(0,d.literal)("Publish"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)())}),uu=(0,d.object)({kind:(0,d.literal)("Upgrade"),modules:(0,d.array)((0,d.array)((0,d.pipe)((0,d.number)(),(0,d.integer)()))),dependencies:(0,d.array)((0,d.string)()),packageId:(0,d.string)(),ticket:Nt}),mu=[iu,au,su,ou,Au,uu,cu],lu=(0,d.union)([...mu]),Lp=(0,d.object)({version:(0,d.literal)(1),sender:(0,d.optional)((0,d.string)()),expiration:(0,d.nullish)(eu),gasConfig:nu,inputs:(0,d.array)(Mo),transactions:(0,d.array)(lu)});function $a(i){let n=i.inputs.map((r,a)=>{if(r.Object)return{kind:"Input",index:a,value:{Object:r.Object.ImmOrOwnedObject?{ImmOrOwned:r.Object.ImmOrOwnedObject}:r.Object.Receiving?{Receiving:{digest:r.Object.Receiving.digest,version:r.Object.Receiving.version,objectId:r.Object.Receiving.objectId}}:{Shared:{mutable:r.Object.SharedObject.mutable,initialSharedVersion:r.Object.SharedObject.initialSharedVersion,objectId:r.Object.SharedObject.objectId}}},type:"object"};if(r.Pure)return{kind:"Input",index:a,value:{Pure:Array.from((0,Xt.fromBase64)(r.Pure.bytes))},type:"pure"};if(r.UnresolvedPure)return{kind:"Input",type:"pure",index:a,value:r.UnresolvedPure.value};if(r.UnresolvedObject)return{kind:"Input",type:"object",index:a,value:r.UnresolvedObject.objectId};throw new Error("Invalid input")});return{version:1,sender:i.sender??void 0,expiration:i.expiration?.$kind==="Epoch"?{Epoch:Number(i.expiration.Epoch)}:i.expiration?{None:!0}:null,gasConfig:{owner:i.gasData.owner??void 0,budget:i.gasData.budget??void 0,price:i.gasData.price??void 0,payment:i.gasData.payment??void 0},inputs:n,transactions:i.commands.map(r=>{if(r.MakeMoveVec)return{kind:"MakeMoveVec",type:r.MakeMoveVec.type===null?{None:!0}:{Some:xt.parseFromStr(r.MakeMoveVec.type)},objects:r.MakeMoveVec.elements.map(a=>Ot(a,n))};if(r.MergeCoins)return{kind:"MergeCoins",destination:Ot(r.MergeCoins.destination,n),sources:r.MergeCoins.sources.map(a=>Ot(a,n))};if(r.MoveCall)return{kind:"MoveCall",target:`${r.MoveCall.package}::${r.MoveCall.module}::${r.MoveCall.function}`,typeArguments:r.MoveCall.typeArguments,arguments:r.MoveCall.arguments.map(a=>Ot(a,n))};if(r.Publish)return{kind:"Publish",modules:r.Publish.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Publish.dependencies};if(r.SplitCoins)return{kind:"SplitCoins",coin:Ot(r.SplitCoins.coin,n),amounts:r.SplitCoins.amounts.map(a=>Ot(a,n))};if(r.TransferObjects)return{kind:"TransferObjects",objects:r.TransferObjects.objects.map(a=>Ot(a,n)),address:Ot(r.TransferObjects.address,n)};if(r.Upgrade)return{kind:"Upgrade",modules:r.Upgrade.modules.map(a=>Array.from((0,Xt.fromBase64)(a))),dependencies:r.Upgrade.dependencies,packageId:r.Upgrade.package,ticket:Ot(r.Upgrade.ticket,n)};throw new Error(`Unknown transaction ${Object.keys(r)}`)})}}function Ot(i,n){if(i.$kind==="GasCoin")return{kind:"GasCoin"};if(i.$kind==="Result")return{kind:"Result",index:i.Result};if(i.$kind==="NestedResult")return{kind:"NestedResult",index:i.NestedResult[0],resultIndex:i.NestedResult[1]};if(i.$kind==="Input")return n[i.Input];throw new Error(`Invalid argument ${Object.keys(i)}`)}function xo(i){return(0,d.parse)(On,{version:2,sender:i.sender??null,expiration:i.expiration?"Epoch"in i.expiration?{Epoch:i.expiration.Epoch}:{None:!0}:null,gasData:{owner:i.gasConfig.owner??null,budget:i.gasConfig.budget?.toString()??null,price:i.gasConfig.price?.toString()??null,payment:i.gasConfig.payment?.map(n=>({digest:n.digest,objectId:n.objectId,version:n.version.toString()}))??null},inputs:i.inputs.map(n=>{if(n.kind==="Input"){if((0,d.is)(Ro,n.value)){let r=(0,d.parse)(Ro,n.value);if(r.Object){if(r.Object.ImmOrOwned)return{Object:{ImmOrOwnedObject:{objectId:r.Object.ImmOrOwned.objectId,version:String(r.Object.ImmOrOwned.version),digest:r.Object.ImmOrOwned.digest}}};if(r.Object.Shared)return{Object:{SharedObject:{mutable:r.Object.Shared.mutable??null,initialSharedVersion:r.Object.Shared.initialSharedVersion,objectId:r.Object.Shared.objectId}}};if(r.Object.Receiving)return{Object:{Receiving:{digest:r.Object.Receiving.digest,version:String(r.Object.Receiving.version),objectId:r.Object.Receiving.objectId}}};throw new Error("Invalid object input")}return{Pure:{bytes:(0,Xt.toBase64)(new Uint8Array(r.Pure))}}}return n.type==="object"?{UnresolvedObject:{objectId:n.value}}:{UnresolvedPure:{value:n.value}}}throw new Error("Invalid input")}),commands:i.transactions.map(n=>{switch(n.kind){case"MakeMoveVec":return{MakeMoveVec:{type:"Some"in n.type?xt.tagToString(n.type.Some):null,elements:n.objects.map(r=>Ft(r))}};case"MergeCoins":return{MergeCoins:{destination:Ft(n.destination),sources:n.sources.map(r=>Ft(r))}};case"MoveCall":{let[r,a,s]=n.target.split("::");return{MoveCall:{package:r,module:a,function:s,typeArguments:n.typeArguments,arguments:n.arguments.map(o=>Ft(o))}}}case"Publish":return{Publish:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies}};case"SplitCoins":return{SplitCoins:{coin:Ft(n.coin),amounts:n.amounts.map(r=>Ft(r))}};case"TransferObjects":return{TransferObjects:{objects:n.objects.map(r=>Ft(r)),address:Ft(n.address)}};case"Upgrade":return{Upgrade:{modules:n.modules.map(r=>(0,Xt.toBase64)(Uint8Array.from(r))),dependencies:n.dependencies,package:n.packageId,ticket:Ft(n.ticket)}}}throw new Error(`Unknown transaction ${Object.keys(n)}`)})})}function Ft(i){switch(i.kind){case"GasCoin":return{GasCoin:!0};case"Result":return{Result:i.index};case"NestedResult":return{NestedResult:[i.index,i.resultIndex]};case"Input":return{Input:i.index}}}var P=require("valibot");function or(i){return(0,P.union)(Object.entries(i).map(([n,r])=>(0,P.object)({[n]:r})))}var rt=or({GasCoin:(0,P.literal)(!0),Input:(0,P.pipe)((0,P.number)(),(0,P.integer)()),Result:(0,P.pipe)((0,P.number)(),(0,P.integer)()),NestedResult:(0,P.tuple)([(0,P.pipe)((0,P.number)(),(0,P.integer)()),(0,P.pipe)((0,P.number)(),(0,P.integer)())])}),du=(0,P.object)({budget:(0,P.nullable)(ye),price:(0,P.nullable)(ye),owner:(0,P.nullable)(cn),payment:(0,P.nullable)((0,P.array)(tt))}),pu=(0,P.object)({package:Se,module:(0,P.string)(),function:(0,P.string)(),typeArguments:(0,P.array)((0,P.string)()),arguments:(0,P.array)(rt)}),gu=(0,P.object)({name:(0,P.string)(),inputs:(0,P.record)((0,P.string)(),(0,P.union)([rt,(0,P.array)(rt)])),data:(0,P.record)((0,P.string)(),(0,P.unknown)())}),fu=or({MoveCall:pu,TransferObjects:(0,P.object)({objects:(0,P.array)(rt),address:rt}),SplitCoins:(0,P.object)({coin:rt,amounts:(0,P.array)(rt)}),MergeCoins:(0,P.object)({destination:rt,sources:(0,P.array)(rt)}),Publish:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se)}),MakeMoveVec:(0,P.object)({type:(0,P.nullable)((0,P.string)()),elements:(0,P.array)(rt)}),Upgrade:(0,P.object)({modules:(0,P.array)(Jt),dependencies:(0,P.array)(Se),package:Se,ticket:rt}),$Intent:gu}),yu=or({ImmOrOwnedObject:tt,SharedObject:(0,P.object)({objectId:Se,initialSharedVersion:ye,mutable:(0,P.boolean)()}),Receiving:tt}),hu=or({Object:yu,Pure:(0,P.object)({bytes:Jt}),UnresolvedPure:(0,P.object)({value:(0,P.unknown)()}),UnresolvedObject:(0,P.object)({objectId:Se,version:(0,P.optional)((0,P.nullable)(ye)),digest:(0,P.optional)((0,P.nullable)((0,P.string)())),initialSharedVersion:(0,P.optional)((0,P.nullable)(ye))})}),bu=or({None:(0,P.literal)(!0),Epoch:ye}),Oo=(0,P.object)({version:(0,P.literal)(2),sender:(0,P.nullish)(cn),expiration:(0,P.nullish)(bu),gasData:du,inputs:(0,P.array)(hu),commands:(0,P.array)(fu)});var No=require("valibot");le();var Tu=50,Su=1000n,Pu=5e10;async function Do(i,n,r){return await vu(i,n),await Bu(i,n),n.onlyTransactionKind||(await wu(i,n),await Cu(i,n),await Iu(i,n)),await Ru(i),await r()}async function wu(i,n){i.gasConfig.price||(i.gasConfig.price=String(await An(n).getReferenceGasPrice()))}async function Cu(i,n){if(i.gasConfig.budget)return;let r=await An(n).dryRunTransactionBlock({transactionBlock:i.build({overrides:{gasData:{budget:String(Pu),payment:[]}}})});if(r.effects.status.status!=="success")throw new Error(`Dry run failed, could not automatically determine a budget: ${r.effects.status.error}`,{cause:r});let a=Su*BigInt(i.gasConfig.price||1n),s=BigInt(r.effects.gasUsed.computationCost)+a,o=s+BigInt(r.effects.gasUsed.storageCost)-BigInt(r.effects.gasUsed.storageRebate);i.gasConfig.budget=String(o>s?o:s)}async function Iu(i,n){if(!i.gasConfig.payment){let a=(await An(n).getCoins({owner:i.gasConfig.owner||i.sender,coinType:Wa})).data.filter(s=>!i.inputs.find(c=>c.Object?.ImmOrOwnedObject?s.coinObjectId===c.Object.ImmOrOwnedObject.objectId:!1)).map(s=>({objectId:s.coinObjectId,digest:s.digest,version:s.version}));if(!a.length)throw new Error("No valid gas coins found for the transaction.");i.gasConfig.payment=a.map(s=>(0,No.parse)(tt,s))}}async function Bu(i,n){let r=i.inputs.filter(l=>l.UnresolvedObject&&!(l.UnresolvedObject.version||l.UnresolvedObject?.initialSharedVersion)),a=[...new Set(r.map(l=>Ce(l.UnresolvedObject.objectId)))],s=a.length?Ou(a,Tu):[],o=(await Promise.all(s.map(l=>An(n).multiGetObjects({ids:l,options:{showOwner:!0}})))).flat(),c=new Map(a.map((l,g)=>[l,o[g]])),A=Array.from(c).filter(([l,g])=>g.error).map(([l,g])=>JSON.stringify(g.error));if(A.length)throw new Error(`The following input objects are invalid: ${A.join(", ")}`);let u=o.map(l=>{if(l.error||!l.data)throw new Error(`Failed to fetch object: ${l.error}`);let g=l.data.owner,S=g&&typeof g=="object"&&"Shared"in g?g.Shared.initial_shared_version:null;return{objectId:l.data.objectId,digest:l.data.digest,version:l.data.version,initialSharedVersion:S}}),m=new Map(a.map((l,g)=>[l,u[g]]));for(let[l,g]of i.inputs.entries()){if(!g.UnresolvedObject)continue;let S,h=x(g.UnresolvedObject.objectId),T=m.get(h);g.UnresolvedObject.initialSharedVersion??T?.initialSharedVersion?S=ve.SharedObjectRef({objectId:h,initialSharedVersion:g.UnresolvedObject.initialSharedVersion||T?.initialSharedVersion,mutable:ku(i,l)}):Mu(i,l)&&(S=ve.ReceivingRef({objectId:h,digest:g.UnresolvedObject.digest??T?.digest,version:g.UnresolvedObject.version??T?.version})),i.inputs[i.inputs.indexOf(g)]=S??ve.ObjectRef({objectId:h,digest:g.UnresolvedObject.digest??T?.digest,version:g.UnresolvedObject.version??T?.version})}}async function vu(i,n){let{inputs:r,commands:a}=i,s=[],o=new Set;a.forEach(A=>{if(A.MoveCall){if(A.MoveCall._argumentTypes)return;if(A.MoveCall.arguments.map(l=>l.$kind==="Input"?i.inputs[l.Input]:null).some(l=>l?.UnresolvedPure||l?.UnresolvedObject)){let l=`${A.MoveCall.package}::${A.MoveCall.module}::${A.MoveCall.function}`;o.add(l),s.push(A.MoveCall)}}switch(A.$kind){case"SplitCoins":A.SplitCoins.amounts.forEach(u=>{Fo(u,b.U64,i)});break;case"TransferObjects":Fo(A.TransferObjects.address,b.Address,i);break}});let c=new Map;if(o.size>0){let A=An(n);await Promise.all([...o].map(async u=>{let[m,l,g]=u.split("::"),S=await A.getNormalizedMoveFunction({package:m,module:l,function:g});c.set(u,S.parameters.map(h=>Io(h)))}))}s.length&&await Promise.all(s.map(async A=>{let u=c.get(`${A.package}::${A.module}::${A.function}`);if(!u)return;let l=u.length>0&&Co(u.at(-1))?u.slice(0,u.length-1):u;A._argumentTypes=l})),a.forEach(A=>{if(!A.MoveCall)return;let u=A.MoveCall,m=`${u.package}::${u.module}::${u.function}`,l=u._argumentTypes;if(l){if(l.length!==A.MoveCall.arguments.length)throw new Error(`Incorrect number of arguments for ${m}`);l.forEach((g,S)=>{let h=u.arguments[S];if(h.$kind!=="Input")return;let T=r[h.Input];if(!T.UnresolvedPure&&!T.UnresolvedObject)return;let I=T.UnresolvedPure?.value??T.UnresolvedObject?.objectId,w=ei(g.body);if(w){h.type="pure",r[r.indexOf(T)]=ve.Pure(w.serialize(I));return}if(typeof I!="string")throw new Error(`Expect the argument to be an object id string, got ${JSON.stringify(I,null,2)}`);h.type="object";let R=T.UnresolvedPure?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:I}}:T;r[h.Input]=R})}})}function Ru(i){i.inputs.forEach((n,r)=>{if(n.$kind!=="Object"&&n.$kind!=="Pure")throw new Error(`Input at index ${r} has not been resolved. Expected a Pure or Object input, but found ${JSON.stringify(n)}`)})}function Fo(i,n,r){if(i.$kind!=="Input")return;let a=r.inputs[i.Input];a.$kind==="UnresolvedPure"&&(r.inputs[i.Input]=ve.Pure(n.serialize(a.UnresolvedPure.value)))}function ku(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=s.MoveCall._argumentTypes[o].ref!=="&"||r}(s.$kind==="MakeMoveVec"||s.$kind==="MergeCoins"||s.$kind==="SplitCoins")&&(r=!0)}),r}function Mu(i,n){let r=!1;return i.getInputUses(n,(a,s)=>{if(s.MoveCall&&s.MoveCall._argumentTypes){let o=s.MoveCall.arguments.indexOf(a);r=xu(s.MoveCall._argumentTypes[o])||r}}),r}function xu(i){return typeof i.body!="object"||!("datatype"in i.body)?!1:i.body.datatype.package==="0x2"&&i.body.datatype.module==="transfer"&&i.body.datatype.type==="Receiving"}function An(i){if(!i.client)throw new Error("No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.");return i.client}function Ou(i,n){return Array.from({length:Math.ceil(i.length/n)},(r,a)=>i.slice(a*n,a*n+n))}function Wo(i){function n(r){return i(r)}return n.system=()=>n("0x5"),n.clock=()=>n("0x6"),n.random=()=>n("0x8"),n.denyList=()=>n("0x403"),n.option=({type:r,value:a})=>s=>s.moveCall({typeArguments:[r],target:`0x1::option::${a===null?"none":"some"}`,arguments:a===null?[]:[s.object(a)]}),n}var Uo=require("@mysten/bcs");le();function jo(i){function n(r,a){if(typeof r=="string")return i(cr(r).serialize(a));if(r instanceof Uint8Array||(0,Uo.isSerializedBcs)(r))return i(r);throw new Error("tx.pure must be called either a bcs type name, or a serialized bcs value")}return n.u8=r=>i(b.U8.serialize(r)),n.u16=r=>i(b.U16.serialize(r)),n.u32=r=>i(b.U32.serialize(r)),n.u64=r=>i(b.U64.serialize(r)),n.u128=r=>i(b.U128.serialize(r)),n.u256=r=>i(b.U256.serialize(r)),n.bool=r=>i(b.Bool.serialize(r)),n.string=r=>i(b.String.serialize(r)),n.address=r=>i(b.Address.serialize(r)),n.id=n.address,n.vector=(r,a)=>i(b.vector(cr(r)).serialize(a)),n.option=(r,a)=>i(b.option(cr(r)).serialize(a)),n}function cr(i){switch(i){case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"bool":return b.bool();case"string":return b.string();case"id":case"address":return b.Address}let n=i.match(/^(vector|option)<(.+)>$/);if(n){let[r,a]=n.slice(1);return r==="vector"?b.vector(cr(a)):b.option(cr(a))}throw new Error(`Invalid Pure type name: ${i}`)}var Vo=require("@mysten/bcs"),ti=require("valibot");le();Ie();var Eo=require("@noble/hashes/blake2b");function Go(i,n){let r=Array.from(`${i}::`).map(s=>s.charCodeAt(0)),a=new Uint8Array(r.length+n.length);return a.set(r),a.set(n,r.length),(0,Eo.blake2b)(a,{dkLen:32})}function _o(i){return x(i).replace("0x","")}var Yt=class i{constructor(n){this.version=2,this.sender=n?.sender??null,this.expiration=n?.expiration??null,this.inputs=n?.inputs??[],this.commands=n?.commands??[],this.gasData=n?.gasData??{budget:null,price:null,owner:null,payment:null}}static fromKindBytes(n){let a=b.TransactionKind.parse(n).ProgrammableTransaction;if(!a)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:null,expiration:null,gasData:{budget:null,owner:null,payment:null,price:null},inputs:a.inputs,commands:a.commands})}static fromBytes(n){let a=b.TransactionData.parse(n)?.V1,s=a.kind.ProgrammableTransaction;if(!a||!s)throw new Error("Unable to deserialize from bytes.");return i.restore({version:2,sender:a.sender,expiration:a.expiration,gasData:a.gasData,inputs:s.inputs,commands:s.commands})}static restore(n){return n.version===2?new i((0,ti.parse)(On,n)):new i((0,ti.parse)(On,xo(n)))}static getDigestFromBytes(n){let r=Go("TransactionData",n);return(0,Vo.toBase58)(r)}get gasConfig(){return this.gasData}set gasConfig(n){this.gasData=n}build({maxSizeBytes:n=1/0,overrides:r,onlyTransactionKind:a}={}){let s=this.inputs,o=this.commands,c={ProgrammableTransaction:{inputs:s,commands:o}};if(a)return b.TransactionKind.serialize(c,{maxSize:n}).toBytes();let A=r?.expiration??this.expiration,u=r?.sender??this.sender,m={...this.gasData,...r?.gasConfig,...r?.gasData};if(!u)throw new Error("Missing transaction sender");if(!m.budget)throw new Error("Missing gas budget");if(!m.payment)throw new Error("Missing gas payment");if(!m.price)throw new Error("Missing gas price");let l={sender:_o(u),expiration:A||{None:!0},gasData:{payment:m.payment,owner:_o(this.gasData.owner??u),price:BigInt(m.price),budget:BigInt(m.budget)},kind:{ProgrammableTransaction:{inputs:s,commands:o}}};return b.TransactionData.serialize({V1:l},{maxSize:n}).toBytes()}addInput(n,r){let a=this.inputs.length;return this.inputs.push(r),{Input:a,type:n,$kind:"Input"}}getInputUses(n,r){this.mapArguments((a,s)=>(a.$kind==="Input"&&a.Input===n&&r(a,s),a))}mapArguments(n){for(let r of this.commands)switch(r.$kind){case"MoveCall":r.MoveCall.arguments=r.MoveCall.arguments.map(s=>n(s,r));break;case"TransferObjects":r.TransferObjects.objects=r.TransferObjects.objects.map(s=>n(s,r)),r.TransferObjects.address=n(r.TransferObjects.address,r);break;case"SplitCoins":r.SplitCoins.coin=n(r.SplitCoins.coin,r),r.SplitCoins.amounts=r.SplitCoins.amounts.map(s=>n(s,r));break;case"MergeCoins":r.MergeCoins.destination=n(r.MergeCoins.destination,r),r.MergeCoins.sources=r.MergeCoins.sources.map(s=>n(s,r));break;case"MakeMoveVec":r.MakeMoveVec.elements=r.MakeMoveVec.elements.map(s=>n(s,r));break;case"Upgrade":r.Upgrade.ticket=n(r.Upgrade.ticket,r);break;case"$Intent":let a=r.$Intent.inputs;r.$Intent.inputs={};for(let[s,o]of Object.entries(a))r.$Intent.inputs[s]=Array.isArray(o)?o.map(c=>n(c,r)):n(o,r);break;case"Publish":break;default:throw new Error(`Unexpected transaction kind: ${r.$kind}`)}}replaceCommand(n,r){if(!Array.isArray(r)){this.commands[n]=r;return}let a=r.length-1;this.commands.splice(n,1,...r),a!==0&&this.mapArguments(s=>{switch(s.$kind){case"Result":s.Result>n&&(s.Result+=a);break;case"NestedResult":s.NestedResult[0]>n&&(s.NestedResult[0]+=a);break}return s})}getDigest(){let n=this.build({onlyTransactionKind:!1});return i.getDigestFromBytes(n)}snapshot(){return(0,ti.parse)(On,this)}};Ie();function Za(i){if(typeof i=="string")return x(i);if(i.Object)return i.Object.ImmOrOwnedObject?x(i.Object.ImmOrOwnedObject.objectId):i.Object.Receiving?x(i.Object.Receiving.objectId):x(i.Object.SharedObject.objectId);if(i.UnresolvedObject)return x(i.UnresolvedObject.objectId)}var Jo=i=>{throw TypeError(i)},Ya=(i,n,r)=>n.has(i)||Jo("Cannot "+r),D=(i,n,r)=>(Ya(i,n,"read from private field"),r?r.call(i):n.get(i)),Ar=(i,n,r)=>n.has(i)?Jo("Cannot add the same private member more than once"):n instanceof WeakSet?n.add(i):n.set(i,r),un=(i,n,r,a)=>(Ya(i,n,"write to private field"),a?a.call(i,r):n.set(i,r),r),Dt=(i,n,r)=>(Ya(i,n,"access private method"),r),mr,lr,mn,E,it,ni,Ka,La,za;function $o(i,n=1/0){let r={$kind:"Result",Result:i},a=[],s=o=>a[o]??(a[o]={$kind:"NestedResult",NestedResult:[i,o]});return new Proxy(r,{set(){throw new Error("The transaction result is a proxy, and does not support setting properties directly")},get(o,c){if(c in o)return Reflect.get(o,c);if(c===Symbol.iterator)return function*(){let u=0;for(;u<n;)yield s(u),u++};if(typeof c=="symbol")return;let A=parseInt(c,10);if(!(Number.isNaN(A)||A<0))return s(A)}})}var Lo=Symbol.for("@mysten/transaction");function ri(i){return!!i&&typeof i=="object"&&i[Lo]===!0}var Zo={buildPlugins:new Map,serializationPlugins:new Map},Ja=Symbol.for("@mysten/transaction/registry");function ur(){try{let i=globalThis;return i[Ja]||(i[Ja]=Zo),i[Ja]}catch{return Zo}}var Fu=class Xa{constructor(){Ar(this,it),Ar(this,mr),Ar(this,lr),Ar(this,mn,new Map),Ar(this,E),this.object=Wo(r=>{if(typeof r=="function")return this.object(r(this));if(typeof r=="object"&&(0,Pt.is)(Y,r))return r;let a=Za(r),s=D(this,E).inputs.find(o=>a===Za(o));return s?.Object?.SharedObject&&typeof r=="object"&&r.Object?.SharedObject&&(s.Object.SharedObject.mutable=s.Object.SharedObject.mutable||r.Object.SharedObject.mutable),s?{$kind:"Input",Input:D(this,E).inputs.indexOf(s),type:"object"}:D(this,E).addInput("object",typeof r=="string"?{$kind:"UnresolvedObject",UnresolvedObject:{objectId:x(r)}}:r)});let n=ur();un(this,E,new Yt),un(this,lr,[...n.buildPlugins.values()]),un(this,mr,[...n.serializationPlugins.values()])}static fromKind(n){let r=new Xa;return un(r,E,Yt.fromKindBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)),r}static from(n){let r=new Xa;return ri(n)?un(r,E,new Yt(n.getData())):typeof n!="string"||!n.startsWith("{")?un(r,E,Yt.fromBytes(typeof n=="string"?(0,Fn.fromBase64)(n):n)):un(r,E,Yt.restore(JSON.parse(n))),r}static registerGlobalSerializationPlugin(n,r){ur().serializationPlugins.set(n,r??n)}static unregisterGlobalSerializationPlugin(n){ur().serializationPlugins.delete(n)}static registerGlobalBuildPlugin(n,r){ur().buildPlugins.set(n,r??n)}static unregisterGlobalBuildPlugin(n){ur().buildPlugins.delete(n)}addSerializationPlugin(n){D(this,mr).push(n)}addBuildPlugin(n){D(this,lr).push(n)}addIntentResolver(n,r){if(D(this,mn).has(n)&&D(this,mn).get(n)!==r)throw new Error(`Intent resolver for ${n} already exists`);D(this,mn).set(n,r)}setSender(n){D(this,E).sender=n}setSenderIfNotSet(n){D(this,E).sender||(D(this,E).sender=n)}setExpiration(n){D(this,E).expiration=n?(0,Pt.parse)(Ea,n):null}setGasPrice(n){D(this,E).gasConfig.price=String(n)}setGasBudget(n){D(this,E).gasConfig.budget=String(n)}setGasBudgetIfNotSet(n){D(this,E).gasData.budget==null&&(D(this,E).gasConfig.budget=String(n))}setGasOwner(n){D(this,E).gasConfig.owner=n}setGasPayment(n){D(this,E).gasConfig.payment=n.map(r=>(0,Pt.parse)(tt,r))}get blockData(){return $a(D(this,E).snapshot())}getData(){return D(this,E).snapshot()}get[Lo](){return!0}get pure(){return Object.defineProperty(this,"pure",{enumerable:!1,value:jo(n=>(0,Fn.isSerializedBcs)(n)?D(this,E).addInput("pure",{$kind:"Pure",Pure:{bytes:n.toBase64()}}):D(this,E).addInput("pure",(0,Pt.is)(ja,n)?(0,Pt.parse)(ja,n):n instanceof Uint8Array?ve.Pure(n):{$kind:"UnresolvedPure",UnresolvedPure:{value:n}}))}),this.pure}get gas(){return{$kind:"GasCoin",GasCoin:!0}}objectRef(...n){return this.object(ve.ObjectRef(...n))}receivingRef(...n){return this.object(ve.ReceivingRef(...n))}sharedObjectRef(...n){return this.object(ve.SharedObjectRef(...n))}add(n){if(typeof n=="function")return n(this);let r=D(this,E).commands.push(n);return $o(r-1)}splitCoins(n,r){let a=We.SplitCoins(typeof n=="string"?this.object(n):Dt(this,it,Ka).call(this,n),r.map(o=>typeof o=="number"||typeof o=="bigint"||typeof o=="string"?this.pure.u64(o):Dt(this,it,ni).call(this,o))),s=D(this,E).commands.push(a);return $o(s-1,r.length)}mergeCoins(n,r){return this.add(We.MergeCoins(this.object(n),r.map(a=>this.object(a))))}publish({modules:n,dependencies:r}){return this.add(We.Publish({modules:n,dependencies:r}))}upgrade({modules:n,dependencies:r,package:a,ticket:s}){return this.add(We.Upgrade({modules:n,dependencies:r,package:a,ticket:this.object(s)}))}moveCall({arguments:n,...r}){return this.add(We.MoveCall({...r,arguments:n?.map(a=>Dt(this,it,ni).call(this,a))}))}transferObjects(n,r){return this.add(We.TransferObjects(n.map(a=>this.object(a)),typeof r=="string"?this.pure.address(r):Dt(this,it,ni).call(this,r)))}makeMoveVec({type:n,elements:r}){return this.add(We.MakeMoveVec({type:n,elements:r.map(a=>this.object(a))}))}serialize(){return JSON.stringify($a(D(this,E).snapshot()))}async toJSON(n={}){return await this.prepareForSerialization(n),JSON.stringify((0,Pt.parse)(Oo,D(this,E).snapshot()),(r,a)=>typeof a=="bigint"?a.toString():a,2)}async sign(n){let{signer:r,...a}=n,s=await this.build(a);return r.signTransaction(s)}async build(n={}){return await this.prepareForSerialization(n),await Dt(this,it,La).call(this,n),D(this,E).build({onlyTransactionKind:n.onlyTransactionKind})}async getDigest(n={}){return await Dt(this,it,La).call(this,n),D(this,E).getDigest()}async prepareForSerialization(n){let r=new Set;for(let s of D(this,E).commands)s.$Intent&&r.add(s.$Intent.name);let a=[...D(this,mr)];for(let s of r)if(!n.supportedIntents?.includes(s)){if(!D(this,mn).has(s))throw new Error(`Missing intent resolver for ${s}`);a.push(D(this,mn).get(s))}await Dt(this,it,za).call(this,a,n)}};mr=new WeakMap;lr=new WeakMap;mn=new WeakMap;E=new WeakMap;it=new WeakSet;ni=function(i){return(0,Fn.isSerializedBcs)(i)?this.pure(i):Dt(this,it,Ka).call(this,i)};Ka=function(i){return typeof i=="function"?(0,Pt.parse)(Y,i(this)):(0,Pt.parse)(Y,i)};La=async function(i){if(!i.onlyTransactionKind&&!D(this,E).sender)throw new Error("Missing transaction sender");await Dt(this,it,za).call(this,[...D(this,lr),Do],i)};za=async function(i,n){let r=a=>{if(a>=i.length)return()=>{};let s=i[a];return async()=>{let o=r(a+1),c=!1,A=!1;if(await s(D(this,E),n,async()=>{if(c)throw new Error(`next() was call multiple times in TransactionPlugin ${a}`);c=!0,await o(),A=!0}),!c)throw new Error(`next() was not called in TransactionPlugin ${a}`);if(!A)throw new Error(`next() was not awaited in TransactionPlugin ${a}`)}};await r(0)()};var at=Fu;var Kt=require("valibot");le();Ie();var ii="CoinWithBalance",Xo=ar("0x2::sui::SUI");function ee({type:i=Xo,balance:n,useGasCoin:r=!0}){return a=>{a.addIntentResolver(ii,Du);let s=i==="gas"?i:ar(i);return a.add(We.Intent({name:ii,inputs:{},data:{type:s===Xo&&r?"gas":s,balance:BigInt(n)}}))}}var Nu=(0,Kt.object)({type:(0,Kt.string)(),balance:(0,Kt.bigint)()});async function Du(i,n,r){let a=new Set,s=new Map;if(!i.sender)throw new Error("Sender must be set to resolve CoinWithBalance");for(let m of i.commands)if(m.$kind==="$Intent"&&m.$Intent.name===ii){let{type:l,balance:g}=(0,Kt.parse)(Nu,m.$Intent.data);l!=="gas"&&g>0n&&a.add(l),s.set(l,(s.get(l)??0n)+g)}let o=new Set;for(let m of i.inputs)m.Object?.ImmOrOwnedObject&&o.add(m.Object.ImmOrOwnedObject.objectId),m.UnresolvedObject?.objectId&&o.add(m.UnresolvedObject.objectId);let c=new Map,A=An(n);await Promise.all([...a].map(async m=>{c.set(m,await Wu({coinType:m,balance:s.get(m),client:A,owner:i.sender,usedIds:o}))}));let u=new Map;u.set("gas",{$kind:"GasCoin",GasCoin:!0});for(let[m,l]of i.commands.entries()){if(l.$kind!=="$Intent"||l.$Intent.name!==ii)continue;let{type:g,balance:S}=l.$Intent.data;if(S===0n){i.replaceCommand(m,We.MoveCall({target:"0x2::coin::zero",typeArguments:[g]}));continue}let h=[];if(!u.has(g)){let[T,...I]=c.get(g).map(w=>i.addInput("object",ve.ObjectRef({objectId:w.coinObjectId,digest:w.digest,version:w.version})));I.length>0&&h.push(We.MergeCoins(T,I)),u.set(g,T)}h.push(We.SplitCoins(u.get(g),[i.addInput("pure",ve.Pure(b.u64().serialize(S)))])),i.replaceCommand(m,h),i.mapArguments(T=>T.$kind==="Result"&&T.Result===m?{$kind:"NestedResult",NestedResult:[m+h.length-1,0]}:T)}return r()}async function Wu({coinType:i,balance:n,client:r,owner:a,usedIds:s}){let o=n,c=[];return A();async function A(u=null){let{data:m,hasNextPage:l,nextCursor:g}=await r.getCoins({owner:a,coinType:i,cursor:u}),S=m.sort((h,T)=>Number(BigInt(T.balance)-BigInt(h.balance)));for(let h of S){if(s.has(h.coinObjectId))continue;let T=BigInt(h.balance);if(c.push(h),o-=T,o<=0)return c}if(l)return A(g);throw new Error(`Not enough coins of type ${i} to satisfy requested balance`)}}Ie();var Uu=Symbol.for("@mysten/SuiClient");var Ut=class{get[Uu](){return!0}constructor(n){this.transport=n.transport??new Yr({url:n.url})}async getRpcApiVersion(){return(await this.transport.request({method:"rpc.discover",params:[]})).info.version}async getCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getCoins",params:[n.owner,n.coinType,n.cursor,n.limit]})}async getAllCoins(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllCoins",params:[n.owner,n.cursor,n.limit]})}async getBalance(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getBalance",params:[n.owner,n.coinType]})}async getAllBalances(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getAllBalances",params:[n.owner]})}async getCoinMetadata(n){return await this.transport.request({method:"suix_getCoinMetadata",params:[n.coinType]})}async getTotalSupply(n){return await this.transport.request({method:"suix_getTotalSupply",params:[n.coinType]})}async call(n,r){return await this.transport.request({method:n,params:r})}async getMoveFunctionArgTypes(n){return await this.transport.request({method:"sui_getMoveFunctionArgTypes",params:[n.package,n.module,n.function]})}async getNormalizedMoveModulesByPackage(n){return await this.transport.request({method:"sui_getNormalizedMoveModulesByPackage",params:[n.package]})}async getNormalizedMoveModule(n){return await this.transport.request({method:"sui_getNormalizedMoveModule",params:[n.package,n.module]})}async getNormalizedMoveFunction(n){return await this.transport.request({method:"sui_getNormalizedMoveFunction",params:[n.package,n.module,n.function]})}async getNormalizedMoveStruct(n){return await this.transport.request({method:"sui_getNormalizedMoveStruct",params:[n.package,n.module,n.struct]})}async getOwnedObjects(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getOwnedObjects",params:[n.owner,{filter:n.filter,options:n.options},n.cursor,n.limit]})}async getObject(n){if(!n.id||!Mn(Ce(n.id)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"sui_getObject",params:[n.id,n.options]})}async tryGetPastObject(n){return await this.transport.request({method:"sui_tryGetPastObject",params:[n.id,n.version,n.options]})}async multiGetObjects(n){if(n.ids.forEach(a=>{if(!a||!Mn(Ce(a)))throw new Error(`Invalid Sui Object id ${a}`)}),n.ids.length!==new Set(n.ids).size)throw new Error(`Duplicate object ids in batch call ${n.ids}`);return await this.transport.request({method:"sui_multiGetObjects",params:[n.ids,n.options]})}async queryTransactionBlocks(n){return await this.transport.request({method:"suix_queryTransactionBlocks",params:[{filter:n.filter,options:n.options},n.cursor,n.limit,(n.order||"descending")==="descending"]})}async getTransactionBlock(n){if(!zr(n.digest))throw new Error("Invalid Transaction digest");return await this.transport.request({method:"sui_getTransactionBlock",params:[n.digest,n.options]})}async multiGetTransactionBlocks(n){if(n.digests.forEach(a=>{if(!zr(a))throw new Error(`Invalid Transaction digest ${a}`)}),n.digests.length!==new Set(n.digests).size)throw new Error(`Duplicate digests in batch call ${n.digests}`);return await this.transport.request({method:"sui_multiGetTransactionBlocks",params:[n.digests,n.options]})}async executeTransactionBlock({transactionBlock:n,signature:r,options:a,requestType:s}){let o=await this.transport.request({method:"sui_executeTransactionBlock",params:[typeof n=="string"?n:(0,Wt.toBase64)(n),Array.isArray(r)?r:[r],a]});if(s==="WaitForLocalExecution")try{await this.waitForTransaction({digest:o.digest})}catch{}return o}async signAndExecuteTransaction({transaction:n,signer:r,...a}){let s;n instanceof Uint8Array?s=n:(n.setSenderIfNotSet(r.toSuiAddress()),s=await n.build({client:this}));let{signature:o,bytes:c}=await r.signTransaction(s);return this.executeTransactionBlock({transactionBlock:c,signature:o,...a})}async getTotalTransactionBlocks(){let n=await this.transport.request({method:"sui_getTotalTransactionBlocks",params:[]});return BigInt(n)}async getReferenceGasPrice(){let n=await this.transport.request({method:"suix_getReferenceGasPrice",params:[]});return BigInt(n)}async getStakes(n){if(!n.owner||!Ne(x(n.owner)))throw new Error("Invalid Sui address");return await this.transport.request({method:"suix_getStakes",params:[n.owner]})}async getStakesByIds(n){return n.stakedSuiIds.forEach(r=>{if(!r||!Mn(Ce(r)))throw new Error(`Invalid Sui Stake id ${r}`)}),await this.transport.request({method:"suix_getStakesByIds",params:[n.stakedSuiIds]})}async getLatestSuiSystemState(){return await this.transport.request({method:"suix_getLatestSuiSystemState",params:[]})}async queryEvents(n){return await this.transport.request({method:"suix_queryEvents",params:[n.query,n.cursor,n.limit,(n.order||"descending")==="descending"]})}async subscribeEvent(n){return this.transport.subscribe({method:"suix_subscribeEvent",unsubscribe:"suix_unsubscribeEvent",params:[n.filter],onMessage:n.onMessage})}async subscribeTransaction(n){return this.transport.subscribe({method:"suix_subscribeTransaction",unsubscribe:"suix_unsubscribeTransaction",params:[n.filter],onMessage:n.onMessage})}async devInspectTransactionBlock(n){let r;if(ri(n.transactionBlock))n.transactionBlock.setSenderIfNotSet(n.sender),r=(0,Wt.toBase64)(await n.transactionBlock.build({client:this,onlyTransactionKind:!0}));else if(typeof n.transactionBlock=="string")r=n.transactionBlock;else if(n.transactionBlock instanceof Uint8Array)r=(0,Wt.toBase64)(n.transactionBlock);else throw new Error("Unknown transaction block format.");return await this.transport.request({method:"sui_devInspectTransactionBlock",params:[n.sender,r,n.gasPrice?.toString(),n.epoch]})}async dryRunTransactionBlock(n){return await this.transport.request({method:"sui_dryRunTransactionBlock",params:[typeof n.transactionBlock=="string"?n.transactionBlock:(0,Wt.toBase64)(n.transactionBlock)]})}async getDynamicFields(n){if(!n.parentId||!Mn(Ce(n.parentId)))throw new Error("Invalid Sui Object id");return await this.transport.request({method:"suix_getDynamicFields",params:[n.parentId,n.cursor,n.limit]})}async getDynamicFieldObject(n){return await this.transport.request({method:"suix_getDynamicFieldObject",params:[n.parentId,n.name]})}async getLatestCheckpointSequenceNumber(){let n=await this.transport.request({method:"sui_getLatestCheckpointSequenceNumber",params:[]});return String(n)}async getCheckpoint(n){return await this.transport.request({method:"sui_getCheckpoint",params:[n.id]})}async getCheckpoints(n){return await this.transport.request({method:"sui_getCheckpoints",params:[n.cursor,n?.limit,n.descendingOrder]})}async getCommitteeInfo(n){return await this.transport.request({method:"suix_getCommitteeInfo",params:[n?.epoch]})}async getNetworkMetrics(){return await this.transport.request({method:"suix_getNetworkMetrics",params:[]})}async getAddressMetrics(){return await this.transport.request({method:"suix_getLatestAddressMetrics",params:[]})}async getEpochMetrics(n){return await this.transport.request({method:"suix_getEpochMetrics",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getAllEpochAddressMetrics(n){return await this.transport.request({method:"suix_getAllEpochAddressMetrics",params:[n?.descendingOrder]})}async getEpochs(n){return await this.transport.request({method:"suix_getEpochs",params:[n?.cursor,n?.limit,n?.descendingOrder]})}async getMoveCallMetrics(){return await this.transport.request({method:"suix_getMoveCallMetrics",params:[]})}async getCurrentEpoch(){return await this.transport.request({method:"suix_getCurrentEpoch",params:[]})}async getValidatorsApy(){return await this.transport.request({method:"suix_getValidatorsApy",params:[]})}async getChainIdentifier(){let n=await this.getCheckpoint({id:"0"}),r=(0,Wt.fromBase58)(n.digest);return(0,Wt.toHex)(r.slice(0,4))}async resolveNameServiceAddress(n){return await this.transport.request({method:"suix_resolveNameServiceAddress",params:[n.name]})}async resolveNameServiceNames({format:n="dot",...r}){let{nextCursor:a,hasNextPage:s,data:o}=await this.transport.request({method:"suix_resolveNameServiceNames",params:[r.address,r.cursor,r.limit]});return{hasNextPage:s,nextCursor:a,data:o.map(c=>wo(c,n))}}async getProtocolConfig(n){return await this.transport.request({method:"sui_getProtocolConfig",params:[n?.version]})}async waitForTransaction({signal:n,timeout:r=60*1e3,pollInterval:a=2*1e3,...s}){let o=AbortSignal.timeout(r),c=new Promise((A,u)=>{o.addEventListener("abort",()=>u(o.reason))});for(c.catch(()=>{});!o.aborted;){n?.throwIfAborted();try{return await this.getTransactionBlock(s)}catch{await Promise.race([new Promise(u=>setTimeout(u,a)),c])}}throw o.throwIfAborted(),new Error("Unexpected error while waiting for transaction block.")}};var ui=require("big.js");var ss=oe(zt());var jt=oe(zt());de();function zo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap`,typeArguments:n,arguments:[k(i,r.bridge),k(i,r.coin),$e(i,r.receiveAmountMin,"u64")]})}function Ho(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::deposit`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),k(i,r.coin)]})}function Qo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::withdraw`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit),$e(i,r.amountLp,"u64")]})}function qo(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::claim_reward`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.userDeposit)]})}function ec(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::pool`,typeArguments:[n],arguments:[k(i,r)]})}function Qa(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge_wormhole`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.wormholeState),k(i,r.theClock),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}function tc(i,n){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::new_user_deposit`,typeArguments:[n],arguments:[]})}function qa(i,n,r){return i.moveCall({target:`${jt.PUBLISHED_AT}::bridge_interface::swap_and_bridge`,typeArguments:[n],arguments:[k(i,r.bridge),k(i,r.messenger),k(i,r.gasOracle),k(i,r.amount),k(i,r.recipient),$e(i,r.destinationChainId,"u8"),k(i,r.receiveToken),$e(i,r.nonce,"u256"),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin)]})}var oc=oe(ts());var rc=oe(ts());de();function ns(i,n,r){return i.moveCall({target:`${rc.PUBLISHED_AT}::cctp_bridge_interface::bridge`,typeArguments:[n],arguments:[k(i,r.cctpBridge),k(i,r.gasOracle),k(i,r.tokenMessengerMinterState),k(i,r.messageTransmitterState),k(i,r.treasury),k(i,r.denyList),k(i,r.amount),k(i,r.feeSuiCoin),k(i,r.feeTokenCoin),$e(i,r.destinationChainId,"u8"),k(i,r.recipient),k(i,r.recipientWalletAddress)]})}var cc=oe(is());var sc=oe(is());le();de();le();de();var as=class i{__VectorClass=!0;static $typeName="vector";static $numTypeParams=1;static $isPhantom=[!1];$typeName="vector";$fullTypeName;$typeArgs;$isPhantom=[!1];elements;constructor(n,r){this.$fullTypeName=_(this.$typeName,...n),this.$typeArgs=n,this.elements=r}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs(dr(n)),fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),new:r=>new i([M(n)],r),kind:"VectorClassReified"}}static get r(){return i.reified}static get bcs(){return b.vector}static fromFields(n,r){return i.reified(n).new(r.map(a=>W(n,a)))}static fromFieldsWithTypes(n,r){return i.reified(n).new(r.map(a=>F(n,a)))}static fromBcs(n,r){return i.fromFields(n,i.bcs(dr(n)).parse(r))}toJSONField(){return this.elements.map(n=>ln(this.$typeArgs[0],n))}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,elements:this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new(r.map(a=>N(n,a)))}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a vector json object");return i.fromJSONField(n,r.elements)}};function Nn(i){return as.r(i)}function re(i){return typeof i=="string"?{phantomType:i,kind:"PhantomReified"}:{phantomType:i.fullTypeName,kind:"PhantomReified"}}var $u=b.bytes(32).transform({input:i=>(0,j.fromHEX)(i),output:i=>(0,j.toHEX)(i)});function dr(i){switch(i){case"bool":return b.bool();case"u8":return b.u8();case"u16":return b.u16();case"u32":return b.u32();case"u64":return b.u64();case"u128":return b.u128();case"u256":return b.u256();case"address":return $u;default:return i.bcs}}function M(i){switch(i){case"u8":case"u16":case"u32":case"u64":case"u128":case"u256":case"bool":case"address":return i}switch(i.kind){case"PhantomReified":return i.phantomType;case"StructClassReified":return i.fullTypeName;case"VectorClassReified":return i.fullTypeName}throw new Error("unreachable")}function W(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return`0x${n}`}if(i.kind==="VectorClassReified")return i.fromFields(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":return new TextDecoder().decode(Uint8Array.from(n.bytes)).toString();case"0x2::url::Url":return new TextDecoder().decode(Uint8Array.from(n.url.bytes)).toString();case"0x2::object::ID":return`0x${n.bytes}`;case"0x2::object::UID":return`0x${n.id.bytes}`;case"0x1::option::Option":return n.vec.length===0?null:i.fromFields(n).vec[0];default:return i.fromFields(n)}}function F(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromFieldsWithTypes(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":return n;case"0x2::object::UID":return n.id;case"0x2::balance::Balance":return i.fromFields({value:BigInt(n)});case"0x1::option::Option":return n===null?null:F(i.reifiedTypeArgs[0],n);default:return i.fromFieldsWithTypes(n)}}function st(i,n,r){if(r.length!==n.length)throw new Error(`provided item has mismatching number of type argments ${i} (expected ${r.length}, got ${n.length}))`);for(let a=0;a<n.length;a++)if(v(n[a])!==v(M(r[a])))throw new Error(`provided item has mismatching type argments ${i} (expected ${M(r[a])}, got ${n[a]}))`)}function wt(i,n){let{typeArgs:r}=he(i.type);st(i.type,r,n)}function ln(i,n){let{typeName:r,typeArgs:a}=he(i);switch(r){case"bool":return n;case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return n.toString();case"address":case"signer":return n;case"vector":return n.map(s=>ln(a[0],s));case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:ln(a[0],n);default:return n.toJSONField()}}function N(i,n){switch(i){case"bool":case"u8":case"u16":case"u32":return n;case"u64":case"u128":case"u256":return BigInt(n);case"address":return n}if(i.kind==="VectorClassReified")return i.fromJSONField(n).elements;switch(i.typeName){case"0x1::string::String":case"0x1::ascii::String":case"0x2::url::Url":case"0x2::object::ID":case"0x2::object::UID":return n;case"0x1::option::Option":return n===null?null:N(i.reifiedTypeArgs[0],n);default:return i.fromJSONField(n)}}de();var ai="0x1";de();le();function si(i){return i=v(i),i===`${ai}::string::String`}var oi=class i{__StructClass=!0;static get $typeName(){return`${ai}::string::String`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("String",{bytes:b.vector(b.u8())})}static fromFields(n){return i.reified().new({bytes:W(Nn("u8"),n.bytes)})}static fromFieldsWithTypes(n){if(!si(n.type))throw new Error("not a String type");return i.reified().new({bytes:F(Nn("u8"),n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:ln("vector<u8>",this.bytes)}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:N(Nn("u8"),n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!si(n.type))throw new Error(`object at ${n.fields.id} is not a String object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!si(n.bcs.type))throw new Error("object at is not a String object");return i.fromBcs((0,j.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching String object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!si(a.data.bcs.type))throw new Error(`object at id ${r} is not a String object`);return i.fromSuiObjectData(a.data)}};de();de();var Ht="0x2";le();function ci(i){return i=v(i),i===`${Ht}::object::ID`}var dn=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::ID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;bytes;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.bytes=r.bytes}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("ID",{bytes:b.bytes(32).transform({input:n=>(0,j.fromHEX)(n),output:n=>(0,j.toHEX)(n)})})}static fromFields(n){return i.reified().new({bytes:W("address",n.bytes)})}static fromFieldsWithTypes(n){if(!ci(n.type))throw new Error("not a ID type");return i.reified().new({bytes:F("address",n.fields.bytes)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{bytes:this.bytes}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({bytes:N("address",n.bytes)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!ci(n.type))throw new Error(`object at ${n.fields.id} is not a ID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!ci(n.bcs.type))throw new Error("object at is not a ID object");return i.fromBcs((0,j.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching ID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!ci(a.data.bcs.type))throw new Error(`object at id ${r} is not a ID object`);return i.fromSuiObjectData(a.data)}};function Ai(i){return i=v(i),i===`${Ht}::object::UID`}var Ze=class i{__StructClass=!0;static get $typeName(){return`${Ht}::object::UID`}static $numTypeParams=0;static $isPhantom=[];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id}static reified(){return{typeName:i.$typeName,fullTypeName:_(i.$typeName),typeArgs:[],isPhantom:i.$isPhantom,reifiedTypeArgs:[],fromFields:n=>i.fromFields(n),fromFieldsWithTypes:n=>i.fromFieldsWithTypes(n),fromBcs:n=>i.fromBcs(n),bcs:i.bcs,fromJSONField:n=>i.fromJSONField(n),fromJSON:n=>i.fromJSON(n),fromSuiParsedData:n=>i.fromSuiParsedData(n),fromSuiObjectData:n=>i.fromSuiObjectData(n),fetch:async(n,r)=>i.fetch(n,r),new:n=>new i([],n),kind:"StructClassReified"}}static get r(){return i.reified()}static phantom(){return re(i.reified())}static get p(){return i.phantom()}static get bcs(){return b.struct("UID",{id:dn.bcs})}static fromFields(n){return i.reified().new({id:W(dn.reified(),n.id)})}static fromFieldsWithTypes(n){if(!Ai(n.type))throw new Error("not a UID type");return i.reified().new({id:F(dn.reified(),n.fields.id)})}static fromBcs(n){return i.fromFields(i.bcs.parse(n))}toJSONField(){return{id:this.id}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n){return i.reified().new({id:N(dn.reified(),n.id)})}static fromJSON(n){if(n.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return i.fromJSONField(n)}static fromSuiParsedData(n){if(n.dataType!=="moveObject")throw new Error("not an object");if(!Ai(n.type))throw new Error(`object at ${n.fields.id} is not a UID object`);return i.fromFieldsWithTypes(n)}static fromSuiObjectData(n){if(n.bcs){if(n.bcs.dataType!=="moveObject"||!Ai(n.bcs.type))throw new Error("object at is not a UID object");return i.fromBcs((0,j.fromB64)(n.bcs.bcsBytes))}if(n.content)return i.fromSuiParsedData(n.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r){let a=await n.getObject({id:r,options:{showBcs:!0}});if(a.error)throw new Error(`error fetching UID object at id ${r}: ${a.error.code}`);if(a.data?.bcs?.dataType!=="moveObject"||!Ai(a.data.bcs.type))throw new Error(`object at id ${r} is not a UID object`);return i.fromSuiObjectData(a.data)}};function ot(i,n){return i.moveCall({target:`${sc.PUBLISHED_AT}::bytes32::from_hex`,arguments:[$e(i,n,`${oi.$typeName}`)]})}async function Ct(i,n,r=[]){let a=await i(n),s=r.concat(a.data);return a.hasNextPage&&a.nextCursor?Ct(i,a.nextCursor,s):s}var mi=class extends Oe{constructor(r,a){super();this.nodeRpcUrlsConfig=r;this.api=a;this.client=new Ut({url:r.getNodeRpcUrl(this.chainSymbol)})}chainType="SUI";chainSymbol="SUI";client;send(){throw new C("Method send not implemented.")}async buildRawTransactionSwap(r){let a=r.sourceToken.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");(0,ss.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin);let s=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(s,a)}async buildRawTransactionSwapFromParams(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toTokenAddress:A,minimumReceiveAmount:u}=r,m=new at;m.setSender(o);let l={bridge:a.bridgeObjectAddress,coin:ee({balance:BigInt(s),type:c}),receiveAmountMin:BigInt(u)},g=zo(m,[c,A],l),S=await Ct(h=>this.client.getCoins({owner:r.toAccountAddress,coinType:A,cursor:h}));return S.length===0||!S[0]?m.transferObjects([g],r.toAccountAddress):m.mergeCoins(S[0].coinObjectId,[g]),await m.toJSON({client:this.client})}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api),{messenger:s}=a,o=r.sourceToken.suiAddresses;if(!o)throw new C("SUI token must contain 'suiAddresses'");switch((0,ss.setAddress)(o.bridgeAddress,o.bridgeAddressOrigin),(0,cc.setAddress)(o.utilsAddress),s){case 1:return this.buildRawTransactionAllbridgeSend(a,o);case 2:return this.buildRawTransactionWormholeSend(a,o);case 3:return this.buildRawTransactionCctpSend(r,a,o)}}async buildRawTransactionAllbridgeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;if(T.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};qa(T,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.allbridgeMessengerObjectAddress,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};qa(T,c,w)}return await T.toJSON({client:this.client})}async buildRawTransactionWormholeSend(r,a){let{amount:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=r,h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;if(T.setSender(o),g==="stablecoin"){let I=BigInt(s)-BigInt(h),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:qr,amount:ee({balance:I,type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:c}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};Qa(T,c,w)}else{let I=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),w={bridge:a.bridgeObjectAddress,messenger:a.wormholeMessengerObjectAddress,wormholeState:a.wormholeStateObjectAddress,theClock:qr,amount:ee({balance:BigInt(s),type:c}),destinationChainId:A,nonce:Tt(),recipient:ot(T,ze(u)),receiveToken:ot(T,ze(m)),gasOracle:a.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:c}),feeSuiCoin:I};Qa(T,c,w)}return await T.toJSON({client:this.client})}async buildRawTransactionCctpSend(r,a,s){let{amount:o,fromAccountAddress:c,fromTokenAddress:A,toChainId:u,toAccountAddress:m,fee:l,gasFeePaymentMethod:g,extraGas:S}=a;(0,oc.setAddress)(s.cctpAddress,s.cctpAddressOrigin);let h=l;S&&(h=(0,ui.Big)(h).plus(S).toFixed());let T=new at;T.setSender(c);let I=ot(T,ze(m)),w;if(r.destinationToken.chainType==="SOLANA"){let R=await Dr(this.chainType,r.toAccountAddress,r.destinationToken.tokenAddress,this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"));w=ot(T,ze(R))}else w=I;if(g==="stablecoin"){let R=BigInt(o)-BigInt(h),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:R,type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(h),type:A}),feeSuiCoin:ee({balance:BigInt(0),useGasCoin:!1})};ns(T,A,O)}else{let R=h==="0"?ee({balance:BigInt(h),useGasCoin:!1}):ee({balance:BigInt(h)}),O={cctpBridge:s.cctpObjectAddress,tokenMessengerMinterState:s.cctpTokenMessengerMinterStateObjectAddress,messageTransmitterState:s.cctpMessageTransmitterStateObjectAddress,treasury:s.cctpTreasuryObjectAddress,denyList:s.cctpDenyListObjectAddress,amount:ee({balance:BigInt(o),type:A}),destinationChainId:u,recipient:w,recipientWalletAddress:I,gasOracle:s.gasOracleObjectAddress,feeTokenCoin:ee({balance:BigInt(0),type:A}),feeSuiCoin:R};ns(T,A,O)}return await T.toJSON({client:this.client})}};var mc=require("big.js");var Ac=oe(require("bn.js"));function li(i){return"0x"+new Ac.default(i).toString("hex")}function uc(i){return new Promise(n=>setTimeout(()=>n(),i))}async function di(i,n){let r=await i.trx.sign(n);if(!r.signature)throw new qt("Transaction was not signed properly");let s=(await i.trx.sendRawTransaction(r)).transaction.txID;return await Zu(i,s),{txId:s}}async function Zu(i,n,r=1e4){let a=Date.now();for(;;){if(Date.now()-a>r)throw new bn("Transaction not found");let s=await i.trx.getUnconfirmedTransactionInfo(n);if(!s?.receipt){await uc(2e3);continue}if(s.receipt.result==="SUCCESS")return s;throw new bn(`Transaction status is ${s.receipt.result}`)}}var pr=class extends Oe{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async send(r){let a=await He(this.chainType,r,this.api),s=await this.buildRawTransactionSendFromParams(a);return await di(this.tronWeb,s)}async buildRawTransactionSwap(r){let a=St(this.chainType,r);return await this.buildRawTransactionSwapFromParams(a)}async buildRawTransactionSwapFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toAccountAddress:A,toTokenAddress:u,minimumReceiveAmount:m}=r,l=[{type:"uint256",value:a},{type:"bytes32",value:c},{type:"bytes32",value:u},{type:"address",value:A},{type:"uint256",value:m}];return this.buildRawTransaction(s,"swap(uint256,bytes32,bytes32,address,uint256)",l,"0",o)}async buildRawTransactionSend(r){let a=await He(this.chainType,r,this.api);return this.buildRawTransactionSendFromParams(a)}async buildRawTransactionSendFromParams(r){let{amount:a,contractAddress:s,fromAccountAddress:o,fromTokenAddress:c,toChainId:A,toAccountAddress:u,toTokenAddress:m,messenger:l,fee:g,gasFeePaymentMethod:S,extraGas:h}=r,T=g;h&&(T=(0,mc.Big)(T).plus(h).toFixed());let I=Tt().toString(),w,R,O;return l==3?(S==="stablecoin"?(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:T}],R="0"):(w=[{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"uint256",value:0}],R=T),O="bridge(uint256,bytes32,uint256,uint256)"):(S==="stablecoin"?(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:T}],R="0"):(w=[{type:"bytes32",value:c},{type:"uint256",value:a},{type:"bytes32",value:u},{type:"uint256",value:A},{type:"bytes32",value:m},{type:"uint256",value:I},{type:"uint8",value:l},{type:"uint256",value:0}],R=T),O="swapAndBridge(bytes32,uint256,bytes32,uint256,bytes32,uint256,uint8,uint256)"),this.buildRawTransaction(s,O,w,R,o)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var pi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new Wr(n,r,a,s)}rawTxBuilder;async getAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return await this.tokenService.getAllowance({...s,spender:o},a)}async checkAllowance(n,r){let a,s;r?(a=n,s=r):s=n;let o=zn(s.token,s.messenger);return this.tokenService.checkAllowance({...s,spender:o},a)}async approve(n,r){let a=zn(r.token,r.messenger);return this.tokenService.approve(n,{...r,spender:a})}async send(n,r){return z(r.amount),q("amount",r.amount,r.sourceToken.decimals),Ur(r.sourceToken.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,n).send(r)}};function zn(i,n){if(n&&n==3){if(i.cctpAddress)return i.cctpAddress;throw new Ge("Such route does not support CCTP protocol")}else return i.bridgeAddress}function Ur(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new Kn(s,n,r);{let o=r.getNodeRpcUrl(i);return new Kn(new dc.Web3(o),n,r)}}case"TRX":{if(s)return new pr(s,n);{let o=r.getNodeRpcUrl(i);return new pr(new lc.TronWeb({fullHost:o,solidityNode:o,eventServer:o}),n)}}case"SOLANA":return new Gr(r.getNodeRpcUrl("SOL"),{wormholeMessengerProgramId:a.wormholeMessengerProgramId,solanaLookUpTable:a.solanaLookUpTable,cctpParams:a.cctpParams,jupiterUrl:a.jupiterUrl,jupiterMaxAccounts:a.jupiterMaxAccounts},n);case"SRB":return new Vr(r,a,n);case"SUI":return new mi(r,n)}}var bc=require("big.js");var Tc=require("tronweb"),jn=require("web3");var It=require("big.js");function pc(i,n,r,a,s){let o=L(i,3),c=(0,It.Big)(o),A=(0,It.Big)(r),u=(0,It.Big)(a).plus(s),m,l;if(A.eq(0)||u.eq(0)){let S=c.div(2);m=(0,It.Big)(a).plus(S),l=(0,It.Big)(s).plus(S)}else m=(0,It.Big)(a).plus(c.mul(a).div(u)),l=(0,It.Big)(s).plus(c.mul(s).div(u));return(0,It.Big)(Ps(n,m.toFixed(),l.toFixed())).minus(A).toFixed()}function gc(i){let n=L(i,3);return(0,It.Big)(n).round().toFixed()}var Et=require("web3");var Ju={abi:[{inputs:[{internalType:"address",name:"_router",type:"address"},{internalType:"uint256",name:"_a",type:"uint256"},{internalType:"contract ERC20",name:"_token",type:"address"},{internalType:"uint16",name:"_feeShareBP",type:"uint16"},{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"},{internalType:"string",name:"lpName",type:"string"},{internalType:"string",name:"lpSymbol",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Deposit",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"previousOwner",type:"address"},{indexed:!0,internalType:"address",name:"newOwner",type:"address"}],name:"OwnershipTransferred",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"RewardsClaimed",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"recipient",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedFromVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!1,internalType:"address",name:"sender",type:"address"},{indexed:!1,internalType:"address",name:"token",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"vUsdAmount",type:"uint256"},{indexed:!1,internalType:"uint256",name:"fee",type:"uint256"}],name:"SwappedToVUsd",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"user",type:"address"},{indexed:!1,internalType:"uint256",name:"amount",type:"uint256"}],name:"Withdraw",type:"event"},{stateMutability:"payable",type:"fallback"},{inputs:[],name:"a",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"accRewardPerShareP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adjustTotalLpAmount",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"adminFeeAmount",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"adminFeeShareBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"balanceRatioMinBP",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canDeposit",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"canWithdraw",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"claimAdminFee",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"claimRewards",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"d",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"pure",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"amount",type:"uint256"}],name:"deposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"feeShareBP",outputs:[{internalType:"uint16",name:"",type:"uint16"}],stateMutability:"view",type:"function"},{inputs:[],name:"getPrice",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"x",type:"uint256"}],name:"getY",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"owner",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"pendingReward",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"renounceOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"reserves",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"router",outputs:[{internalType:"address",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"_adminFeeShareBP",type:"uint256"}],name:"setAdminFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint256",name:"_balanceRatioMinBP",type:"uint256"}],name:"setBalanceRatioMinBP",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"uint16",name:"_feeShareBP",type:"uint16"}],name:"setFeeShare",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_router",type:"address"}],name:"setRouter",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"_stopAuthority",type:"address"}],name:"setStopAuthority",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"startWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopDeposit",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"stopWithdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"uint256",name:"receiveAmountMin",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapFromVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"},{internalType:"bool",name:"zeroFee",type:"bool"}],name:"swapToVUsd",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"token",outputs:[{internalType:"contract ERC20",name:"",type:"address"}],stateMutability:"view",type:"function"},{inputs:[],name:"tokenBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"newOwner",type:"address"}],name:"transferOwnership",outputs:[],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"user",type:"address"}],name:"userRewardDebt",outputs:[{internalType:"uint256",name:"amount",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"vUsdBalance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"uint256",name:"amountLp",type:"uint256"}],name:"withdraw",outputs:[],stateMutability:"nonpayable",type:"function"},{stateMutability:"payable",type:"receive"}]},Dn=Ju;var Pe=class{lpAmount;rewardDebt;constructor(n){this.lpAmount=n.lpAmount,this.rewardDebt=n.rewardDebt}get userLiquidity(){return G(this.lpAmount,3).toFixed()}earned(n,r){let a=Ts(this.lpAmount,this.rewardDebt,n.accRewardPerShareP,n.p);return r?G(a,r).toFixed():a}};var Ue=class{};var gr=class extends Ue{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";P=52;async getUserBalanceInfo(r,a){let s;try{s=await Mr(this.getUserBalanceInfoByBatch(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5e3)}catch{s=await Ji(()=>this.getUserBalanceInfoPerProperty(r,a),`Cannot get UserBalanceInfo for ${a.name} on ${a.chainSymbol}`,5,2e3)}return s}async getPoolInfoFromChain(r){let a;try{a=await Mr(this.getPoolInfoByBatch(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5e3)}catch{a=await Ji(()=>this.getPoolInfoPerProperty(r),`Cannot get PoolInfo for ${r.name} on ${r.chainSymbol}`,5,2e3)}return a}async getUserBalanceInfoByBatch(r,a){let s=new this.web3.eth.BatchRequest,o=this.getPoolContract(a.poolAddress),c=o.methods.userRewardDebt(r).encodeABI(),A=o.methods.balanceOf(r).encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]});let[u,m]=await s.execute();if(u&&m&&!u.error&&!m.error)return new Pe({lpAmount:Et.Web3.utils.toBigInt(m.result).toString(),rewardDebt:Et.Web3.utils.toBigInt(u.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){let s=(await this.getPoolContract(a.poolAddress).methods.userRewardDebt(r).call()).toString(),o=(await this.getPoolContract(a.poolAddress).methods.balanceOf(r).call()).toString();return new Pe({lpAmount:o,rewardDebt:s})}async getPoolInfoByBatch(r){let a=new this.web3.eth.BatchRequest,s=this.getPoolContract(r.poolAddress),o=s.methods.a().encodeABI(),c=s.methods.d().encodeABI(),A=s.methods.tokenBalance().encodeABI(),u=s.methods.vUsdBalance().encodeABI(),m=s.methods.totalSupply().encodeABI(),l=s.methods.accRewardPerShareP().encodeABI();a.add({method:"eth_call",params:[{to:r.poolAddress,data:o},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:c},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:A},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:u},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:m},"latest"]}),a.add({method:"eth_call",params:[{to:r.poolAddress,data:l},"latest"]});let[g,S,h,T,I,w]=await a.execute();if(g&&S&&h&&T&&I&&w&&!g.error&&!S.error&&!h.error&&!T.error&&!I.error&&!w.error){let R=Et.Web3.utils.toBigInt(h.result).toString(),O=Et.Web3.utils.toBigInt(T.result).toString(),U=Te({tokenBalance:R,vUsdBalance:O});return{aValue:Et.Web3.utils.toBigInt(g.result).toString(),dValue:Et.Web3.utils.toBigInt(S.result).toString(),tokenBalance:R,vUsdBalance:O,totalLpAmount:Et.Web3.utils.toBigInt(I.result).toString(),accRewardPerShareP:Et.Web3.utils.toBigInt(w.result).toString(),p:this.P,imbalance:U}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){let a=this.getPoolContract(r.poolAddress),s=(await a.methods.a().call()).toString(),o=(await a.methods.d().call()).toString(),c=(await a.methods.tokenBalance().call()).toString(),A=(await a.methods.vUsdBalance().call()).toString(),u=(await a.methods.totalSupply().call()).toString(),m=(await a.methods.accRewardPerShareP().call()).toString(),l=Te({tokenBalance:c,vUsdBalance:A});return{aValue:s,dValue:o,tokenBalance:c,vUsdBalance:A,totalLpAmount:u,accRewardPerShareP:m,p:this.P,imbalance:l}}async buildRawTransactionDeposit(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.deposit(r.amount).encodeABI()})}async buildRawTransactionWithdraw(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.withdraw(r.amount).encodeABI()})}async buildRawTransactionClaimRewards(r){return Promise.resolve({...this.buildTxParams(r),data:this.getPoolContract(r.token.poolAddress).methods.claimRewards().encodeABI()})}buildTxParams(r){return{from:r.accountAddress,to:r.token.poolAddress,value:"0"}}getPoolContract(r){return new this.web3.eth.Contract(Dn.abi,r)}};var gi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s}async approve(n,r){if(r){let a=n,s=r;return this.tokenService.buildRawTransactionApprove({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.buildRawTransactionApprove({...a,spender:a.token.poolAddress})}}async deposit(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,n.token.decimals).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionDeposit(n)}async withdraw(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),n.amount=L(n.amount,3).toFixed(),Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionWithdraw(n)}async claimRewards(n,r){return Wn(n.token.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).buildRawTransactionClaimRewards(n)}};var At=require("@project-serum/anchor"),ct=require("@solana/web3.js");var fi=class extends Ue{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";P=48;async getUserBalanceInfo(r,a){let s=this.buildAnchorProvider(r),o=this.getBridge(a.bridgeAddress,s),c=new ct.PublicKey(a.poolAddress),A=await o.account.pool.fetch(c);try{let u=await Yi(new ct.PublicKey(r),A.mint,o.programId),{lpAmount:m,rewardDebt:l}=await o.account.userDeposit.fetch(u);return new Pe({lpAmount:m.toString(),rewardDebt:l.toString()})}catch{return new Pe({lpAmount:"0",rewardDebt:"0"})}}async getPoolInfoFromChain(r){let a=this.buildAnchorProvider(r.bridgeAddress),s=await this.getBridge(r.bridgeAddress,a).account.pool.fetch(r.poolAddress),o=s.vUsdBalance.toString(),c=s.tokenBalance.toString(),A=Te({tokenBalance:c,vUsdBalance:o});return{dValue:s.d.toString(),aValue:s.a.toString(),totalLpAmount:s.totalLpAmount.toString(),vUsdBalance:o,tokenBalance:c,accRewardPerShareP:s.accRewardPerShareP.toString(),p:this.P,imbalance:A}}async buildRawTransactionDeposit(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.deposit(new At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.PublicKey(r.accountAddress),await In(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionWithdraw(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.withdraw(new At.BN(r.amount)).accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.PublicKey(r.accountAddress),await In(c,r.txFeeParams,this.solanaRpcUrl),c}async buildRawTransactionClaimRewards(r){let{bridge:a,accounts:s,preInstructions:o}=await this.prepareDataForTransaction(r),c=await a.methods.claimRewards().accounts(s).preInstructions(o).transaction();return c.recentBlockhash=(await this.buildAnchorProvider(r.accountAddress).connection.getLatestBlockhash()).blockhash,c.feePayer=new ct.PublicKey(r.accountAddress),await In(c,r.txFeeParams,this.solanaRpcUrl),c}async prepareDataForTransaction(r){let a=this.buildAnchorProvider(r.accountAddress),s=this.getBridge(r.token.bridgeAddress,a),{accounts:o,preInstructions:c}=await this._getLPTransactionData(s,r.token.poolAddress,r.accountAddress,a);return{bridge:s,accounts:o,preInstructions:c}}getBridge(r,a){return new At.Program(Hn,r,a)}buildAnchorProvider(r){let a=new ct.Connection(this.solanaRpcUrl,"confirmed"),s=new ct.PublicKey(r);return new At.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}async _getLPTransactionData(r,a,s,o){let c=new ct.PublicKey(s),A=await Vt(r.programId),u=await Pn(r.programId),m=new ct.PublicKey(a),g=(await r.account.pool.fetch(m)).mint,S=await Ke(c,g),h=await wn(g,r.programId),T=await Yi(c,g,r.programId),I=[At.web3.ComputeBudgetProgram.setComputeUnitLimit({units:1e6})];try{await Cn(S,o)}catch{let U=await At.Spl.associatedToken(o).methods.create().accounts({mint:g,owner:c,associatedAccount:S}).instruction();I.push(U)}try{await r.account.userDeposit.fetch(T)}catch{let O=await r.methods.initDepositAccount().accounts({mint:g,user:c,userDeposit:T}).instruction();I.push(O)}return{accounts:{mint:g,user:c,config:A,pool:m,bridgeAuthority:u,userDeposit:T,userToken:S,bridgeToken:h},preInstructions:I}}};var Lh=require("@stellar/stellar-sdk");var e=require("@stellar/stellar-sdk"),Lu=e.contract.Spec,Xu=e.contract.Client;var yi=class extends Xu{constructor(r){super(new Lu(["AAAAAAAAAAAAAAAKaW5pdGlhbGl6ZQAAAAAABwAAAAAAAAAFYWRtaW4AAAAAAAATAAAAAAAAAAZicmlkZ2UAAAAAABMAAAAAAAAAAWEAAAAAAAAKAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAADGZlZV9zaGFyZV9icAAAAAoAAAAAAAAAFGJhbGFuY2VfcmF0aW9fbWluX2JwAAAACgAAAAAAAAASYWRtaW5fZmVlX3NoYXJlX2JwAAAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAHZGVwb3NpdAAAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABmFtb3VudAAAAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAId2l0aGRyYXcAAAACAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAACWFtb3VudF9scAAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3dhcF90b192X3VzZAAAAAAAAAMAAAAAAAAABHVzZXIAAAATAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAAPc3dhcF9mcm9tX3ZfdXNkAAAAAAQAAAAAAAAABHVzZXIAAAATAAAAAAAAAAt2dXNkX2Ftb3VudAAAAAAKAAAAAAAAABJyZWNlaXZlX2Ftb3VudF9taW4AAAAAAAoAAAAAAAAACHplcm9fZmVlAAAAAQAAAAEAAAPpAAAACgAAAAM=","AAAAAAAAAAAAAAANY2xhaW1fcmV3YXJkcwAAAAAAAAEAAAAAAAAABnNlbmRlcgAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAdgYWRtaW5gAAAAAA1zZXRfZmVlX3NoYXJlAAAAAAAAAQAAAAAAAAAMZmVlX3NoYXJlX2JwAAAACgAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAWYWRqdXN0X3RvdGFsX2xwX2Ftb3VudAAAAAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAYc2V0X2JhbGFuY2VfcmF0aW9fbWluX2JwAAAAAQAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAMc3RvcF9kZXBvc2l0AAAAAAAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAANc3RhcnRfZGVwb3NpdAAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAANc3RvcF93aXRoZHJhdwAAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAOc3RhcnRfd2l0aGRyYXcAAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAASc2V0X3N0b3BfYXV0aG9yaXR5AAAAAAABAAAAAAAAAA5zdG9wX2F1dGhvcml0eQAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAAKc2V0X2JyaWRnZQAAAAAAAQAAAAAAAAAGYnJpZGdlAAAAAAATAAAAAQAAA+kAAAPtAAAAAAAAAAM=","AAAAAAAAAAAAAAAJc2V0X2FkbWluAAAAAAAAAQAAAAAAAAAJbmV3X2FkbWluAAAAAAAAEwAAAAEAAAPpAAAD7QAAAAAAAAAD","AAAAAAAAAAAAAAATc2V0X2FkbWluX2ZlZV9zaGFyZQAAAAABAAAAAAAAABJhZG1pbl9mZWVfc2hhcmVfYnAAAAAAAAoAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAAAAAAPY2xhaW1fYWRtaW5fZmVlAAAAAAAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAAAAAAZgdmlld2AAAAAAAA5wZW5kaW5nX3Jld2FyZAAAAAAAAQAAAAAAAAAEdXNlcgAAABMAAAABAAAD6QAAAAoAAAAD","AAAAAAAAAAAAAAAIZ2V0X3Bvb2wAAAAAAAAAAQAAA+kAAAfQAAAABFBvb2wAAAAD","AAAAAAAAAAAAAAAJZ2V0X2FkbWluAAAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAASZ2V0X3N0b3BfYXV0aG9yaXR5AAAAAAAAAAAAAQAAA+kAAAATAAAAAw==","AAAAAAAAAAAAAAAKZ2V0X2JyaWRnZQAAAAAAAAAAAAEAAAPpAAAAEwAAAAM=","AAAAAAAAAAAAAAAQZ2V0X3VzZXJfZGVwb3NpdAAAAAEAAAAAAAAABHVzZXIAAAATAAAAAQAAA+kAAAfQAAAAC1VzZXJEZXBvc2l0AAAAAAM=","AAAAAAAAAAAAAAAHdXBncmFkZQAAAAABAAAAAAAAAA1uZXdfd2FzbV9oYXNoAAAAAAAD7gAAACAAAAABAAAD6QAAA+0AAAAAAAAAAw==","AAAAAQAAAAAAAAAAAAAAD1N3YXBwZWRGcm9tVlVzZAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAlyZWNpcGllbnQAAAAAAAATAAAAAAAAAAV0b2tlbgAAAAAAABMAAAAAAAAAC3Z1c2RfYW1vdW50AAAAAAo=","AAAAAQAAAAAAAAAAAAAADVN3YXBwZWRUb1ZVc2QAAAAAAAAFAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAAA2ZlZQAAAAAKAAAAAAAAAAZzZW5kZXIAAAAAABMAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAALdnVzZF9hbW91bnQAAAAACg==","AAAAAQAAAAAAAAAAAAAAB0RlcG9zaXQAAAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAACFdpdGhkcmF3AAAAAgAAAAAAAAAGYW1vdW50AAAAAAAKAAAAAAAAAAR1c2VyAAAAEw==","AAAAAQAAAAAAAAAAAAAADlJld2FyZHNDbGFpbWVkAAAAAAACAAAAAAAAAAZhbW91bnQAAAAAAAoAAAAAAAAABHVzZXIAAAAT","AAAAAQAAAAAAAAAAAAAABkJyaWRnZQAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAgAAAAAAAAAAAAAAB0RhdGFLZXkAAAAAAQAAAAEAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAEAAAAT","AAAAAQAAAAAAAAAAAAAABFBvb2wAAAAPAAAAAAAAAAFhAAAAAAAACgAAAAAAAAAWYWNjX3Jld2FyZF9wZXJfc2hhcmVfcAAAAAAACgAAAAAAAAAQYWRtaW5fZmVlX2Ftb3VudAAAAAoAAAAAAAAAEmFkbWluX2ZlZV9zaGFyZV9icAAAAAAACgAAAAAAAAAUYmFsYW5jZV9yYXRpb19taW5fYnAAAAAKAAAAAAAAAAtjYW5fZGVwb3NpdAAAAAABAAAAAAAAAAxjYW5fd2l0aGRyYXcAAAABAAAAAAAAAAFkAAAAAAAACgAAAAAAAAAIZGVjaW1hbHMAAAAEAAAAAAAAAAxmZWVfc2hhcmVfYnAAAAAKAAAAAAAAAAhyZXNlcnZlcwAAAAoAAAAAAAAABXRva2VuAAAAAAAAEwAAAAAAAAANdG9rZW5fYmFsYW5jZQAAAAAAAAoAAAAAAAAAD3RvdGFsX2xwX2Ftb3VudAAAAAAKAAAAAAAAAA12X3VzZF9iYWxhbmNlAAAAAAAACg==","AAAAAQAAAAAAAAAAAAAAC1VzZXJEZXBvc2l0AAAAAAIAAAAAAAAACWxwX2Ftb3VudAAAAAAAAAoAAAAAAAAAC3Jld2FyZF9kZWJ0AAAAAAo=","AAAAAQAAAAAAAAAAAAAABUFkbWluAAAAAAAAAQAAAAAAAAABMAAAAAAAABM=","AAAAAQAAAAAAAAAAAAAAEEdhc09yYWNsZUFkZHJlc3MAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAAAQAAAAAAAAAAAAAACEdhc1VzYWdlAAAAAQAAAAAAAAABMAAAAAAAA+wAAAAEAAAACg==","AAAAAQAAAAAAAAAAAAAAC05hdGl2ZVRva2VuAAAAAAEAAAAAAAAAATAAAAAAAAAT","AAAAAQAAAAAAAAAAAAAADVN0b3BBdXRob3JpdHkAAAAAAAABAAAAAAAAAAEwAAAAAAAAEw==","AAAABAAAAAAAAAAAAAAABUVycm9yAAAAAAAAKAAAAAAAAAANVW5pbXBsZW1lbnRlZAAAAAAAAAAAAAAAAAAAC0luaXRpYWxpemVkAAAAAAEAAAAAAAAADVVuaW5pdGlhbGl6ZWQAAAAAAAACAAAAAAAAAAxVbmF1dGhvcml6ZWQAAAADAAAAAAAAAApJbnZhbGlkQXJnAAAAAAAEAAAAAAAAAA5JbnZhbGlkQ2hhaW5JZAAAAAAABQAAAAAAAAATSW52YWxpZE90aGVyQ2hhaW5JZAAAAAAGAAAAAAAAAA5HYXNVc2FnZU5vdFNldAAAAAAABwAAAAAAAAANQnJva2VuQWRkcmVzcwAAAAAAAAgAAAAAAAAACE5vdEZvdW5kAAAACQAAAAAAAAAYVG9rZW5JbnN1ZmZpY2llbnRCYWxhbmNlAAAACgAAAAAAAAAKQ2FzdEZhaWxlZAAAAAAACwAAAAAAAAAMVTI1Nk92ZXJmbG93AAAADAAAAAAAAAAKWmVyb0Ftb3VudAAAAAAAZwAAAAAAAAAMUG9vbE92ZXJmbG93AAAAaAAAAAAAAAALWmVyb0NoYW5nZXMAAAAAaQAAAAAAAAARUmVzZXJ2ZXNFeGhhdXN0ZWQAAAAAAABqAAAAAAAAABpJbnN1ZmZpY2llbnRSZWNlaXZlZEFtb3VudAAAAAAAawAAAAAAAAAUQmFsYW5jZVJhdGlvRXhjZWVkZWQAAABsAAAAAAAAAAlGb3JiaWRkZW4AAAAAAABtAAAAAAAAABlVbmF1dGhvcml6ZWRTdG9wQXV0aG9yaXR5AAAAAAAAywAAAAAAAAAOU3dhcFByb2hpYml0ZWQAAAAAAMwAAAAAAAAAEkFtb3VudFRvb0xvd0ZvckZlZQAAAAAAzQAAAAAAAAAWQnJpZGdlVG9UaGVaZXJvQWRkcmVzcwAAAAAAzgAAAAAAAAAORW1wdHlSZWNpcGllbnQAAAAAAM8AAAAAAAAAE1NvdXJjZU5vdFJlZ2lzdGVyZWQAAAAA0AAAAAAAAAAVV3JvbmdEZXN0aW5hdGlvbkNoYWluAAAAAAAA0QAAAAAAAAATVW5rbm93bkFub3RoZXJDaGFpbgAAAADSAAAAAAAAABFUb2tlbnNBbHJlYWR5U2VudAAAAAAAANMAAAAAAAAAEE1lc3NhZ2VQcm9jZXNzZWQAAADUAAAAAAAAAAxOb3RFbm91Z2hGZWUAAADWAAAAAAAAAAlOb01lc3NhZ2UAAAAAAADXAAAAAAAAAA1Ob1JlY2VpdmVQb29sAAAAAAAA2AAAAAAAAAAGTm9Qb29sAAAAAADZAAAAAAAAABNVbmtub3duQW5vdGhlclRva2VuAAAAANoAAAAAAAAAD1dyb25nQnl0ZUxlbmd0aAAAAAEsAAAAAAAAAApIYXNNZXNzYWdlAAAAAAEtAAAAAAAAABdJbnZhbGlkUHJpbWFyeVNpZ25hdHVyZQAAAAEuAAAAAAAAABlJbnZhbGlkU2Vjb25kYXJ5U2lnbmF0dXJlAAAAAAABLwAAAAAAAAARTm9HYXNEYXRhRm9yQ2hhaW4AAAAAAAGQ"]),r);this.options=r}fromJSON={initialize:this.txFromJSON,deposit:this.txFromJSON,withdraw:this.txFromJSON,swap_to_v_usd:this.txFromJSON,swap_from_v_usd:this.txFromJSON,claim_rewards:this.txFromJSON,set_fee_share:this.txFromJSON,adjust_total_lp_amount:this.txFromJSON,set_balance_ratio_min_bp:this.txFromJSON,stop_deposit:this.txFromJSON,start_deposit:this.txFromJSON,stop_withdraw:this.txFromJSON,start_withdraw:this.txFromJSON,set_stop_authority:this.txFromJSON,set_bridge:this.txFromJSON,set_admin:this.txFromJSON,set_admin_fee_share:this.txFromJSON,claim_admin_fee:this.txFromJSON,pending_reward:this.txFromJSON,get_pool:this.txFromJSON,get_admin:this.txFromJSON,get_stop_authority:this.txFromJSON,get_bridge:this.txFromJSON,get_user_deposit:this.txFromJSON,upgrade:this.txFromJSON}};var hi=class extends Ue{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";P=48;async getUserBalanceInfo(r,a){let o=(await this.getContract(a.poolAddress).get_user_deposit({user:r})).result;if(o.isErr())throw new C;let c=o.unwrap();return new Pe({lpAmount:c.lp_amount.toString(),rewardDebt:c.reward_debt.toString()})}async getPoolInfoFromChain(r){let s=(await this.getContract(r.poolAddress).get_pool()).result;if(s.isErr())throw new C;let o=s.unwrap();return{aValue:o.a.toString(),accRewardPerShareP:o.acc_reward_per_share_p.toString(),dValue:o.d.toString(),tokenBalance:o.token_balance.toString(),p:this.P,totalLpAmount:o.total_lp_amount.toString(),vUsdBalance:o.v_usd_balance.toString(),imbalance:Te({tokenBalance:o.token_balance.toString(),vUsdBalance:o.v_usd_balance.toString()})}}async buildRawTransactionDeposit(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).deposit({sender:r.accountAddress,amount:BigInt(r.amount)})).toXDR()}async buildRawTransactionWithdraw(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).withdraw({sender:r.accountAddress,amount_lp:BigInt(r.amount)})).toXDR()}async buildRawTransactionClaimRewards(r){return(await this.getContract(r.token.poolAddress,r.accountAddress).claim_rewards({sender:r.accountAddress})).toXDR()}getContract(r,a){let s={publicKey:a,contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new yi(s)}};var Un=oe(zt());de();de();le();function bi(i){return i=v(i),i.startsWith(`${Ht}::balance::Balance<`)}var be=class i{__StructClass=!0;static get $typeName(){return`${Ht}::balance::Balance`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;value;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.value=r.value}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Balance",{value:b.u64()})}static fromFields(n,r){return i.reified(n).new({value:W("u64",r.value)})}static fromFieldsWithTypes(n,r){if(!bi(r.type))throw new Error("not a Balance type");return wt(r,[n]),i.reified(n).new({value:F("u64",r.fields.value)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{value:this.value.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({value:N("u64",r.value)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!bi(r.type))throw new Error(`object at ${r.fields.id} is not a Balance object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!bi(r.bcs.type))throw new Error("object at is not a Balance object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,j.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Balance object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!bi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Balance object`);return i.fromSuiObjectData(r,s.data)}};var As=oe(zt());de();var os=oe(zt());le();function Ti(i){return i=v(i),i.startsWith(`${os.PKG_V1}::pool_rewards::PoolRewards<`)}var pn=class i{__StructClass=!0;static get $typeName(){return`${os.PKG_V1}::pool_rewards::PoolRewards`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;accRewardPerShareP;adminFeeShareBp;adminFee;rewards;lpSupply;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.accRewardPerShareP=r.accRewardPerShareP,this.adminFeeShareBp=r.adminFeeShareBp,this.adminFee=r.adminFee,this.rewards=r.rewards,this.lpSupply=r.lpSupply}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolRewards",{acc_reward_per_share_p:b.u128(),admin_fee_share_bp:b.u64(),admin_fee:be.bcs,rewards:be.bcs,lp_supply:b.u64()})}static fromFields(n,r){return i.reified(n).new({accRewardPerShareP:W("u128",r.acc_reward_per_share_p),adminFeeShareBp:W("u64",r.admin_fee_share_bp),adminFee:W(be.reified(n),r.admin_fee),rewards:W(be.reified(n),r.rewards),lpSupply:W("u64",r.lp_supply)})}static fromFieldsWithTypes(n,r){if(!Ti(r.type))throw new Error("not a PoolRewards type");return wt(r,[n]),i.reified(n).new({accRewardPerShareP:F("u128",r.fields.acc_reward_per_share_p),adminFeeShareBp:F("u64",r.fields.admin_fee_share_bp),adminFee:F(be.reified(n),r.fields.admin_fee),rewards:F(be.reified(n),r.fields.rewards),lpSupply:F("u64",r.fields.lp_supply)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{accRewardPerShareP:this.accRewardPerShareP.toString(),adminFeeShareBp:this.adminFeeShareBp.toString(),adminFee:this.adminFee.toJSONField(),rewards:this.rewards.toJSONField(),lpSupply:this.lpSupply.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({accRewardPerShareP:N("u128",r.accRewardPerShareP),adminFeeShareBp:N("u64",r.adminFeeShareBp),adminFee:N(be.reified(n),r.adminFee),rewards:N(be.reified(n),r.rewards),lpSupply:N("u64",r.lpSupply)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ti(r.type))throw new Error(`object at ${r.fields.id} is not a PoolRewards object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ti(r.bcs.type))throw new Error("object at is not a PoolRewards object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,j.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolRewards object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Ti(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolRewards object`);return i.fromSuiObjectData(r,s.data)}};de();var cs=oe(zt());le();function Si(i){return i=v(i),i.startsWith(`${cs.PKG_V1}::pool_state::PoolState<`)}var gn=class i{__StructClass=!0;static get $typeName(){return`${cs.PKG_V1}::pool_state::PoolState`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;tokenBalance;vusdBalance;d;a;balanceRatioMinBp;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.tokenBalance=r.tokenBalance,this.vusdBalance=r.vusdBalance,this.d=r.d,this.a=r.a,this.balanceRatioMinBp=r.balanceRatioMinBp}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("PoolState",{token_balance:b.u64(),vusd_balance:b.u64(),d:b.u64(),a:b.u64(),balance_ratio_min_bp:b.u64()})}static fromFields(n,r){return i.reified(n).new({tokenBalance:W("u64",r.token_balance),vusdBalance:W("u64",r.vusd_balance),d:W("u64",r.d),a:W("u64",r.a),balanceRatioMinBp:W("u64",r.balance_ratio_min_bp)})}static fromFieldsWithTypes(n,r){if(!Si(r.type))throw new Error("not a PoolState type");return wt(r,[n]),i.reified(n).new({tokenBalance:F("u64",r.fields.token_balance),vusdBalance:F("u64",r.fields.vusd_balance),d:F("u64",r.fields.d),a:F("u64",r.fields.a),balanceRatioMinBp:F("u64",r.fields.balance_ratio_min_bp)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{tokenBalance:this.tokenBalance.toString(),vusdBalance:this.vusdBalance.toString(),d:this.d.toString(),a:this.a.toString(),balanceRatioMinBp:this.balanceRatioMinBp.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({tokenBalance:N("u64",r.tokenBalance),vusdBalance:N("u64",r.vusdBalance),d:N("u64",r.d),a:N("u64",r.a),balanceRatioMinBp:N("u64",r.balanceRatioMinBp)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Si(r.type))throw new Error(`object at ${r.fields.id} is not a PoolState object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Si(r.bcs.type))throw new Error("object at is not a PoolState object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,j.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching PoolState object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Si(s.data.bcs.type))throw new Error(`object at id ${a} is not a PoolState object`);return i.fromSuiObjectData(r,s.data)}};le();function Pi(i){return i=v(i),i.startsWith(`${As.PKG_V1}::pool::Pool<`)}var wi=class i{__StructClass=!0;static get $typeName(){return`${As.PKG_V1}::pool::Pool`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;state;rewards;feeShareBp;canDeposit;canWithdraw;decimals;balance;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.state=r.state,this.rewards=r.rewards,this.feeShareBp=r.feeShareBp,this.canDeposit=r.canDeposit,this.canWithdraw=r.canWithdraw,this.decimals=r.decimals,this.balance=r.balance}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("Pool",{id:Ze.bcs,state:gn.bcs,rewards:pn.bcs,fee_share_bp:b.u64(),can_deposit:b.bool(),can_withdraw:b.bool(),decimals:b.u8(),balance:be.bcs})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),state:W(gn.reified(n),r.state),rewards:W(pn.reified(n),r.rewards),feeShareBp:W("u64",r.fee_share_bp),canDeposit:W("bool",r.can_deposit),canWithdraw:W("bool",r.can_withdraw),decimals:W("u8",r.decimals),balance:W(be.reified(n),r.balance)})}static fromFieldsWithTypes(n,r){if(!Pi(r.type))throw new Error("not a Pool type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),state:F(gn.reified(n),r.fields.state),rewards:F(pn.reified(n),r.fields.rewards),feeShareBp:F("u64",r.fields.fee_share_bp),canDeposit:F("bool",r.fields.can_deposit),canWithdraw:F("bool",r.fields.can_withdraw),decimals:F("u8",r.fields.decimals),balance:F(be.reified(n),r.fields.balance)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,state:this.state.toJSONField(),rewards:this.rewards.toJSONField(),feeShareBp:this.feeShareBp.toString(),canDeposit:this.canDeposit,canWithdraw:this.canWithdraw,decimals:this.decimals,balance:this.balance.toJSONField()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:N(Ze.reified(),r.id),state:N(gn.reified(n),r.state),rewards:N(pn.reified(n),r.rewards),feeShareBp:N("u64",r.feeShareBp),canDeposit:N("bool",r.canDeposit),canWithdraw:N("bool",r.canWithdraw),decimals:N("u8",r.decimals),balance:N(be.reified(n),r.balance)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Pi(r.type))throw new Error(`object at ${r.fields.id} is not a Pool object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Pi(r.bcs.type))throw new Error("object at is not a Pool object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,j.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching Pool object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Pi(s.data.bcs.type))throw new Error(`object at id ${a} is not a Pool object`);return i.fromSuiObjectData(r,s.data)}};de();var us=oe(zt());le();function Ci(i){return i=v(i),i.startsWith(`${us.PKG_V1}::user_deposit::UserDeposit<`)}var Ii=class i{__StructClass=!0;static get $typeName(){return`${us.PKG_V1}::user_deposit::UserDeposit`}static $numTypeParams=1;static $isPhantom=[!0];$typeName=i.$typeName;$fullTypeName;$typeArgs;$isPhantom=i.$isPhantom;id;lpAmount;rewardDebt;constructor(n,r){this.$fullTypeName=_(i.$typeName,...n),this.$typeArgs=n,this.id=r.id,this.lpAmount=r.lpAmount,this.rewardDebt=r.rewardDebt}static reified(n){return{typeName:i.$typeName,fullTypeName:_(i.$typeName,M(n)),typeArgs:[M(n)],isPhantom:i.$isPhantom,reifiedTypeArgs:[n],fromFields:r=>i.fromFields(n,r),fromFieldsWithTypes:r=>i.fromFieldsWithTypes(n,r),fromBcs:r=>i.fromBcs(n,r),bcs:i.bcs,fromJSONField:r=>i.fromJSONField(n,r),fromJSON:r=>i.fromJSON(n,r),fromSuiParsedData:r=>i.fromSuiParsedData(n,r),fromSuiObjectData:r=>i.fromSuiObjectData(n,r),fetch:async(r,a)=>i.fetch(r,n,a),new:r=>new i([M(n)],r),kind:"StructClassReified"}}static get r(){return i.reified}static phantom(n){return re(i.reified(n))}static get p(){return i.phantom}static get bcs(){return b.struct("UserDeposit",{id:Ze.bcs,lp_amount:b.u64(),reward_debt:b.u64()})}static fromFields(n,r){return i.reified(n).new({id:W(Ze.reified(),r.id),lpAmount:W("u64",r.lp_amount),rewardDebt:W("u64",r.reward_debt)})}static fromFieldsWithTypes(n,r){if(!Ci(r.type))throw new Error("not a UserDeposit type");return wt(r,[n]),i.reified(n).new({id:F(Ze.reified(),r.fields.id),lpAmount:F("u64",r.fields.lp_amount),rewardDebt:F("u64",r.fields.reward_debt)})}static fromBcs(n,r){return i.fromFields(n,i.bcs.parse(r))}toJSONField(){return{id:this.id,lpAmount:this.lpAmount.toString(),rewardDebt:this.rewardDebt.toString()}}toJSON(){return{$typeName:this.$typeName,$typeArgs:this.$typeArgs,...this.toJSONField()}}static fromJSONField(n,r){return i.reified(n).new({id:N(Ze.reified(),r.id),lpAmount:N("u64",r.lpAmount),rewardDebt:N("u64",r.rewardDebt)})}static fromJSON(n,r){if(r.$typeName!==i.$typeName)throw new Error("not a WithTwoGenerics json object");return st(_(i.$typeName,M(n)),r.$typeArgs,[n]),i.fromJSONField(n,r)}static fromSuiParsedData(n,r){if(r.dataType!=="moveObject")throw new Error("not an object");if(!Ci(r.type))throw new Error(`object at ${r.fields.id} is not a UserDeposit object`);return i.fromFieldsWithTypes(n,r)}static fromSuiObjectData(n,r){if(r.bcs){if(r.bcs.dataType!=="moveObject"||!Ci(r.bcs.type))throw new Error("object at is not a UserDeposit object");let a=he(r.bcs.type).typeArgs;if(a.length!==1)throw new Error(`type argument mismatch: expected 1 type argument but got '${a.length}'`);let s=v(a[0]),o=v(M(n));if(s!==v(M(n)))throw new Error(`type argument mismatch: expected '${o}' but got '${s}'`);return i.fromBcs(n,(0,j.fromB64)(r.bcs.bcsBytes))}if(r.content)return i.fromSuiParsedData(n,r.content);throw new Error("Both `bcs` and `content` fields are missing from the data. Include `showBcs` or `showContent` in the request.")}static async fetch(n,r,a){let s=await n.getObject({id:a,options:{showBcs:!0}});if(s.error)throw new Error(`error fetching UserDeposit object at id ${a}: ${s.error.code}`);if(s.data?.bcs?.dataType!=="moveObject"||!Ci(s.data.bcs.type))throw new Error(`object at id ${a} is not a UserDeposit object`);return i.fromSuiObjectData(r,s.data)}};function yc(i,n,r){if(n.length===0||!n[0])return[];let a=n[0],s=i.reduce((A,u)=>A+BigInt(u),BigInt(0)),o=BigInt(a.balance),c=[];for(let A of n.slice(1)){if(o>s)return fc(r,a,c,i);o+=BigInt(A.balance),c.push(A)}return o>=s?fc(r,a,c,i):[]}function fc(i,n,r,a){let s=a.map(o=>i.pure.u64(o));return r.length>0&&i.mergeCoins(n.coinObjectId,r.map(o=>o.coinObjectId)),i.splitCoins(n.coinObjectId,s)}var Yu="0x0000000000000000000000000000000000000000000000000000000000000000";async function hc(i,n,r){let a=await i.devInspectTransactionBlock({sender:Yu,transactionBlock:n});if(a.effects.status.status!=="success")throw new Error(`inspectionResult failed. ${JSON.stringify(a,null,2)}`);let s=a.results?.pop()?.returnValues?.pop();if(!s)throw new Error(`Something with inspectionResult went wrong. ${JSON.stringify(a,null,2)}`);let[o,c]=s;return typeof r=="object"?r.fromBcs(Uint8Array.from(o)).toJSONField():dr(r).parse(Uint8Array.from(o))}var Bi=class extends Ue{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.client=new Ut({url:r})}chainType="SUI";client;async getUserBalanceInfo(r,a){if(!a.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=a.suiAddresses;if(!s)throw new C("SUI token must contain 'suiAddresses'");(0,Un.setAddress)(s.bridgeAddress,s.bridgeAddressOrigin);let c=(await this.fetchDeposits(r,a.originTokenAddress)).reduce((A,u)=>{if(u.data)return A.lpAmount+=BigInt(u.data.content.fields.lp_amount),A.rewardDebt+=BigInt(u.data.content.fields.reward_debt),A;throw new C("Deposits fetch failed")},{lpAmount:BigInt(0),rewardDebt:BigInt(0)});return new Pe({lpAmount:c.lpAmount.toString(),rewardDebt:c.rewardDebt.toString()})}async fetchDeposits(r,a){return await Ct(s=>this.client.getOwnedObjects({owner:r,filter:{StructType:Ii.phantom(re(a)).phantomType},options:{showContent:!0},cursor:s}))}async getPoolInfoFromChain(r){let a=r.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=48,o=new at;ec(o,r.originTokenAddress,a.bridgeObjectAddress);let c=await hc(this.client,o,wi.reified(re(r.originTokenAddress))),A=c.state.tokenBalance,u=c.state.vusdBalance,m=Te({tokenBalance:A,vUsdBalance:u});return{dValue:c.state.d,aValue:c.state.a,totalLpAmount:c.rewards.lpSupply,vUsdBalance:u,tokenBalance:A,accRewardPerShareP:c.rewards.accRewardPerShareP,p:s,imbalance:m}}async buildRawTransactionDeposit(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=await Ct(g=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:g}));if(s.length===0||!s[0])throw new gt("No coins to deposit");let o=s[0],c=new at;c.setSender(r.accountAddress);let{depositObj:A,isNewDeposit:u}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,c),[m]=yc([r.amount],s,c);if(!m)throw new gt("No coins to deposit");if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let l=Ho(c,r.token.originTokenAddress,{bridge:a.bridgeObjectAddress,userDeposit:A,coin:m});return c.mergeCoins(o.coinObjectId,[l]),u&&c.transferObjects([A],r.accountAddress),await c.toJSON({client:this.client})}async getDepositObject(r,a,s){let o=await this.fetchDeposits(r,a);if(o.length===0||!o[0]){let c=re(a).phantomType;return{depositObj:tc(s,c),isNewDeposit:!0}}else{if(o[0].data?.objectId)return{depositObj:o[0].data.objectId,isNewDeposit:!1};throw new C("Something went wrong while deposit")}}async buildRawTransactionWithdraw(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=Qo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c,amountLp:BigInt(r.amount)}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));if(!u[0]||!u[1])throw new C("No rewards found");return m[0]?o.mergeCoins(m[0].coinObjectId,[u[0],u[1]]):(o.mergeCoins(u[0],[u[1]]),o.transferObjects([u[0]],r.accountAddress)),await o.toJSON({client:this.client})}async buildRawTransactionClaimRewards(r){let a=r.token.suiAddresses;if(!a)throw new C("SUI token must contain 'suiAddresses'");if((0,Un.setAddress)(a.bridgeAddress,a.bridgeAddressOrigin),!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");let s=re(r.token.originTokenAddress).phantomType,o=new at;o.setSender(r.accountAddress);let{depositObj:c,isNewDeposit:A}=await this.getDepositObject(r.accountAddress,r.token.originTokenAddress,o);if(A)throw new gt("No deposit found");let u=qo(o,s,{bridge:a.bridgeObjectAddress,userDeposit:c}),m=await Ct(l=>this.client.getCoins({owner:r.accountAddress,coinType:r.token.originTokenAddress,cursor:l}));return m[0]?o.mergeCoins(m[0].coinObjectId,[u]):o.transferObjects([u],r.accountAddress),await o.toJSON({client:this.client})}};var Bt=require("web3");var fr=class extends Ue{constructor(r,a,s){super();this.tronWeb=r;this.api=a;s&&(this.web3=new Bt.Web3(s))}chainType="TRX";P=52;web3;async getUserBalanceInfo(r,a){let s;if(this.web3)try{s=await this.getUserBalanceInfoByBatch(this.web3,r,a)}catch{s=await this.getUserBalanceInfoPerProperty(r,a)}else s=await this.getUserBalanceInfoPerProperty(r,a);return s}async getUserBalanceInfoByBatch(r,a,s){let o=new r.BatchRequest,c=new r.eth.Contract(Dn.abi,Or(s.poolAddress)),A=c.methods.userRewardDebt(a).encodeABI(),u=c.methods.balanceOf(a).encodeABI();o.add({method:"eth_call",params:[{to:s.poolAddress,data:A},"latest"]}),o.add({method:"eth_call",params:[{to:s.poolAddress,data:u},"latest"]});let[m,l]=await o.execute();if(m&&l&&!m.error&&!l.error)return new Pe({lpAmount:Bt.Web3.utils.toBigInt(l.result).toString(),rewardDebt:Bt.Web3.utils.toBigInt(m.result).toString()});throw new Error("Batched failed")}async getUserBalanceInfoPerProperty(r,a){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r);let s=this.getContract(a.poolAddress),o=(await s.methods.userRewardDebt(r).call()).toString(),c=(await s.methods.balanceOf(r).call()).toString();return new Pe({lpAmount:c,rewardDebt:o})}async getPoolInfoFromChain(r){let a;if(this.web3)try{a=await this.getPoolInfoByBatch(this.web3,r)}catch{a=await this.getPoolInfoPerProperty(r)}else a=await this.getPoolInfoPerProperty(r);return a}async getPoolInfoByBatch(r,a){let s=new r.BatchRequest,o=new r.eth.Contract(Dn.abi,Or(a.poolAddress),this.web3),c=o.methods.a().encodeABI(),A=o.methods.d().encodeABI(),u=o.methods.tokenBalance().encodeABI(),m=o.methods.vUsdBalance().encodeABI(),l=o.methods.totalSupply().encodeABI(),g=o.methods.accRewardPerShareP().encodeABI();s.add({method:"eth_call",params:[{to:a.poolAddress,data:c},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:A},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:u},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:m},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:l},"latest"]}),s.add({method:"eth_call",params:[{to:a.poolAddress,data:g},"latest"]});let[S,h,T,I,w,R]=await s.execute();if(S&&h&&T&&I&&w&&R&&!S.error&&!h.error&&!T.error&&!I.error&&!w.error&&!R.error){let O=Bt.Web3.utils.toBigInt(T.result).toString(),U=Bt.Web3.utils.toBigInt(I.result).toString(),Ae=Te({tokenBalance:O,vUsdBalance:U});return{aValue:Bt.Web3.utils.toBigInt(S.result).toString(),dValue:Bt.Web3.utils.toBigInt(h.result).toString(),tokenBalance:O,vUsdBalance:U,totalLpAmount:Bt.Web3.utils.toBigInt(w.result).toString(),accRewardPerShareP:Bt.Web3.utils.toBigInt(R.result).toString(),p:this.P,imbalance:Ae}}throw new Error("Batched failed")}async getPoolInfoPerProperty(r){this.tronWeb.defaultAddress.base58||this.tronWeb.setAddress(r.poolAddress);let a=this.getContract(r.poolAddress),[s,o,c,A,u,m]=await Promise.all([a.methods.a().call(),a.methods.d().call(),a.methods.tokenBalance().call(),a.methods.vUsdBalance().call(),a.methods.totalSupply().call(),a.methods.accRewardPerShareP().call()]),l=c.toString(),g=A.toString(),S=Te({tokenBalance:l,vUsdBalance:g});return{aValue:s.toString(),dValue:o.toString(),tokenBalance:l,vUsdBalance:g,totalLpAmount:u.toString(),accRewardPerShareP:m.toString(),p:this.P,imbalance:S}}buildRawTransactionDeposit(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"deposit(uint256)",o,"0",s)}buildRawTransactionWithdraw(r){let{amount:a,accountAddress:s}=r,o=[{type:"uint256",value:a}];return this.buildRawTransaction(r.token.poolAddress,"withdraw(uint256)",o,"0",s)}buildRawTransactionClaimRewards(r){let{accountAddress:a}=r,s=[];return this.buildRawTransaction(r.token.poolAddress,"claimRewards()",s,"0",a)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}getContract(r){return this.tronWeb.contract(Dn.abi,r)}};var vi=class{constructor(n,r,a,s){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a;this.tokenService=s;this.rawTxBuilder=new gi(n,r,this.params,s);let o=a.cachePoolInfoChainSec>0?a.cachePoolInfoChainSec*1e3:20*1e3;this.cache=new Rt({defaultTtl:o})}rawTxBuilder;cache;async getAllowance(n,r){if(r){let a=n,s=r;return await this.tokenService.getAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return await this.tokenService.getAllowance({...a,spender:a.token.poolAddress})}}async checkAllowance(n,r){if(r){let a=n,s=r;return this.tokenService.checkAllowance({...s,spender:s.token.poolAddress},a)}else{let a=n;return this.tokenService.checkAllowance({...a,spender:a.token.poolAddress})}}async approve(n,r){return this.tokenService.approve(n,{...r,spender:r.token.poolAddress})}async getAmountToBeDeposited(n,r,a){z(n),q("amount",n,r.decimals);let s=await this.getPoolInfoFromChain(r,a),{vUsdBalance:o,tokenBalance:c,aValue:A,dValue:u}=s,m=pc(n,A,u,c,o);return G(m,3).toFixed()}async getAmountToBeWithdrawn(n,r,a,s){z(n),q("amount",n,a.decimals);let o=await this.getPoolInfoFromChain(a,s),c=gc(n),A=xe(c,a.decimals),m=(await this.getUserBalanceInfo(r,a,s)).earned(o)||"0",l=(0,bc.Big)(A).plus(m).toFixed();return G(l,a.decimals).toFixed()}async getUserBalanceInfo(n,r,a){return Wn(r.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,a).getUserBalanceInfo(n,r)}async getPoolInfoFromChain(n,r){let a={chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},s=this.cache.get(a);if(s)return s;{let o=await Wn(n.chainSymbol,this.api,this.nodeRpcUrlsConfig,this.params,r).getPoolInfoFromChain(n);return this.cache.put(a,o),this.api.cachePut({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress},o),o}}};function Wn(i,n,r,a,s){switch($.getChainProperty(i).chainType){case"EVM":{if(s)return new gr(s,n);{let o=r.getNodeRpcUrl(i),c=new jn.Web3(o);return c.defaultReturnFormat={number:jn.FMT_NUMBER.STR,bytes:jn.FMT_BYTES.HEX},new gr(c,n)}}case"TRX":{let o=r.getNodeRpcUrl(i),c=a.tronJsonRpc;if(s)return new fr(s,n,c);{let A=new Tc.TronWeb({fullHost:o});return new fr(A,n,c)}}case"SOLANA":{let o=r.getNodeRpcUrl(i);return new fi(o,n)}case"SRB":return new hi(r,a,n);case"SUI":return new Bi(r.getNodeRpcUrl(i),n)}}var ie=require("big.js");function wc(i,n,r){let a=Ku(i,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo),s=zu(a.amountIncludingCommissionInSystemPrecision,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Cc(i,n,r){let a=Hu(i,{decimals:r.decimals,feeShare:r.feeShare},r.poolInfo),s=Qu(a.amountIncludingCommissionInSystemPrecision,{decimals:n.decimals,feeShare:n.feeShare},n.poolInfo);return{swapToVUsdCalcResult:a,swapFromVUsdCalcResult:s}}function Ku(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(i),o=s.times(n),c=s.minus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Sc(en(c,r),a),amountExcludingCommissionInSystemPrecision:Sc(en(s,r),a)}}function Sc(i,n){if(i.eq(0))return"0";let r=(0,ie.Big)(n.tokenBalance).plus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(n.vUsdBalance).minus(a).round().toFixed()}function zu(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let o=(0,ie.Big)(i).plus(a.vUsdBalance),c=ht(o,a.aValue,a.dValue),A=xe((0,ie.Big)(a.tokenBalance).minus(c),r),u=(0,ie.Big)(A).times(n),m=(0,ie.Big)(A).minus(u).round();return{bridgeFeeInTokenPrecision:u.round().toFixed(),amountIncludingCommissionInTokenPrecision:m.toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}function Hu(i,{feeShare:n,decimals:r},a){let s=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),o=(0,ie.Big)(i).times(s),c=(0,ie.Big)(i).plus(o);return{bridgeFeeInTokenPrecision:o.round().toFixed(),amountIncludingCommissionInSystemPrecision:Pc(en(c,r),a),amountExcludingCommissionInSystemPrecision:Pc(en(i,r),a)}}function Pc(i,n){let r=(0,ie.Big)(n.tokenBalance).minus(i),a=ht(r.toFixed(),n.aValue,n.dValue);return(0,ie.Big)(a).minus(n.vUsdBalance).round().toFixed()}function Qu(i,{feeShare:n,decimals:r},a){if((0,ie.Big)(i).eq(0))return{bridgeFeeInTokenPrecision:"0",amountIncludingCommissionInTokenPrecision:"0",amountExcludingCommissionInTokenPrecision:"0"};let s=(0,ie.Big)(a.vUsdBalance).minus(i),o=ht(s.toFixed(),a.aValue,a.dValue),c=(0,ie.Big)(o).minus(a.tokenBalance),A=xe(c.toFixed(),r),u=(0,ie.Big)(n).div((0,ie.Big)(1).minus(n)),m=(0,ie.Big)(A).times(u),l=(0,ie.Big)(A).plus(m);return{bridgeFeeInTokenPrecision:m.round().toFixed(),amountIncludingCommissionInTokenPrecision:l.round().toFixed(),amountExcludingCommissionInTokenPrecision:A.toFixed()}}var Gt=require("big.js");function Ic(i,n,r,a,s){let o=yt(i,n,r),c=xe(o,n.decimals),A=Ln(o,a,s),u=(0,Gt.Big)(i).times(n.feeShare),m=(0,Gt.Big)(A).div((0,Gt.Big)(1).minus(a.feeShare)).minus(A);return{sourceLPSwap:{fee:G(u,n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed(),swap:G((0,Gt.Big)(i).minus(c).minus(u),n.decimals).neg().round(n.decimals,Gt.Big.roundUp).toFixed()},destLPSwap:{fee:G(m,a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed(),swap:G(xe(o,a.decimals).minus(A).minus(m),a.decimals).neg().round(a.decimals,Gt.Big.roundUp).toFixed()}}}var En=require("@solana/web3.js");var Ri=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async addMemoToTx(n,r){if(r.length>28)throw new C("InvalidArgumentException memo cannot be more than 28 characters");let a=new En.Connection(this.nodeRpcUrlsConfig.getNodeRpcUrl("SOL"),"confirmed"),s=await nn(n,a),o=En.TransactionMessage.decompile(n.message,{addressLookupTableAccounts:s}),c=o.instructions[o.instructions.length-1];if(!c?.keys)throw new C("Last instruction or its keys are invalid.");c.keys.push({pubkey:new En.PublicKey(Buffer.from(r)),isSigner:!1,isWritable:!1}),n.message=o.compileToV0Message(s)}};var K=require("@stellar/stellar-sdk");var VC=require("@stellar/stellar-sdk"),qu=VC.contract.Spec,em=VC.contract.Client;var yr=class extends em{constructor(r){super(new qu(["AAAAAAAAAYlSZXR1cm5zIHRoZSBhbGxvd2FuY2UgZm9yIGBzcGVuZGVyYCB0byB0cmFuc2ZlciBmcm9tIGBmcm9tYC4KClRoZSBhbW91bnQgcmV0dXJuZWQgaXMgdGhlIGFtb3VudCB0aGF0IHNwZW5kZXIgaXMgYWxsb3dlZCB0byB0cmFuc2ZlcgpvdXQgb2YgZnJvbSdzIGJhbGFuY2UuIFdoZW4gdGhlIHNwZW5kZXIgdHJhbnNmZXJzIGFtb3VudHMsIHRoZSBhbGxvd2FuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQgdHJhbnNmZXJlZC4KCiMgQXJndW1lbnRzCgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHRvIGJlIGRyYXduIGZyb20uCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3Mgc3BlbmRpbmcgdGhlIHRva2VucyBoZWxkIGJ5IGBmcm9tYC4AAAAAAAAJYWxsb3dhbmNlAAAAAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAEAAAAL","AAAAAAAAAIlSZXR1cm5zIHRydWUgaWYgYGlkYCBpcyBhdXRob3JpemVkIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBmb3Igd2hpY2ggdG9rZW4gYXV0aG9yaXphdGlvbiBpcyBiZWluZyBjaGVja2VkLgAAAAAAAAphdXRob3JpemVkAAAAAAABAAAAAAAAAAJpZAAAAAAAEwAAAAEAAAAB","AAAAAAAAA55TZXQgdGhlIGFsbG93YW5jZSBieSBgYW1vdW50YCBmb3IgYHNwZW5kZXJgIHRvIHRyYW5zZmVyL2J1cm4gZnJvbQpgZnJvbWAuCgpUaGUgYW1vdW50IHNldCBpcyB0aGUgYW1vdW50IHRoYXQgc3BlbmRlciBpcyBhcHByb3ZlZCB0byB0cmFuc2ZlciBvdXQgb2YKZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byB0cmFuc2ZlciBhbW91bnRzLCBhbmQKd2hlbiBhbiBhbW91bnQgaXMgdHJhbnNmZXJyZWQgdGhlIGFsbG93YW5jZSB3aWxsIGJlIHJlZHVjZWQgYnkgdGhlCmFtb3VudCB0cmFuc2ZlcmVkLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgdG8gYmUgZHJhd24gZnJvbS4KKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBiZWluZyBhdXRob3JpemVkIHRvIHNwZW5kIHRoZSB0b2tlbnMgaGVsZCBieQpgZnJvbWAuCiogYGFtb3VudGAgLSBUaGUgdG9rZW5zIHRvIGJlIG1hZGUgYXZhaWxhYmxlIHRvIGBzcGVuZGVyYC4KKiBgZXhwaXJhdGlvbl9sZWRnZXJgIC0gVGhlIGxlZGdlciBudW1iZXIgd2hlcmUgdGhpcyBhbGxvd2FuY2UgZXhwaXJlcy4gQ2Fubm90CmJlIGxlc3MgdGhhbiB0aGUgY3VycmVudCBsZWRnZXIgbnVtYmVyIHVubGVzcyB0aGUgYW1vdW50IGlzIGJlaW5nIHNldCB0byAwLgpBbiBleHBpcmVkIGVudHJ5ICh3aGVyZSBleHBpcmF0aW9uX2xlZGdlciA8IHRoZSBjdXJyZW50IGxlZGdlciBudW1iZXIpCnNob3VsZCBiZSB0cmVhdGVkIGFzIGEgMCBhbW91bnQgYWxsb3dhbmNlLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImFwcHJvdmUiLCBmcm9tOiBBZGRyZXNzLApzcGVuZGVyOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6IGkxMjgsIGV4cGlyYXRpb25fbGVkZ2VyOiB1MzJdYAAAAAAAB2FwcHJvdmUAAAAABAAAAAAAAAAEZnJvbQAAABMAAAAAAAAAB3NwZW5kZXIAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAAAAABFleHBpcmF0aW9uX2xlZGdlcgAAAAAAAAQAAAAA","AAAAAAAAAJhSZXR1cm5zIHRoZSBiYWxhbmNlIG9mIGBpZGAuCgojIEFyZ3VtZW50cwoKKiBgaWRgIC0gVGhlIGFkZHJlc3MgZm9yIHdoaWNoIGEgYmFsYW5jZSBpcyBiZWluZyBxdWVyaWVkLiBJZiB0aGUKYWRkcmVzcyBoYXMgbm8gZXhpc3RpbmcgYmFsYW5jZSwgcmV0dXJucyAwLgAAAAdiYWxhbmNlAAAAAAEAAAAAAAAAAmlkAAAAAAATAAAAAQAAAAs=","AAAAAAAAAWRCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLgoKUmVkdWNlcyBmcm9tJ3MgYmFsYW5jZSBieSB0aGUgYW1vdW50LCB3aXRob3V0IHRyYW5zZmVycmluZyB0aGUgYmFsYW5jZQp0byBhbm90aGVyIGhvbGRlcidzIGJhbGFuY2UuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIG9mIHRva2VucyB3aGljaCB3aWxsIGJlCmJ1cm5lZCBmcm9tLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgYnVybmVkLgoKIyBFdmVudHMKCkVtaXRzIGFuIGV2ZW50IHdpdGggdG9waWNzIGBbImJ1cm4iLCBmcm9tOiBBZGRyZXNzXSwgZGF0YSA9IFthbW91bnQ6CmkxMjhdYAAAAARidXJuAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAtxCdXJuIGBhbW91bnRgIGZyb20gYGZyb21gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSBvZiBgc3BlbmRlcmAuCgpSZWR1Y2VzIGZyb20ncyBiYWxhbmNlIGJ5IHRoZSBhbW91bnQsIHdpdGhvdXQgdHJhbnNmZXJyaW5nIHRoZSBiYWxhbmNlCnRvIGFub3RoZXIgaG9sZGVyJ3MgYmFsYW5jZS4KClRoZSBzcGVuZGVyIHdpbGwgYmUgYWxsb3dlZCB0byBidXJuIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZSwgaWYKdGhlIGFtb3VudCBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gdGhlIGFsbG93YW5jZSB0aGF0IHRoZSBzcGVuZGVyIGhhcwpvbiB0aGUgZnJvbSdzIGJhbGFuY2UuIFRoZSBzcGVuZGVyJ3MgYWxsb3dhbmNlIG9uIGZyb20ncyBiYWxhbmNlIHdpbGwgYmUKcmVkdWNlZCBieSB0aGUgYW1vdW50LgoKIyBBcmd1bWVudHMKCiogYHNwZW5kZXJgIC0gVGhlIGFkZHJlc3MgYXV0aG9yaXppbmcgdGhlIGJ1cm4sIGFuZCBoYXZpbmcgaXRzIGFsbG93YW5jZQpjb25zdW1lZCBkdXJpbmcgdGhlIGJ1cm4uCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQpidXJuZWQgZnJvbS4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIGJ1cm5lZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJidXJuIiwgZnJvbTogQWRkcmVzc10sIGRhdGEgPSBbYW1vdW50OgppMTI4XWAAAAAJYnVybl9mcm9tAAAAAAAAAwAAAAAAAAAHc3BlbmRlcgAAAAATAAAAAAAAAARmcm9tAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAVNDbGF3YmFjayBgYW1vdW50YCBmcm9tIGBmcm9tYCBhY2NvdW50LiBgYW1vdW50YCBpcyBidXJuZWQgaW4gdGhlCmNsYXdiYWNrIHByb2Nlc3MuCgojIEFyZ3VtZW50cwoKKiBgZnJvbWAgLSBUaGUgYWRkcmVzcyBob2xkaW5nIHRoZSBiYWxhbmNlIGZyb20gd2hpY2ggdGhlIGNsYXdiYWNrIHdpbGwKdGFrZSB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSBjbGF3ZWQgYmFjay4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJjbGF3YmFjayIsIGFkbWluOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAACGNsYXdiYWNrAAAAAgAAAAAAAAAEZnJvbQAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAIBSZXR1cm5zIHRoZSBudW1iZXIgb2YgZGVjaW1hbHMgdXNlZCB0byByZXByZXNlbnQgYW1vdW50cyBvZiB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAhkZWNpbWFscwAAAAAAAAABAAAABA==","AAAAAAAAAPVNaW50cyBgYW1vdW50YCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgbWludGVkIHRva2Vucy4KKiBgYW1vdW50YCAtIFRoZSBhbW91bnQgb2YgdG9rZW5zIHRvIGJlIG1pbnRlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJtaW50IiwgYWRtaW46IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwgZGF0YQo9IFthbW91bnQ6IGkxMjhdYAAAAAAAAARtaW50AAAAAgAAAAAAAAACdG8AAAAAABMAAAAAAAAABmFtb3VudAAAAAAACwAAAAA=","AAAAAAAAAFlSZXR1cm5zIHRoZSBuYW1lIGZvciB0aGlzIHRva2VuLgoKIyBQYW5pY3MKCklmIHRoZSBjb250cmFjdCBoYXMgbm90IHlldCBiZWVuIGluaXRpYWxpemVkLgAAAAAAAARuYW1lAAAAAAAAAAEAAAAQ","AAAAAAAAAQxTZXRzIHRoZSBhZG1pbmlzdHJhdG9yIHRvIHRoZSBzcGVjaWZpZWQgYWRkcmVzcyBgbmV3X2FkbWluYC4KCiMgQXJndW1lbnRzCgoqIGBuZXdfYWRtaW5gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCBoZW5jZWZvcnRoIGJlIHRoZSBhZG1pbmlzdHJhdG9yCm9mIHRoaXMgdG9rZW4gY29udHJhY3QuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2FkbWluIiwgYWRtaW46IEFkZHJlc3NdLCBkYXRhID0KW25ld19hZG1pbjogQWRkcmVzc11gAAAACXNldF9hZG1pbgAAAAAAAAEAAAAAAAAACW5ld19hZG1pbgAAAAAAABMAAAAA","AAAAAAAAAEZSZXR1cm5zIHRoZSBhZG1pbiBvZiB0aGUgY29udHJhY3QuCgojIFBhbmljcwoKSWYgdGhlIGFkbWluIGlzIG5vdCBzZXQuAAAAAAAFYWRtaW4AAAAAAAAAAAAAAQAAABM=","AAAAAAAAAVBTZXRzIHdoZXRoZXIgdGhlIGFjY291bnQgaXMgYXV0aG9yaXplZCB0byB1c2UgaXRzIGJhbGFuY2UuIElmCmBhdXRob3JpemVkYCBpcyB0cnVlLCBgaWRgIHNob3VsZCBiZSBhYmxlIHRvIHVzZSBpdHMgYmFsYW5jZS4KCiMgQXJndW1lbnRzCgoqIGBpZGAgLSBUaGUgYWRkcmVzcyBiZWluZyAoZGUtKWF1dGhvcml6ZWQuCiogYGF1dGhvcml6ZWAgLSBXaGV0aGVyIG9yIG5vdCBgaWRgIGNhbiB1c2UgaXRzIGJhbGFuY2UuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsic2V0X2F1dGhvcml6ZWQiLCBpZDogQWRkcmVzc10sIGRhdGEgPQpbYXV0aG9yaXplOiBib29sXWAAAAAOc2V0X2F1dGhvcml6ZWQAAAAAAAIAAAAAAAAAAmlkAAAAAAATAAAAAAAAAAlhdXRob3JpemUAAAAAAAABAAAAAA==","AAAAAAAAAFtSZXR1cm5zIHRoZSBzeW1ib2wgZm9yIHRoaXMgdG9rZW4uCgojIFBhbmljcwoKSWYgdGhlIGNvbnRyYWN0IGhhcyBub3QgeWV0IGJlZW4gaW5pdGlhbGl6ZWQuAAAAAAZzeW1ib2wAAAAAAAAAAAABAAAAEA==","AAAAAAAAAWRUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLgoKIyBBcmd1bWVudHMKCiogYGZyb21gIC0gVGhlIGFkZHJlc3MgaG9sZGluZyB0aGUgYmFsYW5jZSBvZiB0b2tlbnMgd2hpY2ggd2lsbCBiZQp3aXRoZHJhd24gZnJvbS4KKiBgdG9gIC0gVGhlIGFkZHJlc3Mgd2hpY2ggd2lsbCByZWNlaXZlIHRoZSB0cmFuc2ZlcnJlZCB0b2tlbnMuCiogYGFtb3VudGAgLSBUaGUgYW1vdW50IG9mIHRva2VucyB0byBiZSB0cmFuc2ZlcnJlZC4KCiMgRXZlbnRzCgpFbWl0cyBhbiBldmVudCB3aXRoIHRvcGljcyBgWyJ0cmFuc2ZlciIsIGZyb206IEFkZHJlc3MsIHRvOiBBZGRyZXNzXSwKZGF0YSA9IFthbW91bnQ6IGkxMjhdYAAAAAh0cmFuc2ZlcgAAAAMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA==","AAAAAAAAAzNUcmFuc2ZlciBgYW1vdW50YCBmcm9tIGBmcm9tYCB0byBgdG9gLCBjb25zdW1pbmcgdGhlIGFsbG93YW5jZSB0aGF0CmBzcGVuZGVyYCBoYXMgb24gYGZyb21gJ3MgYmFsYW5jZS4gQXV0aG9yaXplZCBieSBzcGVuZGVyCihgc3BlbmRlci5yZXF1aXJlX2F1dGgoKWApLgoKVGhlIHNwZW5kZXIgd2lsbCBiZSBhbGxvd2VkIHRvIHRyYW5zZmVyIHRoZSBhbW91bnQgZnJvbSBmcm9tJ3MgYmFsYW5jZQppZiB0aGUgYW1vdW50IGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB0aGUgYWxsb3dhbmNlIHRoYXQgdGhlIHNwZW5kZXIKaGFzIG9uIHRoZSBmcm9tJ3MgYmFsYW5jZS4gVGhlIHNwZW5kZXIncyBhbGxvd2FuY2Ugb24gZnJvbSdzIGJhbGFuY2UKd2lsbCBiZSByZWR1Y2VkIGJ5IHRoZSBhbW91bnQuCgojIEFyZ3VtZW50cwoKKiBgc3BlbmRlcmAgLSBUaGUgYWRkcmVzcyBhdXRob3JpemluZyB0aGUgdHJhbnNmZXIsIGFuZCBoYXZpbmcgaXRzCmFsbG93YW5jZSBjb25zdW1lZCBkdXJpbmcgdGhlIHRyYW5zZmVyLgoqIGBmcm9tYCAtIFRoZSBhZGRyZXNzIGhvbGRpbmcgdGhlIGJhbGFuY2Ugb2YgdG9rZW5zIHdoaWNoIHdpbGwgYmUKd2l0aGRyYXduIGZyb20uCiogYHRvYCAtIFRoZSBhZGRyZXNzIHdoaWNoIHdpbGwgcmVjZWl2ZSB0aGUgdHJhbnNmZXJyZWQgdG9rZW5zLgoqIGBhbW91bnRgIC0gVGhlIGFtb3VudCBvZiB0b2tlbnMgdG8gYmUgdHJhbnNmZXJyZWQuCgojIEV2ZW50cwoKRW1pdHMgYW4gZXZlbnQgd2l0aCB0b3BpY3MgYFsidHJhbnNmZXIiLCBmcm9tOiBBZGRyZXNzLCB0bzogQWRkcmVzc10sCmRhdGEgPSBbYW1vdW50OiBpMTI4XWAAAAAADXRyYW5zZmVyX2Zyb20AAAAAAAAEAAAAAAAAAAdzcGVuZGVyAAAAABMAAAAAAAAABGZyb20AAAATAAAAAAAAAAJ0bwAAAAAAEwAAAAAAAAAGYW1vdW50AAAAAAALAAAAAA=="]),r);this.options=r}fromJSON={allowance:this.txFromJSON,authorized:this.txFromJSON,approve:this.txFromJSON,balance:this.txFromJSON,burn:this.txFromJSON,burn_from:this.txFromJSON,clawback:this.txFromJSON,decimals:this.txFromJSON,mint:this.txFromJSON,name:this.txFromJSON,set_admin:this.txFromJSON,admin:this.txFromJSON,set_authorized:this.txFromJSON,symbol:this.txFromJSON,transfer:this.txFromJSON,transfer_from:this.txFromJSON}};var tm=100,nm=180,ki=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.params=r}async buildChangeTrustLineXdrTx(n){let a=await new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(n.sender),o=(await this.getContract(yr,n.tokenAddress).name()).result,[c,A]=o.split(":");if(c===void 0||A===void 0)throw new C("Invalid token name format. Expected format 'symbol:srbTokenAddress'");let u=new K.Asset(c,A),m=K.Operation.changeTrust({asset:u,limit:n.limit});return new K.TransactionBuilder(a,{fee:tm.toString(10),networkPassphrase:this.params.sorobanNetworkPassphrase}).addOperation(m).setTimeout(nm).build().toXDR()}async getBalanceLine(n,r){let s=(await this.getContract(yr,r).name()).result,[o,c]=s.split(":"),A=this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR");return(await new K.Horizon.Server(A).loadAccount(n)).balances.find(g=>(g.asset_type==="credit_alphanum4"||g.asset_type==="credit_alphanum12")&&g.asset_code==o&&g.asset_issuer==c)}async submitTransactionStellar(n){let r=new K.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),a=K.TransactionBuilder.fromXDR(n,this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR"));return await r.submitTransaction(a)}async simulateAndCheckRestoreTxRequiredSoroban(n,r){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await a.getAccount(r),o=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase),c=await a.simulateTransaction(o);if(K.rpc.Api.isSimulationRestore(c))return new K.TransactionBuilder(s,{fee:(+K.BASE_FEE+ +c.restorePreamble.minResourceFee).toString(),networkPassphrase:this.params.sorobanNetworkPassphrase}).setSorobanData(c.restorePreamble.transactionData.build()).addOperation(K.Operation.restoreFootprint({})).setTimeout(K.TimeoutInfinite).build().toXDR()}async sendTransactionSoroban(n){let r=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),a=K.TransactionBuilder.fromXDR(n,this.params.sorobanNetworkPassphrase);return r.sendTransaction(a)}async confirmTx(n,r=15){let a=new K.rpc.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")),s=await Ms(()=>a.getTransaction(n),c=>c.status===K.rpc.Api.GetTransactionStatus.NOT_FOUND,r);if(s.length===0)throw new C("No transaction responses found.");let o=s[s.length-1];if(!o)throw new C("Unexpected error: last response is undefined.");return o}getContract(n,r){let a={contractId:r,networkPassphrase:this.params.sorobanNetworkPassphrase,rpcUrl:this.nodeRpcUrlsConfig.getNodeRpcUrl("SRB")};return new n(a)}};var Mi=class{constructor(n,r){this.nodeRpcUrlsConfig=n;this.srb=new ki(n,r),this.sol=new Ri(n,r)}srb;sol};var Zt=(r=>(r.WITH_NATIVE_CURRENCY="native",r.WITH_STABLECOIN="stablecoin",r))(Zt||{}),Yn=(r=>(r.INT="int",r.FLOAT="float",r))(Yn||{});var vc=require("big.js"),Rc=require("tronweb"),kc=require("web3");var rm={abi:[{inputs:[{internalType:"string",name:"name_",type:"string"},{internalType:"string",name:"symbol_",type:"string"}],stateMutability:"nonpayable",type:"constructor"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"owner",type:"address"},{indexed:!0,internalType:"address",name:"spender",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Approval",type:"event"},{anonymous:!1,inputs:[{indexed:!0,internalType:"address",name:"from",type:"address"},{indexed:!0,internalType:"address",name:"to",type:"address"},{indexed:!1,internalType:"uint256",name:"value",type:"uint256"}],name:"Transfer",type:"event"},{inputs:[{internalType:"address",name:"owner",type:"address"},{internalType:"address",name:"spender",type:"address"}],name:"allowance",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"approve",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"account",type:"address"}],name:"balanceOf",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[],name:"decimals",outputs:[{internalType:"uint8",name:"",type:"uint8"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"subtractedValue",type:"uint256"}],name:"decreaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"spender",type:"address"},{internalType:"uint256",name:"addedValue",type:"uint256"}],name:"increaseAllowance",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[],name:"name",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"symbol",outputs:[{internalType:"string",name:"",type:"string"}],stateMutability:"view",type:"function"},{inputs:[],name:"totalSupply",outputs:[{internalType:"uint256",name:"",type:"uint256"}],stateMutability:"view",type:"function"},{inputs:[{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transfer",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"},{inputs:[{internalType:"address",name:"from",type:"address"},{internalType:"address",name:"to",type:"address"},{internalType:"uint256",name:"amount",type:"uint256"}],name:"transferFrom",outputs:[{internalType:"bool",name:"",type:"bool"}],stateMutability:"nonpayable",type:"function"}]},xi=rm;var ms=require("big.js"),je=class{async checkAllowance(n){let r=await this.getAllowance(n);return(0,ms.Big)(r).gte((0,ms.Big)(n.amount))}};var im="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",am="0xdac17f958d2ee523a2206206994597c13d831ec7",sm=1e5,hr=class extends je{constructor(r,a){super();this.web3=r;this.api=a}chainType="EVM";getAllowance(r){let a=r.token.tokenAddress,s=r.owner,o=r.spender;return this.getAllowanceByTokenAddress(a,s,o)}getAllowanceByTokenAddress(r,a,s){return this.getERC20Contract(r).methods.allowance(a,s).call()}async getTokenBalance(r){return await this.getERC20Contract(r.token.tokenAddress).methods.balanceOf(r.account).call()}async getNativeTokenBalance(r){return(await this.web3.eth.getBalance(r.account)).toString()}async approve(r){if(this.isUsdt(r.tokenAddress)&&await this.getAllowanceByTokenAddress(r.tokenAddress,r.owner,r.spender)!=="0"){let o=await this.buildRawTransactionApprove({...r,amount:"0"});await this.sendRawTransaction(o,r.chainSymbol)}let a=await this.buildRawTransactionApprove(r);return await this.sendRawTransaction(a,r.chainSymbol)}isUsdt(r){return r.toLowerCase()===am}buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,u=this.getERC20Contract(a).methods.approve(s,c==null?im:li(c));return Promise.resolve({from:o,to:a,value:"0",data:u.encodeABI()})}async sendRawTransaction(r,a){let s=r,o={maxPriorityFeePerGas:void 0,maxFeePerGas:void 0};a==="POL"?s.gas=sm:s.gas=await this.web3.eth.estimateGas(r);let{transactionHash:c}=await this.web3.eth.sendTransaction({...s,...o});return{txId:c.toString()}}getERC20Contract(r){return new this.web3.eth.Contract(xi.abi,r)}};var Bc=require("@project-serum/anchor"),fn=require("@solana/web3.js");var Oi=class extends je{constructor(r,a){super();this.solanaRpcUrl=r;this.api=a}chainType="SOLANA";approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}buildAnchorProvider(r){let a=new fn.Connection(this.solanaRpcUrl,"confirmed"),s=new fn.PublicKey(r);return new Bc.AnchorProvider(a,{publicKey:s},{preflightCommitment:"confirmed",commitment:"confirmed"})}getAllowance(r){throw new ce}async getTokenBalance(r){let{account:a,token:s}=r;try{let o=await Ke(new fn.PublicKey(a),new fn.PublicKey(s.tokenAddress));return(await Cn(o,this.buildAnchorProvider(a))).amount.toString()}catch(o){if(o instanceof Error)return o.message.startsWith("Account does not exist"),"0";throw o}}async getNativeTokenBalance(r){return(await this.buildAnchorProvider(r.account).connection.getBalance(new fn.PublicKey(r.account))).toString()}};var ls=require("@stellar/stellar-sdk");var Fi=class extends je{constructor(r,a,s){super();this.nodeRpcUrlsConfig=r;this.params=a;this.api=s}chainType="SRB";getAllowance(){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("OriginTokenAddress missing");let[a,s]=r.token.originTokenAddress.split(":"),o=new ls.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")),c;try{c=await o.loadAccount(r.account)}catch(m){if(m instanceof ls.NotFoundError)return"0";throw m}let u=c.balances.find(m=>(m.asset_type==="credit_alphanum4"||m.asset_type==="credit_alphanum12")&&m.asset_code==a&&m.asset_issuer==s);return u?.balance?L(u.balance,$.getChainDecimalsByType($.getChainProperty(r.token.chainSymbol).chainType)).toFixed():"0"}async getNativeTokenBalance(r){let c=(await new ls.Horizon.Server(this.nodeRpcUrlsConfig.getNodeRpcUrl("STLR")).loadAccount(r.account)).balances.find(A=>A.asset_type==="native");return c?.balance?L(c.balance,$.getChainDecimalsByType($.getChainProperty(r.chainSymbol).chainType)).toFixed():"0"}approve(){throw new ce}buildRawTransactionApprove(){throw new ce}};var Ni=class extends je{constructor(r,a){super();this.suiRpcUrl=r;this.api=a;this.suiClient=new Ut({url:this.suiRpcUrl})}chainType="SUI";suiClient;approve(r){throw new ce}buildRawTransactionApprove(r){throw new ce}getAllowance(r){throw new ce}async getTokenBalance(r){if(!r.token.originTokenAddress)throw new C("SUI token must contain 'originTokenAddress'");return(await this.suiClient.getBalance({owner:r.account,coinType:r.token.originTokenAddress})).totalBalance}async getNativeTokenBalance(r){let a=await Ct(s=>this.suiClient.getCoins({owner:r.account,cursor:s}));return a.length===0?"0":a.reduce((s,o)=>s+BigInt(o.balance),BigInt(0)).toString()}};var om="0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff",br=class extends je{constructor(r,a){super();this.tronWeb=r;this.api=a}chainType="TRX";async getAllowance(r){let{token:{tokenAddress:a},owner:s}=r;return(await(await this.getContract(a)).methods.allowance(s,r.spender).call()).toString()}async getTokenBalance(r){return(await(await this.getContract(r.token.tokenAddress)).balanceOf(r.account).call()).toString()}async getNativeTokenBalance(r){return(await this.tronWeb.trx.getBalance(r.account)).toString()}async approve(r){let a=await this.buildRawTransactionApprove(r);return await di(this.tronWeb,a)}async buildRawTransactionApprove(r){let{tokenAddress:a,spender:s,owner:o,amount:c}=r,A=c==null?om:li(c),u=[{type:"address",value:s},{type:"uint256",value:A}];return this.buildRawTransaction(a,"approve(address,uint256)",u,"0",o)}getContract(r){return this.tronWeb.contract(xi.abi,r)}async buildRawTransaction(r,a,s,o,c){let A=await this.tronWeb.transactionBuilder.triggerSmartContract(r,a,{callValue:+o},s,c);if(!A?.result?.result)throw new C("Unknown error: "+JSON.stringify(A,null,2));return A.transaction}};var Di=class{constructor(n,r,a){this.api=n;this.nodeRpcUrlsConfig=r;this.params=a}async getAllowance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.owner,r).getAllowance(n);return G(a,n.token.decimals).toFixed()}async checkAllowance(n,r){return z(n.amount),q("amount",n.amount,n.token.decimals),this.getChainTokenService(n.token.chainSymbol,n.owner,r).checkAllowance(this.prepareCheckAllowanceParams(n))}async approve(n,r){return r.amount&&(z(r.amount),q("amount",r.amount,r.token.decimals)),this.getChainTokenService(r.token.chainSymbol,r.owner,n).approve(this.prepareApproveParams(r))}async buildRawTransactionApprove(n,r){return n.amount&&(z(n.amount),q("amount",n.amount,n.token.decimals)),this.getChainTokenService(n.token.chainSymbol,n.owner,r).buildRawTransactionApprove(this.prepareApproveParams(n))}async getTokenBalance(n,r){let a=await this.getChainTokenService(n.token.chainSymbol,n.account,r).getTokenBalance(n);return n.token.decimals?G(a,n.token.decimals).toFixed():a}async getNativeTokenBalance(n,r){let a=await this.getChainTokenService(n.chainSymbol,n.account,r).getNativeTokenBalance(n);return{int:a,float:G(a,$.getChainDecimalsByType($.getChainProperty(n.chainSymbol).chainType)).toFixed()}}getChainTokenService(n,r,a){switch($.getChainProperty(n).chainType){case"EVM":{if(a)return new hr(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new hr(new kc.Web3(s),this.api)}}case"TRX":{if(a)return new br(a,this.api);{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n),o=new Rc.TronWeb({fullHost:s});return o.setAddress(r),new br(o,this.api)}}case"SOLANA":{let s=this.nodeRpcUrlsConfig.getNodeRpcUrl(n);return new Oi(s,this.api)}case"SRB":return new Fi(this.nodeRpcUrlsConfig,this.params,this.api);case"SUI":return new Ni(this.nodeRpcUrlsConfig.getNodeRpcUrl(n),this.api)}}prepareCheckAllowanceParams(n){return{...n,amount:L(n.amount,n.token.decimals)}}prepareApproveParams(n){return{tokenAddress:n.token.tokenAddress,owner:n.owner,spender:n.spender,chainSymbol:n.token.chainSymbol,amount:n.amount==null?void 0:(0,vc.Big)(n.amount).toFixed()}}};var Tr=class{constructor(n){this.nodeRpcUrls=n}getNodeRpcUrl(n){let r=this.nodeRpcUrls[n];if(r!==void 0)return r;throw new $n(n)}},Wi=class{api;tokenService;params;bridge;pool;constructor(n,r=Gn){$.addChainsProperties(r.additionalChainsProperties);let a=new Ir(r),s=new Br(a),o=new vr(s),c=new kr(o);this.api=new Rr(c,r),this.tokenService=new Di(this.api,n,r),this.bridge=new pi(this.api,n,r,this.tokenService),this.pool=new vi(this.api,n,r,this.tokenService),this.params=r}async chainDetailsMap(n){return this.api.getChainDetailsMap(n)}async tokens(n){return this.api.tokens(n)}async tokensByChain(n,r){let s=(await this.api.getChainDetailsMap(r))[n];return s?s.tokens:[]}async getTransferStatus(n,r){return this.api.getTransferStatus(n,r)}async getGasBalance(n,r){return this.api.getGasBalance(n,r)}async checkAddress(){return new Promise(n=>{n({status:"OK",gasBalance:null})})}async getPendingStatusInfo(n,r,a,s){z(n);let o;r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n;let c=yt(o,a,await ue(this.api,a)),A=await ue(this.api,s),u=this.getAmountFromVUsdFormatted(c,s,A),m,l=await this.api.getPendingInfo();for(let g in l[s.chainSymbol]){let S=l[s.chainSymbol];if(!S)throw new C("Cannot find pending info for "+s.chainSymbol);m=S[g]}if(m){let g=ys(m.totalSentAmount,A),S=this.getAmountFromVUsdFormatted(c,s,g),h;return(0,ut.Big)(S.int).gt(u.int)?h={min:u,max:S}:h={min:S,max:u},{pendingTxs:m.pendingTxs,pendingAmount:{int:_t(m.totalSentAmount,3,s.decimals).toFixed(0),float:G(m.totalSentAmount,3).toFixed()},estimatedAmount:h}}return{pendingTxs:0,pendingAmount:{int:"0",float:"0"},estimatedAmount:{min:u,max:u}}}async getTokenBalance(n,r){return this.tokenService.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.tokenService.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){z(n),q("amountFloat",n,r.decimals);let a=L(n,r.decimals);if(a.eq(0))return 0;let s=yt(a,r,await ue(this.api,r)),o=xe(s,r.decimals);return Ei(a,o)}async calculateFeePercentOnDestinationChain(n,r,a){z(n),q("amountFloat",n,r.decimals);let s=L(n,r.decimals);if(s.eq(0))return 0;let o=yt(s,r,await ue(this.api,r)),c=Ln(o,a,await ue(this.api,a)),A=xe(o,a.decimals);return Ei(A,c)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return z(n),q("amountToSendFloat",n,r.decimals),{amountToSendFloat:(0,ut.Big)(n).toFixed(),amountToBeReceivedFloat:await this.getAmountToBeReceived(n,r,a,s),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToSendAndGasFeeOptions(n,r,a,s){return z(n),q("amountToBeReceivedFloat",n,a.decimals),{amountToSendFloat:await this.getAmountToSend(n,r,a,s),amountToBeReceivedFloat:(0,ut.Big)(n).toFixed(),gasFeeOptions:await this.getGasFeeOptions(r,a,s)}}async getAmountToBeReceived(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToBeReceivedFromPools(n,r,a,o,c,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToBeReceivedFromPools(n,r,a,A,u,s)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){z(n),q("amountToSendFloat",n,r.decimals);let A=L(n,r.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let m=A.mul((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundUp),l=_t(m,r.decimals,a.decimals).round(0);return G(l,a.decimals).toFixed()}let u=yt(A,r,s);return this.getAmountFromVUsdFormatted(u,a,o).float}async getAmountToSend(n,r,a,s){let o=await ue(this.api,r),c=await ue(this.api,a);return this.getAmountToSendFromPools(n,r,a,o,c,s)}async getAmountToSendFromChain(n,r,a,s,o,c){let A=await this.pool.getPoolInfoFromChain(r,o),u=await this.pool.getPoolInfoFromChain(a,c);return this.getAmountToSendFromPools(n,r,a,A,u,s)}getAmountToSendFromPools(n,r,a,s,o,c){z(n),q("amountToBeReceivedFloat",n,a.decimals);let A=L(n,a.decimals);if(c&&c==3){if(!r.cctpAddress||!a.cctpAddress||!r.cctpFeeShare)throw new Ge("Such route does not support CCTP protocol");let l=A.div((0,ut.Big)(1).minus(r.cctpFeeShare)).round(0,ut.Big.roundDown),g=_t(l,a.decimals,r.decimals).round(0);return G(g,r.decimals).toFixed()}let u=bs(A,a,o),m=hs(u,r,s);if((0,ut.Big)(m).lte(0))throw new ft;return G(m,r.decimals).toFixed()}async getGasFeeOptions(n,r,a){return Hi(n.allbridgeChainId,n.chainType,r.allbridgeChainId,n.decimals,a,this.api)}getAverageTransferTime(n,r,a){return n.transferTime?.[r.chainSymbol]?.[a]??null}async getPoolInfoByToken(n){return await this.api.getPoolInfoByKey({chainSymbol:n.chainSymbol,poolAddress:n.poolAddress})}async refreshPoolInfo(n){if(n){let a=(n instanceof Array?n:[n]).map(s=>({chainSymbol:s.chainSymbol,poolAddress:s.poolAddress}));return this.api.refreshPoolInfo(a)}return this.api.refreshPoolInfo()}aprInPercents(n){return Ss(n)}async getExtraGasMaxLimits(n,r){return await Qi(n,r,this.api)}async getVUsdFromAmount(n,r,a){z(n);let s;r=="float"?(q("amount",n,a.decimals),s=L(n,a.decimals).toFixed()):s=n;let o=yt(s,a,await ue(this.api,a));return{int:o,float:G(o,3).toFixed()}}async getAmountFromVUsd(n,r){return this.getAmountFromVUsdFormatted(n,r,await ue(this.api,r))}getAmountFromVUsdFormatted(n,r,a){z(n);let s=Ln(n,r,a);if((0,ut.Big)(s).lt(0))throw new ft;return{int:s,float:G(s,r.decimals).toFixed()}}async swapAndBridgeFeeCalculation(n,r,a){return wc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)})}async swapAndBridgeFeeCalculationReverse(n,r,a){let s=Cc(n,{decimals:r.decimals,feeShare:r.feeShare,poolInfo:await ue(this.api,r)},{decimals:a.decimals,feeShare:a.feeShare,poolInfo:await ue(this.api,a)}),o=s.swapFromVUsdCalcResult.amountIncludingCommissionInTokenPrecision;if((0,ut.Big)(o).lt(0))throw new ft;return s}async getSendAmountDetails(n,r,a,s){z(n);let o;return r=="float"?(q("amount",n,a.decimals),o=L(n,a.decimals).toFixed()):o=n,Ic(o,a,await ue(this.api,a),s,await ue(this.api,s))}};function cm(i){return"solanaRpcUrl"in i}var ds=class{params;bridge;pool;utils;service;constructor(n,r=Gn){let a;cm(n)?a=new Tr({SOL:n.solanaRpcUrl,TRX:n.tronRpcUrl}):a=new Tr(n),this.service=new Wi(a,r),this.bridge=this.service.bridge,this.pool=this.service.pool,this.utils=new Mi(a,r),this.params=r}async chainDetailsMap(n="swap"){return this.service.chainDetailsMap(n)}async tokens(n="swap"){return this.service.tokens(n)}async tokensByChain(n,r="swap"){return this.service.tokensByChain(n,r)}async getTransferStatus(n,r){return this.service.getTransferStatus(n,r)}async getGasBalance(n,r){return this.service.getGasBalance(n,r)}async checkAddress(n,r,a){return await this.service.checkAddress()}async getPendingStatusInfo(n,r,a,s){return this.service.getPendingStatusInfo(n,r,a,s)}async getTokenBalance(n,r){return this.service.getTokenBalance(n,r)}async getNativeTokenBalance(n,r){return this.service.getNativeTokenBalance(n,r)}async calculateFeePercentOnSourceChain(n,r){return this.service.calculateFeePercentOnSourceChain(n,r)}async calculateFeePercentOnDestinationChain(n,r,a){return this.service.calculateFeePercentOnDestinationChain(n,r,a)}async getAmountToBeReceivedAndGasFeeOptions(n,r,a,s){return this.service.getAmountToBeReceivedAndGasFeeOptions(n,r,a,s)}async getAmountToSendAndGasFeeOptions(n,r,a,s){return this.service.getAmountToSendAndGasFeeOptions(n,r,a,s)}async getAmountToBeReceived(n,r,a,s){return this.service.getAmountToBeReceived(n,r,a,s)}async getAmountToBeReceivedFromChain(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromChain(n,r,a,s,o,c)}getAmountToBeReceivedFromPools(n,r,a,s,o,c){return this.service.getAmountToBeReceivedFromPools(n,r,a,s,o,c)}async getAmountToSend(n,r,a,s){return this.service.getAmountToSend(n,r,a,s)}async getAmountToSendFromChain(n,r,a,s,o,c){return this.service.getAmountToSendFromChain(n,r,a,s,o,c)}getAmountToSendFromPools(n,r,a,s,o,c){return this.service.getAmountToSendFromPools(n,r,a,s,o,c)}async getGasFeeOptions(n,r,a){return this.service.getGasFeeOptions(n,r,a)}getAverageTransferTime(n,r,a){return this.service.getAverageTransferTime(n,r,a)}async getPoolInfoByToken(n){return this.service.getPoolInfoByToken(n)}async refreshPoolInfo(n){return this.service.refreshPoolInfo(n)}aprInPercents(n){return this.service.aprInPercents(n)}async getExtraGasMaxLimits(n,r){return this.service.getExtraGasMaxLimits(n,r)}async getVUsdFromAmount(n,r,a){return this.service.getVUsdFromAmount(n,r,a)}async getAmountFromVUsd(n,r){return this.service.getAmountFromVUsd(n,r)}async swapAndBridgeFeeCalculation(n,r,a){return this.service.swapAndBridgeFeeCalculation(n,r,a)}async swapAndBridgeFeeCalculationReverse(n,r,a){return this.service.swapAndBridgeFeeCalculationReverse(n,r,a)}async getSendAmountDetails(n,r,a,s){return this.service.getSendAmountDetails(n,r,a,s)}};0&&(module.exports={AddressStatus,AllbridgeCoreSdk,AmountFormat,AmountNotEnoughError,ArgumentInvalidDecimalsError,CCTPDoesNotSupportedError,ChainSymbol,ChainType,ErrorCode,ExtraGasMaxLimitExceededError,FeePaymentMethod,InsufficientPoolLiquidityError,InvalidAmountError,InvalidGasFeePaymentOptionError,InvalidMessengerOptionError,InvalidTxError,JupiterError,Messenger,MethodNotSupportedError,NodeRpcUrlNotInitializedError,SdkError,SdkRootError,SolanaAutoTxFee,TimeoutError,TxTooLargeError,VerifyTxError,mainnet,nodeRpcUrlsDefault,nodeUrlsDefault});
2
2
  //# sourceMappingURL=index.js.map