@cryptorubic/web3 0.15.0-alpha-stellar.0 → 1.0.0-alpha-rub-1103.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 (223) hide show
  1. package/package.json +3 -1
  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/{solana-adapter.d.ts → adapter-solana/solana-adapter.d.ts} +25 -15
  32. package/src/lib/adapter/adapters/{solana-adapter.js → adapter-solana/solana-adapter.js} +60 -38
  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 +4 -4
  42. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.d.ts +43 -0
  43. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.js +166 -0
  44. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.d.ts +32 -0
  45. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.js +104 -0
  46. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.d.ts +13 -0
  47. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.js +2 -0
  48. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.d.ts +4 -0
  49. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.js +2 -0
  50. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.d.ts +17 -0
  51. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +57 -0
  52. package/src/lib/adapter/adapters/adapter-tron/tron-adapter.d.ts +57 -0
  53. package/src/lib/adapter/adapters/{tron-adapter.js → adapter-tron/tron-adapter.js} +131 -66
  54. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.d.ts +2 -0
  55. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.js +20 -0
  56. package/src/lib/adapter/adapters/common/abstract-adapter.d.ts +84 -0
  57. package/src/lib/adapter/adapters/common/abstract-adapter.js +82 -0
  58. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.d.ts +22 -0
  59. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.js +42 -0
  60. package/src/lib/adapter/adapters/models/approve-adapter.d.ts +12 -8
  61. package/src/lib/adapter/adapters/models/approve-adapter.js +1 -1
  62. package/src/lib/adapter/adapters/models/basic-transaction-options.d.ts +1 -1
  63. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.d.ts +5 -0
  64. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.js +2 -0
  65. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.d.ts +4 -0
  66. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.js +2 -0
  67. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.d.ts +4 -0
  68. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.js +2 -0
  69. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.d.ts +18 -0
  70. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.js +2 -0
  71. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.js +2 -0
  72. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.d.ts +10 -0
  73. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.js +2 -0
  74. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.d.ts +5 -0
  75. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.js +2 -0
  76. package/src/lib/adapter/adapters/models/old-features-models/contract-params.d.ts +23 -0
  77. package/src/lib/adapter/adapters/models/old-features-models/contract-params.js +2 -0
  78. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.d.ts +32 -0
  79. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.js +2 -0
  80. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.d.ts +6 -0
  81. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.js +2 -0
  82. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.d.ts +5 -0
  83. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.js +2 -0
  84. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.d.ts +65 -0
  85. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.js +2 -0
  86. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.d.ts +8 -0
  87. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.js +2 -0
  88. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.d.ts +5 -0
  89. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.js +2 -0
  90. package/src/lib/adapter/adapters/models/web3-public-models/method-data.d.ts +4 -0
  91. package/src/lib/adapter/adapters/models/web3-public-models/method-data.js +2 -0
  92. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.d.ts +1 -0
  93. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.js +2 -0
  94. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.d.ts +10 -0
  95. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +12 -0
  96. package/src/lib/adapter/adapters/utils/errors.d.ts +2 -0
  97. package/src/lib/adapter/adapters/utils/errors.js +10 -0
  98. package/src/lib/adapter/adapters/utils/options.d.ts +10 -0
  99. package/src/lib/adapter/adapters/utils/options.js +59 -0
  100. package/src/lib/adapter/adapters/utils/waitFor.d.ts +1 -0
  101. package/src/lib/adapter/adapters/utils/waitFor.js +6 -0
  102. package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +15 -13
  103. package/src/lib/adapter/blockchain-adapter-factory.service.js +44 -61
  104. package/src/lib/adapter/constants/chain-configs/chain-configs.js +38 -56
  105. package/src/lib/adapter/constants/models/env-type.d.ts +1 -0
  106. package/src/lib/adapter/constants/models/env-type.js +2 -0
  107. package/src/lib/adapter/constants/models/solana-web3.d.ts +1 -1
  108. package/src/lib/adapter/constants/rubic-api-link-mapping.d.ts +2 -0
  109. package/src/lib/adapter/constants/rubic-api-link-mapping.js +16 -0
  110. package/src/lib/adapter/constants/viem-blockchain-mapping.js +0 -1
  111. package/src/lib/adapter/models/create-factory-params.d.ts +23 -0
  112. package/src/lib/adapter/models/create-factory-params.js +2 -0
  113. package/src/lib/errors/blockchain/deflation-token.error.d.ts +11 -0
  114. package/src/lib/errors/blockchain/deflation-token.error.js +16 -0
  115. package/src/lib/errors/blockchain/healthcheck.error.d.ts +8 -0
  116. package/src/lib/errors/blockchain/healthcheck.error.js +15 -0
  117. package/src/lib/errors/blockchain/invalid-address.error.d.ts +8 -0
  118. package/src/lib/errors/blockchain/invalid-address.error.js +15 -0
  119. package/src/lib/errors/blockchain/low-gas.error.d.ts +7 -0
  120. package/src/lib/errors/blockchain/low-gas.error.js +14 -0
  121. package/src/lib/errors/blockchain/transaction-reverted.error.d.ts +7 -0
  122. package/src/lib/errors/blockchain/transaction-reverted.error.js +14 -0
  123. package/src/lib/errors/blockchain/tron-insufficient-native-balance.d.ts +7 -0
  124. package/src/lib/errors/blockchain/tron-insufficient-native-balance.js +14 -0
  125. package/src/lib/errors/blockchain/tron-transaction-expired.d.ts +7 -0
  126. package/src/lib/errors/blockchain/tron-transaction-expired.js +14 -0
  127. package/src/lib/errors/blockchain/user-reject.error.d.ts +7 -0
  128. package/src/lib/errors/blockchain/user-reject.error.js +14 -0
  129. package/src/lib/errors/blockchain/wrong-from-address.error.d.ts +7 -0
  130. package/src/lib/errors/blockchain/wrong-from-address.error.js +14 -0
  131. package/src/lib/errors/blockchain/wrong-receiver-address.error.d.ts +7 -0
  132. package/src/lib/errors/blockchain/wrong-receiver-address.error.js +14 -0
  133. package/src/lib/errors/common/timeout.error.d.ts +4 -0
  134. package/src/lib/errors/common/timeout.error.js +12 -0
  135. package/src/lib/errors/common/tx-reverted-in-chain.error.d.ts +4 -0
  136. package/src/lib/errors/common/tx-reverted-in-chain.error.js +11 -0
  137. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.d.ts +7 -0
  138. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.js +14 -0
  139. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.d.ts +7 -0
  140. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.js +14 -0
  141. package/src/lib/errors/cross-chain/low-to-slippage.error.d.ts +6 -0
  142. package/src/lib/errors/cross-chain/low-to-slippage.error.js +10 -0
  143. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.d.ts +8 -0
  144. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.js +15 -0
  145. package/src/lib/errors/cross-chain/too-low-amount.error.d.ts +7 -0
  146. package/src/lib/errors/cross-chain/too-low-amount.error.js +14 -0
  147. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.d.ts +4 -0
  148. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.js +11 -0
  149. package/src/lib/errors/cross-chain/updated-rates-error.d.ts +10 -0
  150. package/src/lib/errors/cross-chain/updated-rates-error.js +17 -0
  151. package/src/lib/errors/models/rubic-api-error.d.ts +21 -0
  152. package/src/lib/errors/models/rubic-api-error.js +2 -0
  153. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.d.ts +7 -0
  154. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.js +14 -0
  155. package/src/lib/errors/proxy/unapproved-contract-error.d.ts +8 -0
  156. package/src/lib/errors/proxy/unapproved-contract-error.js +15 -0
  157. package/src/lib/errors/proxy/unapproved-method-error.d.ts +8 -0
  158. package/src/lib/errors/proxy/unapproved-method-error.js +15 -0
  159. package/src/lib/errors/proxy/unlisted-error.d.ts +9 -0
  160. package/src/lib/errors/proxy/unlisted-error.js +16 -0
  161. package/src/lib/errors/rubic-sdk.error.d.ts +6 -0
  162. package/src/lib/errors/rubic-sdk.error.js +13 -0
  163. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.d.ts +7 -0
  164. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.js +14 -0
  165. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.d.ts +8 -0
  166. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.js +15 -0
  167. package/src/lib/errors/swap/insufficient-funds-oneinch.error.d.ts +9 -0
  168. package/src/lib/errors/swap/insufficient-funds-oneinch.error.js +15 -0
  169. package/src/lib/errors/swap/insufficient-funds.error.d.ts +11 -0
  170. package/src/lib/errors/swap/insufficient-funds.error.js +18 -0
  171. package/src/lib/errors/swap/insufficient-liquidity.error.d.ts +7 -0
  172. package/src/lib/errors/swap/insufficient-liquidity.error.js +14 -0
  173. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.d.ts +7 -0
  174. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.js +14 -0
  175. package/src/lib/errors/swap/low-slippage-deflationary-token.error.d.ts +7 -0
  176. package/src/lib/errors/swap/low-slippage-deflationary-token.error.js +14 -0
  177. package/src/lib/errors/swap/low-slippage.error.d.ts +8 -0
  178. package/src/lib/errors/swap/low-slippage.error.js +15 -0
  179. package/src/lib/errors/swap/max-amount.error.d.ts +7 -0
  180. package/src/lib/errors/swap/max-amount.error.js +14 -0
  181. package/src/lib/errors/swap/max-decimals.error.d.ts +5 -0
  182. package/src/lib/errors/swap/max-decimals.error.js +12 -0
  183. package/src/lib/errors/swap/min-amount.error.d.ts +7 -0
  184. package/src/lib/errors/swap/min-amount.error.js +14 -0
  185. package/src/lib/errors/swap/no-linked-account-erros.d.ts +4 -0
  186. package/src/lib/errors/swap/no-linked-account-erros.js +11 -0
  187. package/src/lib/errors/swap/not-supported-blockchain.d.ts +8 -0
  188. package/src/lib/errors/swap/not-supported-blockchain.js +15 -0
  189. package/src/lib/errors/swap/not-supported-region.d.ts +7 -0
  190. package/src/lib/errors/swap/not-supported-region.js +14 -0
  191. package/src/lib/errors/swap/not-supported-tokens.error.d.ts +7 -0
  192. package/src/lib/errors/swap/not-supported-tokens.error.js +14 -0
  193. package/src/lib/errors/swap/not-whitelisted-provider.error.d.ts +10 -0
  194. package/src/lib/errors/swap/not-whitelisted-provider.error.js +17 -0
  195. package/src/lib/errors/swap/simulation-failed.error.d.ts +6 -0
  196. package/src/lib/errors/swap/simulation-failed.error.js +12 -0
  197. package/src/lib/errors/swap/swap-error-on-provider-side.d.ts +7 -0
  198. package/src/lib/errors/swap/swap-error-on-provider-side.js +14 -0
  199. package/src/lib/errors/swap/swap-request.error.d.ts +7 -0
  200. package/src/lib/errors/swap/swap-request.error.js +14 -0
  201. package/src/lib/errors/swap/trade-expired.error.d.ts +4 -0
  202. package/src/lib/errors/swap/trade-expired.error.js +11 -0
  203. package/src/lib/errors/swap/unnecessary-approve.error.d.ts +7 -0
  204. package/src/lib/errors/swap/unnecessary-approve.error.js +14 -0
  205. package/src/lib/errors/swap/wallet-not-connected.error.d.ts +8 -0
  206. package/src/lib/errors/swap/wallet-not-connected.error.js +15 -0
  207. package/src/lib/errors/swap/wrong-network.error.d.ts +10 -0
  208. package/src/lib/errors/swap/wrong-network.error.js +16 -0
  209. package/src/lib/utils/constants/web3-pure-store.js +10 -5
  210. package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
  211. package/src/lib/utils/web3-types/zcash-web3-pure.d.ts +5 -0
  212. package/src/lib/utils/web3-types/zcash-web3-pure.js +17 -0
  213. package/src/lib/adapter/adapters/abstract-adapter.d.ts +0 -23
  214. package/src/lib/adapter/adapters/abstract-adapter.js +0 -59
  215. package/src/lib/adapter/adapters/bitcoin-adapter.d.ts +0 -18
  216. package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -59
  217. package/src/lib/adapter/adapters/sui-adapter.d.ts +0 -17
  218. package/src/lib/adapter/adapters/ton-adapter.d.ts +0 -22
  219. package/src/lib/adapter/adapters/ton-adapter.js +0 -100
  220. package/src/lib/adapter/adapters/tron-adapter.d.ts +0 -37
  221. /package/src/lib/adapter/adapters/{models/gas-price.js → adapter-bitcoin/models/btc-send-tx-params.js} +0 -0
  222. /package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +0 -0
  223. /package/src/lib/adapter/adapters/models/{gas-price.d.ts → evm-web3-public-models/gas-price.d.ts} +0 -0
