@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
@@ -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
+ }
@@ -2,22 +2,99 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.TronAdapter = void 0;
4
4
  const bignumber_js_1 = require("bignumber.js");
5
- const trc_20_contract_abi_1 = require("./constants/trc-20-contract-abi");
6
- const tron_multicall_abi_1 = require("./constants/tron-multicall-abi");
7
- const abstract_adapter_1 = require("./abstract-adapter");
5
+ const trc_20_contract_abi_1 = require("../constants/trc-20-contract-abi");
6
+ const tron_multicall_abi_1 = require("../constants/tron-multicall-abi");
7
+ const abstract_adapter_1 = require("../common/abstract-adapter");
8
8
  const tronweb_1 = require("tronweb");
9
9
  const core_1 = require("@cryptorubic/core");
10
- const web3_pure_1 = require("../../utils/web3-pure");
11
- const tron_web3_pure_1 = require("../../utils/web3-types/tron-web3-pure");
10
+ const web3_pure_1 = require("../../../utils/web3-pure");
11
+ const tron_web3_pure_1 = require("../../../utils/web3-types/tron-web3-pure");
12
+ const tron_adapter_signer_1 = require("./signer/tron-adapter-signer");
13
+ const options_1 = require("../utils/options");
14
+ const parse_tron_error_1 = require("./utils/parse-tron-error");
15
+ const tx_status_1 = require("../models/web3-public-models/tx-status");
12
16
  class TronAdapter extends abstract_adapter_1.AbstractAdapter {
13
- async needPreswapAction(token, contractAddress, walletAddress, amount) {
14
- // return this.needApprove()
17
+ async needPreswapAction() {
15
18
  return false;
16
19
  }
17
- constructor(rpcList, logger) {
20
+ constructor(rpcList, httpClient, logger, clientParams) {
18
21
  super(core_1.BLOCKCHAIN_NAME.TRON, logger);
22
+ this.rpcList = rpcList;
19
23
  this.multicallAddress = 'T9ziQU4EBteJzjzMzhHELdhgWFqwzS5Vki';
20
- this.public = new tronweb_1.TronWeb({ fullHost: rpcList[0] });
24
+ this.signer = new tron_adapter_signer_1.TronAdapterSigner(this.publicRef, httpClient, logger, clientParams);
25
+ }
26
+ initWeb3Client() {
27
+ const rpc = typeof this.rpcList[0] === 'string' ? this.rpcList[0] : this.rpcList[0].fullHost;
28
+ this.public = new tronweb_1.TronWeb({ fullHost: rpc });
29
+ }
30
+ async callContractMethod(contractAddress, contractAbi, methodName, methodArguments = []) {
31
+ this.public.setAddress(contractAddress);
32
+ const contract = await this.public.contract(contractAbi, contractAddress);
33
+ const response = await contract[methodName](...methodArguments).call();
34
+ return tron_web3_pure_1.TronWeb3Pure.flattenParameterToPrimitive(response);
35
+ }
36
+ async getTransactionStatus(srcTxHash) {
37
+ const txReceipt = await this.getTransactionInfo(srcTxHash);
38
+ if (txReceipt?.receipt) {
39
+ if (txReceipt.result === 'FAILED') {
40
+ return tx_status_1.TX_STATUS.FAIL;
41
+ }
42
+ return tx_status_1.TX_STATUS.SUCCESS;
43
+ }
44
+ return tx_status_1.TX_STATUS.PENDING;
45
+ }
46
+ /**
47
+ * Gets mined transaction info.
48
+ * @param hash Transaction hash.
49
+ */
50
+ async getTransactionInfo(hash) {
51
+ return this.public.trx.getTransactionInfo(hash);
52
+ }
53
+ async getTokensBalances(userAddress, tokensAddresses) {
54
+ const indexOfNativeCoin = tokensAddresses.findIndex((tokenAddress) => web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TRON, tokenAddress));
55
+ const promises = [];
56
+ if (indexOfNativeCoin !== -1) {
57
+ tokensAddresses.splice(indexOfNativeCoin, 1);
58
+ promises[1] = this.getBalance(userAddress);
59
+ }
60
+ promises[0] = this.batchMulticallTokenBalance(userAddress, tokensAddresses, 50);
61
+ const results = await Promise.all(promises);
62
+ const tokensBalances = results[0].map((tokenResults) => {
63
+ const { success, output } = tokenResults[0];
64
+ return success ? new bignumber_js_1.default(output) : new bignumber_js_1.default(0);
65
+ });
66
+ if (indexOfNativeCoin !== -1) {
67
+ tokensBalances.splice(indexOfNativeCoin, 0, results[1]);
68
+ }
69
+ return tokensBalances;
70
+ }
71
+ async batchMulticallTokenBalance(userAddress, tokensAddresses, batchSize) {
72
+ if (tokensAddresses.length > 100) {
73
+ const balances = [];
74
+ for (let i = 0; i < tokensAddresses.length; i += batchSize) {
75
+ const batchRequest = tokensAddresses.slice(i, i + batchSize);
76
+ const batchResult = await this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, batchRequest.map((tokenAddress) => ({
77
+ contractAddress: tokenAddress,
78
+ methodsData: [
79
+ {
80
+ methodName: 'balanceOf',
81
+ methodArguments: [userAddress]
82
+ }
83
+ ]
84
+ })));
85
+ balances.push(...batchResult);
86
+ }
87
+ return balances;
88
+ }
89
+ return this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokensAddresses.map((tokenAddress) => ({
90
+ contractAddress: tokenAddress,
91
+ methodsData: [
92
+ {
93
+ methodName: 'balanceOf',
94
+ methodArguments: [userAddress]
95
+ }
96
+ ]
97
+ })));
21
98
  }
