@cryptorubic/web3 0.8.16-alpha-usdt-zero-bridge.0 → 0.8.16-alpha-usdt-zero-bridge.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 (231) hide show
  1. package/package.json +22 -15
  2. package/src/index.d.ts +130 -22
  3. package/src/index.js +130 -20
  4. package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.d.ts +38 -0
  5. package/src/lib/adapter/adapters/{bitcoin-adapter.js → adapter-bitcoin/bitcoin-adapter.js} +35 -13
  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-web3-private-models/bitcoin-psbt-encoded-config.d.ts +5 -0
  8. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-psbt-encoded-config.js +2 -0
  9. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.d.ts +7 -0
  10. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.js +2 -0
  11. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.d.ts +6 -0
  12. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.js +2 -0
  13. package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.d.ts +17 -0
  14. package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.js +131 -0
  15. package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.d.ts +4 -0
  16. package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.js +705 -0
  17. package/src/lib/adapter/adapters/adapter-evm/evm-adapter.d.ts +120 -0
  18. package/src/lib/adapter/adapters/{evm-adapter.js → adapter-evm/evm-adapter.js} +215 -87
  19. package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.d.ts +38 -0
  20. package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.js +2 -0
  21. package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.d.ts +53 -0
  22. package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.js +268 -0
  23. package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.d.ts +12 -0
  24. package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.js +70 -0
  25. package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.d.ts +16 -0
  26. package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.js +2 -0
  27. package/src/lib/adapter/adapters/{utils → adapter-solana/services}/solana-tokens-service.d.ts +1 -1
  28. package/src/lib/adapter/adapters/{utils → adapter-solana/services}/solana-tokens-service.js +2 -2
  29. package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.d.ts +17 -0
  30. package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.js +87 -0
  31. package/src/lib/adapter/adapters/adapter-solana/solana-adapter.d.ts +49 -0
  32. package/src/lib/adapter/adapters/{solana-adapter.js → adapter-solana/solana-adapter.js} +105 -41
  33. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.d.ts +8 -0
  34. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.js +2 -0
  35. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.d.ts +17 -0
  36. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.js +55 -0
  37. package/src/lib/adapter/adapters/adapter-sui/sui-adapter.d.ts +32 -0
  38. package/src/lib/adapter/adapters/{sui-adapter.js → adapter-sui/sui-adapter.js} +45 -9
  39. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.d.ts +26 -0
  40. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.js +2 -0
  41. package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.d.ts +7 -6
  42. package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +17 -9
  43. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.d.ts +43 -0
  44. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.js +166 -0
  45. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.d.ts +32 -0
  46. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.js +104 -0
  47. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.d.ts +13 -0
  48. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.js +2 -0
  49. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.d.ts +4 -0
  50. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.js +2 -0
  51. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.d.ts +17 -0
  52. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +57 -0
  53. package/src/lib/adapter/adapters/adapter-tron/tron-adapter.d.ts +57 -0
  54. package/src/lib/adapter/adapters/{tron-adapter.js → adapter-tron/tron-adapter.js} +131 -66
  55. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.d.ts +2 -0
  56. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.js +20 -0
  57. package/src/lib/adapter/adapters/common/abstract-adapter.d.ts +84 -0
  58. package/src/lib/adapter/adapters/common/abstract-adapter.js +82 -0
  59. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.d.ts +22 -0
  60. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.js +42 -0
  61. package/src/lib/adapter/adapters/constants/tron-multicall-abi.d.ts +1 -1
  62. package/src/lib/adapter/adapters/models/approve-adapter.d.ts +13 -9
  63. package/src/lib/adapter/adapters/models/approve-adapter.js +1 -1
  64. package/src/lib/adapter/adapters/models/basic-transaction-options.d.ts +1 -1
  65. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.d.ts +5 -0
  66. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.js +2 -0
  67. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.d.ts +4 -0
  68. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.js +2 -0
  69. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.d.ts +4 -0
  70. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.js +2 -0
  71. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.d.ts +18 -0
  72. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.js +2 -0
  73. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.js +2 -0
  74. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.d.ts +10 -0
  75. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.js +2 -0
  76. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.d.ts +5 -0
  77. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.js +2 -0
  78. package/src/lib/adapter/adapters/models/old-features-models/contract-params.d.ts +23 -0
  79. package/src/lib/adapter/adapters/models/old-features-models/contract-params.js +2 -0
  80. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.d.ts +32 -0
  81. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.js +2 -0
  82. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.d.ts +6 -0
  83. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.js +2 -0
  84. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.d.ts +5 -0
  85. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.js +2 -0
  86. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.d.ts +65 -0
  87. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.js +2 -0
  88. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.d.ts +8 -0
  89. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.js +2 -0
  90. package/src/lib/adapter/adapters/models/tonapi-models.d.ts +2 -2
  91. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.d.ts +5 -0
  92. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.js +2 -0
  93. package/src/lib/adapter/adapters/models/web3-public-models/method-data.d.ts +4 -0
  94. package/src/lib/adapter/adapters/models/web3-public-models/method-data.js +2 -0
  95. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.d.ts +1 -0
  96. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.js +2 -0
  97. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.d.ts +10 -0
  98. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +12 -0
  99. package/src/lib/adapter/adapters/utils/errors.d.ts +2 -0
  100. package/src/lib/adapter/adapters/utils/errors.js +10 -0
  101. package/src/lib/adapter/adapters/utils/options.d.ts +10 -0
  102. package/src/lib/adapter/adapters/utils/options.js +59 -0
  103. package/src/lib/adapter/adapters/utils/waitFor.d.ts +1 -0
  104. package/src/lib/adapter/adapters/utils/waitFor.js +6 -0
  105. package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +15 -13
  106. package/src/lib/adapter/blockchain-adapter-factory.service.js +44 -61
  107. package/src/lib/adapter/constants/chain-configs/chain-configs.d.ts +1 -1
  108. package/src/lib/adapter/constants/chain-configs/chain-configs.js +92 -56
  109. package/src/lib/adapter/constants/models/env-type.d.ts +1 -0
  110. package/src/lib/adapter/constants/models/env-type.js +2 -0
  111. package/src/lib/adapter/constants/models/solana-web3.d.ts +1 -1
  112. package/src/lib/adapter/constants/rubic-api-link-mapping.d.ts +2 -0
  113. package/src/lib/adapter/constants/rubic-api-link-mapping.js +16 -0
  114. package/src/lib/adapter/constants/viem-blockchain-mapping.d.ts +1 -1
  115. package/src/lib/adapter/constants/viem-blockchain-mapping.js +4 -3
  116. package/src/lib/adapter/models/create-factory-params.d.ts +23 -0
  117. package/src/lib/adapter/models/create-factory-params.js +2 -0
  118. package/src/lib/errors/blockchain/deflation-token.error.d.ts +11 -0
  119. package/src/lib/errors/blockchain/deflation-token.error.js +16 -0
  120. package/src/lib/errors/blockchain/healthcheck.error.d.ts +8 -0
  121. package/src/lib/errors/blockchain/healthcheck.error.js +15 -0
  122. package/src/lib/errors/blockchain/invalid-address.error.d.ts +8 -0
  123. package/src/lib/errors/blockchain/invalid-address.error.js +15 -0
  124. package/src/lib/errors/blockchain/low-gas.error.d.ts +7 -0
  125. package/src/lib/errors/blockchain/low-gas.error.js +14 -0
  126. package/src/lib/errors/blockchain/transaction-reverted.error.d.ts +7 -0
  127. package/src/lib/errors/blockchain/transaction-reverted.error.js +14 -0
  128. package/src/lib/errors/blockchain/tron-insufficient-native-balance.d.ts +7 -0
  129. package/src/lib/errors/blockchain/tron-insufficient-native-balance.js +14 -0
  130. package/src/lib/errors/blockchain/tron-transaction-expired.d.ts +7 -0
  131. package/src/lib/errors/blockchain/tron-transaction-expired.js +14 -0
  132. package/src/lib/errors/blockchain/user-reject.error.d.ts +7 -0
  133. package/src/lib/errors/blockchain/user-reject.error.js +14 -0
  134. package/src/lib/errors/blockchain/wrong-from-address.error.d.ts +7 -0
  135. package/src/lib/errors/blockchain/wrong-from-address.error.js +14 -0
  136. package/src/lib/errors/blockchain/wrong-receiver-address.error.d.ts +7 -0
  137. package/src/lib/errors/blockchain/wrong-receiver-address.error.js +14 -0
  138. package/src/lib/errors/common/timeout.error.d.ts +4 -0
  139. package/src/lib/errors/common/timeout.error.js +12 -0
  140. package/src/lib/errors/common/tx-reverted-in-chain.error.d.ts +4 -0
  141. package/src/lib/errors/common/tx-reverted-in-chain.error.js +11 -0
  142. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.d.ts +7 -0
  143. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.js +14 -0
  144. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.d.ts +7 -0
  145. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.js +14 -0
  146. package/src/lib/errors/cross-chain/low-to-slippage.error.d.ts +6 -0
  147. package/src/lib/errors/cross-chain/low-to-slippage.error.js +10 -0
  148. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.d.ts +8 -0
  149. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.js +15 -0
  150. package/src/lib/errors/cross-chain/too-low-amount.error.d.ts +7 -0
  151. package/src/lib/errors/cross-chain/too-low-amount.error.js +14 -0
  152. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.d.ts +4 -0
  153. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.js +11 -0
  154. package/src/lib/errors/cross-chain/updated-rates-error.d.ts +10 -0
  155. package/src/lib/errors/cross-chain/updated-rates-error.js +17 -0
  156. package/src/lib/errors/models/rubic-api-error.d.ts +21 -0
  157. package/src/lib/errors/models/rubic-api-error.js +2 -0
  158. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.d.ts +7 -0
  159. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.js +14 -0
  160. package/src/lib/errors/proxy/unapproved-contract-error.d.ts +8 -0
  161. package/src/lib/errors/proxy/unapproved-contract-error.js +15 -0
  162. package/src/lib/errors/proxy/unapproved-method-error.d.ts +8 -0
  163. package/src/lib/errors/proxy/unapproved-method-error.js +15 -0
  164. package/src/lib/errors/proxy/unlisted-error.d.ts +9 -0
  165. package/src/lib/errors/proxy/unlisted-error.js +16 -0
  166. package/src/lib/errors/rubic-sdk.error.d.ts +6 -0
  167. package/src/lib/errors/rubic-sdk.error.js +13 -0
  168. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.d.ts +7 -0
  169. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.js +14 -0
  170. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.d.ts +8 -0
  171. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.js +15 -0
  172. package/src/lib/errors/swap/insufficient-funds-oneinch.error.d.ts +9 -0
  173. package/src/lib/errors/swap/insufficient-funds-oneinch.error.js +15 -0
  174. package/src/lib/errors/swap/insufficient-funds.error.d.ts +11 -0
  175. package/src/lib/errors/swap/insufficient-funds.error.js +18 -0
  176. package/src/lib/errors/swap/insufficient-liquidity.error.d.ts +7 -0
  177. package/src/lib/errors/swap/insufficient-liquidity.error.js +14 -0
  178. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.d.ts +7 -0
  179. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.js +14 -0
  180. package/src/lib/errors/swap/low-slippage-deflationary-token.error.d.ts +7 -0
  181. package/src/lib/errors/swap/low-slippage-deflationary-token.error.js +14 -0
  182. package/src/lib/errors/swap/low-slippage.error.d.ts +8 -0
  183. package/src/lib/errors/swap/low-slippage.error.js +15 -0
  184. package/src/lib/errors/swap/max-amount.error.d.ts +7 -0
  185. package/src/lib/errors/swap/max-amount.error.js +14 -0
  186. package/src/lib/errors/swap/max-decimals.error.d.ts +5 -0
  187. package/src/lib/errors/swap/max-decimals.error.js +12 -0
  188. package/src/lib/errors/swap/min-amount.error.d.ts +7 -0
  189. package/src/lib/errors/swap/min-amount.error.js +14 -0
  190. package/src/lib/errors/swap/no-linked-account-erros.d.ts +4 -0
  191. package/src/lib/errors/swap/no-linked-account-erros.js +11 -0
  192. package/src/lib/errors/swap/not-supported-blockchain.d.ts +8 -0
  193. package/src/lib/errors/swap/not-supported-blockchain.js +15 -0
  194. package/src/lib/errors/swap/not-supported-region.d.ts +7 -0
  195. package/src/lib/errors/swap/not-supported-region.js +14 -0
  196. package/src/lib/errors/swap/not-supported-tokens.error.d.ts +7 -0
  197. package/src/lib/errors/swap/not-supported-tokens.error.js +14 -0
  198. package/src/lib/errors/swap/not-whitelisted-provider.error.d.ts +10 -0
  199. package/src/lib/errors/swap/not-whitelisted-provider.error.js +17 -0
  200. package/src/lib/errors/swap/simulation-failed.error.d.ts +6 -0
  201. package/src/lib/errors/swap/simulation-failed.error.js +12 -0
  202. package/src/lib/errors/swap/swap-error-on-provider-side.d.ts +7 -0
  203. package/src/lib/errors/swap/swap-error-on-provider-side.js +14 -0
  204. package/src/lib/errors/swap/swap-request.error.d.ts +7 -0
  205. package/src/lib/errors/swap/swap-request.error.js +14 -0
  206. package/src/lib/errors/swap/trade-expired.error.d.ts +4 -0
  207. package/src/lib/errors/swap/trade-expired.error.js +11 -0
  208. package/src/lib/errors/swap/unnecessary-approve.error.d.ts +7 -0
  209. package/src/lib/errors/swap/unnecessary-approve.error.js +14 -0
  210. package/src/lib/errors/swap/wallet-not-connected.error.d.ts +8 -0
  211. package/src/lib/errors/swap/wallet-not-connected.error.js +15 -0
  212. package/src/lib/errors/swap/wrong-network.error.d.ts +10 -0
  213. package/src/lib/errors/swap/wrong-network.error.js +16 -0
  214. package/src/lib/utils/constants/web3-pure-store.js +17 -15
  215. package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
  216. package/src/lib/utils/web3-types/near-web3-pure.d.ts +6 -0
  217. package/src/lib/utils/web3-types/near-web3-pure.js +24 -0
  218. package/src/lib/utils/web3-types/tron-web3-pure.d.ts +2 -3
  219. package/src/lib/utils/web3-types/zcash-web3-pure.d.ts +5 -0
  220. package/src/lib/utils/web3-types/zcash-web3-pure.js +17 -0
  221. package/src/lib/adapter/adapters/abstract-adapter.d.ts +0 -23
  222. package/src/lib/adapter/adapters/abstract-adapter.js +0 -59
  223. package/src/lib/adapter/adapters/bitcoin-adapter.d.ts +0 -18
  224. package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -59
  225. package/src/lib/adapter/adapters/solana-adapter.d.ts +0 -35
  226. package/src/lib/adapter/adapters/sui-adapter.d.ts +0 -17
  227. package/src/lib/adapter/adapters/ton-adapter.d.ts +0 -22
  228. package/src/lib/adapter/adapters/ton-adapter.js +0 -100
  229. package/src/lib/adapter/adapters/tron-adapter.d.ts +0 -36
  230. /package/src/lib/adapter/adapters/{models/gas-price.js → adapter-bitcoin/models/btc-send-tx-params.js} +0 -0
  231. /package/src/lib/adapter/adapters/models/{gas-price.d.ts → evm-web3-public-models/gas-price.d.ts} +0 -0
