@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,120 @@
1
+ import { Abi, MulticallResponse, MulticallParameters, PublicActions, PublicClient, WalletClient, WalletActions, BlockNumber, BlockTag, GetBlockReturnType, TransactionReceipt } from 'viem';
2
+ import { AbstractAdapter } from '../common/abstract-adapter';
3
+ import { EvmBlockchainName, ICustomLogger, Token, TokenAmount, PriceTokenAmount, HttpClient } from '@cryptorubic/core';
4
+ import BigNumber from 'bignumber.js';
5
+ import { EvmAdapterOptions } from '../models/evm-adapter-options';
6
+ import { EvmTransactionConfig } from '../../../utils/models/evm-transaction-config';
7
+ import { EvmAdapterSigner } from './signer/evm-adapter-signer';
8
+ import { ClientAdaptersFactoryParams } from '../../models/create-factory-params';
9
+ import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
10
+ import { ContractMulticallResponse } from '../models/web3-public-models/contract-multicall-response';
11
+ import { MethodData } from '../models/web3-public-models/method-data';
12
+ import { GasPrice } from '../models/evm-web3-public-models/gas-price';
13
+ import { EvmTransactionOptions } from './models/evm-send-tx-params';
14
+ import { ApprovableAdapter } from '../models/approve-adapter';
15
+ import { AllowanceInfo } from '../models/common-types';
16
+ import { TxStatus } from '../models/web3-public-models/tx-status';
17
+ export declare class EvmAdapter extends AbstractAdapter<PublicActions & PublicClient, WalletClient & WalletActions, EvmBlockchainName> implements ApprovableAdapter<EvmTransactionConfig> {
18
+ private readonly adapterOptions;
19
+ private readonly clientParams?;
20
+ readonly signer: EvmAdapterSigner;
21
+ needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
22
+ handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
23
+ constructor(httpClient: HttpClient, adapterOptions: EvmAdapterOptions, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams | undefined);
24
+ initWeb3Client(): void;
25
+ callContractMethod<T extends Web3PrimitiveType = string>(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments?: unknown[], options?: {
26
+ from?: string;
27
+ value?: string;
28
+ gasPrice?: string;
29
+ gas?: string;
30
+ }): Promise<T>;
31
+ getTransactionStatus(hash: string): Promise<TxStatus>;
32
+ /**
33
+ * Gets mined transaction receipt.
34
+ * @param hash Transaction hash
35
+ */
36
+ private getTransactionReceipt;
37
+ getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
38
+ multicallContractsMethods<Output extends Web3PrimitiveType>(contractAbi: Abi, contractsData: {
39
+ contractAddress: string;
40
+ methodsData: MethodData[];
41
+ }[]): Promise<ContractMulticallResponse<Output>[][]>;
42
+ getBlockNumber(): Promise<number | {
43
+ blockNumber: number;
44
+ workchain: number;
45
+ }>;
46
+ private createPublicClient;
47
+ multicallByContract<T>(contracts: MulticallParameters, allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
48
+ multicallByAddress<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[][], allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
49
+ static encodeMethodCall(contractAddress: string, contractAbi: Abi, method: string, parameters?: unknown[], value?: string): EvmTransactionConfig;
50
+ read<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[]): Promise<T>;
51
+ /**
52
+ * Generate random HEX strings from a given byte size.
53
+ * @param size byte size.
54
+ */
55
+ static randomHex(size: number): string;
56
+ /**
57
+ * Converts address to checksum format.
58
+ * @param address Address to convert.
59
+ */
60
+ static toChecksumAddress(address: string): string;
61
+ simulateTransaction(config: EvmTransactionConfig, from: string, timeout?: number): Promise<string>;
62
+ callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<EvmBlockchainName>[]>;
63
+ getGasPrice(): Promise<string>;
64
+ checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string, amount?: BigNumber): Promise<boolean>;
65
+ /**
66
+ * @param walletAddress
67
+ * @param tokenAddress
68
+ * @returns wei amount
69
+ */
70
+ getBalance(walletAddress: string, tokenAddress?: string): Promise<BigNumber>;
71
+ getTransactionCount(walletAddress: string): Promise<number>;
72
+ getAllowance(fromTokenAddress: string, walletAddress: string, spenderAddress: string): Promise<AllowanceInfo>;
73
+ needApprove(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
74
+ /**
75
+ * Executes approve method in ERC-20 token contract.
76
+ * @param tokenAddress Address of the smart-contract corresponding to the token.
77
+ * @param spenderAddress Wallet or contract address to approve.
78
+ * @param amount Token amount to approve in wei.
79
+ * @param [options] Additional options.
80
+ * @returns Approval transaction hash.
81
+ */
82
+ approveTokens(tokenAddress: string, spenderAddress: string, amount?: BigNumber | 'infinity', options?: EvmTransactionOptions): Promise<string>;
83
+ /**
84
+ * Build encoded approve transaction config.
85
+ * @param tokenAddress Address of the smart-contract corresponding to the token.
86
+ * @param spenderAddress Wallet or contract address to approve.
87
+ * @param amount wei amount of tokens in approval window in spending cap field
88
+ * @returns Encoded approve transaction config.
89
+ */
90
+ encodeApprove(tokenAddress: string, spenderAddress: string, amount?: string): EvmTransactionConfig;
91
+ needPermit2Approve(token: TokenAmount, permit2Address: string, walletAddress: string, spenderAddress: string): Promise<boolean>;
92
+ /**
93
+ * @param tokenAddress Token address you want to approve for spending
94
+ * @param permit2Address Addres of permit2 contract
95
+ * @param spenderAddress Contract address spending your tokens
96
+ * @param amount Approved amount
97
+ * @param deadline Ms number added to current time (Date.now()) until approve expiration
98
+ */
99
+ approveOnPermit2(tokenAddress: string, spenderAddress: string, amount?: BigNumber | 'infinity', options?: EvmTransactionOptions): Promise<TransactionReceipt>;
100
+ /**
101
+ * Calculates EIP-1559 specific gas details.
102
+ * @see {@link https://github.com/ethers-io/ethers.js/blob/master/packages/abstract-provider/src.ts/index.ts#L235}
103
+ * @returns block baseFee, average maxPriorityFeePerGas, and maxFeePerGas.
104
+ */
105
+ getPriorityFeeGas(): Promise<GasPrice>;
106
+ /**
107
+ * Gets block by block id.
108
+ * @param [blockId] Block id: hash, number ... Default is 'latest'.
109
+ * @returns Block by blockId parameter.
110
+ */
111
+ getBlock(blockType?: BlockNumber | BlockTag): Promise<GetBlockReturnType>;
112
+ /**
113
+ * Estimates average maxPriorityFeePerGas for EIP-1559 transactions based on last 20 blocks.
114
+ * @see {@link https://docs.alchemy.com/docs/how-to-build-a-gas-fee-estimator-using-eip-1559}
115
+ * @returns Average maxPriorityFeePerGas in wei
116
+ */
117
+ getMaxPriorityFeePerGas(): Promise<number>;
118
+ getBaseFeePerGas(blockNumber: bigint): Promise<number>;
119
+ private handlePossibleError;
120
+ }
@@ -2,14 +2,19 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.EvmAdapter = void 0;
4
4
  const viem_1 = require("viem");