22
99
  async multicallContractsMethods(contractAbi, contractsData) {
23
100
  const calls = contractsData.map(({ contractAddress, methodsData }) => {
@@ -33,35 +110,42 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
33
110
  const success = outputs.results[outputIndex];
34
111
  const returnData = outputs.returnData[outputIndex];
35
112
  outputIndex++;
113
+ const methodOutputAbi = contractAbi.find(
114
+ // @ts-ignore
115
+ (funcSignature) => funcSignature.name === methodData.methodName
36
116
  // @ts-ignore
37
- const methodOutputAbi = contractAbi.find((funcSignature) => funcSignature.name === methodData.methodName).outputs;
117
+ ).outputs;
38
118
  return {
39
119
  output: success ? tron_web3_pure_1.TronWeb3Pure.decodeMethodOutput(methodOutputAbi, returnData) : null,
40
120
  success
41
121
  };
42
122
  }));
43
123
  }
44
- catch {
124
+ catch (err) {
125
+ this.logger
126
+ ? this.logger.customError('[TronAdapter_multicallContractsMethods] Error: ', err)
127
+ : console.debug('[TronAdapter_multicallContractsMethods] Error:', err);
45
128
  return this.multicallContractsMethodsByOne(contractAbi, contractsData);
46
129
  }
47
130
  }
131
+ async getBlockNumber() {
132
+ return (await this.public.trx.getCurrentBlock()).block_header.raw_data.number;
133
+ }
134
+ async checkEnoughBalance(token, walletAddress) {
135
+ const balance = await this.getBalance(walletAddress, token.address);
136
+ return balance.gte(token.weiAmount);
137
+ }
48
138
  async multicall(calls) {
49
139
  this.public.setAddress(this.multicallAddress);
50
140
  const contract = await this.public.contract(tron_multicall_abi_1.TRON_MULTICALL_ABI, this.multicallAddress);
51
141
  // @ts-ignore
52
142
  return contract.aggregateViewCalls(calls).call();
53
143
  }
