@cryptorubic/web3 0.0.35 → 0.0.37-alpha-1212.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +42 -15
- package/src/index.d.ts +130 -20
- package/src/index.js +130 -18
- package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.d.ts +40 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.js +177 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-send-tx-params.d.ts +5 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-psbt-encoded-config.d.ts +5 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-psbt-encoded-config.js +2 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.d.ts +7 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-trade-types.js +2 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.d.ts +6 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/models/btc-web3-private-models/bitcoin-transfer-encoded-config.js +2 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.d.ts +17 -0
- package/src/lib/adapter/adapters/adapter-bitcoin/signer/bitcoin-adapter-signer.js +131 -0
- package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.d.ts +4 -0
- package/src/lib/adapter/adapters/adapter-evm/constants/proxy-hash-errors.js +705 -0
- package/src/lib/adapter/adapters/adapter-evm/evm-adapter.d.ts +120 -0
- package/src/lib/adapter/adapters/adapter-evm/evm-adapter.js +498 -0
- package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.d.ts +38 -0
- package/src/lib/adapter/adapters/adapter-evm/models/evm-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.d.ts +53 -0
- package/src/lib/adapter/adapters/adapter-evm/signer/evm-adapter-signer.js +263 -0
- package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.d.ts +12 -0
- package/src/lib/adapter/adapters/adapter-evm/utils/parse-evm-error.js +70 -0
- package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.d.ts +16 -0
- package/src/lib/adapter/adapters/adapter-solana/models/solana-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-solana/services/solana-tokens-service.d.ts +22 -0
- package/src/lib/adapter/adapters/adapter-solana/services/solana-tokens-service.js +138 -0
- package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.d.ts +17 -0
- package/src/lib/adapter/adapters/adapter-solana/signer/solana-adapter-signer.js +87 -0
- package/src/lib/adapter/adapters/adapter-solana/solana-adapter.d.ts +49 -0
- package/src/lib/adapter/adapters/adapter-solana/solana-adapter.js +231 -0
- package/src/lib/adapter/adapters/adapter-stellar/constants/fake-stellar-wallet.d.ts +1 -0
- package/src/lib/adapter/adapters/adapter-stellar/constants/fake-stellar-wallet.js +4 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-client.d.ts +2 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-client.js +2 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-rpc-provider.d.ts +6 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-rpc-provider.js +2 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-send-tx-params.d.ts +8 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-wallet.d.ts +87 -0
- package/src/lib/adapter/adapters/adapter-stellar/models/stellar-wallet.js +2 -0
- package/src/lib/adapter/adapters/adapter-stellar/signer/stellar-adapter-signer.d.ts +18 -0
- package/src/lib/adapter/adapters/adapter-stellar/signer/stellar-adapter-signer.js +75 -0
- package/src/lib/adapter/adapters/adapter-stellar/stellar-adapter.d.ts +54 -0
- package/src/lib/adapter/adapters/adapter-stellar/stellar-adapter.js +253 -0
- package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.d.ts +8 -0
- package/src/lib/adapter/adapters/adapter-sui/models/sui-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.d.ts +17 -0
- package/src/lib/adapter/adapters/adapter-sui/signer/sui-adapter-signer.js +55 -0
- package/src/lib/adapter/adapters/adapter-sui/sui-adapter.d.ts +32 -0
- package/src/lib/adapter/adapters/adapter-sui/sui-adapter.js +111 -0
- package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.d.ts +26 -0
- package/src/lib/adapter/adapters/adapter-ton/models/ton-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.d.ts +8 -7
- package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +39 -56
- package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.d.ts +43 -0
- package/src/lib/adapter/adapters/adapter-ton/signer/ton-adapter-signer.js +166 -0
- package/src/lib/adapter/adapters/adapter-ton/ton-adapter.d.ts +32 -0
- package/src/lib/adapter/adapters/adapter-ton/ton-adapter.js +104 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.d.ts +13 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-send-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-transfer-tx-params.d.ts +7 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-transfer-tx-params.js +2 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.d.ts +4 -0
- package/src/lib/adapter/adapters/adapter-tron/models/tron-web-provider.js +2 -0
- package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.d.ts +19 -0
- package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +81 -0
- package/src/lib/adapter/adapters/adapter-tron/tron-adapter.d.ts +57 -0
- package/src/lib/adapter/adapters/{tron-adapter.js → adapter-tron/tron-adapter.js} +142 -69
- package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.d.ts +2 -0
- package/src/lib/adapter/adapters/adapter-tron/utils/parse-tron-error.js +20 -0
- package/src/lib/adapter/adapters/common/abstract-adapter.d.ts +84 -0
- package/src/lib/adapter/adapters/common/abstract-adapter.js +82 -0
- package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.d.ts +22 -0
- package/src/lib/adapter/adapters/common/signer/abstract-adapter-signer.js +42 -0
- package/src/lib/adapter/adapters/constants/possible-errors.d.ts +1 -0
- package/src/lib/adapter/adapters/constants/possible-errors.js +14 -0
- package/src/lib/adapter/adapters/constants/tron-multicall-abi.d.ts +1 -1
- package/src/lib/adapter/adapters/constants/uni-v3-permit-abi.d.ts +2 -0
- package/src/lib/adapter/adapters/constants/uni-v3-permit-abi.js +72 -0
- package/src/lib/adapter/adapters/models/approve-adapter.d.ts +16 -8
- package/src/lib/adapter/adapters/models/approve-adapter.js +4 -0
- package/src/lib/adapter/adapters/models/basic-transaction-options.d.ts +7 -0
- package/src/lib/adapter/adapters/models/basic-transaction-options.js +2 -0
- package/src/lib/adapter/adapters/models/bitcoin-user-address-info.d.ts +53 -0
- package/src/lib/adapter/adapters/models/bitcoin-user-address-info.js +2 -0
- package/src/lib/adapter/adapters/models/btc-wallet-provider.d.ts +10 -0
- package/src/lib/adapter/adapters/models/btc-wallet-provider.js +2 -0
- package/src/lib/adapter/adapters/models/evm-adapter-options.d.ts +1 -1
- package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.d.ts +5 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/batch-call.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.d.ts +4 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-call.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.d.ts +4 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/evm-multicall-response.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.d.ts +18 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price-viem.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/gas-price.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.d.ts +10 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/permit2-contract-types.js +2 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.d.ts +5 -0
- package/src/lib/adapter/adapters/models/evm-web3-public-models/rpc-response.js +2 -0
- package/src/lib/adapter/adapters/models/old-features-models/contract-params.d.ts +23 -0
- package/src/lib/adapter/adapters/models/old-features-models/contract-params.js +2 -0
- package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.d.ts +32 -0
- package/src/lib/adapter/adapters/models/old-features-models/encode-transaction-options.js +2 -0
- package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.d.ts +6 -0
- package/src/lib/adapter/adapters/models/old-features-models/is-deflation-token.js +2 -0
- package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.d.ts +5 -0
- package/src/lib/adapter/adapters/models/old-features-models/non-evm-chain-address-correct-response.js +2 -0
- package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.d.ts +65 -0
- package/src/lib/adapter/adapters/models/old-features-models/swap-transaction-options.js +2 -0
- package/src/lib/adapter/adapters/models/permit2-contract-types.d.ts +1 -0
- package/src/lib/adapter/adapters/models/permit2-contract-types.js +2 -0
- package/src/lib/adapter/adapters/models/solana-web3-types.d.ts +60 -0
- package/src/lib/adapter/adapters/models/solana-web3-types.js +2 -0
- package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.d.ts +8 -0
- package/src/lib/adapter/adapters/models/status-manager-models/tx-status-data.js +2 -0
- package/src/lib/adapter/adapters/models/token-models.d.ts +1 -0
- package/src/lib/adapter/adapters/models/token-models.js +2 -0
- package/src/lib/adapter/adapters/models/ton-adapter-config.d.ts +2 -2
- package/src/lib/adapter/adapters/models/ton-api-config.d.ts +1 -1
- package/src/lib/adapter/adapters/models/tonapi-models.d.ts +2 -2
- package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.d.ts +5 -0
- package/src/lib/adapter/adapters/models/web3-public-models/contract-multicall-response.js +2 -0
- package/src/lib/adapter/adapters/models/web3-public-models/method-data.d.ts +4 -0
- package/src/lib/adapter/adapters/models/web3-public-models/method-data.js +2 -0
- package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.d.ts +1 -0
- package/src/lib/adapter/adapters/models/web3-public-models/supported-token-field.js +2 -0
- package/src/lib/adapter/adapters/models/web3-public-models/tx-status.d.ts +13 -0
- package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +15 -0
- package/src/lib/adapter/adapters/utils/errors.d.ts +2 -0
- package/src/lib/adapter/adapters/utils/errors.js +10 -0
- package/src/lib/adapter/adapters/utils/options.d.ts +10 -0
- package/src/lib/adapter/adapters/utils/options.js +59 -0
- package/src/lib/adapter/adapters/utils/timeout.d.ts +1 -0
- package/src/lib/adapter/adapters/utils/timeout.js +15 -0
- package/src/lib/adapter/adapters/utils/waitFor.d.ts +1 -0
- package/src/lib/adapter/adapters/utils/waitFor.js +6 -0
- package/src/lib/adapter/blockchain-adapter-factory.service.d.ts +19 -11
- package/src/lib/adapter/blockchain-adapter-factory.service.js +58 -57
- package/src/lib/adapter/constants/chain-configs/chain-configs.d.ts +1 -1
- package/src/lib/adapter/constants/chain-configs/chain-configs.js +603 -138
- package/src/lib/adapter/constants/models/env-type.d.ts +1 -0
- package/src/lib/adapter/constants/models/env-type.js +2 -0
- package/src/lib/adapter/constants/models/solana-web3.d.ts +1 -1
- package/src/lib/adapter/constants/models/wallet-provider.d.ts +9 -3
- package/src/lib/adapter/constants/rubic-api-link-mapping.d.ts +2 -0
- package/src/lib/adapter/constants/rubic-api-link-mapping.js +16 -0
- package/src/lib/adapter/constants/viem-blockchain-mapping.d.ts +1 -1
- package/src/lib/adapter/constants/viem-blockchain-mapping.js +16 -7
- package/src/lib/adapter/models/create-factory-params.d.ts +24 -0
- package/src/lib/adapter/models/create-factory-params.js +2 -0
- package/src/lib/errors/blockchain/deflation-token.error.d.ts +11 -0
- package/src/lib/errors/blockchain/deflation-token.error.js +16 -0
- package/src/lib/errors/blockchain/healthcheck.error.d.ts +8 -0
- package/src/lib/errors/blockchain/healthcheck.error.js +15 -0
- package/src/lib/errors/blockchain/inactive-account.error.d.ts +4 -0
- package/src/lib/errors/blockchain/inactive-account.error.js +11 -0
- package/src/lib/errors/blockchain/invalid-address.error.d.ts +8 -0
- package/src/lib/errors/blockchain/invalid-address.error.js +15 -0
- package/src/lib/errors/blockchain/low-gas.error.d.ts +7 -0
- package/src/lib/errors/blockchain/low-gas.error.js +14 -0
- package/src/lib/errors/blockchain/transaction-reverted.error.d.ts +7 -0
- package/src/lib/errors/blockchain/transaction-reverted.error.js +14 -0
- package/src/lib/errors/blockchain/tron-insufficient-native-balance.d.ts +7 -0
- package/src/lib/errors/blockchain/tron-insufficient-native-balance.js +14 -0
- package/src/lib/errors/blockchain/tron-transaction-expired.d.ts +7 -0
- package/src/lib/errors/blockchain/tron-transaction-expired.js +14 -0
- package/src/lib/errors/blockchain/user-reject.error.d.ts +7 -0
- package/src/lib/errors/blockchain/user-reject.error.js +14 -0
- package/src/lib/errors/blockchain/wrong-from-address.error.d.ts +7 -0
- package/src/lib/errors/blockchain/wrong-from-address.error.js +14 -0
- package/src/lib/errors/blockchain/wrong-receiver-address.error.d.ts +7 -0
- package/src/lib/errors/blockchain/wrong-receiver-address.error.js +14 -0
- package/src/lib/errors/common/timeout.error.d.ts +4 -0
- package/src/lib/errors/common/timeout.error.js +12 -0
- package/src/lib/errors/common/tx-reverted-in-chain.error.d.ts +4 -0
- package/src/lib/errors/common/tx-reverted-in-chain.error.js +11 -0
- package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.d.ts +7 -0
- package/src/lib/errors/cross-chain/cross-chain-is-unavailable.error.js +14 -0
- package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.d.ts +7 -0
- package/src/lib/errors/cross-chain/insufficient-funds-gas-price-value.error.js +14 -0
- package/src/lib/errors/cross-chain/low-to-slippage.error.d.ts +6 -0
- package/src/lib/errors/cross-chain/low-to-slippage.error.js +10 -0
- package/src/lib/errors/cross-chain/max-gas-price-overflow.error.d.ts +8 -0
- package/src/lib/errors/cross-chain/max-gas-price-overflow.error.js +15 -0
- package/src/lib/errors/cross-chain/too-low-amount.error.d.ts +7 -0
- package/src/lib/errors/cross-chain/too-low-amount.error.js +14 -0
- package/src/lib/errors/cross-chain/unsupported-receiver-address.error.d.ts +4 -0
- package/src/lib/errors/cross-chain/unsupported-receiver-address.error.js +11 -0
- package/src/lib/errors/cross-chain/updated-rates-error.d.ts +10 -0
- package/src/lib/errors/cross-chain/updated-rates-error.js +17 -0
- package/src/lib/errors/models/rubic-api-error.d.ts +21 -0
- package/src/lib/errors/models/rubic-api-error.js +2 -0
- package/src/lib/errors/on-chain/on-chain-is-unavailable.error.d.ts +7 -0
- package/src/lib/errors/on-chain/on-chain-is-unavailable.error.js +14 -0
- package/src/lib/errors/proxy/unapproved-contract-error.d.ts +8 -0
- package/src/lib/errors/proxy/unapproved-contract-error.js +15 -0
- package/src/lib/errors/proxy/unapproved-method-error.d.ts +8 -0
- package/src/lib/errors/proxy/unapproved-method-error.js +15 -0
- package/src/lib/errors/proxy/unlisted-error.d.ts +9 -0
- package/src/lib/errors/proxy/unlisted-error.js +16 -0
- package/src/lib/errors/rubic-sdk.error.d.ts +6 -0
- package/src/lib/errors/rubic-sdk.error.js +13 -0
- package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.d.ts +7 -0
- package/src/lib/errors/swap/bridgers-pair-is-unavailable.error.js +14 -0
- package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.d.ts +8 -0
- package/src/lib/errors/swap/failed-to-check-for-transaction-receipt.error.js +15 -0
- package/src/lib/errors/swap/insufficient-funds-oneinch.error.d.ts +9 -0
- package/src/lib/errors/swap/insufficient-funds-oneinch.error.js +15 -0
- package/src/lib/errors/swap/insufficient-funds.error.d.ts +11 -0
- package/src/lib/errors/swap/insufficient-funds.error.js +18 -0
- package/src/lib/errors/swap/insufficient-liquidity.error.d.ts +7 -0
- package/src/lib/errors/swap/insufficient-liquidity.error.js +14 -0
- package/src/lib/errors/swap/lifi-pair-is-unavailable.error.d.ts +7 -0
- package/src/lib/errors/swap/lifi-pair-is-unavailable.error.js +14 -0
- package/src/lib/errors/swap/low-slippage-deflationary-token.error.d.ts +7 -0
- package/src/lib/errors/swap/low-slippage-deflationary-token.error.js +14 -0
- package/src/lib/errors/swap/low-slippage.error.d.ts +8 -0
- package/src/lib/errors/swap/low-slippage.error.js +15 -0
- package/src/lib/errors/swap/max-amount.error.d.ts +7 -0
- package/src/lib/errors/swap/max-amount.error.js +14 -0
- package/src/lib/errors/swap/max-decimals.error.d.ts +5 -0
- package/src/lib/errors/swap/max-decimals.error.js +12 -0
- package/src/lib/errors/swap/min-amount.error.d.ts +7 -0
- package/src/lib/errors/swap/min-amount.error.js +14 -0
- package/src/lib/errors/swap/no-linked-account-erros.d.ts +4 -0
- package/src/lib/errors/swap/no-linked-account-erros.js +11 -0
- package/src/lib/errors/swap/not-supported-blockchain.d.ts +8 -0
- package/src/lib/errors/swap/not-supported-blockchain.js +15 -0
- package/src/lib/errors/swap/not-supported-region.d.ts +7 -0
- package/src/lib/errors/swap/not-supported-region.js +14 -0
- package/src/lib/errors/swap/not-supported-tokens.error.d.ts +7 -0
- package/src/lib/errors/swap/not-supported-tokens.error.js +14 -0
- package/src/lib/errors/swap/not-whitelisted-provider.error.d.ts +10 -0
- package/src/lib/errors/swap/not-whitelisted-provider.error.js +17 -0
- package/src/lib/errors/swap/simulation-failed.error.d.ts +6 -0
- package/src/lib/errors/swap/simulation-failed.error.js +12 -0
- package/src/lib/errors/swap/swap-error-on-provider-side.d.ts +7 -0
- package/src/lib/errors/swap/swap-error-on-provider-side.js +14 -0
- package/src/lib/errors/swap/swap-request.error.d.ts +7 -0
- package/src/lib/errors/swap/swap-request.error.js +14 -0
- package/src/lib/errors/swap/trade-expired.error.d.ts +4 -0
- package/src/lib/errors/swap/trade-expired.error.js +11 -0
- package/src/lib/errors/swap/unnecessary-approve.error.d.ts +7 -0
- package/src/lib/errors/swap/unnecessary-approve.error.js +14 -0
- package/src/lib/errors/swap/wallet-not-connected.error.d.ts +8 -0
- package/src/lib/errors/swap/wallet-not-connected.error.js +15 -0
- package/src/lib/errors/swap/wrong-network.error.d.ts +10 -0
- package/src/lib/errors/swap/wrong-network.error.js +16 -0
- package/src/lib/utils/constants/changenow-api-blockchain.d.ts +1 -2
- package/src/lib/utils/constants/changenow-api-blockchain.js +1 -1
- package/src/lib/utils/constants/web3-pure-store.d.ts +2 -2
- package/src/lib/utils/constants/web3-pure-store.js +20 -18
- package/src/lib/utils/models/contract-multicall-response.d.ts +1 -1
- package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
- package/src/lib/utils/models/primitive-types.d.ts +1 -1
- package/src/lib/utils/models/stellar-transaction-config.d.ts +3 -0
- package/src/lib/utils/models/stellar-transaction-config.js +2 -0
- package/src/lib/utils/models/tron-transaction-config.d.ts +1 -1
- package/src/lib/utils/web3-pure.d.ts +2 -2
- package/src/lib/utils/web3-pure.js +6 -7
- package/src/lib/utils/web3-types/bitcoin-web3-pure.d.ts +1 -1
- package/src/lib/utils/web3-types/common-web3-pure.js +0 -2
- package/src/lib/utils/web3-types/evm-web3-pure.d.ts +1 -1
- package/src/lib/utils/web3-types/icp-web3-pure.d.ts +1 -1
- package/src/lib/utils/web3-types/near-web3-pure.d.ts +6 -0
- package/src/lib/utils/web3-types/near-web3-pure.js +24 -0
- package/src/lib/utils/web3-types/solana-web3-pure.d.ts +2 -1
- package/src/lib/utils/web3-types/solana-web3-pure.js +11 -1
- package/src/lib/utils/web3-types/stellar-web3-pure.d.ts +5 -0
- package/src/lib/utils/web3-types/stellar-web3-pure.js +30 -0
- package/src/lib/utils/web3-types/sui-web3-pure.d.ts +8 -0
- package/src/lib/utils/web3-types/sui-web3-pure.js +27 -0
- package/src/lib/utils/web3-types/ton-web3-pure.d.ts +2 -1
- package/src/lib/utils/web3-types/ton-web3-pure.js +6 -0
- package/src/lib/utils/web3-types/tron-web3-pure.d.ts +7 -8
- package/src/lib/utils/web3-types/tron-web3-pure.js +5 -5
- package/src/lib/utils/web3-types/zcash-web3-pure.d.ts +5 -0
- package/src/lib/utils/web3-types/zcash-web3-pure.js +17 -0
- package/src/lib/adapter/adapters/abstract-adapter.d.ts +0 -22
- package/src/lib/adapter/adapters/abstract-adapter.js +0 -61
- package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -55
- package/src/lib/adapter/adapters/evm-adapter.js +0 -326
- package/src/lib/adapter/adapters/solana-adapter.d.ts +0 -15
- package/src/lib/adapter/adapters/solana-adapter.js +0 -59
- package/src/lib/adapter/adapters/ton-adapter.d.ts +0 -22
- package/src/lib/adapter/adapters/ton-adapter.js +0 -100
- package/src/lib/adapter/adapters/tron-adapter.d.ts +0 -35
- /package/src/lib/adapter/adapters/{models/gas-price.js → adapter-bitcoin/models/btc-send-tx-params.js} +0 -0
- /package/src/lib/adapter/adapters/models/{gas-price.d.ts → evm-web3-public-models/gas-price.d.ts} +0 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ZcashWeb3Pure = void 0;
|
|
4
|
+
const changenow_api_blockchain_1 = require("../constants/changenow-api-blockchain");
|
|
5
|
+
const common_web3_pure_1 = require("./common-web3-pure");
|
|
6
|
+
class ZcashWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
7
|
+
constructor() {
|
|
8
|
+
super({
|
|
9
|
+
cnApiKey: changenow_api_blockchain_1.changenowApiBlockchain.ZCASH,
|
|
10
|
+
regex: /^(t1[a-zA-Z0-9]{33}|zs[a-zA-Z0-9]{76,}|u1[a-z0-9]{76,})$/
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
async isAddressCorrect(address) {
|
|
14
|
+
return /^(t1[a-zA-Z0-9]{33}|zs[a-zA-Z0-9]{76,}|u1[a-z0-9]{76,})$/.test(address);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
exports.ZcashWeb3Pure = ZcashWeb3Pure;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import BigNumber from "bignumber.js";
|
|
2
|
-
import { ICustomLogger, Token, TokenAmount, BlockchainName } from "@cryptorubic/core";
|
|
3
|
-
export declare abstract class AbstractAdapter<P, W, B extends BlockchainName> {
|
|
4
|
-
protected readonly logger?: ICustomLogger;
|
|
5
|
-
protected readonly blockchain: B;
|
|
6
|
-
private _public;
|
|
7
|
-
protected set public(value: P | null);
|
|
8
|
-
get public(): P;
|
|
9
|
-
private _wallet;
|
|
10
|
-
set wallet(value: W | null);
|
|
11
|
-
get wallet(): W;
|
|
12
|
-
private _walletAddress;
|
|
13
|
-
set walletAddress(value: string | null);
|
|
14
|
-
get walletAddress(): string;
|
|
15
|
-
protected constructor(blockchain: B, logger?: ICustomLogger);
|
|
16
|
-
abstract callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
|
|
17
|
-
needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string | BigNumber): Promise<boolean>;
|
|
18
|
-
handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
|
|
19
|
-
abstract read<T>(...args: unknown[]): Promise<T>;
|
|
20
|
-
abstract write(...args: unknown[]): Promise<string>;
|
|
21
|
-
static getRandomBytes(bytes: number): string;
|
|
22
|
-
}
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.AbstractAdapter = void 0;
|
|
4
|
-
const viem_1 = require("viem");
|
|
5
|
-
class AbstractAdapter {
|
|
6
|
-
set public(value) {
|
|
7
|
-
this._public = value;
|
|
8
|
-
}
|
|
9
|
-
get public() {
|
|
10
|
-
if (!this._public) {
|
|
11
|
-
const msg = 'Trying to access undefined client';
|
|
12
|
-
this.logger?.customLog(msg);
|
|
13
|
-
throw new Error(msg);
|
|
14
|
-
}
|
|
15
|
-
return this._public;
|
|
16
|
-
}
|
|
17
|
-
set wallet(value) {
|
|
18
|
-
this._wallet = value;
|
|
19
|
-
}
|
|
20
|
-
get wallet() {
|
|
21
|
-
if (!this._wallet) {
|
|
22
|
-
const msg = 'Trying to access undefined client';
|
|
23
|
-
this.logger?.customLog(msg);
|
|
24
|
-
throw new Error(msg);
|
|
25
|
-
}
|
|
26
|
-
return this._wallet;
|
|
27
|
-
}
|
|
28
|
-
set walletAddress(value) {
|
|
29
|
-
this._walletAddress = value;
|
|
30
|
-
}
|
|
31
|
-
get walletAddress() {
|
|
32
|
-
if (!this._walletAddress) {
|
|
33
|
-
const msg = 'Trying to access undefined walletAddress';
|
|
34
|
-
this.logger?.customLog(msg);
|
|
35
|
-
throw new Error(msg);
|
|
36
|
-
}
|
|
37
|
-
return this._walletAddress;
|
|
38
|
-
}
|
|
39
|
-
constructor(blockchain, logger) {
|
|
40
|
-
this._public = null;
|
|
41
|
-
this._wallet = null;
|
|
42
|
-
this._walletAddress = null;
|
|
43
|
-
this.blockchain = blockchain;
|
|
44
|
-
if (logger) {
|
|
45
|
-
this.logger = logger;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
needPreswapAction(token, contractAddress, walletAddress, amount) {
|
|
49
|
-
return Promise.resolve(false);
|
|
50
|
-
}
|
|
51
|
-
;
|
|
52
|
-
handlePreswap(contractAddress, walletAddress, tokenAmount) {
|
|
53
|
-
return Promise.resolve();
|
|
54
|
-
}
|
|
55
|
-
;
|
|
56
|
-
static getRandomBytes(bytes) {
|
|
57
|
-
const randomBytes = crypto.getRandomValues(new Uint8Array(bytes));
|
|
58
|
-
return (0, viem_1.bytesToHex)(randomBytes);
|
|
59
|
-
}
|
|
60
|
-
}
|
|
61
|
-
exports.AbstractAdapter = AbstractAdapter;
|
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
import { Abi, MulticallResponse, MulticallParameters, PublicActions, PublicClient, WalletClient, WalletActions, BlockNumber, BlockTag, GetBlockReturnType } from 'viem';
|
|
2
|
-
import { AbstractAdapter } from './abstract-adapter';
|
|
3
|
-
import { EvmBlockchainName, ICustomLogger, Token, TokenAmount, PriceTokenAmount } 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 { ApproveAdapter } from "./models/approve-adapter";
|
|
8
|
-
import { AllowanceInfo } from "./models/common-types";
|
|
9
|
-
import { GasPrice } from "./models/gas-price";
|
|
10
|
-
export declare class EvmAdapter extends AbstractAdapter<PublicActions & PublicClient, WalletClient & WalletActions, EvmBlockchainName> implements ApproveAdapter<EvmTransactionConfig> {
|
|
11
|
-
needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
|
|
12
|
-
handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
|
|
13
|
-
constructor(adapterOptions: EvmAdapterOptions, logger?: ICustomLogger);
|
|
14
|
-
protected createPublicClient(rpcList: string[]): PublicActions & PublicClient | null;
|
|
15
|
-
read<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[]): Promise<T>;
|
|
16
|
-
writeContract(address: string, abi: Abi, method: string, value?: string, methodArgs?: unknown[]): Promise<string>;
|
|
17
|
-
write(address: string, to: string, value: string, data: string): Promise<string>;
|
|
18
|
-
multicallByContract<T>(contracts: MulticallParameters, allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
19
|
-
multicallByAddress<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[][], allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
20
|
-
static encodeMethodCall(contractAddress: string, contractAbi: Abi, method: string, parameters?: unknown[], value?: string): EvmTransactionConfig;
|
|
21
|
-
simulateTransaction(config: EvmTransactionConfig, from: string): Promise<string>;
|
|
22
|
-
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<EvmBlockchainName>[]>;
|
|
23
|
-
getGasPrice(): Promise<string>;
|
|
24
|
-
checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string, amount?: BigNumber): Promise<boolean>;
|
|
25
|
-
/**
|
|
26
|
-
* @param walletAddress
|
|
27
|
-
* @param tokenAddress
|
|
28
|
-
* @returns wei amount
|
|
29
|
-
*/
|
|
30
|
-
getBalance(walletAddress: string, tokenAddress?: string): Promise<BigNumber>;
|
|
31
|
-
getTransactionCount(walletAddress: string): Promise<number>;
|
|
32
|
-
getAllowance(fromTokenAddress: string, walletAddress: string, spenderAddress: string): Promise<AllowanceInfo>;
|
|
33
|
-
encodeApprove(tokenAddress: string, spenderAddress: string, amount?: string): EvmTransactionConfig;
|
|
34
|
-
needApprove(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
|
|
35
|
-
approve(fromAddress: string, tokenAddress: string, spenderAddress: string, amount?: string): Promise<string>;
|
|
36
|
-
/**
|
|
37
|
-
* Calculates EIP-1559 specific gas details.
|
|
38
|
-
* @see {@link https://github.com/ethers-io/ethers.js/blob/master/packages/abstract-provider/src.ts/index.ts#L235}
|
|
39
|
-
* @returns block baseFee, average maxPriorityFeePerGas, and maxFeePerGas.
|
|
40
|
-
*/
|
|
41
|
-
getPriorityFeeGas(): Promise<GasPrice>;
|
|
42
|
-
/**
|
|
43
|
-
* Gets block by block id.
|
|
44
|
-
* @param [blockId] Block id: hash, number ... Default is 'latest'.
|
|
45
|
-
* @returns Block by blockId parameter.
|
|
46
|
-
*/
|
|
47
|
-
getBlock(blockType?: BlockNumber | BlockTag): Promise<GetBlockReturnType>;
|
|
48
|
-
/**
|
|
49
|
-
* Estimates average maxPriorityFeePerGas for EIP-1559 transactions based on last 20 blocks.
|
|
50
|
-
* @see {@link https://docs.alchemy.com/docs/how-to-build-a-gas-fee-estimator-using-eip-1559}
|
|
51
|
-
* @returns Average maxPriorityFeePerGas in wei
|
|
52
|
-
*/
|
|
53
|
-
getMaxPriorityFeePerGas(): Promise<number>;
|
|
54
|
-
getBaseFeePerGas(blockNumber: bigint): Promise<number>;
|
|
55
|
-
}
|
|
@@ -1,326 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EvmAdapter = void 0;
|
|
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");
|
|
8
|
-
const core_1 = require("@cryptorubic/core");
|
|
9
|
-
const bignumber_js_1 = require("bignumber.js");
|
|
10
|
-
const web3_pure_1 = require("../../utils/web3-pure");
|
|
11
|
-
class EvmAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
12
|
-
async needPreswapAction(token, contractAddress, walletAddress, amount) {
|
|
13
|
-
return this.needApprove(token, contractAddress, walletAddress, amount);
|
|
14
|
-
}
|
|
15
|
-
async handlePreswap(contractAddress, walletAddress, tokenAmount) {
|
|
16
|
-
const approveAmount = this.blockchain === core_1.BLOCKCHAIN_NAME.GNOSIS ||
|
|
17
|
-
this.blockchain === core_1.BLOCKCHAIN_NAME.CRONOS
|
|
18
|
-
? tokenAmount.stringWeiAmount
|
|
19
|
-
: tokenAmount.stringTokenAmount;
|
|
20
|
-
const isNative = web3_pure_1.Web3Pure.isNativeAddress(this.blockchain, tokenAmount.address);
|
|
21
|
-
const fromTokenAddress = isNative && tokenAmount.blockchain === core_1.BLOCKCHAIN_NAME.METIS
|
|
22
|
-
? '0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000'
|
|
23
|
-
: tokenAmount.blockchain;
|
|
24
|
-
await this.writeContract(fromTokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', '0', [approveAmount]);
|
|
25
|
-
}
|
|
26
|
-
constructor(adapterOptions, logger) {
|
|
27
|
-
super(adapterOptions.blockchain, logger);
|
|
28
|
-
this.public = this.createPublicClient(adapterOptions.rpcList);
|
|
29
|
-
if (adapterOptions?.walletAddress) {
|
|
30
|
-
}
|
|
31
|
-
}
|
|
32
|
-
createPublicClient(rpcList) {
|
|
33
|
-
if (!rpcList?.[0]) {
|
|
34
|
-
this.logger?.customError('RPC list is empty');
|
|
35
|
-
return null;
|
|
36
|
-
}
|
|
37
|
-
const transports = rpcList.map((rpc) => (0, viem_1.http)(rpc, {
|
|
38
|
-
batch: { batchSize: 2000, wait: 16 },
|
|
39
|
-
onFetchResponse: (response) => {
|
|
40
|
-
if ('error' in response) {
|
|
41
|
-
this.logger?.customError('Rpc fetch error', response.error);
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
retryCount: 5,
|
|
45
|
-
retryDelay: 100,
|
|
46
|
-
timeout: 5000
|
|
47
|
-
}));
|
|
48
|
-
const chain = viem_blockchain_mapping_1.viemBlockchainMapping[this.blockchain];
|
|
49
|
-
return (0, viem_1.createPublicClient)({
|
|
50
|
-
// @ts-ignore
|
|
51
|
-
chain,
|
|
52
|
-
transport: (0, viem_1.fallback)(transports, {
|
|
53
|
-
rank: true
|
|
54
|
-
})
|
|
55
|
-
});
|
|
56
|
-
}
|
|
57
|
-
async read(address, abi, method, methodArgs = []) {
|
|
58
|
-
const result = await this.public.readContract({
|
|
59
|
-
abi,
|
|
60
|
-
address: address,
|
|
61
|
-
args: methodArgs,
|
|
62
|
-
functionName: method
|
|
63
|
-
});
|
|
64
|
-
return result;
|
|
65
|
-
}
|
|
66
|
-
async writeContract(address, abi, method, value = '0', methodArgs = []) {
|
|
67
|
-
const result = await this.wallet.writeContract({
|
|
68
|
-
abi,
|
|
69
|
-
address: address,
|
|
70
|
-
account: address,
|
|
71
|
-
args: methodArgs,
|
|
72
|
-
functionName: method,
|
|
73
|
-
chain: this.public.chain,
|
|
74
|
-
value: (0, viem_1.parseEther)(value)
|
|
75
|
-
});
|
|
76
|
-
return result;
|
|
77
|
-
}
|
|
78
|
-
async write(address, to, value, data) {
|
|
79
|
-
const result = await this.wallet.sendTransaction({
|
|
80
|
-
account: address,
|
|
81
|
-
to: to,
|
|
82
|
-
value: (0, viem_1.parseEther)(value),
|
|
83
|
-
data: data,
|
|
84
|
-
chain: this.public.chain
|
|
85
|
-
});
|
|
86
|
-
return result;
|
|
87
|
-
}
|
|
88
|
-
async multicallByContract(contracts, allowErrors = true) {
|
|
89
|
-
const results = await this.public.multicall(contracts);
|
|
90
|
-
const rpcRequestFail = results.every((result) => result?.status === 'failure');
|
|
91
|
-
if (rpcRequestFail) {
|
|
92
|
-
// @ts-ignore
|
|
93
|
-
if (rpcRequestFail?.[0]?.stats === 'failure') {
|
|
94
|
-
// @ts-ignore
|
|
95
|
-
throw new Error(rpcRequestFail?.[0]?.error);
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
const hasErrors = results.find((result) => {
|
|
99
|
-
if (result?.error || result.status !== 'success') {
|
|
100
|
-
this.logger?.customWarn('Multicall error', result?.error?.data || result?.error?.message || result?.error);
|
|
101
|
-
return true;
|
|
102
|
-
}
|
|
103
|
-
return false;
|
|
104
|
-
});
|
|
105
|
-
if (hasErrors && !allowErrors) {
|
|
106
|
-
throw new Error('Multicall error');
|
|
107
|
-
}
|
|
108
|
-
return results;
|
|
109
|
-
}
|
|
110
|
-
async multicallByAddress(address, abi, method, methodArgs = [], allowErrors = true) {
|
|
111
|
-
const contract = { abi, address: address, functionName: method };
|
|
112
|
-
const contracts = methodArgs.map((multicallArguments) => ({
|
|
113
|
-
...contract,
|
|
114
|
-
args: multicallArguments
|
|
115
|
-
}));
|
|
116
|
-
return this.multicallByContract({ contracts }, allowErrors);
|
|
117
|
-
}
|
|
118
|
-
static encodeMethodCall(contractAddress, contractAbi, method, parameters = [], value) {
|
|
119
|
-
try {
|
|
120
|
-
const data = (0, viem_1.encodeFunctionData)({ abi: contractAbi, args: parameters, functionName: method });
|
|
121
|
-
return {
|
|
122
|
-
data: data,
|
|
123
|
-
to: contractAddress,
|
|
124
|
-
value: value || '0'
|
|
125
|
-
};
|
|
126
|
-
}
|
|
127
|
-
catch (err) {
|
|
128
|
-
throw err;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
async simulateTransaction(config, from) {
|
|
132
|
-
try {
|
|
133
|
-
const callParams = {
|
|
134
|
-
account: from,
|
|
135
|
-
data: config.data,
|
|
136
|
-
to: config.to,
|
|
137
|
-
...(config.value && { value: BigInt(config.value) })
|
|
138
|
-
};
|
|
139
|
-
const gasLimitWei = await this.public.estimateGas(callParams);
|
|
140
|
-
return gasLimitWei.toString();
|
|
141
|
-
}
|
|
142
|
-
catch (err) {
|
|
143
|
-
this.logger?.customError('Error while simulating transaction', err);
|
|
144
|
-
throw err;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
async callForTokensInfo(tokenAddresses) {
|
|
148
|
-
const nativeTokenIndex = tokenAddresses.findIndex((address) => (0, core_1.compareAddresses)(address, '0x0000000000000000000000000000000000000000'));
|
|
149
|
-
const filteredTokenAddresses = tokenAddresses.filter((_, index) => index !== nativeTokenIndex);
|
|
150
|
-
const contracts = filteredTokenAddresses.flatMap((contractAddress) => {
|
|
151
|
-
const contract = {
|
|
152
|
-
abi: erc20_token_abi_1.erc20TokenAbi,
|
|
153
|
-
address: contractAddress
|
|
154
|
-
};
|
|
155
|
-
return ['decimals', 'symbol', 'name'].map((method) => ({ ...contract, functionName: method }));
|
|
156
|
-
});
|
|
157
|
-
const results = contracts.length ? (await this.multicallByContract({ contracts })) : [];
|
|
158
|
-
const tokens = [];
|
|
159
|
-
for (let i = 0; i < results.length; i += 3) {
|
|
160
|
-
try {
|
|
161
|
-
const decimals = Number(results[i].result);
|
|
162
|
-
const symbol = results[i + 1].result;
|
|
163
|
-
const name = results[i + 2].result;
|
|
164
|
-
const token = new core_1.Token({
|
|
165
|
-
address: filteredTokenAddresses[i / 3],
|
|
166
|
-
blockchain: this.blockchain,
|
|
167
|
-
decimals,
|
|
168
|
-
name,
|
|
169
|
-
symbol
|
|
170
|
-
});
|
|
171
|
-
tokens.push(token);
|
|
172
|
-
}
|
|
173
|
-
catch (err) {
|
|
174
|
-
this.logger?.customError('Error while loading token', err);
|
|
175
|
-
tokens.push(null);
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
if (nativeTokenIndex === -1) {
|
|
179
|
-
return tokens.filter(Boolean);
|
|
180
|
-
}
|
|
181
|
-
const blockchainNativeToken = core_1.nativeTokensList[this.blockchain];
|
|
182
|
-
tokens.splice(nativeTokenIndex, 0, blockchainNativeToken);
|
|
183
|
-
return tokens.filter(Boolean);
|
|
184
|
-
}
|
|
185
|
-
async getGasPrice() {
|
|
186
|
-
const bigIntGas = await this.public.getGasPrice();
|
|
187
|
-
return String(bigIntGas);
|
|
188
|
-
}
|
|
189
|
-
async checkEnoughBalance(token, walletAddress, amount = token.tokenAmount) {
|
|
190
|
-
const weiBalance = await this.getBalance(walletAddress, token.isNative ? undefined : token.address);
|
|
191
|
-
const balance = core_1.Token.fromWei(weiBalance, token.decimals);
|
|
192
|
-
return balance.gte(amount);
|
|
193
|
-
}
|
|
194
|
-
/**
|
|
195
|
-
* @param walletAddress
|
|
196
|
-
* @param tokenAddress
|
|
197
|
-
* @returns wei amount
|
|
198
|
-
*/
|
|
199
|
-
async getBalance(walletAddress, tokenAddress) {
|
|
200
|
-
if (!tokenAddress) {
|
|
201
|
-
const nativeBalance = await this.public.getBalance({
|
|
202
|
-
address: walletAddress
|
|
203
|
-
});
|
|
204
|
-
return new bignumber_js_1.default(nativeBalance.toString());
|
|
205
|
-
}
|
|
206
|
-
const tokenBalance = await this.read(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'balanceOf', [walletAddress]);
|
|
207
|
-
return new bignumber_js_1.default(tokenBalance);
|
|
208
|
-
}
|
|
209
|
-
async getTransactionCount(walletAddress) {
|
|
210
|
-
const transactionCount = await this.public?.getTransactionCount({
|
|
211
|
-
address: walletAddress
|
|
212
|
-
});
|
|
213
|
-
return transactionCount ?? 0;
|
|
214
|
-
}
|
|
215
|
-
async getAllowance(fromTokenAddress, walletAddress, spenderAddress) {
|
|
216
|
-
const [decimals, allowance] = await Promise.all([
|
|
217
|
-
this.read(fromTokenAddress, erc20_token_abi_1.erc20TokenAbi, 'decimals'),
|
|
218
|
-
this.read(fromTokenAddress, erc20_token_abi_1.erc20TokenAbi, 'allowance', [walletAddress, spenderAddress])
|
|
219
|
-
]);
|
|
220
|
-
const allowanceWeiBN = new bignumber_js_1.default(allowance);
|
|
221
|
-
const allowanceNonWei = core_1.Token.fromWei(allowanceWeiBN, Number(decimals));
|
|
222
|
-
return { allowanceNonWei, allowanceWei: allowanceWeiBN };
|
|
223
|
-
}
|
|
224
|
-
;
|
|
225
|
-
encodeApprove(tokenAddress, spenderAddress, amount) {
|
|
226
|
-
const amountWei = amount ?? new bignumber_js_1.default(2).pow(256).minus(1).toFixed();
|
|
227
|
-
const tx = EvmAdapter.encodeMethodCall(tokenAddress, erc20_token_abi_1.erc20TokenAbi, 'approve', [spenderAddress, amountWei]);
|
|
228
|
-
return {
|
|
229
|
-
data: tx.data,
|
|
230
|
-
to: tx.to,
|
|
231
|
-
value: tx.value
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
;
|
|
235
|
-
async needApprove(token, contractAddress, walletAddress, amount) {
|
|
236
|
-
// Native coin in METIS can be Token required approve
|
|
237
|
-
if (token.isNative && token.blockchain !== core_1.BLOCKCHAIN_NAME.METIS) {
|
|
238
|
-
return false;
|
|
239
|
-
}
|
|
240
|
-
// Special native address for METIS native coin
|
|
241
|
-
const fromTokenAddress = token.isNative && token.blockchain === core_1.BLOCKCHAIN_NAME.METIS ? '0xdeaddeaddeaddeaddeaddeaddeaddeaddead0000' : token.address;
|
|
242
|
-
const { allowanceWei } = await this.getAllowance(fromTokenAddress, walletAddress, contractAddress);
|
|
243
|
-
return allowanceWei.lt(token.weiAmount);
|
|
244
|
-
}
|
|
245
|
-
;
|
|
246
|
-
async approve(fromAddress, tokenAddress, spenderAddress, amount) {
|
|
247
|
-
const config = this.encodeApprove(tokenAddress, spenderAddress, amount);
|
|
248
|
-
return this.write(fromAddress, config.to, config.value, config.data);
|
|
249
|
-
}
|
|
250
|
-
;
|
|
251
|
-
/**
|
|
252
|
-
* Calculates EIP-1559 specific gas details.
|
|
253
|
-
* @see {@link https://github.com/ethers-io/ethers.js/blob/master/packages/abstract-provider/src.ts/index.ts#L235}
|
|
254
|
-
* @returns block baseFee, average maxPriorityFeePerGas, and maxFeePerGas.
|
|
255
|
-
*/
|
|
256
|
-
async getPriorityFeeGas() {
|
|
257
|
-
const block = await this.getBlock('latest');
|
|
258
|
-
let lastBaseFeePerGas = null;
|
|
259
|
-
let maxFeePerGas = null;
|
|
260
|
-
let maxPriorityFeePerGas = null;
|
|
261
|
-
if (block && block.baseFeePerGas) {
|
|
262
|
-
const baseFeePerGas = await this.getBaseFeePerGas(block.number);
|
|
263
|
-
try {
|
|
264
|
-
lastBaseFeePerGas = baseFeePerGas;
|
|
265
|
-
maxPriorityFeePerGas = await this.getMaxPriorityFeePerGas();
|
|
266
|
-
maxFeePerGas = baseFeePerGas * 2 + maxPriorityFeePerGas;
|
|
267
|
-
}
|
|
268
|
-
catch (err) {
|
|
269
|
-
console.debug(err);
|
|
270
|
-
}
|
|
271
|
-
}
|
|
272
|
-
return {
|
|
273
|
-
baseFee: lastBaseFeePerGas?.toFixed(),
|
|
274
|
-
maxFeePerGas: maxFeePerGas?.toFixed(),
|
|
275
|
-
maxPriorityFeePerGas: maxPriorityFeePerGas?.toFixed()
|
|
276
|
-
};
|
|
277
|
-
}
|
|
278
|
-
/**
|
|
279
|
-
* Gets block by block id.
|
|
280
|
-
* @param [blockId] Block id: hash, number ... Default is 'latest'.
|
|
281
|
-
* @returns Block by blockId parameter.
|
|
282
|
-
*/
|
|
283
|
-
getBlock(blockType = 'latest') {
|
|
284
|
-
if (typeof blockType === 'string') {
|
|
285
|
-
// @TODO FIX TYPE
|
|
286
|
-
return this.public.getBlock({ blockTag: blockType });
|
|
287
|
-
}
|
|
288
|
-
return this.public.getBlock({ blockNumber: blockType });
|
|
289
|
-
}
|
|
290
|
-
/**
|
|
291
|
-
* Estimates average maxPriorityFeePerGas for EIP-1559 transactions based on last 20 blocks.
|
|
292
|
-
* @see {@link https://docs.alchemy.com/docs/how-to-build-a-gas-fee-estimator-using-eip-1559}
|
|
293
|
-
* @returns Average maxPriorityFeePerGas in wei
|
|
294
|
-
*/
|
|
295
|
-
async getMaxPriorityFeePerGas() {
|
|
296
|
-
const HISTORICAL_BLOCKS = 20;
|
|
297
|
-
const feeHistory = await this.public.getFeeHistory({
|
|
298
|
-
blockCount: HISTORICAL_BLOCKS,
|
|
299
|
-
rewardPercentiles: [50],
|
|
300
|
-
blockTag: 'pending'
|
|
301
|
-
});
|
|
302
|
-
if (!feeHistory?.reward) {
|
|
303
|
-
throw new Error('No fee history found');
|
|
304
|
-
}
|
|
305
|
-
const blocks = feeHistory.reward.map(x => x.map(reward => Number(reward)));
|
|
306
|
-
const rewardSum = blocks
|
|
307
|
-
.map(x => x[0])
|
|
308
|
-
.reduce((acc, v) => acc + (v || 0), 0);
|
|
309
|
-
return Math.round(rewardSum / blocks.length);
|
|
310
|
-
}
|
|
311
|
-
async getBaseFeePerGas(blockNumber) {
|
|
312
|
-
const feeHistory = await this.public.getFeeHistory({
|
|
313
|
-
blockCount: 1,
|
|
314
|
-
rewardPercentiles: [50],
|
|
315
|
-
// blockTag: 'pending',
|
|
316
|
-
blockNumber: blockNumber
|
|
317
|
-
});
|
|
318
|
-
if (!feeHistory?.baseFeePerGas.length) {
|
|
319
|
-
throw new Error('No fee history found');
|
|
320
|
-
}
|
|
321
|
-
const feedSum = feeHistory.baseFeePerGas
|
|
322
|
-
.reduce((acc, v) => acc.plus(v.toString() || 0), new bignumber_js_1.default(0));
|
|
323
|
-
return feedSum.dividedBy(feeHistory.baseFeePerGas.length).toNumber();
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
exports.EvmAdapter = EvmAdapter;
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Abi, MulticallResponse, MulticallParameters } from 'viem';
|
|
2
|
-
import { AbstractAdapter } from './abstract-adapter';
|
|
3
|
-
import { Connection } from "@solana/web3.js";
|
|
4
|
-
import { ICustomLogger, SolanaBlockchainName, Token } from "@cryptorubic/core";
|
|
5
|
-
import { EvmTransactionConfig } from "../../utils/models/evm-transaction-config";
|
|
6
|
-
export declare class SolanaAdapter extends AbstractAdapter<Connection, Connection, SolanaBlockchainName> {
|
|
7
|
-
constructor(rpcList: string[], logger?: ICustomLogger);
|
|
8
|
-
private createPublicClient;
|
|
9
|
-
read<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
|
|
10
|
-
write<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[]): Promise<T>;
|
|
11
|
-
multicallByContract<T>(_contracts: MulticallParameters, _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
12
|
-
multicallByAddress<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[][], _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
13
|
-
simulateTransaction(_config: EvmTransactionConfig, _from: string): Promise<void>;
|
|
14
|
-
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SolanaBlockchainName>[]>;
|
|
15
|
-
}
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SolanaAdapter = void 0;
|
|
4
|
-
const abstract_adapter_1 = require("./abstract-adapter");
|
|
5
|
-
const web3_js_1 = require("@solana/web3.js");
|
|
6
|
-
const utl_sdk_1 = require("@solflare-wallet/utl-sdk");
|
|
7
|
-
const core_1 = require("@cryptorubic/core");
|
|
8
|
-
const web3_pure_1 = require("../../utils/web3-pure");
|
|
9
|
-
class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
10
|
-
constructor(rpcList, logger) {
|
|
11
|
-
super(core_1.BLOCKCHAIN_NAME.SOLANA, logger);
|
|
12
|
-
this.public = this.createPublicClient(rpcList);
|
|
13
|
-
}
|
|
14
|
-
createPublicClient(rpcList) {
|
|
15
|
-
if (!rpcList?.[0]) {
|
|
16
|
-
this.logger?.customError('RPC list is empty');
|
|
17
|
-
return null;
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return new web3_js_1.Connection(rpcList[0], 'confirmed');
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
async read(_address, _abi, _method, _methodArgs = []) {
|
|
24
|
-
throw new Error('Method multicall is not supported');
|
|
25
|
-
}
|
|
26
|
-
async write(_address, _abi, _method, _methodArgs = []) {
|
|
27
|
-
throw new Error('Method multicall is not supported');
|
|
28
|
-
}
|
|
29
|
-
async multicallByContract(_contracts, _allowErrors = true) {
|
|
30
|
-
throw new Error('Method multicall is not supported');
|
|
31
|
-
}
|
|
32
|
-
async multicallByAddress(_address, _abi, _method, _methodArgs = [], _allowErrors = true) {
|
|
33
|
-
throw new Error('Method multicall is not supported');
|
|
34
|
-
}
|
|
35
|
-
async simulateTransaction(_config, _from) { }
|
|
36
|
-
async callForTokensInfo(tokenAddresses) {
|
|
37
|
-
const nativeTokenIndex = tokenAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.SOLANA, address));
|
|
38
|
-
const filteredTokenAddresses = tokenAddresses.filter((_, index) => index !== nativeTokenIndex);
|
|
39
|
-
const mints = filteredTokenAddresses.map((address) => new web3_js_1.PublicKey(address));
|
|
40
|
-
const tokenSdk = new utl_sdk_1.Client();
|
|
41
|
-
const tokensMint = await tokenSdk.fetchMints(mints);
|
|
42
|
-
const tokens = tokensMint.map((token) => {
|
|
43
|
-
return new core_1.Token({
|
|
44
|
-
address: token.address.toString(),
|
|
45
|
-
blockchain: core_1.BLOCKCHAIN_NAME.SOLANA,
|
|
46
|
-
decimals: token.decimals,
|
|
47
|
-
name: token.name,
|
|
48
|
-
symbol: token.symbol
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
if (nativeTokenIndex === -1) {
|
|
52
|
-
return tokens;
|
|
53
|
-
}
|
|
54
|
-
const blockchainNativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.SOLANA];
|
|
55
|
-
tokens.splice(nativeTokenIndex, 0, blockchainNativeToken);
|
|
56
|
-
return tokens;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
exports.SolanaAdapter = SolanaAdapter;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
import { BlockchainName, HttpClient, ICustomLogger, PriceTokenAmount, Token, TokenAmount, TonBlockchainName } from '@cryptorubic/core';
|
|
2
|
-
import { Address, TonClient } from "@ton/ton";
|
|
3
|
-
import { TonApiParseAddressResp } from "./models/tonapi-models";
|
|
4
|
-
import { TonAdapterConfig } from "./models/ton-adapter-config";
|
|
5
|
-
import BigNumber from "bignumber.js";
|
|
6
|
-
import { TonTransactionConfig } from "../../utils/models/ton-transaction-config";
|
|
7
|
-
import { AbstractAdapter } from "./abstract-adapter";
|
|
8
|
-
export declare class TonAdapter extends AbstractAdapter<TonClient, TonClient, TonBlockchainName> {
|
|
9
|
-
private readonly tonApi;
|
|
10
|
-
readonly tonClient: TonClient;
|
|
11
|
-
constructor(httpClient: HttpClient, config: TonAdapterConfig, logger?: ICustomLogger);
|
|
12
|
-
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
|
|
13
|
-
read<T>(args: unknown): Promise<T>;
|
|
14
|
-
write(args: unknown): Promise<string>;
|
|
15
|
-
getAllFormatsOfAddress(walletAddress: string): Promise<TonApiParseAddressResp>;
|
|
16
|
-
getWalletAddress(address: Address, contractAddress: Address): Promise<Address>;
|
|
17
|
-
checkEnoughTokenBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string, amount?: BigNumber): Promise<boolean>;
|
|
18
|
-
getBalance(walletAddress: string, tokenAddress?: string): Promise<BigNumber>;
|
|
19
|
-
getTransferEncodedConfig(tokenAddress: string, walletAddress: string, receiver: string, amount: string): Promise<TonTransactionConfig>;
|
|
20
|
-
private getTransferNativeConfig;
|
|
21
|
-
private getTransferJettonConfig;
|
|
22
|
-
}
|