@@ -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,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,17 @@
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
+ export declare class TronAdapterSigner extends AbstractAdapterSigner<TronWeb, TronSendTxParams, string> {
8
+ private readonly publicRef;
9
+ get publicClient(): TronWeb;
10
+ constructor(publicRef: {
11
+ public: TronWeb | null;
12
+ }, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
13
+ write(contractAddress: string, methodSignature: string, parameters: TronParameters): Promise<string>;
14
+ getBlockchainName(): Promise<BlockchainName>;
15
+ sendTransaction(params: TronSendTxParams): Promise<string>;
16
+ trySendTransaction(params: TronSendTxParams): Promise<string>;
17
+ }
@@ -0,0 +1,57 @@
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
+ }
57
+ exports.TronAdapterSigner = TronAdapterSigner;
@@ -0,0 +1,57 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { AbstractAdapter } from '../common/abstract-adapter';
3
+ import { TronWeb } from 'tronweb';
4
+ import { HttpClient, ICustomLogger, PriceTokenAmount, Token, TokenAmount, TronBlockchainName } from '@cryptorubic/core';
5
+ import { TronTransactionConfig } from '../../../utils/models/tron-transaction-config';
6
+ import { TronParameters } from '../../../utils/models/tron-parameters';
7
+ import { Abi } from 'viem';
8
+ import { ContractMulticallResponse } from '../../../utils/models/contract-multicall-response';
9
+ import { TronWeb3PrimitiveType, Web3PrimitiveType } from '../../../utils/models/primitive-types';
10
+ import { MethodData } from '../../../utils/models/method-data';
11
+ import { ClientAdaptersFactoryParams } from '../../models/create-factory-params';
12
+ import { TronAdapterSigner } from './signer/tron-adapter-signer';
13
+ import { TronTransactionOptions } from './models/tron-send-tx-params';
14
+ import { AllowanceInfo } from '../models/common-types';
15
+ import { ApprovableAdapter } from '../models/approve-adapter';
16
+ import { TxStatus } from '../models/web3-public-models/tx-status';
17
+ export declare class TronAdapter extends AbstractAdapter<TronWeb, TronWeb, TronBlockchainName> implements ApprovableAdapter<TronTransactionConfig> {
18
+ private readonly rpcList;
19
+ readonly signer: TronAdapterSigner;
20
+ private readonly multicallAddress;
21
+ needPreswapAction(): Promise<boolean>;
22
+ constructor(rpcList: (string | {
23
+ fullHost: string;
24
+ })[], httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
25
+ initWeb3Client(): void;
26
+ callContractMethod<T extends Web3PrimitiveType = string>(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments?: unknown[]): Promise<T>;
27
+ getTransactionStatus(srcTxHash: string): Promise<TxStatus>;
28
+ /**
29
+ * Gets mined transaction info.
30
+ * @param hash Transaction hash.
31
+ */
32
+ private getTransactionInfo;
33
+ getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
34
+ private batchMulticallTokenBalance;
35
+ multicallContractsMethods<Output extends TronWeb3PrimitiveType>(contractAbi: any, contractsData: {
36
+ contractAddress: string;
37
+ methodsData: MethodData[];
38
+ }[]): Promise<ContractMulticallResponse<any>[][]>;
39
+ getBlockNumber(): Promise<number | {
40
+ blockNumber: number;
41
+ workchain: number;
42
+ }>;
43
+ checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string): Promise<boolean>;
44
+ private multicall;
45
+ private multicallContractsMethodsByOne;
46
+ callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token[]>;
47
+ getBalance(userAddress: string, tokenAddress?: string): Promise<BigNumber>;
48
+ getTokenBalance(userAddress: string, tokenAddress: string): Promise<BigNumber>;
49
+ convertTronAddressToHex(address: string): Promise<string>;
50
+ static encodeMethodCall(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments: TronParameters, callValue?: string, feeLimit?: number): TronTransactionConfig;
51
+ read<T>(contractAddress: string, contractAbi: any, methodName: string, methodArguments?: unknown[]): Promise<T>;
52
+ private static flattenTypesToString;
53
+ getAllowance(fromTokenAddress: string, ownerAddress: string, spenderAddress: string): Promise<AllowanceInfo>;
54
+ needApprove(from: TokenAmount, walletAddress: string, spender: string): Promise<boolean>;
55
+ approveTokens(tokenAddress: string, spenderAddress: string, amount?: BigNumber | 'infinity', options?: TronTransactionOptions): Promise<string>;
56
+ encodeApprove(tokenAddress: string, spenderAddress: string, amount?: string): TronTransactionConfig;
57
+ }