@subwallet/extension-base 1.2.13-0 → 1.2.14-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/errors/SwapError.js +5 -1
- package/cjs/background/errors/SwapError.js +5 -1
- package/cjs/core/logic-validation/swap.js +56 -3
- package/cjs/koni/api/nft/config.js +28 -18
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/transfer/xcm/utils.js +2 -2
- package/cjs/services/chain-service/constants.js +1 -1
- package/cjs/services/chain-service/handler/SubstrateApi.js +6 -0
- package/cjs/services/chain-service/index.js +17 -4
- package/cjs/services/migration-service/scripts/databases/ReloadMetadata.js +35 -0
- package/cjs/services/migration-service/scripts/index.js +4 -2
- package/cjs/services/storage-service/db-stores/BaseStore.js +4 -0
- package/cjs/services/swap-service/handler/asset-hub/handler.js +343 -0
- package/cjs/services/swap-service/handler/asset-hub/index.js +12 -0
- package/cjs/services/swap-service/handler/asset-hub/router.js +93 -0
- package/cjs/services/swap-service/handler/asset-hub/utils.js +158 -0
- package/cjs/services/swap-service/index.js +10 -1
- package/cjs/services/swap-service/utils.js +10 -1
- package/cjs/types/swap/index.js +5 -1
- package/core/logic-validation/swap.d.ts +3 -1
- package/core/logic-validation/swap.js +55 -4
- package/koni/api/nft/config.js +28 -18
- package/package.json +36 -11
- package/packageInfo.js +1 -1
- package/services/balance-service/transfer/xcm/utils.js +2 -2
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/handler/SubstrateApi.js +6 -0
- package/services/chain-service/index.js +17 -4
- package/services/migration-service/scripts/databases/ReloadMetadata.d.ts +5 -0
- package/services/migration-service/scripts/databases/ReloadMetadata.js +27 -0
- package/services/migration-service/scripts/index.js +4 -2
- package/services/storage-service/db-stores/BaseStore.d.ts +3 -0
- package/services/storage-service/db-stores/BaseStore.js +4 -0
- package/services/swap-service/handler/asset-hub/handler.d.ts +31 -0
- package/services/swap-service/handler/asset-hub/handler.js +335 -0
- package/services/swap-service/handler/asset-hub/index.d.ts +1 -0
- package/services/swap-service/handler/asset-hub/index.js +4 -0
- package/services/swap-service/handler/asset-hub/router.d.ts +16 -0
- package/services/swap-service/handler/asset-hub/router.js +85 -0
- package/services/swap-service/handler/asset-hub/utils.d.ts +18 -0
- package/services/swap-service/handler/asset-hub/utils.js +133 -0
- package/services/swap-service/index.js +10 -1
- package/services/swap-service/utils.d.ts +1 -0
- package/services/swap-service/utils.js +9 -1
- package/types/swap/index.d.ts +15 -2
- package/types/swap/index.js +5 -1
- /package/cjs/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
- /package/services/migration-service/scripts/{ClearMetadataDatabase.d.ts → databases/ClearMetadataDatabase.d.ts} +0 -0
- /package/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
package/cjs/types/swap/index.js
CHANGED
|
@@ -19,6 +19,7 @@ exports.SwapErrorType = SwapErrorType;
|
|
|
19
19
|
SwapErrorType["SWAP_EXCEED_ALLOWANCE"] = "SWAP_EXCEED_ALLOWANCE";
|
|
20
20
|
SwapErrorType["SWAP_NOT_ENOUGH_BALANCE"] = "SWAP_NOT_ENOUGH_BALANCE";
|
|
21
21
|
SwapErrorType["NOT_ENOUGH_LIQUIDITY"] = "NOT_ENOUGH_LIQUIDITY";
|
|
22
|
+
SwapErrorType["MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT"] = "MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT";
|
|
22
23
|
SwapErrorType["AMOUNT_CANNOT_BE_ZERO"] = "AMOUNT_CANNOT_BE_ZERO";
|
|
23
24
|
})(SwapErrorType || (exports.SwapErrorType = SwapErrorType = {}));
|
|
24
25
|
let SwapStepType;
|
|
@@ -33,8 +34,11 @@ exports.SwapProviderId = SwapProviderId;
|
|
|
33
34
|
SwapProviderId["CHAIN_FLIP_MAINNET"] = "CHAIN_FLIP_MAINNET";
|
|
34
35
|
SwapProviderId["HYDRADX_MAINNET"] = "HYDRADX_MAINNET";
|
|
35
36
|
SwapProviderId["HYDRADX_TESTNET"] = "HYDRADX_TESTNET";
|
|
37
|
+
SwapProviderId["POLKADOT_ASSET_HUB"] = "POLKADOT_ASSET_HUB";
|
|
38
|
+
SwapProviderId["KUSAMA_ASSET_HUB"] = "KUSAMA_ASSET_HUB";
|
|
39
|
+
SwapProviderId["ROCOCO_ASSET_HUB"] = "ROCOCO_ASSET_HUB";
|
|
36
40
|
})(SwapProviderId || (exports.SwapProviderId = SwapProviderId = {}));
|
|
37
|
-
const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET, SwapProviderId.HYDRADX_TESTNET];
|
|
41
|
+
const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET, SwapProviderId.HYDRADX_TESTNET, SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB, SwapProviderId.ROCOCO_ASSET_HUB];
|
|
38
42
|
exports._SUPPORTED_SWAP_PROVIDERS = _SUPPORTED_SWAP_PROVIDERS;
|
|
39
43
|
// process handling
|
|
40
44
|
let SwapFeeType;
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
3
3
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
4
|
-
import { ChainflipPreValidationMetadata, HydradxPreValidationMetadata, SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
4
|
+
import { AssetHubPreValidationMetadata, ChainflipPreValidationMetadata, HydradxPreValidationMetadata, SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
5
|
+
export declare function _validateBalanceToSwapOnAssetHub(fromToken: _ChainAsset, feeToken: _ChainAsset, feeTokenChainInfo: _ChainInfo, feeAmount: string, fromTokenBalance: string, feeTokenBalance: string, swapAmount: string, isXcmOk: boolean, minSwap?: string): TransactionError | undefined;
|
|
5
6
|
export declare function _validateBalanceToSwap(fromToken: _ChainAsset, feeToken: _ChainAsset, feeTokenChainInfo: _ChainInfo, feeAmount: string, fromTokenBalance: string, feeTokenBalance: string, swapAmount: string, isXcmOk: boolean, minSwap?: string): TransactionError | undefined;
|
|
6
7
|
export declare function _validateSwapRecipient(destChainInfo: _ChainInfo, recipient: string): TransactionError | undefined;
|
|
7
8
|
export declare function _getChainflipEarlyValidationError(error: SwapErrorType, metadata: ChainflipPreValidationMetadata): SwapError;
|
|
8
9
|
export declare function _getEarlyHydradxValidationError(error: SwapErrorType, metadata: HydradxPreValidationMetadata): SwapError;
|
|
10
|
+
export declare function _getEarlyAssetHubValidationError(error: SwapErrorType, metadata: AssetHubPreValidationMetadata): SwapError;
|
|
@@ -4,17 +4,51 @@
|
|
|
4
4
|
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
5
5
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
6
6
|
import { BasicTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
|
-
import { _getAssetDecimals, _isChainEvmCompatible } from '@subwallet/extension-base/services/chain-service/utils';
|
|
7
|
+
import { _getAssetDecimals, _getTokenMinAmount, _isChainEvmCompatible, _isNativeToken } from '@subwallet/extension-base/services/chain-service/utils';
|
|
8
8
|
import { SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
9
9
|
import { formatNumber } from '@subwallet/extension-base/utils';
|
|
10
10
|
import BigN from 'bignumber.js';
|
|
11
11
|
import { isEthereumAddress } from '@polkadot/util-crypto';
|
|
12
|
+
export function _validateBalanceToSwapOnAssetHub(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
|
|
13
|
+
const bnFromTokenBalance = new BigN(fromTokenBalance);
|
|
14
|
+
if (!_isNativeToken(fromToken) && bnFromTokenBalance.minus(swapAmount).lt(_getTokenMinAmount(fromToken))) {
|
|
15
|
+
const parsedMaxBalanceSwap = formatNumber(bnFromTokenBalance.minus(_getTokenMinAmount(fromToken)), _getAssetDecimals(fromToken));
|
|
16
|
+
return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
|
|
17
|
+
}
|
|
18
|
+
if (new BigN(feeTokenBalance).lte(feeAmount)) {
|
|
19
|
+
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
|
|
20
|
+
}
|
|
21
|
+
if (!_isNativeToken(fromToken) && fromToken.slug === feeToken.slug) {
|
|
22
|
+
// todo: need review and refactor
|
|
23
|
+
if (bnFromTokenBalance.lte(new BigN(feeAmount).plus(swapAmount))) {
|
|
24
|
+
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
if (isXcmOk) {
|
|
28
|
+
// assume that the swap is valid if XCM is in the process and it was successful
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
if (minSwap) {
|
|
32
|
+
if (bnFromTokenBalance.lte(minSwap)) {
|
|
33
|
+
const parsedMinSwapValue = formatNumber(minSwap, _getAssetDecimals(fromToken));
|
|
34
|
+
return new TransactionError(SwapErrorType.SWAP_NOT_ENOUGH_BALANCE, `Insufficient balance. You need more than ${parsedMinSwapValue} ${fromToken.symbol} to start swapping. Deposit ${fromToken.symbol} and try again.`); // todo: min swap or amount?
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
if (new BigN(swapAmount).gte(fromTokenBalance)) {
|
|
39
|
+
const parsedMaxBalanceSwap = formatNumber(fromTokenBalance, _getAssetDecimals(fromToken));
|
|
40
|
+
return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
|
|
41
|
+
}
|
|
42
|
+
return undefined;
|
|
43
|
+
}
|
|
12
44
|
export function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, feeAmount, fromTokenBalance, feeTokenBalance, swapAmount, isXcmOk, minSwap) {
|
|
45
|
+
const bnFromTokenBalance = new BigN(fromTokenBalance);
|
|
13
46
|
if (new BigN(feeTokenBalance).lte(feeAmount)) {
|
|
14
47
|
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `You don't have enough ${feeToken.symbol} (${feeTokenChainInfo.name}) to pay transaction fee`);
|
|
15
48
|
}
|
|
16
49
|
if (fromToken.slug === feeToken.slug) {
|
|
17
|
-
|
|
50
|
+
// todo: need review and refactor
|
|
51
|
+
if (bnFromTokenBalance.lte(new BigN(feeAmount).plus(swapAmount))) {
|
|
18
52
|
return new TransactionError(BasicTxErrorType.NOT_ENOUGH_BALANCE, `Insufficient balance. Deposit ${fromToken.symbol} and try again.`);
|
|
19
53
|
}
|
|
20
54
|
}
|
|
@@ -23,7 +57,7 @@ export function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, f
|
|
|
23
57
|
return undefined;
|
|
24
58
|
}
|
|
25
59
|
if (minSwap) {
|
|
26
|
-
if (
|
|
60
|
+
if (bnFromTokenBalance.lte(minSwap)) {
|
|
27
61
|
const parsedMinSwapValue = formatNumber(minSwap, _getAssetDecimals(fromToken));
|
|
28
62
|
return new TransactionError(SwapErrorType.SWAP_NOT_ENOUGH_BALANCE, `Insufficient balance. You need more than ${parsedMinSwapValue} ${fromToken.symbol} to start swapping. Deposit ${fromToken.symbol} and try again.`); // todo: min swap or amount?
|
|
29
63
|
}
|
|
@@ -31,7 +65,7 @@ export function _validateBalanceToSwap(fromToken, feeToken, feeTokenChainInfo, f
|
|
|
31
65
|
|
|
32
66
|
if (new BigN(swapAmount).gte(fromTokenBalance)) {
|
|
33
67
|
const parsedMaxBalanceSwap = formatNumber(fromTokenBalance, _getAssetDecimals(fromToken));
|
|
34
|
-
return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${
|
|
68
|
+
return new TransactionError(SwapErrorType.SWAP_EXCEED_ALLOWANCE, `Amount too high. Lower your amount ${bnFromTokenBalance.gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
|
|
35
69
|
}
|
|
36
70
|
return undefined;
|
|
37
71
|
}
|
|
@@ -86,4 +120,21 @@ export function _getEarlyHydradxValidationError(error, metadata) {
|
|
|
86
120
|
default:
|
|
87
121
|
return new SwapError(error);
|
|
88
122
|
}
|
|
123
|
+
}
|
|
124
|
+
export function _getEarlyAssetHubValidationError(error, metadata) {
|
|
125
|
+
switch (error) {
|
|
126
|
+
case SwapErrorType.AMOUNT_CANNOT_BE_ZERO:
|
|
127
|
+
return new SwapError(error, 'Amount too low. Increase your amount above 0 and try again');
|
|
128
|
+
case SwapErrorType.ASSET_NOT_SUPPORTED:
|
|
129
|
+
return new SwapError(error, 'This swap pair is not supported');
|
|
130
|
+
case SwapErrorType.UNKNOWN:
|
|
131
|
+
return new SwapError(error, `Undefined error. Check your Internet and ${metadata.chain.slug} connection or contact support`);
|
|
132
|
+
case SwapErrorType.ERROR_FETCHING_QUOTE:
|
|
133
|
+
return new SwapError(error, 'No swap quote found. Adjust your amount or try again later.');
|
|
134
|
+
case SwapErrorType.MAKE_POOL_NOT_ENOUGH_EXISTENTIAL_DEPOSIT:
|
|
135
|
+
return new SwapError(error, 'You swap too much. It make pool not enough existential deposit');
|
|
136
|
+
// TODO: i18n this
|
|
137
|
+
default:
|
|
138
|
+
return new SwapError(error);
|
|
139
|
+
}
|
|
89
140
|
}
|
package/koni/api/nft/config.js
CHANGED
|
@@ -106,24 +106,34 @@ if (isFirefox) {
|
|
|
106
106
|
if (RuntimeInfo.protocol && RuntimeInfo.protocol.startsWith('http')) {
|
|
107
107
|
// This is for https
|
|
108
108
|
if (RuntimeInfo.protocol.startsWith('https')) {
|
|
109
|
-
RANDOM_IPFS_GATEWAY_SETTING.push(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
},
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
109
|
+
RANDOM_IPFS_GATEWAY_SETTING.push(
|
|
110
|
+
// {
|
|
111
|
+
// provider: IPFS_FLEEK,
|
|
112
|
+
// weight: 4
|
|
113
|
+
// },
|
|
114
|
+
// {
|
|
115
|
+
// provider: IPFS_GATEWAY_4EVERLAND,
|
|
116
|
+
// weight: 2
|
|
117
|
+
// },
|
|
118
|
+
// {
|
|
119
|
+
// provider: IPFS_W3S_LINK,
|
|
120
|
+
// weight: 1
|
|
121
|
+
// },
|
|
122
|
+
// {
|
|
123
|
+
// provider: CF_IPFS_GATEWAY,
|
|
124
|
+
// weight: 4
|
|
125
|
+
// },
|
|
126
|
+
// {
|
|
127
|
+
// provider: PINATA_IPFS_GATEWAY,
|
|
128
|
+
// weight: 1 // Rate limit too low
|
|
129
|
+
// },
|
|
130
|
+
// {
|
|
131
|
+
// provider: IPFS_IO,
|
|
132
|
+
// weight: 5
|
|
133
|
+
// },
|
|
134
|
+
{
|
|
135
|
+
provider: SUBWALLET_IPFS,
|
|
136
|
+
weight: 10
|
|
127
137
|
});
|
|
128
138
|
}
|
|
129
139
|
} else {
|
package/package.json
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
"./cjs/detectPackage.js"
|
|
18
18
|
],
|
|
19
19
|
"type": "module",
|
|
20
|
-
"version": "1.2.
|
|
20
|
+
"version": "1.2.14-0",
|
|
21
21
|
"main": "./cjs/index.js",
|
|
22
22
|
"module": "./index.js",
|
|
23
23
|
"types": "./index.d.ts",
|
|
@@ -956,11 +956,6 @@
|
|
|
956
956
|
"require": "./cjs/services/migration-service/scripts/AutoEnableChainsTokens.js",
|
|
957
957
|
"default": "./services/migration-service/scripts/AutoEnableChainsTokens.js"
|
|
958
958
|
},
|
|
959
|
-
"./services/migration-service/scripts/ClearMetadataDatabase": {
|
|
960
|
-
"types": "./services/migration-service/scripts/ClearMetadataDatabase.d.ts",
|
|
961
|
-
"require": "./cjs/services/migration-service/scripts/ClearMetadataDatabase.js",
|
|
962
|
-
"default": "./services/migration-service/scripts/ClearMetadataDatabase.js"
|
|
963
|
-
},
|
|
964
959
|
"./services/migration-service/scripts/ClearOldStorage": {
|
|
965
960
|
"types": "./services/migration-service/scripts/ClearOldStorage.d.ts",
|
|
966
961
|
"require": "./cjs/services/migration-service/scripts/ClearOldStorage.js",
|
|
@@ -971,6 +966,11 @@
|
|
|
971
966
|
"require": "./cjs/services/migration-service/scripts/databases/AutoEnableSomeTokens.js",
|
|
972
967
|
"default": "./services/migration-service/scripts/databases/AutoEnableSomeTokens.js"
|
|
973
968
|
},
|
|
969
|
+
"./services/migration-service/scripts/databases/ClearMetadataDatabase": {
|
|
970
|
+
"types": "./services/migration-service/scripts/databases/ClearMetadataDatabase.d.ts",
|
|
971
|
+
"require": "./cjs/services/migration-service/scripts/databases/ClearMetadataDatabase.js",
|
|
972
|
+
"default": "./services/migration-service/scripts/databases/ClearMetadataDatabase.js"
|
|
973
|
+
},
|
|
974
974
|
"./services/migration-service/scripts/databases/MigrateAssetSetting": {
|
|
975
975
|
"types": "./services/migration-service/scripts/databases/MigrateAssetSetting.d.ts",
|
|
976
976
|
"require": "./cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js",
|
|
@@ -986,6 +986,11 @@
|
|
|
986
986
|
"require": "./cjs/services/migration-service/scripts/databases/MigrateEarningVersion.js",
|
|
987
987
|
"default": "./services/migration-service/scripts/databases/MigrateEarningVersion.js"
|
|
988
988
|
},
|
|
989
|
+
"./services/migration-service/scripts/databases/ReloadMetadata": {
|
|
990
|
+
"types": "./services/migration-service/scripts/databases/ReloadMetadata.d.ts",
|
|
991
|
+
"require": "./cjs/services/migration-service/scripts/databases/ReloadMetadata.js",
|
|
992
|
+
"default": "./services/migration-service/scripts/databases/ReloadMetadata.js"
|
|
993
|
+
},
|
|
989
994
|
"./services/migration-service/scripts/DeleteChain": {
|
|
990
995
|
"types": "./services/migration-service/scripts/DeleteChain.d.ts",
|
|
991
996
|
"require": "./cjs/services/migration-service/scripts/DeleteChain.js",
|
|
@@ -1396,6 +1401,26 @@
|
|
|
1396
1401
|
"require": "./cjs/services/swap-service/index.js",
|
|
1397
1402
|
"default": "./services/swap-service/index.js"
|
|
1398
1403
|
},
|
|
1404
|
+
"./services/swap-service/handler/asset-hub": {
|
|
1405
|
+
"types": "./services/swap-service/handler/asset-hub/index.d.ts",
|
|
1406
|
+
"require": "./cjs/services/swap-service/handler/asset-hub/index.js",
|
|
1407
|
+
"default": "./services/swap-service/handler/asset-hub/index.js"
|
|
1408
|
+
},
|
|
1409
|
+
"./services/swap-service/handler/asset-hub/handler": {
|
|
1410
|
+
"types": "./services/swap-service/handler/asset-hub/handler.d.ts",
|
|
1411
|
+
"require": "./cjs/services/swap-service/handler/asset-hub/handler.js",
|
|
1412
|
+
"default": "./services/swap-service/handler/asset-hub/handler.js"
|
|
1413
|
+
},
|
|
1414
|
+
"./services/swap-service/handler/asset-hub/router": {
|
|
1415
|
+
"types": "./services/swap-service/handler/asset-hub/router.d.ts",
|
|
1416
|
+
"require": "./cjs/services/swap-service/handler/asset-hub/router.js",
|
|
1417
|
+
"default": "./services/swap-service/handler/asset-hub/router.js"
|
|
1418
|
+
},
|
|
1419
|
+
"./services/swap-service/handler/asset-hub/utils": {
|
|
1420
|
+
"types": "./services/swap-service/handler/asset-hub/utils.d.ts",
|
|
1421
|
+
"require": "./cjs/services/swap-service/handler/asset-hub/utils.js",
|
|
1422
|
+
"default": "./services/swap-service/handler/asset-hub/utils.js"
|
|
1423
|
+
},
|
|
1399
1424
|
"./services/swap-service/handler/base-handler": {
|
|
1400
1425
|
"types": "./services/swap-service/handler/base-handler.d.ts",
|
|
1401
1426
|
"require": "./cjs/services/swap-service/handler/base-handler.js",
|
|
@@ -1948,11 +1973,11 @@
|
|
|
1948
1973
|
"@reduxjs/toolkit": "^1.9.1",
|
|
1949
1974
|
"@sora-substrate/type-definitions": "^1.17.7",
|
|
1950
1975
|
"@substrate/connect": "^0.8.9",
|
|
1951
|
-
"@subwallet/chain-list": "0.2.
|
|
1952
|
-
"@subwallet/extension-base": "^1.2.
|
|
1953
|
-
"@subwallet/extension-chains": "^1.2.
|
|
1954
|
-
"@subwallet/extension-dapp": "^1.2.
|
|
1955
|
-
"@subwallet/extension-inject": "^1.2.
|
|
1976
|
+
"@subwallet/chain-list": "0.2.73",
|
|
1977
|
+
"@subwallet/extension-base": "^1.2.14-0",
|
|
1978
|
+
"@subwallet/extension-chains": "^1.2.14-0",
|
|
1979
|
+
"@subwallet/extension-dapp": "^1.2.14-0",
|
|
1980
|
+
"@subwallet/extension-inject": "^1.2.14-0",
|
|
1956
1981
|
"@subwallet/keyring": "^0.1.5",
|
|
1957
1982
|
"@subwallet/ui-keyring": "^0.1.5",
|
|
1958
1983
|
"@walletconnect/keyvaluestorage": "^1.1.1",
|
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.2.
|
|
10
|
+
version: '1.2.14-0'
|
|
11
11
|
};
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
export const STABLE_XCM_VERSION = 3;
|
|
5
5
|
export function isUseTeleportProtocol(originChainInfo, destChainInfo) {
|
|
6
|
-
const relayChainToSystemChain = ['polkadot'].includes(originChainInfo.slug) && ['statemint'].includes(destChainInfo.slug) || ['kusama'].includes(originChainInfo.slug) && ['statemine'].includes(destChainInfo.slug);
|
|
7
|
-
const systemChainToRelayChain = ['polkadot'].includes(destChainInfo.slug) && ['statemint'].includes(originChainInfo.slug) || ['kusama'].includes(destChainInfo.slug) && ['statemine'].includes(originChainInfo.slug);
|
|
6
|
+
const relayChainToSystemChain = ['polkadot'].includes(originChainInfo.slug) && ['statemint'].includes(destChainInfo.slug) || ['kusama'].includes(originChainInfo.slug) && ['statemine'].includes(destChainInfo.slug) || ['rococo'].includes(originChainInfo.slug) && ['rococo_assethub'].includes(destChainInfo.slug);
|
|
7
|
+
const systemChainToRelayChain = ['polkadot'].includes(destChainInfo.slug) && ['statemint'].includes(originChainInfo.slug) || ['kusama'].includes(destChainInfo.slug) && ['statemine'].includes(originChainInfo.slug) || ['rococo'].includes(destChainInfo.slug) && ['rococo_assethub'].includes(originChainInfo.slug);
|
|
8
8
|
return relayChainToSystemChain || systemChainToRelayChain;
|
|
9
9
|
}
|
|
@@ -250,7 +250,7 @@ export const _DEFAULT_MANTA_ZK_CHAIN = 'calamari';
|
|
|
250
250
|
|
|
251
251
|
export const _XCM_CHAIN_GROUP = {
|
|
252
252
|
polkadotXcm: ['astar', 'shiden', 'statemine', 'statemint', 'equilibrium_parachain', 'rococo_assethub'],
|
|
253
|
-
xcmPallet: ['polkadot', 'kusama']
|
|
253
|
+
xcmPallet: ['polkadot', 'kusama', 'rococo']
|
|
254
254
|
// default is xTokens pallet
|
|
255
255
|
};
|
|
256
256
|
|
|
@@ -25,8 +25,14 @@ const typesBundle = {
|
|
|
25
25
|
const _availSpec = {
|
|
26
26
|
signedExtensions: availSpec.signedExtensions
|
|
27
27
|
};
|
|
28
|
+
|
|
29
|
+
// Override avail goldberg spec for signedExtensions
|
|
30
|
+
const _goldbergSpec = {
|
|
31
|
+
signedExtensions: availSpec.signedExtensions
|
|
32
|
+
};
|
|
28
33
|
if (typesBundle.spec) {
|
|
29
34
|
typesBundle.spec.avail = _availSpec;
|
|
35
|
+
typesBundle.spec['data-avail'] = _goldbergSpec;
|
|
30
36
|
}
|
|
31
37
|
export class SubstrateApi {
|
|
32
38
|
useLightClient = false;
|
|
@@ -22,6 +22,23 @@ const ignoredList = ['bevm', 'bevmTest', 'bevm_testnet', 'layerEdge_testnet', 'm
|
|
|
22
22
|
const filterAssetInfoMap = (chainInfo, assets) => {
|
|
23
23
|
return Object.fromEntries(Object.entries(assets).filter(([, info]) => chainInfo[info.originChain]));
|
|
24
24
|
};
|
|
25
|
+
|
|
26
|
+
// const rawAssetRefMap = (assetRefMap: Record<string, _AssetRef>) => {
|
|
27
|
+
// const result: Record<string, _AssetRef> = {};
|
|
28
|
+
//
|
|
29
|
+
// Object.entries(assetRefMap).forEach(([key, assetRef]) => {
|
|
30
|
+
// const originChainInfo = ChainInfoMap[assetRef.srcChain];
|
|
31
|
+
// const destChainInfo = ChainInfoMap[assetRef.destChain];
|
|
32
|
+
// const isSnowBridgeXcm = assetRef.path === _AssetRefPath.XCM && _isSnowBridgeXcm(originChainInfo, destChainInfo);
|
|
33
|
+
//
|
|
34
|
+
// if (!isSnowBridgeXcm) {
|
|
35
|
+
// result[key] = assetRef;
|
|
36
|
+
// }
|
|
37
|
+
// });
|
|
38
|
+
//
|
|
39
|
+
// return result;
|
|
40
|
+
// };
|
|
41
|
+
|
|
25
42
|
export class ChainService {
|
|
26
43
|
dataMap = {
|
|
27
44
|
chainInfoMap: {},
|
|
@@ -444,10 +461,6 @@ export class ChainService {
|
|
|
444
461
|
|
|
445
462
|
// TODO: reconsider the flow of initiation
|
|
446
463
|
this.multiChainAssetMapSubject.next(MultiChainAssetMap);
|
|
447
|
-
// const storedAssetRefMap = await this.dbService.getAssetRefMap();
|
|
448
|
-
//
|
|
449
|
-
// this.dataMap.assetRefMap = storedAssetRefMap && Object.values(storedAssetRefMap).length > 0 ? storedAssetRefMap : AssetRefMap;
|
|
450
|
-
|
|
451
464
|
await this.initChains();
|
|
452
465
|
this.chainInfoMapSubject.next(this.getChainInfoMap());
|
|
453
466
|
this.assetRegistrySubject.next(this.getAssetRegistry());
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
|
|
5
|
+
export default class ReloadMetadata extends BaseMigrationJob {
|
|
6
|
+
chains = ['goldberg_testnet'];
|
|
7
|
+
async run() {
|
|
8
|
+
const activeChains = this.state.chainService.getActiveChains();
|
|
9
|
+
for (const chain of this.chains) {
|
|
10
|
+
const item = await this.state.dbService.stores.metadata.getMetadata(chain);
|
|
11
|
+
if (item) {
|
|
12
|
+
// @ts-ignore
|
|
13
|
+
await this.state.dbService.stores.metadata.remove(item.genesisHash);
|
|
14
|
+
const isActive = activeChains.includes(chain);
|
|
15
|
+
if (isActive) {
|
|
16
|
+
this.state.chainService.disableChain(chain);
|
|
17
|
+
setTimeout(() => {
|
|
18
|
+
this.state.chainService.enableChain(chain).catch(console.error);
|
|
19
|
+
}, 500);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
// Clear all old metadata data
|
|
24
|
+
|
|
25
|
+
return Promise.resolve();
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -2,9 +2,11 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import AutoEnableSomeTokens from '@subwallet/extension-base/services/migration-service/scripts/databases/AutoEnableSomeTokens';
|
|
5
|
+
import ReloadMetadata from '@subwallet/extension-base/services/migration-service/scripts/databases/ReloadMetadata';
|
|
5
6
|
import DeleteEarningData from '@subwallet/extension-base/services/migration-service/scripts/DeleteEarningData';
|
|
6
7
|
import MigrateRemoveGenesisHash from '@subwallet/extension-base/services/migration-service/scripts/MigrateRemoveGenesisHash';
|
|
7
8
|
import MigrateTransactionHistoryBySymbol from '@subwallet/extension-base/services/migration-service/scripts/MigrateTransactionHistoryBySymbol';
|
|
9
|
+
import ClearMetadataDatabase from "./databases/ClearMetadataDatabase.js";
|
|
8
10
|
import MigrateAssetSetting from "./databases/MigrateAssetSetting.js";
|
|
9
11
|
import MigrateEarningVersion from "./databases/MigrateEarningVersion.js";
|
|
10
12
|
import MigrateEthProvider from "./providers/MigrateEthProvider.js";
|
|
@@ -12,7 +14,6 @@ import MigratePioneerProvider from "./providers/MigratePioneerProvider.js";
|
|
|
12
14
|
import MigrateProvidersV1M1P24 from "./providers/MigrateProvidersV1M1P24.js";
|
|
13
15
|
import MigratePolygonUSDCProvider from "./tokens/MigratePolygonUSDCProvider.js";
|
|
14
16
|
import AutoEnableChainsTokens from "./AutoEnableChainsTokens.js";
|
|
15
|
-
import ClearMetadataDatabase from "./ClearMetadataDatabase.js";
|
|
16
17
|
import DeleteChain from "./DeleteChain.js";
|
|
17
18
|
import DeleteChainStaking from "./DeleteChainStaking.js";
|
|
18
19
|
import EnableVaraChain from "./EnableVaraChain.js";
|
|
@@ -55,7 +56,8 @@ export default {
|
|
|
55
56
|
'1.1.69-03': MigrateAssetSetting,
|
|
56
57
|
'1.1.69-02': MigrateTransactionHistoryBySymbol,
|
|
57
58
|
'1.2.69-01': MigrateRemoveGenesisHash,
|
|
58
|
-
'1.2.1-01': ClearMetadataDatabase
|
|
59
|
+
'1.2.1-01': ClearMetadataDatabase,
|
|
60
|
+
'1.2.13-01': ReloadMetadata
|
|
59
61
|
// [`${EVERYTIME}-1.1.42-02`]: MigrateTransactionHistoryBySymbol
|
|
60
62
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
61
63
|
};
|
|
@@ -7,6 +7,9 @@ export default class BaseStore<T> {
|
|
|
7
7
|
get table(): Table<T, unknown>;
|
|
8
8
|
upsert(record: T): Promise<unknown>;
|
|
9
9
|
bulkUpsert(records: T[]): Promise<unknown>;
|
|
10
|
+
/**
|
|
11
|
+
* @todo Must update, delete function need the key not the record
|
|
12
|
+
* */
|
|
10
13
|
remove(record: T): Promise<void>;
|
|
11
14
|
clear(): Promise<void>;
|
|
12
15
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
2
|
+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
3
|
+
import { BalanceService } from '@subwallet/extension-base/services/balance-service';
|
|
4
|
+
import { ChainService } from '@subwallet/extension-base/services/chain-service';
|
|
5
|
+
import { BaseStepDetail, CommonOptimalPath, CommonStepFeeInfo } from '@subwallet/extension-base/types/service-base';
|
|
6
|
+
import { AssetHubSwapEarlyValidation, OptimalSwapPathParams, SwapProviderId, SwapQuote, SwapRequest, SwapSubmitParams, SwapSubmitStepData, ValidateSwapProcessParams } from '@subwallet/extension-base/types/swap';
|
|
7
|
+
import { SwapBaseInterface } from '../base-handler';
|
|
8
|
+
export declare class AssetHubSwapHandler implements SwapBaseInterface {
|
|
9
|
+
private swapBaseHandler;
|
|
10
|
+
private readonly chain;
|
|
11
|
+
private router;
|
|
12
|
+
isReady: boolean;
|
|
13
|
+
providerSlug: SwapProviderId;
|
|
14
|
+
constructor(chainService: ChainService, balanceService: BalanceService, chain: string);
|
|
15
|
+
get chainService(): ChainService;
|
|
16
|
+
get balanceService(): BalanceService;
|
|
17
|
+
get providerInfo(): import("@subwallet/extension-base/types/swap").SwapProvider;
|
|
18
|
+
get name(): string;
|
|
19
|
+
get slug(): string;
|
|
20
|
+
init(): Promise<void>;
|
|
21
|
+
getXcmStep(params: OptimalSwapPathParams): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
|
|
22
|
+
getSubmitStep(params: OptimalSwapPathParams): Promise<[BaseStepDetail, CommonStepFeeInfo] | undefined>;
|
|
23
|
+
generateOptimalProcess(params: OptimalSwapPathParams): Promise<CommonOptimalPath>;
|
|
24
|
+
getSwapQuote(request: SwapRequest): Promise<SwapQuote | SwapError>;
|
|
25
|
+
handleXcmStep(params: SwapSubmitParams): Promise<SwapSubmitStepData>;
|
|
26
|
+
handleSubmitStep(params: SwapSubmitParams): Promise<SwapSubmitStepData>;
|
|
27
|
+
handleSwapProcess(params: SwapSubmitParams): Promise<SwapSubmitStepData>;
|
|
28
|
+
validateSwapStep(params: ValidateSwapProcessParams, isXcmOk: boolean, stepIndex: number): Promise<TransactionError[]>;
|
|
29
|
+
validateSwapProcess(params: ValidateSwapProcessParams): Promise<TransactionError[]>;
|
|
30
|
+
validateSwapRequest(request: SwapRequest): Promise<AssetHubSwapEarlyValidation>;
|
|
31
|
+
}
|