@allbridge/bridge-core-sdk 3.22.1-alpha.2 → 3.23.0-beta.2

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 (234) hide show
  1. package/README.md +8 -8
  2. package/dist/browser/index.js +1 -1
  3. package/dist/browser/index.js.map +4 -4
  4. package/dist/cjs/index.js +1 -5
  5. package/dist/cjs/index.js.map +4 -4
  6. package/dist/esm/index.js +1 -1
  7. package/dist/esm/index.js.map +4 -4
  8. package/dist/src/chains/chain.enums.d.ts +5 -1
  9. package/dist/src/chains/chain.enums.js +4 -0
  10. package/dist/src/chains/chain.enums.js.map +1 -1
  11. package/dist/src/chains/index.js +6 -0
  12. package/dist/src/chains/index.js.map +1 -1
  13. package/dist/src/client/core-api/api-client-caching.js +1 -1
  14. package/dist/src/client/core-api/api-client-caching.js.map +1 -1
  15. package/dist/src/client/core-api/api-client.js +6 -0
  16. package/dist/src/client/core-api/api-client.js.map +1 -1
  17. package/dist/src/client/core-api/core-api-mapper.js +3 -0
  18. package/dist/src/client/core-api/core-api-mapper.js.map +1 -1
  19. package/dist/src/client/core-api/core-api.model.d.ts +8 -2
  20. package/dist/src/client/core-api/core-api.model.js +2 -0
  21. package/dist/src/client/core-api/core-api.model.js.map +1 -1
  22. package/dist/src/exceptions/exceptions.d.ts +4 -0
  23. package/dist/src/exceptions/exceptions.js +8 -1
  24. package/dist/src/exceptions/exceptions.js.map +1 -1
  25. package/dist/src/index.d.ts +10 -17
  26. package/dist/src/index.js +34 -26
  27. package/dist/src/index.js.map +1 -1
  28. package/dist/src/models/index.d.ts +1 -0
  29. package/dist/src/models/index.js.map +1 -1
  30. package/dist/src/services/bridge/evm/index.d.ts +3 -1
  31. package/dist/src/services/bridge/evm/index.js +47 -15
  32. package/dist/src/services/bridge/evm/index.js.map +1 -1
  33. package/dist/src/services/bridge/get-cctp-sol-token-recipient-address.js +3 -3
  34. package/dist/src/services/bridge/get-cctp-sol-token-recipient-address.js.map +1 -1
  35. package/dist/src/services/bridge/index.d.ts +1 -1
  36. package/dist/src/services/bridge/index.js +30 -26
  37. package/dist/src/services/bridge/index.js.map +1 -1
  38. package/dist/src/services/bridge/models/bridge.model.d.ts +4 -0
  39. package/dist/src/services/bridge/models/bridge.model.js.map +1 -1
  40. package/dist/src/services/bridge/raw-bridge-transaction-builder.js +2 -2
  41. package/dist/src/services/bridge/raw-bridge-transaction-builder.js.map +1 -1
  42. package/dist/src/services/bridge/sol/index.d.ts +2 -2
  43. package/dist/src/services/bridge/sol/index.js +8 -5
  44. package/dist/src/services/bridge/sol/index.js.map +1 -1
  45. package/dist/src/services/bridge/srb/index.js +1 -1
  46. package/dist/src/services/bridge/srb/index.js.map +1 -1
  47. package/dist/src/services/bridge/sui/index.js +3 -1
  48. package/dist/src/services/bridge/sui/index.js.map +1 -1
  49. package/dist/src/services/bridge/trx/index.d.ts +1 -1
  50. package/dist/src/services/bridge/trx/index.js +85 -54
  51. package/dist/src/services/bridge/trx/index.js.map +1 -1
  52. package/dist/src/services/bridge/utils.d.ts +12 -12
  53. package/dist/src/services/bridge/utils.js +78 -51
  54. package/dist/src/services/bridge/utils.js.map +1 -1
  55. package/dist/src/services/index.d.ts +13 -7
  56. package/dist/src/services/index.js +129 -48
  57. package/dist/src/services/index.js.map +1 -1
  58. package/dist/src/services/liquidity-pool/index.d.ts +1 -1
  59. package/dist/src/services/liquidity-pool/index.js +5 -8
  60. package/dist/src/services/liquidity-pool/index.js.map +1 -1
  61. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js +3 -3
  62. package/dist/src/services/liquidity-pool/raw-pool-transaction-builder.js.map +1 -1
  63. package/dist/src/services/liquidity-pool/trx/index.js +3 -3
  64. package/dist/src/services/liquidity-pool/trx/index.js.map +1 -1
  65. package/dist/src/services/models/abi/OftBridge.d.ts +386 -0
  66. package/dist/src/services/models/abi/OftBridge.js +500 -0
  67. package/dist/src/services/models/abi/OftBridge.js.map +1 -0
  68. package/dist/src/services/models/sui/_dependencies/source/0x1/ascii/structs.d.ts +2 -2
  69. package/dist/src/services/models/sui/_dependencies/source/0x1/bit-vector/structs.d.ts +1 -1
  70. package/dist/src/services/models/sui/_dependencies/source/0x1/fixed-point32/structs.d.ts +1 -1
  71. package/dist/src/services/models/sui/_dependencies/source/0x1/string/structs.d.ts +1 -1
  72. package/dist/src/services/models/sui/_dependencies/source/0x1/type-name/structs.d.ts +1 -1
  73. package/dist/src/services/models/sui/_dependencies/source/0x1/uq32-32/structs.d.ts +1 -1
  74. package/dist/src/services/models/sui/_dependencies/source/0x1/uq64-64/structs.d.ts +1 -1
  75. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/burn-message/structs.d.ts +1 -1
  76. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/handle-receive-message/structs.d.ts +1 -1
  77. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/message-transmitter-authenticator/structs.d.ts +1 -1
  78. package/dist/src/services/models/sui/_dependencies/source/0x31cc14d80c175ae39777c0238f20594c6d4869cfab199f40b69f3319956b8beb/state/structs.d.ts +1 -1
  79. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/mint-allowance/structs.d.ts +1 -1
  80. package/dist/src/services/models/sui/_dependencies/source/0x346e3233f61eb0055713417bfaddda7dc3bf26816faad1f7606994a368b92917/treasury/structs.d.ts +4 -4
  81. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/message/structs.d.ts +1 -1
  82. package/dist/src/services/models/sui/_dependencies/source/0x4931e06dce648b3931f890035bd196920770e913e43e45990b383f6486fdd0a5/state/structs.d.ts +1 -1
  83. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes20/structs.d.ts +1 -1
  84. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32/structs.d.ts +1 -1
  85. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed-vaas/structs.d.ts +1 -1
  86. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/emitter/structs.d.ts +2 -2
  87. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external-address/structs.d.ts +1 -1
  88. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/fee-collector/structs.d.ts +1 -1
  89. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian/structs.d.ts +1 -1
  90. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/guardian-set/structs.d.ts +1 -1
  91. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/publish-message/structs.d.ts +2 -2
  92. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set/structs.d.ts +2 -2
  93. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/state/structs.d.ts +1 -1
  94. package/dist/src/services/models/sui/_dependencies/source/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/vaa/structs.d.ts +1 -1
  95. package/dist/src/services/models/sui/_framework/util.d.ts +30 -3
  96. package/dist/src/services/models/sui/_framework/vector.d.ts +2 -2
  97. package/dist/src/services/models/sui/bridge/another-bridge/functions.d.ts +9 -9
  98. package/dist/src/services/models/sui/bridge/another-bridge/structs.d.ts +1 -1
  99. package/dist/src/services/models/sui/bridge/bridge/functions.d.ts +31 -31
  100. package/dist/src/services/models/sui/bridge/bridge/structs.d.ts +4 -4
  101. package/dist/src/services/models/sui/bridge/bridge-interface/functions.d.ts +54 -54
  102. package/dist/src/services/models/sui/bridge/events/functions.d.ts +9 -9
  103. package/dist/src/services/models/sui/bridge/events/structs.d.ts +9 -9
  104. package/dist/src/services/models/sui/bridge/pool/functions.d.ts +26 -26
  105. package/dist/src/services/models/sui/bridge/pool/structs.d.ts +3 -3
  106. package/dist/src/services/models/sui/bridge/pool-rewards/functions.d.ts +10 -10
  107. package/dist/src/services/models/sui/bridge/pool-rewards/structs.d.ts +1 -1
  108. package/dist/src/services/models/sui/bridge/pool-state/functions.d.ts +21 -21
  109. package/dist/src/services/models/sui/bridge/pool-state/structs.d.ts +1 -1
  110. package/dist/src/services/models/sui/bridge/user-deposit/functions.d.ts +7 -7
  111. package/dist/src/services/models/sui/bridge/user-deposit/structs.d.ts +1 -1
  112. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/functions.d.ts +19 -19
  113. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge/structs.d.ts +3 -3
  114. package/dist/src/services/models/sui/cctp-bridge/cctp-bridge-interface/functions.d.ts +15 -15
  115. package/dist/src/services/models/sui/cctp-bridge/events/functions.d.ts +4 -4
  116. package/dist/src/services/models/sui/cctp-bridge/events/structs.d.ts +4 -4
  117. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/functions.d.ts +1 -1
  118. package/dist/src/services/models/sui/cctp-bridge/message-transmitter-authenticator/structs.d.ts +1 -1
  119. package/dist/src/services/models/sui/gas-oracle/gas-oracle/functions.d.ts +16 -16
  120. package/dist/src/services/models/sui/gas-oracle/gas-oracle/structs.d.ts +3 -3
  121. package/dist/src/services/models/sui/gas-oracle/gas-oracle-interface/functions.d.ts +13 -13
  122. package/dist/src/services/models/sui/messenger/events/functions.d.ts +2 -2
  123. package/dist/src/services/models/sui/messenger/events/structs.d.ts +2 -2
  124. package/dist/src/services/models/sui/messenger/messenger/functions.d.ts +18 -18
  125. package/dist/src/services/models/sui/messenger/messenger/structs.d.ts +2 -2
  126. package/dist/src/services/models/sui/messenger/messenger-interface/functions.d.ts +15 -15
  127. package/dist/src/services/models/sui/sui/address/functions.d.ts +10 -10
  128. package/dist/src/services/models/sui/sui/authenticator-state/functions.d.ts +13 -13
  129. package/dist/src/services/models/sui/sui/authenticator-state/structs.d.ts +5 -5
  130. package/dist/src/services/models/sui/sui/bag/functions.d.ts +10 -10
  131. package/dist/src/services/models/sui/sui/bag/structs.d.ts +1 -1
  132. package/dist/src/services/models/sui/sui/balance/functions.d.ts +13 -13
  133. package/dist/src/services/models/sui/sui/balance/structs.d.ts +2 -2
  134. package/dist/src/services/models/sui/sui/bcs/functions.d.ts +29 -29
  135. package/dist/src/services/models/sui/sui/bcs/structs.d.ts +1 -1
  136. package/dist/src/services/models/sui/sui/bls12381/functions.d.ts +43 -43
  137. package/dist/src/services/models/sui/sui/bls12381/structs.d.ts +5 -5
  138. package/dist/src/services/models/sui/sui/borrow/functions.d.ts +4 -4
  139. package/dist/src/services/models/sui/sui/clock/functions.d.ts +3 -3
  140. package/dist/src/services/models/sui/sui/clock/structs.d.ts +1 -1
  141. package/dist/src/services/models/sui/sui/coin/functions.d.ts +45 -45
  142. package/dist/src/services/models/sui/sui/coin/structs.d.ts +7 -7
  143. package/dist/src/services/models/sui/sui/config/functions.d.ts +11 -11
  144. package/dist/src/services/models/sui/sui/deny-list/functions.d.ts +21 -21
  145. package/dist/src/services/models/sui/sui/deny-list/structs.d.ts +7 -7
  146. package/dist/src/services/models/sui/sui/display/functions.d.ts +13 -13
  147. package/dist/src/services/models/sui/sui/display/structs.d.ts +3 -3
  148. package/dist/src/services/models/sui/sui/dynamic-field/functions.d.ts +16 -16
  149. package/dist/src/services/models/sui/sui/dynamic-object-field/functions.d.ts +12 -12
  150. package/dist/src/services/models/sui/sui/ecdsa-k1/functions.d.ts +3 -3
  151. package/dist/src/services/models/sui/sui/ecdsa-r1/functions.d.ts +2 -2
  152. package/dist/src/services/models/sui/sui/ecvrf/functions.d.ts +1 -1
  153. package/dist/src/services/models/sui/sui/ed25519/functions.d.ts +1 -1
  154. package/dist/src/services/models/sui/sui/event/functions.d.ts +1 -1
  155. package/dist/src/services/models/sui/sui/groth16/functions.d.ts +10 -10
  156. package/dist/src/services/models/sui/sui/groth16/structs.d.ts +4 -4
  157. package/dist/src/services/models/sui/sui/group-ops/functions.d.ts +23 -23
  158. package/dist/src/services/models/sui/sui/group-ops/structs.d.ts +1 -1
  159. package/dist/src/services/models/sui/sui/hash/functions.d.ts +2 -2
  160. package/dist/src/services/models/sui/sui/hex/functions.d.ts +3 -3
  161. package/dist/src/services/models/sui/sui/hmac/functions.d.ts +1 -1
  162. package/dist/src/services/models/sui/sui/kiosk/functions.d.ts +41 -41
  163. package/dist/src/services/models/sui/sui/kiosk/structs.d.ts +10 -10
  164. package/dist/src/services/models/sui/sui/kiosk-extension/functions.d.ts +14 -14
  165. package/dist/src/services/models/sui/sui/kiosk-extension/structs.d.ts +2 -2
  166. package/dist/src/services/models/sui/sui/linked-table/functions.d.ts +17 -17
  167. package/dist/src/services/models/sui/sui/math/functions.d.ts +7 -7
  168. package/dist/src/services/models/sui/sui/object/functions.d.ts +24 -24
  169. package/dist/src/services/models/sui/sui/object/structs.d.ts +2 -2
  170. package/dist/src/services/models/sui/sui/object-bag/functions.d.ts +11 -11
  171. package/dist/src/services/models/sui/sui/object-bag/structs.d.ts +1 -1
  172. package/dist/src/services/models/sui/sui/object-table/functions.d.ts +10 -10
  173. package/dist/src/services/models/sui/sui/object-table/structs.d.ts +1 -1
  174. package/dist/src/services/models/sui/sui/package/functions.d.ts +24 -24
  175. package/dist/src/services/models/sui/sui/package/structs.d.ts +4 -4
  176. package/dist/src/services/models/sui/sui/pay/functions.d.ts +8 -8
  177. package/dist/src/services/models/sui/sui/poseidon/functions.d.ts +2 -2
  178. package/dist/src/services/models/sui/sui/priority-queue/functions.d.ts +8 -8
  179. package/dist/src/services/models/sui/sui/random/functions.d.ts +23 -23
  180. package/dist/src/services/models/sui/sui/random/structs.d.ts +3 -3
  181. package/dist/src/services/models/sui/sui/sui/functions.d.ts +2 -2
  182. package/dist/src/services/models/sui/sui/sui/structs.d.ts +1 -1
  183. package/dist/src/services/models/sui/sui/table/functions.d.ts +10 -10
  184. package/dist/src/services/models/sui/sui/table/structs.d.ts +1 -1
  185. package/dist/src/services/models/sui/sui/table-vec/functions.d.ts +12 -12
  186. package/dist/src/services/models/sui/sui/table-vec/structs.d.ts +1 -1
  187. package/dist/src/services/models/sui/sui/token/functions.d.ts +45 -45
  188. package/dist/src/services/models/sui/sui/token/structs.d.ts +6 -6
  189. package/dist/src/services/models/sui/sui/transfer/functions.d.ts +13 -13
  190. package/dist/src/services/models/sui/sui/transfer/structs.d.ts +1 -1
  191. package/dist/src/services/models/sui/sui/transfer-policy/functions.d.ts +18 -18
  192. package/dist/src/services/models/sui/sui/transfer-policy/structs.d.ts +6 -6
  193. package/dist/src/services/models/sui/sui/tx-context/functions.d.ts +7 -7
  194. package/dist/src/services/models/sui/sui/tx-context/structs.d.ts +1 -1
  195. package/dist/src/services/models/sui/sui/types/functions.d.ts +1 -1
  196. package/dist/src/services/models/sui/sui/url/functions.d.ts +4 -4
  197. package/dist/src/services/models/sui/sui/url/structs.d.ts +1 -1
  198. package/dist/src/services/models/sui/sui/vdf/functions.d.ts +4 -4
  199. package/dist/src/services/models/sui/sui/vec-map/functions.d.ts +19 -19
  200. package/dist/src/services/models/sui/sui/vec-set/functions.d.ts +12 -12
  201. package/dist/src/services/models/sui/sui/versioned/functions.d.ts +7 -7
  202. package/dist/src/services/models/sui/sui/versioned/structs.d.ts +2 -2
  203. package/dist/src/services/models/sui/sui/zklogin-verified-id/functions.d.ts +9 -9
  204. package/dist/src/services/models/sui/sui/zklogin-verified-id/structs.d.ts +1 -1
  205. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/functions.d.ts +6 -6
  206. package/dist/src/services/models/sui/sui/zklogin-verified-issuer/structs.d.ts +1 -1
  207. package/dist/src/services/models/sui/utils/bytes32/functions.d.ts +14 -14
  208. package/dist/src/services/models/sui/utils/bytes32/structs.d.ts +1 -1
  209. package/dist/src/services/models/sui/utils/fee-collector/functions.d.ts +5 -5
  210. package/dist/src/services/models/sui/utils/fee-collector/structs.d.ts +1 -1
  211. package/dist/src/services/models/sui/utils/message/functions.d.ts +9 -9
  212. package/dist/src/services/models/sui/utils/message/structs.d.ts +1 -1
  213. package/dist/src/services/models/sui/utils/messenger-protocol/functions.d.ts +3 -3
  214. package/dist/src/services/models/sui/utils/messenger-protocol/structs.d.ts +1 -1
  215. package/dist/src/services/models/sui/utils/set/functions.d.ts +5 -5
  216. package/dist/src/services/models/sui/utils/set/structs.d.ts +2 -2
  217. package/dist/src/services/models/sui/utils/version/functions.d.ts +3 -3
  218. package/dist/src/services/models/sui/utils/version/structs.d.ts +1 -1
  219. package/dist/src/services/models/sui/wormhole-messenger/events/functions.d.ts +2 -2
  220. package/dist/src/services/models/sui/wormhole-messenger/events/structs.d.ts +2 -2
  221. package/dist/src/services/models/sui/wormhole-messenger/wh-messenger-interface/functions.d.ts +15 -15
  222. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/functions.d.ts +20 -20
  223. package/dist/src/services/models/sui/wormhole-messenger/wormhole-messenger/structs.d.ts +2 -2
  224. package/dist/src/services/token/index.js +9 -12
  225. package/dist/src/services/token/index.js.map +1 -1
  226. package/dist/src/tokens-info/tokens-info.model.d.ts +14 -0
  227. package/dist/src/tokens-info/tokens-info.model.js.map +1 -1
  228. package/dist/src/version.d.ts +1 -1
  229. package/dist/src/version.js +1 -1
  230. package/dist/src/version.js.map +1 -1
  231. package/package.json +14 -13
  232. package/dist/src/utils/tronweb/lazy-load-tronweb-import.d.ts +0 -1
  233. package/dist/src/utils/tronweb/lazy-load-tronweb-import.js +0 -35
  234. package/dist/src/utils/tronweb/lazy-load-tronweb-import.js.map +0 -1