5
- const viem_blockchain_mapping_1 = require("../constants/viem-blockchain-mapping");
6
- const erc20_token_abi_1 = require("./constants/erc20-token-abi");
7
- const abstract_adapter_1 = require("./abstract-adapter");
5
+ const viem_blockchain_mapping_1 = require("../../constants/viem-blockchain-mapping");
6
+ const erc20_token_abi_1 = require("../constants/erc20-token-abi");
7
+ const abstract_adapter_1 = require("../common/abstract-adapter");
8
8
  const core_1 = require("@cryptorubic/core");
9
9
  const bignumber_js_1 = require("bignumber.js");
10
- const web3_pure_1 = require("../../utils/web3-pure");
11
- const possible_errors_1 = require("./constants/possible-errors");
12
- const uni_v3_permit_abi_1 = require("./constants/uni-v3-permit-abi");
10
+ const web3_pure_1 = require("../../../utils/web3-pure");
11
+ const possible_errors_1 = require("../constants/possible-errors");
12
+ const evm_adapter_signer_1 = require("./signer/evm-adapter-signer");
13
+ const rubic_sdk_error_1 = require("../../../errors/rubic-sdk.error");
14
+ const uni_v3_permit_abi_1 = require("../constants/uni-v3-permit-abi");
15
+ const insufficient_funds_gas_price_value_error_1 = require("../../../errors/cross-chain/insufficient-funds-gas-price-value.error");
16
+ const options_1 = require("../utils/options");
17
+ const tx_status_1 = require("../models/web3-public-models/tx-status");
13
18
  class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