54
- async callContractMethod(contractAddress, contractAbi, methodName, methodArguments = []) {
55
- this.public.setAddress(contractAddress);
56
- const contract = await this.public.contract(contractAbi, contractAddress);
57
- const response = await contract[methodName](...methodArguments).call();
58
- return tron_web3_pure_1.TronWeb3Pure.flattenParameterToPrimitive(response);
59
- }
60
144
  multicallContractsMethodsByOne(contractAbi, contractsData) {
61
145
  return Promise.all(contractsData.map((contractData) => {
62
146
  return Promise.all(contractData.methodsData.map(async (methodData) => {
63
147
  try {
64
- const output = (await this.callContractMethod(contractData.contractAddress, contractAbi, methodData.methodName, methodData.methodArguments));
148
+ const output = (await this.read(contractData.contractAddress, contractAbi, methodData.methodName, methodData.methodArguments));
65
149
  return {
66
150
  output,
67
151
  success: true
@@ -76,32 +160,6 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
76
160
  }));
77
161
  }));
78
162
  }
79
- async getTokensBalances(userAddress, tokensAddresses) {
80
- const indexOfNativeCoin = tokensAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.TRON, address));
81
- const promises = [];
82
- if (indexOfNativeCoin !== -1) {
83
- tokensAddresses.splice(indexOfNativeCoin, 1);
84
- promises[1] = this.getBalance(userAddress);
85
- }
86
- promises[0] = this.multicallContractsMethods(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokensAddresses.map((tokenAddress) => ({
87
- contractAddress: tokenAddress,
88
- methodsData: [
89
- {
90
- methodArguments: [userAddress],
91
- methodName: 'balanceOf'
92
- }
93
- ]
94
- })));
95
- const results = await Promise.all(promises);
96
- const tokensBalances = results[0].map((tokenResults) => {
97
- const { success, output } = tokenResults[0];
98
- return success ? new bignumber_js_1.default(output) : new bignumber_js_1.default(0);
99
- });
100
- if (indexOfNativeCoin !== -1) {
101
- tokensBalances.splice(indexOfNativeCoin, 0, results[1]);
102
- }
103
- return tokensBalances;
104
- }
105
163
  async callForTokensInfo(tokenAddresses) {
106
164
  const tokenFields = ['decimals', 'symbol', 'name'];
107
165
  const nativeTokenIndex = tokenAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.TRON, address));
@@ -154,21 +212,15 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
154
212
  async getTokenBalance(userAddress, tokenAddress) {
155
213
  this.public.setAddress(userAddress);
156
214
  const contract = await this.public.contract(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokenAddress);
157
- // @ts-ignore
158
- const balance = await contract.balanceOf(userAddress).call();
215
+ const balance = await contract
216
+ // @ts-ignore
217
+ .balanceOf(userAddress)
218
+ .call();
159
219
  return new bignumber_js_1.default(balance?.toString());
160
220
  }
161
221
  async convertTronAddressToHex(address) {
162
222
  return this.public.address.toHex(address);
163
223
  }
