@subwallet/extension-base 1.3.50-0 → 1.3.52-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/cjs/constants/environment.js +3 -1
- package/cjs/koni/background/handlers/State.js +1 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/index.js +3 -4
- package/cjs/services/balance-service/transfer/cardano-transfer.js +43 -11
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +13 -92
- package/cjs/services/balance-service/transfer/xcm/index.js +12 -4
- package/cjs/services/chain-service/handler/bitcoin/BitcoinApi.js +3 -1
- package/cjs/services/chain-service/utils/patch.js +3 -2
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +28 -301
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
- package/cjs/services/earning-service/handlers/native-staking/tao.js +174 -148
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +11 -5
- package/cjs/services/earning-service/service.js +5 -2
- package/cjs/services/fee-service/utils/tokenPayFee.js +17 -13
- package/cjs/services/price-service/coingecko.js +3 -3
- package/cjs/services/swap-service/handler/base-handler.js +5 -2
- package/cjs/services/swap-service/handler/chainflip-handler.js +35 -12
- package/cjs/services/swap-service/handler/hydradx-handler.js +19 -13
- package/cjs/services/swap-service/index.js +8 -5
- package/cjs/services/transaction-service/utils.js +31 -22
- package/cjs/utils/account/common.js +1 -0
- package/cjs/utils/account/transform.js +1 -1
- package/cjs/utils/index.js +12 -0
- package/cjs/utils/setup-api-sdk.js +27 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +1 -0
- package/koni/background/handlers/State.js +3 -7
- package/package.json +13 -7
- package/packageInfo.js +1 -1
- package/services/balance-service/index.js +3 -4
- package/services/balance-service/transfer/cardano-transfer.js +42 -10
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +14 -93
- package/services/balance-service/transfer/xcm/index.js +12 -4
- package/services/chain-service/handler/bitcoin/BitcoinApi.js +3 -1
- package/services/chain-service/utils/patch.d.ts +1 -0
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/native-staking/dtao.d.ts +4 -36
- package/services/earning-service/handlers/native-staking/dtao.js +24 -298
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -2
- package/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
- package/services/earning-service/handlers/native-staking/tao.d.ts +25 -5
- package/services/earning-service/handlers/native-staking/tao.js +169 -149
- package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -2
- package/services/earning-service/handlers/nomination-pool/index.js +11 -5
- package/services/earning-service/service.d.ts +1 -0
- package/services/earning-service/service.js +4 -2
- package/services/fee-service/utils/tokenPayFee.js +17 -13
- package/services/price-service/coingecko.js +2 -3
- package/services/swap-service/handler/base-handler.js +6 -3
- package/services/swap-service/handler/chainflip-handler.js +34 -13
- package/services/swap-service/handler/hydradx-handler.js +19 -13
- package/services/swap-service/index.js +8 -5
- package/services/transaction-service/utils.d.ts +0 -1
- package/services/transaction-service/utils.js +31 -21
- package/types/swap/index.d.ts +1 -1
- package/types/yield/info/chain/info.d.ts +1 -0
- package/utils/account/common.js +1 -0
- package/utils/account/transform.js +1 -1
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -1
- package/utils/setup-api-sdk.d.ts +1 -0
- package/utils/setup-api-sdk.js +20 -0
|
@@ -21,6 +21,7 @@ var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
|
21
21
|
var _swap = require("@subwallet/extension-base/types/swap");
|
|
22
22
|
var _utils5 = require("@subwallet/extension-base/utils");
|
|
23
23
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
24
|
+
var _validate = require("@subwallet/keyring/utils/address/validate");
|
|
24
25
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
25
26
|
var _i18next = require("i18next");
|
|
26
27
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -380,8 +381,10 @@ class SwapBaseHandler {
|
|
|
380
381
|
if (recipient) {
|
|
381
382
|
const isEvmAddress = (0, _utilCrypto.isEthereumAddress)(recipient);
|
|
382
383
|
const isEvmDestChain = (0, _utils3._isChainEvmCompatible)(swapToChain);
|
|
383
|
-
|
|
384
|
-
|
|
384
|
+
const isBtcAddress = (0, _validate.isBitcoinAddress)(recipient);
|
|
385
|
+
const isBtcDestChain = (0, _utils3._isPureBitcoinChain)(swapToChain);
|
|
386
|
+
if (isEvmAddress !== isEvmDestChain || isBtcAddress !== isBtcDestChain) {
|
|
387
|
+
// todo: update condition if support swap chain # EVM, Substrate, Bitcoin
|
|
385
388
|
return [new _TransactionError.TransactionError(_swap.SwapErrorType.INVALID_RECIPIENT)];
|
|
386
389
|
}
|
|
387
390
|
}
|
|
@@ -8,6 +8,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");
|
|
11
|
+
var _bitcoinTransfer = require("@subwallet/extension-base/services/balance-service/transfer/bitcoin-transfer");
|
|
11
12
|
var _smartContract = require("@subwallet/extension-base/services/balance-service/transfer/smart-contract");
|
|
12
13
|
var _token = require("@subwallet/extension-base/services/balance-service/transfer/token");
|
|
13
14
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
@@ -17,6 +18,9 @@ var _environment = require("@subwallet/extension-base/types/environment");
|
|
|
17
18
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
18
19
|
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
19
20
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
21
|
+
var bitcoin = _interopRequireWildcard(require("bitcoinjs-lib"));
|
|
22
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
23
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
20
24
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
21
25
|
// SPDX-License-Identifier: Apache-2.0
|
|
22
26
|
|
|
@@ -66,6 +70,8 @@ class ChainflipSwapHandler {
|
|
|
66
70
|
async handleSubmitStep(params) {
|
|
67
71
|
const {
|
|
68
72
|
address,
|
|
73
|
+
currentStep,
|
|
74
|
+
process,
|
|
69
75
|
quote,
|
|
70
76
|
recipient,
|
|
71
77
|
slippage
|
|
@@ -74,10 +80,10 @@ class ChainflipSwapHandler {
|
|
|
74
80
|
const fromAsset = this.chainService.getAssetBySlug(pair.from);
|
|
75
81
|
const chainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
76
82
|
const toChainInfo = this.chainService.getChainInfoByKey(fromAsset.originChain);
|
|
77
|
-
const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : _KoniTypes.ChainType.EVM;
|
|
83
|
+
const chainType = (0, _utils._isChainSubstrateCompatible)(chainInfo) ? _KoniTypes.ChainType.SUBSTRATE : (0, _utils._isPureBitcoinChain)(chainInfo) ? _KoniTypes.ChainType.BITCOIN : _KoniTypes.ChainType.EVM; // todo: improve throw error for unknown chain
|
|
78
84
|
const receiver = (0, _utils2._reformatAddressWithChain)(recipient !== null && recipient !== void 0 ? recipient : address, toChainInfo);
|
|
79
85
|
const minReceive = new _bignumber.default(quote.rate).times(1 - slippage).toString();
|
|
80
|
-
const processMetadata =
|
|
86
|
+
const processMetadata = process.steps[currentStep].metadata;
|
|
81
87
|
const quoteMetadata = processMetadata;
|
|
82
88
|
const fromAssetId = quoteMetadata.fromAssetId;
|
|
83
89
|
const toAssetId = quoteMetadata.toAssetId;
|
|
@@ -122,17 +128,17 @@ class ChainflipSwapHandler {
|
|
|
122
128
|
const txData = {
|
|
123
129
|
address,
|
|
124
130
|
provider: this.providerInfo,
|
|
125
|
-
quote
|
|
126
|
-
slippage
|
|
131
|
+
quote,
|
|
132
|
+
slippage,
|
|
127
133
|
recipient,
|
|
128
|
-
depositChannelId
|
|
129
|
-
depositAddress
|
|
130
|
-
process
|
|
134
|
+
depositChannelId,
|
|
135
|
+
depositAddress,
|
|
136
|
+
process
|
|
131
137
|
};
|
|
132
138
|
let extrinsic;
|
|
133
139
|
if (chainType === _KoniTypes.ChainType.SUBSTRATE) {
|
|
134
|
-
const
|
|
135
|
-
const substrateApi = await
|
|
140
|
+
const _substrateApi = this.chainService.getSubstrateApi(chainInfo.slug);
|
|
141
|
+
const substrateApi = await _substrateApi.isReady;
|
|
136
142
|
const [submittableExtrinsic] = await (0, _token.createSubstrateExtrinsic)({
|
|
137
143
|
from: address,
|
|
138
144
|
networkKey: chainInfo.slug,
|
|
@@ -144,9 +150,8 @@ class ChainflipSwapHandler {
|
|
|
144
150
|
value: quote.fromAmount
|
|
145
151
|
});
|
|
146
152
|
extrinsic = submittableExtrinsic;
|
|
147
|
-
} else {
|
|
148
|
-
const
|
|
149
|
-
const feeInfo = await this.swapBaseHandler.feeService.subscribeChainFee(id, chainInfo.slug, 'evm');
|
|
153
|
+
} else if (chainType === _KoniTypes.ChainType.EVM) {
|
|
154
|
+
const feeInfo = await this.swapBaseHandler.feeService.subscribeChainFee((0, _getId.getId)(), chainInfo.slug, 'evm');
|
|
150
155
|
if ((0, _utils._isNativeToken)(fromAsset)) {
|
|
151
156
|
const [transactionConfig] = await (0, _smartContract.getEVMTransactionObject)({
|
|
152
157
|
chain: chainInfo.slug,
|
|
@@ -171,6 +176,24 @@ class ChainflipSwapHandler {
|
|
|
171
176
|
});
|
|
172
177
|
extrinsic = transactionConfig;
|
|
173
178
|
}
|
|
179
|
+
} else if (chainType === _KoniTypes.ChainType.BITCOIN) {
|
|
180
|
+
const bitcoinApi = this.chainService.getBitcoinApi(chainInfo.slug);
|
|
181
|
+
const feeInfo = await this.swapBaseHandler.feeService.subscribeChainFee((0, _getId.getId)(), chainInfo.slug, 'bitcoin');
|
|
182
|
+
const network = chainInfo.isTestnet ? bitcoin.networks.testnet : bitcoin.networks.bitcoin;
|
|
183
|
+
const [transaction] = await (0, _bitcoinTransfer.createBitcoinTransaction)({
|
|
184
|
+
bitcoinApi,
|
|
185
|
+
chain: chainInfo.slug,
|
|
186
|
+
from: address,
|
|
187
|
+
feeInfo,
|
|
188
|
+
to: depositAddress,
|
|
189
|
+
transferAll: false,
|
|
190
|
+
value: quote.fromAmount,
|
|
191
|
+
network
|
|
192
|
+
});
|
|
193
|
+
extrinsic = transaction;
|
|
194
|
+
} else {
|
|
195
|
+
// todo: update this when support new chainType rather than substrate, evm, bitcoin
|
|
196
|
+
throw new Error('Unknown swap chain type');
|
|
174
197
|
}
|
|
175
198
|
return {
|
|
176
199
|
txChain: fromAsset.originChain,
|
|
@@ -16,7 +16,7 @@ var _types = require("@subwallet/extension-base/types");
|
|
|
16
16
|
var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
17
17
|
var _swap = require("@subwallet/extension-base/types/swap");
|
|
18
18
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
19
|
-
var
|
|
19
|
+
var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
|
|
20
20
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
21
21
|
var _util = require("@polkadot/util");
|
|
22
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
@@ -145,21 +145,27 @@ class HydradxHandler {
|
|
|
145
145
|
let bnSendingValue = (0, _bignumber.default)(fromAmount);
|
|
146
146
|
let bnExpectedReceive = (0, _bignumber.default)(selectedQuote.toAmount);
|
|
147
147
|
if (needModifyData) {
|
|
148
|
-
var
|
|
148
|
+
var _quotes;
|
|
149
149
|
// override info if xcm-swap-xcm
|
|
150
150
|
bnSendingValue = bnSendingValue.multipliedBy(_utils2.DEFAULT_EXCESS_AMOUNT_WEIGHT);
|
|
151
151
|
bnExpectedReceive = bnExpectedReceive.multipliedBy(_utils2.DEFAULT_EXCESS_AMOUNT_WEIGHT);
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
152
|
+
let quotes = []; // todo
|
|
153
|
+
|
|
154
|
+
try {
|
|
155
|
+
quotes = await _subwalletServicesSdk.default.swapApi.fetchSwapQuoteData({
|
|
156
|
+
address: sender,
|
|
157
|
+
pair: {
|
|
158
|
+
from: swapPairInfo.from,
|
|
159
|
+
to: swapPairInfo.to,
|
|
160
|
+
slug: swapPairInfo.slug
|
|
161
|
+
},
|
|
162
|
+
fromAmount: bnSendingValue.toFixed(0, 1),
|
|
163
|
+
slippage: params.request.slippage
|
|
164
|
+
});
|
|
165
|
+
} catch (error) {
|
|
166
|
+
throw new Error(`Failed to fetch swap quote: ${error.message}`);
|
|
167
|
+
}
|
|
168
|
+
const quoteAskResponse = (_quotes = quotes) === null || _quotes === void 0 ? void 0 : _quotes.find(quote => quote.provider === this.providerSlug);
|
|
163
169
|
if (!quoteAskResponse || !quoteAskResponse.quote) {
|
|
164
170
|
return Promise.resolve(undefined);
|
|
165
171
|
}
|
|
@@ -21,7 +21,7 @@ var _types3 = require("@subwallet/extension-base/types");
|
|
|
21
21
|
var _serviceBase = require("@subwallet/extension-base/types/service-base");
|
|
22
22
|
var _swap = require("@subwallet/extension-base/types/swap");
|
|
23
23
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
24
|
-
var
|
|
24
|
+
var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
|
|
25
25
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
26
26
|
var _i18next = require("i18next");
|
|
27
27
|
var _rxjs = require("rxjs");
|
|
@@ -43,7 +43,6 @@ class SwapService {
|
|
|
43
43
|
this.chainService = state.chainService;
|
|
44
44
|
}
|
|
45
45
|
async askProvidersForQuote(_request) {
|
|
46
|
-
var _subwalletApiSdk$swap;
|
|
47
46
|
const availableQuotes = [];
|
|
48
47
|
|
|
49
48
|
// hotfix // todo: remove later
|
|
@@ -51,7 +50,7 @@ class SwapService {
|
|
|
51
50
|
..._request,
|
|
52
51
|
isSupportKyberVersion: true
|
|
53
52
|
};
|
|
54
|
-
const quotes = await
|
|
53
|
+
const quotes = await _subwalletServicesSdk.default.swapApi.fetchSwapQuoteData(request);
|
|
55
54
|
if (Array.isArray(quotes)) {
|
|
56
55
|
quotes.forEach(quoteData => {
|
|
57
56
|
if (!_swap._SUPPORTED_SWAP_PROVIDERS.includes(quoteData.provider)) {
|
|
@@ -272,8 +271,12 @@ class SwapService {
|
|
|
272
271
|
return [[], undefined];
|
|
273
272
|
}
|
|
274
273
|
async getLatestQuoteFromSwapRequest(request) {
|
|
275
|
-
|
|
276
|
-
|
|
274
|
+
let availablePath;
|
|
275
|
+
try {
|
|
276
|
+
availablePath = await _subwalletServicesSdk.default.swapApi.findAvailablePath(request);
|
|
277
|
+
} catch (e) {
|
|
278
|
+
console.log('Error findAvailablePath', e);
|
|
279
|
+
}
|
|
277
280
|
if (!availablePath) {
|
|
278
281
|
return {
|
|
279
282
|
path: [],
|
|
@@ -6,7 +6,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getChainflipExplorerLink = getChainflipExplorerLink;
|
|
7
7
|
exports.getExplorerLink = getExplorerLink;
|
|
8
8
|
exports.getSimpleSwapExplorerLink = getSimpleSwapExplorerLink;
|
|
9
|
-
exports.getTransactionId = getTransactionId;
|
|
10
9
|
exports.parseTransactionData = parseTransactionData;
|
|
11
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
11
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/utils");
|
|
@@ -52,12 +51,18 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
52
51
|
if (explorerLink.includes('devnet-explorer.mosaicchain.io')) {
|
|
53
52
|
return 'accounts';
|
|
54
53
|
}
|
|
54
|
+
if (explorerLink.includes('pdexmon.com')) {
|
|
55
|
+
return 'holders';
|
|
56
|
+
}
|
|
55
57
|
return 'address';
|
|
56
58
|
}
|
|
57
59
|
function getBlockExplorerTxRoute(chainInfo) {
|
|
58
60
|
if ((0, _utils._isPureEvmChain)(chainInfo) || (0, _utils._isPureBitcoinChain)(chainInfo)) {
|
|
59
61
|
return 'tx';
|
|
60
62
|
}
|
|
63
|
+
if (['moonbeam'].includes(chainInfo.slug)) {
|
|
64
|
+
return 'tx';
|
|
65
|
+
}
|
|
61
66
|
if ((0, _utils._isPureCardanoChain)(chainInfo) || (0, _utils._isPureTonChain)(chainInfo)) {
|
|
62
67
|
return 'transaction';
|
|
63
68
|
}
|
|
@@ -67,33 +72,38 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
67
72
|
if (['gen6_public'].includes(chainInfo.slug)) {
|
|
68
73
|
return '#/extrinsics';
|
|
69
74
|
}
|
|
70
|
-
if (['mosaicTest'].includes(chainInfo.slug)) {
|
|
75
|
+
if (['mosaicTest', 'polkadex'].includes(chainInfo.slug)) {
|
|
71
76
|
return 'transactions';
|
|
72
77
|
}
|
|
78
|
+
if (['autonomys'].includes(chainInfo.slug)) {
|
|
79
|
+
return 'extrinsics';
|
|
80
|
+
}
|
|
73
81
|
const explorerLink = (0, _utils._getBlockExplorerFromChain)(chainInfo);
|
|
74
82
|
if (explorerLink && explorerLink.includes('statescan.io')) {
|
|
75
83
|
return '#/extrinsics';
|
|
76
84
|
}
|
|
77
85
|
return 'extrinsic';
|
|
78
86
|
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
87
|
+
|
|
88
|
+
// export function getTransactionId (value: string): Promise<string> {
|
|
89
|
+
// const query = `
|
|
90
|
+
// query ExtrinsicQuery {
|
|
91
|
+
// extrinsics(where: {hash_eq: ${value}}, limit: 1) {
|
|
92
|
+
// id
|
|
93
|
+
// }
|
|
94
|
+
// }`;
|
|
95
|
+
//
|
|
96
|
+
// const apiUrl = 'https://archive-explorer.truth-network.io/graphql';
|
|
97
|
+
//
|
|
98
|
+
// return fetch(apiUrl, {
|
|
99
|
+
// method: 'POST',
|
|
100
|
+
// headers: { 'Content-Type': 'application/json' },
|
|
101
|
+
// body: JSON.stringify({ query })
|
|
102
|
+
// })
|
|
103
|
+
// .then((response) => response.json())
|
|
104
|
+
// .then((result: SWApiResponse<ExtrinsicsDataResponse>) => result.data.extrinsics[0].id);
|
|
105
|
+
// }
|
|
106
|
+
|
|
97
107
|
function getExplorerLink(chainInfo, value, type) {
|
|
98
108
|
const explorerLink = (0, _utils._getBlockExplorerFromChain)(chainInfo);
|
|
99
109
|
if (explorerLink && type === 'account') {
|
|
@@ -129,6 +139,5 @@ function getChainflipExplorerLink(data, chainInfo) {
|
|
|
129
139
|
return `${chainflipDomain}/channels/${data.depositChannelId}`;
|
|
130
140
|
}
|
|
131
141
|
function getSimpleSwapExplorerLink(data) {
|
|
132
|
-
|
|
133
|
-
return `${simpleswapDomain}/exchange?id=${data.id}`;
|
|
142
|
+
return `${_utils2.SIMPLE_SWAP_EXPLORER}/exchange?id=${data.id}`;
|
|
134
143
|
}
|
|
@@ -177,7 +177,7 @@ const getAccountTransactionActions = (signMode, networkType, type, _meta, _speci
|
|
|
177
177
|
case _types2.AccountChainType.CARDANO:
|
|
178
178
|
return [...BASE_TRANSFER_ACTIONS];
|
|
179
179
|
case _types2.AccountChainType.BITCOIN:
|
|
180
|
-
return [...BASE_TRANSFER_ACTIONS];
|
|
180
|
+
return [...BASE_TRANSFER_ACTIONS, _KoniTypes.ExtrinsicType.SWAP];
|
|
181
181
|
}
|
|
182
182
|
} else if (signMode === _types2.AccountSignMode.QR) {
|
|
183
183
|
switch (networkType) {
|
package/cjs/utils/index.js
CHANGED
|
@@ -343,6 +343,18 @@ Object.keys(_bitcoin).forEach(function (key) {
|
|
|
343
343
|
}
|
|
344
344
|
});
|
|
345
345
|
});
|
|
346
|
+
var _setupApiSdk = require("./setup-api-sdk");
|
|
347
|
+
Object.keys(_setupApiSdk).forEach(function (key) {
|
|
348
|
+
if (key === "default" || key === "__esModule") return;
|
|
349
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
350
|
+
if (key in exports && exports[key] === _setupApiSdk[key]) return;
|
|
351
|
+
Object.defineProperty(exports, key, {
|
|
352
|
+
enumerable: true,
|
|
353
|
+
get: function () {
|
|
354
|
+
return _setupApiSdk[key];
|
|
355
|
+
}
|
|
356
|
+
});
|
|
357
|
+
});
|
|
346
358
|
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
347
359
|
// SPDX-License-Identifier: Apache-2.0
|
|
348
360
|
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.setupApiSDK = setupApiSDK;
|
|
8
|
+
var _constants = require("@subwallet/extension-base/constants");
|
|
9
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
10
|
+
var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
|
|
11
|
+
var _environment = require("./environment");
|
|
12
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
13
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
14
|
+
|
|
15
|
+
function setupApiSDK() {
|
|
16
|
+
_subwalletServicesSdk.default.updateConfig({
|
|
17
|
+
appVersion: _constants.APP_VERSION,
|
|
18
|
+
baseUrl: _constants.BACKEND_API_URL,
|
|
19
|
+
platform: _environment.TARGET_ENV,
|
|
20
|
+
chainListVersion: _utils.ChainListVersion
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
// Custom the price history API with other different base URL
|
|
24
|
+
_subwalletServicesSdk.default.priceHistoryApi.updateConfig({
|
|
25
|
+
baseUrl: _constants.BACKEND_PRICE_HISTORY_URL
|
|
26
|
+
});
|
|
27
|
+
}
|
package/constants/environment.js
CHANGED
|
@@ -3,6 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
5
5
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
6
|
+
export const APP_VERSION = process.env.PKG_VERSION || '';
|
|
6
7
|
export const isProductionMode = PRODUCTION_BRANCHES.indexOf(branchName) > -1;
|
|
7
8
|
export const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://be-dev.subwallet.app/api');
|
|
8
9
|
export const BACKEND_PRICE_HISTORY_URL = process.env.SUBWALLET_PRICE_HISTORY_API || (isProductionMode ? 'https://price-history.subwallet.app/api' : 'https://price-history-dev.subwallet.app/api');
|
|
@@ -8,7 +8,7 @@ import { EvmProviderError } from '@subwallet/extension-base/background/errors/Ev
|
|
|
8
8
|
import { withErrorLog } from '@subwallet/extension-base/background/handlers/helpers';
|
|
9
9
|
import { isSubscriptionRunning, unsubscribe } from '@subwallet/extension-base/background/handlers/subscriptions';
|
|
10
10
|
import { APIItemState, BitcoinProviderErrorType, CardanoProviderErrorType, ChainType, EvmProviderErrorType, ExternalRequestPromiseStatus, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
11
|
-
import {
|
|
11
|
+
import { MANTA_PAY_BALANCE_INTERVAL, REMIND_EXPORT_ACCOUNT } from '@subwallet/extension-base/constants';
|
|
12
12
|
import { convertErrorFormat, generateValidationProcess, validationAuthCardanoMiddleware, validationAuthMiddleware, validationAuthWCMiddleware, validationBitcoinConnectMiddleware, validationBitcoinSendTransactionMiddleware, validationBitcoinSignMessageMiddleware, validationBitcoinSignPsbtMiddleware, validationCardanoSignDataMiddleware, validationConnectMiddleware, validationEvmDataTransactionMiddleware, validationEvmSignMessageMiddleware } from '@subwallet/extension-base/core/logic-validation';
|
|
13
13
|
import { BalanceService } from '@subwallet/extension-base/services/balance-service';
|
|
14
14
|
import { ServiceStatus } from '@subwallet/extension-base/services/base/types';
|
|
@@ -41,10 +41,9 @@ import TransactionService from '@subwallet/extension-base/services/transaction-s
|
|
|
41
41
|
import WalletConnectService from '@subwallet/extension-base/services/wallet-connect-service';
|
|
42
42
|
import { SWStorage } from '@subwallet/extension-base/storage';
|
|
43
43
|
import { BasicTxErrorType } from '@subwallet/extension-base/types';
|
|
44
|
-
import { addLazy, isManifestV3, isSameAddress, reformatAddress, sailsCache, stripUrl, targetIsWeb } from '@subwallet/extension-base/utils';
|
|
44
|
+
import { addLazy, isManifestV3, isSameAddress, reformatAddress, sailsCache, setupApiSDK, stripUrl, targetIsWeb } from '@subwallet/extension-base/utils';
|
|
45
45
|
import { convertCardanoHexToBech32, validateAddressNetwork } from '@subwallet/extension-base/utils/cardano';
|
|
46
46
|
import { createPromiseHandler } from '@subwallet/extension-base/utils/promise';
|
|
47
|
-
import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
|
|
48
47
|
import { keyring } from '@subwallet/ui-keyring';
|
|
49
48
|
import BigN from 'bignumber.js';
|
|
50
49
|
import * as bitcoin from 'bitcoinjs-lib';
|
|
@@ -93,10 +92,7 @@ export default class KoniState {
|
|
|
93
92
|
waitStartingFull = null;
|
|
94
93
|
constructor(providers = {}) {
|
|
95
94
|
// Init subwallet api sdk
|
|
96
|
-
|
|
97
|
-
url: BACKEND_API_URL,
|
|
98
|
-
priceHistoryUrl: BACKEND_PRICE_HISTORY_URL
|
|
99
|
-
});
|
|
95
|
+
setupApiSDK();
|
|
100
96
|
this.providers = providers;
|
|
101
97
|
this.eventService = new EventService();
|
|
102
98
|
this.dbService = new DatabaseService(this.eventService);
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.3.
|
|
20
|
+
"version": "1.3.52-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -2801,6 +2801,11 @@
|
|
|
2801
2801
|
"require": "./cjs/utils/request.js",
|
|
2802
2802
|
"default": "./utils/request.js"
|
|
2803
2803
|
},
|
|
2804
|
+
"./utils/setup-api-sdk": {
|
|
2805
|
+
"types": "./utils/setup-api-sdk.d.ts",
|
|
2806
|
+
"require": "./cjs/utils/setup-api-sdk.js",
|
|
2807
|
+
"default": "./utils/setup-api-sdk.js"
|
|
2808
|
+
},
|
|
2804
2809
|
"./utils/staticData": {
|
|
2805
2810
|
"types": "./utils/staticData/index.d.ts",
|
|
2806
2811
|
"require": "./cjs/utils/staticData/index.js",
|
|
@@ -2865,13 +2870,14 @@
|
|
|
2865
2870
|
"@reduxjs/toolkit": "^1.9.1",
|
|
2866
2871
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
2867
2872
|
"@substrate/connect": "^0.8.9",
|
|
2868
|
-
"@subwallet/
|
|
2869
|
-
"@subwallet/
|
|
2870
|
-
"@subwallet/extension-
|
|
2871
|
-
"@subwallet/extension-
|
|
2872
|
-
"@subwallet/extension-
|
|
2873
|
+
"@subwallet-monorepos/subwallet-services-sdk": "^0.1.8",
|
|
2874
|
+
"@subwallet/chain-list": "0.2.111",
|
|
2875
|
+
"@subwallet/extension-base": "^1.3.52-0",
|
|
2876
|
+
"@subwallet/extension-chains": "^1.3.52-0",
|
|
2877
|
+
"@subwallet/extension-dapp": "^1.3.52-0",
|
|
2878
|
+
"@subwallet/extension-inject": "^1.3.52-0",
|
|
2873
2879
|
"@subwallet/keyring": "^0.1.12",
|
|
2874
|
-
"@subwallet/subwallet-api-sdk": "^1.3.
|
|
2880
|
+
"@subwallet/subwallet-api-sdk": "^1.3.51-0",
|
|
2875
2881
|
"@subwallet/ui-keyring": "^0.1.12",
|
|
2876
2882
|
"@ton/core": "^0.56.3",
|
|
2877
2883
|
"@ton/crypto": "^3.2.0",
|
package/packageInfo.js
CHANGED
|
@@ -7,5 +7,5 @@ export const packageInfo = {
|
|
|
7
7
|
name: '@subwallet/extension-base',
|
|
8
8
|
path: (import.meta && import.meta.url) ? new URL(import.meta.url).pathname.substring(0, new URL(import.meta.url).pathname.lastIndexOf('/') + 1) : 'auto',
|
|
9
9
|
type: 'esm',
|
|
10
|
-
version: '1.3.
|
|
10
|
+
version: '1.3.52-0'
|
|
11
11
|
};
|
|
@@ -12,8 +12,8 @@ import DetectAccountBalanceStore from '@subwallet/extension-base/stores/DetectAc
|
|
|
12
12
|
import { addLazy, createPromiseHandler, isAccountAll, waitTimeout } from '@subwallet/extension-base/utils';
|
|
13
13
|
import { getKeypairTypeByAddress } from '@subwallet/keyring';
|
|
14
14
|
import { EthereumKeypairTypes, SubstrateKeypairTypes } from '@subwallet/keyring/types';
|
|
15
|
-
import subwalletApiSdk from '@subwallet/subwallet-api-sdk';
|
|
16
15
|
import keyring from '@subwallet/ui-keyring';
|
|
16
|
+
import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
|
|
17
17
|
import BigN from 'bignumber.js';
|
|
18
18
|
import { t } from 'i18next';
|
|
19
19
|
import { BehaviorSubject } from 'rxjs';
|
|
@@ -448,12 +448,11 @@ export class BalanceService {
|
|
|
448
448
|
const typeValid = [...EthereumKeypairTypes].includes(type);
|
|
449
449
|
if (typeValid) {
|
|
450
450
|
return new Promise(resolve => {
|
|
451
|
-
var _subwalletApiSdk$bala;
|
|
452
451
|
const timeOutPromise = new Promise(_resolve => {
|
|
453
452
|
setTimeout(() => _resolve([]), 30000);
|
|
454
453
|
});
|
|
455
|
-
const
|
|
456
|
-
Promise.race([timeOutPromise,
|
|
454
|
+
const balanceDetectionApi = subwalletApiSdk.balanceDetectionApi || Promise.resolve([]);
|
|
455
|
+
Promise.race([timeOutPromise, balanceDetectionApi.getEvmTokenBalanceSlug(address)]).then(result => resolve(result)).catch(error => {
|
|
457
456
|
console.error(error);
|
|
458
457
|
resolve(null);
|
|
459
458
|
});
|
|
@@ -4,7 +4,22 @@
|
|
|
4
4
|
import * as csl from '@emurgo/cardano-serialization-lib-nodejs';
|
|
5
5
|
import { _AssetType } from '@subwallet/chain-list/types';
|
|
6
6
|
import { getAdaBelongUtxo, getCardanoTxFee, splitCardanoId } from '@subwallet/extension-base/services/balance-service/helpers/subscribe/cardano/utils';
|
|
7
|
-
import {
|
|
7
|
+
import { toUnit } from '@subwallet/extension-base/utils';
|
|
8
|
+
import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
|
|
9
|
+
var POPULAR_CARDANO_ERROR_PHRASE;
|
|
10
|
+
(function (POPULAR_CARDANO_ERROR_PHRASE) {
|
|
11
|
+
POPULAR_CARDANO_ERROR_PHRASE["NOT_MATCH_MIN_AMOUNT"] = "less than the minimum UTXO value";
|
|
12
|
+
POPULAR_CARDANO_ERROR_PHRASE["INSUFFICIENT_INPUT"] = "Insufficient input in transaction";
|
|
13
|
+
})(POPULAR_CARDANO_ERROR_PHRASE || (POPULAR_CARDANO_ERROR_PHRASE = {}));
|
|
14
|
+
function getFirstNumberAfterSubstring(inputStr, subStr) {
|
|
15
|
+
const regex = new RegExp(`(${subStr})\\D*(\\d+)`);
|
|
16
|
+
const match = inputStr.match(regex);
|
|
17
|
+
if (match) {
|
|
18
|
+
return parseInt(match[2], 10);
|
|
19
|
+
} else {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
8
23
|
export async function createCardanoTransaction(params) {
|
|
9
24
|
var _tokenInfo$metadata;
|
|
10
25
|
const {
|
|
@@ -22,15 +37,32 @@ export async function createCardanoTransaction(params) {
|
|
|
22
37
|
if (!cardanoId) {
|
|
23
38
|
throw new Error('Missing token policy id metadata');
|
|
24
39
|
}
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
})
|
|
40
|
+
let payload;
|
|
41
|
+
try {
|
|
42
|
+
payload = await subwalletApiSdk.cardanoApi.fetchUnsignedPayload({
|
|
43
|
+
sender: from,
|
|
44
|
+
receiver: to,
|
|
45
|
+
unit: cardanoId,
|
|
46
|
+
quantity: value
|
|
47
|
+
});
|
|
48
|
+
} catch (error) {
|
|
49
|
+
const errorMessage = error.message;
|
|
50
|
+
const tokenDecimals = params.tokenInfo.decimals || 0; // todo: review if should use nativeTokenDecimals?
|
|
51
|
+
const nativeTokenSymbol = params.nativeTokenInfo.symbol;
|
|
52
|
+
if (errorMessage.includes(POPULAR_CARDANO_ERROR_PHRASE.NOT_MATCH_MIN_AMOUNT)) {
|
|
53
|
+
const minAdaRequiredRaw = getFirstNumberAfterSubstring(errorMessage, POPULAR_CARDANO_ERROR_PHRASE.NOT_MATCH_MIN_AMOUNT);
|
|
54
|
+
const minAdaRequired = minAdaRequiredRaw ? toUnit(minAdaRequiredRaw, tokenDecimals) : 1;
|
|
55
|
+
throw new Error(`Amount too low. Increase your amount above ${minAdaRequired} ${nativeTokenSymbol} and try again`);
|
|
56
|
+
}
|
|
57
|
+
if (errorMessage.includes(POPULAR_CARDANO_ERROR_PHRASE.INSUFFICIENT_INPUT)) {
|
|
58
|
+
throw new Error(`Insufficient ${nativeTokenSymbol} balance to perform transaction. Top up ${nativeTokenSymbol} and try again`);
|
|
59
|
+
}
|
|
60
|
+
console.error(`Transaction is not built successfully: ${errorMessage}`);
|
|
61
|
+
throw new Error('Unable to perform this transaction at the moment. Try again later');
|
|
62
|
+
}
|
|
63
|
+
if (!payload) {
|
|
64
|
+
throw new Error('Build cardano payload failed!');
|
|
65
|
+
}
|
|
34
66
|
console.log('Build cardano payload successfully!', payload);
|
|
35
67
|
validatePayload(payload, params);
|
|
36
68
|
const fee = getCardanoTxFee(payload);
|