@cryptorubic/web3 0.0.34 → 0.0.37-alpha-1212.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +42 -15
- package/src/index.d.ts +130 -19
- package/src/index.js +130 -17
- 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-send-tx-params.js +2 -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} +145 -70
- 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 +20 -6
- 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.d.ts +22 -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 +20 -10
- package/src/lib/adapter/blockchain-adapter-factory.service.js +58 -53
- 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 +8 -6
- package/src/lib/utils/web3-types/tron-web3-pure.js +18 -4
- 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 -19
- package/src/lib/adapter/adapters/abstract-adapter.js +0 -49
- package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -34
- package/src/lib/adapter/adapters/evm-adapter.js +0 -247
- 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 -36
|
@@ -25,7 +25,7 @@ class TronWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
|
25
25
|
* @returns An ABI encoded function call. Means function signature + parameters.
|
|
26
26
|
*/
|
|
27
27
|
static encodeFunctionCall(contractAbi, methodName, methodArguments) {
|
|
28
|
-
const methodSignature = contractAbi.find(abiItem => abiItem.name === methodName);
|
|
28
|
+
const methodSignature = contractAbi.find((abiItem) => abiItem.name === methodName);
|
|
29
29
|
if (methodSignature === undefined) {
|
|
30
30
|
throw Error('No such method in abi');
|
|
31
31
|
}
|
|
@@ -50,7 +50,7 @@ class TronWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
|
50
50
|
return this.flattenParameterToPrimitive(decodedParam);
|
|
51
51
|
}
|
|
52
52
|
static flattenTypesToString(abiInputs) {
|
|
53
|
-
return (abiInputs?.map(abiInput => {
|
|
53
|
+
return (abiInputs?.map((abiInput) => {
|
|
54
54
|
if (abiInput.type === 'tuple') {
|
|
55
55
|
const flattenedComponents = this.flattenTypesToString(abiInput.components);
|
|
56
56
|
return `(${flattenedComponents.join(',')})`;
|
|
@@ -59,7 +59,7 @@ class TronWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
|
59
59
|
}) || []);
|
|
60
60
|
}
|
|
61
61
|
static flattenTypesToArray(abiInputs) {
|
|
62
|
-
return (abiInputs?.map(abiInput => {
|
|
62
|
+
return (abiInputs?.map((abiInput) => {
|
|
63
63
|
if (abiInput.type === 'tuple') {
|
|
64
64
|
return this.flattenTypesToArray(abiInput.components);
|
|
65
65
|
}
|
|
@@ -69,7 +69,7 @@ class TronWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
|
69
69
|
static flattenParameters(parameters) {
|
|
70
70
|
const types = [];
|
|
71
71
|
const values = [];
|
|
72
|
-
parameters.forEach(parameter => {
|
|
72
|
+
parameters.forEach((parameter) => {
|
|
73
73
|
if (parameter.type === 'tuple') {
|
|
74
74
|
const [tupleTypes, tupleValues] = this.flattenParameters(parameter.value);
|
|
75
75
|
types.push(tupleTypes);
|
|
@@ -97,5 +97,19 @@ class TronWeb3Pure extends common_web3_pure_1.CommonWeb3Pure {
|
|
|
97
97
|
};
|
|
98
98
|
}, {});
|
|
99
99
|
}
|
|
100
|
+
static encodeMethodCall(contractAddress, contractAbi, methodName, methodArguments, callValue, feeLimit) {
|
|
101
|
+
const methodAbi = contractAbi.find((abiItem) => abiItem.name === methodName);
|
|
102
|
+
if (!methodAbi) {
|
|
103
|
+
throw new Error('Encode fail. No method in ABI');
|
|
104
|
+
}
|
|
105
|
+
const signature = `${methodAbi.name}(${this.flattenTypesToString(methodAbi.inputs).join(',')})`;
|
|
106
|
+
return {
|
|
107
|
+
to: contractAddress,
|
|
108
|
+
arguments: methodArguments,
|
|
109
|
+
signature,
|
|
110
|
+
...(callValue && { callValue }),
|
|
111
|
+
...(feeLimit && { feeLimit })
|
|
112
|
+
};
|
|
113
|
+
}
|
|
100
114
|
}
|
|
101
115
|
exports.TronWeb3Pure = TronWeb3Pure;
|
|
@@ -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,19 +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
|
-
protected constructor(blockchain: B, logger?: ICustomLogger);
|
|
13
|
-
abstract callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<BlockchainName>[]>;
|
|
14
|
-
needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string | BigNumber): Promise<boolean>;
|
|
15
|
-
handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
|
|
16
|
-
abstract read<T>(...args: unknown[]): Promise<T>;
|
|
17
|
-
abstract write(...args: unknown[]): Promise<string>;
|
|
18
|
-
static getRandomBytes(bytes: number): string;
|
|
19
|
-
}
|
|
@@ -1,49 +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
|
-
constructor(blockchain, logger) {
|
|
29
|
-
this._public = null;
|
|
30
|
-
this._wallet = null;
|
|
31
|
-
this.blockchain = blockchain;
|
|
32
|
-
if (logger) {
|
|
33
|
-
this.logger = logger;
|
|
34
|
-
}
|
|
35
|
-
}
|
|
36
|
-
needPreswapAction(token, contractAddress, walletAddress, amount) {
|
|
37
|
-
return Promise.resolve(false);
|
|
38
|
-
}
|
|
39
|
-
;
|
|
40
|
-
handlePreswap(contractAddress, walletAddress, tokenAmount) {
|
|
41
|
-
return Promise.resolve();
|
|
42
|
-
}
|
|
43
|
-
;
|
|
44
|
-
static getRandomBytes(bytes) {
|
|
45
|
-
const randomBytes = crypto.getRandomValues(new Uint8Array(bytes));
|
|
46
|
-
return (0, viem_1.bytesToHex)(randomBytes);
|
|
47
|
-
}
|
|
48
|
-
}
|
|
49
|
-
exports.AbstractAdapter = AbstractAdapter;
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
import { Abi, MulticallResponse, MulticallParameters, PublicActions, PublicClient, WalletClient, WalletActions } 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
|
-
export declare class EvmAdapter extends AbstractAdapter<PublicActions & PublicClient, WalletClient & WalletActions, EvmBlockchainName> implements ApproveAdapter {
|
|
10
|
-
needPreswapAction(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
|
|
11
|
-
handlePreswap(contractAddress: string, walletAddress: string, tokenAmount: TokenAmount): Promise<void>;
|
|
12
|
-
constructor(adapterOptions: EvmAdapterOptions, logger?: ICustomLogger);
|
|
13
|
-
protected createPublicClient(rpcList: string[]): PublicActions & PublicClient | null;
|
|
14
|
-
read<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[]): Promise<T>;
|
|
15
|
-
writeContract(address: string, abi: Abi, method: string, value?: string, methodArgs?: unknown[]): Promise<string>;
|
|
16
|
-
write(address: string, to: string, value: string, data: string): Promise<string>;
|
|
17
|
-
multicallByContract<T>(contracts: MulticallParameters, allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
18
|
-
multicallByAddress<T>(address: string, abi: Abi, method: string, methodArgs?: unknown[][], allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
19
|
-
static encodeMethodCall(contractAddress: string, contractAbi: Abi, method: string, parameters?: unknown[], value?: string): EvmTransactionConfig;
|
|
20
|
-
simulateTransaction(config: EvmTransactionConfig, from: string): Promise<void>;
|
|
21
|
-
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<EvmBlockchainName>[]>;
|
|
22
|
-
getGasPrice(): Promise<string>;
|
|
23
|
-
checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string, amount?: BigNumber): Promise<boolean>;
|
|
24
|
-
/**
|
|
25
|
-
* @param walletAddress
|
|
26
|
-
* @param tokenAddress
|
|
27
|
-
* @returns wei amount
|
|
28
|
-
*/
|
|
29
|
-
getBalance(walletAddress: string, tokenAddress?: string): Promise<BigNumber>;
|
|
30
|
-
getTransactionCount(walletAddress: string): Promise<number>;
|
|
31
|
-
getAllowance(fromTokenAddress: string, walletAddress: string, spenderAddress: string): Promise<AllowanceInfo>;
|
|
32
|
-
encodeApprove(tokenAddress: string, spenderAddress: string, amount?: string): EvmTransactionConfig;
|
|
33
|
-
needApprove(token: TokenAmount, contractAddress: string, walletAddress: string, amount: string): Promise<boolean>;
|
|
34
|
-
}
|
|
@@ -1,247 +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
|
-
// @ts-ignore
|
|
140
|
-
await this.core.call(callParams);
|
|
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
|
-
}
|
|
247
|
-
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
|
-
}
|
|
@@ -1,100 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.TonAdapter = void 0;
|
|
4
|
-
const core_1 = require("@cryptorubic/core");
|
|
5
|
-
const ton_api_service_1 = require("./utils/ton-api.service");
|
|
6
|
-
const ton_1 = require("@ton/ton");
|
|
7
|
-
const bignumber_js_1 = require("bignumber.js");
|
|
8
|
-
const abstract_adapter_1 = require("./abstract-adapter");
|
|
9
|
-
const web3_pure_1 = require("../../utils/web3-pure");
|
|
10
|
-
class TonAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
11
|
-
constructor(httpClient, config, logger) {
|
|
12
|
-
super(core_1.BLOCKCHAIN_NAME.TON, logger);
|
|
13
|
-
this.tonApi = new ton_api_service_1.TonApiService(httpClient, config.tonApiConfig);
|
|
14
|
-
this.tonClient = new ton_1.TonClient(config.tonClientConfig);
|
|
15
|
-
}
|
|
16
|
-
async callForTokensInfo(tokenAddresses) {
|
|
17
|
-
const info = await Promise.all(tokenAddresses.map((address) => {
|
|
18
|
-
if (web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TON, address)) {
|
|
19
|
-
const nativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.TON];
|
|
20
|
-
return nativeToken;
|
|
21
|
-
}
|
|
22
|
-
return this.tonApi.fetchTokenInfo(address);
|
|
23
|
-
}));
|
|
24
|
-
if (!info.length)
|
|
25
|
-
return [];
|
|
26
|
-
const necessaryInfo = info.map(({ decimals, name, symbol, address }) => new core_1.Token({
|
|
27
|
-
address,
|
|
28
|
-
blockchain: core_1.BLOCKCHAIN_NAME.TON,
|
|
29
|
-
decimals: Number(decimals),
|
|
30
|
-
name,
|
|
31
|
-
symbol
|
|
32
|
-
}));
|
|
33
|
-
return necessaryInfo;
|
|
34
|
-
}
|
|
35
|
-
read(args) {
|
|
36
|
-
throw new Error('Not implemented');
|
|
37
|
-
}
|
|
38
|
-
write(args) {
|
|
39
|
-
throw new Error('Not implemented');
|
|
40
|
-
}
|
|
41
|
-
async getAllFormatsOfAddress(walletAddress) {
|
|
42
|
-
return this.tonApi.getAllFormatsOfAddress(walletAddress);
|
|
43
|
-
}
|
|
44
|
-
async getWalletAddress(address, contractAddress) {
|
|
45
|
-
const addressResult = await this.tonClient.runMethod(contractAddress, 'get_wallet_address', [
|
|
46
|
-
{ cell: (0, ton_1.beginCell)().storeAddress(address).endCell(), type: 'slice' }
|
|
47
|
-
]);
|
|
48
|
-
return addressResult.stack.readAddress();
|
|
49
|
-
}
|
|
50
|
-
async checkEnoughTokenBalance(token, walletAddress, amount = token.tokenAmount) {
|
|
51
|
-
const weiBalance = await this.getBalance(walletAddress, token.isNative ? undefined : token.address);
|
|
52
|
-
const balance = core_1.Token.fromWei(weiBalance, token.decimals);
|
|
53
|
-
return balance.gte(amount);
|
|
54
|
-
}
|
|
55
|
-
async getBalance(walletAddress, tokenAddress) {
|
|
56
|
-
const isNative = !tokenAddress || web3_pure_1.Web3Pure.isNativeAddress(core_1.BLOCKCHAIN_NAME.TON, tokenAddress);
|
|
57
|
-
const tokenBalance = isNative
|
|
58
|
-
? (await this.tonApi.fetchAccountInfo(walletAddress)).balance
|
|
59
|
-
: (await this.tonApi.fetchTokenInfoForWallet(walletAddress, tokenAddress)).balance;
|
|
60
|
-
return new bignumber_js_1.default(tokenBalance || 0);
|
|
61
|
-
}
|
|
62
|
-
getTransferEncodedConfig(tokenAddress, walletAddress, receiver, amount) {
|
|
63
|
-
if ((0, core_1.compareAddresses)(core_1.nativeTokensList.TON.address, tokenAddress)) {
|
|
64
|
-
return this.getTransferNativeConfig(receiver, amount);
|
|
65
|
-
}
|
|
66
|
-
return this.getTransferJettonConfig(tokenAddress, walletAddress, receiver, amount);
|
|
67
|
-
}
|
|
68
|
-
async getTransferNativeConfig(receiver, amount) {
|
|
69
|
-
const transferAmount = BigInt(amount);
|
|
70
|
-
const encodeConfig = {
|
|
71
|
-
address: receiver,
|
|
72
|
-
amount: transferAmount.toString()
|
|
73
|
-
};
|
|
74
|
-
return encodeConfig;
|
|
75
|
-
}
|
|
76
|
-
async getTransferJettonConfig(tokenAddress, walletAddress, receiver, amount) {
|
|
77
|
-
const fromAddress = ton_1.Address.parse(walletAddress);
|
|
78
|
-
const contractAddress = ton_1.Address.parse(tokenAddress);
|
|
79
|
-
const transferAmount = BigInt(amount);
|
|
80
|
-
const receiverAddress = ton_1.Address.parse(receiver);
|
|
81
|
-
const jettonWalletAddress = await this.getWalletAddress(fromAddress, contractAddress);
|
|
82
|
-
const body = (0, ton_1.beginCell)()
|
|
83
|
-
.storeUint(0xf8a7ea5, 32)
|
|
84
|
-
.storeUint(0, 64)
|
|
85
|
-
.storeCoins(transferAmount)
|
|
86
|
-
.storeAddress(receiverAddress)
|
|
87
|
-
.storeAddress(receiverAddress)
|
|
88
|
-
.storeBit(0)
|
|
89
|
-
.storeCoins((0, ton_1.toNano)('0.02'))
|
|
90
|
-
.storeBit(0)
|
|
91
|
-
.endCell();
|
|
92
|
-
const encodeConfig = {
|
|
93
|
-
address: jettonWalletAddress.toRawString(),
|
|
94
|
-
amount: (0, ton_1.toNano)('0.05').toString(),
|
|
95
|
-
payload: body.toBoc().toString('base64')
|
|
96
|
-
};
|
|
97
|
-
return encodeConfig;
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
exports.TonAdapter = TonAdapter;
|