@subwallet/extension-base 1.1.54-0 → 1.1.55-0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +21 -1
- package/background/KoniTypes.js +1 -0
- package/background/errors/SwapError.d.ts +6 -0
- package/background/errors/SwapError.js +57 -0
- package/background/errors/TransactionError.js +9 -0
- package/background/types.d.ts +2 -0
- package/cjs/background/KoniTypes.js +1 -0
- package/cjs/background/errors/SwapError.js +64 -0
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/koni/api/staking/bonding/utils.js +35 -6
- package/cjs/koni/background/handlers/Extension.js +214 -102
- package/cjs/koni/background/handlers/State.js +5 -2
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/index.js +6 -3
- package/cjs/services/chain-service/constants.js +1 -1
- package/cjs/services/chain-service/index.js +39 -18
- package/cjs/services/chain-service/utils/index.js +15 -4
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +4 -2
- package/cjs/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +22 -3
- package/cjs/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +4 -17
- package/cjs/services/migration-service/scripts/databases/MigrateAssetSetting.js +4 -17
- package/cjs/services/migration-service/scripts/index.js +3 -3
- package/cjs/services/swap-service/handler/base-handler.js +189 -0
- package/cjs/services/swap-service/handler/chainflip-handler.js +407 -0
- package/cjs/services/swap-service/handler/hydradx-handler.js +531 -0
- package/cjs/services/swap-service/index.js +250 -0
- package/cjs/services/swap-service/utils.js +126 -0
- package/cjs/services/transaction-service/index.js +20 -0
- package/cjs/services/transaction-service/utils.js +6 -0
- package/cjs/types/fee/evm.js +1 -0
- package/cjs/types/fee/fee.js +70 -0
- package/cjs/types/fee/index.js +27 -1
- package/cjs/types/service-base.js +1 -0
- package/cjs/types/swap/index.js +50 -0
- package/cjs/utils/index.js +12 -0
- package/cjs/utils/swap.js +78 -0
- package/koni/api/staking/bonding/utils.d.ts +3 -1
- package/koni/api/staking/bonding/utils.js +32 -6
- package/koni/background/handlers/Extension.d.ts +6 -0
- package/koni/background/handlers/Extension.js +111 -0
- package/koni/background/handlers/State.d.ts +2 -0
- package/koni/background/handlers/State.js +5 -2
- package/package.json +65 -8
- package/packageInfo.js +1 -1
- package/services/balance-service/index.js +6 -3
- package/services/base/types.d.ts +4 -0
- package/services/chain-service/constants.js +1 -1
- package/services/chain-service/index.d.ts +4 -0
- package/services/chain-service/index.js +21 -1
- package/services/chain-service/utils/index.d.ts +7 -5
- package/services/chain-service/utils/index.js +9 -2
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +1 -0
- package/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/services/earning-service/handlers/native-staking/relay-chain.js +24 -5
- package/services/event-service/types.d.ts +1 -0
- package/services/migration-service/scripts/MigrateTransactionHistoryBySymbol.js +4 -17
- package/services/migration-service/scripts/databases/MigrateAssetSetting.js +4 -17
- package/services/migration-service/scripts/index.js +3 -3
- package/services/swap-service/handler/base-handler.d.ts +38 -0
- package/services/swap-service/handler/base-handler.js +180 -0
- package/services/swap-service/handler/chainflip-handler.d.ts +30 -0
- package/services/swap-service/handler/chainflip-handler.js +399 -0
- package/services/swap-service/handler/hydradx-handler.d.ts +36 -0
- package/services/swap-service/handler/hydradx-handler.js +522 -0
- package/services/swap-service/index.d.ts +32 -0
- package/services/swap-service/index.js +241 -0
- package/services/swap-service/utils.d.ts +18 -0
- package/services/swap-service/utils.js +105 -0
- package/services/transaction-service/index.js +20 -0
- package/services/transaction-service/utils.d.ts +2 -0
- package/services/transaction-service/utils.js +6 -2
- package/types/fee/evm.d.ts +49 -0
- package/types/fee/evm.js +1 -0
- package/types/fee/fee.d.ts +32 -0
- package/types/fee/fee.js +63 -0
- package/types/fee/index.d.ts +2 -49
- package/types/fee/index.js +5 -1
- package/types/service-base.d.ts +10 -0
- package/types/service-base.js +1 -0
- package/types/swap/index.d.ts +168 -0
- package/types/swap/index.js +41 -0
- package/types/yield/info/chain/target.d.ts +2 -0
- package/types/yield/info/pallet.d.ts +4 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -1
- package/utils/swap.d.ts +3 -0
- package/utils/swap.js +70 -0
|
@@ -8,6 +8,7 @@ import { CrowdloanContributionsResponse } from '@subwallet/extension-base/servic
|
|
|
8
8
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
9
9
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
10
10
|
import { BalanceJson, BuyServiceInfo, BuyTokenInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestEarlyValidateYield, RequestGetYieldPoolTargets, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseEarlyValidateYield, ResponseGetYieldPoolTargets, SubmitYieldStepData, TokenApproveData, UnlockDotTransactionNft, UnstakingStatus, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo, YieldValidationStatus } from '@subwallet/extension-base/types';
|
|
11
|
+
import { SwapErrorType, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, ValidateSwapProcessParams } from '@subwallet/extension-base/types/swap';
|
|
11
12
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
12
13
|
import { KeyringPair$Json, KeyringPair$Meta } from '@subwallet/keyring/types';
|
|
13
14
|
import { KeyringOptions } from '@subwallet/ui-keyring/options/types';
|
|
@@ -386,6 +387,7 @@ export declare enum ExtrinsicType {
|
|
|
386
387
|
UNSTAKE_STDOT = "earn.unstake_stdot",
|
|
387
388
|
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
388
389
|
TOKEN_APPROVE = "evm.token_approve",
|
|
390
|
+
SWAP = "swap",
|
|
389
391
|
EVM_EXECUTE = "evm.execute",
|
|
390
392
|
UNKNOWN = "unknown"
|
|
391
393
|
}
|
|
@@ -427,6 +429,7 @@ export interface ExtrinsicDataTypeMap {
|
|
|
427
429
|
[ExtrinsicType.TOKEN_APPROVE]: TokenApproveData;
|
|
428
430
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
429
431
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
432
|
+
[ExtrinsicType.SWAP]: SwapTxData;
|
|
430
433
|
[ExtrinsicType.UNKNOWN]: any;
|
|
431
434
|
}
|
|
432
435
|
export declare enum ExtrinsicStatus {
|
|
@@ -570,7 +573,7 @@ export declare enum TransferTxErrorType {
|
|
|
570
573
|
TRANSFER_ERROR = "TRANSFER_ERROR",
|
|
571
574
|
RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT = "RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT"
|
|
572
575
|
}
|
|
573
|
-
export declare type TransactionErrorType = BasicTxErrorType | TransferTxErrorType | StakingTxErrorType | YieldValidationStatus;
|
|
576
|
+
export declare type TransactionErrorType = BasicTxErrorType | TransferTxErrorType | StakingTxErrorType | YieldValidationStatus | SwapErrorType;
|
|
574
577
|
export declare enum BasicTxWarningCode {
|
|
575
578
|
NOT_ENOUGH_EXISTENTIAL_DEPOSIT = "notEnoughExistentialDeposit"
|
|
576
579
|
}
|
|
@@ -618,6 +621,13 @@ export interface ResponseAccountExportPrivateKey {
|
|
|
618
621
|
privateKey: string;
|
|
619
622
|
publicKey: string;
|
|
620
623
|
}
|
|
624
|
+
export interface RequestAccountBatchExportV2 {
|
|
625
|
+
password: string;
|
|
626
|
+
addresses?: string[];
|
|
627
|
+
}
|
|
628
|
+
export interface ResponseAccountBatchExportV2 {
|
|
629
|
+
exportedJson: KeyringPairs$Json;
|
|
630
|
+
}
|
|
621
631
|
export interface RequestCheckPublicAndSecretKey {
|
|
622
632
|
secretKey: string;
|
|
623
633
|
publicKey: string;
|
|
@@ -1176,6 +1186,10 @@ export interface RequestQrSignEvm {
|
|
|
1176
1186
|
export interface ResponseQrSignEvm {
|
|
1177
1187
|
signature: string;
|
|
1178
1188
|
}
|
|
1189
|
+
export interface RequestChangeFeeToken {
|
|
1190
|
+
currentFeeToken?: string;
|
|
1191
|
+
selectedFeeToken: string;
|
|
1192
|
+
}
|
|
1179
1193
|
export interface RequestCheckTransfer extends BaseRequestSign {
|
|
1180
1194
|
networkKey: string;
|
|
1181
1195
|
from: string;
|
|
@@ -1720,6 +1734,7 @@ export interface KoniRequestSignatures {
|
|
|
1720
1734
|
'pri(derivation.createV2)': [RequestDeriveCreateV2, boolean];
|
|
1721
1735
|
'pri(json.restoreV2)': [RequestJsonRestoreV2, void];
|
|
1722
1736
|
'pri(json.batchRestoreV2)': [RequestBatchRestoreV2, void];
|
|
1737
|
+
'pri(accounts.batchExportV2)': [RequestAccountBatchExportV2, ResponseAccountBatchExportV2];
|
|
1723
1738
|
'pri(accounts.exportPrivateKey)': [RequestAccountExportPrivateKey, ResponseAccountExportPrivateKey];
|
|
1724
1739
|
'pri(accounts.subscribeWithCurrentAddress)': [RequestAccountSubscribe, AccountsWithCurrentAddress, AccountsWithCurrentAddress];
|
|
1725
1740
|
'pri(accounts.updateCurrentAddress)': [string, boolean];
|
|
@@ -1848,6 +1863,11 @@ export interface KoniRequestSignatures {
|
|
|
1848
1863
|
'pri(database.export)': [null, string];
|
|
1849
1864
|
'pri(database.import)': [string, boolean];
|
|
1850
1865
|
'pri(database.exportJson)': [null, DexieExportJsonStructure];
|
|
1866
|
+
'pri(swapService.subscribePairs)': [null, SwapPair[], SwapPair[]];
|
|
1867
|
+
'pri(swapService.handleSwapRequest)': [SwapRequest, SwapRequestResult];
|
|
1868
|
+
'pri(swapService.handleSwapStep)': [SwapSubmitParams, SWTransactionResponse];
|
|
1869
|
+
'pri(swapService.getLatestQuote)': [SwapRequest, SwapQuoteResponse];
|
|
1870
|
+
'pri(swapService.validateSwapProcess)': [ValidateSwapProcessParams, TransactionError[]];
|
|
1851
1871
|
}
|
|
1852
1872
|
export interface ApplicationMetadataType {
|
|
1853
1873
|
version: string;
|
package/background/KoniTypes.js
CHANGED
|
@@ -95,6 +95,7 @@ export let ExtrinsicType;
|
|
|
95
95
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
96
96
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
97
97
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
98
|
+
ExtrinsicType["SWAP"] = "swap";
|
|
98
99
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
99
100
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
100
101
|
})(ExtrinsicType || (ExtrinsicType = {}));
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { SWError } from '@subwallet/extension-base/background/errors/SWError';
|
|
2
|
+
import { SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
3
|
+
export declare class SwapError extends SWError {
|
|
4
|
+
errorType: SwapErrorType;
|
|
5
|
+
constructor(errorType: SwapErrorType, errMessage?: string, data?: unknown);
|
|
6
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { SWError } from '@subwallet/extension-base/background/errors/SWError';
|
|
5
|
+
import { detectTranslate } from '@subwallet/extension-base/utils';
|
|
6
|
+
const defaultErrorMap = {
|
|
7
|
+
ERROR_FETCHING_QUOTE: {
|
|
8
|
+
message: detectTranslate('No swap quote found. Adjust your amount or try again later'),
|
|
9
|
+
code: undefined
|
|
10
|
+
},
|
|
11
|
+
NOT_MEET_MIN_SWAP: {
|
|
12
|
+
message: detectTranslate('Amount too low. Increase your amount and try again'),
|
|
13
|
+
code: undefined
|
|
14
|
+
},
|
|
15
|
+
QUOTE_TIMEOUT: {
|
|
16
|
+
message: detectTranslate('Quote timeout'),
|
|
17
|
+
code: undefined
|
|
18
|
+
},
|
|
19
|
+
UNKNOWN: {
|
|
20
|
+
message: detectTranslate('Undefined error. Check your Internet connection or contact support'),
|
|
21
|
+
code: undefined
|
|
22
|
+
},
|
|
23
|
+
ASSET_NOT_SUPPORTED: {
|
|
24
|
+
message: detectTranslate('This swap pair is not supported'),
|
|
25
|
+
code: undefined
|
|
26
|
+
},
|
|
27
|
+
INVALID_RECIPIENT: {
|
|
28
|
+
message: detectTranslate('Invalid recipient'),
|
|
29
|
+
code: undefined
|
|
30
|
+
},
|
|
31
|
+
SWAP_EXCEED_ALLOWANCE: {
|
|
32
|
+
message: detectTranslate('You cannot swap all your balance. Lower your amount and try again'),
|
|
33
|
+
code: undefined
|
|
34
|
+
},
|
|
35
|
+
SWAP_NOT_ENOUGH_BALANCE: {
|
|
36
|
+
message: detectTranslate('You must deposit more funds to swap'),
|
|
37
|
+
code: undefined
|
|
38
|
+
},
|
|
39
|
+
NOT_ENOUGH_LIQUIDITY: {
|
|
40
|
+
message: detectTranslate('There is not enough liquidity to complete the swap. Lower your amount and try again'),
|
|
41
|
+
code: undefined
|
|
42
|
+
},
|
|
43
|
+
AMOUNT_CANNOT_BE_ZERO: {
|
|
44
|
+
message: detectTranslate('Amount must be greater than 0'),
|
|
45
|
+
code: undefined
|
|
46
|
+
}
|
|
47
|
+
};
|
|
48
|
+
export class SwapError extends SWError {
|
|
49
|
+
constructor(errorType, errMessage, data) {
|
|
50
|
+
const {
|
|
51
|
+
code,
|
|
52
|
+
message
|
|
53
|
+
} = defaultErrorMap[errorType];
|
|
54
|
+
super(errorType, errMessage || message, code, data);
|
|
55
|
+
this.errorType = errorType;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { SWError } from '@subwallet/extension-base/background/errors/SWError';
|
|
5
5
|
import { BasicTxErrorType, StakingTxErrorType, TransferTxErrorType } from '@subwallet/extension-base/background/KoniTypes';
|
|
6
6
|
import { YieldValidationStatus } from '@subwallet/extension-base/types';
|
|
7
|
+
import { SwapErrorType } from '@subwallet/extension-base/types/swap';
|
|
7
8
|
import { detectTranslate } from '@subwallet/extension-base/utils';
|
|
8
9
|
import { t } from 'i18next';
|
|
9
10
|
|
|
@@ -99,6 +100,14 @@ const defaultErrorMap = {
|
|
|
99
100
|
[YieldValidationStatus.NOT_ENOUGH_MIN_JOIN_POOL]: {
|
|
100
101
|
message: detectTranslate('Not enough min earning amount'),
|
|
101
102
|
code: undefined
|
|
103
|
+
},
|
|
104
|
+
[SwapErrorType.QUOTE_TIMEOUT]: {
|
|
105
|
+
message: detectTranslate('Quote timeout'),
|
|
106
|
+
code: undefined
|
|
107
|
+
},
|
|
108
|
+
[SwapErrorType.INVALID_RECIPIENT]: {
|
|
109
|
+
message: detectTranslate('Invalid recipient'),
|
|
110
|
+
code: undefined
|
|
102
111
|
}
|
|
103
112
|
};
|
|
104
113
|
export class TransactionError extends SWError {
|
package/background/types.d.ts
CHANGED
|
@@ -40,6 +40,8 @@ export interface AccountJson extends AbstractAddressJson {
|
|
|
40
40
|
isMasterAccount?: boolean;
|
|
41
41
|
isMasterPassword?: boolean;
|
|
42
42
|
isReadOnly?: boolean;
|
|
43
|
+
isSubWallet?: boolean;
|
|
44
|
+
pendingMigrate?: boolean;
|
|
43
45
|
originGenesisHash?: string | null;
|
|
44
46
|
parentAddress?: string;
|
|
45
47
|
source?: string;
|
|
@@ -109,6 +109,7 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
109
109
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
110
110
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
111
111
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
112
|
+
ExtrinsicType["SWAP"] = "swap";
|
|
112
113
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
113
114
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
114
115
|
})(ExtrinsicType || (exports.ExtrinsicType = ExtrinsicType = {}));
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.SwapError = void 0;
|
|
7
|
+
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
8
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
const defaultErrorMap = {
|
|
13
|
+
ERROR_FETCHING_QUOTE: {
|
|
14
|
+
message: (0, _utils.detectTranslate)('No swap quote found. Adjust your amount or try again later'),
|
|
15
|
+
code: undefined
|
|
16
|
+
},
|
|
17
|
+
NOT_MEET_MIN_SWAP: {
|
|
18
|
+
message: (0, _utils.detectTranslate)('Amount too low. Increase your amount and try again'),
|
|
19
|
+
code: undefined
|
|
20
|
+
},
|
|
21
|
+
QUOTE_TIMEOUT: {
|
|
22
|
+
message: (0, _utils.detectTranslate)('Quote timeout'),
|
|
23
|
+
code: undefined
|
|
24
|
+
},
|
|
25
|
+
UNKNOWN: {
|
|
26
|
+
message: (0, _utils.detectTranslate)('Undefined error. Check your Internet connection or contact support'),
|
|
27
|
+
code: undefined
|
|
28
|
+
},
|
|
29
|
+
ASSET_NOT_SUPPORTED: {
|
|
30
|
+
message: (0, _utils.detectTranslate)('This swap pair is not supported'),
|
|
31
|
+
code: undefined
|
|
32
|
+
},
|
|
33
|
+
INVALID_RECIPIENT: {
|
|
34
|
+
message: (0, _utils.detectTranslate)('Invalid recipient'),
|
|
35
|
+
code: undefined
|
|
36
|
+
},
|
|
37
|
+
SWAP_EXCEED_ALLOWANCE: {
|
|
38
|
+
message: (0, _utils.detectTranslate)('You cannot swap all your balance. Lower your amount and try again'),
|
|
39
|
+
code: undefined
|
|
40
|
+
},
|
|
41
|
+
SWAP_NOT_ENOUGH_BALANCE: {
|
|
42
|
+
message: (0, _utils.detectTranslate)('You must deposit more funds to swap'),
|
|
43
|
+
code: undefined
|
|
44
|
+
},
|
|
45
|
+
NOT_ENOUGH_LIQUIDITY: {
|
|
46
|
+
message: (0, _utils.detectTranslate)('There is not enough liquidity to complete the swap. Lower your amount and try again'),
|
|
47
|
+
code: undefined
|
|
48
|
+
},
|
|
49
|
+
AMOUNT_CANNOT_BE_ZERO: {
|
|
50
|
+
message: (0, _utils.detectTranslate)('Amount must be greater than 0'),
|
|
51
|
+
code: undefined
|
|
52
|
+
}
|
|
53
|
+
};
|
|
54
|
+
class SwapError extends _SWError.SWError {
|
|
55
|
+
constructor(errorType, errMessage, data) {
|
|
56
|
+
const {
|
|
57
|
+
code,
|
|
58
|
+
message
|
|
59
|
+
} = defaultErrorMap[errorType];
|
|
60
|
+
super(errorType, errMessage || message, code, data);
|
|
61
|
+
this.errorType = errorType;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
exports.SwapError = SwapError;
|
|
@@ -7,6 +7,7 @@ exports.TransactionError = void 0;
|
|
|
7
7
|
var _SWError = require("@subwallet/extension-base/background/errors/SWError");
|
|
8
8
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
9
9
|
var _types = require("@subwallet/extension-base/types");
|
|
10
|
+
var _swap = require("@subwallet/extension-base/types/swap");
|
|
10
11
|
var _utils = require("@subwallet/extension-base/utils");
|
|
11
12
|
var _i18next = require("i18next");
|
|
12
13
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -104,6 +105,14 @@ const defaultErrorMap = {
|
|
|
104
105
|
[_types.YieldValidationStatus.NOT_ENOUGH_MIN_JOIN_POOL]: {
|
|
105
106
|
message: (0, _utils.detectTranslate)('Not enough min earning amount'),
|
|
106
107
|
code: undefined
|
|
108
|
+
},
|
|
109
|
+
[_swap.SwapErrorType.QUOTE_TIMEOUT]: {
|
|
110
|
+
message: (0, _utils.detectTranslate)('Quote timeout'),
|
|
111
|
+
code: undefined
|
|
112
|
+
},
|
|
113
|
+
[_swap.SwapErrorType.INVALID_RECIPIENT]: {
|
|
114
|
+
message: (0, _utils.detectTranslate)('Invalid recipient'),
|
|
115
|
+
code: undefined
|
|
107
116
|
}
|
|
108
117
|
};
|
|
109
118
|
class TransactionError extends _SWError.SWError {
|
|
@@ -24,7 +24,9 @@ exports.getParaCurrentInflation = getParaCurrentInflation;
|
|
|
24
24
|
exports.getStakingAvailableActionsByChain = getStakingAvailableActionsByChain;
|
|
25
25
|
exports.getStakingAvailableActionsByNominator = getStakingAvailableActionsByNominator;
|
|
26
26
|
exports.getSupportedDaysByHistoryDepth = getSupportedDaysByHistoryDepth;
|
|
27
|
+
exports.getTopValidatorByPoints = getTopValidatorByPoints;
|
|
27
28
|
exports.getValidatorLabel = getValidatorLabel;
|
|
29
|
+
exports.getValidatorPointsMap = getValidatorPointsMap;
|
|
28
30
|
exports.getWithdrawalInfo = getWithdrawalInfo;
|
|
29
31
|
exports.getYieldAvailableActionsByPosition = getYieldAvailableActionsByPosition;
|
|
30
32
|
exports.getYieldAvailableActionsByType = getYieldAvailableActionsByType;
|
|
@@ -233,13 +235,13 @@ function getYieldAvailableActionsByPosition(yieldPosition, yieldPoolInfo, unclai
|
|
|
233
235
|
const result = [];
|
|
234
236
|
if ([_types.YieldPoolType.NATIVE_STAKING, _types.YieldPoolType.NOMINATION_POOL].includes(yieldPoolInfo.type)) {
|
|
235
237
|
result.push(YieldAction.STAKE);
|
|
236
|
-
const bnActiveStake = new
|
|
237
|
-
if (yieldPosition.activeStake && bnActiveStake.gt(
|
|
238
|
+
const bnActiveStake = new _bignumber.default(yieldPosition.activeStake);
|
|
239
|
+
if (yieldPosition.activeStake && bnActiveStake.gt('0')) {
|
|
238
240
|
result.push(YieldAction.UNSTAKE);
|
|
239
241
|
const isAstarNetwork = _constants2._STAKING_CHAIN_GROUP.astar.includes(yieldPosition.chain);
|
|
240
242
|
const isAmplitudeNetwork = _constants2._STAKING_CHAIN_GROUP.amplitude.includes(yieldPosition.chain);
|
|
241
|
-
const bnUnclaimedReward = new
|
|
242
|
-
if ((yieldPosition.type === _types.YieldPoolType.NOMINATION_POOL || isAmplitudeNetwork) && bnUnclaimedReward.gt(
|
|
243
|
+
const bnUnclaimedReward = new _bignumber.default(unclaimedReward || '0');
|
|
244
|
+
if ((yieldPosition.type === _types.YieldPoolType.NOMINATION_POOL || isAmplitudeNetwork) && bnUnclaimedReward.gt('0') || isAstarNetwork) {
|
|
243
245
|
result.push(YieldAction.CLAIM_REWARD);
|
|
244
246
|
}
|
|
245
247
|
}
|
|
@@ -252,8 +254,8 @@ function getYieldAvailableActionsByPosition(yieldPosition, yieldPoolInfo, unclai
|
|
|
252
254
|
}
|
|
253
255
|
} else if (yieldPoolInfo.type === _types.YieldPoolType.LIQUID_STAKING) {
|
|
254
256
|
result.push(YieldAction.START_EARNING);
|
|
255
|
-
const activeBalance = new
|
|
256
|
-
if (activeBalance.gt(
|
|
257
|
+
const activeBalance = new _bignumber.default(yieldPosition.activeStake);
|
|
258
|
+
if (activeBalance.gt('0')) {
|
|
257
259
|
result.push(YieldAction.UNSTAKE);
|
|
258
260
|
}
|
|
259
261
|
const hasWithdrawal = yieldPosition.unstakings.some(unstakingInfo => unstakingInfo.status === _types.UnstakingStatus.CLAIMABLE);
|
|
@@ -387,6 +389,33 @@ function getSupportedDaysByHistoryDepth(erasPerDay, maxSupportedEras) {
|
|
|
387
389
|
return 15;
|
|
388
390
|
}
|
|
389
391
|
}
|
|
392
|
+
function getValidatorPointsMap(eraRewardMap) {
|
|
393
|
+
// mapping store validator and totalPoints
|
|
394
|
+
const validatorTotalPointsMap = {};
|
|
395
|
+
Object.values(eraRewardMap).forEach(info => {
|
|
396
|
+
const individual = info.individual;
|
|
397
|
+
Object.entries(individual).forEach(_ref => {
|
|
398
|
+
let [validator, rawPoints] = _ref;
|
|
399
|
+
const points = rawPoints.replaceAll(',', '');
|
|
400
|
+
if (!validatorTotalPointsMap[validator]) {
|
|
401
|
+
validatorTotalPointsMap[validator] = new _bignumber.default(points);
|
|
402
|
+
} else {
|
|
403
|
+
validatorTotalPointsMap[validator] = validatorTotalPointsMap[validator].plus(points);
|
|
404
|
+
}
|
|
405
|
+
});
|
|
406
|
+
});
|
|
407
|
+
return validatorTotalPointsMap;
|
|
408
|
+
}
|
|
409
|
+
function getTopValidatorByPoints(validatorPointsList) {
|
|
410
|
+
const sortValidatorPointsList = Object.fromEntries(Object.entries(validatorPointsList).sort((a, b) => a[1].minus(b[1]).toNumber()).reverse());
|
|
411
|
+
|
|
412
|
+
// keep 50% first validator
|
|
413
|
+
const entries = Object.entries(sortValidatorPointsList);
|
|
414
|
+
const endIndex = Math.ceil(entries.length / 2);
|
|
415
|
+
const top50PercentEntries = entries.slice(0, endIndex);
|
|
416
|
+
const top50PercentRecord = Object.fromEntries(top50PercentEntries);
|
|
417
|
+
return Object.keys(top50PercentRecord);
|
|
418
|
+
}
|
|
390
419
|
const getMinStakeErrorMessage = (chainInfo, bnMinStake) => {
|
|
391
420
|
const tokenInfo = (0, _utils._getChainNativeTokenBasicInfo)(chainInfo);
|
|
392
421
|
const number = (0, _number.formatNumber)(bnMinStake.toString(), tokenInfo.decimals || 0, _number.balanceFormatter);
|