@cryptorubic/web3 0.0.34 → 0.0.37-alpha-1212.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 (293) hide show
  1. package/package.json +42 -15
  2. package/src/index.d.ts +130 -19
  3. package/src/index.js +130 -17
  4. package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.d.ts +40 -0
  5. package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.js +177 -0
  6. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-send-tx-params.d.ts +5 -0
  7. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-send-tx-params.js +2 -0
  8. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-psbt-encoded-config.d.ts +5 -0
  9. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-psbt-encoded-config.js +2 -0
  10. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.d.ts +7 -0
  11. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.js +2 -0
  12. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.d.ts +6 -0
  13. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.js +2 -0
  14. package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.d.ts +17 -0
  15. package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.js +131 -0
  16. package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.d.ts +4 -0
  17. package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.js +705 -0
  18. package/src/lib/adapter/adapters/adapter-evm/evm-adapter.d.ts +120 -0
  19. package/src/lib/adapter/adapters/adapter-evm/evm-adapter.js +498 -0
  20. package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.d.ts +38 -0
  21. package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.js +2 -0
  22. package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.d.ts +53 -0
  23. package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.js +263 -0
  24. package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.d.ts +12 -0
  25. package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.js +70 -0
  26. package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.d.ts +16 -0
  27. package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.js +2 -0
  28. package/src/lib/adapter/adapters/adapter-solana/services/solana-tokens-service.d.ts +22 -0
  29. package/src/lib/adapter/adapters/adapter-solana/services/solana-tokens-service.js +138 -0
  30. package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.d.ts +17 -0
  31. package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.js +87 -0
  32. package/src/lib/adapter/adapters/adapter-solana/solana-adapter.d.ts +49 -0
  33. package/src/lib/adapter/adapters/adapter-solana/solana-adapter.js +231 -0
  34. package/src/lib/adapter/adapters/adapter-stellar/constants/fake-stellar-wallet.d.ts +1 -0
  35. package/src/lib/adapter/adapters/adapter-stellar/constants/fake-stellar-wallet.js +4 -0
  36. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-client.d.ts +2 -0
  37. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-client.js +2 -0
  38. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-rpc-provider.d.ts +6 -0
  39. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-rpc-provider.js +2 -0
  40. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-send-tx-params.d.ts +8 -0
  41. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-send-tx-params.js +2 -0
  42. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-wallet.d.ts +87 -0
  43. package/src/lib/adapter/adapters/adapter-stellar/models/stellar-wallet.js +2 -0
  44. package/src/lib/adapter/adapters/adapter-stellar/signer/stellar-adapter-signer.d.ts +18 -0
  45. package/src/lib/adapter/adapters/adapter-stellar/signer/stellar-adapter-signer.js +75 -0
  46. package/src/lib/adapter/adapters/adapter-stellar/stellar-adapter.d.ts +54 -0
  47. package/src/lib/adapter/adapters/adapter-stellar/stellar-adapter.js +253 -0
  48. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.d.ts +8 -0
  49. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.js +2 -0
  50. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.d.ts +17 -0
  51. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.js +55 -0
  52. package/src/lib/adapter/adapters/adapter-sui/sui-adapter.d.ts +32 -0
  53. package/src/lib/adapter/adapters/adapter-sui/sui-adapter.js +111 -0
  54. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.d.ts +26 -0
  55. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.js +2 -0
  56. package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.d.ts +8 -7
  57. package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +39 -56
  58. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.d.ts +43 -0
  59. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.js +166 -0
  60. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.d.ts +32 -0
  61. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.js +104 -0
  62. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.d.ts +13 -0
  63. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.js +2 -0
  64. package/src/lib/adapter/adapters/adapter-tron/models/tron-transfer-tx-params.d.ts +7 -0
  65. package/src/lib/adapter/adapters/adapter-tron/models/tron-transfer-tx-params.js +2 -0
  66. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.d.ts +4 -0
  67. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.js +2 -0
  68. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.d.ts +19 -0
  69. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +81 -0
  70. package/src/lib/adapter/adapters/adapter-tron/tron-adapter.d.ts +57 -0
  71. package/src/lib/adapter/adapters/{tron-adapter.js → adapter-tron/tron-adapter.js} +145 -70
  72. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.d.ts +2 -0
  73. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.js +20 -0
  74. package/src/lib/adapter/adapters/common/abstract-adapter.d.ts +84 -0
  75. package/src/lib/adapter/adapters/common/abstract-adapter.js +82 -0
  76. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.d.ts +22 -0
  77. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.js +42 -0
  78. package/src/lib/adapter/adapters/constants/possible-errors.d.ts +1 -0
  79. package/src/lib/adapter/adapters/constants/possible-errors.js +14 -0
  80. package/src/lib/adapter/adapters/constants/tron-multicall-abi.d.ts +1 -1
  81. package/src/lib/adapter/adapters/constants/uni-v3-permit-abi.d.ts +2 -0
  82. package/src/lib/adapter/adapters/constants/uni-v3-permit-abi.js +72 -0
  83. package/src/lib/adapter/adapters/models/approve-adapter.d.ts +20 -6
  84. package/src/lib/adapter/adapters/models/approve-adapter.js +4 -0
  85. package/src/lib/adapter/adapters/models/basic-transaction-options.d.ts +7 -0
  86. package/src/lib/adapter/adapters/models/basic-transaction-options.js +2 -0
  87. package/src/lib/adapter/adapters/models/bitcoin-user-address-info.d.ts +53 -0
  88. package/src/lib/adapter/adapters/models/bitcoin-user-address-info.js +2 -0
  89. package/src/lib/adapter/adapters/models/btc-wallet-provider.d.ts +10 -0
  90. package/src/lib/adapter/adapters/models/btc-wallet-provider.js +2 -0
  91. package/src/lib/adapter/adapters/models/evm-adapter-options.d.ts +1 -1
  92. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.d.ts +5 -0
  93. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.js +2 -0
  94. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.d.ts +4 -0
  95. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.js +2 -0
  96. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.d.ts +4 -0
  97. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.js +2 -0
  98. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.d.ts +18 -0
  99. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.js +2 -0
  100. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.d.ts +22 -0
  101. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.js +2 -0
  102. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.d.ts +10 -0
  103. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.js +2 -0
  104. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.d.ts +5 -0
  105. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.js +2 -0
  106. package/src/lib/adapter/adapters/models/old-features-models/contract-params.d.ts +23 -0
  107. package/src/lib/adapter/adapters/models/old-features-models/contract-params.js +2 -0
  108. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.d.ts +32 -0
  109. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.js +2 -0
  110. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.d.ts +6 -0
  111. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.js +2 -0
  112. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.d.ts +5 -0
  113. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.js +2 -0
  114. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.d.ts +65 -0
  115. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.js +2 -0
  116. package/src/lib/adapter/adapters/models/permit2-contract-types.d.ts +1 -0
  117. package/src/lib/adapter/adapters/models/permit2-contract-types.js +2 -0
  118. package/src/lib/adapter/adapters/models/solana-web3-types.d.ts +60 -0
  119. package/src/lib/adapter/adapters/models/solana-web3-types.js +2 -0
  120. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.d.ts +8 -0
  121. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.js +2 -0
  122. package/src/lib/adapter/adapters/models/token-models.d.ts +1 -0
  123. package/src/lib/adapter/adapters/models/token-models.js +2 -0
  124. package/src/lib/adapter/adapters/models/ton-adapter-config.d.ts +2 -2
  125. package/src/lib/adapter/adapters/models/ton-api-config.d.ts +1 -1
  126. package/src/lib/adapter/adapters/models/tonapi-models.d.ts +2 -2
  127. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.d.ts +5 -0
  128. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.js +2 -0
  129. package/src/lib/adapter/adapters/models/web3-public-models/method-data.d.ts +4 -0
  130. package/src/lib/adapter/adapters/models/web3-public-models/method-data.js +2 -0
  131. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.d.ts +1 -0
  132. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.js +2 -0
  133. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.d.ts +13 -0
  134. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +15 -0
  135. package/src/lib/adapter/adapters/utils/errors.d.ts +2 -0
  136. package/src/lib/adapter/adapters/utils/errors.js +10 -0
  137. package/src/lib/adapter/adapters/utils/options.d.ts +10 -0
  138. package/src/lib/adapter/adapters/utils/options.js +59 -0
  139. package/src/lib/adapter/adapters/utils/timeout.d.ts +1 -0
  140. package/src/lib/adapter/adapters/utils/timeout.js +15 -0
  141. package/src/lib/adapter/adapters/utils/waitFor.d.ts +1 -0
  142. package/src/lib/adapter/adapters/utils/waitFor.js +6 -0
  143. package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +20 -10
  144. package/src/lib/adapter/blockchain-adapter-factory.service.js +58 -53
  145. package/src/lib/adapter/constants/chain-configs/chain-configs.d.ts +1 -1
  146. package/src/lib/adapter/constants/chain-configs/chain-configs.js +603 -138
  147. package/src/lib/adapter/constants/models/env-type.d.ts +1 -0
  148. package/src/lib/adapter/constants/models/env-type.js +2 -0
  149. package/src/lib/adapter/constants/models/solana-web3.d.ts +1 -1
  150. package/src/lib/adapter/constants/models/wallet-provider.d.ts +9 -3
  151. package/src/lib/adapter/constants/rubic-api-link-mapping.d.ts +2 -0
  152. package/src/lib/adapter/constants/rubic-api-link-mapping.js +16 -0
  153. package/src/lib/adapter/constants/viem-blockchain-mapping.d.ts +1 -1
  154. package/src/lib/adapter/constants/viem-blockchain-mapping.js +16 -7
  155. package/src/lib/adapter/models/create-factory-params.d.ts +24 -0
  156. package/src/lib/adapter/models/create-factory-params.js +2 -0
  157. package/src/lib/errors/blockchain/deflation-token.error.d.ts +11 -0
  158. package/src/lib/errors/blockchain/deflation-token.error.js +16 -0
  159. package/src/lib/errors/blockchain/healthcheck.error.d.ts +8 -0
  160. package/src/lib/errors/blockchain/healthcheck.error.js +15 -0
  161. package/src/lib/errors/blockchain/inactive-account.error.d.ts +4 -0
  162. package/src/lib/errors/blockchain/inactive-account.error.js +11 -0
  163. package/src/lib/errors/blockchain/invalid-address.error.d.ts +8 -0
  164. package/src/lib/errors/blockchain/invalid-address.error.js +15 -0
  165. package/src/lib/errors/blockchain/low-gas.error.d.ts +7 -0
  166. package/src/lib/errors/blockchain/low-gas.error.js +14 -0
  167. package/src/lib/errors/blockchain/transaction-reverted.error.d.ts +7 -0
  168. package/src/lib/errors/blockchain/transaction-reverted.error.js +14 -0
  169. package/src/lib/errors/blockchain/tron-insufficient-native-balance.d.ts +7 -0
  170. package/src/lib/errors/blockchain/tron-insufficient-native-balance.js +14 -0
  171. package/src/lib/errors/blockchain/tron-transaction-expired.d.ts +7 -0
  172. package/src/lib/errors/blockchain/tron-transaction-expired.js +14 -0
  173. package/src/lib/errors/blockchain/user-reject.error.d.ts +7 -0
  174. package/src/lib/errors/blockchain/user-reject.error.js +14 -0
  175. package/src/lib/errors/blockchain/wrong-from-address.error.d.ts +7 -0
  176. package/src/lib/errors/blockchain/wrong-from-address.error.js +14 -0
  177. package/src/lib/errors/blockchain/wrong-receiver-address.error.d.ts +7 -0
  178. package/src/lib/errors/blockchain/wrong-receiver-address.error.js +14 -0
  179. package/src/lib/errors/common/timeout.error.d.ts +4 -0
  180. package/src/lib/errors/common/timeout.error.js +12 -0
  181. package/src/lib/errors/common/tx-reverted-in-chain.error.d.ts +4 -0
  182. package/src/lib/errors/common/tx-reverted-in-chain.error.js +11 -0
  183. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.d.ts +7 -0
  184. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.js +14 -0
  185. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.d.ts +7 -0
  186. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.js +14 -0
  187. package/src/lib/errors/cross-chain/low-to-slippage.error.d.ts +6 -0
  188. package/src/lib/errors/cross-chain/low-to-slippage.error.js +10 -0
  189. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.d.ts +8 -0
  190. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.js +15 -0
  191. package/src/lib/errors/cross-chain/too-low-amount.error.d.ts +7 -0
  192. package/src/lib/errors/cross-chain/too-low-amount.error.js +14 -0
  193. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.d.ts +4 -0
  194. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.js +11 -0
  195. package/src/lib/errors/cross-chain/updated-rates-error.d.ts +10 -0
  196. package/src/lib/errors/cross-chain/updated-rates-error.js +17 -0
  197. package/src/lib/errors/models/rubic-api-error.d.ts +21 -0
  198. package/src/lib/errors/models/rubic-api-error.js +2 -0
  199. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.d.ts +7 -0
  200. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.js +14 -0
  201. package/src/lib/errors/proxy/unapproved-contract-error.d.ts +8 -0
  202. package/src/lib/errors/proxy/unapproved-contract-error.js +15 -0
  203. package/src/lib/errors/proxy/unapproved-method-error.d.ts +8 -0
  204. package/src/lib/errors/proxy/unapproved-method-error.js +15 -0
  205. package/src/lib/errors/proxy/unlisted-error.d.ts +9 -0
  206. package/src/lib/errors/proxy/unlisted-error.js +16 -0
  207. package/src/lib/errors/rubic-sdk.error.d.ts +6 -0
  208. package/src/lib/errors/rubic-sdk.error.js +13 -0
  209. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.d.ts +7 -0
  210. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.js +14 -0
  211. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.d.ts +8 -0
  212. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.js +15 -0
  213. package/src/lib/errors/swap/insufficient-funds-oneinch.error.d.ts +9 -0
  214. package/src/lib/errors/swap/insufficient-funds-oneinch.error.js +15 -0
  215. package/src/lib/errors/swap/insufficient-funds.error.d.ts +11 -0
  216. package/src/lib/errors/swap/insufficient-funds.error.js +18 -0
  217. package/src/lib/errors/swap/insufficient-liquidity.error.d.ts +7 -0
  218. package/src/lib/errors/swap/insufficient-liquidity.error.js +14 -0
  219. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.d.ts +7 -0
  220. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.js +14 -0
  221. package/src/lib/errors/swap/low-slippage-deflationary-token.error.d.ts +7 -0
  222. package/src/lib/errors/swap/low-slippage-deflationary-token.error.js +14 -0
  223. package/src/lib/errors/swap/low-slippage.error.d.ts +8 -0
  224. package/src/lib/errors/swap/low-slippage.error.js +15 -0
  225. package/src/lib/errors/swap/max-amount.error.d.ts +7 -0
  226. package/src/lib/errors/swap/max-amount.error.js +14 -0
  227. package/src/lib/errors/swap/max-decimals.error.d.ts +5 -0
  228. package/src/lib/errors/swap/max-decimals.error.js +12 -0
  229. package/src/lib/errors/swap/min-amount.error.d.ts +7 -0
  230. package/src/lib/errors/swap/min-amount.error.js +14 -0
  231. package/src/lib/errors/swap/no-linked-account-erros.d.ts +4 -0
  232. package/src/lib/errors/swap/no-linked-account-erros.js +11 -0
  233. package/src/lib/errors/swap/not-supported-blockchain.d.ts +8 -0
  234. package/src/lib/errors/swap/not-supported-blockchain.js +15 -0
  235. package/src/lib/errors/swap/not-supported-region.d.ts +7 -0
  236. package/src/lib/errors/swap/not-supported-region.js +14 -0
  237. package/src/lib/errors/swap/not-supported-tokens.error.d.ts +7 -0
  238. package/src/lib/errors/swap/not-supported-tokens.error.js +14 -0
  239. package/src/lib/errors/swap/not-whitelisted-provider.error.d.ts +10 -0
  240. package/src/lib/errors/swap/not-whitelisted-provider.error.js +17 -0
  241. package/src/lib/errors/swap/simulation-failed.error.d.ts +6 -0
  242. package/src/lib/errors/swap/simulation-failed.error.js +12 -0
  243. package/src/lib/errors/swap/swap-error-on-provider-side.d.ts +7 -0
  244. package/src/lib/errors/swap/swap-error-on-provider-side.js +14 -0
  245. package/src/lib/errors/swap/swap-request.error.d.ts +7 -0
  246. package/src/lib/errors/swap/swap-request.error.js +14 -0
  247. package/src/lib/errors/swap/trade-expired.error.d.ts +4 -0
  248. package/src/lib/errors/swap/trade-expired.error.js +11 -0
  249. package/src/lib/errors/swap/unnecessary-approve.error.d.ts +7 -0
  250. package/src/lib/errors/swap/unnecessary-approve.error.js +14 -0
  251. package/src/lib/errors/swap/wallet-not-connected.error.d.ts +8 -0
  252. package/src/lib/errors/swap/wallet-not-connected.error.js +15 -0
  253. package/src/lib/errors/swap/wrong-network.error.d.ts +10 -0
  254. package/src/lib/errors/swap/wrong-network.error.js +16 -0
  255. package/src/lib/utils/constants/changenow-api-blockchain.d.ts +1 -2
  256. package/src/lib/utils/constants/changenow-api-blockchain.js +1 -1
  257. package/src/lib/utils/constants/web3-pure-store.d.ts +2 -2
  258. package/src/lib/utils/constants/web3-pure-store.js +20 -18
  259. package/src/lib/utils/models/contract-multicall-response.d.ts +1 -1
  260. package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
  261. package/src/lib/utils/models/primitive-types.d.ts +1 -1
  262. package/src/lib/utils/models/stellar-transaction-config.d.ts +3 -0
  263. package/src/lib/utils/models/stellar-transaction-config.js +2 -0
  264. package/src/lib/utils/models/tron-transaction-config.d.ts +1 -1
  265. package/src/lib/utils/web3-pure.d.ts +2 -2
  266. package/src/lib/utils/web3-pure.js +6 -7
  267. package/src/lib/utils/web3-types/bitcoin-web3-pure.d.ts +1 -1
  268. package/src/lib/utils/web3-types/common-web3-pure.js +0 -2
  269. package/src/lib/utils/web3-types/evm-web3-pure.d.ts +1 -1
  270. package/src/lib/utils/web3-types/icp-web3-pure.d.ts +1 -1
  271. package/src/lib/utils/web3-types/near-web3-pure.d.ts +6 -0
  272. package/src/lib/utils/web3-types/near-web3-pure.js +24 -0
  273. package/src/lib/utils/web3-types/solana-web3-pure.d.ts +2 -1
  274. package/src/lib/utils/web3-types/solana-web3-pure.js +11 -1
  275. package/src/lib/utils/web3-types/stellar-web3-pure.d.ts +5 -0
  276. package/src/lib/utils/web3-types/stellar-web3-pure.js +30 -0
  277. package/src/lib/utils/web3-types/sui-web3-pure.d.ts +8 -0
  278. package/src/lib/utils/web3-types/sui-web3-pure.js +27 -0
  279. package/src/lib/utils/web3-types/ton-web3-pure.d.ts +2 -1
  280. package/src/lib/utils/web3-types/ton-web3-pure.js +6 -0
  281. package/src/lib/utils/web3-types/tron-web3-pure.d.ts +8 -6
  282. package/src/lib/utils/web3-types/tron-web3-pure.js +18 -4
  283. package/src/lib/utils/web3-types/zcash-web3-pure.d.ts +5 -0
  284. package/src/lib/utils/web3-types/zcash-web3-pure.js +17 -0
  285. package/src/lib/adapter/adapters/abstract-adapter.d.ts +0 -19
  286. package/src/lib/adapter/adapters/abstract-adapter.js +0 -49
  287. package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -34
  288. package/src/lib/adapter/adapters/evm-adapter.js +0 -247
  289. package/src/lib/adapter/adapters/solana-adapter.d.ts +0 -15
  290. package/src/lib/adapter/adapters/solana-adapter.js +0 -59
  291. package/src/lib/adapter/adapters/ton-adapter.d.ts +0 -22
  292. package/src/lib/adapter/adapters/ton-adapter.js +0 -100
  293. package/src/lib/adapter/adapters/tron-adapter.d.ts +0 -36
