@cryptorubic/web3 0.8.16-alpha-usdt-zero-bridge.0 → 0.8.16-alpha-usdt-zero-bridge.2
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 +22 -15
- package/src/index.d.ts +130 -22
- package/src/index.js +130 -20
- package/src/lib/adapter/adapters/adapter-bitcoin/bitcoin-adapter.d.ts +38 -0
- package/src/lib/adapter/adapters/{bitcoin-adapter.js → adapter-bitcoin/bitcoin-adapter.js} +35 -13
- 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/{evm-adapter.js → adapter-evm/evm-adapter.js} +215 -87
- 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 +268 -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/{utils → adapter-solana/services}/solana-tokens-service.d.ts +1 -1
- package/src/lib/adapter/adapters/{utils → adapter-solana/services}/solana-tokens-service.js +2 -2
- 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/{solana-adapter.js → adapter-solana/solana-adapter.js} +105 -41
- 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/{sui-adapter.js → adapter-sui/sui-adapter.js} +45 -9
- 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 +7 -6
- package/src/lib/adapter/adapters/{utils → adapter-ton/services}/ton-api.service.js +17 -9
- 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-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 +17 -0
- package/src/lib/adapter/adapters/adapter-tron/signer/tron-adapter-signer.js +57 -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} +131 -66
- 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/tron-multicall-abi.d.ts +1 -1
- package/src/lib/adapter/adapters/models/approve-adapter.d.ts +13 -9
- package/src/lib/adapter/adapters/models/approve-adapter.js +1 -1
- package/src/lib/adapter/adapters/models/basic-transaction-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/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/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 +10 -0
- package/src/lib/adapter/adapters/models/web3-public-models/tx-status.js +12 -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/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 +15 -13
- package/src/lib/adapter/blockchain-adapter-factory.service.js +44 -61
- package/src/lib/adapter/constants/chain-configs/chain-configs.d.ts +1 -1
- package/src/lib/adapter/constants/chain-configs/chain-configs.js +92 -56
- 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/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 +4 -3
- package/src/lib/adapter/models/create-factory-params.d.ts +23 -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/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/web3-pure-store.js +17 -15
- package/src/lib/utils/models/evm-transaction-config.d.ts +2 -0
- 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/tron-web3-pure.d.ts +2 -3
- 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 -23
- package/src/lib/adapter/adapters/abstract-adapter.js +0 -59
- package/src/lib/adapter/adapters/bitcoin-adapter.d.ts +0 -18
- package/src/lib/adapter/adapters/evm-adapter.d.ts +0 -59
- package/src/lib/adapter/adapters/solana-adapter.d.ts +0 -35
- package/src/lib/adapter/adapters/sui-adapter.d.ts +0 -17
- 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
- /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
|
@@ -1,56 +1,49 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SolanaAdapter =
|
|
3
|
+
exports.SolanaAdapter = void 0;
|
|
4
4
|
const spl_token_1 = require("@solana/spl-token");
|
|
5
|
-
const abstract_adapter_1 = require("./abstract-adapter");
|
|
6
5
|
const web3_js_1 = require("@solana/web3.js");
|
|
7
6
|
const core_1 = require("@cryptorubic/core");
|
|
8
|
-
const web3_pure_1 = require("../../utils/web3-pure");
|
|
9
7
|
const bignumber_js_1 = require("bignumber.js");
|
|
10
|
-
const solana_tokens_service_1 = require("./utils/solana-tokens-service");
|
|
11
8
|
const bs58_1 = require("bs58");
|
|
12
|
-
const
|
|
13
|
-
|
|
9
|
+
const js_base64_1 = require("js-base64");
|
|
10
|
+
const abstract_adapter_1 = require("../common/abstract-adapter");
|
|
11
|
+
const web3_pure_1 = require("../../../utils/web3-pure");
|
|
12
|
+
const solana_tokens_service_1 = require("./services/solana-tokens-service");
|
|
13
|
+
const solana_adapter_signer_1 = require("./signer/solana-adapter-signer");
|
|
14
|
+
const tx_status_1 = require("../models/web3-public-models/tx-status");
|
|
14
15
|
class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
15
|
-
constructor(rpcList, httpClient, logger) {
|
|
16
|
+
constructor(rpcList, httpClient, logger, clientParams) {
|
|
16
17
|
super(core_1.BLOCKCHAIN_NAME.SOLANA, logger);
|
|
18
|
+
this.rpcList = rpcList;
|
|
17
19
|
this.httpClient = httpClient;
|
|
18
|
-
this.
|
|
20
|
+
this.signer = new solana_adapter_signer_1.SolanaAdapterSigner(this.publicRef, httpClient, logger, clientParams);
|
|
19
21
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
this.logger?.customError('RPC list is empty');
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
return new web3_js_1.Connection(rpcList[0], 'confirmed');
|
|
27
|
-
}
|
|
28
|
-
}
|
|
29
|
-
async read(_address, _abi, _method, _methodArgs = []) {
|
|
30
|
-
throw new Error('Method multicall is not supported');
|
|
22
|
+
initWeb3Client() {
|
|
23
|
+
this.public = this.createConection(this.rpcList);
|
|
31
24
|
}
|
|
32
|
-
async
|
|
33
|
-
throw new Error('Method
|
|
25
|
+
async callContractMethod() {
|
|
26
|
+
throw new Error('Method call is not supported');
|
|
34
27
|
}
|
|
35
|
-
async
|
|
36
|
-
throw new Error('Method
|
|
28
|
+
async read() {
|
|
29
|
+
throw new Error('Method read is not supported');
|
|
37
30
|
}
|
|
38
|
-
async
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
31
|
+
async getTransactionStatus(txHash) {
|
|
32
|
+
try {
|
|
33
|
+
const transaction = await this.public.getTransaction(txHash, {
|
|
34
|
+
maxSupportedTransactionVersion: 1
|
|
35
|
+
});
|
|
36
|
+
if (transaction?.meta?.err) {
|
|
37
|
+
return tx_status_1.TX_STATUS.FAIL;
|
|
38
|
+
}
|
|
39
|
+
if (transaction?.blockTime) {
|
|
40
|
+
return tx_status_1.TX_STATUS.SUCCESS;
|
|
41
|
+
}
|
|
42
|
+
return tx_status_1.TX_STATUS.PENDING;
|
|
43
|
+
}
|
|
44
|
+
catch {
|
|
45
|
+
return tx_status_1.TX_STATUS.PENDING;
|
|
51
46
|
}
|
|
52
|
-
const balance = await this.public.getBalanceAndContext(new web3_js_1.PublicKey(userAddress), 'confirmed');
|
|
53
|
-
return new bignumber_js_1.default(balance.value.toString());
|
|
54
47
|
}
|
|
55
48
|
/**
|
|
56
49
|
* Gets balance of multiple tokens.
|
|
@@ -65,13 +58,42 @@ class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
65
58
|
}));
|
|
66
59
|
const nativeSolBalance = await this.public.getBalanceAndContext(new web3_js_1.PublicKey(address), 'confirmed');
|
|
67
60
|
return tokensAddresses.map((tokenAddress) => {
|
|
68
|
-
if (tokenAddress ===
|
|
61
|
+
if (tokenAddress === web3_pure_1.Web3Pure.getNativeTokenAddress(core_1.BLOCKCHAIN_NAME.SOLANA)) {
|
|
69
62
|
return new bignumber_js_1.default(nativeSolBalance.value.toString());
|
|
70
63
|
}
|
|
71
64
|
const tokenWithBalance = tokenInfo.get(tokenAddress);
|
|
72
65
|
return new bignumber_js_1.default(tokenWithBalance || NaN);
|
|
73
66
|
});
|
|
74
67
|
}
|
|
68
|
+
multicallContractsMethods() {
|
|
69
|
+
throw new Error('Method not implemented.');
|
|
70
|
+
}
|
|
71
|
+
getBlockNumber() {
|
|
72
|
+
return this.public.getBlockHeight('finalized');
|
|
73
|
+
}
|
|
74
|
+
createConection(rpcList) {
|
|
75
|
+
if (!rpcList?.[0]) {
|
|
76
|
+
this.logger?.customError('RPC list is empty');
|
|
77
|
+
return null;
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
return new web3_js_1.Connection(rpcList[0], 'confirmed');
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
async simulateTransaction(_config, _from) { }
|
|
84
|
+
async checkEnoughBalance(token, walletAddress) {
|
|
85
|
+
const balance = await this.getBalance(walletAddress, token.address);
|
|
86
|
+
return balance.gte(token.tokenAmount);
|
|
87
|
+
}
|
|
88
|
+
async getBalance(userAddress, tokenAddress) {
|
|
89
|
+
const isToken = tokenAddress && !web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.SOLANA, tokenAddress);
|
|
90
|
+
if (isToken) {
|
|
91
|
+
const balance = await this.getTokensBalances(userAddress, [tokenAddress]);
|
|
92
|
+
return balance?.[0] || new bignumber_js_1.default(0);
|
|
93
|
+
}
|
|
94
|
+
const balance = await this.public.getBalanceAndContext(new web3_js_1.PublicKey(userAddress), 'confirmed');
|
|
95
|
+
return new bignumber_js_1.default(balance.value.toString());
|
|
96
|
+
}
|
|
75
97
|
async callForTokensInfo(tokenAddresses) {
|
|
76
98
|
const nativeToken = core_1.nativeTokensList[core_1.BLOCKCHAIN_NAME.SOLANA];
|
|
77
99
|
const nativeTokenIndex = tokenAddresses.findIndex((address) => web3_pure_1.Web3Pure.isNativeAddress(core_1.CHAIN_TYPE.SOLANA, address));
|
|
@@ -115,7 +137,7 @@ class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
115
137
|
return accounts.filter((v) => !!v);
|
|
116
138
|
}
|
|
117
139
|
async createVersionedTransaction(instructions, walletAddress, addressLookupTableAccounts = []) {
|
|
118
|
-
const
|
|
140
|
+
const blockhash = await this.getLatestBlockhash();
|
|
119
141
|
const message = new web3_js_1.TransactionMessage({
|
|
120
142
|
instructions,
|
|
121
143
|
payerKey: new web3_js_1.PublicKey(walletAddress),
|
|
@@ -157,11 +179,53 @@ class SolanaAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
157
179
|
return new web3_js_1.VersionedTransaction(newMsg);
|
|
158
180
|
}
|
|
159
181
|
deserializeTransaction(data) {
|
|
160
|
-
const decodedData = data.startsWith('0x') ? Buffer.from(data.slice(2), 'hex') :
|
|
182
|
+
const decodedData = data.startsWith('0x') ? Buffer.from(data.slice(2), 'hex') : js_base64_1.Base64.toUint8Array(data);
|
|
161
183
|
return web3_js_1.VersionedTransaction.deserialize(decodedData);
|
|
162
184
|
}
|
|
163
185
|
serializeTransactionToBase58(tx) {
|
|
164
186
|
return bs58_1.default.encode(tx.serialize());
|
|
165
187
|
}
|
|
188
|
+
async createTransferData(fromToken, walletAddress, receiver, convertToVersionedTx, allowOwnerOffCurve = false) {
|
|
189
|
+
const fromAddress = new web3_js_1.PublicKey(walletAddress);
|
|
190
|
+
const toAddress = new web3_js_1.PublicKey(receiver);
|
|
191
|
+
const transaction = fromToken.isNative
|
|
192
|
+
? this.createNativeTransfer(fromAddress, toAddress, fromToken.stringWeiAmount)
|
|
193
|
+
: await this.createTokenTransfer(fromAddress, toAddress, fromToken.address, fromToken.stringWeiAmount, allowOwnerOffCurve);
|
|
194
|
+
if (convertToVersionedTx) {
|
|
195
|
+
const blockhash = await this.getLatestBlockhash();
|
|
196
|
+
const message = new web3_js_1.TransactionMessage({
|
|
197
|
+
payerKey: fromAddress,
|
|
198
|
+
recentBlockhash: blockhash,
|
|
199
|
+
instructions: transaction.instructions
|
|
200
|
+
}).compileToV0Message();
|
|
201
|
+
return new web3_js_1.VersionedTransaction(message);
|
|
202
|
+
}
|
|
203
|
+
return transaction;
|
|
204
|
+
}
|
|
205
|
+
createNativeTransfer(fromAddress, toAddress, fromWeiAmount) {
|
|
206
|
+
return new web3_js_1.Transaction().add(web3_js_1.SystemProgram.transfer({
|
|
207
|
+
fromPubkey: fromAddress,
|
|
208
|
+
toPubkey: toAddress,
|
|
209
|
+
lamports: BigInt(fromWeiAmount)
|
|
210
|
+
}));
|
|
211
|
+
}
|
|
212
|
+
async createTokenTransfer(fromAddress, toAddress, fromTokenAddress, fromWeiAmount, allowOwnerOffCurve) {
|
|
213
|
+
const mintTokenAccount = new web3_js_1.PublicKey(fromTokenAddress);
|
|
214
|
+
const [fromATA, toATA] = await Promise.all([
|
|
215
|
+
(0, spl_token_1.getAssociatedTokenAddress)(mintTokenAccount, fromAddress),
|
|
216
|
+
(0, spl_token_1.getAssociatedTokenAddress)(mintTokenAccount, toAddress, allowOwnerOffCurve)
|
|
217
|
+
]);
|
|
218
|
+
const transaction = new web3_js_1.Transaction();
|
|
219
|
+
const receiverAccountInfo = await this.public.getAccountInfo(toATA);
|
|
220
|
+
if (!receiverAccountInfo) {
|
|
221
|
+
transaction.add((0, spl_token_1.createAssociatedTokenAccountInstruction)(fromAddress, toATA, toAddress, mintTokenAccount));
|
|
222
|
+
}
|
|
223
|
+
transaction.add((0, spl_token_1.createTransferInstruction)(fromATA, toATA, fromAddress, BigInt(fromWeiAmount)));
|
|
224
|
+
return transaction;
|
|
225
|
+
}
|
|
226
|
+
async getLatestBlockhash() {
|
|
227
|
+
const { blockhash } = await this.public.getLatestBlockhash();
|
|
228
|
+
return blockhash;
|
|
229
|
+
}
|
|
166
230
|
}
|
|
167
231
|
exports.SolanaAdapter = SolanaAdapter;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { Transaction } from '@mysten/sui/transactions';
|
|
2
|
+
import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
|
|
3
|
+
export interface SuiSendTxParams {
|
|
4
|
+
txOptions: SuiTransactionOptions;
|
|
5
|
+
}
|
|
6
|
+
export interface SuiTransactionOptions extends BasicSendTransactionOptions {
|
|
7
|
+
transactionBlock: Transaction;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
|
|
2
|
+
import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
|
|
3
|
+
import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
|
|
4
|
+
import { SuiSendTxParams } from '../models/sui-send-tx-params';
|
|
5
|
+
import { WalletAdapter } from '@suiet/wallet-sdk';
|
|
6
|
+
import { ExecuteTransactionBlockParams, SuiClient, SuiTransactionBlockResponse } from '@mysten/sui/dist/cjs/client';
|
|
7
|
+
export declare class SuiAdapterSigner extends AbstractAdapterSigner<WalletAdapter, SuiSendTxParams, string> {
|
|
8
|
+
private readonly publicRef;
|
|
9
|
+
get publicClient(): SuiClient;
|
|
10
|
+
constructor(publicRef: {
|
|
11
|
+
public: SuiClient | null;
|
|
12
|
+
}, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
|
|
13
|
+
write<T>(): Promise<T>;
|
|
14
|
+
getBlockchainName(): Promise<BlockchainName>;
|
|
15
|
+
sendTransaction(params: SuiSendTxParams): Promise<string>;
|
|
16
|
+
executeTxBlock(params: ExecuteTransactionBlockParams): Promise<SuiTransactionBlockResponse>;
|
|
17
|
+
}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SuiAdapterSigner = void 0;
|
|
4
|
+
const core_1 = require("@cryptorubic/core");
|
|
5
|
+
const abstract_adapter_signer_1 = require("../../common/signer/abstract-adapter-signer");
|
|
6
|
+
const user_reject_error_1 = require("../../../../errors/blockchain/user-reject.error");
|
|
7
|
+
const parse_evm_error_1 = require("../../adapter-evm/utils/parse-evm-error");
|
|
8
|
+
class SuiAdapterSigner extends abstract_adapter_signer_1.AbstractAdapterSigner {
|
|
9
|
+
get publicClient() {
|
|
10
|
+
if (!this.publicRef.public) {
|
|
11
|
+
const msg = `Trying to access undefined publicClient in SuiAdapterSigner.`;
|
|
12
|
+
this.logger?.customLog(msg);
|
|
13
|
+
throw new Error(msg);
|
|
14
|
+
}
|
|
15
|
+
return this.publicRef.public;
|
|
16
|
+
}
|
|
17
|
+
constructor(publicRef, httpClient, logger, clientParams) {
|
|
18
|
+
super(httpClient, logger, clientParams);
|
|
19
|
+
this.publicRef = publicRef;
|
|
20
|
+
}
|
|
21
|
+
async write() {
|
|
22
|
+
throw new Error('Method write is not supported');
|
|
23
|
+
}
|
|
24
|
+
getBlockchainName() {
|
|
25
|
+
return Promise.resolve(core_1.BLOCKCHAIN_NAME.SUI);
|
|
26
|
+
}
|
|
27
|
+
async sendTransaction(params) {
|
|
28
|
+
try {
|
|
29
|
+
const account = this.wallet.accounts[0];
|
|
30
|
+
const signedTx = await this.wallet.features['sui:signTransaction'].signTransaction({
|
|
31
|
+
account: account,
|
|
32
|
+
transaction: params.txOptions.transactionBlock,
|
|
33
|
+
chain: 'sui:mainnet'
|
|
34
|
+
});
|
|
35
|
+
const tx = await this.executeTxBlock({
|
|
36
|
+
transactionBlock: signedTx.bytes,
|
|
37
|
+
signature: signedTx.signature
|
|
38
|
+
});
|
|
39
|
+
params.txOptions.onTransactionHash?.(tx.digest);
|
|
40
|
+
return tx.digest;
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
if (err?.message.includes('User rejected the request.') ||
|
|
44
|
+
err?.message.includes('User rejection | (UserRejectionError:-4005)')) {
|
|
45
|
+
throw new user_reject_error_1.UserRejectError();
|
|
46
|
+
}
|
|
47
|
+
console.error(`Send transaction error. ${err}`);
|
|
48
|
+
throw (0, parse_evm_error_1.parseEvmError)(err);
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
executeTxBlock(params) {
|
|
52
|
+
return this.publicClient.executeTransactionBlock(params);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
exports.SuiAdapterSigner = SuiAdapterSigner;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { Abi, MulticallResponse } from 'viem';
|
|
2
|
+
import { HttpClient, ICustomLogger, PriceTokenAmount, SuiBlockchainName, Token, TokenAmount } from '@cryptorubic/core';
|
|
3
|
+
import { SuiClient } from '@mysten/sui/client';
|
|
4
|
+
import BigNumber from 'bignumber.js';
|
|
5
|
+
import { AbstractAdapter } from '../common/abstract-adapter';
|
|
6
|
+
import { WalletAdapter } from '@suiet/wallet-sdk';
|
|
7
|
+
import { SuiAdapterSigner } from './signer/sui-adapter-signer';
|
|
8
|
+
import { ClientAdaptersFactoryParams } from '../../models/create-factory-params';
|
|
9
|
+
import { Web3PrimitiveType } from '../../../utils/models/primitive-types';
|
|
10
|
+
import { ContractMulticallResponse } from '../models/web3-public-models/contract-multicall-response';
|
|
11
|
+
import { TxStatus } from '../models/web3-public-models/tx-status';
|
|
12
|
+
export declare class SuiAdapter extends AbstractAdapter<SuiClient, WalletAdapter, SuiBlockchainName> {
|
|
13
|
+
private readonly rpcList;
|
|
14
|
+
readonly signer: SuiAdapterSigner;
|
|
15
|
+
constructor(rpcList: string[], httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
|
|
16
|
+
initWeb3Client(): void;
|
|
17
|
+
callContractMethod<T extends Web3PrimitiveType = string>(): Promise<T>;
|
|
18
|
+
read<T>(): Promise<T>;
|
|
19
|
+
getTransactionStatus(srcTxHash: string): Promise<TxStatus>;
|
|
20
|
+
getTokensBalances(userAddress: string, tokensAddresses: string[]): Promise<BigNumber[]>;
|
|
21
|
+
multicallContractsMethods<Output extends Web3PrimitiveType>(): Promise<ContractMulticallResponse<Output>[][]>;
|
|
22
|
+
getBlockNumber(): Promise<number | {
|
|
23
|
+
blockNumber: number;
|
|
24
|
+
workchain: number;
|
|
25
|
+
}>;
|
|
26
|
+
multicallByAddress<T>(_address: string, _abi: Abi, _method: string, _methodArgs?: unknown[][], _allowErrors?: boolean): Promise<MulticallResponse<T>[]>;
|
|
27
|
+
simulateTransaction(_config: object, _from: string): Promise<void>;
|
|
28
|
+
callForTokensInfo(tokenAddresses: string[] | ReadonlyArray<string>): Promise<Token<SuiBlockchainName>[]>;
|
|
29
|
+
checkEnoughBalance(token: TokenAmount | PriceTokenAmount, walletAddress: string): Promise<boolean>;
|
|
30
|
+
getBalance(userAddress: string, tokenAddress?: string): Promise<BigNumber>;
|
|
31
|
+
compareSuiAddress(addressA: string, addressB: string): boolean;
|
|
32
|
+
}
|
|
@@ -1,24 +1,55 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.SuiAdapter = void 0;
|
|
4
|
-
const abstract_adapter_1 = require("./abstract-adapter");
|
|
5
4
|
const core_1 = require("@cryptorubic/core");
|
|
6
|
-
const web3_pure_1 = require("../../utils/web3-pure");
|
|
7
5
|
const client_1 = require("@mysten/sui/client");
|
|
8
6
|
const bignumber_js_1 = require("bignumber.js");
|
|
7
|
+
const abstract_adapter_1 = require("../common/abstract-adapter");
|
|
8
|
+
const web3_pure_1 = require("../../../utils/web3-pure");
|
|
9
|
+
const sui_adapter_signer_1 = require("./signer/sui-adapter-signer");
|
|
10
|
+
const tx_status_1 = require("../models/web3-public-models/tx-status");
|
|
9
11
|
class SuiAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
10
|
-
constructor(rpcList, logger) {
|
|
12
|
+
constructor(rpcList, httpClient, logger, clientParams) {
|
|
11
13
|
super(core_1.BLOCKCHAIN_NAME.SUI, logger);
|
|
12
|
-
this.
|
|
14
|
+
this.rpcList = rpcList;
|
|
15
|
+
this.signer = new sui_adapter_signer_1.SuiAdapterSigner(this.publicRef, httpClient, logger, clientParams);
|
|
13
16
|
}
|
|
14
|
-
|
|
17
|
+
initWeb3Client() {
|
|
18
|
+
this.public = new client_1.SuiClient({ url: this.rpcList[0] });
|
|
19
|
+
}
|
|
20
|
+
async callContractMethod() {
|
|
21
|
+
throw new Error('Method call is not supported');
|
|
22
|
+
}
|
|
23
|
+
async read() {
|
|
15
24
|
throw new Error('Method read is not supported');
|
|
16
25
|
}
|
|
17
|
-
async
|
|
18
|
-
|
|
26
|
+
async getTransactionStatus(srcTxHash) {
|
|
27
|
+
try {
|
|
28
|
+
const txDetails = await this.public.getTransactionBlock({ digest: srcTxHash });
|
|
29
|
+
const status = txDetails?.effects?.status.status;
|
|
30
|
+
if (!status) {
|
|
31
|
+
return tx_status_1.TX_STATUS.PENDING;
|
|
32
|
+
}
|
|
33
|
+
return status === 'success' ? tx_status_1.TX_STATUS.SUCCESS : tx_status_1.TX_STATUS.FAIL;
|
|
34
|
+
}
|
|
35
|
+
catch {
|
|
36
|
+
return tx_status_1.TX_STATUS.PENDING;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
async getTokensBalances(userAddress, tokensAddresses) {
|
|
40
|
+
const allUserTokens = await this.public.getAllBalances({ owner: userAddress });
|
|
41
|
+
return tokensAddresses.map((address) => {
|
|
42
|
+
const possibleBalance = allUserTokens.find((el) => (0, core_1.compareAddresses)(address, el.coinType) || this.compareSuiAddress(address, el.coinType));
|
|
43
|
+
return new bignumber_js_1.default(possibleBalance?.totalBalance || 0);
|
|
44
|
+
});
|
|
19
45
|
}
|
|
20
|
-
|
|
21
|
-
throw new Error('Method
|
|
46
|
+
multicallContractsMethods() {
|
|
47
|
+
throw new Error('Method not implemented.');
|
|
48
|
+
}
|
|
49
|
+
async getBlockNumber() {
|
|
50
|
+
const epochInfo = await this.public.getEpochs({ limit: 1 });
|
|
51
|
+
const stringEpoch = epochInfo.data[0].epoch;
|
|
52
|
+
return Number(stringEpoch);
|
|
22
53
|
}
|
|
23
54
|
async multicallByAddress(_address, _abi, _method, _methodArgs = [], _allowErrors = true) {
|
|
24
55
|
throw new Error('Method multicall is not supported');
|
|
@@ -71,5 +102,10 @@ class SuiAdapter extends abstract_adapter_1.AbstractAdapter {
|
|
|
71
102
|
const balance = await this.public.getBalance({ owner: userAddress });
|
|
72
103
|
return new bignumber_js_1.default(balance.totalBalance);
|
|
73
104
|
}
|
|
105
|
+
compareSuiAddress(addressA, addressB) {
|
|
106
|
+
const pureAddressA = addressA.split(':')[0];
|
|
107
|
+
const pureAddressB = addressB.split(':')[0];
|
|
108
|
+
return (0, core_1.compareAddresses)(new bignumber_js_1.default(pureAddressA).toFixed(), new bignumber_js_1.default(pureAddressB).toFixed());
|
|
109
|
+
}
|
|
74
110
|
}
|
|
75
111
|
exports.SuiAdapter = SuiAdapter;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
|
|
2
|
+
export interface TonSendTxParams {
|
|
3
|
+
txOptions: TonTransactionOptions;
|
|
4
|
+
}
|
|
5
|
+
export interface TonTransactionOptions extends BasicSendTransactionOptions {
|
|
6
|
+
messages: TonEncodedConfig[];
|
|
7
|
+
}
|
|
8
|
+
export interface TonEncodedConfig {
|
|
9
|
+
/**
|
|
10
|
+
* In default transfer - it's a receiverWalletAddress to send funds
|
|
11
|
+
* In tx using contracts - it's a jettonWalletAddress (like ERC-20, but in TON)
|
|
12
|
+
*/
|
|
13
|
+
address: string;
|
|
14
|
+
/**
|
|
15
|
+
* Amount to send in tx in nanotons
|
|
16
|
+
* In default trasfer - it's a transfered value
|
|
17
|
+
* In tx using contracts - it's static gasFee, by default toNano(0.05).toString()
|
|
18
|
+
*/
|
|
19
|
+
amount: string;
|
|
20
|
+
/**
|
|
21
|
+
* Data for contract.
|
|
22
|
+
* body.toBoc().toString('base64')
|
|
23
|
+
*/
|
|
24
|
+
payload?: string;
|
|
25
|
+
stateInit?: string;
|
|
26
|
+
}
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
import { TonApiAccountInfoResp, TonApiAllNonNullableTokenInfoForWalletResp, TonApiParseAddressResp, TonApiTokenInfoForWalletResp, TonApiTokenInfoResp, TonApiTxDataByBocResp } from '
|
|
2
|
-
import { TonCenterBlockInfo } from '
|
|
3
|
-
import { HttpClient } from '@cryptorubic/core';
|
|
4
|
-
import { TonApiConfig } from '
|
|
5
|
-
import { Web3PrimitiveType } from '
|
|
1
|
+
import { TonApiAccountInfoResp, TonApiAllNonNullableTokenInfoForWalletResp, TonApiParseAddressResp, TonApiTokenInfoForWalletResp, TonApiTokenInfoResp, TonApiTxDataByBocResp } from '../../models/tonapi-models';
|
|
2
|
+
import { TonCenterBlockInfo } from '../../models/toncenter-types';
|
|
3
|
+
import { HttpClient, ICustomLogger } from '@cryptorubic/core';
|
|
4
|
+
import { TonApiConfig } from '../../models/ton-api-config';
|
|
5
|
+
import { Web3PrimitiveType } from '../../../../utils/models/primitive-types';
|
|
6
6
|
export declare class TonApiService {
|
|
7
7
|
private readonly httpClient;
|
|
8
|
+
private readonly logger?;
|
|
8
9
|
private readonly tonApiUrl;
|
|
9
10
|
private readonly apiKey;
|
|
10
11
|
private readonly tonCenterV3Url;
|
|
11
|
-
constructor(httpClient: HttpClient, params: TonApiConfig);
|
|
12
|
+
constructor(httpClient: HttpClient, params: TonApiConfig, logger?: ICustomLogger | undefined);
|
|
12
13
|
/**
|
|
13
14
|
* @param walletAddress in any format: raw or friendly
|
|
14
15
|
*/
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.TonApiService = void 0;
|
|
4
4
|
class TonApiService {
|
|
5
|
-
constructor(httpClient, params) {
|
|
5
|
+
constructor(httpClient, params, logger) {
|
|
6
6
|
this.httpClient = httpClient;
|
|
7
|
+
this.logger = logger;
|
|
7
8
|
this.apiKey = params.tonApiKey;
|
|
8
9
|
this.tonApiUrl = params?.tonApiUrl || 'https://tonapi.io';
|
|
9
10
|
this.tonCenterV3Url = params.tonCenterV3Url || 'https://toncenter.com/api/v3';
|
|
@@ -148,16 +149,23 @@ class TonApiService {
|
|
|
148
149
|
* @returns balance, decimals, name, symbol, walletJettonAddress, jettonAddress
|
|
149
150
|
*/
|
|
150
151
|
async fetchTokenInfoForWallet(walletAddress, tokenAddress) {
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
try {
|
|
153
|
+
const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons/${tokenAddress}`, {
|
|
154
|
+
headers: {
|
|
155
|
+
apiKey: this.apiKey,
|
|
156
|
+
referer: 'https://app.rubic.exchange'
|
|
157
|
+
}
|
|
158
|
+
});
|
|
159
|
+
if ('error' in res) {
|
|
160
|
+
this.logger?.customError('[TonApiService] ERROR IN fetchTokenInfoForWallet', res.error);
|
|
161
|
+
return { balance: '0' };
|
|
155
162
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
163
|
+
return res;
|
|
164
|
+
}
|
|
165
|
+
catch (err) {
|
|
166
|
+
this.logger?.customError('[TonApiService] ERROR IN fetchTokenInfoForWallet', err);
|
|
167
|
+
return { balance: '0' };
|
|
159
168
|
}
|
|
160
|
-
return res;
|
|
161
169
|
}
|
|
162
170
|
async fetchAllNonNullableTokensInfoForWallet(walletAddress) {
|
|
163
171
|
const res = await this.httpClient.get(`${this.tonApiUrl}/v2/accounts/${walletAddress}/jettons`, {
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { BlockchainName, HttpClient, ICustomLogger } from '@cryptorubic/core';
|
|
2
|
+
import { AbstractAdapterSigner } from '../../common/signer/abstract-adapter-signer';
|
|
3
|
+
import { ClientAdaptersFactoryParams } from '../../../models/create-factory-params';
|
|
4
|
+
import { TonSendTxParams } from '../models/ton-send-tx-params';
|
|
5
|
+
import { TonConnectUI } from '@tonconnect/ui';
|
|
6
|
+
import { BasicSendTransactionOptions } from '../../models/basic-transaction-options';
|
|
7
|
+
import { Address } from '@ton/core';
|
|
8
|
+
import { TonApiService } from '../services/ton-api.service';
|
|
9
|
+
import { TonClient } from '@ton/ton';
|
|
10
|
+
import { TonTransactionConfig } from '../../../../utils/models/ton-transaction-config';
|
|
11
|
+
export declare class TonAdapterSigner extends AbstractAdapterSigner<TonConnectUI, TonSendTxParams, string> {
|
|
12
|
+
private readonly tonApi;
|
|
13
|
+
private readonly publicRef;
|
|
14
|
+
get publicClient(): TonClient;
|
|
15
|
+
constructor(tonApi: TonApiService, publicRef: {
|
|
16
|
+
public: TonClient | null;
|
|
17
|
+
}, httpClient: HttpClient, logger?: ICustomLogger, clientParams?: ClientAdaptersFactoryParams);
|
|
18
|
+
write<T>(): Promise<T>;
|
|
19
|
+
getBlockchainName(): Promise<BlockchainName>;
|
|
20
|
+
sendTransaction(params: TonSendTxParams): Promise<string>;
|
|
21
|
+
private waitForTransactionReceipt;
|
|
22
|
+
/**
|
|
23
|
+
* Transfer asset from on wallet to another
|
|
24
|
+
* @param tokenAddress Token address to transfer
|
|
25
|
+
* @param walletAddress Wallet address to transfer from
|
|
26
|
+
* @param receiver Receiver wallet address
|
|
27
|
+
* @param amount Transfer amount
|
|
28
|
+
* @param options Transaction options
|
|
29
|
+
*/
|
|
30
|
+
transferAsset(tokenAddress: string, walletAddress: string, receiver: string, amount: string, options?: BasicSendTransactionOptions): Promise<string>;
|
|
31
|
+
private transferNative;
|
|
32
|
+
private transferJetton;
|
|
33
|
+
getTransferEncodedConfig(tokenAddress: string, walletAddress: string, receiver: string, amount: string): Promise<TonTransactionConfig>;
|
|
34
|
+
private getTransferNativeConfig;
|
|
35
|
+
private getTransferJettonConfig;
|
|
36
|
+
/**
|
|
37
|
+
*
|
|
38
|
+
* @param boc Boc returned in connector.sendTransaction
|
|
39
|
+
* @returns boc converter in base 64 string
|
|
40
|
+
*/
|
|
41
|
+
fromBocToBase64Hash(boc: string): string;
|
|
42
|
+
getJettonWalletAddress(address: Address, contractAddress: Address): Promise<Address>;
|
|
43
|
+
}
|