@@ -21,14 +21,14 @@ const web3_js_1 = require("@solana/web3.js");
21
21
  const stellar_sdk_1 = require("@stellar/stellar-sdk");
22
22
  const big_js_1 = require("big.js");
23
23
  const randombytes_1 = __importDefault(require("randombytes"));
24
+ const tronweb_1 = require("tronweb");
24
25
  const chains_1 = require("../../chains");
25
26
  const core_api_model_1 = require("../../client/core-api/core-api.model");
26
27
  const exceptions_1 = require("../../exceptions");
27
28
  const models_1 = require("../../models");
28
29
  const calculation_1 = require("../../utils/calculation");
29
- const lazy_load_tronweb_import_1 = require("../../utils/tronweb/lazy-load-tronweb-import");
30
30
  // 2. COMMON Realization
31
- async function formatAddress(address, from, to) {
31
+ function formatAddress(address, from, to) {
32
32
  let buffer;
33
33
  switch (from) {
34
34
  case models_1.ChainType.EVM: {
@@ -40,7 +40,7 @@ async function formatAddress(address, from, to) {
40
40
  break;
41
41
  }
42
42
  case models_1.ChainType.TRX: {
43
- buffer = await tronAddressToBuffer32(address);
43
+ buffer = tronAddressToBuffer32(address);
44
44
  break;
45
45
  }
46
46
  case models_1.ChainType.SRB: {
@@ -81,17 +81,16 @@ function evmAddressToBuffer32(address) {
81
81
  const buff = hexToBuffer(address);
82
82
  return Buffer.concat([Buffer.alloc(length - buff.length, 0), buff], length);
83
83
  }
84
- async function tronAddressToBuffer32(address) {
85
- const ethAddress = await tronAddressToEthAddress(address);
84
+ function tronAddressToBuffer32(address) {
85
+ const ethAddress = tronAddressToEthAddress(address);
86
86
  const buffer = hexToBuffer(ethAddress);
87
87
  return bufferToSize(buffer, 32);
88
88
  }
89
- async function tronAddressToEthAddress(address) {
90
- const { utils: TronWebUtils } = await (0, lazy_load_tronweb_import_1.getTronWebModuleDefault)();
91
- const bytes = TronWebUtils.crypto.decodeBase58Address(address);
89
+ function tronAddressToEthAddress(address) {
90
+ const bytes = tronweb_1.utils.crypto.decodeBase58Address(address);
92
91
  if (!bytes)
93
92
  return "";
94
- return TronWebUtils.bytes.byteArray2hexStr(bytes).replace(/^41/, "0x");
93
+ return tronweb_1.utils.bytes.byteArray2hexStr(bytes).replace(/^41/, "0x");
95
94
  }
96
95
  function bufferToSize(buffer, size) {
97
96
  if (buffer.length >= size) {
@@ -123,7 +122,7 @@ function getNonceBigInt() {
123
122
  return bigint;
124
123
  }
125
124
  // 2. COMMON Realization
126
- async function prepareTxSwapParams(bridgeChainType, params) {
125
+ function prepareTxSwapParams(bridgeChainType, params) {
127
126
  const txSwapParams = {};
128
127
  const sourceToken = params.sourceToken;
129
128
  txSwapParams.amount = (0, calculation_1.convertFloatAmountToInt)(params.amount, sourceToken.decimals).toFixed();
@@ -136,7 +135,7 @@ async function prepareTxSwapParams(bridgeChainType, params) {
136
135
  txSwapParams.fromTokenAddress = sourceToken.originTokenAddress;
137
136
  }
138
137
  else {
139
- txSwapParams.fromTokenAddress = await formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);
138
+ txSwapParams.fromTokenAddress = formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);
140
139
  }
141
140
  txSwapParams.toAccountAddress = params.toAccountAddress;
142
141
  if (bridgeChainType === models_1.ChainType.SUI) {
@@ -146,7 +145,7 @@ async function prepareTxSwapParams(bridgeChainType, params) {
146
145
  txSwapParams.toTokenAddress = params.destinationToken.originTokenAddress;
147
146
  }
148
147
  else {
149
- txSwapParams.toTokenAddress = await formatAddress(params.destinationToken.tokenAddress, bridgeChainType, bridgeChainType);
148
+ txSwapParams.toTokenAddress = formatAddress(params.destinationToken.tokenAddress, bridgeChainType, bridgeChainType);
150
149
  }
151
150
  txSwapParams.minimumReceiveAmount = params.minimumReceiveAmount
152
151
  ? (0, calculation_1.convertFloatAmountToInt)(params.minimumReceiveAmount, params.destinationToken.decimals).toFixed()
@@ -178,20 +177,31 @@ async function prepareTxSendParams(bridgeChainType, params, api) {
178
177
  txSendParams.gasFeePaymentMethod = models_1.FeePaymentMethod.WITH_NATIVE_CURRENCY;
179
178
  }
180
179
  const sourceToken = params.sourceToken;
181
- if (params.messenger === core_api_model_1.Messenger.CCTP) {
182
- if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {
183
- throw new exceptions_1.CCTPDoesNotSupportedError("Such route does not support CCTP protocol");
184
- }
185
- txSendParams.contractAddress = sourceToken.cctpAddress;
186
- }
187
- else if (params.messenger === core_api_model_1.Messenger.CCTP_V2) {
188
- if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {
189
- throw new exceptions_1.CCTPDoesNotSupportedError("Such route does not support CCTP V2 protocol");
190
- }
191
- txSendParams.contractAddress = sourceToken.cctpV2Address;
192
- }
193
- else {
194
- txSendParams.contractAddress = sourceToken.bridgeAddress;
180
+ switch (params.messenger) {
181
+ case core_api_model_1.Messenger.CCTP:
182
+ if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {
183
+ throw new exceptions_1.CCTPDoesNotSupportedError("Such route does not support CCTP protocol");
184
+ }
185
+ txSendParams.contractAddress = sourceToken.cctpAddress;
186
+ break;
187
+ case core_api_model_1.Messenger.CCTP_V2:
188
+ if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {
189
+ throw new exceptions_1.CCTPDoesNotSupportedError("Such route does not support CCTP V2 protocol");
190
+ }
191
+ txSendParams.contractAddress = sourceToken.cctpV2Address;
192
+ break;
193
+ case core_api_model_1.Messenger.OFT:
194
+ if (!sourceToken.oftBridgeAddress ||
195
+ !params.destinationToken.oftBridgeAddress ||
196
+ sourceToken.oftId !== params.destinationToken.oftId) {
197
+ throw new exceptions_1.OFTDoesNotSupportedError("Such route does not support OFT protocol");
198
+ }
199
+ txSendParams.contractAddress = sourceToken.oftBridgeAddress;
200
+ break;
201
+ case core_api_model_1.Messenger.ALLBRIDGE:
202
+ case core_api_model_1.Messenger.WORMHOLE:
203
+ txSendParams.contractAddress = sourceToken.bridgeAddress;
204
+ break;
195
205
  }
196
206
  txSendParams.messenger = params.messenger;
197
207
  txSendParams.fromAccountAddress = params.fromAccountAddress;
@@ -199,7 +209,7 @@ async function prepareTxSendParams(bridgeChainType, params, api) {
199
209
  //Fee
200
210
  let { fee, feeFormat } = params;
201
211
  if (!fee) {
202
- const gasFeeOptions = await getGasFeeOptions(txSendParams.fromChainId, params.sourceToken.chainType, txSendParams.toChainId, sourceToken.decimals, txSendParams.messenger, api);
212
+ const gasFeeOptions = await getGasFeeOptions(params.sourceToken, txSendParams.toChainId, txSendParams.messenger, api);
203
213
  const gasFeeOption = gasFeeOptions[txSendParams.gasFeePaymentMethod];
204
214
  if (!gasFeeOption) {
205
215
  throw new exceptions_1.InvalidGasFeePaymentOptionError();
@@ -223,26 +233,41 @@ async function prepareTxSendParams(bridgeChainType, params, api) {
223
233
  //ExtraGas
224
234
  const { extraGas, extraGasFormat } = params;
225
235
  if (extraGas && +extraGas > 0) {
226
- if (extraGasFormat == models_1.AmountFormat.FLOAT) {
227
- switch (txSendParams.gasFeePaymentMethod) {
228
- case models_1.FeePaymentMethod.WITH_NATIVE_CURRENCY:
229
- txSendParams.extraGas = (0, calculation_1.convertFloatAmountToInt)(extraGas, chains_1.Chains.getChainDecimalsByType(sourceToken.chainType)).toFixed(0);
230
- break;
231
- case models_1.FeePaymentMethod.WITH_STABLECOIN:
232
- txSendParams.extraGas = (0, calculation_1.convertFloatAmountToInt)(extraGas, sourceToken.decimals).toFixed(0);
233
- break;
234
- }
236
+ const extraGasLimits = await getExtraGasMaxLimits(sourceToken, params.destinationToken, txSendParams.messenger, api);
237
+ let extraGasDecimals;
238
+ let extraGasDestRate;
239
+ switch (txSendParams.gasFeePaymentMethod) {
240
+ case models_1.FeePaymentMethod.WITH_NATIVE_CURRENCY:
241
+ extraGasDecimals = chains_1.Chains.getChainDecimalsByType(sourceToken.chainType);
242
+ extraGasDestRate = (0, big_js_1.Big)(extraGasLimits.exchangeRate);
243
+ break;
244
+ case models_1.FeePaymentMethod.WITH_STABLECOIN:
245
+ extraGasDecimals = sourceToken.decimals;
246
+ extraGasDestRate = (0, big_js_1.Big)(extraGasLimits.exchangeRate).div(extraGasLimits.sourceNativeTokenPrice);
247
+ break;
235
248
  }
236
- else {
237
- txSendParams.extraGas = extraGas;
249
+ switch (extraGasFormat ?? models_1.AmountFormat.INT) {
250
+ case models_1.AmountFormat.FLOAT: {
251
+ txSendParams.extraGas = (0, calculation_1.convertFloatAmountToInt)(extraGas, extraGasDecimals).toFixed(0);
252
+ const extraGasDestFloat = extraGasDestRate.mul(extraGas);
253
+ txSendParams.extraGasDest = (0, calculation_1.convertFloatAmountToInt)(extraGasDestFloat, chains_1.Chains.getChainDecimalsByType(params.destinationToken.chainType)).toFixed(0, big_js_1.Big.roundDown);
254
+ break;
255
+ }
256
+ case models_1.AmountFormat.INT: {
257
+ txSendParams.extraGas = extraGas;
258
+ const extraGasFloat = (0, calculation_1.convertIntAmountToFloat)(txSendParams.extraGas, chains_1.Chains.getChainDecimalsByType(sourceToken.chainType));
259
+ const extraGasDestFloat = extraGasDestRate.mul(extraGasFloat);
260
+ txSendParams.extraGasDest = (0, calculation_1.convertFloatAmountToInt)(extraGasDestFloat, chains_1.Chains.getChainDecimalsByType(params.destinationToken.chainType)).toFixed(0, big_js_1.Big.roundDown);
261
+ break;
262
+ }
238
263
  }
239
- await validateExtraGasNotExceeded(txSendParams.extraGas, txSendParams.gasFeePaymentMethod, sourceToken, params.destinationToken, api);
264
+ validateExtraGasNotExceeded(txSendParams.extraGas, txSendParams.gasFeePaymentMethod, extraGasLimits);
240
265
  }
241
266
  if (bridgeChainType !== models_1.ChainType.SUI) {
242
- txSendParams.fromTokenAddress = await formatAddress(txSendParams.fromTokenAddress, bridgeChainType, bridgeChainType);
267
+ txSendParams.fromTokenAddress = formatAddress(txSendParams.fromTokenAddress, bridgeChainType, bridgeChainType);
243
268
  }
244
- txSendParams.toAccountAddress = await formatAddress(params.toAccountAddress, toChainType, bridgeChainType);
245
- txSendParams.toTokenAddress = await formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);
269
+ txSendParams.toAccountAddress = formatAddress(params.toAccountAddress, toChainType, bridgeChainType);
270
+ txSendParams.toTokenAddress = formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);
246
271
  if (txSendParams.gasFeePaymentMethod == models_1.FeePaymentMethod.WITH_STABLECOIN) {
247
272
  validateAmountEnough(txSendParams.amount, sourceToken.decimals, txSendParams.fee, txSendParams.extraGas);
248
273
  }
@@ -256,29 +281,30 @@ function validateAmountEnough(amountInt, decimals, feeInt, extraGasInt) {
256
281
  throw new exceptions_1.AmountNotEnoughError(`Amount not enough to pay fee, ${(0, calculation_1.convertIntAmountToFloat)((0, big_js_1.Big)(amountTotal).minus(1).neg(), decimals).toFixed()} stables is missing`);
257
282
  }
258
283
  }
259
- async function getGasFeeOptions(sourceAllbridgeChainId, sourceChainType, destinationAllbridgeChainId, sourceChainTokenDecimals, messenger, api) {
284
+ async function getGasFeeOptions(sourceChainToken, destinationAllbridgeChainId, messenger, api) {
260
285
  const transactionCostResponse = await api.getReceiveTransactionCost({
261
- sourceChainId: sourceAllbridgeChainId,
286
+ sourceChainId: sourceChainToken.allbridgeChainId,
262
287
  destinationChainId: destinationAllbridgeChainId,
263
288
  messenger,
289
+ sourceToken: sourceChainToken.tokenAddress,
264
290
  });
265
291
  const gasFeeOptions = {
266
292
  [models_1.FeePaymentMethod.WITH_NATIVE_CURRENCY]: {
267
293
  [models_1.AmountFormat.INT]: transactionCostResponse.fee,
268
- [models_1.AmountFormat.FLOAT]: (0, calculation_1.convertIntAmountToFloat)(transactionCostResponse.fee, chains_1.Chains.getChainDecimalsByType(sourceChainType)).toFixed(),
294
+ [models_1.AmountFormat.FLOAT]: (0, calculation_1.convertIntAmountToFloat)(transactionCostResponse.fee, chains_1.Chains.getChainDecimalsByType(sourceChainToken.chainType)).toFixed(),
269
295
  },
296
+ adminFeeShareWithExtras: transactionCostResponse.adminFeeShareWithExtras,
270
297
  };
271
298
  if (transactionCostResponse.sourceNativeTokenPrice) {
272
- const gasFeeIntWithStables = (0, calculation_1.convertAmountPrecision)(new big_js_1.Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice), chains_1.Chains.getChainDecimalsByType(sourceChainType), sourceChainTokenDecimals).toFixed(0, big_js_1.Big.roundUp);
299
+ const gasFeeIntWithStables = (0, calculation_1.convertAmountPrecision)(new big_js_1.Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice), chains_1.Chains.getChainDecimalsByType(sourceChainToken.chainType), sourceChainToken.decimals).toFixed(0, big_js_1.Big.roundUp);
273
300
  gasFeeOptions[models_1.FeePaymentMethod.WITH_STABLECOIN] = {
274
301
  [models_1.AmountFormat.INT]: gasFeeIntWithStables,
275
- [models_1.AmountFormat.FLOAT]: (0, calculation_1.convertIntAmountToFloat)(gasFeeIntWithStables, sourceChainTokenDecimals).toFixed(),
302
+ [models_1.AmountFormat.FLOAT]: (0, calculation_1.convertIntAmountToFloat)(gasFeeIntWithStables, sourceChainToken.decimals).toFixed(),
276
303
  };
277
304
  }
278
305
  return gasFeeOptions;
279
306
  }
280
- async function validateExtraGasNotExceeded(extraGasInt, gasFeePaymentMethod, sourceToken, destinationToken, api) {
281
- const extraGasLimits = await getExtraGasMaxLimits(sourceToken, destinationToken, api);
307
+ function validateExtraGasNotExceeded(extraGasInt, gasFeePaymentMethod, extraGasLimits) {
282
308
  const extraGasMaxLimit = extraGasLimits.extraGasMax[gasFeePaymentMethod];
283
309
  if (!extraGasMaxLimit) {
284
310
  throw new exceptions_1.InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);
@@ -288,12 +314,13 @@ async function validateExtraGasNotExceeded(extraGasInt, gasFeePaymentMethod, sou
288
314
  throw new exceptions_1.ExtraGasMaxLimitExceededError(`Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`);
289
315
  }
290
316
  }
291
- async function getExtraGasMaxLimits(sourceChainToken, destinationChainToken, api) {
317
+ async function getExtraGasMaxLimits(sourceChainToken, destinationChainToken, messenger, api) {
292
318
  const extraGasMaxLimits = {};
293
319
  const transactionCostResponse = await api.getReceiveTransactionCost({
294
320
  sourceChainId: sourceChainToken.allbridgeChainId,
295
321
  destinationChainId: destinationChainToken.allbridgeChainId,
296
- messenger: core_api_model_1.Messenger.ALLBRIDGE,
322
+ messenger,
323
+ sourceToken: sourceChainToken.tokenAddress,
297
324
  });
298
325
  const maxAmount = destinationChainToken.txCostAmount.maxAmount;
299
326
  const maxAmountFloat = (0, calculation_1.convertIntAmountToFloat)(maxAmount, chains_1.Chains.getChainDecimalsByType(destinationChainToken.chainType)).toFixed();
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/services/bridge/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { Address } from \"@stellar/stellar-sdk\";\nimport { Big, BigSource } from \"big.js\";\nimport randomBytes from \"randombytes\";\nimport { Chains } from \"../../chains\";\nimport { Messenger } from \"../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport {\n AmountNotEnoughError,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitExceededError,\n InvalidGasFeePaymentOptionError,\n SdkError,\n} from \"../../exceptions\";\nimport {\n AmountFormat,\n ChainType,\n ExtraGasMaxLimitResponse,\n ExtraGasMaxLimits,\n FeePaymentMethod,\n GasFeeOptions,\n SwapParams,\n} from \"../../models\";\nimport { ChainDetailsMap, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertAmountPrecision, convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport { getTronWebModuleDefault } from \"../../utils/tronweb/lazy-load-tronweb-import\";\nimport {\n SendParams,\n TxSendParams,\n TxSendParamsEvm,\n TxSendParamsSol,\n TxSendParamsSrb,\n TxSendParamsSui,\n TxSendParamsTrx,\n TxSwapParams,\n TxSwapParamsEvm,\n TxSwapParamsSol,\n TxSwapParamsSrb,\n TxSwapParamsSui,\n TxSwapParamsTrx,\n} from \"./models\";\n\n// 1. OVERLOADS\nexport async function formatAddress(\n address: string,\n from: ChainType,\n to: ChainType.EVM | ChainType.SUI\n): Promise<string>;\nexport async function formatAddress(address: string, from: ChainType, to: ChainType.TRX): Promise<Buffer>;\nexport async function formatAddress(\n address: string,\n from: ChainType,\n to: ChainType.SOLANA | ChainType.SRB\n): Promise<number[]>;\nexport async function formatAddress(\n address: string,\n from: ChainType,\n to: ChainType\n): Promise<string | number[] | Buffer>;\n\n// 2. COMMON Realization\nexport async function formatAddress(\n address: string,\n from: ChainType,\n to: ChainType\n): Promise<string | number[] | Buffer> {\n let buffer: Buffer;\n switch (from) {\n case ChainType.EVM: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.SOLANA: {\n buffer = new PublicKey(address).toBuffer();\n break;\n }\n case ChainType.TRX: {\n buffer = await tronAddressToBuffer32(address);\n break;\n }\n case ChainType.SRB: {\n buffer = new Address(address).toBuffer();\n break;\n }\n case ChainType.SUI: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n }\n\n switch (to) {\n case ChainType.EVM: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.SOLANA: {\n return Array.from(buffer);\n }\n case ChainType.TRX: {\n return buffer;\n }\n case ChainType.SRB: {\n return buffer.toJSON().data;\n }\n case ChainType.SUI: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n }\n}\n\nexport function normalizeSuiHex(hex: string): string {\n return hex.replace(/^0x/i, \"\");\n}\n\nexport function hexToBuffer(hex: string): Buffer {\n return Buffer.from(hex.replace(/^0x/i, \"\"), \"hex\");\n}\n\nexport function evmAddressToBuffer32(address: string): Buffer {\n const length = 32;\n const buff = hexToBuffer(address);\n return Buffer.concat([Buffer.alloc(length - buff.length, 0), buff], length);\n}\n\nexport async function tronAddressToBuffer32(address: string): Promise<Buffer> {\n const ethAddress = await tronAddressToEthAddress(address);\n const buffer = hexToBuffer(ethAddress);\n return bufferToSize(buffer, 32);\n}\n\nexport async function tronAddressToEthAddress(address: string): Promise<string> {\n const { utils: TronWebUtils } = await getTronWebModuleDefault();\n const bytes = TronWebUtils.crypto.decodeBase58Address(address);\n if (!bytes) return \"\";\n return TronWebUtils.bytes.byteArray2hexStr(bytes).replace(/^41/, \"0x\");\n}\n\nfunction bufferToSize(buffer: Buffer, size: number): Buffer {\n if (buffer.length >= size) {\n return buffer;\n }\n const result = Buffer.alloc(size, 0);\n buffer.copy(result, size - buffer.length);\n return result;\n}\n\nexport function getTokenByTokenAddress(\n chainDetailsMap: ChainDetailsMap,\n chainSymbol: string,\n tokenAddress: string\n): TokenWithChainDetails {\n const chainDetail = chainDetailsMap[chainSymbol];\n if (!chainDetail) {\n throw new SdkError(\"Cannot find chain detail for \" + chainSymbol);\n }\n const token = chainDetail.tokens.find((value) => value.tokenAddress.toUpperCase() === tokenAddress.toUpperCase());\n if (!token) {\n throw new SdkError(\"Cannot find token info about token \" + tokenAddress + \" on chain \" + chainSymbol);\n }\n return token;\n}\n\nexport function getNonce(): Buffer {\n return randomBytes(32);\n}\n\nexport function getNonceBigInt(): bigint {\n const bigint = randomBytes(32).readBigInt64BE();\n if (bigint < 0) {\n return bigint * -1n;\n }\n return bigint;\n}\n\n// 1. OVERLOADS\nexport async function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): Promise<TxSwapParamsEvm | TxSwapParamsSui>;\nexport async function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): Promise<TxSwapParamsTrx>;\nexport async function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): Promise<TxSwapParamsSol | TxSwapParamsSrb>;\nexport async function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): Promise<TxSwapParams>;\n\n// 2. COMMON Realization\nexport async function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): Promise<TxSwapParams> {\n const txSwapParams = {} as TxSwapParams;\n const sourceToken = params.sourceToken;\n txSwapParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n txSwapParams.contractAddress = sourceToken.bridgeAddress;\n txSwapParams.fromAccountAddress = params.fromAccountAddress;\n if (bridgeChainType === ChainType.SUI) {\n if (!sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI sourceToken must contain 'originTokenAddress'\");\n }\n txSwapParams.fromTokenAddress = sourceToken.originTokenAddress;\n } else {\n txSwapParams.fromTokenAddress = await formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);\n }\n txSwapParams.toAccountAddress = params.toAccountAddress;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.destinationToken.originTokenAddress) {\n throw new SdkError(\"SUI destinationToken must contain 'originTokenAddress'\");\n }\n txSwapParams.toTokenAddress = params.destinationToken.originTokenAddress;\n } else {\n txSwapParams.toTokenAddress = await formatAddress(\n params.destinationToken.tokenAddress,\n bridgeChainType,\n bridgeChainType\n );\n }\n txSwapParams.minimumReceiveAmount = params.minimumReceiveAmount\n ? convertFloatAmountToInt(params.minimumReceiveAmount, params.destinationToken.decimals).toFixed()\n : \"0\";\n return txSwapParams;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsEvm | TxSendParamsSui>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.TRX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsTrx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsSol | TxSendParamsSrb>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams>;\n\n// 2. COMMON Realization\nexport async function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams> {\n const txSendParams = {} as TxSendParams;\n\n txSendParams.fromChainId = params.sourceToken.allbridgeChainId;\n txSendParams.fromChainSymbol = params.sourceToken.chainSymbol;\n const toChainType = Chains.getChainProperty(params.destinationToken.chainSymbol).chainType;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n txSendParams.fromTokenAddress = params.sourceToken.originTokenAddress;\n } else {\n txSendParams.fromTokenAddress = params.sourceToken.tokenAddress;\n }\n\n txSendParams.toChainId = params.destinationToken.allbridgeChainId;\n txSendParams.toTokenAddress = params.destinationToken.tokenAddress;\n\n if (params.gasFeePaymentMethod === FeePaymentMethod.WITH_STABLECOIN) {\n txSendParams.gasFeePaymentMethod = FeePaymentMethod.WITH_STABLECOIN;\n } else {\n // default FeePaymentMethod.WITH_NATIVE_CURRENCY\n txSendParams.gasFeePaymentMethod = FeePaymentMethod.WITH_NATIVE_CURRENCY;\n }\n const sourceToken = params.sourceToken;\n\n if (params.messenger === Messenger.CCTP) {\n if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpAddress;\n } else if (params.messenger === Messenger.CCTP_V2) {\n if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpV2Address;\n } else {\n txSendParams.contractAddress = sourceToken.bridgeAddress;\n }\n\n txSendParams.messenger = params.messenger;\n txSendParams.fromAccountAddress = params.fromAccountAddress;\n txSendParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n\n //Fee\n let { fee, feeFormat } = params;\n if (!fee) {\n const gasFeeOptions = await getGasFeeOptions(\n txSendParams.fromChainId,\n params.sourceToken.chainType,\n txSendParams.toChainId,\n sourceToken.decimals,\n txSendParams.messenger,\n api\n );\n\n const gasFeeOption = gasFeeOptions[txSendParams.gasFeePaymentMethod];\n if (!gasFeeOption) {\n throw new InvalidGasFeePaymentOptionError();\n }\n fee = gasFeeOption[AmountFormat.INT];\n feeFormat = AmountFormat.INT;\n }\n if (feeFormat == AmountFormat.FLOAT) {\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n txSendParams.fee = convertFloatAmountToInt(fee, Chains.getChainDecimalsByType(sourceToken.chainType)).toFixed(\n 0\n );\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.decimals).toFixed(0);\n break;\n }\n } else {\n txSendParams.fee = fee;\n }\n\n //ExtraGas\n const { extraGas, extraGasFormat } = params;\n if (extraGas && +extraGas > 0) {\n if (extraGasFormat == AmountFormat.FLOAT) {\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n txSendParams.extraGas = convertFloatAmountToInt(\n extraGas,\n Chains.getChainDecimalsByType(sourceToken.chainType)\n ).toFixed(0);\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n txSendParams.extraGas = convertFloatAmountToInt(extraGas, sourceToken.decimals).toFixed(0);\n break;\n }\n } else {\n txSendParams.extraGas = extraGas;\n }\n await validateExtraGasNotExceeded(\n txSendParams.extraGas,\n txSendParams.gasFeePaymentMethod,\n sourceToken,\n params.destinationToken,\n api\n );\n }\n\n if (bridgeChainType !== ChainType.SUI) {\n txSendParams.fromTokenAddress = await formatAddress(\n txSendParams.fromTokenAddress,\n bridgeChainType,\n bridgeChainType\n );\n }\n txSendParams.toAccountAddress = await formatAddress(params.toAccountAddress, toChainType, bridgeChainType);\n txSendParams.toTokenAddress = await formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);\n if (txSendParams.gasFeePaymentMethod == FeePaymentMethod.WITH_STABLECOIN) {\n validateAmountEnough(txSendParams.amount, sourceToken.decimals, txSendParams.fee, txSendParams.extraGas);\n }\n return txSendParams;\n}\n\nfunction validateAmountEnough(\n amountInt: BigSource,\n decimals: number,\n feeInt: BigSource,\n extraGasInt: BigSource | undefined\n) {\n const amountTotal = Big(amountInt)\n .minus(feeInt)\n .minus(extraGasInt ?? 0);\n if (amountTotal.lte(0)) {\n throw new AmountNotEnoughError(\n `Amount not enough to pay fee, ${convertIntAmountToFloat(\n Big(amountTotal).minus(1).neg(),\n decimals\n ).toFixed()} stables is missing`\n );\n }\n}\n\nexport async function getGasFeeOptions(\n sourceAllbridgeChainId: number,\n sourceChainType: ChainType,\n destinationAllbridgeChainId: number,\n sourceChainTokenDecimals: number,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<GasFeeOptions> {\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceAllbridgeChainId,\n destinationChainId: destinationAllbridgeChainId,\n messenger,\n });\n\n const gasFeeOptions: GasFeeOptions = {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: {\n [AmountFormat.INT]: transactionCostResponse.fee,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n transactionCostResponse.fee,\n Chains.getChainDecimalsByType(sourceChainType)\n ).toFixed(),\n },\n };\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice),\n Chains.getChainDecimalsByType(sourceChainType),\n sourceChainTokenDecimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(gasFeeIntWithStables, sourceChainTokenDecimals).toFixed(),\n };\n }\n\n return gasFeeOptions;\n}\n\nasync function validateExtraGasNotExceeded(\n extraGasInt: string,\n gasFeePaymentMethod: FeePaymentMethod,\n sourceToken: TokenWithChainDetails,\n destinationToken: TokenWithChainDetails,\n api: AllbridgeCoreClient\n) {\n const extraGasLimits = await getExtraGasMaxLimits(sourceToken, destinationToken, api);\n const extraGasMaxLimit = extraGasLimits.extraGasMax[gasFeePaymentMethod];\n if (!extraGasMaxLimit) {\n throw new InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);\n }\n const extraGasMaxIntLimit = extraGasMaxLimit[AmountFormat.INT];\n if (Big(extraGasInt).gt(extraGasMaxIntLimit)) {\n throw new ExtraGasMaxLimitExceededError(\n `Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`\n );\n }\n}\n\nexport async function getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n api: AllbridgeCoreClient\n): Promise<ExtraGasMaxLimitResponse> {\n const extraGasMaxLimits: ExtraGasMaxLimits = {};\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger: Messenger.ALLBRIDGE,\n });\n const maxAmount = destinationChainToken.txCostAmount.maxAmount;\n const maxAmountFloat = convertIntAmountToFloat(\n maxAmount,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed();\n const maxAmountFloatInSourceNative = Big(maxAmountFloat)\n .div(transactionCostResponse.exchangeRate)\n .toFixed(Chains.getChainDecimalsByType(sourceChainToken.chainType), Big.roundDown);\n const maxAmountInSourceNative = convertFloatAmountToInt(\n maxAmountFloatInSourceNative,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(0);\n extraGasMaxLimits[FeePaymentMethod.WITH_NATIVE_CURRENCY] = {\n [AmountFormat.INT]: maxAmountInSourceNative,\n [AmountFormat.FLOAT]: maxAmountFloatInSourceNative,\n };\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.sourceNativeTokenPrice)\n .toFixed(sourceChainToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: convertFloatAmountToInt(maxAmountFloatInStable, sourceChainToken.decimals).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n return {\n extraGasMax: extraGasMaxLimits,\n destinationChain: {\n gasAmountMax: {\n [AmountFormat.INT]: maxAmount,\n [AmountFormat.FLOAT]: maxAmountFloat,\n },\n swap: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n transfer: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n}\n\nexport function isSendParams(params: SwapParams | SendParams): params is SendParams {\n return params.sourceToken.chainSymbol !== params.destinationToken.chainSymbol;\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/services/bridge/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { PublicKey } from \"@solana/web3.js\";\nimport { Address } from \"@stellar/stellar-sdk\";\nimport { Big, BigSource } from \"big.js\";\nimport randomBytes from \"randombytes\";\nimport { utils as TronWebUtils } from \"tronweb\";\nimport { Chains } from \"../../chains\";\nimport { Messenger } from \"../../client/core-api/core-api.model\";\nimport { AllbridgeCoreClient } from \"../../client/core-api/core-client-base\";\nimport {\n AmountNotEnoughError,\n CCTPDoesNotSupportedError,\n ExtraGasMaxLimitExceededError,\n InvalidGasFeePaymentOptionError,\n OFTDoesNotSupportedError,\n SdkError,\n} from \"../../exceptions\";\nimport {\n AmountFormat,\n ChainType,\n ExtraGasMaxLimitResponse,\n ExtraGasMaxLimits,\n FeePaymentMethod,\n GasFeeOptions,\n SwapParams,\n} from \"../../models\";\nimport { ChainDetailsMap, TokenWithChainDetails } from \"../../tokens-info\";\nimport { convertAmountPrecision, convertFloatAmountToInt, convertIntAmountToFloat } from \"../../utils/calculation\";\nimport {\n SendParams,\n TxSendParams,\n TxSendParamsEvm,\n TxSendParamsSol,\n TxSendParamsSrb,\n TxSendParamsSui,\n TxSendParamsTrx,\n TxSwapParams,\n TxSwapParamsEvm,\n TxSwapParamsSol,\n TxSwapParamsSrb,\n TxSwapParamsSui,\n TxSwapParamsTrx,\n} from \"./models\"; // 1. OVERLOADS\n\n// 1. OVERLOADS\nexport function formatAddress(address: string, from: ChainType, to: ChainType.EVM | ChainType.SUI): string;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.TRX): Buffer;\nexport function formatAddress(address: string, from: ChainType, to: ChainType.SOLANA | ChainType.SRB): number[];\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer;\n\n// 2. COMMON Realization\nexport function formatAddress(address: string, from: ChainType, to: ChainType): string | number[] | Buffer {\n let buffer: Buffer;\n switch (from) {\n case ChainType.EVM: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n case ChainType.SOLANA: {\n buffer = new PublicKey(address).toBuffer();\n break;\n }\n case ChainType.TRX: {\n buffer = tronAddressToBuffer32(address);\n break;\n }\n case ChainType.SRB: {\n buffer = new Address(address).toBuffer();\n break;\n }\n case ChainType.SUI: {\n buffer = evmAddressToBuffer32(address);\n break;\n }\n }\n\n switch (to) {\n case ChainType.EVM: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n case ChainType.SOLANA: {\n return Array.from(buffer);\n }\n case ChainType.TRX: {\n return buffer;\n }\n case ChainType.SRB: {\n return buffer.toJSON().data;\n }\n case ChainType.SUI: {\n return \"0x\" + buffer.toString(\"hex\");\n }\n }\n}\n\nexport function normalizeSuiHex(hex: string): string {\n return hex.replace(/^0x/i, \"\");\n}\n\nexport function hexToBuffer(hex: string): Buffer {\n return Buffer.from(hex.replace(/^0x/i, \"\"), \"hex\");\n}\n\nexport function evmAddressToBuffer32(address: string): Buffer {\n const length = 32;\n const buff = hexToBuffer(address);\n return Buffer.concat([Buffer.alloc(length - buff.length, 0), buff], length);\n}\n\nexport function tronAddressToBuffer32(address: string): Buffer {\n const ethAddress = tronAddressToEthAddress(address);\n const buffer = hexToBuffer(ethAddress);\n return bufferToSize(buffer, 32);\n}\n\nexport function tronAddressToEthAddress(address: string): string {\n const bytes = TronWebUtils.crypto.decodeBase58Address(address);\n if (!bytes) return \"\";\n return TronWebUtils.bytes.byteArray2hexStr(bytes).replace(/^41/, \"0x\");\n}\n\nfunction bufferToSize(buffer: Buffer, size: number): Buffer {\n if (buffer.length >= size) {\n return buffer;\n }\n const result = Buffer.alloc(size, 0);\n buffer.copy(result, size - buffer.length);\n return result;\n}\n\nexport function getTokenByTokenAddress(\n chainDetailsMap: ChainDetailsMap,\n chainSymbol: string,\n tokenAddress: string\n): TokenWithChainDetails {\n const chainDetail = chainDetailsMap[chainSymbol];\n if (!chainDetail) {\n throw new SdkError(\"Cannot find chain detail for \" + chainSymbol);\n }\n const token = chainDetail.tokens.find((value) => value.tokenAddress.toUpperCase() === tokenAddress.toUpperCase());\n if (!token) {\n throw new SdkError(\"Cannot find token info about token \" + tokenAddress + \" on chain \" + chainSymbol);\n }\n return token;\n}\n\nexport function getNonce(): Buffer {\n return randomBytes(32);\n}\n\nexport function getNonceBigInt(): bigint {\n const bigint = randomBytes(32).readBigInt64BE();\n if (bigint < 0) {\n return bigint * -1n;\n }\n return bigint;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SwapParams\n): TxSwapParamsEvm | TxSwapParamsSui;\nexport function prepareTxSwapParams(bridgeChainType: ChainType.TRX, params: SwapParams): TxSwapParamsTrx;\nexport function prepareTxSwapParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SwapParams\n): TxSwapParamsSol | TxSwapParamsSrb;\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams;\n\n// 2. COMMON Realization\nexport function prepareTxSwapParams(bridgeChainType: ChainType, params: SwapParams): TxSwapParams {\n const txSwapParams = {} as TxSwapParams;\n const sourceToken = params.sourceToken;\n txSwapParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n txSwapParams.contractAddress = sourceToken.bridgeAddress;\n txSwapParams.fromAccountAddress = params.fromAccountAddress;\n if (bridgeChainType === ChainType.SUI) {\n if (!sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI sourceToken must contain 'originTokenAddress'\");\n }\n txSwapParams.fromTokenAddress = sourceToken.originTokenAddress;\n } else {\n txSwapParams.fromTokenAddress = formatAddress(sourceToken.tokenAddress, bridgeChainType, bridgeChainType);\n }\n txSwapParams.toAccountAddress = params.toAccountAddress;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.destinationToken.originTokenAddress) {\n throw new SdkError(\"SUI destinationToken must contain 'originTokenAddress'\");\n }\n txSwapParams.toTokenAddress = params.destinationToken.originTokenAddress;\n } else {\n txSwapParams.toTokenAddress = formatAddress(params.destinationToken.tokenAddress, bridgeChainType, bridgeChainType);\n }\n txSwapParams.minimumReceiveAmount = params.minimumReceiveAmount\n ? convertFloatAmountToInt(params.minimumReceiveAmount, params.destinationToken.decimals).toFixed()\n : \"0\";\n return txSwapParams;\n}\n\n// 1. OVERLOADS\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.EVM | ChainType.SUI,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsEvm | TxSendParamsSui>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.TRX,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsTrx>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType.SOLANA | ChainType.SRB,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParamsSol | TxSendParamsSrb>;\nexport function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams>;\n\n// 2. COMMON Realization\nexport async function prepareTxSendParams(\n bridgeChainType: ChainType,\n params: SendParams,\n api: AllbridgeCoreClient\n): Promise<TxSendParams> {\n const txSendParams = {} as TxSendParams;\n\n txSendParams.fromChainId = params.sourceToken.allbridgeChainId;\n txSendParams.fromChainSymbol = params.sourceToken.chainSymbol;\n const toChainType = Chains.getChainProperty(params.destinationToken.chainSymbol).chainType;\n if (bridgeChainType === ChainType.SUI) {\n if (!params.sourceToken.originTokenAddress) {\n throw new SdkError(\"SUI token must contain 'originTokenAddress'\");\n }\n txSendParams.fromTokenAddress = params.sourceToken.originTokenAddress;\n } else {\n txSendParams.fromTokenAddress = params.sourceToken.tokenAddress;\n }\n\n txSendParams.toChainId = params.destinationToken.allbridgeChainId;\n txSendParams.toTokenAddress = params.destinationToken.tokenAddress;\n\n if (params.gasFeePaymentMethod === FeePaymentMethod.WITH_STABLECOIN) {\n txSendParams.gasFeePaymentMethod = FeePaymentMethod.WITH_STABLECOIN;\n } else {\n // default FeePaymentMethod.WITH_NATIVE_CURRENCY\n txSendParams.gasFeePaymentMethod = FeePaymentMethod.WITH_NATIVE_CURRENCY;\n }\n const sourceToken = params.sourceToken;\n\n switch (params.messenger) {\n case Messenger.CCTP:\n if (!sourceToken.cctpAddress || !params.destinationToken.cctpAddress) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpAddress;\n break;\n case Messenger.CCTP_V2:\n if (!sourceToken.cctpV2Address || !params.destinationToken.cctpV2Address) {\n throw new CCTPDoesNotSupportedError(\"Such route does not support CCTP V2 protocol\");\n }\n txSendParams.contractAddress = sourceToken.cctpV2Address;\n\n break;\n case Messenger.OFT:\n if (\n !sourceToken.oftBridgeAddress ||\n !params.destinationToken.oftBridgeAddress ||\n sourceToken.oftId !== params.destinationToken.oftId\n ) {\n throw new OFTDoesNotSupportedError(\"Such route does not support OFT protocol\");\n }\n txSendParams.contractAddress = sourceToken.oftBridgeAddress;\n break;\n case Messenger.ALLBRIDGE:\n case Messenger.WORMHOLE:\n txSendParams.contractAddress = sourceToken.bridgeAddress;\n break;\n }\n\n txSendParams.messenger = params.messenger;\n txSendParams.fromAccountAddress = params.fromAccountAddress;\n txSendParams.amount = convertFloatAmountToInt(params.amount, sourceToken.decimals).toFixed();\n\n //Fee\n let { fee, feeFormat } = params;\n if (!fee) {\n const gasFeeOptions = await getGasFeeOptions(\n params.sourceToken,\n txSendParams.toChainId,\n txSendParams.messenger,\n api\n );\n\n const gasFeeOption = gasFeeOptions[txSendParams.gasFeePaymentMethod];\n if (!gasFeeOption) {\n throw new InvalidGasFeePaymentOptionError();\n }\n fee = gasFeeOption[AmountFormat.INT];\n feeFormat = AmountFormat.INT;\n }\n if (feeFormat == AmountFormat.FLOAT) {\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n txSendParams.fee = convertFloatAmountToInt(fee, Chains.getChainDecimalsByType(sourceToken.chainType)).toFixed(\n 0\n );\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n txSendParams.fee = convertFloatAmountToInt(fee, sourceToken.decimals).toFixed(0);\n break;\n }\n } else {\n txSendParams.fee = fee;\n }\n\n //ExtraGas\n const { extraGas, extraGasFormat } = params;\n if (extraGas && +extraGas > 0) {\n const extraGasLimits = await getExtraGasMaxLimits(\n sourceToken,\n params.destinationToken,\n txSendParams.messenger,\n api\n );\n\n let extraGasDecimals: number;\n let extraGasDestRate: Big;\n switch (txSendParams.gasFeePaymentMethod) {\n case FeePaymentMethod.WITH_NATIVE_CURRENCY:\n extraGasDecimals = Chains.getChainDecimalsByType(sourceToken.chainType);\n extraGasDestRate = Big(extraGasLimits.exchangeRate);\n break;\n case FeePaymentMethod.WITH_STABLECOIN:\n extraGasDecimals = sourceToken.decimals;\n extraGasDestRate = Big(extraGasLimits.exchangeRate).div(extraGasLimits.sourceNativeTokenPrice);\n break;\n }\n\n switch (extraGasFormat ?? AmountFormat.INT) {\n case AmountFormat.FLOAT: {\n txSendParams.extraGas = convertFloatAmountToInt(extraGas, extraGasDecimals).toFixed(0);\n\n const extraGasDestFloat = extraGasDestRate.mul(extraGas);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n case AmountFormat.INT: {\n txSendParams.extraGas = extraGas;\n\n const extraGasFloat = convertIntAmountToFloat(\n txSendParams.extraGas,\n Chains.getChainDecimalsByType(sourceToken.chainType)\n );\n const extraGasDestFloat = extraGasDestRate.mul(extraGasFloat);\n txSendParams.extraGasDest = convertFloatAmountToInt(\n extraGasDestFloat,\n Chains.getChainDecimalsByType(params.destinationToken.chainType)\n ).toFixed(0, Big.roundDown);\n break;\n }\n }\n\n validateExtraGasNotExceeded(txSendParams.extraGas, txSendParams.gasFeePaymentMethod, extraGasLimits);\n }\n\n if (bridgeChainType !== ChainType.SUI) {\n txSendParams.fromTokenAddress = formatAddress(txSendParams.fromTokenAddress, bridgeChainType, bridgeChainType);\n }\n txSendParams.toAccountAddress = formatAddress(params.toAccountAddress, toChainType, bridgeChainType);\n txSendParams.toTokenAddress = formatAddress(txSendParams.toTokenAddress, toChainType, bridgeChainType);\n if (txSendParams.gasFeePaymentMethod == FeePaymentMethod.WITH_STABLECOIN) {\n validateAmountEnough(txSendParams.amount, sourceToken.decimals, txSendParams.fee, txSendParams.extraGas);\n }\n return txSendParams;\n}\n\nfunction validateAmountEnough(\n amountInt: BigSource,\n decimals: number,\n feeInt: BigSource,\n extraGasInt: BigSource | undefined\n) {\n const amountTotal = Big(amountInt)\n .minus(feeInt)\n .minus(extraGasInt ?? 0);\n if (amountTotal.lte(0)) {\n throw new AmountNotEnoughError(\n `Amount not enough to pay fee, ${convertIntAmountToFloat(\n Big(amountTotal).minus(1).neg(),\n decimals\n ).toFixed()} stables is missing`\n );\n }\n}\n\nexport async function getGasFeeOptions(\n sourceChainToken: TokenWithChainDetails,\n destinationAllbridgeChainId: number,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<GasFeeOptions> {\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationAllbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n\n const gasFeeOptions: GasFeeOptions = {\n [FeePaymentMethod.WITH_NATIVE_CURRENCY]: {\n [AmountFormat.INT]: transactionCostResponse.fee,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n transactionCostResponse.fee,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(),\n },\n adminFeeShareWithExtras: transactionCostResponse.adminFeeShareWithExtras,\n };\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const gasFeeIntWithStables = convertAmountPrecision(\n new Big(transactionCostResponse.fee).mul(transactionCostResponse.sourceNativeTokenPrice),\n Chains.getChainDecimalsByType(sourceChainToken.chainType),\n sourceChainToken.decimals\n ).toFixed(0, Big.roundUp);\n gasFeeOptions[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: gasFeeIntWithStables,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(gasFeeIntWithStables, sourceChainToken.decimals).toFixed(),\n };\n }\n\n return gasFeeOptions;\n}\n\nfunction validateExtraGasNotExceeded(\n extraGasInt: string,\n gasFeePaymentMethod: FeePaymentMethod,\n extraGasLimits: ExtraGasMaxLimitResponse\n) {\n const extraGasMaxLimit = extraGasLimits.extraGasMax[gasFeePaymentMethod];\n if (!extraGasMaxLimit) {\n throw new InvalidGasFeePaymentOptionError(`Impossible to pay extra gas by '${gasFeePaymentMethod}' payment method`);\n }\n const extraGasMaxIntLimit = extraGasMaxLimit[AmountFormat.INT];\n if (Big(extraGasInt).gt(extraGasMaxIntLimit)) {\n throw new ExtraGasMaxLimitExceededError(\n `Extra gas ${extraGasInt} in int format, exceeded limit ${extraGasMaxIntLimit} for '${gasFeePaymentMethod}' payment method`\n );\n }\n}\n\nexport async function getExtraGasMaxLimits(\n sourceChainToken: TokenWithChainDetails,\n destinationChainToken: TokenWithChainDetails,\n messenger: Messenger,\n api: AllbridgeCoreClient\n): Promise<ExtraGasMaxLimitResponse> {\n const extraGasMaxLimits: ExtraGasMaxLimits = {};\n const transactionCostResponse = await api.getReceiveTransactionCost({\n sourceChainId: sourceChainToken.allbridgeChainId,\n destinationChainId: destinationChainToken.allbridgeChainId,\n messenger,\n sourceToken: sourceChainToken.tokenAddress,\n });\n const maxAmount = destinationChainToken.txCostAmount.maxAmount;\n const maxAmountFloat = convertIntAmountToFloat(\n maxAmount,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed();\n const maxAmountFloatInSourceNative = Big(maxAmountFloat)\n .div(transactionCostResponse.exchangeRate)\n .toFixed(Chains.getChainDecimalsByType(sourceChainToken.chainType), Big.roundDown);\n const maxAmountInSourceNative = convertFloatAmountToInt(\n maxAmountFloatInSourceNative,\n Chains.getChainDecimalsByType(sourceChainToken.chainType)\n ).toFixed(0);\n extraGasMaxLimits[FeePaymentMethod.WITH_NATIVE_CURRENCY] = {\n [AmountFormat.INT]: maxAmountInSourceNative,\n [AmountFormat.FLOAT]: maxAmountFloatInSourceNative,\n };\n if (transactionCostResponse.sourceNativeTokenPrice) {\n const maxAmountFloatInStable = Big(maxAmountFloatInSourceNative)\n .mul(transactionCostResponse.sourceNativeTokenPrice)\n .toFixed(sourceChainToken.decimals, Big.roundDown);\n extraGasMaxLimits[FeePaymentMethod.WITH_STABLECOIN] = {\n [AmountFormat.INT]: convertFloatAmountToInt(maxAmountFloatInStable, sourceChainToken.decimals).toFixed(0),\n [AmountFormat.FLOAT]: maxAmountFloatInStable,\n };\n }\n return {\n extraGasMax: extraGasMaxLimits,\n destinationChain: {\n gasAmountMax: {\n [AmountFormat.INT]: maxAmount,\n [AmountFormat.FLOAT]: maxAmountFloat,\n },\n swap: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.swap,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.swap,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n transfer: {\n [AmountFormat.INT]: destinationChainToken.txCostAmount.transfer,\n [AmountFormat.FLOAT]: convertIntAmountToFloat(\n destinationChainToken.txCostAmount.transfer,\n Chains.getChainDecimalsByType(destinationChainToken.chainType)\n ).toFixed(),\n },\n },\n exchangeRate: transactionCostResponse.exchangeRate,\n sourceNativeTokenPrice: transactionCostResponse.sourceNativeTokenPrice,\n };\n}\n\nexport function isSendParams(params: SwapParams | SendParams): params is SendParams {\n return params.sourceToken.chainSymbol !== params.destinationToken.chainSymbol;\n}\n"]}
@@ -31,18 +31,24 @@ export declare class AllbridgeCoreSdkService {
31
31
  calculateFeePercentOnDestinationChain(amountFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<number>;
32
32
  getAmountToBeReceivedAndGasFeeOptions(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<AmountsAndGasFeeOptions>;
33
33
  getAmountToSendAndGasFeeOptions(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<AmountsAndGasFeeOptions>;
34
- getAmountToBeReceived(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger?: Messenger): Promise<string>;
35
- getAmountToBeReceivedFromChain(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger?: Messenger, sourceProvider?: Provider, destinationProvider?: Provider): Promise<string>;
36
- getAmountToBeReceivedFromPools(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo, messenger?: Messenger): string;
37
- getAmountToSend(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger?: Messenger): Promise<string>;
38
- getAmountToSendFromChain(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger?: Messenger, sourceProvider?: Provider, destinationProvider?: Provider): Promise<string>;
39
- getAmountToSendFromPools(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo, messenger?: Messenger): string;
34
+ getAmountToBeReceived(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<string>;
35
+ getAmountToBeReceivedFromChain(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger, sourceProvider?: Provider, destinationProvider?: Provider): Promise<string>;
36
+ getAmountToBeReceivedCompute(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger | undefined, sourcePool: () => Promise<PoolInfo>, destPool: () => Promise<PoolInfo>): Promise<string>;
37
+ getAmountToBeReceivedComputeWithPools(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo): string;
38
+ getAmountToBeReceivedComputeCctp(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger.CCTP | Messenger.CCTP_V2): string;
39
+ getAmountToBeReceivedComputeOft(amountToSendFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
40
+ getAmountToSend(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<string>;
41
+ getAmountToSendFromChain(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger, sourceProvider?: Provider, destinationProvider?: Provider): Promise<string>;
42
+ getAmountToSendCompute(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger | undefined, sourcePool: () => Promise<PoolInfo>, destPool: () => Promise<PoolInfo>): Promise<string>;
43
+ getAmountToSendComputeWithPools(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, sourcePool: PoolInfo, destinationPool: PoolInfo): string;
44
+ getAmountToSendComputeCctp(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger.CCTP | Messenger.CCTP_V2): string;
45
+ getAmountToSendComputeOft(amountToBeReceivedFloat: number | string | Big, sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<string>;
40
46
  getGasFeeOptions(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<GasFeeOptions>;
41
47
  getAverageTransferTime(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): number | null;
42
48
  getPoolInfoByToken(token: TokenWithChainDetails): Promise<PoolInfo>;
43
49
  refreshPoolInfo(tokens?: TokenWithChainDetails | TokenWithChainDetails[]): Promise<void>;
44
50
  aprInPercents(apr: string): string;
45
- getExtraGasMaxLimits(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails): Promise<ExtraGasMaxLimitResponse>;
51
+ getExtraGasMaxLimits(sourceChainToken: TokenWithChainDetails, destinationChainToken: TokenWithChainDetails, messenger: Messenger): Promise<ExtraGasMaxLimitResponse>;
46
52
  getVUsdFromAmount(amount: string, amountFormat: AmountFormat, sourceToken: TokenWithChainDetails): Promise<AmountFormatted>;
47
53
  getAmountFromVUsd(vUsdAmount: string, destToken: TokenWithChainDetails): Promise<AmountFormatted>;
48
54
  private getAmountFromVUsdFormatted;