@subwallet/extension-base 1.3.40-0 → 1.3.42-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/background/KoniTypes.d.ts +121 -4
- package/background/KoniTypes.js +18 -0
- package/background/errors/BitcoinProviderError.d.ts +6 -0
- package/background/errors/BitcoinProviderError.js +47 -0
- package/cjs/background/KoniTypes.js +20 -1
- package/cjs/background/errors/BitcoinProviderError.js +54 -0
- package/cjs/constants/bitcoin.js +22 -0
- package/cjs/constants/environment.js +4 -2
- package/cjs/constants/index.js +16 -1
- package/cjs/core/logic-validation/recipientAddress.js +9 -0
- package/cjs/core/logic-validation/transfer.js +25 -5
- package/cjs/core/types.js +1 -0
- package/cjs/core/utils.js +15 -1
- package/cjs/koni/background/handlers/Extension.js +96 -41
- package/cjs/koni/background/handlers/State.js +52 -11
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/bitcoin.js +94 -0
- package/cjs/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/cjs/services/balance-service/helpers/subscribe/index.js +19 -7
- package/cjs/services/balance-service/index.js +32 -4
- package/cjs/services/balance-service/transfer/bitcoin-transfer.js +119 -0
- package/cjs/services/balance-service/transfer/token.js +2 -0
- package/cjs/services/balance-service/transfer/xcm/index.js +15 -9
- package/cjs/services/balance-service/transfer/xcm/utils.js +12 -14
- package/cjs/services/base/types.js +2 -0
- package/cjs/services/chain-service/constants.js +18 -6
- package/cjs/services/chain-service/handler/CardanoApi.js +25 -35
- package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +105 -0
- package/cjs/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +78 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +371 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +19 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +368 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +302 -0
- package/cjs/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/cjs/services/chain-service/index.js +27 -3
- package/cjs/services/chain-service/utils/index.js +57 -4
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +4 -38
- package/cjs/services/event-service/index.js +4 -0
- package/cjs/services/fee-service/service.js +8 -3
- package/cjs/services/hiro-service/index.js +96 -0
- package/cjs/services/hiro-service/utils/index.js +85 -0
- package/cjs/services/history-service/bitcoin-history.js +58 -0
- package/cjs/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/cjs/services/history-service/index.js +41 -3
- package/cjs/services/keyring-service/context/handlers/Derive.js +1 -1
- package/cjs/services/keyring-service/context/handlers/Migration.js +2 -2
- package/cjs/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/cjs/services/migration-service/scripts/MigrateNewUnifiedAccount.js +29 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/request-service/handler/BitcoinRequestHandler.js +440 -0
- package/cjs/services/request-service/index.js +29 -3
- package/cjs/services/rune-service/index.js +105 -0
- package/cjs/services/swap-service/handler/chainflip-handler.js +29 -18
- package/cjs/services/swap-service/handler/kyber-handler.js +5 -9
- package/cjs/services/swap-service/handler/simpleswap-handler.js +4 -7
- package/cjs/services/swap-service/handler/uniswap-handler.js +5 -12
- package/cjs/services/swap-service/utils.js +46 -37
- package/cjs/services/transaction-service/helpers/index.js +7 -1
- package/cjs/services/transaction-service/index.js +136 -15
- package/cjs/services/transaction-service/utils.js +6 -3
- package/cjs/strategy/api-request-strategy/context/base.js +31 -0
- package/cjs/strategy/api-request-strategy/index.js +90 -0
- package/cjs/strategy/api-request-strategy/types.js +1 -0
- package/cjs/strategy/api-request-strategy/utils/index.js +33 -0
- package/cjs/types/account/info/keyring.js +1 -1
- package/cjs/types/bitcoin.js +24 -0
- package/cjs/types/environment.js +19 -0
- package/cjs/types/fee/bitcoin.js +1 -0
- package/cjs/types/fee/index.js +11 -0
- package/cjs/types/index.js +11 -0
- package/cjs/utils/account/analyze.js +3 -3
- package/cjs/utils/account/common.js +16 -6
- package/cjs/utils/account/derive/info/solo.js +68 -19
- package/cjs/utils/account/derive/info/unified.js +2 -0
- package/cjs/utils/account/derive/validate.js +70 -2
- package/cjs/utils/account/transform.js +11 -5
- package/cjs/utils/bitcoin/common.js +98 -0
- package/cjs/utils/bitcoin/fee.js +21 -0
- package/cjs/utils/bitcoin/index.js +38 -0
- package/cjs/utils/bitcoin/utxo-management.js +281 -0
- package/cjs/utils/environment.js +30 -2
- package/cjs/utils/fee/transfer.js +48 -0
- package/cjs/utils/index.js +15 -1
- package/constants/bitcoin.d.ts +3 -0
- package/constants/bitcoin.js +13 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +2 -1
- package/constants/index.d.ts +2 -0
- package/constants/index.js +3 -1
- package/core/logic-validation/recipientAddress.js +10 -1
- package/core/logic-validation/transfer.d.ts +2 -2
- package/core/logic-validation/transfer.js +27 -7
- package/core/types.d.ts +1 -0
- package/core/types.js +1 -0
- package/core/utils.d.ts +1 -0
- package/core/utils.js +15 -2
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +95 -42
- package/koni/background/handlers/State.d.ts +7 -3
- package/koni/background/handlers/State.js +52 -12
- package/package.json +149 -8
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/bitcoin.d.ts +2 -0
- package/services/balance-service/helpers/subscribe/bitcoin.js +87 -0
- package/services/balance-service/helpers/subscribe/evm.js +6 -1
- package/services/balance-service/helpers/subscribe/index.d.ts +2 -2
- package/services/balance-service/helpers/subscribe/index.js +20 -8
- package/services/balance-service/index.d.ts +2 -0
- package/services/balance-service/index.js +32 -4
- package/services/balance-service/transfer/bitcoin-transfer.d.ts +14 -0
- package/services/balance-service/transfer/bitcoin-transfer.js +112 -0
- package/services/balance-service/transfer/token.js +2 -0
- package/services/balance-service/transfer/xcm/index.js +15 -9
- package/services/balance-service/transfer/xcm/utils.d.ts +2 -0
- package/services/balance-service/transfer/xcm/utils.js +12 -14
- package/services/base/types.d.ts +2 -0
- package/services/base/types.js +2 -0
- package/services/chain-service/constants.d.ts +7 -0
- package/services/chain-service/constants.js +12 -5
- package/services/chain-service/handler/CardanoApi.d.ts +1 -5
- package/services/chain-service/handler/CardanoApi.js +26 -34
- package/services/chain-service/handler/bitcoin/BitcoinApi.d.ts +31 -0
- package/services/chain-service/handler/bitcoin/BitcoinApi.js +98 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.d.ts +16 -0
- package/services/chain-service/handler/bitcoin/BitcoinChainHandler.js +70 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/blockstream-testnet-strategy.js +362 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.d.ts +2 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/index.js +5 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/BlockStreamTestnet/mempool-testnet-strategy.js +359 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.d.ts +28 -0
- package/services/chain-service/handler/bitcoin/strategy/SubWalletMainnet/index.js +293 -0
- package/services/chain-service/handler/bitcoin/strategy/types.d.ts +291 -0
- package/services/chain-service/handler/bitcoin/strategy/types.js +1 -0
- package/services/chain-service/index.d.ts +3 -0
- package/services/chain-service/index.js +31 -5
- package/services/chain-service/types.d.ts +20 -0
- package/services/chain-service/utils/index.d.ts +4 -0
- package/services/chain-service/utils/index.js +50 -4
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/native-staking/tao.d.ts +0 -11
- package/services/earning-service/handlers/native-staking/tao.js +4 -24
- package/services/event-service/index.d.ts +3 -0
- package/services/event-service/index.js +4 -0
- package/services/event-service/types.d.ts +3 -0
- package/services/fee-service/service.js +8 -3
- package/services/hiro-service/index.d.ts +17 -0
- package/services/hiro-service/index.js +88 -0
- package/services/hiro-service/utils/index.d.ts +6 -0
- package/services/hiro-service/utils/index.js +72 -0
- package/services/history-service/bitcoin-history.d.ts +4 -0
- package/services/history-service/bitcoin-history.js +52 -0
- package/services/history-service/helpers/recoverHistoryStatus.d.ts +3 -1
- package/services/history-service/helpers/recoverHistoryStatus.js +96 -4
- package/services/history-service/index.d.ts +1 -0
- package/services/history-service/index.js +42 -4
- package/services/keyring-service/context/handlers/Derive.js +2 -2
- package/services/keyring-service/context/handlers/Migration.js +2 -2
- package/services/keyring-service/context/handlers/Mnemonic.js +4 -3
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.d.ts +4 -0
- package/services/migration-service/scripts/MigrateNewUnifiedAccount.js +21 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/request-service/handler/BitcoinRequestHandler.d.ts +23 -0
- package/services/request-service/handler/BitcoinRequestHandler.js +427 -0
- package/services/request-service/index.d.ts +9 -2
- package/services/request-service/index.js +25 -3
- package/services/rune-service/index.d.ts +17 -0
- package/services/rune-service/index.js +97 -0
- package/services/swap-service/handler/chainflip-handler.d.ts +0 -2
- package/services/swap-service/handler/chainflip-handler.js +25 -13
- package/services/swap-service/handler/kyber-handler.d.ts +0 -1
- package/services/swap-service/handler/kyber-handler.js +5 -8
- package/services/swap-service/handler/simpleswap-handler.d.ts +0 -1
- package/services/swap-service/handler/simpleswap-handler.js +4 -6
- package/services/swap-service/handler/uniswap-handler.js +6 -13
- package/services/swap-service/utils.d.ts +0 -13
- package/services/swap-service/utils.js +46 -34
- package/services/transaction-service/helpers/index.d.ts +3 -1
- package/services/transaction-service/helpers/index.js +5 -0
- package/services/transaction-service/index.d.ts +3 -5
- package/services/transaction-service/index.js +135 -16
- package/services/transaction-service/types.d.ts +12 -2
- package/services/transaction-service/utils.js +7 -4
- package/strategy/api-request-strategy/context/base.d.ts +15 -0
- package/strategy/api-request-strategy/context/base.js +24 -0
- package/strategy/api-request-strategy/index.d.ts +15 -0
- package/strategy/api-request-strategy/index.js +83 -0
- package/strategy/api-request-strategy/types.d.ts +22 -0
- package/strategy/api-request-strategy/types.js +1 -0
- package/strategy/api-request-strategy/utils/index.d.ts +2 -0
- package/strategy/api-request-strategy/utils/index.js +23 -0
- package/types/account/info/keyring.d.ts +1 -1
- package/types/account/info/keyring.js +1 -1
- package/types/balance/index.d.ts +4 -1
- package/types/balance/transfer.d.ts +17 -0
- package/types/bitcoin.d.ts +93 -0
- package/types/bitcoin.js +17 -0
- package/types/environment.d.ts +9 -0
- package/types/environment.js +13 -0
- package/types/fee/base.d.ts +4 -1
- package/types/fee/bitcoin.d.ts +18 -0
- package/types/fee/bitcoin.js +1 -0
- package/types/fee/index.d.ts +1 -0
- package/types/fee/index.js +2 -1
- package/types/fee/subscription.d.ts +4 -3
- package/types/index.d.ts +1 -0
- package/types/index.js +1 -0
- package/utils/account/analyze.js +4 -4
- package/utils/account/common.d.ts +7 -8
- package/utils/account/common.js +16 -6
- package/utils/account/derive/info/solo.js +70 -21
- package/utils/account/derive/info/unified.js +2 -0
- package/utils/account/derive/validate.d.ts +1 -0
- package/utils/account/derive/validate.js +68 -1
- package/utils/account/transform.d.ts +1 -1
- package/utils/account/transform.js +11 -5
- package/utils/bitcoin/common.d.ts +22 -0
- package/utils/bitcoin/common.js +88 -0
- package/utils/bitcoin/fee.d.ts +2 -0
- package/utils/bitcoin/fee.js +14 -0
- package/utils/bitcoin/index.d.ts +3 -0
- package/utils/bitcoin/index.js +6 -0
- package/utils/bitcoin/utxo-management.d.ts +33 -0
- package/utils/bitcoin/utxo-management.js +266 -0
- package/utils/environment.d.ts +2 -0
- package/utils/environment.js +27 -1
- package/utils/fee/transfer.d.ts +3 -1
- package/utils/fee/transfer.js +47 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +6 -3
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { SWError } from '@subwallet/extension-base/background/errors/SWError';
|
|
5
|
+
import { _BTC_SERVICE_TOKEN } from '@subwallet/extension-base/services/chain-service/constants';
|
|
6
|
+
import { BaseApiRequestStrategy } from '@subwallet/extension-base/strategy/api-request-strategy';
|
|
7
|
+
import { BaseApiRequestContext } from '@subwallet/extension-base/strategy/api-request-strategy/context/base';
|
|
8
|
+
import { getRequest } from '@subwallet/extension-base/strategy/api-request-strategy/utils';
|
|
9
|
+
const BITCOIN_API_URL = 'https://btc-api.koni.studio';
|
|
10
|
+
const BITCOIN_API_URL_TEST = 'https://api-testnet.openbit.app';
|
|
11
|
+
export class RunesService extends BaseApiRequestStrategy {
|
|
12
|
+
constructor(url) {
|
|
13
|
+
const context = new BaseApiRequestContext();
|
|
14
|
+
super(context);
|
|
15
|
+
this.baseUrl = url;
|
|
16
|
+
}
|
|
17
|
+
headers = {
|
|
18
|
+
'Content-Type': 'application/json',
|
|
19
|
+
Authorization: `Bearer ${_BTC_SERVICE_TOKEN}`
|
|
20
|
+
};
|
|
21
|
+
isRateLimited() {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
getUrl(path) {
|
|
25
|
+
return `${this.baseUrl}/${path}`;
|
|
26
|
+
}
|
|
27
|
+
getAddressRunesInfo(address, params) {
|
|
28
|
+
return this.addRequest(async () => {
|
|
29
|
+
const _rs = await getRequest(this.getUrl(`rune/address/${address}`), params, this.headers);
|
|
30
|
+
const rs = await _rs.json();
|
|
31
|
+
if (rs.status_code !== 200) {
|
|
32
|
+
throw new SWError('RuneScanService.getAddressRunesInfo', rs.message);
|
|
33
|
+
}
|
|
34
|
+
return rs.result;
|
|
35
|
+
}, 1);
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
// * Deprecated
|
|
39
|
+
getRuneCollectionsByBatch(params) {
|
|
40
|
+
return this.addRequest(async () => {
|
|
41
|
+
const url = this.getUrl('rune');
|
|
42
|
+
const rs = await getRequest(url, params);
|
|
43
|
+
if (rs.status !== 200) {
|
|
44
|
+
throw new SWError('RuneScanService.getRuneCollectionsByBatch', await rs.text());
|
|
45
|
+
}
|
|
46
|
+
return await rs.json();
|
|
47
|
+
}, 1);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// * Deprecated
|
|
51
|
+
getAddressRuneTxs(address, params) {
|
|
52
|
+
return this.addRequest(async () => {
|
|
53
|
+
const url = this.getUrl(`address/${address}/txs`);
|
|
54
|
+
const rs = await getRequest(url, params);
|
|
55
|
+
if (rs.status !== 200) {
|
|
56
|
+
throw new SWError('RuneScanService.getAddressRuneTxs', await rs.text());
|
|
57
|
+
}
|
|
58
|
+
return await rs.json();
|
|
59
|
+
}, 0);
|
|
60
|
+
}
|
|
61
|
+
getRuneMetadata(runeid) {
|
|
62
|
+
return this.addRequest(async () => {
|
|
63
|
+
const _rs = await getRequest(this.getUrl(`rune/metadata/${runeid}`), undefined, this.headers);
|
|
64
|
+
const rs = await _rs.json();
|
|
65
|
+
if (rs.status_code !== 200) {
|
|
66
|
+
throw new SWError('RuneScanService.getRuneMetadata', rs.message);
|
|
67
|
+
}
|
|
68
|
+
return rs.result;
|
|
69
|
+
}, 0);
|
|
70
|
+
}
|
|
71
|
+
getAddressRuneUtxos(address) {
|
|
72
|
+
return this.addRequest(async () => {
|
|
73
|
+
const _rs = await getRequest(this.getUrl(`rune/address/${address}/rune/utxo`), undefined, this.headers);
|
|
74
|
+
const rs = await _rs.json();
|
|
75
|
+
if (rs.status_code !== 200) {
|
|
76
|
+
throw new SWError('RuneScanService.getAddressRuneUtxos', rs.message);
|
|
77
|
+
}
|
|
78
|
+
return rs.result;
|
|
79
|
+
}, 0);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
// Singleton
|
|
83
|
+
|
|
84
|
+
static getInstance(isTestnet = false) {
|
|
85
|
+
if (isTestnet) {
|
|
86
|
+
if (!RunesService.testnet) {
|
|
87
|
+
RunesService.testnet = new RunesService(BITCOIN_API_URL_TEST);
|
|
88
|
+
}
|
|
89
|
+
return RunesService.testnet;
|
|
90
|
+
} else {
|
|
91
|
+
if (!RunesService.mainnet) {
|
|
92
|
+
RunesService.mainnet = new RunesService(BITCOIN_API_URL);
|
|
93
|
+
}
|
|
94
|
+
return RunesService.mainnet;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
@@ -5,12 +5,10 @@ import { ChainService } from '@subwallet/extension-base/services/chain-service';
|
|
|
5
5
|
import FeeService from '@subwallet/extension-base/services/fee-service/service';
|
|
6
6
|
import { SwapBaseInterface } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
|
|
7
7
|
import { BaseStepDetail, CommonOptimalSwapPath, CommonStepFeeInfo, OptimalSwapPathParamsV2, SwapProviderId, SwapSubmitParams, SwapSubmitStepData, ValidateSwapProcessParams } from '@subwallet/extension-base/types';
|
|
8
|
-
export declare const CHAINFLIP_BROKER_API: string;
|
|
9
8
|
export declare class ChainflipSwapHandler implements SwapBaseInterface {
|
|
10
9
|
private readonly isTestnet;
|
|
11
10
|
private swapBaseHandler;
|
|
12
11
|
providerSlug: SwapProviderId;
|
|
13
|
-
private baseUrl;
|
|
14
12
|
constructor(chainService: ChainService, balanceService: BalanceService, feeService: FeeService, isTestnet?: boolean);
|
|
15
13
|
get chainService(): ChainService;
|
|
16
14
|
get balanceService(): BalanceService;
|
|
@@ -8,15 +8,17 @@ import { getERC20TransactionObject, getEVMTransactionObject } from '@subwallet/e
|
|
|
8
8
|
import { createSubstrateExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token';
|
|
9
9
|
import { _getAssetSymbol, _getContractAddressOfToken, _isChainSubstrateCompatible, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
10
10
|
import { SwapBaseHandler } from '@subwallet/extension-base/services/swap-service/handler/base-handler';
|
|
11
|
-
import { getChainflipSwap } from '@subwallet/extension-base/services/swap-service/utils';
|
|
12
11
|
import { BasicTxErrorType, CommonStepType, DynamicSwapType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types';
|
|
13
|
-
import {
|
|
12
|
+
import { ProxyServiceRoute } from '@subwallet/extension-base/types/environment';
|
|
13
|
+
import { _reformatAddressWithChain, fetchFromProxyService } from '@subwallet/extension-base/utils';
|
|
14
14
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
15
15
|
import BigNumber from 'bignumber.js';
|
|
16
16
|
const INTERMEDIARY_MAINNET_ASSET_SLUG = COMMON_ASSETS.USDC_ETHEREUM;
|
|
17
17
|
const INTERMEDIARY_TESTNET_ASSET_SLUG = COMMON_ASSETS.USDC_SEPOLIA;
|
|
18
|
-
export const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
|
|
19
18
|
export class ChainflipSwapHandler {
|
|
19
|
+
// private baseUrl: string;
|
|
20
|
+
// private assetsUrl: string;
|
|
21
|
+
|
|
20
22
|
constructor(chainService, balanceService, feeService, isTestnet = true) {
|
|
21
23
|
this.swapBaseHandler = new SwapBaseHandler({
|
|
22
24
|
chainService,
|
|
@@ -27,8 +29,10 @@ export class ChainflipSwapHandler {
|
|
|
27
29
|
});
|
|
28
30
|
this.isTestnet = isTestnet;
|
|
29
31
|
this.providerSlug = isTestnet ? SwapProviderId.CHAIN_FLIP_TESTNET : SwapProviderId.CHAIN_FLIP_MAINNET;
|
|
30
|
-
this.baseUrl = getChainflipSwap(isTestnet);
|
|
32
|
+
// this.baseUrl = getChainflipSwap(isTestnet);
|
|
33
|
+
// this.assetsUrl = getAssetsUrl(isTestnet);
|
|
31
34
|
}
|
|
35
|
+
|
|
32
36
|
get chainService() {
|
|
33
37
|
return this.swapBaseHandler.chainService;
|
|
34
38
|
}
|
|
@@ -76,23 +80,31 @@ export class ChainflipSwapHandler {
|
|
|
76
80
|
if (processMetadata.destChain !== quoteMetadata.destChain || processMetadata.srcChain !== quoteMetadata.srcChain) {
|
|
77
81
|
throw new Error('Metadata for Chainflip not found');
|
|
78
82
|
}
|
|
83
|
+
const assetsResponse = await fetchFromProxyService(ProxyServiceRoute.CHAINFLIP, '/assets', {
|
|
84
|
+
method: 'GET'
|
|
85
|
+
}, this.isTestnet);
|
|
86
|
+
const _allAssets = await assetsResponse.json();
|
|
87
|
+
const allAssets = _allAssets.assets;
|
|
88
|
+
const sourceAsset = allAssets.find(asset => asset.network === processMetadata.srcChain && asset.ticker === fromAssetId);
|
|
89
|
+
const destinationAsset = allAssets.find(asset => asset.network === processMetadata.destChain && asset.ticker === toAssetId);
|
|
90
|
+
if (!sourceAsset || !destinationAsset) {
|
|
91
|
+
throw new Error('Error get Chainflip data');
|
|
92
|
+
}
|
|
79
93
|
const depositParams = {
|
|
80
|
-
sourceChain: processMetadata.srcChain,
|
|
81
94
|
destinationAddress: receiver,
|
|
82
|
-
destinationAsset:
|
|
83
|
-
|
|
95
|
+
destinationAsset: destinationAsset.id,
|
|
96
|
+
sourceAsset: sourceAsset.id,
|
|
84
97
|
minimumPrice: minReceive,
|
|
85
98
|
// minimum accepted price for swaps through the channel
|
|
86
99
|
refundAddress: address,
|
|
87
100
|
// address to which assets are refunded
|
|
88
|
-
retryDurationInBlocks: '100'
|
|
89
|
-
// 100 blocks * 6 seconds = 10 minutes before deposits are refunded
|
|
90
|
-
sourceAsset: fromAssetId
|
|
101
|
+
retryDurationInBlocks: '100' // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
|
|
91
102
|
};
|
|
92
|
-
|
|
93
|
-
const
|
|
103
|
+
|
|
104
|
+
const path = `/swap?${new URLSearchParams(depositParams).toString()}`;
|
|
105
|
+
const response = await fetchFromProxyService(ProxyServiceRoute.CHAINFLIP, path, {
|
|
94
106
|
method: 'GET'
|
|
95
|
-
});
|
|
107
|
+
}, this.isTestnet);
|
|
96
108
|
const data = await response.json();
|
|
97
109
|
if (!data.id || !data.address || data.address === '' || !data.issuedBlock || !data.network || !data.channelId) {
|
|
98
110
|
throw new Error('Error get Chainflip data');
|
|
@@ -8,7 +8,6 @@ import { SwapBaseInterface } from './base-handler';
|
|
|
8
8
|
export interface KyberSwapQuoteMetadata {
|
|
9
9
|
priceImpact?: string;
|
|
10
10
|
}
|
|
11
|
-
export declare const KYBER_CLIENT_ID: string;
|
|
12
11
|
export declare class KyberHandler implements SwapBaseInterface {
|
|
13
12
|
private swapBaseHandler;
|
|
14
13
|
transactionService: TransactionService;
|
|
@@ -6,14 +6,13 @@ import { TransactionError } from '@subwallet/extension-base/background/errors/Tr
|
|
|
6
6
|
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
7
|
import { estimateTxFee, getERC20Allowance, getERC20SpendingApprovalTx } from '@subwallet/extension-base/koni/api/contract-handler/evm/web3';
|
|
8
8
|
import { BasicTxErrorType, CommonStepType, DynamicSwapType, SwapErrorType, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types';
|
|
9
|
-
import {
|
|
9
|
+
import { ProxyServiceRoute } from '@subwallet/extension-base/types/environment';
|
|
10
|
+
import { _reformatAddressWithChain, combineEthFee, fetchFromProxyService } from '@subwallet/extension-base/utils';
|
|
10
11
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
11
12
|
import BigNumber from 'bignumber.js';
|
|
12
13
|
import { _getChainNativeTokenSlug, _getContractAddressOfToken, _isNativeToken } from "../../chain-service/utils/index.js";
|
|
13
14
|
import { calculateGasFeeParams } from "../../fee-service/utils/index.js";
|
|
14
15
|
import { SwapBaseHandler } from "./base-handler.js";
|
|
15
|
-
export const KYBER_CLIENT_ID = process.env.KYBER_CLIENT_ID || '';
|
|
16
|
-
const kyberUrl = 'https://aggregator-api.kyberswap.com';
|
|
17
16
|
async function buildTxForKyberSwap(params, chain) {
|
|
18
17
|
const {
|
|
19
18
|
recipient,
|
|
@@ -38,14 +37,13 @@ async function buildTxForKyberSwap(params, chain) {
|
|
|
38
37
|
amountIn,
|
|
39
38
|
gasInclude: 'true'
|
|
40
39
|
});
|
|
41
|
-
const
|
|
40
|
+
const path = `/${chain}/api/v1/routes?${queryParams.toString()}`;
|
|
42
41
|
try {
|
|
43
42
|
var _routeData$data;
|
|
44
|
-
const res = await
|
|
43
|
+
const res = await fetchFromProxyService(ProxyServiceRoute.KYBER, path, {
|
|
45
44
|
method: 'GET',
|
|
46
45
|
headers: {
|
|
47
46
|
'Content-Type': 'application/json',
|
|
48
|
-
'x-client-id': KYBER_CLIENT_ID,
|
|
49
47
|
accept: 'application/json'
|
|
50
48
|
}
|
|
51
49
|
});
|
|
@@ -78,11 +76,10 @@ async function buildTxForKyberSwap(params, chain) {
|
|
|
78
76
|
};
|
|
79
77
|
console.log('routeSummary2', routeSummary);
|
|
80
78
|
try {
|
|
81
|
-
const res = await
|
|
79
|
+
const res = await fetchFromProxyService(ProxyServiceRoute.KYBER, `/${chain}/api/v1/route/build`, {
|
|
82
80
|
method: 'POST',
|
|
83
81
|
headers: {
|
|
84
82
|
'Content-Type': 'application/json',
|
|
85
|
-
'x-client-id': KYBER_CLIENT_ID,
|
|
86
83
|
accept: 'application/json'
|
|
87
84
|
},
|
|
88
85
|
body: JSON.stringify(body)
|
|
@@ -4,7 +4,6 @@ import { BaseStepDetail, CommonOptimalSwapPath, CommonStepFeeInfo, OptimalSwapPa
|
|
|
4
4
|
import { BalanceService } from '../../balance-service';
|
|
5
5
|
import { ChainService } from '../../chain-service';
|
|
6
6
|
import { SwapBaseInterface } from './base-handler';
|
|
7
|
-
export declare const simpleSwapApiKey: string;
|
|
8
7
|
export declare class SimpleSwapHandler implements SwapBaseInterface {
|
|
9
8
|
private swapBaseHandler;
|
|
10
9
|
providerSlug: SwapProviderId;
|
|
@@ -6,14 +6,13 @@ import { TransactionError } from '@subwallet/extension-base/background/errors/Tr
|
|
|
6
6
|
import { ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
7
|
import { _getAssetDecimals, _getAssetSymbol, _getContractAddressOfToken, _isChainSubstrateCompatible, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
8
|
import { BasicTxErrorType, CommonStepType, DynamicSwapType, SwapErrorType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types';
|
|
9
|
-
import {
|
|
9
|
+
import { ProxyServiceRoute } from '@subwallet/extension-base/types/environment';
|
|
10
|
+
import { _reformatAddressWithChain, fetchFromProxyService, formatNumber } from '@subwallet/extension-base/utils';
|
|
10
11
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
11
12
|
import BigN, { BigNumber } from 'bignumber.js';
|
|
12
13
|
import { getERC20TransactionObject, getEVMTransactionObject } from "../../balance-service/transfer/smart-contract.js";
|
|
13
14
|
import { createSubstrateExtrinsic } from "../../balance-service/transfer/token.js";
|
|
14
15
|
import { SwapBaseHandler } from "./base-handler.js";
|
|
15
|
-
const apiUrl = 'https://api.simpleswap.io/v3';
|
|
16
|
-
export const simpleSwapApiKey = process.env.SIMPLE_SWAP_API_KEY || '';
|
|
17
16
|
const toBNString = (input, decimal) => {
|
|
18
17
|
const raw = new BigNumber(input);
|
|
19
18
|
return raw.shiftedBy(decimal).integerValue(BigNumber.ROUND_CEIL).toFixed();
|
|
@@ -45,12 +44,11 @@ const buildTxForSimpleSwap = async params => {
|
|
|
45
44
|
userRefundAddress: sender,
|
|
46
45
|
userRefundExtraId: ''
|
|
47
46
|
};
|
|
48
|
-
const response = await
|
|
47
|
+
const response = await fetchFromProxyService(ProxyServiceRoute.SIMPLESWAP, '/exchanges', {
|
|
49
48
|
method: 'POST',
|
|
50
49
|
headers: {
|
|
51
|
-
accept: 'application/json',
|
|
52
50
|
'Content-Type': 'application/json',
|
|
53
|
-
'
|
|
51
|
+
accept: 'application/json'
|
|
54
52
|
},
|
|
55
53
|
body: JSON.stringify(requestBody)
|
|
56
54
|
});
|
|
@@ -9,16 +9,13 @@ import { createAcrossBridgeExtrinsic } from '@subwallet/extension-base/services/
|
|
|
9
9
|
import { getAcrossQuote } from '@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge';
|
|
10
10
|
import { DEFAULT_EXCESS_AMOUNT_WEIGHT, FEE_RATE_MULTIPLIER } from '@subwallet/extension-base/services/swap-service/utils';
|
|
11
11
|
import { BasicTxErrorType, CommonStepType, DynamicSwapType, FeeOptionKey, SwapFeeType, SwapProviderId, SwapStepType } from '@subwallet/extension-base/types';
|
|
12
|
-
import {
|
|
12
|
+
import { ProxyServiceRoute } from '@subwallet/extension-base/types/environment';
|
|
13
|
+
import { _reformatAddressWithChain, fetchFromProxyService } from '@subwallet/extension-base/utils';
|
|
13
14
|
import { getId } from '@subwallet/extension-base/utils/getId';
|
|
14
15
|
import BigNumber from 'bignumber.js';
|
|
15
16
|
import { _getAssetOriginChain, _getChainNativeTokenSlug, _getContractAddressOfToken, _getEvmChainId, _isNativeToken } from "../../chain-service/utils/index.js";
|
|
16
17
|
import { calculateGasFeeParams } from "../../fee-service/utils/index.js";
|
|
17
18
|
import { SwapBaseHandler } from "./base-handler.js";
|
|
18
|
-
const API_URL = 'https://trade-api.gateway.uniswap.org/v1';
|
|
19
|
-
const headers = {
|
|
20
|
-
'x-api-key': process.env.UNISWAP_API_KEY || ''
|
|
21
|
-
};
|
|
22
19
|
async function fetchCheckApproval(request) {
|
|
23
20
|
const {
|
|
24
21
|
address,
|
|
@@ -49,10 +46,9 @@ async function fetchCheckApproval(request) {
|
|
|
49
46
|
} else {
|
|
50
47
|
return undefined;
|
|
51
48
|
}
|
|
52
|
-
const response = await
|
|
49
|
+
const response = await fetchFromProxyService(ProxyServiceRoute.UNISWAP, '/check_approval', {
|
|
53
50
|
method: 'POST',
|
|
54
51
|
headers: {
|
|
55
|
-
...headers,
|
|
56
52
|
'Content-Type': 'application/json'
|
|
57
53
|
},
|
|
58
54
|
body: JSON.stringify({
|
|
@@ -617,10 +613,9 @@ export class UniswapHandler {
|
|
|
617
613
|
if (permitData) {
|
|
618
614
|
body.permitData = permitData;
|
|
619
615
|
}
|
|
620
|
-
postTransactionResponse = await
|
|
616
|
+
postTransactionResponse = await fetchFromProxyService(ProxyServiceRoute.UNISWAP, '/swap', {
|
|
621
617
|
method: 'POST',
|
|
622
618
|
headers: {
|
|
623
|
-
...headers,
|
|
624
619
|
'Content-Type': 'application/json'
|
|
625
620
|
},
|
|
626
621
|
body: JSON.stringify(body)
|
|
@@ -631,10 +626,9 @@ export class UniswapHandler {
|
|
|
631
626
|
const dutchQuote = quote;
|
|
632
627
|
const submitSwapOrder = async () => {
|
|
633
628
|
try {
|
|
634
|
-
const res = await
|
|
629
|
+
const res = await fetchFromProxyService(ProxyServiceRoute.UNISWAP, '/order', {
|
|
635
630
|
method: 'POST',
|
|
636
631
|
headers: {
|
|
637
|
-
...headers,
|
|
638
632
|
'Content-Type': 'application/json'
|
|
639
633
|
},
|
|
640
634
|
body: JSON.stringify({
|
|
@@ -675,10 +669,9 @@ export class UniswapHandler {
|
|
|
675
669
|
const swapper = dutchQuote.orderInfo.swapper;
|
|
676
670
|
return retryGetUniswapTx(async () => {
|
|
677
671
|
try {
|
|
678
|
-
const response = await
|
|
672
|
+
const response = await fetchFromProxyService(ProxyServiceRoute.UNISWAP, `/orders?orderId=${orderId}&swapper=${swapper}`, {
|
|
679
673
|
method: 'GET',
|
|
680
674
|
headers: {
|
|
681
|
-
...headers,
|
|
682
675
|
'Content-Type': 'application/json'
|
|
683
676
|
}
|
|
684
677
|
});
|
|
@@ -13,19 +13,6 @@ export declare function getSwapAlternativeAsset(swapPair: SwapPair): string | un
|
|
|
13
13
|
export declare function getSwapAltToken(chainAsset: _ChainAsset): string | undefined;
|
|
14
14
|
export declare function calculateSwapRate(fromAmount: string, toAmount: string, fromAsset: _ChainAsset, toAsset: _ChainAsset): number;
|
|
15
15
|
export declare function convertSwapRate(rate: string, fromAsset: _ChainAsset, toAsset: _ChainAsset): number;
|
|
16
|
-
export declare function getChainflipOptions(isTestnet: boolean): {
|
|
17
|
-
network: string;
|
|
18
|
-
broker?: undefined;
|
|
19
|
-
} | {
|
|
20
|
-
network: string;
|
|
21
|
-
broker: {
|
|
22
|
-
url: string;
|
|
23
|
-
};
|
|
24
|
-
};
|
|
25
|
-
export declare function getChainflipBroker(isTestnet: boolean): {
|
|
26
|
-
url: string;
|
|
27
|
-
};
|
|
28
|
-
export declare function getChainflipSwap(isTestnet: boolean): string;
|
|
29
16
|
export declare function getBridgeStep(from: string, to: string): DynamicSwapAction;
|
|
30
17
|
export declare function getSwapStep(from: string, to: string): DynamicSwapAction;
|
|
31
18
|
export declare function findBridgeTransitDestination(assetRefMap: Record<string, _AssetRef>, fromToken: _ChainAsset, toToken: _ChainAsset): string | undefined;
|
|
@@ -4,7 +4,6 @@
|
|
|
4
4
|
import { COMMON_ASSETS, COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
|
|
5
5
|
import { _AssetRefPath } from '@subwallet/chain-list/types';
|
|
6
6
|
import { _getAssetDecimals, _getAssetOriginChain, _getOriginChainOfAsset, _parseAssetRefKey } from '@subwallet/extension-base/services/chain-service/utils';
|
|
7
|
-
import { CHAINFLIP_BROKER_API } from '@subwallet/extension-base/services/swap-service/handler/chainflip-handler';
|
|
8
7
|
import { CommonStepType, DynamicSwapType, SwapStepType } from '@subwallet/extension-base/types';
|
|
9
8
|
import { SwapProviderId } from '@subwallet/extension-base/types/swap';
|
|
10
9
|
import BigN from 'bignumber.js';
|
|
@@ -70,39 +69,52 @@ export function convertSwapRate(rate, fromAsset, toAsset) {
|
|
|
70
69
|
const bnRate = BigN(rate);
|
|
71
70
|
return bnRate.times(10 ** decimalDiff).pow(-1).toNumber();
|
|
72
71
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
}
|
|
72
|
+
|
|
73
|
+
// export function getChainflipOptions (isTestnet: boolean) {
|
|
74
|
+
// if (isTestnet) {
|
|
75
|
+
// return {
|
|
76
|
+
// network: getChainflipNetwork(isTestnet)
|
|
77
|
+
// };
|
|
78
|
+
// }
|
|
79
|
+
|
|
80
|
+
// return {
|
|
81
|
+
// network: getChainflipNetwork(isTestnet),
|
|
82
|
+
// broker: getChainflipBroker(isTestnet)
|
|
83
|
+
// };
|
|
84
|
+
// }
|
|
85
|
+
|
|
86
|
+
// function getChainflipNetwork (isTestnet: boolean) {
|
|
87
|
+
// return isTestnet ? 'perseverance' : 'mainnet';
|
|
88
|
+
// }
|
|
89
|
+
|
|
90
|
+
// export function getChainflipBroker (isTestnet: boolean) { // noted: currently not use testnet broker
|
|
91
|
+
// if (isTestnet) {
|
|
92
|
+
// return {
|
|
93
|
+
// url: `https://perseverance.chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
|
|
94
|
+
// };
|
|
95
|
+
// } else {
|
|
96
|
+
// return {
|
|
97
|
+
// url: `https://chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
|
|
98
|
+
// };
|
|
99
|
+
// }
|
|
100
|
+
// }
|
|
101
|
+
|
|
102
|
+
// export function getChainflipSwap (isTestnet: boolean) {
|
|
103
|
+
// if (isTestnet) {
|
|
104
|
+
// return `https://perseverance.chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
|
|
105
|
+
// } else {
|
|
106
|
+
// return `https://chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
|
|
107
|
+
// }
|
|
108
|
+
// }
|
|
109
|
+
|
|
110
|
+
// export function getAssetsUrl (isTestnet: boolean) {
|
|
111
|
+
// if (isTestnet) {
|
|
112
|
+
// return 'https://perseverance.chainflip-broker.io/assets';
|
|
113
|
+
// } else {
|
|
114
|
+
// return 'https://chainflip-broker.io/assets';
|
|
115
|
+
// }
|
|
116
|
+
// }
|
|
117
|
+
|
|
106
118
|
export function getBridgeStep(from, to) {
|
|
107
119
|
return {
|
|
108
120
|
action: DynamicSwapType.BRIDGE,
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { CardanoTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/cardano-transfer';
|
|
3
3
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
4
|
-
import { SWTransactionBase } from '@subwallet/extension-base/services/transaction-service/types';
|
|
4
|
+
import { SWTransaction, SWTransactionBase } from '@subwallet/extension-base/services/transaction-service/types';
|
|
5
|
+
import { Psbt } from 'bitcoinjs-lib';
|
|
5
6
|
import { SubmittableExtrinsic } from '@polkadot/api/promise/types';
|
|
6
7
|
export declare const getTransactionId: (chainType: string, chain: string, isInternal: boolean, isWalletConnect?: boolean) => string;
|
|
7
8
|
export declare const getValidationId: (chainType: string, chain: string) => string;
|
|
8
9
|
export declare const isSubstrateTransaction: (tx: SWTransactionBase['transaction']) => tx is SubmittableExtrinsic;
|
|
9
10
|
export declare const isTonTransaction: (tx: SWTransactionBase['transaction']) => tx is TonTransactionConfig;
|
|
10
11
|
export declare const isCardanoTransaction: (tx: SWTransactionBase['transaction']) => tx is CardanoTransactionConfig;
|
|
12
|
+
export declare const isBitcoinTransaction: (tx: SWTransaction['transaction']) => tx is Psbt;
|
|
11
13
|
export declare const getBaseTransactionInfo: (transaction: SWTransactionBase, chainInfoMap: Record<string, _ChainInfo>) => string;
|
|
@@ -21,6 +21,11 @@ export const isCardanoTransaction = tx => {
|
|
|
21
21
|
const cardanoTransactionConfig = tx;
|
|
22
22
|
return cardanoTransactionConfig.cardanoPayload !== null && cardanoTransactionConfig.cardanoPayload !== undefined;
|
|
23
23
|
};
|
|
24
|
+
|
|
25
|
+
// TODO: [Review] this function
|
|
26
|
+
export const isBitcoinTransaction = tx => {
|
|
27
|
+
return 'data' in tx && Array.isArray(tx.data.inputs);
|
|
28
|
+
};
|
|
24
29
|
const typeName = type => {
|
|
25
30
|
switch (type) {
|
|
26
31
|
case ExtrinsicType.TRANSFER_BALANCE:
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
2
2
|
import KoniState from '@subwallet/extension-base/koni/background/handlers/State';
|
|
3
|
-
import { SWDutchTransactionInput, SWPermitTransactionInput, SWTransactionBase, SWTransactionInput, SWTransactionResponse, TransactionEmitter } from '@subwallet/extension-base/services/transaction-service/types';
|
|
3
|
+
import { SWDutchTransactionInput, SWPermitTransactionInput, SWTransactionBase, SWTransactionInput, SWTransactionResponse, TransactionEmitter, TransactionEventResponse } from '@subwallet/extension-base/services/transaction-service/types';
|
|
4
4
|
import { BaseStepType, BriefProcessStep, ProcessStep, ProcessTransactionData } from '@subwallet/extension-base/types';
|
|
5
5
|
import { BehaviorSubject } from 'rxjs';
|
|
6
6
|
import { TransactionConfig } from 'web3-core';
|
|
7
7
|
import { HexString } from '@polkadot/util/types';
|
|
8
8
|
export default class TransactionService {
|
|
9
9
|
private readonly state;
|
|
10
|
-
private readonly eventService;
|
|
11
|
-
private readonly historyService;
|
|
12
|
-
private readonly notificationService;
|
|
13
|
-
private readonly chainService;
|
|
14
10
|
private readonly watchTransactionSubscribes;
|
|
15
11
|
private aliveProcessMap;
|
|
16
12
|
private readonly transactionSubject;
|
|
@@ -63,6 +59,8 @@ export default class TransactionService {
|
|
|
63
59
|
private signAndSendSubstrateTransaction;
|
|
64
60
|
private signAndSendTonTransaction;
|
|
65
61
|
private signAndSendCardanoTransaction;
|
|
62
|
+
emitterEventTransaction: (emitter: TransactionEmitter, eventData: TransactionEventResponse, chain: string, payload: string) => void;
|
|
63
|
+
private signAndSendBitcoinTransaction;
|
|
66
64
|
private handleTransactionTimeout;
|
|
67
65
|
private handlePostEarningTransaction;
|
|
68
66
|
createProcessIfNeed(process: ProcessTransactionData): Promise<void>;
|