@@ -2,9 +2,13 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TonApiService = void 0;
4
4
  class TonApiService {
5
- constructor(httpClient, params) {
5
+ constructor(httpClient, params, logger) {
6
6
  this.httpClient = httpClient;
7
- this.apiKey = params.tonApiKey;
7
+ this.logger = logger;
8
+ this.apiHeaders = {
9
+ ...params.tonApiHeaders,
10
+ referer: 'https://app.rubic.exchange'
11
+ };
8
12
  this.tonApiUrl = params?.tonApiUrl || 'https://tonapi.io';
9
13
  this.tonCenterV3Url = params.tonCenterV3Url || 'https://toncenter.com/api/v3';
10
14
  }
@@ -13,10 +17,7 @@ class TonApiService {
13
17
  */
14
18
  async getAllFormatsOfAddress(walletAddress) {
15
19
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/address/${walletAddress}/parse`, {
16
- headers: {
17
- apiKey: this.apiKey,
18
- referer: 'https://api.rubic.exchange',
19
- },
20
+ headers: this.apiHeaders
20
21
  });
21
22
  if ('error' in res) {
22
23
  throw new Error(`[TonWeb3Pure] Error in getAllFormatsOfAddress - ${res.error}`);
@@ -29,10 +30,7 @@ class TonApiService {
29
30
  */
30
31
  async fetchWalletSeqno(walletAddress) {
31
32
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/wallet/${walletAddress}/seqno`, {
32
- headers: {
33
- apiKey: this.apiKey,
34
- referer: 'https://api.rubic.exchange',
35
- },
33
+ headers: this.apiHeaders
36
34
  });
37
35
  if ('error' in res) {
38
36
  throw new Error(`[TonApiService] Error in fetchWalletSeqno - ${res.error}`);
@@ -41,10 +39,7 @@ class TonApiService {
41
39
  }
42
40
  async fetchTxInfo(txHash) {
43
41
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/transactions/${txHash}`, {
44
- headers: {
45
- apiKey: this.apiKey,
46
- referer: 'https://api.rubic.exchange',
47
- },
42
+ headers: this.apiHeaders
48
43
  });
49
44
  if ('error' in res) {
50
45
  throw new Error(`[TonApiService] Error in fetchTxInfo - ${res.error}`);
@@ -53,10 +48,7 @@ class TonApiService {
53
48
  }
54
49
  async fetchTxInfoByMessageHash(txHash) {
55
50
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/messages/${txHash}/transaction`, {
56
- headers: {
57
- apiKey: this.apiKey,
58
- referer: 'https://api.rubic.exchange',
59
- },
51
+ headers: this.apiHeaders
60
52
  });
61
53
  if ('error' in res) {
62
54
  throw new Error(`[TonApiService] Error in fetchTxInfoByMessageHash - ${res.error}`);
@@ -66,10 +58,7 @@ class TonApiService {
66
58
  async checkIsTxCompleted(txHash) {
67
59
  try {
68
60
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/events/${txHash}`, {
69
- headers: {
70
- apiKey: this.apiKey,
71
- referer: 'https://api.rubic.exchange',
72
- },
61
+ headers: this.apiHeaders
73
62
  });
74
63
  if ('error' in res) {
75
64
  throw new Error(`[TonApiService] Error in checkIsTxCompleted - ${res.error}`);
@@ -82,10 +71,7 @@ class TonApiService {
82
71
  }
83
72
  async healthcheck() {
84
73
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/status`, {
85
- headers: {
86
- apiKey: this.apiKey,
87
- referer: 'https://api.rubic.exchange',
88
- },
74
+ headers: this.apiHeaders
89
75
  });
90
76
  if ('error' in res || !res.rest_online) {
91
77
  return false;
@@ -115,10 +101,7 @@ class TonApiService {
115
101
  argsParam += '?' + methodArgs.map((param) => `args=${param}`).join('&');
116
102
  }
117
103
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/blockchain/accounts/${address}/methods/${methodName}${argsParam}`, {
118
- headers: {
119
- apiKey: this.apiKey,
120
- referer: 'https://api.rubic.exchange',
121
- },
104
+ headers: this.apiHeaders
122
105
  });
123
106
  if ('error' in res) {
124
107
  throw new Error(`[TonApiService] Error in callContractMethod - ${res.error}`);
@@ -126,16 +109,18 @@ class TonApiService {
126
109
  return res.decoded;
127
110
  }
128
111
  async fetchTokenInfo(tokenAddress) {
129
- const res = await this.httpClient.get(`${this.tonApiUrl}/v2/jettons/${tokenAddress}`, {
130
- headers: {
131
- apiKey: this.apiKey,
132
- referer: 'https://api.rubic.exchange',
133
- },
134
- });
135
- if ('error' in res) {
136
- throw new Error(`[TonApiService] Error in fetchTokenInfo - ${res.error}`);
112
+ try {
113
+ const res = await this.httpClient.get(`${this.tonApiUrl}/v2/jettons/${tokenAddress}`, {
114
+ headers: this.apiHeaders
115
+ });
116
+ if ('error' in res) {
117
+ throw new Error(`[TonApiService] Error in fetchTokenInfo - ${res.error}`);
118
+ }
119
+ return res.metadata;
120
+ }
121
+ catch (err) {
122
+ throw new Error(`[TonApiService] Error in fetchTokenInfo - ${err}`);
137
123
  }
138
- return res.metadata;
139
124
  }
140
125
  /**
141
126
  *
@@ -143,23 +128,24 @@ class TonApiService {
143
128
  * @returns balance, decimals, name, symbol, walletJettonAddress, jettonAddress
144
129
  */
145
130
  async fetchTokenInfoForWallet(walletAddress, tokenAddress) {
146
- const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons/${tokenAddress}`, {
147
- headers: {
148
- apiKey: this.apiKey,
149
- referer: 'https://api.rubic.exchange',
150
- },
151
- });
152
- if ('error' in res) {
153
- throw new Error(`[TonApiService] Error in fetchTokenInfoForWallet - ${res.error}`);
131
+ try {
132
+ const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons/${tokenAddress}`, {
133
+ headers: this.apiHeaders
134
+ });
135
+ if ('error' in res) {
136
+ this.logger?.customError('[TonApiService] ERROR IN fetchTokenInfoForWallet', res.error);
137
+ return { balance: '0' };
138
+ }
139
+ return res;
140
+ }
141
+ catch (err) {
142
+ this.logger?.customError('[TonApiService] ERROR IN fetchTokenInfoForWallet', err);
143
+ return { balance: '0' };
154
144
  }
155
- return res;
156
145
  }
157
146
  async fetchAllNonNullableTokensInfoForWallet(walletAddress) {
158
147
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons`, {
159
- headers: {
160
- apiKey: this.apiKey,
161
- referer: 'https://api.rubic.exchange',
162
- },
148
+ headers: this.apiHeaders
163
149
  });
164
150
  if ('error' in res) {
165
151
  throw new Error(`[TonApiService] Error in fetchAllNonNullableTokensInfoForWallet - ${res.error}`);
@@ -171,10 +157,7 @@ class TonApiService {
171
157
  */
172
158
  async fetchAccountInfo(walletAddress) {
173
159
  const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}`, {
174
- headers: {
175
- apiKey: this.apiKey,
176
- referer: 'https://api.rubic.exchange',
177
- },
160
+ headers: this.apiHeaders
178
161
  });
179
162
  if ('error' in res) {
180
163
  throw new Error(`[TonApiService] Error in fetchAccountInfo - ${res.error}`);
@@ -0,0 +1,43 @@
1
+ import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
2
+ import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
3
+ import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
4
+ import { TonSendTxParams } from '../models/ton-send-tx-params';
5
+ import { TonConnectUI } from '@tonconnect/ui';
6
+ import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
7
+ import { Address } from '@ton/core';
8
+ import { TonApiService } from '../services/ton-api.service';
9
+ import { TonClient } from '@ton/ton';
10
+ import { TonTransactionConfig } from '../../../../utils/models/ton-transaction-config';
11
+ export declare class TonAdapterSigner extends AbstractAdapterSigner<TonConnectUI, TonSendTxParams, string> {
12
+ private readonly tonApi;
13
+ private readonly publicRef;
14
+ get publicClient(): TonClient;
15
+ constructor(tonApi: TonApiService, publicRef: {
16
+ public: TonClient | null;
17
+ }, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
18
+ write<T>(): Promise<T>;
19
+ getBlockchainName(): Promise<BlockchainName>;
20
+ sendTransaction(params: TonSendTxParams): Promise<string>;
21
+ private waitForTransactionReceipt;
22
+ /**
23
+ * Transfer asset from on wallet to another
24
+ * @param tokenAddress Token address to transfer
25
+ * @param walletAddress Wallet address to transfer from
26
+ * @param receiver Receiver wallet address
27
+ * @param amount Transfer amount
28
+ * @param options Transaction options
29
+ */
30
+ transferAsset(tokenAddress: string, walletAddress: string, receiver: string, amount: string, options?: BasicSendTransactionOptions): Promise<string>;
31
+ private transferNative;
32
+ private transferJetton;
33
+ getTransferEncodedConfig(tokenAddress: string, walletAddress: string, receiver: string, amount: string): Promise<TonTransactionConfig>;
34
+ private getTransferNativeConfig;
35
+ private getTransferJettonConfig;
36
+ /**
37
+ *
38
+ * @param boc Boc returned in connector.sendTransaction
39
+ * @returns boc converter in base 64 string
40
+ */
41
+ fromBocToBase64Hash(boc: string): string;
42
+ getJettonWalletAddress(address: Address, contractAddress: Address): Promise<Address>;
43
+ }
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TonAdapterSigner = void 0;
4
+ const core_1 = require("@cryptorubic/core");
5
+ const abstract_adapter_signer_1 = require("../../common/signer/abstract-adapter-signer");
6
+ const user_reject_error_1 = require("../../../../errors/blockchain/user-reject.error");
7
+ const rubic_sdk_error_1 = require("../../../../errors/rubic-sdk.error");
8
+ const errors_1 = require("../../utils/errors");
9
+ const core_2 = require("@ton/core");
10
+ const waitFor_1 = require("../../utils/waitFor");
11
+ class TonAdapterSigner extends abstract_adapter_signer_1.AbstractAdapterSigner {
12
+ get publicClient() {
13
+ if (!this.publicRef.public) {
14
+ const msg = `Trying to access undefined publicClient in TonAdapterSigner.`;
15
+ this.logger?.customLog(msg);
16
+ throw new Error(msg);
17
+ }
18
+ return this.publicRef.public;
19
+ }
20
+ constructor(tonApi, publicRef, httpClient, logger, clientParams) {
21
+ super(httpClient, logger, clientParams);
22
+ this.tonApi = tonApi;
23
+ this.publicRef = publicRef;
24
+ }
25
+ async write() {
26
+ throw new Error('Method write is not supported');
27
+ }
28
+ getBlockchainName() {
29
+ return Promise.resolve(core_1.BLOCKCHAIN_NAME.TON);
30
+ }
31
+ async sendTransaction(params) {
32
+ try {
33
+ const { boc } = await this.wallet.sendTransaction({
34
+ validUntil: Math.floor(Date.now() / 1000) + 360,
35
+ messages: params.txOptions.messages
36
+ });
37
+ const txHash = this.fromBocToBase64Hash(boc);
38
+ params.txOptions.onTransactionHash?.(txHash);
39
+ const isCompleted = await this.waitForTransactionReceipt(txHash);
40
+ if (!isCompleted) {
41
+ throw new rubic_sdk_error_1.RubicSdkError('[BitcoinWeb3Private] TON transaction timeout expired!');
42
+ }
43
+ return boc;
44
+ }
45
+ catch (err) {
46
+ console.error(`Send transaction error. ${err}`);
47
+ if (err.message.includes('Reject request')) {
48
+ throw new user_reject_error_1.UserRejectError();
49
+ }
50
+ throw (0, errors_1.parseError)(err);
51
+ }
52
+ }
53
+ async waitForTransactionReceipt(txHash) {
54
+ let isCompleted = false;
55
+ const startTimeMS = Date.now();
56
+ const timeLimitMS = 600 * 1000;
57
+ while (Date.now() < startTimeMS + timeLimitMS) {
58
+ if (isCompleted)
59
+ return true;
60
+ await (0, waitFor_1.waitFor)(30000);
61
+ isCompleted = await this.tonApi.checkIsTxCompleted(txHash);
62
+ }
63
+ return false;
64
+ }
65
+ /**
66
+ * Transfer asset from on wallet to another
67
+ * @param tokenAddress Token address to transfer
68
+ * @param walletAddress Wallet address to transfer from
69
+ * @param receiver Receiver wallet address
70
+ * @param amount Transfer amount
71
+ * @param options Transaction options
72
+ */
73
+ transferAsset(tokenAddress, walletAddress, receiver, amount, options) {
74
+ if ((0, core_1.compareAddresses)(core_1.nativeTokensList.TON.address, tokenAddress)) {
75
+ return this.transferNative(receiver, amount, options);
76
+ }
77
+ return this.transferJetton(tokenAddress, walletAddress, receiver, amount, options);
78
+ }
79
+ transferNative(receiver, amount, options) {
80
+ const transferAmount = BigInt(amount);
81
+ const encodeConfig = {
82
+ address: receiver,
83
+ amount: transferAmount.toString()
84
+ };
85
+ return this.sendTransaction({ txOptions: { messages: [encodeConfig], onTransactionHash: options?.onTransactionHash } });
86
+ }
87
+ async transferJetton(tokenAddress, walletAddress, receiver, amount, options) {
88
+ const fromAddress = core_2.Address.parse(walletAddress);
89
+ const contractAddress = core_2.Address.parse(tokenAddress);
90
+ const transferAmount = BigInt(amount);
91
+ const receiverAddress = core_2.Address.parse(receiver);
92
+ const jettonWalletAddress = await this.getJettonWalletAddress(fromAddress, contractAddress);
93
+ const body = (0, core_2.beginCell)()
94
+ .storeUint(0xf8a7ea5, 32)
95
+ .storeUint(0, 64)
96
+ .storeCoins(transferAmount)
97
+ .storeAddress(receiverAddress)
98
+ .storeAddress(receiverAddress)
99
+ .storeBit(0)
100
+ .storeCoins((0, core_2.toNano)('0.02'))
101
+ .storeBit(0)
102
+ .endCell();
103
+ const encodeConfig = {
104
+ address: jettonWalletAddress.toRawString(),
105
+ amount: (0, core_2.toNano)('0.05').toString(),
106
+ payload: body.toBoc().toString('base64')
107
+ };
108
+ return this.sendTransaction({ txOptions: { messages: [encodeConfig], onTransactionHash: options?.onTransactionHash } });
109
+ }
110
+ getTransferEncodedConfig(tokenAddress, walletAddress, receiver, amount) {
111
+ if ((0, core_1.compareAddresses)(core_1.nativeTokensList.TON.address, tokenAddress)) {
112
+ return this.getTransferNativeConfig(receiver, amount);
113
+ }
114
+ return this.getTransferJettonConfig(tokenAddress, walletAddress, receiver, amount);
115
+ }
116
+ async getTransferNativeConfig(receiver, amount) {
117
+ const transferAmount = BigInt(amount);
118
+ const encodeConfig = {
119
+ address: receiver,
120
+ amount: transferAmount.toString()
121
+ };
122
+ return encodeConfig;
123
+ }
124
+ async getTransferJettonConfig(tokenAddress, walletAddress, receiver, amount) {
125
+ const fromAddress = core_2.Address.parse(walletAddress);
126
+ const contractAddress = core_2.Address.parse(tokenAddress);
127
+ const transferAmount = BigInt(amount);
128
+ const receiverAddress = core_2.Address.parse(receiver);
129
+ const jettonWalletAddress = await this.getJettonWalletAddress(fromAddress, contractAddress);
130
+ const body = (0, core_2.beginCell)()
131
+ .storeUint(0xf8a7ea5, 32)
132
+ .storeUint(0, 64)
133
+ .storeCoins(transferAmount)
134
+ .storeAddress(receiverAddress)
135
+ .storeAddress(receiverAddress)
136
+ .storeBit(0)
137
+ .storeCoins((0, core_2.toNano)('0.02'))
138
+ .storeBit(0)
139
+ .endCell();
140
+ const encodeConfig = {
141
+ address: jettonWalletAddress.toRawString(),
142
+ amount: (0, core_2.toNano)('0.05').toString(),
143
+ payload: body.toBoc().toString('base64')
144
+ };
145
+ return encodeConfig;
146
+ }
147
+ /**
148
+ *
149
+ * @param boc Boc returned in connector.sendTransaction
150
+ * @returns boc converter in base 64 string
151
+ */
152
+ fromBocToBase64Hash(boc) {
153
+ const inMsgCell = core_2.Cell.fromBase64(boc);
154
+ const inMsgHash = inMsgCell.hash();
155
+ const inMsgHashBase64 = inMsgHash.toString('base64');
156
+ const inMsgHashBase64Url = inMsgHashBase64.replace(/\+/g, '-').replace(/\//g, '_');
157
+ return inMsgHashBase64Url;
158
+ }
159
+ async getJettonWalletAddress(address, contractAddress) {
160
+ const addressResult = await this.publicClient.runMethod(contractAddress, 'get_wallet_address', [
161
+ { type: 'slice', cell: (0, core_2.beginCell)().storeAddress(address).endCell() }
162
+ ]);
163
+ return addressResult.stack.readAddress();
164
+ }
165
+ }
166
+ exports.TonAdapterSigner = TonAdapterSigner;
@@ -0,0 +1,32 @@
1
+ import { BlockchainName, HttpClient, ICustomLogger, PriceTokenAmount, Token, TokenAmount, TonBlockchainName } from '@cryptorubic/core';
2
+ import { TonClient } from '@ton/ton';
3
+ import { TonApiParseAddressResp } from '../models/tonapi-models';
4
+ import { TonAdapterConfig } from '../models/ton-adapter-config';
5
+ import BigNumber from 'bignumber.js';
6
+ import { AbstractAdapter } from '../common/abstract-adapter';
7
+ import { TonConnectUI } from '@tonconnect/ui';
8
+ import { TonAdapterSigner } from './signer/ton-adapter-signer';
9
+ import { ClientAdaptersFactoryParams } from '../../models/create-factory-params';
10
+ import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
11
+ import { ContractMulticallResponse } from '../models/web3-public-models/contract-multicall-response';
12
+ import { TxStatus } from '../models/web3-public-models/tx-status';
13
+ export declare class TonAdapter extends AbstractAdapter<TonClient, TonConnectUI, TonBlockchainName> {
14
+ private readonly config;
15
+ readonly signer: TonAdapterSigner;
16
+ private readonly tonApi;
17
+ constructor(httpClient: HttpClient, config: TonAdapterConfig, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
18
+ initWeb3Client(): void;
19
+ read<T>(): Promise<T>;
20
+ callContractMethod<T extends Web3PrimitiveType = string>(): Promise<T>;
21
+ getTransactionStatus(srcTxHash: string): Promise<TxStatus>;
22
+ getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
23
+ multicallContractsMethods<Output extends Web3PrimitiveType>(): Promise<ContractMulticallResponse<Output>[][]>;
24
+ getBlockNumber(): Promise<number | {
25
+ blockNumber: number;
26
+ workchain: number;
27
+ }>;
28
+ callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
29
+ getAllFormatsOfAddress(walletAddress: string): Promise<TonApiParseAddressResp>;
30
+ checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string): Promise<boolean>;
31
+ getBalance(walletAddress: string, tokenAddress?: string): Promise<BigNumber>;
32
+ }
@@ -0,0 +1,104 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TonAdapter = void 0;
4
+ const core_1 = require("@cryptorubic/core");
5
+ const ton_api_service_1 = require("./services/ton-api.service");
6
+ const ton_1 = require("@ton/ton");
7
+ const bignumber_js_1 = require("bignumber.js");
8
+ const abstract_adapter_1 = require("../common/abstract-adapter");
9
+ const web3_pure_1 = require("../../../utils/web3-pure");
10
+ const ton_adapter_signer_1 = require("./signer/ton-adapter-signer");
11
+ const tx_status_1 = require("../models/web3-public-models/tx-status");
12
+ class TonAdapter extends abstract_adapter_1.AbstractAdapter {
13
+ constructor(httpClient, config, logger, clientParams) {
14
+ super(core_1.BLOCKCHAIN_NAME.TON, logger);
15
+ this.config = config;
16
+ this.tonApi = new ton_api_service_1.TonApiService(httpClient, config.tonApiConfig, logger);
17
+ this.signer = new ton_adapter_signer_1.TonAdapterSigner(this.tonApi, this.publicRef, httpClient, logger, clientParams);
18
+ }
19
+ initWeb3Client() {
20
+ this.public = new ton_1.TonClient(this.config.tonClientConfig);
21
+ }
22
+ async read() {
23
+ throw new Error('Method read is not supported');
24
+ }
25
+ async callContractMethod() {
26
+ throw new Error('Method call is not supported');
27
+ }
28
+ async getTransactionStatus(srcTxHash) {
29
+ const isCompleted = await this.tonApi.checkIsTxCompleted(srcTxHash);
30
+ if (isCompleted) {
31
+ return tx_status_1.TX_STATUS.SUCCESS;
32
+ }
33
+ return tx_status_1.TX_STATUS.PENDING;
34
+ }
35
+ async getTokensBalances(userAddress, tokensAddresses) {
36
+ const tokensWithBalance = await this.tonApi.fetchAllNonNullableTokensInfoForWallet(userAddress);
37
+ const nativeIndex = tokensAddresses.findIndex((tokenAddress) => web3_pure_1.Web3Pure.isNativeAddress('TON', tokenAddress));
38
+ if (!tokensWithBalance.length && nativeIndex === -1) {
39
+ return [];
40
+ }
41
+ const balances = tokensAddresses
42
+ .filter((tokenAddress) => !web3_pure_1.Web3Pure.isNativeAddress('TON', tokenAddress))
43
+ .map((address) => {
44
+ const tokenWithBalance = tokensWithBalance.find((token) => token.jetton.address.toLowerCase() === ton_1.Address.parse(address).toRawString().toLowerCase());
45
+ if (tokenWithBalance) {
46
+ return new bignumber_js_1.default(tokenWithBalance.balance);
47
+ }
48
+ return new bignumber_js_1.default(0);
49
+ });
50
+ if (nativeIndex !== -1) {
51
+ const acountInfo = await this.tonApi.fetchAccountInfo(userAddress);
52
+ const nativeBalance = new bignumber_js_1.default(acountInfo.balance);
53
+ balances.splice(nativeIndex, 0, nativeBalance);
54
+ }
55
+ return balances;
56
+ }
57
+ multicallContractsMethods() {
58
+ throw new Error('Method not implemented.');
59
+ }
60
+ async getBlockNumber() {
61
+ try {
62
+ const block = await this.tonApi.fetchLastBlockInfo();
63
+ return block.seqno;
64
+ }
65
+ catch {
66
+ return 0;
67
+ }
68
+ }
69
+ async callForTokensInfo(tokenAddresses) {
70
+ const info = await Promise.all(tokenAddresses.map((address) => {
71
+ if (web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TON, address)) {
72
+ const nativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.TON];
73
+ return nativeToken;
74
+ }
75
+ return this.tonApi.fetchTokenInfo(address);
76
+ }));
77
+ if (!info.length)
78
+ return [];
79
+ const necessaryInfo = info.map(({ decimals, name, symbol, address }) => new core_1.Token({
80
+ address,
81
+ blockchain: core_1.BLOCKCHAIN_NAME.TON,
82
+ decimals: Number(decimals),
83
+ name,
84
+ symbol
85
+ }));
86
+ return necessaryInfo;
87
+ }
88
+ async getAllFormatsOfAddress(walletAddress) {
89
+ return this.tonApi.getAllFormatsOfAddress(walletAddress);
90
+ }
91
+ async checkEnoughBalance(token, walletAddress) {
92
+ const weiBalance = await this.getBalance(walletAddress, token.address);
93
+ const balance = core_1.Token.fromWei(weiBalance, token.decimals);
94
+ return balance.gte(token.tokenAmount);
95
+ }
96
+ async getBalance(walletAddress, tokenAddress) {
97
+ const isNative = !tokenAddress || web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TON, tokenAddress);
98
+ const tokenBalance = isNative
99
+ ? (await this.tonApi.fetchAccountInfo(walletAddress)).balance
100
+ : (await this.tonApi.fetchTokenInfoForWallet(walletAddress, tokenAddress)).balance;
101
+ return new bignumber_js_1.default(tokenBalance || 0);
102
+ }
103
+ }
104
+ exports.TonAdapter = TonAdapter;
@@ -0,0 +1,13 @@
1
+ import { TronParameters } from '../../../../utils/models/tron-parameters';
2
+ import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
3
+ export interface TronSendTxParams {
4
+ contractAddress: string;
5
+ methodSignature: string;
6
+ parameters: TronParameters;
7
+ txOptions: TronTransactionOptions;
8
+ }
9
+ export interface TronTransactionOptions extends BasicSendTransactionOptions {
10
+ feeLimit?: number;
11
+ callValue?: number;
12
+ rawParameter?: string;
13
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,7 @@
1
+ import { TronTransactionOptions } from './tron-send-tx-params';
2
+ export interface TronTransferTxParams {
3
+ receiver: string;
4
+ tokenWeiAmount: string;
5
+ tokenAddress: string;
6
+ txOptions: TronTransactionOptions;
7
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface TronWebProvider {
2
+ fullHost: string;
3
+ headers?: Record<string, string>;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,19 @@
1
+ import { TronWeb } from 'tronweb';
2
+ import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
3
+ import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
4
+ import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
5
+ import { TronSendTxParams } from '../models/tron-send-tx-params';
6
+ import { TronParameters } from '../../../../utils/models/tron-parameters';
7
+ import { TronTransferTxParams } from '../models/tron-transfer-tx-params';
8
+ export declare class TronAdapterSigner extends AbstractAdapterSigner<TronWeb, TronSendTxParams, string> {
9
+ private readonly publicRef;
10
+ get publicClient(): TronWeb;
11
+ constructor(publicRef: {
12
+ public: TronWeb | null;
13
+ }, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
14
+ write(contractAddress: string, methodSignature: string, parameters: TronParameters): Promise<string>;
15
+ getBlockchainName(): Promise<BlockchainName>;
16
+ sendTransaction(params: TronSendTxParams): Promise<string>;
17
+ trySendTransaction(params: TronSendTxParams): Promise<string>;
18
+ transfer(params: TronTransferTxParams): Promise<string>;
19
+ }
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TronAdapterSigner = void 0;
4
+ const abstract_adapter_signer_1 = require("../../common/signer/abstract-adapter-signer");
5
+ const core_1 = require("@cryptorubic/core");
6
+ const parse_tron_error_1 = require("../utils/parse-tron-error");
7
+ class TronAdapterSigner extends abstract_adapter_signer_1.AbstractAdapterSigner {
8
+ get publicClient() {
9
+ if (!this.publicRef.public) {
10
+ const msg = `Trying to access undefined publicClient in TronAdapterSigner.`;
11
+ this.logger?.customLog(msg);
12
+ throw new Error(msg);
13
+ }
14
+ return this.publicRef.public;
15
+ }
16
+ constructor(publicRef, httpClient, logger, clientParams) {
17
+ super(httpClient, logger, clientParams);
18
+ this.publicRef = publicRef;
19
+ }
20
+ async write(contractAddress, methodSignature, parameters) {
21
+ const transaction = await this.wallet.transactionBuilder.triggerSmartContract(contractAddress, methodSignature, {}, parameters, this.walletAddress);
22
+ const signedTransaction = await this.wallet.trx.sign(transaction.transaction);
23
+ const receipt = await this.wallet.trx.sendRawTransaction(signedTransaction);
24
+ return receipt.transaction.txID;
25
+ }
26
+ getBlockchainName() {
27
+ return Promise.resolve(core_1.BLOCKCHAIN_NAME.TRON);
28
+ }
29
+ async sendTransaction(params) {
30
+ try {
31
+ const transaction = await this.wallet.transactionBuilder.triggerSmartContract(params.contractAddress, params.methodSignature, params.txOptions, params.parameters, this.walletAddress);
32
+ const signedTransaction = await this.wallet.trx.sign(transaction.transaction);
33
+ const receipt = await this.wallet.trx.sendRawTransaction(signedTransaction);
34
+ if (params.txOptions.onTransactionHash) {
35
+ params.txOptions.onTransactionHash(receipt.transaction.txID);
36
+ }
37
+ return receipt.transaction.txID;
38
+ }
39
+ catch (err) {
40
+ console.error('Method execution error: ', err);
41
+ throw (0, parse_tron_error_1.parseTronError)(err);
42
+ }
43
+ }
44
+ async trySendTransaction(params) {
45
+ try {
46
+ await this.wallet.transactionBuilder.estimateEnergy(params.contractAddress, params.methodSignature, {}, params.parameters, this.walletAddress);
47
+ }
48
+ catch (err) {
49
+ const errMessage = typeof err === 'object' ? err.message : err;
50
+ if (errMessage !== 'this node does not support estimate energy') {
51
+ throw new Error('Tron transaction simulation error');
52
+ }
53
+ }
54
+ return this.sendTransaction(params);
55
+ }
56
+ async transfer(params) {
57
+ try {
58
+ if ((0, core_1.compareAddresses)(params.tokenAddress, core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.TRON].address)) {
59
+ const transaction = await this.wallet.transactionBuilder.sendTrx(params.receiver, parseInt(params.tokenWeiAmount));
60
+ const signedTransaction = await this.wallet.trx.sign(transaction);
61
+ const receipt = await this.wallet.trx.sendRawTransaction(signedTransaction);
62
+ if (params.txOptions.onTransactionHash) {
63
+ params.txOptions.onTransactionHash(receipt.transaction.txID);
64
+ }
65
+ return receipt.transaction.txID;
66
+ }
67
+ const contract = await this.wallet.contract().at(params.tokenAddress);
68
+ const transaction = await contract['transfer'](params.receiver, parseInt(params.tokenWeiAmount)).send();
69
+ const txId = typeof transaction === 'string' ? transaction : transaction.txid;
70
+ if (params.txOptions.onTransactionHash) {
71
+ params.txOptions.onTransactionHash(txId);
72
+ }
73
+ return txId;
74
+ }
75
+ catch (err) {
76
+ console.error('Method execution error: ', err);
77
+ throw (0, parse_tron_error_1.parseTronError)(err);
78
+ }
79
+ }
80
+ }
81
+ exports.TronAdapterSigner = TronAdapterSigner;