14
19
  async needPreswapAction(token, contractAddress, walletAddress, amount) {
15
20
  return this.needApprove(token, contractAddress, walletAddress, amount);
@@ -22,68 +27,132 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
22
27
  const fromTokenAddress = isNative && tokenAmount.blockchain === core_1.BLOCKCHAIN_NAME.METIS
23
28
  ? '0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000'
24
29
  : tokenAmount.blockchain;
25
- await this.writeContract(fromTokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', '0', [approveAmount]);
30
+ await this.signer.writeContract(fromTokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', '0', [approveAmount]);
26
31
  }
27
- constructor(adapterOptions, logger) {
32
+ constructor(httpClient, adapterOptions, logger, clientParams) {
28
33
  super(adapterOptions.blockchain, logger);
29
- this.public = this.createPublicClient(adapterOptions.rpcList);
34
+ this.adapterOptions = adapterOptions;
35
+ this.clientParams = clientParams;
36
+ this.signer = new evm_adapter_signer_1.EvmAdapterSigner(this.publicRef, httpClient, logger, clientParams);
37
+ }
38
+ initWeb3Client() {
39
+ this.public = this.createPublicClient(this.adapterOptions.rpcList);
40
+ }
41
+ async callContractMethod(contractAddress, contractAbi, methodName, methodArguments = [], options = {}) {
42
+ return this.public.readContract({
43
+ abi: contractAbi,
44
+ address: contractAddress,
45
+ functionName: methodName,
46
+ args: methodArguments,
47
+ ...(options.from && { account: options.from })
48
+ });
49
+ }
50
+ async getTransactionStatus(hash) {
51
+ const txReceipt = await this.getTransactionReceipt(hash);
52
+ if (txReceipt === null) {
53
+ return tx_status_1.TX_STATUS.PENDING;
54
+ }
55
+ if (txReceipt.status) {
56
+ return tx_status_1.TX_STATUS.SUCCESS;
57
+ }
58
+ return tx_status_1.TX_STATUS.FAIL;
59
+ }
60
+ /**
61
+ * Gets mined transaction receipt.
62
+ * @param hash Transaction hash
63
+ */
64
+ async getTransactionReceipt(hash) {
65
+ return this.public.getTransactionReceipt({ hash: hash });
66
+ }
67
+ async getTokensBalances(userAddress, tokensAddresses) {
68
+ const indexOfNativeCoin = tokensAddresses.findIndex((tokenAddress) => web3_pure_1.Web3Pure.isNativeAddress('ETH', tokenAddress));
69
+ const promises = [];
70
+ if (indexOfNativeCoin !== -1) {
71
+ tokensAddresses.splice(indexOfNativeCoin, 1);
72
+ promises[1] = this.getBalance(userAddress);
73
+ }
74
+ promises[0] = this.multicallContractsMethods(erc20_token_abi_1.erc20TokenAbi, tokensAddresses.map((tokenAddress) => ({
75
+ contractAddress: tokenAddress,
76
+ methodsData: [
77
+ {
78
+ methodName: 'balanceOf',
79
+ methodArguments: [userAddress]
80
+ }
81
+ ]
82
+ })));
83
+ const results = await Promise.all(promises);
84
+ const tokensBalances = results[0].map((tokenResults) => {
85
+ const { success, output } = tokenResults[0];
86
+ return success ? new bignumber_js_1.default(output) : new bignumber_js_1.default(0);
87
+ });
88
+ if (indexOfNativeCoin !== -1) {
89
+ tokensBalances.splice(indexOfNativeCoin, 0, results[1]);
90
+ }
91
+ return tokensBalances;
92
+ }
93
+ async multicallContractsMethods(contractAbi, contractsData) {
94
+ const contracts = contractsData
95
+ .map(({ contractAddress, methodsData }) => {
96
+ const wagmiContract = {
97
+ address: contractAddress,
98
+ abi: contractAbi
99
+ };
100
+ return methodsData.map(({ methodName, methodArguments }) => ({
101
+ ...wagmiContract,
102
+ functionName: methodName,
103
+ args: methodArguments
104
+ }));
105
+ })
106
+ .flat();
107
+ const outputs = await this.public.multicall({ contracts });
108
+ let outputIndex = 0;
109
+ return contractsData.map((contractData) => {
110
+ return contractData.methodsData.map(() => {
111
+ const output = outputs[outputIndex];
112
+ if (!output) {
113
+ throw new rubic_sdk_error_1.RubicSdkError('Output has to be defined');
114
+ }
115
+ outputIndex++;
116
+ return {
117
+ success: output.status === 'success',
118
+ output: output?.error ? null : output.result
119
+ };
120
+ });
121
+ });
122
+ }
123
+ async getBlockNumber() {
124
+ const blockNumber = await this.public.getBlockNumber();
125
+ return Number(blockNumber);
30
126
  }
31
127
  createPublicClient(rpcList) {
32
128
  if (!rpcList?.[0]) {
33
129
  this.logger?.customError('RPC list is empty');
34
130
  return null;
35
131
  }
36
- const transports = rpcList.map((rpc) => (0, viem_1.http)(rpc, {
132
+ const customViemConfig = this.clientParams?.viemConfig?.[this.blockchain];
133
+ const defaultTransportConfig = {
37
134
  batch: { batchSize: 2000, wait: 16 },
38
- onFetchResponse: (response) => {
39
- this.handlePossibleError(response);
40
- },
135
+ onFetchResponse: (response) => this.handlePossibleError(response),
41
136
  retryCount: 2,
42
137
  retryDelay: 100,
43
138
  timeout: 5000
44
- }));
139
+ };
140
+ const defaultFallbackConfig = {
141
+ rank: {
142
+ interval: 1800000
143
+ }
144
+ };
145
+ const transports = rpcList.map((rpc) => {
146
+ return (0, viem_1.http)(rpc, customViemConfig?.transportConfig ? customViemConfig.transportConfig : defaultTransportConfig);
147
+ });
148
+ const fallbackConfig = customViemConfig?.fallbackConfig ? customViemConfig?.fallbackConfig : defaultFallbackConfig;
45
149
  const chain = viem_blockchain_mapping_1.viemBlockchainMapping[this.blockchain];
46
150
  return (0, viem_1.createPublicClient)({
47
151
  // @ts-ignore
48
152
  chain,
49
- transport: (0, viem_1.fallback)(transports, {
50
- rank: {
51
- interval: 1800000
52
- }
53
- })
153
+ transport: (0, viem_1.fallback)(transports, fallbackConfig)
54
154
  });
55
155
  }
56
- async read(address, abi, method, methodArgs = []) {
57
- const result = await this.public.readContract({
58
- abi,
59
- address: address,
60
- args: methodArgs,
61
- functionName: method
62
- });
63
- return result;
64
- }
65
- async writeContract(address, abi, method, value = '0', methodArgs = []) {
66
- const result = await this.wallet.writeContract({
67
- abi,
68
- address: address,
69
- account: address,
70
- args: methodArgs,
71
- functionName: method,
72
- chain: this.public.chain,
73
- value: (0, viem_1.parseEther)(value)
74
- });
75
- return result;
76
- }
77
- async write(address, to, value, data) {
78
- const result = await this.wallet.sendTransaction({
79
- account: address,
80
- to: to,
81
- value: (0, viem_1.parseEther)(value),
82
- data: data,
83
- chain: this.public.chain
84
- });
85
- return result;
86
- }
87
156
  async multicallByContract(contracts, allowErrors = true) {
88
157
  const results = await this.public.multicall(contracts);
89
158
  const rpcRequestFail = results.every((result) => result?.status === 'failure');
@@ -135,6 +204,31 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
135
204
  throw err;
136
205
  }
137
206
  }
207
+ async read(address, abi, method, methodArgs = []) {
208
+ const result = await this.public.readContract({
209
+ abi,
210
+ address: address,
211
+ args: methodArgs,
212
+ functionName: method
213
+ });
214
+ return result;
215
+ }
216
+ /**
217
+ * Generate random HEX strings from a given byte size.
218
+ * @param size byte size.
219
+ */
220
+ static randomHex(size) {
221
+ const bytes = new Uint8Array(size);
222
+ crypto.getRandomValues(bytes);
223
+ return (0, viem_1.toHex)(bytes);
224
+ }
225
+ /**
226
+ * Converts address to checksum format.
227
+ * @param address Address to convert.
228
+ */
229
+ static toChecksumAddress(address) {
230
+ return (0, viem_1.getAddress)(address);
231
+ }
138
232
  async simulateTransaction(config, from, timeout = 15000) {
139
233
  try {
140
234
  const callParams = {
@@ -209,14 +303,15 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
209
303
  * @returns wei amount
210
304
  */
211
305
  async getBalance(walletAddress, tokenAddress) {
212
- if (!tokenAddress) {
213
- const nativeBalance = await this.public.getBalance({
214
- address: walletAddress
215
- });
216
- return new bignumber_js_1.default(nativeBalance.toString());
306
+ const isToken = tokenAddress && !web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.EVM, tokenAddress);
307
+ if (isToken) {
308
+ const tokenBalance = await this.read(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'balanceOf', [walletAddress]);
309
+ return new bignumber_js_1.default(tokenBalance);
217
310
  }
218
- const tokenBalance = await this.read(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'balanceOf', [walletAddress]);
219
- return new bignumber_js_1.default(tokenBalance);
311
+ const nativeBalance = await this.public.getBalance({
312
+ address: walletAddress
313
+ });
314
+ return new bignumber_js_1.default(nativeBalance.toString());
220
315
  }
221
316
  async getTransactionCount(walletAddress) {
222
317
  const transactionCount = await this.public?.getTransactionCount({
@@ -233,15 +328,6 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
233
328
  const allowanceNonWei = core_1.Token.fromWei(allowanceWeiBN, Number(decimals));
234
329
  return { allowanceNonWei, allowanceWei: allowanceWeiBN };
235
330
  }
236
- encodeApprove(tokenAddress, spenderAddress, amount) {
237
- const amountWei = amount ?? new bignumber_js_1.default(2).pow(256).minus(1).toFixed();
238
- const tx = EvmAdapter.encodeMethodCall(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', [spenderAddress, amountWei]);
239
- return {
240
- data: tx.data,
241
- to: tx.to,
242
- value: tx.value
243
- };
244
- }
245
331
  async needApprove(token, contractAddress, walletAddress, amount) {
246
332
  // Native coin in METIS can be Token required approve
247
333
  if (token.isNative && token.blockchain !== core_1.BLOCKCHAIN_NAME.METIS) {
@@ -252,9 +338,59 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
252
338
  const { allowanceWei } = await this.getAllowance(fromTokenAddress, walletAddress, contractAddress);
253
339
  return allowanceWei.lt(token.weiAmount);
254
340
  }
255
- async approve(fromAddress, tokenAddress, spenderAddress, amount) {
256
- const config = this.encodeApprove(tokenAddress, spenderAddress, amount);
257
- return this.write(fromAddress, config.to, config.value, config.data);
341
+ /**
342
+ * Executes approve method in ERC-20 token contract.
343
+ * @param tokenAddress Address of the smart-contract corresponding to the token.
344
+ * @param spenderAddress Wallet or contract address to approve.
345
+ * @param amount Token amount to approve in wei.
346
+ * @param [options] Additional options.
347
+ * @returns Approval transaction hash.
348
+ */
349
+ async approveTokens(tokenAddress, spenderAddress, amount = 'infinity', options = {}) {
350
+ try {
351
+ const rawValue = amount === 'infinity' ? new bignumber_js_1.default(2).pow(256).minus(1) : amount;
352
+ const encodedApprove = this.encodeApprove(tokenAddress, spenderAddress, rawValue.toFixed(0));
353
+ const gaslessParams = {
354
+ account: this.signer.walletAddress,
355
+ to: tokenAddress,
356
+ value: BigInt('0'),
357
+ data: encodedApprove.data
358
+ };
359
+ const gas = await this.public.estimateGas({
360
+ ...gaslessParams,
361
+ ...(0, options_1.getViemGasOptions)(options)
362
+ });
363
+ const gasfulViemOptions = {
364
+ ...gaslessParams,
365
+ ...(0, options_1.getViemGasOptions)(options),
366
+ gas: gas.toString()
367
+ };
368
+ const receipt = await this.signer.executeContractMethod(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', [spenderAddress, BigInt(rawValue.toFixed(0))], gasfulViemOptions);
369
+ return receipt.transactionHash;
370
+ }
371
+ catch (err) {
372
+ if (err?.message?.includes('gas required exceeds allowance') || err?.message?.includes('insufficient balance to pay for gas')) {
373
+ throw new insufficient_funds_gas_price_value_error_1.InsufficientFundsGasPriceValueError();
374
+ }
375
+ console.debug(err);
376
+ throw err;
377
+ }
378
+ }
379
+ /**
380
+ * Build encoded approve transaction config.
381
+ * @param tokenAddress Address of the smart-contract corresponding to the token.
382
+ * @param spenderAddress Wallet or contract address to approve.
383
+ * @param amount wei amount of tokens in approval window in spending cap field
384
+ * @returns Encoded approve transaction config.
385
+ */
386
+ encodeApprove(tokenAddress, spenderAddress, amount) {
387
+ const amountWei = amount ?? new bignumber_js_1.default(2).pow(256).minus(1).toFixed();
388
+ const tx = EvmAdapter.encodeMethodCall(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', [spenderAddress, amountWei]);
389
+ return {
390
+ data: tx.data,
391
+ to: tx.to,
392
+ value: tx.value
393
+ };
258
394
  }
259
395
  async needPermit2Approve(token, permit2Address, walletAddress, spenderAddress) {
260
396
  const res = await this.read(permit2Address, uni_v3_permit_abi_1.UNI_V3_PERMIT_2_ABI, 'allowance', [
@@ -265,24 +401,16 @@ class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
265
401
  const [amount, expiration, _nonce] = res;
266
402
  return token.weiAmount.gt(amount) || new bignumber_js_1.default(Date.now()).gt(Number(expiration) * 1000);
267
403
  }
268
- encodePermit2Approve(tokenAddress, spenderAddress, permit2Address, expiration, amount) {
269
- const tx = EvmAdapter.encodeMethodCall(permit2Address, uni_v3_permit_abi_1.UNI_V3_PERMIT_2_ABI, 'approve', [
270
- tokenAddress,
271
- spenderAddress,
272
- amount,
273
- expiration
274
- ]);
275
- return {
276
- data: tx.data,
277
- value: tx.value,
278
- to: tx.to
279
- };
280
- }
281
- async approveOnPermit2(fromAddress, tokenAddress, permit2Address, spenderAddress, deadline = new bignumber_js_1.default(1000000), amount) {
282
- const approveAmount = amount ? amount : new bignumber_js_1.default(2).pow(256).minus(1);
283
- const expiration = new bignumber_js_1.default(Date.now()).plus(deadline).toFixed();
284
- const tx = this.encodePermit2Approve(tokenAddress, spenderAddress, permit2Address, expiration, approveAmount.toFixed());
285
- return this.write(fromAddress, tx.to, tx.value, tx.data);
404
+ /**
405
+ * @param tokenAddress Token address you want to approve for spending
406
+ * @param permit2Address Addres of permit2 contract
407
+ * @param spenderAddress Contract address spending your tokens
408
+ * @param amount Approved amount
409
+ * @param deadline Ms number added to current time (Date.now()) until approve expiration
410
+ */
411
+ async approveOnPermit2(tokenAddress, spenderAddress, amount = 'infinity', options = {}) {
412
+ const rawValue = amount === 'infinity' ? new bignumber_js_1.default(2).pow(256).minus(1) : amount;
413
+ return this.signer.executeContractMethod(tokenAddress, uni_v3_permit_abi_1.UNI_V3_PERMIT_2_ABI, 'approve', [spenderAddress, BigInt(rawValue.toString())], options);
286
414
  }
287
415
  /**
288
416
  * Calculates EIP-1559 specific gas details.
@@ -0,0 +1,38 @@
1
+ import BigNumber from 'bignumber.js';
2
+ import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
3
+ import { EIP1559Gas, SingleGasPrice } from '../../models/evm-web3-public-models/gas-price';
4
+ export interface EvmSendTxParams {
5
+ txOptions: EvmTransactionOptions;
6
+ }
7
+ export interface EvmTransactionOptions extends EvmBasicTransactionOptions {
8
+ /**
9
+ * Encoded data, which will be executed in transaction.
10
+ */
11
+ data?: string;
12
+ /**
13
+ * Native token amount in wei.
14
+ */
15
+ value?: BigNumber | string | bigint;
16
+ /**
17
+ * Use in case of eip-155
18
+ */
19
+ chainId?: string;
20
+ /**
21
+ * gasLimit multiplier (to change ratio for specific chain)
22
+ */
23
+ gasLimitRatio?: number;
24
+ /**
25
+ * Address send transaction to
26
+ */
27
+ to?: string;
28
+ }
29
+ export interface EvmBasicTransactionOptions extends BasicSendTransactionOptions {
30
+ /**
31
+ * Transaction gas limit.
32
+ */
33
+ gas?: string;
34
+ /**
35
+ * Transaction gas price options.
36
+ */
37
+ gasPriceOptions?: EIP1559Gas | SingleGasPrice;
38
+ }
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,53 @@
1
+ import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
2
+ import { Abi, PublicActions, PublicClient, TransactionReceipt, WalletActions, WalletClient } from 'viem';
3
+ import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
4
+ import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
5
+ import { EvmSendTxParams, EvmTransactionOptions } from '../models/evm-send-tx-params';
6
+ import { Web3Error } from '../utils/parse-evm-error';
7
+ export declare class EvmAdapterSigner extends AbstractAdapterSigner<WalletClient & WalletActions, EvmSendTxParams, TransactionReceipt> {
8
+ private readonly publicRef;
9
+ get publicClient(): PublicActions & PublicClient;
10
+ constructor(publicRef: {
11
+ public: (PublicActions & PublicClient) | null;
12
+ }, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
13
+ getBlockchainName(): Promise<BlockchainName | undefined>;
14
+ /**
15
+ * Sends Eth in transaction and resolve the promise when the transaction is included in the block.
16
+ * @param toAddress Eth receiver address.
17
+ * @param [options] Additional options.
18
+ * @returns Transaction receipt.
19
+ */
20
+ sendTransaction(params: EvmSendTxParams): Promise<TransactionReceipt>;
21
+ /**
22
+ * Tries to send Eth in transaction and resolve the promise when the transaction is included in the block or rejects the error.
23
+ * @param toAddress Eth receiver address.
24
+ * @param [options] Additional options.
25
+ * @returns Transaction receipt.
26
+ */
27
+ trySendTransaction(params: EvmSendTxParams): Promise<TransactionReceipt>;
28
+ /**
29
+ * Executes method of smart-contract and resolve the promise when the transaction is included in the block.
30
+ * @param contractAddress Address of smart-contract which method is to be executed.
31
+ * @param contractAbi Abi of smart-contract which method is to be executed.
32
+ * @param methodName Method name to execute.
33
+ * @param methodArguments Method arguments.
34
+ * @param [options] Additional options.
35
+ * @returns Smart-contract method returned value.
36
+ */
37
+ executeContractMethod(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments: unknown[], options?: EvmTransactionOptions): Promise<TransactionReceipt>;
38
+ /**
39
+ * Tries to execute method of smart-contract and resolve the promise when the transaction is included in the block or rejects the error.
40
+ * @param contractAddress Address of smart-contract which method is to be executed.
41
+ * @param contractAbi Abi of smart-contract which method is to be executed.
42
+ * @param methodName Method name to execute.
43
+ * @param methodArguments Method arguments.
44
+ * @param [options] Additional options.
45
+ * @param allowError Check error and decides to execute contact if error is allowed.
46
+ */
47
+ tryExecuteContractMethod(contractAddress: string, contractAbi: Abi, methodName: string, methodArguments: unknown[], options?: EvmTransactionOptions, allowError?: (err: Web3Error) => boolean): Promise<TransactionReceipt>;
48
+ private shouldIgnoreError;
49
+ signMessage(message: string): Promise<string>;
50
+ private getChainAndAccount;
51
+ writeContract(address: string, abi: Abi, method: string, value?: string, methodArgs?: unknown[]): Promise<string>;
52
+ write(address: string, to: string, value: string, data: string, options?: EvmTransactionOptions): Promise<string>;
53
+ }