@subwallet/extension-base 1.3.51-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/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/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/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 +12 -6
- 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/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/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/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
|
@@ -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
|
}
|
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,11 +2870,12 @@
|
|
|
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
2880
|
"@subwallet/subwallet-api-sdk": "^1.3.51-0",
|
|
2875
2881
|
"@subwallet/ui-keyring": "^0.1.12",
|
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);
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
|
|
5
5
|
import { _isAcrossBridgeXcm } from '@subwallet/extension-base/core/substrate/xcm-parser';
|
|
6
|
-
import subwalletApiSdk from '@subwallet/subwallet-
|
|
6
|
+
import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
|
|
7
7
|
// Across Bridge
|
|
8
8
|
const acrossPairsMap = new Map([[COMMON_CHAIN_SLUGS.ETHEREUM, new Set(['optimism', 'base_mainnet', 'arbitrum_one'])], ['optimism', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'base_mainnet', 'arbitrum_one'])], ['base_mainnet', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'arbitrum_one'])], ['arbitrum_one', new Set([COMMON_CHAIN_SLUGS.ETHEREUM, 'optimism', 'base_mainnet'])], [COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA, new Set(['base_sepolia', 'arbitrum_sepolia'])],
|
|
9
9
|
// TESTNET START HERE
|
|
@@ -37,100 +37,21 @@ export const getAcrossQuote = async ({
|
|
|
37
37
|
throw new Error('Sender is required');
|
|
38
38
|
}
|
|
39
39
|
try {
|
|
40
|
-
|
|
41
|
-
|
|
40
|
+
const data = await subwalletApiSdk.xcmApi.fetchXcmData({
|
|
41
|
+
address: sender,
|
|
42
|
+
from: originTokenInfo.slug,
|
|
43
|
+
to: destinationTokenInfo.slug,
|
|
44
|
+
recipient,
|
|
45
|
+
value: sendingValue
|
|
46
|
+
});
|
|
42
47
|
if (!data) {
|
|
43
|
-
|
|
48
|
+
return Promise.reject(new Error('Failed to fetch Across Bridge Data. Please try again later'));
|
|
44
49
|
}
|
|
45
50
|
return data;
|
|
46
51
|
} catch (error) {
|
|
47
|
-
|
|
52
|
+
if (error instanceof SyntaxError) {
|
|
53
|
+
return Promise.reject(new Error('Unable to perform this transaction at the moment. Try again later'));
|
|
54
|
+
}
|
|
55
|
+
return Promise.reject(new Error((error === null || error === void 0 ? void 0 : error.message) || 'Unable to perform this transaction at the moment. Try again later'));
|
|
48
56
|
}
|
|
49
|
-
};
|
|
50
|
-
|
|
51
|
-
// export const SpokePoolMapping: Record<number, { SpokePool: { address: string; blockNumber: number } }> = {
|
|
52
|
-
// 1: {
|
|
53
|
-
// SpokePool: { address: '0x5c7BCd6E7De5423a257D81B442095A1a6ced35C5', blockNumber: 17117454 }
|
|
54
|
-
// },
|
|
55
|
-
// 10: {
|
|
56
|
-
// SpokePool: { address: '0x6f26Bf09B1C792e3228e5467807a900A503c0281', blockNumber: 93903076 }
|
|
57
|
-
// },
|
|
58
|
-
// 11155111: {
|
|
59
|
-
// SpokePool: { address: '0x5ef6C01E11889d86803e0B23e3cB3F9E9d97B662', blockNumber: 5288470 }
|
|
60
|
-
// },
|
|
61
|
-
// 11155420: {
|
|
62
|
-
// SpokePool: { address: '0x4e8E101924eDE233C13e2D8622DC8aED2872d505', blockNumber: 7762656 }
|
|
63
|
-
// },
|
|
64
|
-
// 1135: {
|
|
65
|
-
// SpokePool: { address: '0x9552a0a6624A23B848060AE5901659CDDa1f83f8', blockNumber: 2602337 }
|
|
66
|
-
// },
|
|
67
|
-
// 130: {
|
|
68
|
-
// SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 7915488 }
|
|
69
|
-
// },
|
|
70
|
-
// 137: {
|
|
71
|
-
// SpokePool: { address: '0x9295ee1d8C5b022Be115A2AD3c30C72E34e7F096', blockNumber: 41908657 }
|
|
72
|
-
// },
|
|
73
|
-
// 168587773: {
|
|
74
|
-
// SpokePool: { address: '0x5545092553Cf5Bf786e87a87192E902D50D8f022', blockNumber: 7634204 }
|
|
75
|
-
// },
|
|
76
|
-
// 1868: {
|
|
77
|
-
// SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 1709997 }
|
|
78
|
-
// },
|
|
79
|
-
// 288: {
|
|
80
|
-
// SpokePool: { address: '0xBbc6009fEfFc27ce705322832Cb2068F8C1e0A58', blockNumber: 619993 }
|
|
81
|
-
// },
|
|
82
|
-
// 324: {
|
|
83
|
-
// SpokePool: { address: '0xE0B015E54d54fc84a6cB9B666099c46adE9335FF', blockNumber: 10352565 }
|
|
84
|
-
// },
|
|
85
|
-
// 34443: {
|
|
86
|
-
// SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 8043187 }
|
|
87
|
-
// },
|
|
88
|
-
// 37111: {
|
|
89
|
-
// SpokePool: { address: '0x6A0a7f39530923911832Dd60667CE5da5449967B', blockNumber: 156275 }
|
|
90
|
-
// },
|
|
91
|
-
// 41455: {
|
|
92
|
-
// SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 4240318 }
|
|
93
|
-
// },
|
|
94
|
-
// 4202: {
|
|
95
|
-
// SpokePool: { address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4', blockNumber: 7267988 }
|
|
96
|
-
// },
|
|
97
|
-
// 42161: {
|
|
98
|
-
// SpokePool: { address: '0xe35e9842fceaCA96570B734083f4a58e8F7C5f2A', blockNumber: 83868041 }
|
|
99
|
-
// },
|
|
100
|
-
// 421614: {
|
|
101
|
-
// SpokePool: { address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75', blockNumber: 12411026 }
|
|
102
|
-
// },
|
|
103
|
-
// 480: {
|
|
104
|
-
// SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 4524742 }
|
|
105
|
-
// },
|
|
106
|
-
// 534352: {
|
|
107
|
-
// SpokePool: { address: '0x3baD7AD0728f9917d1Bf08af5782dCbD516cDd96', blockNumber: 7489705 }
|
|
108
|
-
// },
|
|
109
|
-
// 57073: {
|
|
110
|
-
// SpokePool: { address: '0xeF684C38F94F48775959ECf2012D7E864ffb9dd4', blockNumber: 1139240 }
|
|
111
|
-
// },
|
|
112
|
-
// 59144: {
|
|
113
|
-
// SpokePool: { address: '0x7E63A5f1a8F0B4d0934B2f2327DAED3F6bb2ee75', blockNumber: 2721169 }
|
|
114
|
-
// },
|
|
115
|
-
// 690: {
|
|
116
|
-
// SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 5512122 }
|
|
117
|
-
// },
|
|
118
|
-
// 7777777: {
|
|
119
|
-
// SpokePool: { address: '0x13fDac9F9b4777705db45291bbFF3c972c6d1d97', blockNumber: 18382867 }
|
|
120
|
-
// },
|
|
121
|
-
// 80002: {
|
|
122
|
-
// SpokePool: { address: '0xd08baaE74D6d2eAb1F3320B2E1a53eeb391ce8e5', blockNumber: 7529960 }
|
|
123
|
-
// },
|
|
124
|
-
// 81457: {
|
|
125
|
-
// SpokePool: { address: '0x2D509190Ed0172ba588407D4c2df918F955Cc6E1', blockNumber: 5574280 }
|
|
126
|
-
// },
|
|
127
|
-
// 8453: {
|
|
128
|
-
// SpokePool: { address: '0x09aea4b2242abC8bb4BB78D537A67a245A7bEC64', blockNumber: 2164878 }
|
|
129
|
-
// },
|
|
130
|
-
// 84532: {
|
|
131
|
-
// SpokePool: { address: '0x82B564983aE7274c86695917BBf8C99ECb6F0F8F', blockNumber: 6082004 }
|
|
132
|
-
// },
|
|
133
|
-
// 919: {
|
|
134
|
-
// SpokePool: { address: '0xbd886FC0725Cc459b55BbFEb3E4278610331f83b', blockNumber: 13999465 }
|
|
135
|
-
// }
|
|
136
|
-
// };
|
|
57
|
+
};
|
|
@@ -12,7 +12,7 @@ import { getExtrinsicByXtokensPallet } from '@subwallet/extension-base/services/
|
|
|
12
12
|
import { _XCM_CHAIN_GROUP } from '@subwallet/extension-base/services/chain-service/constants';
|
|
13
13
|
import { _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
14
14
|
import { combineEthFee } from '@subwallet/extension-base/utils';
|
|
15
|
-
import subwalletApiSdk from '@subwallet/subwallet-
|
|
15
|
+
import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
|
|
16
16
|
import { _createPosBridgeL1toL2Extrinsic, _createPosBridgeL2toL1Extrinsic } from "./posBridge.js";
|
|
17
17
|
// SnowBridge
|
|
18
18
|
export const createSnowBridgeExtrinsic = async ({
|
|
@@ -175,8 +175,13 @@ export const createAcrossBridgeExtrinsic = async ({
|
|
|
175
175
|
throw new Error('Sender is required');
|
|
176
176
|
}
|
|
177
177
|
try {
|
|
178
|
-
|
|
179
|
-
|
|
178
|
+
const data = await subwalletApiSdk.xcmApi.fetchXcmData({
|
|
179
|
+
address: sender,
|
|
180
|
+
from: originTokenInfo.slug,
|
|
181
|
+
to: destinationTokenInfo.slug,
|
|
182
|
+
recipient,
|
|
183
|
+
value: sendingValue
|
|
184
|
+
});
|
|
180
185
|
const _feeCustom = feeCustom;
|
|
181
186
|
const feeCombine = combineEthFee(feeInfo, feeOption, _feeCustom);
|
|
182
187
|
if (!data) {
|
|
@@ -193,6 +198,9 @@ export const createAcrossBridgeExtrinsic = async ({
|
|
|
193
198
|
transactionConfig.gas = gasLimit.toString();
|
|
194
199
|
return transactionConfig;
|
|
195
200
|
} catch (error) {
|
|
196
|
-
|
|
201
|
+
if (error instanceof SyntaxError) {
|
|
202
|
+
return Promise.reject(new Error('Unable to perform this transaction at the moment. Try again later'));
|
|
203
|
+
}
|
|
204
|
+
return Promise.reject(new Error((error === null || error === void 0 ? void 0 : error.message) || 'Unable to perform this transaction at the moment. Try again later'));
|
|
197
205
|
}
|
|
198
206
|
};
|
|
@@ -5,7 +5,7 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
|
5
5
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
6
6
|
const fetchDomain = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'https://chain-list-assets.subwallet.app' : 'https://dev.sw-chain-list-assets.pages.dev';
|
|
7
7
|
const fetchFile = PRODUCTION_BRANCHES.indexOf(branchName) > -1 ? 'list.json' : 'preview.json';
|
|
8
|
-
const ChainListVersion = '0.2.
|
|
8
|
+
export const ChainListVersion = '0.2.111'; // update this when build chain-list
|
|
9
9
|
|
|
10
10
|
// todo: move this interface to chainlist
|
|
11
11
|
|