@cryptorubic/web3 0.15.0-alpha-rub-1045.0 → 1.0.0-alpha-rub-1044.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 (224) hide show
  1. package/README.md +1 -1
  2. package/package.json +3 -1
  3. package/src/index.d.ts +130 -22
  4. package/src/index.js +130 -20
  5. package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.d.ts +38 -0
  6. package/src/lib/adapter/adapters/{bitcoin-adapter.js → adapter-bitcoin/bitcoin-adapter.js} +35 -13
  7. package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-send-tx-params.d.ts +5 -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/{evm-adapter.js → adapter-evm/evm-adapter.js} +215 -87
  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 +268 -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/{utils → adapter-solana/services}/solana-tokens-service.d.ts +1 -1
  29. package/src/lib/adapter/adapters/{utils → adapter-solana/services}/solana-tokens-service.js +2 -2
  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/{solana-adapter.d.ts → adapter-solana/solana-adapter.d.ts} +25 -15
  33. package/src/lib/adapter/adapters/{solana-adapter.js → adapter-solana/solana-adapter.js} +60 -38
  34. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.d.ts +8 -0
  35. package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.js +2 -0
  36. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.d.ts +17 -0
  37. package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.js +55 -0
  38. package/src/lib/adapter/adapters/adapter-sui/sui-adapter.d.ts +32 -0
  39. package/src/lib/adapter/adapters/{sui-adapter.js → adapter-sui/sui-adapter.js} +45 -9
  40. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.d.ts +26 -0
  41. package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.js +2 -0
  42. package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.d.ts +4 -4
  43. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.d.ts +43 -0
  44. package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.js +166 -0
  45. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.d.ts +32 -0
  46. package/src/lib/adapter/adapters/adapter-ton/ton-adapter.js +104 -0
  47. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.d.ts +13 -0
  48. package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.js +2 -0
  49. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.d.ts +4 -0
  50. package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.js +2 -0
  51. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.d.ts +17 -0
  52. package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +57 -0
  53. package/src/lib/adapter/adapters/adapter-tron/tron-adapter.d.ts +57 -0
  54. package/src/lib/adapter/adapters/{tron-adapter.js → adapter-tron/tron-adapter.js} +131 -66
  55. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.d.ts +2 -0
  56. package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.js +20 -0
  57. package/src/lib/adapter/adapters/common/abstract-adapter.d.ts +84 -0
  58. package/src/lib/adapter/adapters/common/abstract-adapter.js +82 -0
  59. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.d.ts +22 -0
  60. package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.js +42 -0
  61. package/src/lib/adapter/adapters/models/approve-adapter.d.ts +12 -8
  62. package/src/lib/adapter/adapters/models/approve-adapter.js +1 -1
  63. package/src/lib/adapter/adapters/models/basic-transaction-options.d.ts +1 -1
  64. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.d.ts +5 -0
  65. package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.js +2 -0
  66. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.d.ts +4 -0
  67. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.js +2 -0
  68. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.d.ts +4 -0
  69. package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.js +2 -0
  70. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.d.ts +18 -0
  71. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.js +2 -0
  72. package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.js +2 -0
  73. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.d.ts +10 -0
  74. package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.js +2 -0
  75. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.d.ts +5 -0
  76. package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.js +2 -0
  77. package/src/lib/adapter/adapters/models/old-features-models/contract-params.d.ts +23 -0
  78. package/src/lib/adapter/adapters/models/old-features-models/contract-params.js +2 -0
  79. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.d.ts +32 -0
  80. package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.js +2 -0
  81. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.d.ts +6 -0
  82. package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.js +2 -0
  83. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.d.ts +5 -0
  84. package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.js +2 -0
  85. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.d.ts +65 -0
  86. package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.js +2 -0
  87. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.d.ts +8 -0
  88. package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.js +2 -0
  89. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.d.ts +5 -0
  90. package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.js +2 -0
  91. package/src/lib/adapter/adapters/models/web3-public-models/method-data.d.ts +4 -0
  92. package/src/lib/adapter/adapters/models/web3-public-models/method-data.js +2 -0
  93. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.d.ts +1 -0
  94. package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.js +2 -0
  95. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.d.ts +10 -0
  96. package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +12 -0
  97. package/src/lib/adapter/adapters/utils/errors.d.ts +2 -0
  98. package/src/lib/adapter/adapters/utils/errors.js +10 -0
  99. package/src/lib/adapter/adapters/utils/options.d.ts +10 -0
  100. package/src/lib/adapter/adapters/utils/options.js +59 -0
  101. package/src/lib/adapter/adapters/utils/waitFor.d.ts +1 -0
  102. package/src/lib/adapter/adapters/utils/waitFor.js +6 -0
  103. package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +15 -13
  104. package/src/lib/adapter/blockchain-adapter-factory.service.js +44 -61
  105. package/src/lib/adapter/constants/chain-configs/chain-configs.js +65 -56
  106. package/src/lib/adapter/constants/models/env-type.d.ts +1 -0
  107. package/src/lib/adapter/constants/models/env-type.js +2 -0
  108. package/src/lib/adapter/constants/models/solana-web3.d.ts +1 -1
  109. package/src/lib/adapter/constants/rubic-api-link-mapping.d.ts +2 -0
  110. package/src/lib/adapter/constants/rubic-api-link-mapping.js +16 -0
  111. package/src/lib/adapter/constants/viem-blockchain-mapping.js +2 -2
  112. package/src/lib/adapter/models/create-factory-params.d.ts +23 -0
  113. package/src/lib/adapter/models/create-factory-params.js +2 -0
  114. package/src/lib/errors/blockchain/deflation-token.error.d.ts +11 -0
  115. package/src/lib/errors/blockchain/deflation-token.error.js +16 -0
  116. package/src/lib/errors/blockchain/healthcheck.error.d.ts +8 -0
  117. package/src/lib/errors/blockchain/healthcheck.error.js +15 -0
  118. package/src/lib/errors/blockchain/invalid-address.error.d.ts +8 -0
  119. package/src/lib/errors/blockchain/invalid-address.error.js +15 -0
  120. package/src/lib/errors/blockchain/low-gas.error.d.ts +7 -0
  121. package/src/lib/errors/blockchain/low-gas.error.js +14 -0
  122. package/src/lib/errors/blockchain/transaction-reverted.error.d.ts +7 -0
  123. package/src/lib/errors/blockchain/transaction-reverted.error.js +14 -0
  124. package/src/lib/errors/blockchain/tron-insufficient-native-balance.d.ts +7 -0
  125. package/src/lib/errors/blockchain/tron-insufficient-native-balance.js +14 -0
  126. package/src/lib/errors/blockchain/tron-transaction-expired.d.ts +7 -0
  127. package/src/lib/errors/blockchain/tron-transaction-expired.js +14 -0
  128. package/src/lib/errors/blockchain/user-reject.error.d.ts +7 -0
  129. package/src/lib/errors/blockchain/user-reject.error.js +14 -0
  130. package/src/lib/errors/blockchain/wrong-from-address.error.d.ts +7 -0
  131. package/src/lib/errors/blockchain/wrong-from-address.error.js +14 -0
  132. package/src/lib/errors/blockchain/wrong-receiver-address.error.d.ts +7 -0
  133. package/src/lib/errors/blockchain/wrong-receiver-address.error.js +14 -0
  134. package/src/lib/errors/common/timeout.error.d.ts +4 -0
  135. package/src/lib/errors/common/timeout.error.js +12 -0
  136. package/src/lib/errors/common/tx-reverted-in-chain.error.d.ts +4 -0
  137. package/src/lib/errors/common/tx-reverted-in-chain.error.js +11 -0
  138. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.d.ts +7 -0
  139. package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.js +14 -0
  140. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.d.ts +7 -0
  141. package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.js +14 -0
  142. package/src/lib/errors/cross-chain/low-to-slippage.error.d.ts +6 -0
  143. package/src/lib/errors/cross-chain/low-to-slippage.error.js +10 -0
  144. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.d.ts +8 -0
  145. package/src/lib/errors/cross-chain/max-gas-price-overflow.error.js +15 -0
  146. package/src/lib/errors/cross-chain/too-low-amount.error.d.ts +7 -0
  147. package/src/lib/errors/cross-chain/too-low-amount.error.js +14 -0
  148. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.d.ts +4 -0
  149. package/src/lib/errors/cross-chain/unsupported-receiver-address.error.js +11 -0
  150. package/src/lib/errors/cross-chain/updated-rates-error.d.ts +10 -0
  151. package/src/lib/errors/cross-chain/updated-rates-error.js +17 -0
  152. package/src/lib/errors/models/rubic-api-error.d.ts +21 -0
  153. package/src/lib/errors/models/rubic-api-error.js +2 -0
  154. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.d.ts +7 -0
  155. package/src/lib/errors/on-chain/on-chain-is-unavailable.error.js +14 -0
  156. package/src/lib/errors/proxy/unapproved-contract-error.d.ts +8 -0
  157. package/src/lib/errors/proxy/unapproved-contract-error.js +15 -0
  158. package/src/lib/errors/proxy/unapproved-method-error.d.ts +8 -0
  159. package/src/lib/errors/proxy/unapproved-method-error.js +15 -0
  160. package/src/lib/errors/proxy/unlisted-error.d.ts +9 -0
  161. package/src/lib/errors/proxy/unlisted-error.js +16 -0
  162. package/src/lib/errors/rubic-sdk.error.d.ts +6 -0
  163. package/src/lib/errors/rubic-sdk.error.js +13 -0
  164. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.d.ts +7 -0
  165. package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.js +14 -0
  166. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.d.ts +8 -0
  167. package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.js +15 -0
  168. package/src/lib/errors/swap/insufficient-funds-oneinch.error.d.ts +9 -0
  169. package/src/lib/errors/swap/insufficient-funds-oneinch.error.js +15 -0
  170. package/src/lib/errors/swap/insufficient-funds.error.d.ts +11 -0
  171. package/src/lib/errors/swap/insufficient-funds.error.js +18 -0
  172. package/src/lib/errors/swap/insufficient-liquidity.error.d.ts +7 -0
  173. package/src/lib/errors/swap/insufficient-liquidity.error.js +14 -0
  174. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.d.ts +7 -0
  175. package/src/lib/errors/swap/lifi-pair-is-unavailable.error.js +14 -0
  176. package/src/lib/errors/swap/low-slippage-deflationary-token.error.d.ts +7 -0
  177. package/src/lib/errors/swap/low-slippage-deflationary-token.error.js +14 -0
  178. package/src/lib/errors/swap/low-slippage.error.d.ts +8 -0
  179. package/src/lib/errors/swap/low-slippage.error.js +15 -0
  180. package/src/lib/errors/swap/max-amount.error.d.ts +7 -0
  181. package/src/lib/errors/swap/max-amount.error.js +14 -0
  182. package/src/lib/errors/swap/max-decimals.error.d.ts +5 -0
  183. package/src/lib/errors/swap/max-decimals.error.js +12 -0
  184. package/src/lib/errors/swap/min-amount.error.d.ts +7 -0
  185. package/src/lib/errors/swap/min-amount.error.js +14 -0
  186. package/src/lib/errors/swap/no-linked-account-erros.d.ts +4 -0
  187. package/src/lib/errors/swap/no-linked-account-erros.js +11 -0
  188. package/src/lib/errors/swap/not-supported-blockchain.d.ts +8 -0
  189. package/src/lib/errors/swap/not-supported-blockchain.js +15 -0
  190. package/src/lib/errors/swap/not-supported-region.d.ts +7 -0
  191. package/src/lib/errors/swap/not-supported-region.js +14 -0
  192. package/src/lib/errors/swap/not-supported-tokens.error.d.ts +7 -0
  193. package/src/lib/errors/swap/not-supported-tokens.error.js +14 -0
  194. package/src/lib/errors/swap/not-whitelisted-provider.error.d.ts +10 -0
  195. package/src/lib/errors/swap/not-whitelisted-provider.error.js +17 -0
  196. package/src/lib/errors/swap/simulation-failed.error.d.ts +6 -0
  197. package/src/lib/errors/swap/simulation-failed.error.js +12 -0
  198. package/src/lib/errors/swap/swap-error-on-provider-side.d.ts +7 -0
  199. package/src/lib/errors/swap/swap-error-on-provider-side.js +14 -0
  200. package/src/lib/errors/swap/swap-request.error.d.ts +7 -0
  201. package/src/lib/errors/swap/swap-request.error.js +14 -0
  202. package/src/lib/errors/swap/trade-expired.error.d.ts +4 -0
  203. package/src/lib/errors/swap/trade-expired.error.js +11 -0
  204. package/src/lib/errors/swap/unnecessary-approve.error.d.ts +7 -0
  205. package/src/lib/errors/swap/unnecessary-approve.error.js +14 -0
  206. package/src/lib/errors/swap/wallet-not-connected.error.d.ts +8 -0
  207. package/src/lib/errors/swap/wallet-not-connected.error.js +15 -0
  208. package/src/lib/errors/swap/wrong-network.error.d.ts +10 -0
  209. package/src/lib/errors/swap/wrong-network.error.js +16 -0
  210. package/src/lib/utils/constants/web3-pure-store.js +10 -5
  211. package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
  212. package/src/lib/utils/web3-types/zcash-web3-pure.d.ts +5 -0
  213. package/src/lib/utils/web3-types/zcash-web3-pure.js +17 -0
  214. package/src/lib/adapter/adapters/abstract-adapter.d.ts +0 -23
  215. package/src/lib/adapter/adapters/abstract-adapter.js +0 -59
  216. package/src/lib/adapter/adapters/bitcoin-adapter.d.ts +0 -18
  217. package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -59
  218. package/src/lib/adapter/adapters/sui-adapter.d.ts +0 -17
  219. package/src/lib/adapter/adapters/ton-adapter.d.ts +0 -22
  220. package/src/lib/adapter/adapters/ton-adapter.js +0 -100
  221. package/src/lib/adapter/adapters/tron-adapter.d.ts +0 -37
  222. /package/src/lib/adapter/adapters/{models/gas-price.js → adapter-bitcoin/models/btc-send-tx-params.js} +0 -0
  223. /package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +0 -0
  224. /package/src/lib/adapter/adapters/models/{gas-price.d.ts → evm-web3-public-models/gas-price.d.ts} +0 -0