164
- read() {
165
- throw new Error('Method is not implemented');
166
- }
167
- ;
168
- write() {
169
- throw new Error('Method is not implemented');
170
- }
171
- ;
172
224
  static encodeMethodCall(contractAddress, contractAbi, methodName, methodArguments, callValue, feeLimit) {
173
225
  const methodAbi = contractAbi.find((abiItem) => abiItem.type === 'function' && abiItem.name === methodName);
174
226
  if (!methodAbi) {
@@ -183,40 +235,63 @@ class TronAdapter extends abstract_adapter_1.AbstractAdapter {
183
235
  ...(feeLimit && { feeLimit })
184
236
  };
185
237
  }
238
+ async read(contractAddress, contractAbi, methodName, methodArguments = []) {
239
+ this.public.setAddress(contractAddress);
240
+ const contract = await this.public.contract(contractAbi, contractAddress);
241
+ const response = await contract[methodName](...methodArguments).call();
242
+ return tron_web3_pure_1.TronWeb3Pure.flattenParameterToPrimitive(response);
243
+ }
186
244
  static flattenTypesToString(abiInputs) {
187
245
  return (abiInputs?.map((abiInput) => {
188
246
  if (abiInput.type === 'tuple' || abiInput.type.includes('tuple')) {
247
+ const flattenedComponents = this.flattenTypesToString(
189
248
  //@ts-ignore
190
- const flattenedComponents = this.flattenTypesToString(abiInput.components);
249
+ abiInput.components);
191
250
  return `(${flattenedComponents.join(',')})`;
192
251
  }
193
252
  return abiInput.type;
194
253
  }) || []);
195
254
  }
255
+ async getAllowance(fromTokenAddress, ownerAddress, spenderAddress) {
256
+ const [decimals, allowance] = await Promise.all([
257
+ this.read(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'decimals'),
258
+ this.read(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'allowance', [ownerAddress, spenderAddress])
259
+ ]);
260
+ const allowanceWeiBN = new bignumber_js_1.default(allowance);
261
+ const allowanceNonWei = core_1.Token.fromWei(allowanceWeiBN, Number(decimals));
262
+ return { allowanceNonWei, allowanceWei: allowanceWeiBN };
263
+ }
196
264
  async needApprove(from, walletAddress, spender) {
197
265
  if (from.isNative)
198
266
  return false;
199
267
  const { allowanceWei } = await this.getAllowance(from.address, walletAddress, spender);
200
268
  return allowanceWei.lt(from.weiAmount);
201
269
  }
270
+ async approveTokens(tokenAddress, spenderAddress, amount = 'infinity', options = {}) {
271
+ try {
272
+ const contract = await this.signer.wallet.contract(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, tokenAddress);
273
+ const rawValue = amount === 'infinity' ? new bignumber_js_1.default(2).pow(256).minus(1) : amount;
274
+ const transactionHash = await contract.approve(spenderAddress, rawValue.toFixed(0)).send({
275
+ ...(options.feeLimit && {
276
+ feeLimit: (0, options_1.stringifyAmount)(options.feeLimit)
277
+ })
278
+ });
279
+ if (options.onTransactionHash) {
280
+ options.onTransactionHash(transactionHash);
281
+ }
282
+ return transactionHash;
283
+ }
284
+ catch (err) {
285
+ console.error('Approve execution error: ', err);
286
+ throw (0, parse_tron_error_1.parseTronError)(err);
287
+ }
288
+ }
202
289
  encodeApprove(tokenAddress, spenderAddress, amount) {
203
290
  const amountWei = amount ?? new bignumber_js_1.default(2).pow(256).minus(1).toFixed();
204
- const callData = tron_web3_pure_1.TronWeb3Pure.encodeFunctionCall(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'approve', [spenderAddress, amountWei]);
205
- return {
206
- data: callData,
207
- to: tokenAddress,
208
- value: '0'
209
- };
210
- }
211
- async getAllowance(fromTokenAddress, walletAddress, spender) {
212
- const [contract, decimals] = await Promise.all([
213
- this.public.contract(trc_20_contract_abi_1.TRC20_CONTRACT_ABI, fromTokenAddress),
214
- this.callContractMethod(fromTokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'decimals')
291
+ return TronAdapter.encodeMethodCall(tokenAddress, trc_20_contract_abi_1.TRC20_CONTRACT_ABI, 'approve', [
292
+ { type: 'address', value: spenderAddress },
293
+ { type: 'uint256', value: amountWei }
215
294
  ]);
216
- const allowance = await this.getAllowance(fromTokenAddress, walletAddress, spender);
217
- const allowanceWeiBN = new bignumber_js_1.default(allowance?.toString());
218
- const allowanceNonWei = core_1.Token.fromWei(allowanceWeiBN, Number(decimals));
219
- return { allowanceNonWei, allowanceWei: allowanceWeiBN };
220
295
  }
221
296
  }
222
297
  exports.TronAdapter = TronAdapter;
@@ -0,0 +1,2 @@
1
+ import { RubicSdkError } from '../../../../errors/rubic-sdk.error';
2
+ export declare function parseTronError(err: unknown): RubicSdkError;
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseTronError = parseTronError;
4
+ const tron_insufficient_native_balance_1 = require("../../../../errors/blockchain/tron-insufficient-native-balance");
5
+ const tron_transaction_expired_1 = require("../../../../errors/blockchain/tron-transaction-expired");
6
+ const user_reject_error_1 = require("../../../../errors/blockchain/user-reject.error");
7
+ const errors_1 = require("../../utils/errors");
8
+ function parseTronError(err) {
9
+ if (err?.includes?.('Confirmation declined by user')) {
10
+ throw new user_reject_error_1.UserRejectError();
11
+ }
12
+ const message = err?.message;
13
+ if (message?.includes('balance is not sufficient')) {
14
+ throw new tron_insufficient_native_balance_1.TronInsufficientNativeBalance();
15
+ }
16
+ if (message?.includes('Transaction expired')) {
17
+ throw new tron_transaction_expired_1.TronTransactionExpired();
18
+ }
19
+ return (0, errors_1.parseError)(err);
20
+ }
@@ -0,0 +1,84 @@
1
+ import { Abi } from 'viem';
2
+ import BigNumber from 'bignumber.js';
3
+ import { ICustomLogger, Token, TokenAmount, BlockchainName } from '@cryptorubic/core';
4
+ import { AbstractAdapterSigner } from './signer/abstract-adapter-signer';
5
+ import { MethodData } from '../models/web3-public-models/method-data';
6
+ import { ContractMulticallResponse } from '../models/web3-public-models/contract-multicall-response';
7
+ import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
8
+ import { TxStatus } from '../models/web3-public-models/tx-status';
9
+ export declare abstract class AbstractAdapter<P, W, B extends BlockchainName, SendTxParams extends object = {}, SendTxResponse = {}> {
10
+ abstract signer: AbstractAdapterSigner<W, SendTxParams, SendTxResponse>;
11
+ protected readonly logger?: ICustomLogger;
12
+ readonly blockchain: B;
13
+ /**
14
+ * used to pass public pointer in signer constructor
15
+ */
16
+ private _publicRef;
17
+ protected set public(value: P | null);
18
+ get public(): P;
19
+ get publicRef(): {
20
+ public: P | null;
21
+ };
22
+ get connected(): boolean;
23
+ protected constructor(blockchain: B, logger?: ICustomLogger);
24
+ /**
25
+ * Used to set this.public property, if it's not set - you can't send rpc requests to blockchain.
26
+ * Mostly you need to instantiate it at the same time as BlockchainAdapterFactoryService.createAdapter() called.
27
+ * In rubic-app it's called on wallet connection to prevent unnecessary rpc requests `net_listening` from viem library.
28
+ */
29
+ abstract initWeb3Client(): void;
30
+ /**
31
+ * Gets account native or token balance in wei.
32
+ * @param userAddress Wallet address, whose balance you want to find out.
33
+ * @param tokenAddress Address of the smart-contract corresponding to the token,
34
+ */
35
+ abstract getBalance(userAddress: string, tokenAddress?: string): Promise<BigNumber>;
36
+ abstract getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
37
+ abstract checkEnoughBalance(token: TokenAmount, walletAddress: string): Promise<boolean>;
38
+ abstract callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
39
+ /**
40
+ * Calls pure method of smart-contract and returns its output value.
41
+ * @param contractAddress Address of smart-contract which method is to be executed.
42
+ * @param contractAbi Abi of smart-contract which method is to be executed.
43
+ * @param methodName Called method name.
44
+ * @param methodArguments Method arguments.
45
+ * @param options Transaction options.
46
+ */
47
+ abstract callContractMethod<T extends Web3PrimitiveType = string>(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments?: unknown[], options?: object): Promise<T>;
48
+ /**
49
+ * Gets token info by address.
50
+ * @param tokenAddress Address of token.
51
+ * @param tokenFields Token's fields to get.
52
+ */
53
+ callForTokenInfo(tokenAddress: string): Promise<Token<BlockchainName>>;
54
+ /**
55
+ * Checks that user has enough balance.
56
+ * @param userAddress Wallet address, which contains tokens.
57
+ * @param token Token to check balance of.
58
+ * @param requiredAmount Required user balance in Eth units.
59
+ */
60
+ checkBalance(token: Token, requiredAmount: BigNumber, userAddress: string): Promise<void | never>;
61
+ /**
62
+ * Uses multicall to make many methods calls in several contracts.
63
+ * @param contractAbi Target contract abi.
64
+ * @param contractsData Contract addresses and methods data, containing methods' names and arguments.
65
+ */
66
+ abstract multicallContractsMethods<Output extends Web3PrimitiveType>(contractAbi: Abi, contractsData: {
67
+ contractAddress: string;
68
+ methodsData: MethodData[];
69
+ }[]): Promise<ContractMulticallResponse<Output>[][]>;
70
+ /**
71
+ * Gets last block number.
72
+ * @returns Block number.
73
+ */
74
+ abstract getBlockNumber(): Promise<number | {
75
+ blockNumber: number;
76
+ workchain: number;
77
+ }>;
78
+ needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string | BigNumber): Promise<boolean>;
79
+ handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
80
+ static getRandomBytes(bytes: number): string;
81
+ abstract read<T>(...args: unknown[]): Promise<T>;
82
+ abstract getTransactionStatus(srcTxHash: string): Promise<TxStatus>;
83
+ getSrcTxStatus(blockchain: BlockchainName, srcTxHash: string): Promise<TxStatus>;
84
+ }
@@ -0,0 +1,82 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractAdapter = void 0;
4
+ const viem_1 = require("viem");
5
+ const core_1 = require("@cryptorubic/core");
6
+ const insufficient_funds_error_1 = require("../../../errors/swap/insufficient-funds.error");
7
+ const tx_status_1 = require("../models/web3-public-models/tx-status");
8
+ const waitFor_1 = require("../utils/waitFor");
9
+ class AbstractAdapter {
10
+ set public(value) {
11
+ this._publicRef.public = value;
12
+ }
13
+ get public() {
14
+ if (!this._publicRef.public) {
15
+ const msg = `Trying to access undefined public client in ${this.blockchain} adapter.`;
16
+ this.logger?.customLog(msg);
17
+ throw new Error(msg);
18
+ }
19
+ return this._publicRef.public;
20
+ }
21
+ get publicRef() {
22
+ return this._publicRef;
23
+ }
24
+ get connected() {
25
+ return !!this._publicRef.public;
26
+ }
27
+ constructor(blockchain, logger) {
28
+ /**
29
+ * used to pass public pointer in signer constructor
30
+ */
31
+ this._publicRef = { public: null };
32
+ this.blockchain = blockchain;
33
+ if (logger) {
34
+ this.logger = logger;
35
+ }
36
+ }
37
+ /**
38
+ * Gets token info by address.
39
+ * @param tokenAddress Address of token.
40
+ * @param tokenFields Token's fields to get.
41
+ */
42
+ async callForTokenInfo(tokenAddress) {
43
+ return (await this.callForTokensInfo([tokenAddress]))[0];
44
+ }
45
+ /**
46
+ * Checks that user has enough balance.
47
+ * @param userAddress Wallet address, which contains tokens.
48
+ * @param token Token to check balance of.
49
+ * @param requiredAmount Required user balance in Eth units.
50
+ */
51
+ async checkBalance(token, requiredAmount, userAddress) {
52
+ const enoughBalance = await this.checkEnoughBalance(new core_1.TokenAmount({ ...token, tokenAmount: requiredAmount }), userAddress);
53
+ if (!enoughBalance) {
54
+ throw new insufficient_funds_error_1.InsufficientFundsError(token.symbol);
55
+ }
56
+ }
57
+ needPreswapAction(token, contractAddress, walletAddress, amount) {
58
+ return Promise.resolve(false);
59
+ }
60
+ handlePreswap(contractAddress, walletAddress, tokenAmount) {
61
+ return Promise.resolve();
62
+ }
63
+ static getRandomBytes(bytes) {
64
+ const randomBytes = crypto.getRandomValues(new Uint8Array(bytes));
65
+ return (0, viem_1.bytesToHex)(randomBytes);
66
+ }
67
+ async getSrcTxStatus(blockchain, srcTxHash) {
68
+ try {
69
+ const status = await this.getTransactionStatus(srcTxHash);
70
+ if (status === tx_status_1.TX_STATUS.FAIL && blockchain === core_1.BLOCKCHAIN_NAME.ZK_SYNC) {
71
+ const zkSyncAwarenessTime = 4000;
72
+ await (0, waitFor_1.waitFor)(zkSyncAwarenessTime);
73
+ return this.getTransactionStatus(srcTxHash);
74
+ }
75
+ return status;
76
+ }
77
+ catch {
78
+ return tx_status_1.TX_STATUS.PENDING;
79
+ }
80
+ }
81
+ }
82
+ exports.AbstractAdapter = AbstractAdapter;
@@ -0,0 +1,22 @@
1
+ import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
2
+ import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
3
+ export declare abstract class AbstractAdapterSigner<ClientWallet, SendTxParams, SendTxResponse> {
4
+ protected readonly httpClient: HttpClient;
5
+ protected readonly logger?: ICustomLogger | undefined;
6
+ protected readonly clientParams?: ClientAdaptersFactoryParams | undefined;
7
+ protected get apiUrl(): string;
8
+ private _walletAddress;
9
+ get walletAddress(): string;
10
+ private _wallet;
11
+ get wallet(): ClientWallet;
12
+ constructor(httpClient: HttpClient, logger?: ICustomLogger | undefined, clientParams?: ClientAdaptersFactoryParams | undefined);
13
+ abstract getBlockchainName(): Promise<BlockchainName | undefined>;
14
+ abstract sendTransaction(params: SendTxParams): Promise<SendTxResponse>;
15
+ abstract write(...args: unknown[]): Promise<string>;
16
+ /**
17
+ * Checks, that selected blockchain in wallet is equal to passed blockchain.
18
+ */
19
+ checkBlockchainCorrect(blockchainName: BlockchainName): Promise<void | never>;
20
+ setWalletAddress(newWalletAddress: string): void;
21
+ setWallet(wallet: ClientWallet): void;
22
+ }
@@ -0,0 +1,42 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractAdapterSigner = void 0;
4
+ const rubic_api_link_mapping_1 = require("../../../constants/rubic-api-link-mapping");
5
+ const wrong_network_error_1 = require("../../../../errors/swap/wrong-network.error");
6
+ class AbstractAdapterSigner {
7
+ get apiUrl() {
8
+ if (!this.clientParams?.envType) {
9
+ this.logger?.customError('clientParams.envType is not set for apiUrl call.');
10
+ throw new Error('clientParams.envType is not set for apiUrl call.');
11
+ }
12
+ const rubicApiLink = rubic_api_link_mapping_1.rubicApiLinkMapping[this.clientParams.envType];
13
+ return rubicApiLink ? rubicApiLink : 'https://dev1-api-v2.rubic.exchange';
14
+ }
15
+ get walletAddress() {
16
+ return this._walletAddress;
17
+ }
18
+ get wallet() {
19
+ return this._wallet;
20
+ }
21
+ constructor(httpClient, logger, clientParams) {
22
+ this.httpClient = httpClient;
23
+ this.logger = logger;
24
+ this.clientParams = clientParams;
25
+ }
26
+ /**
27
+ * Checks, that selected blockchain in wallet is equal to passed blockchain.
28
+ */
29
+ async checkBlockchainCorrect(blockchainName) {
30
+ const userBlockchainName = await this.getBlockchainName();
31
+ if (userBlockchainName !== blockchainName) {
32
+ throw new wrong_network_error_1.WrongNetworkError(blockchainName);
33
+ }
34
+ }
35
+ setWalletAddress(newWalletAddress) {
36
+ this._walletAddress = newWalletAddress;
37
+ }
38
+ setWallet(wallet) {
39
+ this._wallet = wallet;
40
+ }
41
+ }
42
+ exports.AbstractAdapterSigner = AbstractAdapterSigner;
@@ -0,0 +1 @@
1
+ export declare const possibleErrors: string[];
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.possibleErrors = void 0;
4
+ exports.possibleErrors = [
5
+ 'not authorized',
6
+ 'daily request count exceeded',
7
+ 'invalid json rpc response',
8
+ "we can't execute this request",
9
+ 'your account has been suspended',
10
+ 'account suspended, please top up to reenable',
11
+ 'your account has been suspended',
12
+ 'too many requests, we recommend you to use free api key',
13
+ 'origin not allowed'
14
+ ];
@@ -1,2 +1,2 @@
1
- import { AbiItem } from 'web3-utils';
1
+ import { AbiItem } from '../../../utils/models/abi-types';
2
2
  export declare const TRON_MULTICALL_ABI: AbiItem[];
@@ -0,0 +1,2 @@
1
+ import { Abi } from 'viem';
2
+ export declare const UNI_V3_PERMIT_2_ABI: Abi;