@@ -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;
@@ -1,9 +1,11 @@
1
1
  import { BlockchainName, TokenAmount } from '@cryptorubic/core';
2
2
  import { AllowanceInfo } from './common-types';
3
- import { AbstractAdapter } from '../abstract-adapter';
4
3
  import { EvmTransactionConfig } from '../../../utils/models/evm-transaction-config';
5
4
  import { TronTransactionConfig } from '../../../utils/models/tron-transaction-config';
6
- export interface ApproveAdapter<T> extends AbstractAdapter<any, any, BlockchainName> {
5
+ import { AbstractAdapter } from '../common/abstract-adapter';
6
+ import BigNumber from 'bignumber.js';
7
+ import { BasicSendTransactionOptions } from './basic-transaction-options';
8
+ export interface ApprovableAdapter<T> extends AbstractAdapter<any, any, BlockchainName, {}> {
7
9
  /**
8
10
  * @param fromTokenAddress erc20 address of checked token
9
11
  * @param walletAddress owner wallet address
@@ -27,11 +29,13 @@ export interface ApproveAdapter<T> extends AbstractAdapter<any, any, BlockchainN
27
29
  */
28
30
  needApprove(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
29
31
  /**
30
- * Get data for tokens approve
31
- * @param tokenAddress erc20 token address
32
- * @param spenderAddress spender address
33
- * @param amount amount in non wei
32
+ * Executes approve method in ERC-20 token contract.
33
+ * @param tokenAddress Address of the smart-contract corresponding to the token.
34
+ * @param spenderAddress Wallet or contract address to approve.
35
+ * @param amount Token amount to approve in wei.
36
+ * @param [options] Additional options.
37
+ * @returns Approval transaction receipt.
34
38
  */
35
- approve(walletAddress: string, tokenAddress: string, spenderAddress: string, amount?: string): Promise<string>;
39
+ approveTokens(tokenAddress: string, spenderAddress: string, amount: BigNumber | 'infinity', options: BasicSendTransactionOptions): Promise<string>;
36
40
  }
37
- export declare function isApprovableAdapter(adapter: AbstractAdapter<any, any, BlockchainName>): adapter is ApproveAdapter<EvmTransactionConfig | TronTransactionConfig>;
41
+ export declare function isApprovableAdapter(adapter: AbstractAdapter<any, any, BlockchainName, {}>): adapter is ApprovableAdapter<EvmTransactionConfig | TronTransactionConfig>;
@@ -2,5 +2,5 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.isApprovableAdapter = isApprovableAdapter;
4
4
  function isApprovableAdapter(adapter) {
5
- return 'needApprove' in adapter && 'approve' in adapter && 'getAllowance' in adapter && 'encodeApprove' in adapter;
5
+ return 'needApprove' in adapter && 'approveTokens' in adapter && 'getAllowance' in adapter && 'encodeApprove' in adapter;
6
6
  }
@@ -1,4 +1,4 @@
1
- export interface BasicTransactionOptions {
1
+ export interface BasicSendTransactionOptions {
2
2
  /**
3
3
  * Callback to be called, when user confirm swap transaction.
4
4
  * @param hash Transaction hash.
@@ -0,0 +1,5 @@
1
+ export interface BatchCall {
2
+ to: string;
3
+ data: string;
4
+ value?: string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface EvmCall {
2
+ target: string;
3
+ callData: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface EvmMulticallResponse {
2
+ success: boolean;
3
+ returnData: string;
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ export type ViemGasPrice = EIP1559ViemGas & SingleViemGasPrice;
2
+ export interface EIP1559ViemGas {
3
+ /**
4
+ * EIP-1559 Block base fee.
5
+ */
6
+ baseFee?: bigint;
7
+ /**
8
+ * EIP-1559 Transaction maximum fee.
9
+ */
10
+ maxFeePerGas?: bigint;
11
+ /**
12
+ * EIP-1559 Transaction miner's tip.
13
+ */
14
+ maxPriorityFeePerGas?: bigint;
15
+ }
16
+ export interface SingleViemGasPrice {
17
+ gasPrice?: bigint;
18
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ import BigNumber from 'bignumber.js';
2
+ export interface Permit2AllowanceContractResponse {
3
+ amount: string;
4
+ expiration: string;
5
+ nonce: string;
6
+ }
7
+ type AllowanceBN = BigNumber;
8
+ type ExpirationMS = string;
9
+ export type Permit2AllowanceData = [AllowanceBN, ExpirationMS];
10
+ export {};
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface RpcResponse<T> {
2
+ id: number;
3
+ result: T;
4
+ error: unknown;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,23 @@
1
+ import { AbiItem } from '../../../../utils/models/abi-types';
2
+ export interface ContractParams {
3
+ /**
4
+ * Contract address in source network.
5
+ */
6
+ contractAddress: string;
7
+ /**
8
+ * Contract abi in source network.
9
+ */
10
+ contractAbi: AbiItem[];
11
+ /**
12
+ * Method's name to call in contract.
13
+ */
14
+ methodName: string;
15
+ /**
16
+ * Method's arguments to call method with.
17
+ */
18
+ methodArguments: unknown[];
19
+ /**
20
+ * Value in Wei to send with transaction.
21
+ */
22
+ value: string;
23
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,32 @@
1
+ import { EIP1559Gas, SingleGasPrice } from '../evm-web3-public-models/gas-price';
2
+ /**
3
+ * Stores options for transaction in `encode` function.
4
+ */
5
+ export interface EncodeTransactionOptions {
6
+ /**
7
+ * User wallet address to send swap transaction.
8
+ */
9
+ fromAddress: string;
10
+ receiverAddress?: string;
11
+ /**
12
+ * Transaction gas price options.
13
+ */
14
+ gasPriceOptions?: EIP1559Gas | SingleGasPrice;
15
+ /**
16
+ * Evm-transaction gas limit.
17
+ */
18
+ gasLimit?: string;
19
+ /**
20
+ * Uniquely for Uniswap v2, defines which method to use - regular or supporting fee.
21
+ */
22
+ supportFee?: boolean;
23
+ /**
24
+ * Tron-transaction fee limit.
25
+ */
26
+ feeLimit?: number;
27
+ referrer?: string;
28
+ skipAmountCheck?: boolean;
29
+ useCacheData?: boolean;
30
+ refundAddress?: string;
31
+ testMode?: boolean;
32
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,6 @@
1
+ export type IsDeflationToken = {
2
+ isDeflation: false;
3
+ } | {
4
+ isDeflation: true;
5
+ isWhitelisted: boolean;
6
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ export interface nonEvmChainAddressCorrectResponse {
2
+ isActivated: null;
3
+ result: boolean;
4
+ message: null | string;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,65 @@
1
+ import { ErrorInterface } from '@cryptorubic/core';
2
+ import { EIP1559Gas, SingleGasPrice } from '../evm-web3-public-models/gas-price';
3
+ export interface SwapTransactionOptions {
4
+ /**
5
+ * Callback to be called, when user confirm swap transaction.
6
+ * @param hash Transaction hash.
7
+ */
8
+ onConfirm?: (hash: string) => void;
9
+ /**
10
+ * Callback to be called, when user confirm approve transaction.
11
+ * @param hash Transaction hash.
12
+ */
13
+ onApprove?: (hash: string | null) => void;
14
+ /**
15
+ * Callback to be called, when swap warning occurs.
16
+ * @param warnings
17
+ */
18
+ onWarning?: (warnings: ErrorInterface[]) => void;
19
+ /**
20
+ * Tokens receiver address.
21
+ */
22
+ receiverAddress?: string;
23
+ /**
24
+ * Transaction gas price options.
25
+ */
26
+ gasPriceOptions?: EIP1559Gas | SingleGasPrice;
27
+ /**
28
+ * Evm-transaction gas limit.
29
+ */
30
+ gasLimit?: string;
31
+ /**
32
+ * Approve evm-transaction gas limit.
33
+ * Will be used for approve transaction, if it is called before swap.
34
+ */
35
+ approveGasLimit?: string;
36
+ /**
37
+ * Tron-transaction fee limit.
38
+ */
39
+ feeLimit?: number;
40
+ /**
41
+ * Approve tron-transaction fee limit.
42
+ * Will be used for approve transaction, if it is called before swap.
43
+ */
44
+ approveFeeLimit?: number;
45
+ testMode?: boolean;
46
+ useCacheData?: boolean;
47
+ skipAmountCheck?: boolean;
48
+ referrer?: string;
49
+ /**
50
+ * Use in case of eip-155
51
+ */
52
+ useEip155?: boolean;
53
+ /**
54
+ * Address for refund assets if error occurs
55
+ */
56
+ refundAddress?: string;
57
+ solanaSponsorParams?: {
58
+ tradeId: string;
59
+ feePayer: string;
60
+ };
61
+ /**
62
+ * gasLimit multiplier (to change ratio for specific chain)
63
+ */
64
+ gasLimitRatio?: number;
65
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,8 @@
1
+ import { TxStatus } from '../web3-public-models/tx-status';
2
+ export interface TxStatusData {
3
+ status: TxStatus;
4
+ hash: string | null;
5
+ extraInfo?: {
6
+ mesonSwapId: string;
7
+ };
8
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,5 @@
1
+ import { Web3PrimitiveType } from '../../../../utils/models/primitive-types';
2
+ export interface ContractMulticallResponse<Output extends Web3PrimitiveType> {
3
+ success: boolean;
4
+ output: Output | null;
5
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,4 @@
1
+ export interface MethodData {
2
+ methodName: string;
3
+ methodArguments: unknown[];
4
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1 @@
1
+ export type SupportedTokenField = 'decimals' | 'symbol' | 'name' | 'image';
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,10 @@
1
+ export declare const TX_STATUS: {
2
+ readonly PENDING: "PENDING";
3
+ readonly SUCCESS: "SUCCESS";
4
+ readonly FAIL: "FAIL";
5
+ readonly FALLBACK: "FALLBACK";
6
+ readonly REVERT: "REVERT";
7
+ readonly UNKNOWN: "UNKNOWN";
8
+ readonly READY_TO_CLAIM: "READY_TO_CLAIM";
9
+ };
10
+ export type TxStatus = (typeof TX_STATUS)[keyof typeof TX_STATUS];
@@ -0,0 +1,12 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.TX_STATUS = void 0;
4
+ exports.TX_STATUS = {
5
+ PENDING: 'PENDING',
6
+ SUCCESS: 'SUCCESS',
7
+ FAIL: 'FAIL',
8
+ FALLBACK: 'FALLBACK',
9
+ REVERT: 'REVERT',
10
+ UNKNOWN: 'UNKNOWN',
11
+ READY_TO_CLAIM: 'READY_TO_CLAIM'
12
+ };
@@ -0,0 +1,2 @@
1
+ import { RubicSdkError } from '../../../errors/rubic-sdk.error';
2
+ export declare function parseError(err: unknown, defaultMessage?: string): RubicSdkError;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseError = parseError;
4
+ const rubic_sdk_error_1 = require("../../../errors/rubic-sdk.error");
5
+ function parseError(err, defaultMessage) {
6
+ if (err instanceof rubic_sdk_error_1.RubicSdkError) {
7
+ return err;
8
+ }
9
+ return new rubic_sdk_error_1.RubicSdkError(err?.message || defaultMessage || 'Unknown error');
10
+ }
@@ -0,0 +1,10 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { EvmTransactionOptions } from '../adapter-evm/models/evm-send-tx-params';
3
+ import { SwapTransactionOptions } from '../models/old-features-models/swap-transaction-options';
4
+ import { EIP1559ViemGas, SingleViemGasPrice } from '../models/evm-web3-public-models/gas-price-viem';
5
+ import { EIP1559Gas, SingleGasPrice } from '../models/evm-web3-public-models/gas-price';
6
+ export declare function stringifyAmount(amount: number | string | BigNumber, multiplier?: number): string;
7
+ export declare function combineOptions<T extends object>(options: Partial<T> | undefined, defaultOptions: T): T;
8
+ export declare function deadlineMinutesTimestamp(deadlineMinutes: number): number;
9
+ export declare function getGasOptions(options: SwapTransactionOptions | EvmTransactionOptions): EIP1559Gas | SingleGasPrice | Record<never, never>;
10
+ export declare function getViemGasOptions(options: SwapTransactionOptions | EvmTransactionOptions): EIP1559ViemGas | SingleViemGasPrice | Record<never, never>;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.stringifyAmount = stringifyAmount;
4
+ exports.combineOptions = combineOptions;
5
+ exports.deadlineMinutesTimestamp = deadlineMinutesTimestamp;
6
+ exports.getGasOptions = getGasOptions;
7
+ exports.getViemGasOptions = getViemGasOptions;
8
+ const bignumber_js_1 = require("bignumber.js");
9
+ const rubic_sdk_error_1 = require("../../../errors/rubic-sdk.error");
10
+ function stringifyAmount(amount, multiplier = 1) {
11
+ const bnAmount = new bignumber_js_1.default(amount);
12
+ if (!bnAmount.isInteger()) {
13
+ throw new rubic_sdk_error_1.RubicSdkError(`Value ${amount} is not integer`);
14
+ }
15
+ return bnAmount.multipliedBy(multiplier).toFixed(0);
16
+ }
17
+ function combineOptions(options, defaultOptions) {
18
+ return {
19
+ ...defaultOptions,
20
+ ...options
21
+ };
22
+ }
23
+ function deadlineMinutesTimestamp(deadlineMinutes) {
24
+ return Math.floor(Date.now() / 1000 + 60 * deadlineMinutes);
25
+ }
26
+ function getGasOptions(options) {
27
+ const { gasPriceOptions } = options;
28
+ if (!gasPriceOptions)
29
+ return {};
30
+ if ('gasPrice' in gasPriceOptions && gasPriceOptions.gasPrice) {
31
+ return {
32
+ gasPrice: stringifyAmount(gasPriceOptions.gasPrice)
33
+ };
34
+ }
35
+ if ('maxPriorityFeePerGas' in gasPriceOptions && gasPriceOptions.maxPriorityFeePerGas && gasPriceOptions.maxFeePerGas) {
36
+ return {
37
+ maxPriorityFeePerGas: stringifyAmount(gasPriceOptions.maxPriorityFeePerGas),
38
+ maxFeePerGas: stringifyAmount(gasPriceOptions.maxFeePerGas)
39
+ };
40
+ }
41
+ return {};
42
+ }
43
+ function getViemGasOptions(options) {
44
+ const { gasPriceOptions } = options;
45
+ if (!gasPriceOptions)
46
+ return {};
47
+ if ('gasPrice' in gasPriceOptions && gasPriceOptions.gasPrice) {
48
+ return {
49
+ gasPrice: BigInt(gasPriceOptions.gasPrice)
50
+ };
51
+ }
52
+ if ('maxPriorityFeePerGas' in gasPriceOptions && gasPriceOptions.maxPriorityFeePerGas && gasPriceOptions.maxFeePerGas) {
53
+ return {
54
+ maxPriorityFeePerGas: BigInt(gasPriceOptions.maxPriorityFeePerGas),
55
+ maxFeePerGas: BigInt(gasPriceOptions.maxFeePerGas)
56
+ };
57
+ }
58
+ return {};
59
+ }
@@ -0,0 +1 @@
1
+ export declare function waitFor(milliseconds: number): Promise<void>;
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.waitFor = waitFor;
4
+ async function waitFor(milliseconds) {
5
+ return new Promise((resolve) => setTimeout(resolve, milliseconds));
6
+ }