@@ -0,0 +1,268 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.EvmAdapterSigner = void 0;
4
+ const core_1 = require("@cryptorubic/core");
5
+ const bignumber_js_1 = require("bignumber.js");
6
+ const viem_1 = require("viem");
7
+ const actions_1 = require("viem/actions");
8
+ const tx_reverted_in_chain_error_1 = require("../../../../errors/common/tx-reverted-in-chain.error");
9
+ const rubic_sdk_error_1 = require("../../../../errors/rubic-sdk.error");
10
+ const viem_blockchain_mapping_1 = require("../../../constants/viem-blockchain-mapping");
11
+ const abstract_adapter_signer_1 = require("../../common/signer/abstract-adapter-signer");
12
+ const options_1 = require("../../utils/options");
13
+ const parse_evm_error_1 = require("../utils/parse-evm-error");
14
+ class EvmAdapterSigner extends abstract_adapter_signer_1.AbstractAdapterSigner {
15
+ get publicClient() {
16
+ if (!this.publicRef.public) {
17
+ const msg = `Trying to access undefined publicClient in EvmAdapterSigner.`;
18
+ this.logger?.customLog(msg);
19
+ throw new Error(msg);
20
+ }
21
+ return this.publicRef.public;
22
+ }
23
+ constructor(publicRef, httpClient, logger, clientParams) {
24
+ super(httpClient, logger, clientParams);
25
+ this.publicRef = publicRef;
26
+ }
27
+ async getBlockchainName() {
28
+ const userChainId = await this.wallet.getChainId();
29
+ return core_1.BlockchainsInfo.getBlockchainNameById(userChainId);
30
+ }
31
+ /**
32
+ * Sends Eth in transaction and resolve the promise when the transaction is included in the block.
33
+ * @param toAddress Eth receiver address.
34
+ * @param [options] Additional options.
35
+ * @returns Transaction receipt.
36
+ */
37
+ async sendTransaction(params) {
38
+ try {
39
+ const to = params.txOptions.to;
40
+ const value = BigInt(params.txOptions.value?.toString() || '0');
41
+ const { account, chain } = await this.getChainAndAccount();
42
+ const viemParams = {
43
+ value,
44
+ account,
45
+ to,
46
+ ...(0, options_1.getViemGasOptions)(params.txOptions),
47
+ ...(params.txOptions.data && { data: params.txOptions.data }),
48
+ ...(params.txOptions.gas && { gas: BigInt(params.txOptions.gas) }),
49
+ chain
50
+ };
51
+ const hash = await this.wallet.sendTransaction(viemParams);
52
+ params.txOptions?.onTransactionHash?.(hash);
53
+ return (0, actions_1.waitForTransactionReceipt)(this.wallet, { hash });
54
+ }
55
+ catch (err) {
56
+ console.error('Send transaction error', err);
57
+ throw err;
58
+ }
59
+ }
60
+ /**
61
+ * Tries to send Eth in transaction and resolve the promise when the transaction is included in the block or rejects the error.
62
+ * @param toAddress Eth receiver address.
63
+ * @param [options] Additional options.
64
+ * @returns Transaction receipt.
65
+ */
66
+ async trySendTransaction(params) {
67
+ try {
68
+ const to = params.txOptions.to;
69
+ const value = BigInt(params.txOptions.value?.toString() || '0');
70
+ const gaslessParams = {
71
+ account: this.walletAddress,
72
+ to,
73
+ value,
74
+ ...(params.txOptions.data && { data: params.txOptions.data })
75
+ };
76
+ const gas = params.txOptions.gas ? BigInt(params.txOptions.gas) : await this.publicClient.estimateGas(gaslessParams);
77
+ const calculatedGas = params.txOptions.gasLimitRatio
78
+ ? BigInt(new bignumber_js_1.default(gas.toString()).multipliedBy(params.txOptions.gasLimitRatio).toFixed(0))
79
+ : gas;
80
+ const gasfulParams = {
81
+ ...gaslessParams,
82
+ ...(0, options_1.getGasOptions)(params.txOptions),
83
+ gas: calculatedGas.toString()
84
+ };
85
+ const gasfulViemParams = {
86
+ ...gaslessParams,
87
+ ...(0, options_1.getViemGasOptions)(params.txOptions),
88
+ gas: calculatedGas
89
+ };
90
+ try {
91
+ await this.publicClient.estimateGas(gasfulViemParams);
92
+ }
93
+ catch {
94
+ throw new rubic_sdk_error_1.RubicSdkError('Low native value');
95
+ }
96
+ const sendParams = {
97
+ ...gasfulParams,
98
+ ...(params.txOptions.onTransactionHash && {
99
+ onTransactionHash: params.txOptions.onTransactionHash,
100
+ gasPriceOptions: params.txOptions?.gasPriceOptions
101
+ })
102
+ };
103
+ const receipt = await this.sendTransaction({ txOptions: sendParams });
104
+ if (receipt.status !== 'success') {
105
+ throw new tx_reverted_in_chain_error_1.TxRevertedInBlockchainError();
106
+ }
107
+ return receipt;
108
+ }
109
+ catch (err) {
110
+ console.debug('Call tokens transfer error', err);
111
+ const shouldIgnore = await this.shouldIgnoreError(err);
112
+ if (shouldIgnore) {
113
+ return this.sendTransaction(params);
114
+ }
115
+ throw (0, parse_evm_error_1.parseEvmError)(err);
116
+ }
117
+ }
118
+ /**
119
+ * Executes method of smart-contract and resolve the promise when the transaction is included in the block.
120
+ * @param contractAddress Address of smart-contract which method is to be executed.
121
+ * @param contractAbi Abi of smart-contract which method is to be executed.
122
+ * @param methodName Method name to execute.
123
+ * @param methodArguments Method arguments.
124
+ * @param [options] Additional options.
125
+ * @returns Smart-contract method returned value.
126
+ */
127
+ async executeContractMethod(contractAddress, contractAbi, methodName, methodArguments, options = {}) {
128
+ try {
129
+ const { account, chain } = await this.getChainAndAccount();
130
+ const sendParams = {
131
+ address: contractAddress,
132
+ abi: contractAbi,
133
+ functionName: methodName,
134
+ args: methodArguments,
135
+ ...(options.value && {
136
+ value: BigInt(options.value?.toString())
137
+ }),
138
+ ...(options.gas && {
139
+ gas: BigInt(options.gas)
140
+ }),
141
+ ...(0, options_1.getViemGasOptions)(options),
142
+ account: account,
143
+ chain: chain
144
+ };
145
+ const hash = await this.wallet.writeContract(sendParams);
146
+ options?.onTransactionHash?.(hash);
147
+ return (0, actions_1.waitForTransactionReceipt)(this.wallet, { hash });
148
+ }
149
+ catch (err) {
150
+ console.error(`Method execution error. ${err}`);
151
+ throw (0, parse_evm_error_1.parseEvmError)(err);
152
+ }
153
+ }
154
+ /**
155
+ * Tries to execute method of smart-contract and resolve the promise when the transaction is included in the block or rejects the error.
156
+ * @param contractAddress Address of smart-contract which method is to be executed.
157
+ * @param contractAbi Abi of smart-contract which method is to be executed.
158
+ * @param methodName Method name to execute.
159
+ * @param methodArguments Method arguments.
160
+ * @param [options] Additional options.
161
+ * @param allowError Check error and decides to execute contact if error is allowed.
162
+ */
163
+ async tryExecuteContractMethod(contractAddress, contractAbi, methodName, methodArguments, options = {}, allowError) {
164
+ try {
165
+ const gaslessParams = {
166
+ address: contractAddress,
167
+ abi: contractAbi,
168
+ functionName: methodName,
169
+ args: methodArguments,
170
+ ...(options.value && {
171
+ value: BigInt(options.value?.toString())
172
+ }),
173
+ account: this.walletAddress
174
+ };
175
+ const gas = await this.publicClient.estimateContractGas(gaslessParams);
176
+ const gasfulParams = {
177
+ ...gaslessParams,
178
+ ...(0, options_1.getGasOptions)(options),
179
+ gas: gas.toString()
180
+ };
181
+ const gasfulViemParams = {
182
+ ...gaslessParams,
183
+ ...(0, options_1.getViemGasOptions)(options),
184
+ gas
185
+ };
186
+ try {
187
+ await this.publicClient.estimateContractGas(gasfulViemParams);
188
+ }
189
+ catch {
190
+ throw new rubic_sdk_error_1.RubicSdkError('Low native value');
191
+ }
192
+ const recepit = await this.executeContractMethod(contractAddress, contractAbi, methodName, methodArguments, {
193
+ ...gasfulParams,
194
+ ...(options.onTransactionHash && {
195
+ onTransactionHash: options.onTransactionHash,
196
+ gasPriceOptions: options?.gasPriceOptions
197
+ })
198
+ });
199
+ return recepit;
200
+ }
201
+ catch (err) {
202
+ if ((allowError && allowError(err)) || (await this.shouldIgnoreError(err))) {
203
+ return this.executeContractMethod(contractAddress, contractAbi, methodName, methodArguments, options);
204
+ }
205
+ console.error('Method execution error: ', err);
206
+ throw (0, parse_evm_error_1.parseEvmError)(err);
207
+ }
208
+ }
209
+ async shouldIgnoreError(error) {
210
+ if (error.message === 'Low native value' && (await this.getBlockchainName()) === core_1.BLOCKCHAIN_NAME.MANTLE) {
211
+ return true;
212
+ }
213
+ const ignoreCallErrors = [
214
+ 'STF',
215
+ 'execution reverted: ERC20: transfer amount exceeds allowance',
216
+ 'Anyswaperc20: request exceed allowance',
217
+ 'gas required exceeds allowance',
218
+ 'execution reverted: SafeERC20: low-level call failed'
219
+ ];
220
+ const test = ignoreCallErrors.some((err) => error?.message?.toLowerCase().includes(err.toLowerCase()));
221
+ console.debug(test);
222
+ return test;
223
+ }
224
+ async signMessage(message) {
225
+ return this.wallet.signMessage({
226
+ account: this.walletAddress,
227
+ message: message
228
+ });
229
+ }
230
+ async getChainAndAccount() {
231
+ const account = this.walletAddress;
232
+ const chainId = await this.wallet.getChainId();
233
+ const chainName = core_1.BlockchainsInfo.getBlockchainNameById(chainId);
234
+ if (!chainName) {
235
+ throw Error(`Unsupported chain ID: ${chainId}. Please provide a valid EVM blockchain ID`);
236
+ }
237
+ const chain = viem_blockchain_mapping_1.viemBlockchainMapping[chainName];
238
+ if (!chain) {
239
+ throw Error(`Unsupported chain ID: ${chainId}. Please provide a valid EVM blockchain ID`);
240
+ }
241
+ return { account, chain };
242
+ }
243
+ async writeContract(address, abi, method, value = '0', methodArgs = []) {
244
+ const result = await this.wallet.writeContract({
245
+ abi,
246
+ address: address,
247
+ account: address,
248
+ args: methodArgs,
249
+ functionName: method,
250
+ chain: this.publicClient.chain,
251
+ value: (0, viem_1.parseEther)(value)
252
+ });
253
+ return result;
254
+ }
255
+ async write(address, to, value, data, options = {}) {
256
+ const result = await this.wallet.sendTransaction({
257
+ account: address,
258
+ to: to,
259
+ value: (0, viem_1.parseEther)(value),
260
+ data: data,
261
+ chain: this.publicClient.chain,
262
+ ...(options.gas && { gas: BigInt(options.gas) }),
263
+ ...(0, options_1.getViemGasOptions)(options)
264
+ });
265
+ return result;
266
+ }
267
+ }
268
+ exports.EvmAdapterSigner = EvmAdapterSigner;
@@ -0,0 +1,12 @@
1
+ import { RubicSdkError } from '../../../../errors/rubic-sdk.error';
2
+ /**
3
+ * Type of errors, thrown by web3 methods.
4
+ */
5
+ export interface Web3Error extends Error {
6
+ code: number;
7
+ }
8
+ /**
9
+ * Parses web3 error by its code or message.
10
+ * @param err Web3 error to parse.
11
+ */
12
+ export declare function parseEvmError(err: Web3Error): RubicSdkError;
@@ -0,0 +1,70 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.parseEvmError = parseEvmError;
4
+ const low_gas_error_1 = require("../../../../errors/blockchain/low-gas.error");
5
+ const transaction_reverted_error_1 = require("../../../../errors/blockchain/transaction-reverted.error");
6
+ const user_reject_error_1 = require("../../../../errors/blockchain/user-reject.error");
7
+ const insufficient_funds_gas_price_value_error_1 = require("../../../../errors/cross-chain/insufficient-funds-gas-price-value.error");
8
+ const rubic_sdk_error_1 = require("../../../../errors/rubic-sdk.error");
9
+ const failed_to_check_for_transaction_receipt_error_1 = require("../../../../errors/swap/failed-to-check-for-transaction-receipt.error");
10
+ const low_slippage_error_1 = require("../../../../errors/swap/low-slippage.error");
11
+ const proxy_hash_errors_1 = require("../constants/proxy-hash-errors");
12
+ const low_slippage_deflationary_token_error_1 = require("../../../../errors/swap/low-slippage-deflationary-token.error");
13
+ const errors_1 = require("../../utils/errors");
14
+ /**
15
+ * Parses web3 error by its code or message.
16
+ * @param err Web3 error to parse.
17
+ */
18
+ function parseEvmError(err) {
19
+ if (err.message.includes('Transaction has been reverted by the EVM')) {
20
+ return new transaction_reverted_error_1.TransactionRevertedError();
21
+ }
22
+ if (err.message.includes('execution reverted: UNIV3R: min return')) {
23
+ return new low_slippage_error_1.LowSlippageError();
24
+ }
25
+ if (err.message.includes('execution reverted: Address: low-level call with value failed') || err.message.includes('Low native value')) {
26
+ return new insufficient_funds_gas_price_value_error_1.InsufficientFundsGasPriceValueError();
27
+ }
28
+ if (err.message.includes('Failed to check for transaction receipt')) {
29
+ return new failed_to_check_for_transaction_receipt_error_1.FailedToCheckForTransactionReceiptError();
30
+ }
31
+ if (err.code === -32603) {
32
+ return new low_gas_error_1.LowGasError();
33
+ }
34
+ if (err.code === 4001 ||
35
+ err.message.toLowerCase().includes('user denied transaction signature') ||
36
+ err.message.toLowerCase().includes('user rejected the request')) {
37
+ return new user_reject_error_1.UserRejectError();
38
+ }
39
+ try {
40
+ const error = tryParseProxyError(err);
41
+ if (error) {
42
+ return error;
43
+ }
44
+ if (err.message.includes('0x6c544f')) {
45
+ return new insufficient_funds_gas_price_value_error_1.InsufficientFundsGasPriceValueError();
46
+ }
47
+ if (err.message.includes('0xf32bec2f') ||
48
+ err.message.includes('execution reverted: Received amount of tokens are less then expected') ||
49
+ err.message.includes('0x275c273c')) {
50
+ return new low_slippage_deflationary_token_error_1.LowSlippageDeflationaryTokenError();
51
+ }
52
+ const errorMessage = JSON.parse(err.message.slice(24)).message;
53
+ if (errorMessage) {
54
+ return new Error(errorMessage);
55
+ }
56
+ }
57
+ catch {
58
+ /* empty */
59
+ }
60
+ return (0, errors_1.parseError)(err);
61
+ }
62
+ function tryParseProxyError(err) {
63
+ if ('data' in err) {
64
+ const error = proxy_hash_errors_1.proxyHashErrors.find((error) => error.hash === err.data);
65
+ if (error) {
66
+ return new rubic_sdk_error_1.RubicSdkError(error.text);
67
+ }
68
+ }
69
+ return undefined;
70
+ }
@@ -0,0 +1,16 @@
1
+ import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
2
+ export interface SolanaSendTxParams {
3
+ txOptions: SolanaTransactionOptions;
4
+ calculateConsumedParams?: boolean;
5
+ additionalData?: string[];
6
+ }
7
+ export interface SolanaTransactionOptions extends BasicSendTransactionOptions {
8
+ /**
9
+ * Encoded data, which will be executed in transaction.
10
+ */
11
+ data?: string;
12
+ sponsorParams?: {
13
+ tradeId: string;
14
+ feePayer: string;
15
+ };
16
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -1,6 +1,6 @@
1
1
  import { Connection, PublicKey } from '@solana/web3.js';
2
2
  import { HttpClient } from '@cryptorubic/core';
3
- import { SolanaToken } from '../models/solana-web3-types';
3
+ import { SolanaToken } from '../../models/solana-web3-types';
4
4
  export declare class SolanaTokensService {
5
5
  private readonly httpClient;
6
6
  private connection;
@@ -3,7 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SolanaTokensService = void 0;
4
4
  const spl_token_1 = require("@solana/spl-token");
5
5
  const utl_sdk_1 = require("@solflare-wallet/utl-sdk");
6
- const timeout_1 = require("./timeout");
6
+ const timeout_1 = require("../../utils/timeout");
7
7
  class SolanaTokensService {
8
8
  constructor(connection, httpClient) {
9
9
  this.httpClient = httpClient;
@@ -112,7 +112,7 @@ class SolanaTokensService {
112
112
  async getTokensList(tokenAddresses) {
113
113
  try {
114
114
  const queryParams = tokenAddresses.length > 1 ? { addresses: tokenAddresses.join(',') } : { query: tokenAddresses[0] };
115
- const resp = await this.httpClient.get(`${this.newTokensEndpoint}/tokens`, {
115
+ const resp = await this.httpClient.get(`${this.newTokensEndpoint}/tokens/`, {
116
116
  params: queryParams
117
117
  });
118
118
  return resp.results.map((t) => ({
@@ -0,0 +1,17 @@
1
+ import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
2
+ import { SolanaWeb3 } from '../../../constants/models/solana-web3';
3
+ import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
4
+ import { SolanaSendTxParams } from '../models/solana-send-tx-params';
5
+ import { Connection } from '@solana/web3.js';
6
+ import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
7
+ export declare class SolanaAdapterSigner extends AbstractAdapterSigner<SolanaWeb3, SolanaSendTxParams, string> {
8
+ private readonly publicRef;
9
+ get publicClient(): Connection;
10
+ constructor(publicRef: {
11
+ public: Connection | null;
12
+ }, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
13
+ write<T>(): Promise<T>;
14
+ getBlockchainName(): Promise<BlockchainName>;
15
+ sendTransaction(params: SolanaSendTxParams): Promise<string>;
16
+ private waitForTxConfirmation;
17
+ }
@@ -0,0 +1,87 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.SolanaAdapterSigner = void 0;
4
+ const core_1 = require("@cryptorubic/core");
5
+ const web3_js_1 = require("@solana/web3.js");
6
+ const waitFor_1 = require("../../utils/waitFor");
7
+ const js_base64_1 = require("js-base64");
8
+ const user_reject_error_1 = require("../../../../errors/blockchain/user-reject.error");
9
+ const errors_1 = require("../../utils/errors");
10
+ const abstract_adapter_signer_1 = require("../../common/signer/abstract-adapter-signer");
11
+ const tx_reverted_in_chain_error_1 = require("../../../../errors/common/tx-reverted-in-chain.error");
12
+ class SolanaAdapterSigner extends abstract_adapter_signer_1.AbstractAdapterSigner {
13
+ get publicClient() {
14
+ if (!this.publicRef.public) {
15
+ const msg = `Trying to access undefined publicClient in SolanaAdapterSigner.`;
16
+ this.logger?.customLog(msg);
17
+ throw new Error(msg);
18
+ }
19
+ return this.publicRef.public;
20
+ }
21
+ constructor(publicRef, httpClient, logger, clientParams) {
22
+ super(httpClient, logger, clientParams);
23
+ this.publicRef = publicRef;
24
+ }
25
+ async write() {
26
+ throw new Error('Method write is not supported');
27
+ }
28
+ getBlockchainName() {
29
+ return Promise.resolve(core_1.BLOCKCHAIN_NAME.SOLANA);
30
+ }
31
+ async sendTransaction(params) {
32
+ try {
33
+ const decodedData = js_base64_1.Base64.toUint8Array(params.txOptions.data);
34
+ const tx = web3_js_1.VersionedTransaction.deserialize(decodedData);
35
+ const signedTx = await this.wallet.signTransaction(tx);
36
+ const txBase64 = js_base64_1.Base64.fromUint8Array(signedTx.serialize());
37
+ let signature;
38
+ if (params.txOptions?.sponsorParams) {
39
+ const response = await this.httpClient.post(`${this.apiUrl}/api/utility/solana/relay`, {
40
+ txBase64,
41
+ tradeId: params.txOptions.sponsorParams.tradeId
42
+ });
43
+ signature = response.signature;
44
+ }
45
+ else {
46
+ try {
47
+ const simulation = await this.publicClient.simulateTransaction(signedTx, {
48
+ sigVerify: true,
49
+ replaceRecentBlockhash: false
50
+ });
51
+ console.log(simulation);
52
+ }
53
+ catch (err) {
54
+ console.log(err);
55
+ }
56
+ signature = await this.publicClient.sendRawTransaction(signedTx.serialize(), {
57
+ maxRetries: 3,
58
+ skipPreflight: false
59
+ });
60
+ }
61
+ params.txOptions.onTransactionHash?.(signature);
62
+ await this.waitForTxConfirmation(signature);
63
+ return signature;
64
+ }
65
+ catch (err) {
66
+ console.error(`[SolanaWeb3Private_sendTransaction] Error: ${err}`, { name: err.name, stack: err.stack });
67
+ if (err.message.includes('User rejected')) {
68
+ throw new user_reject_error_1.UserRejectError();
69
+ }
70
+ throw (0, errors_1.parseError)(err);
71
+ }
72
+ }
73
+ async waitForTxConfirmation(signature) {
74
+ const deadline = Date.now() + 3 * 60 * 1000;
75
+ let fetchedTx = null;
76
+ while (!fetchedTx && Date.now() < deadline) {
77
+ await (0, waitFor_1.waitFor)(5000);
78
+ fetchedTx = await this.publicClient.getTransaction(signature, {
79
+ commitment: 'confirmed',
80
+ maxSupportedTransactionVersion: 1
81
+ });
82
+ }
83
+ if (!fetchedTx || fetchedTx.meta?.err)
84
+ throw new tx_reverted_in_chain_error_1.TxRevertedInBlockchainError();
85
+ }
86
+ }
87
+ exports.SolanaAdapterSigner = SolanaAdapterSigner;
@@ -1,28 +1,38 @@
1
- import { Abi, MulticallResponse, MulticallParameters } from 'viem';
2
- import { AbstractAdapter } from './abstract-adapter';
3
1
  import { AddressLookupTableAccount, Connection, Keypair, PublicKey, Transaction, TransactionInstruction, VersionedTransaction } from '@solana/web3.js';
4
2
  import { HttpClient, ICustomLogger, PriceTokenAmount, SolanaBlockchainName, Token, TokenAmount } from '@cryptorubic/core';
5
- import { EvmTransactionConfig } from '../../utils/models/evm-transaction-config';
6
3
  import BigNumber from 'bignumber.js';
7
- import { SolanaRawInstruction } from './models/solana-web3-types';
8
- export declare const NATIVE_SOLANA_MINT_ADDRESS = "So11111111111111111111111111111111111111111";
9
- export declare class SolanaAdapter extends AbstractAdapter<Connection, Connection, SolanaBlockchainName> {
4
+ import { AbstractAdapter } from '../common/abstract-adapter';
5
+ import { SolanaRawInstruction } from '../models/solana-web3-types';
6
+ import { ClientAdaptersFactoryParams } from '../../models/create-factory-params';
7
+ import { SolanaWeb3 } from '../../constants/models/solana-web3';
8
+ import { SolanaAdapterSigner } from './signer/solana-adapter-signer';
9
+ import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
10
+ import { ContractMulticallResponse } from '../models/web3-public-models/contract-multicall-response';
11
+ import { TxStatus } from '../models/web3-public-models/tx-status';
12
+ export declare class SolanaAdapter extends AbstractAdapter<Connection, SolanaWeb3, SolanaBlockchainName> {
13
+ private readonly rpcList;
10
14
  private readonly httpClient;
11
- constructor(rpcList: string[], httpClient: HttpClient, logger?: ICustomLogger);
12
- private createPublicClient;
13
- read<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
14
- write<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
15
- multicallByContract<T>(_contracts: MulticallParameters, _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
16
- multicallByAddress<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[][], _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
17
- simulateTransaction(_config: EvmTransactionConfig, _from: string): Promise<void>;
18
- checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string): Promise<boolean>;
19
- getBalance(userAddress: string, tokenAddress: string): Promise<BigNumber>;
15
+ readonly signer: SolanaAdapterSigner;
16
+ constructor(rpcList: string[], httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
17
+ initWeb3Client(): void;
18
+ callContractMethod<T extends Web3PrimitiveType = string>(): Promise<T>;
19
+ read<T>(): Promise<T>;
20
+ getTransactionStatus(txHash: string): Promise<TxStatus>;
20
21
  /**
21
22
  * Gets balance of multiple tokens.
22
23
  * @param address Wallet address.
23
24
  * @param tokensAddresses Tokens addresses.
24
25
  */
25
26
  getTokensBalances(address: string, tokensAddresses: string[]): Promise<BigNumber[]>;
27
+ multicallContractsMethods<Output extends Web3PrimitiveType>(): Promise<ContractMulticallResponse<Output>[][]>;
28
+ getBlockNumber(): Promise<number | {
29
+ blockNumber: number;
30
+ workchain: number;
31
+ }>;
32
+ private createConection;
33
+ simulateTransaction(_config: object, _from: string): Promise<void>;
34
+ checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string): Promise<boolean>;
35
+ getBalance(userAddress: string, tokenAddress?: string): Promise<BigNumber>;
26
36
  callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SolanaBlockchainName>[]>;
27
37
  parseRawInstruction(rawInstruction: SolanaRawInstruction[], dataFormat: BufferEncoding): TransactionInstruction[];
28
38
  parseLUTAddresses(lookupTableAddresses: string[]): Promise<AddressLookupTableAccount[]>;