@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
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.ChainflipSwapHandler =
|
|
7
|
+
exports.ChainflipSwapHandler = void 0;
|
|
8
8
|
var _chainList = require("@subwallet/chain-list");
|
|
9
9
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
10
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
@@ -12,9 +12,9 @@ var _smartContract = require("@subwallet/extension-base/services/balance-service
|
|
|
12
12
|
var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
|
|
13
13
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
14
|
var _baseHandler = require("@subwallet/extension-base/services/swap-service/handler/base-handler");
|
|
15
|
-
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
16
15
|
var _types = require("@subwallet/extension-base/types");
|
|
17
|
-
var
|
|
16
|
+
var _environment = require("@subwallet/extension-base/types/environment");
|
|
17
|
+
var _utils2 = require("@subwallet/extension-base/utils");
|
|
18
18
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
19
19
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
20
20
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -22,9 +22,10 @@ var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
|
22
22
|
|
|
23
23
|
const INTERMEDIARY_MAINNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_ETHEREUM;
|
|
24
24
|
const INTERMEDIARY_TESTNET_ASSET_SLUG = _chainList.COMMON_ASSETS.USDC_SEPOLIA;
|
|
25
|
-
const CHAINFLIP_BROKER_API = process.env.CHAINFLIP_BROKER_API || '';
|
|
26
|
-
exports.CHAINFLIP_BROKER_API = CHAINFLIP_BROKER_API;
|
|
27
25
|
class ChainflipSwapHandler {
|
|
26
|
+
// private baseUrl: string;
|
|
27
|
+
// private assetsUrl: string;
|
|
28
|
+
|
|
28
29
|
constructor(chainService, balanceService, feeService) {
|
|
29
30
|
let isTestnet = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
|
|
30
31
|
this.swapBaseHandler = new _baseHandler.SwapBaseHandler({
|
|
@@ -36,8 +37,10 @@ class ChainflipSwapHandler {
|
|
|
36
37
|
});
|
|
37
38
|
this.isTestnet = isTestnet;
|
|
38
39
|
this.providerSlug = isTestnet ? _types.SwapProviderId.CHAIN_FLIP_TESTNET : _types.SwapProviderId.CHAIN_FLIP_MAINNET;
|
|
39
|
-
this.baseUrl =
|
|
40
|
+
// this.baseUrl = getChainflipSwap(isTestnet);
|
|
41
|
+
// this.assetsUrl = getAssetsUrl(isTestnet);
|
|
40
42
|
}
|
|
43
|
+
|
|
41
44
|
get chainService() {
|
|
42
45
|
return this.swapBaseHandler.chainService;
|
|
43
46
|
}
|
|
@@ -73,7 +76,7 @@ class ChainflipSwapHandler {
|
|
|
73
76
|
const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
74
77
|
const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
75
78
|
const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
|
|
76
|
-
const receiver = (0,
|
|
79
|
+
const receiver = (0, _utils2._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
|
|
77
80
|
const fromAssetId = (0, _utils._getAssetSymbol)(fromAsset);
|
|
78
81
|
const toAssetId = (0, _utils._getAssetSymbol)(toAsset);
|
|
79
82
|
const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
|
|
@@ -85,23 +88,31 @@ class ChainflipSwapHandler {
|
|
|
85
88
|
if (processMetadata.destChain !== quoteMetadata.destChain || processMetadata.srcChain !== quoteMetadata.srcChain) {
|
|
86
89
|
throw new Error('Metadata for Chainflip not found');
|
|
87
90
|
}
|
|
91
|
+
const assetsResponse = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, '/assets', {
|
|
92
|
+
method: 'GET'
|
|
93
|
+
}, this.isTestnet);
|
|
94
|
+
const _allAssets = await assetsResponse.json();
|
|
95
|
+
const allAssets = _allAssets.assets;
|
|
96
|
+
const sourceAsset = allAssets.find(asset => asset.network === processMetadata.srcChain && asset.ticker === fromAssetId);
|
|
97
|
+
const destinationAsset = allAssets.find(asset => asset.network === processMetadata.destChain && asset.ticker === toAssetId);
|
|
98
|
+
if (!sourceAsset || !destinationAsset) {
|
|
99
|
+
throw new Error('Error get Chainflip data');
|
|
100
|
+
}
|
|
88
101
|
const depositParams = {
|
|
89
|
-
sourceChain: processMetadata.srcChain,
|
|
90
102
|
destinationAddress: receiver,
|
|
91
|
-
destinationAsset:
|
|
92
|
-
|
|
103
|
+
destinationAsset: destinationAsset.id,
|
|
104
|
+
sourceAsset: sourceAsset.id,
|
|
93
105
|
minimumPrice: minReceive,
|
|
94
106
|
// minimum accepted price for swaps through the channel
|
|
95
107
|
refundAddress: address,
|
|
96
108
|
// address to which assets are refunded
|
|
97
|
-
retryDurationInBlocks: '100'
|
|
98
|
-
// 100 blocks * 6 seconds = 10 minutes before deposits are refunded
|
|
99
|
-
sourceAsset: fromAssetId
|
|
109
|
+
retryDurationInBlocks: '100' // 100 blocks * 6 seconds = 10 minutes before deposits are refunded
|
|
100
110
|
};
|
|
101
|
-
|
|
102
|
-
const
|
|
111
|
+
|
|
112
|
+
const path = `/swap?${new URLSearchParams(depositParams).toString()}`;
|
|
113
|
+
const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.CHAINFLIP, path, {
|
|
103
114
|
method: 'GET'
|
|
104
|
-
});
|
|
115
|
+
}, this.isTestnet);
|
|
105
116
|
const data = await response.json();
|
|
106
117
|
if (!data.id || !data.address || data.address === '' || !data.issuedBlock || !data.network || !data.channelId) {
|
|
107
118
|
throw new Error('Error get Chainflip data');
|
|
@@ -208,8 +219,8 @@ class ChainflipSwapHandler {
|
|
|
208
219
|
expectedReceive: params.selectedQuote.toAmount,
|
|
209
220
|
originTokenInfo,
|
|
210
221
|
destinationTokenInfo,
|
|
211
|
-
sender: (0,
|
|
212
|
-
receiver: (0,
|
|
222
|
+
sender: (0, _utils2._reformatAddressWithChain)(params.request.address, originChain),
|
|
223
|
+
receiver: (0, _utils2._reformatAddressWithChain)(params.request.recipient || params.request.address, destinationChain),
|
|
213
224
|
srcChain: metadata.srcChain,
|
|
214
225
|
destChain: metadata.destChain,
|
|
215
226
|
version: 2
|
|
@@ -4,12 +4,13 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.KyberHandler =
|
|
7
|
+
exports.KyberHandler = void 0;
|
|
8
8
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
9
9
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
10
10
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
11
11
|
var _web = require("@subwallet/extension-base/koni/api/contract-handler/evm/web3");
|
|
12
12
|
var _types = require("@subwallet/extension-base/types");
|
|
13
|
+
var _environment = require("@subwallet/extension-base/types/environment");
|
|
13
14
|
var _utils = require("@subwallet/extension-base/utils");
|
|
14
15
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
15
16
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
@@ -19,9 +20,6 @@ var _baseHandler = require("./base-handler");
|
|
|
19
20
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
20
21
|
// SPDX-License-Identifier: Apache-2.0
|
|
21
22
|
|
|
22
|
-
const KYBER_CLIENT_ID = process.env.KYBER_CLIENT_ID || '';
|
|
23
|
-
exports.KYBER_CLIENT_ID = KYBER_CLIENT_ID;
|
|
24
|
-
const kyberUrl = 'https://aggregator-api.kyberswap.com';
|
|
25
23
|
async function buildTxForKyberSwap(params, chain) {
|
|
26
24
|
const {
|
|
27
25
|
recipient,
|
|
@@ -46,14 +44,13 @@ async function buildTxForKyberSwap(params, chain) {
|
|
|
46
44
|
amountIn,
|
|
47
45
|
gasInclude: 'true'
|
|
48
46
|
});
|
|
49
|
-
const
|
|
47
|
+
const path = `/${chain}/api/v1/routes?${queryParams.toString()}`;
|
|
50
48
|
try {
|
|
51
49
|
var _routeData$data;
|
|
52
|
-
const res = await
|
|
50
|
+
const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, path, {
|
|
53
51
|
method: 'GET',
|
|
54
52
|
headers: {
|
|
55
53
|
'Content-Type': 'application/json',
|
|
56
|
-
'x-client-id': KYBER_CLIENT_ID,
|
|
57
54
|
accept: 'application/json'
|
|
58
55
|
}
|
|
59
56
|
});
|
|
@@ -86,11 +83,10 @@ async function buildTxForKyberSwap(params, chain) {
|
|
|
86
83
|
};
|
|
87
84
|
console.log('routeSummary2', routeSummary);
|
|
88
85
|
try {
|
|
89
|
-
const res = await
|
|
86
|
+
const res = await (0, _utils.fetchFromProxyService)(_environment.ProxyServiceRoute.KYBER, `/${chain}/api/v1/route/build`, {
|
|
90
87
|
method: 'POST',
|
|
91
88
|
headers: {
|
|
92
89
|
'Content-Type': 'application/json',
|
|
93
|
-
'x-client-id': KYBER_CLIENT_ID,
|
|
94
90
|
accept: 'application/json'
|
|
95
91
|
},
|
|
96
92
|
body: JSON.stringify(body)
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.
|
|
6
|
+
exports.SimpleSwapHandler = void 0;
|
|
7
7
|
var _SwapError = require("@subwallet/extension-base/background/errors/SwapError");
|
|
8
8
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
11
11
|
var _types = require("@subwallet/extension-base/types");
|
|
12
|
+
var _environment = require("@subwallet/extension-base/types/environment");
|
|
12
13
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
13
14
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
14
15
|
var _bignumber = _interopRequireWildcard(require("bignumber.js"));
|
|
@@ -20,9 +21,6 @@ function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj &&
|
|
|
20
21
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
21
22
|
// SPDX-License-Identifier: Apache-2.0
|
|
22
23
|
|
|
23
|
-
const apiUrl = 'https://api.simpleswap.io/v3';
|
|
24
|
-
const simpleSwapApiKey = process.env.SIMPLE_SWAP_API_KEY || '';
|
|
25
|
-
exports.simpleSwapApiKey = simpleSwapApiKey;
|
|
26
24
|
const toBNString = (input, decimal) => {
|
|
27
25
|
const raw = new _bignumber.BigNumber(input);
|
|
28
26
|
return raw.shiftedBy(decimal).integerValue(_bignumber.BigNumber.ROUND_CEIL).toFixed();
|
|
@@ -54,12 +52,11 @@ const buildTxForSimpleSwap = async params => {
|
|
|
54
52
|
userRefundAddress: sender,
|
|
55
53
|
userRefundExtraId: ''
|
|
56
54
|
};
|
|
57
|
-
const response = await
|
|
55
|
+
const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.SIMPLESWAP, '/exchanges', {
|
|
58
56
|
method: 'POST',
|
|
59
57
|
headers: {
|
|
60
|
-
accept: 'application/json',
|
|
61
58
|
'Content-Type': 'application/json',
|
|
62
|
-
'
|
|
59
|
+
accept: 'application/json'
|
|
63
60
|
},
|
|
64
61
|
body: JSON.stringify(requestBody)
|
|
65
62
|
});
|
|
@@ -13,6 +13,7 @@ var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/
|
|
|
13
13
|
var _acrossBridge = require("@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge");
|
|
14
14
|
var _utils = require("@subwallet/extension-base/services/swap-service/utils");
|
|
15
15
|
var _types = require("@subwallet/extension-base/types");
|
|
16
|
+
var _environment = require("@subwallet/extension-base/types/environment");
|
|
16
17
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
17
18
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
18
19
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
@@ -22,10 +23,6 @@ var _baseHandler = require("./base-handler");
|
|
|
22
23
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
23
24
|
// SPDX-License-Identifier: Apache-2.0
|
|
24
25
|
|
|
25
|
-
const API_URL = 'https://trade-api.gateway.uniswap.org/v1';
|
|
26
|
-
const headers = {
|
|
27
|
-
'x-api-key': process.env.UNISWAP_API_KEY || ''
|
|
28
|
-
};
|
|
29
26
|
async function fetchCheckApproval(request) {
|
|
30
27
|
const {
|
|
31
28
|
address,
|
|
@@ -56,10 +53,9 @@ async function fetchCheckApproval(request) {
|
|
|
56
53
|
} else {
|
|
57
54
|
return undefined;
|
|
58
55
|
}
|
|
59
|
-
const response = await
|
|
56
|
+
const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/check_approval', {
|
|
60
57
|
method: 'POST',
|
|
61
58
|
headers: {
|
|
62
|
-
...headers,
|
|
63
59
|
'Content-Type': 'application/json'
|
|
64
60
|
},
|
|
65
61
|
body: JSON.stringify({
|
|
@@ -624,10 +620,9 @@ class UniswapHandler {
|
|
|
624
620
|
if (permitData) {
|
|
625
621
|
body.permitData = permitData;
|
|
626
622
|
}
|
|
627
|
-
postTransactionResponse = await
|
|
623
|
+
postTransactionResponse = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/swap', {
|
|
628
624
|
method: 'POST',
|
|
629
625
|
headers: {
|
|
630
|
-
...headers,
|
|
631
626
|
'Content-Type': 'application/json'
|
|
632
627
|
},
|
|
633
628
|
body: JSON.stringify(body)
|
|
@@ -638,10 +633,9 @@ class UniswapHandler {
|
|
|
638
633
|
const dutchQuote = quote;
|
|
639
634
|
const submitSwapOrder = async () => {
|
|
640
635
|
try {
|
|
641
|
-
const res = await
|
|
636
|
+
const res = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, '/order', {
|
|
642
637
|
method: 'POST',
|
|
643
638
|
headers: {
|
|
644
|
-
...headers,
|
|
645
639
|
'Content-Type': 'application/json'
|
|
646
640
|
},
|
|
647
641
|
body: JSON.stringify({
|
|
@@ -682,10 +676,9 @@ class UniswapHandler {
|
|
|
682
676
|
const swapper = dutchQuote.orderInfo.swapper;
|
|
683
677
|
return retryGetUniswapTx(async () => {
|
|
684
678
|
try {
|
|
685
|
-
const response = await
|
|
679
|
+
const response = await (0, _utils2.fetchFromProxyService)(_environment.ProxyServiceRoute.UNISWAP, `/orders?orderId=${orderId}&swapper=${swapper}`, {
|
|
686
680
|
method: 'GET',
|
|
687
681
|
headers: {
|
|
688
|
-
...headers,
|
|
689
682
|
'Content-Type': 'application/json'
|
|
690
683
|
}
|
|
691
684
|
});
|
|
@@ -13,9 +13,6 @@ exports.findSwapTransitDestination = findSwapTransitDestination;
|
|
|
13
13
|
exports.getAmountAfterSlippage = getAmountAfterSlippage;
|
|
14
14
|
exports.getBridgeStep = getBridgeStep;
|
|
15
15
|
exports.getChainRouteFromSteps = getChainRouteFromSteps;
|
|
16
|
-
exports.getChainflipBroker = getChainflipBroker;
|
|
17
|
-
exports.getChainflipOptions = getChainflipOptions;
|
|
18
|
-
exports.getChainflipSwap = getChainflipSwap;
|
|
19
16
|
exports.getFirstAmountFromSteps = getFirstAmountFromSteps;
|
|
20
17
|
exports.getLastAmountFromSteps = getLastAmountFromSteps;
|
|
21
18
|
exports.getSupportedSwapChains = getSupportedSwapChains;
|
|
@@ -29,7 +26,6 @@ exports.processStepsToPathActions = processStepsToPathActions;
|
|
|
29
26
|
var _chainList = require("@subwallet/chain-list");
|
|
30
27
|
var _types = require("@subwallet/chain-list/types");
|
|
31
28
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
32
|
-
var _chainflipHandler = require("@subwallet/extension-base/services/swap-service/handler/chainflip-handler");
|
|
33
29
|
var _types2 = require("@subwallet/extension-base/types");
|
|
34
30
|
var _swap = require("@subwallet/extension-base/types/swap");
|
|
35
31
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
@@ -105,39 +101,52 @@ function convertSwapRate(rate, fromAsset, toAsset) {
|
|
|
105
101
|
const bnRate = (0, _bignumber.default)(rate);
|
|
106
102
|
return bnRate.times(10 ** decimalDiff).pow(-1).toNumber();
|
|
107
103
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
function
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
}
|
|
104
|
+
|
|
105
|
+
// export function getChainflipOptions (isTestnet: boolean) {
|
|
106
|
+
// if (isTestnet) {
|
|
107
|
+
// return {
|
|
108
|
+
// network: getChainflipNetwork(isTestnet)
|
|
109
|
+
// };
|
|
110
|
+
// }
|
|
111
|
+
|
|
112
|
+
// return {
|
|
113
|
+
// network: getChainflipNetwork(isTestnet),
|
|
114
|
+
// broker: getChainflipBroker(isTestnet)
|
|
115
|
+
// };
|
|
116
|
+
// }
|
|
117
|
+
|
|
118
|
+
// function getChainflipNetwork (isTestnet: boolean) {
|
|
119
|
+
// return isTestnet ? 'perseverance' : 'mainnet';
|
|
120
|
+
// }
|
|
121
|
+
|
|
122
|
+
// export function getChainflipBroker (isTestnet: boolean) { // noted: currently not use testnet broker
|
|
123
|
+
// if (isTestnet) {
|
|
124
|
+
// return {
|
|
125
|
+
// url: `https://perseverance.chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
|
|
126
|
+
// };
|
|
127
|
+
// } else {
|
|
128
|
+
// return {
|
|
129
|
+
// url: `https://chainflip-broker.io/rpc/${CHAINFLIP_BROKER_API}`
|
|
130
|
+
// };
|
|
131
|
+
// }
|
|
132
|
+
// }
|
|
133
|
+
|
|
134
|
+
// export function getChainflipSwap (isTestnet: boolean) {
|
|
135
|
+
// if (isTestnet) {
|
|
136
|
+
// return `https://perseverance.chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
|
|
137
|
+
// } else {
|
|
138
|
+
// return `https://chainflip-broker.io/swap?apikey=${CHAINFLIP_BROKER_API}`;
|
|
139
|
+
// }
|
|
140
|
+
// }
|
|
141
|
+
|
|
142
|
+
// export function getAssetsUrl (isTestnet: boolean) {
|
|
143
|
+
// if (isTestnet) {
|
|
144
|
+
// return 'https://perseverance.chainflip-broker.io/assets';
|
|
145
|
+
// } else {
|
|
146
|
+
// return 'https://chainflip-broker.io/assets';
|
|
147
|
+
// }
|
|
148
|
+
// }
|
|
149
|
+
|
|
141
150
|
function getBridgeStep(from, to) {
|
|
142
151
|
return {
|
|
143
152
|
action: _types2.DynamicSwapType.BRIDGE,
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.isTonTransaction = exports.isSubstrateTransaction = exports.isCardanoTransaction = exports.getValidationId = exports.getTransactionId = exports.getBaseTransactionInfo = void 0;
|
|
6
|
+
exports.isTonTransaction = exports.isSubstrateTransaction = exports.isCardanoTransaction = exports.isBitcoinTransaction = exports.getValidationId = exports.getTransactionId = exports.getBaseTransactionInfo = void 0;
|
|
7
7
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
8
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
9
9
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -32,7 +32,13 @@ const isCardanoTransaction = tx => {
|
|
|
32
32
|
const cardanoTransactionConfig = tx;
|
|
33
33
|
return cardanoTransactionConfig.cardanoPayload !== null && cardanoTransactionConfig.cardanoPayload !== undefined;
|
|
34
34
|
};
|
|
35
|
+
|
|
36
|
+
// TODO: [Review] this function
|
|
35
37
|
exports.isCardanoTransaction = isCardanoTransaction;
|
|
38
|
+
const isBitcoinTransaction = tx => {
|
|
39
|
+
return 'data' in tx && Array.isArray(tx.data.inputs);
|
|
40
|
+
};
|
|
41
|
+
exports.isBitcoinTransaction = isBitcoinTransaction;
|
|
36
42
|
const typeName = type => {
|
|
37
43
|
switch (type) {
|
|
38
44
|
case _KoniTypes.ExtrinsicType.TRANSFER_BALANCE:
|
|
@@ -46,10 +46,6 @@ class TransactionService {
|
|
|
46
46
|
}
|
|
47
47
|
constructor(state) {
|
|
48
48
|
this.state = state;
|
|
49
|
-
this.eventService = state.eventService;
|
|
50
|
-
this.historyService = state.historyService;
|
|
51
|
-
this.notificationService = state.notificationService;
|
|
52
|
-
this.chainService = state.chainService;
|
|
53
49
|
}
|
|
54
50
|
get allTransactions() {
|
|
55
51
|
return Object.values(this.transactions);
|
|
@@ -81,6 +77,7 @@ class TransactionService {
|
|
|
81
77
|
additionalValidator,
|
|
82
78
|
address,
|
|
83
79
|
chain,
|
|
80
|
+
chainType,
|
|
84
81
|
extrinsicType
|
|
85
82
|
} = validationResponse;
|
|
86
83
|
const chainInfo = this.state.chainService.getChainInfoByKey(chain);
|
|
@@ -110,27 +107,30 @@ class TransactionService {
|
|
|
110
107
|
const evmApi = this.state.chainService.getEvmApi(chainInfo.slug);
|
|
111
108
|
const tonApi = this.state.chainService.getTonApi(chainInfo.slug);
|
|
112
109
|
const cardanoApi = this.state.chainService.getCardanoApi(chainInfo.slug);
|
|
110
|
+
const bitcoinApi = this.state.chainService.getBitcoinApi(chainInfo.slug);
|
|
113
111
|
// todo: should split into isEvmTx && isNoEvmApi. Because other chains type also has no Evm Api. Same to all blockchain.
|
|
114
112
|
// todo: refactor check evmTransaction.
|
|
115
|
-
const isNoEvmApi = transaction && !(0, _helpers.isSubstrateTransaction)(transaction) && !(0, _helpers.isTonTransaction)(transaction) && !(0, _helpers.isCardanoTransaction)(transaction) && !evmApi;
|
|
113
|
+
const isNoEvmApi = transaction && !(0, _helpers.isSubstrateTransaction)(transaction) && !(0, _helpers.isTonTransaction)(transaction) && !(0, _helpers.isCardanoTransaction)(transaction) && !(0, _helpers.isBitcoinTransaction)(transaction) && !evmApi;
|
|
116
114
|
const isNoTonApi = transaction && (0, _helpers.isTonTransaction)(transaction) && !tonApi;
|
|
117
115
|
const isNoCardanoApi = transaction && (0, _helpers.isCardanoTransaction)(transaction) && !cardanoApi;
|
|
118
|
-
|
|
116
|
+
const isNoBitcoinApi = transaction && (0, _helpers.isBitcoinTransaction)(transaction) && !bitcoinApi;
|
|
117
|
+
if (isNoEvmApi || isNoTonApi || isNoCardanoApi || isNoBitcoinApi) {
|
|
119
118
|
validationResponse.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.CHAIN_DISCONNECTED, undefined));
|
|
120
119
|
}
|
|
121
120
|
|
|
122
121
|
// Estimate fee for transaction
|
|
123
122
|
const id = (0, _getId.getId)();
|
|
124
|
-
const feeInfo = await this.state.feeService.subscribeChainFee(id, chain,
|
|
123
|
+
const feeInfo = await this.state.feeService.subscribeChainFee(id, chain, chainType);
|
|
125
124
|
const nativeTokenInfo = this.state.chainService.getNativeTokenInfo(chain);
|
|
126
125
|
const tokenPayFeeSlug = transactionInput.tokenPayFeeSlug;
|
|
127
126
|
const isNonNativeTokenPayFee = tokenPayFeeSlug && !(0, _utils2._isNativeTokenBySlug)(tokenPayFeeSlug);
|
|
128
|
-
const nonNativeTokenPayFeeInfo = isNonNativeTokenPayFee ? this.chainService.getAssetBySlug(tokenPayFeeSlug) : undefined;
|
|
127
|
+
const nonNativeTokenPayFeeInfo = isNonNativeTokenPayFee ? this.state.chainService.getAssetBySlug(tokenPayFeeSlug) : undefined;
|
|
129
128
|
const priceMap = (await this.state.priceService.getPrice()).priceMap;
|
|
130
129
|
validationResponse.estimateFee = await (0, _transfer.estimateFeeForTransaction)(validationResponse, transaction, chainInfo, evmApi, substrateApi, priceMap, feeInfo, nativeTokenInfo, nonNativeTokenPayFeeInfo, transactionInput.isTransferLocalTokenAndPayThatTokenAsFee);
|
|
131
130
|
const chainInfoMap = this.state.chainService.getChainInfoMap();
|
|
132
131
|
|
|
133
132
|
// Check account signing transaction
|
|
133
|
+
|
|
134
134
|
(0, _transfer.checkSigningAccountForTransaction)(validationResponse, chainInfoMap);
|
|
135
135
|
const nativeTokenAvailable = await this.state.balanceService.getTransferableBalance(address, chain, nativeTokenInfo.slug, extrinsicType);
|
|
136
136
|
|
|
@@ -193,7 +193,7 @@ class TransactionService {
|
|
|
193
193
|
}
|
|
194
194
|
fillTransactionDefaultInfo(transaction) {
|
|
195
195
|
const isInternal = !transaction.url;
|
|
196
|
-
const transactionId = (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
|
|
196
|
+
const transactionId = transaction.id || (0, _helpers.getTransactionId)(transaction.chainType, transaction.chain, isInternal, (0, _helpers2.isWalletConnectRequest)(transaction.id));
|
|
197
197
|
return {
|
|
198
198
|
...transaction,
|
|
199
199
|
createdAt: new Date().getTime(),
|
|
@@ -417,7 +417,7 @@ class TransactionService {
|
|
|
417
417
|
}
|
|
418
418
|
async sendTransaction(transaction) {
|
|
419
419
|
// Send Transaction
|
|
420
|
-
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : this.signAndSendTonTransaction(transaction));
|
|
420
|
+
const emitter = await (transaction.chainType === 'substrate' ? this.signAndSendSubstrateTransaction(transaction) : transaction.chainType === 'evm' ? this.signAndSendEvmTransaction(transaction) : transaction.chainType === 'cardano' ? this.signAndSendCardanoTransaction(transaction) : transaction.chainType === 'ton' ? this.signAndSendTonTransaction(transaction) : this.signAndSendBitcoinTransaction(transaction));
|
|
421
421
|
const {
|
|
422
422
|
eventsHandler,
|
|
423
423
|
step
|
|
@@ -676,6 +676,7 @@ class TransactionService {
|
|
|
676
676
|
extrinsicHash: transaction.extrinsicHash,
|
|
677
677
|
time: transaction.createdAt,
|
|
678
678
|
fee: transaction.estimateFee,
|
|
679
|
+
blockTime: undefined,
|
|
679
680
|
blockNumber: 0,
|
|
680
681
|
// Will be added in next step
|
|
681
682
|
blockHash: '',
|
|
@@ -1065,6 +1066,24 @@ class TransactionService {
|
|
|
1065
1066
|
if ([_KoniTypes.ExtrinsicType.STAKING_JOIN_POOL, _KoniTypes.ExtrinsicType.STAKING_BOND, _KoniTypes.ExtrinsicType.JOIN_YIELD_POOL, _KoniTypes.ExtrinsicType.MINT_LDOT, _KoniTypes.ExtrinsicType.MINT_QDOT, _KoniTypes.ExtrinsicType.MINT_SDOT, _KoniTypes.ExtrinsicType.MINT_STDOT, _KoniTypes.ExtrinsicType.MINT_VDOT, _KoniTypes.ExtrinsicType.MINT_VMANTA].includes(transaction.extrinsicType)) {
|
|
1066
1067
|
this.handlePostEarningTransaction(id);
|
|
1067
1068
|
}
|
|
1069
|
+
|
|
1070
|
+
// Trigger balance update for Bitcoin transactions after receiving extrinsicHash
|
|
1071
|
+
if (_KoniTypes.ExtrinsicType.TRANSFER_BALANCE && transaction.chainType === 'bitcoin') {
|
|
1072
|
+
const balanceService = this.state.balanceService;
|
|
1073
|
+
const inputData = (0, _utils3.parseTransactionData)(transaction.data);
|
|
1074
|
+
try {
|
|
1075
|
+
const sender = _uiKeyring.default.getPair(inputData.from);
|
|
1076
|
+
balanceService.refreshBalanceForAddress(sender.address, transaction.chain, inputData.tokenSlug, transaction.extrinsicType).catch(error => console.error('Failed to run balance subscription:', error));
|
|
1077
|
+
} catch (e) {
|
|
1078
|
+
console.error(e);
|
|
1079
|
+
}
|
|
1080
|
+
try {
|
|
1081
|
+
const recipient = _uiKeyring.default.getPair(inputData.to);
|
|
1082
|
+
balanceService.refreshBalanceForAddress(recipient.address, transaction.chain, inputData.tokenSlug, transaction.extrinsicType).catch(error => console.error('Failed to run balance subscription:', error));
|
|
1083
|
+
} catch (e) {
|
|
1084
|
+
console.error(e);
|
|
1085
|
+
}
|
|
1086
|
+
}
|
|
1068
1087
|
}
|
|
1069
1088
|
handlePostProcessing(id) {
|
|
1070
1089
|
// must be done after success/failure to make sure the transaction is finalized
|
|
@@ -1104,6 +1123,7 @@ class TransactionService {
|
|
|
1104
1123
|
let {
|
|
1105
1124
|
blockHash,
|
|
1106
1125
|
blockNumber,
|
|
1126
|
+
blockTime,
|
|
1107
1127
|
extrinsicHash,
|
|
1108
1128
|
id
|
|
1109
1129
|
} = _ref4;
|
|
@@ -1118,7 +1138,8 @@ class TransactionService {
|
|
|
1118
1138
|
extrinsicHash,
|
|
1119
1139
|
status: _KoniTypes.ExtrinsicStatus.SUCCESS,
|
|
1120
1140
|
blockNumber: blockNumber || 0,
|
|
1121
|
-
blockHash: blockHash || ''
|
|
1141
|
+
blockHash: blockHash || '',
|
|
1142
|
+
blockTime
|
|
1122
1143
|
}).catch(console.error);
|
|
1123
1144
|
const info = (0, _util.isHex)(extrinsicHash) ? extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
|
|
1124
1145
|
this.state.notificationService.notify({
|
|
@@ -1193,14 +1214,14 @@ class TransactionService {
|
|
|
1193
1214
|
errors,
|
|
1194
1215
|
extrinsicHash
|
|
1195
1216
|
});
|
|
1196
|
-
this.historyService.updateHistoryByExtrinsicHash(transaction.extrinsicHash, {
|
|
1217
|
+
this.state.historyService.updateHistoryByExtrinsicHash(transaction.extrinsicHash, {
|
|
1197
1218
|
extrinsicHash: extrinsicHash || transaction.extrinsicHash,
|
|
1198
1219
|
status: nextStatus,
|
|
1199
1220
|
blockNumber: blockNumber || 0,
|
|
1200
1221
|
blockHash: blockHash || ''
|
|
1201
1222
|
}).catch(console.error);
|
|
1202
|
-
const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.chainService.getChainInfoMap());
|
|
1203
|
-
this.notificationService.notify({
|
|
1223
|
+
const info = (0, _util.isHex)(transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash) ? transaction === null || transaction === void 0 ? void 0 : transaction.extrinsicHash : (0, _helpers.getBaseTransactionInfo)(transaction, this.state.chainService.getChainInfoMap());
|
|
1224
|
+
this.state.notificationService.notify({
|
|
1204
1225
|
type: _KoniTypes.NotificationType.ERROR,
|
|
1205
1226
|
title: (0, _i18next.t)('Transaction timed out'),
|
|
1206
1227
|
message: (0, _i18next.t)('Transaction {{info}} timed out', {
|
|
@@ -1214,7 +1235,7 @@ class TransactionService {
|
|
|
1214
1235
|
notifyViaBrowser: true
|
|
1215
1236
|
});
|
|
1216
1237
|
}
|
|
1217
|
-
this.eventService.emit('transaction.timeout', transaction);
|
|
1238
|
+
this.state.eventService.emit('transaction.timeout', transaction);
|
|
1218
1239
|
}
|
|
1219
1240
|
generateHashPayload(chain, transaction) {
|
|
1220
1241
|
const chainInfo = this.state.chainService.getChainInfoByKey(chain);
|
|
@@ -1894,6 +1915,106 @@ class TransactionService {
|
|
|
1894
1915
|
});
|
|
1895
1916
|
return emitter;
|
|
1896
1917
|
}
|
|
1918
|
+
emitterEventTransaction = (emitter, eventData, chain, payload) => {
|
|
1919
|
+
// Emit signed event
|
|
1920
|
+
emitter.emit('signed', eventData);
|
|
1921
|
+
// Add start info
|
|
1922
|
+
emitter.emit('send', eventData);
|
|
1923
|
+
const event = this.state.chainService.getBitcoinApi(chain).api.sendRawTransaction(payload);
|
|
1924
|
+
event.on('extrinsicHash', txHash => {
|
|
1925
|
+
eventData.extrinsicHash = txHash;
|
|
1926
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1927
|
+
});
|
|
1928
|
+
event.on('success', transactionStatus => {
|
|
1929
|
+
console.log(transactionStatus);
|
|
1930
|
+
eventData.blockHash = transactionStatus.block_hash || undefined;
|
|
1931
|
+
eventData.blockNumber = transactionStatus.block_height || undefined;
|
|
1932
|
+
eventData.blockTime = transactionStatus.block_time ? transactionStatus.block_time * 1000 : undefined;
|
|
1933
|
+
emitter.emit('success', eventData);
|
|
1934
|
+
});
|
|
1935
|
+
event.on('error', error => {
|
|
1936
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, error));
|
|
1937
|
+
emitter.emit('error', eventData);
|
|
1938
|
+
});
|
|
1939
|
+
};
|
|
1940
|
+
signAndSendBitcoinTransaction(_ref22) {
|
|
1941
|
+
let {
|
|
1942
|
+
address,
|
|
1943
|
+
chain,
|
|
1944
|
+
id,
|
|
1945
|
+
transaction,
|
|
1946
|
+
url
|
|
1947
|
+
} = _ref22;
|
|
1948
|
+
const tx = transaction;
|
|
1949
|
+
// const bitcoinApi = this.state.chainService.getBitcoinApi(chain);
|
|
1950
|
+
// const chainInfo = this.state.chainService.getChainInfoByKey(chain);
|
|
1951
|
+
|
|
1952
|
+
const accountPair = _uiKeyring.default.getPair(address);
|
|
1953
|
+
const account = (0, _utils4.pairToAccount)(accountPair);
|
|
1954
|
+
const payload = {
|
|
1955
|
+
payload: undefined,
|
|
1956
|
+
payloadJson: undefined,
|
|
1957
|
+
account,
|
|
1958
|
+
canSign: true,
|
|
1959
|
+
hashPayload: tx.toHex(),
|
|
1960
|
+
id
|
|
1961
|
+
};
|
|
1962
|
+
const emitter = new _eventemitter.default();
|
|
1963
|
+
const eventData = {
|
|
1964
|
+
id,
|
|
1965
|
+
errors: [],
|
|
1966
|
+
warnings: [],
|
|
1967
|
+
extrinsicHash: id
|
|
1968
|
+
};
|
|
1969
|
+
const isInjected = !!account.isInjected;
|
|
1970
|
+
// const isExternal = !!account.isExternal;
|
|
1971
|
+
|
|
1972
|
+
if (isInjected) {
|
|
1973
|
+
throw new _TransactionError.TransactionError(_types.BasicTxErrorType.UNSUPPORTED);
|
|
1974
|
+
} else {
|
|
1975
|
+
this.state.requestService.addConfirmationBitcoin(id, url || _constants2.EXTENSION_REQUEST_URL, 'bitcoinSendTransactionRequest', payload, {}).then(_ref23 => {
|
|
1976
|
+
let {
|
|
1977
|
+
isApproved,
|
|
1978
|
+
payload
|
|
1979
|
+
} = _ref23;
|
|
1980
|
+
if (isApproved) {
|
|
1981
|
+
if (!payload) {
|
|
1982
|
+
throw new Error('Bad signature');
|
|
1983
|
+
}
|
|
1984
|
+
|
|
1985
|
+
// Emit signed event
|
|
1986
|
+
emitter.emit('signed', eventData);
|
|
1987
|
+
// Add start info
|
|
1988
|
+
emitter.emit('send', eventData);
|
|
1989
|
+
const bitcoinApi = this.state.chainService.getBitcoinApi(chain);
|
|
1990
|
+
const event = bitcoinApi.api.sendRawTransaction(payload);
|
|
1991
|
+
event.on('extrinsicHash', txHash => {
|
|
1992
|
+
eventData.extrinsicHash = txHash;
|
|
1993
|
+
emitter.emit('extrinsicHash', eventData);
|
|
1994
|
+
});
|
|
1995
|
+
event.on('success', transactionStatus => {
|
|
1996
|
+
eventData.blockHash = transactionStatus.block_hash || undefined;
|
|
1997
|
+
eventData.blockNumber = transactionStatus.block_height || undefined;
|
|
1998
|
+
eventData.blockTime = transactionStatus.block_time ? transactionStatus.block_time * 1000 : undefined;
|
|
1999
|
+
emitter.emit('success', eventData);
|
|
2000
|
+
});
|
|
2001
|
+
event.on('error', error => {
|
|
2002
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SEND, error));
|
|
2003
|
+
emitter.emit('error', eventData);
|
|
2004
|
+
});
|
|
2005
|
+
} else {
|
|
2006
|
+
this.removeTransaction(id);
|
|
2007
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
2008
|
+
emitter.emit('error', eventData);
|
|
2009
|
+
}
|
|
2010
|
+
}).catch(e => {
|
|
2011
|
+
this.removeTransaction(id);
|
|
2012
|
+
eventData.errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.UNABLE_TO_SIGN, e.message));
|
|
2013
|
+
emitter.emit('error', eventData);
|
|
2014
|
+
});
|
|
2015
|
+
}
|
|
2016
|
+
return emitter;
|
|
2017
|
+
}
|
|
1897
2018
|
handleTransactionTimeout(emitter, eventData) {
|
|
1898
2019
|
const timeout = setTimeout(() => {
|
|
1899
2020
|
const transaction = this.getTransaction(eventData.id);
|