@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.
Files changed (49) hide show
  1. package/background/errors/SwapError.js +5 -1
  2. package/cjs/background/errors/SwapError.js +5 -1
  3. package/cjs/core/logic-validation/swap.js +56 -3
  4. package/cjs/koni/api/nft/config.js +28 -18
  5. package/cjs/packageInfo.js +1 -1
  6. package/cjs/services/balance-service/transfer/xcm/utils.js +2 -2
  7. package/cjs/services/chain-service/constants.js +1 -1
  8. package/cjs/services/chain-service/handler/SubstrateApi.js +6 -0
  9. package/cjs/services/chain-service/index.js +17 -4
  10. package/cjs/services/migration-service/scripts/databases/ReloadMetadata.js +35 -0
  11. package/cjs/services/migration-service/scripts/index.js +4 -2
  12. package/cjs/services/storage-service/db-stores/BaseStore.js +4 -0
  13. package/cjs/services/swap-service/handler/asset-hub/handler.js +343 -0
  14. package/cjs/services/swap-service/handler/asset-hub/index.js +12 -0
  15. package/cjs/services/swap-service/handler/asset-hub/router.js +93 -0
  16. package/cjs/services/swap-service/handler/asset-hub/utils.js +158 -0
  17. package/cjs/services/swap-service/index.js +10 -1
  18. package/cjs/services/swap-service/utils.js +10 -1
  19. package/cjs/types/swap/index.js +5 -1
  20. package/core/logic-validation/swap.d.ts +3 -1
  21. package/core/logic-validation/swap.js +55 -4
  22. package/koni/api/nft/config.js +28 -18
  23. package/package.json +36 -11
  24. package/packageInfo.js +1 -1
  25. package/services/balance-service/transfer/xcm/utils.js +2 -2
  26. package/services/chain-service/constants.js +1 -1
  27. package/services/chain-service/handler/SubstrateApi.js +6 -0
  28. package/services/chain-service/index.js +17 -4
  29. package/services/migration-service/scripts/databases/ReloadMetadata.d.ts +5 -0
  30. package/services/migration-service/scripts/databases/ReloadMetadata.js +27 -0
  31. package/services/migration-service/scripts/index.js +4 -2
  32. package/services/storage-service/db-stores/BaseStore.d.ts +3 -0
  33. package/services/storage-service/db-stores/BaseStore.js +4 -0
  34. package/services/swap-service/handler/asset-hub/handler.d.ts +31 -0
  35. package/services/swap-service/handler/asset-hub/handler.js +335 -0
  36. package/services/swap-service/handler/asset-hub/index.d.ts +1 -0
  37. package/services/swap-service/handler/asset-hub/index.js +4 -0
  38. package/services/swap-service/handler/asset-hub/router.d.ts +16 -0
  39. package/services/swap-service/handler/asset-hub/router.js +85 -0
  40. package/services/swap-service/handler/asset-hub/utils.d.ts +18 -0
  41. package/services/swap-service/handler/asset-hub/utils.js +133 -0
  42. package/services/swap-service/index.js +10 -1
  43. package/services/swap-service/utils.d.ts +1 -0
  44. package/services/swap-service/utils.js +9 -1
  45. package/types/swap/index.d.ts +15 -2
  46. package/types/swap/index.js +5 -1
  47. /package/cjs/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
  48. /package/services/migration-service/scripts/{ClearMetadataDatabase.d.ts → databases/ClearMetadataDatabase.d.ts} +0 -0
  49. /package/services/migration-service/scripts/{ClearMetadataDatabase.js → databases/ClearMetadataDatabase.js} +0 -0
@@ -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
- if (new BigN(fromTokenBalance).lte(new BigN(feeAmount).plus(swapAmount))) {
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 (new BigN(fromTokenBalance).lte(minSwap)) {
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 ${new BigN(fromTokenBalance).gt(0) ? `below ${parsedMaxBalanceSwap} ${fromToken.symbol}` : ''} and try again`);
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
  }
@@ -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
- provider: IPFS_FLEEK,
111
- weight: 4
112
- }, {
113
- provider: IPFS_GATEWAY_4EVERLAND,
114
- weight: 2
115
- }, {
116
- provider: IPFS_W3S_LINK,
117
- weight: 1
118
- }, {
119
- provider: CF_IPFS_GATEWAY,
120
- weight: 4
121
- }, {
122
- provider: PINATA_IPFS_GATEWAY,
123
- weight: 1 // Rate limit too low
124
- }, {
125
- provider: IPFS_IO,
126
- weight: 5
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.13-0",
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.72",
1952
- "@subwallet/extension-base": "^1.2.13-0",
1953
- "@subwallet/extension-chains": "^1.2.13-0",
1954
- "@subwallet/extension-dapp": "^1.2.13-0",
1955
- "@subwallet/extension-inject": "^1.2.13-0",
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.13-0'
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,5 @@
1
+ import BaseMigrationJob from '@subwallet/extension-base/services/migration-service/Base';
2
+ export default class ReloadMetadata extends BaseMigrationJob {
3
+ protected chains: string[];
4
+ run(): Promise<void>;
5
+ }
@@ -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
  }
@@ -16,6 +16,10 @@ export default class BaseStore {
16
16
  bulkUpsert(records) {
17
17
  return this.table.bulkPut(records);
18
18
  }
19
+
20
+ /**
21
+ * @todo Must update, delete function need the key not the record
22
+ * */
19
23
  remove(record) {
20
24
  return this.table.delete(record);
21
25
  }
@@ -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
+ }