@subwallet/extension-base 1.1.54-0 → 1.1.56-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 +30 -2
- package/background/KoniTypes.js +6 -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 +8 -1
- package/cjs/background/errors/SwapError.js +64 -0
- package/cjs/background/errors/TransactionError.js +9 -0
- package/cjs/koni/api/nft/{statemint_nft → assethub_nft}/index.js +5 -3
- package/cjs/koni/api/nft/{statemine_nft → assethub_unique}/index.js +5 -3
- package/cjs/koni/api/nft/index.js +13 -13
- package/cjs/koni/api/nft/nft.js +1 -1
- package/cjs/koni/api/nft/transfer.js +11 -15
- 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 +18 -4
- 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/amplitude.js +7 -9
- package/cjs/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/cjs/services/earning-service/handlers/native-staking/para-chain.js +11 -8
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +22 -3
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +19 -5
- package/cjs/services/earning-service/service.js +0 -1
- 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/nft/{statemint_nft → assethub_nft}/index.d.ts +1 -1
- package/koni/api/nft/{statemint_nft → assethub_nft}/index.js +4 -2
- package/koni/api/nft/{statemine_nft → assethub_unique}/index.d.ts +1 -1
- package/koni/api/nft/{statemine_nft → assethub_unique}/index.js +4 -2
- package/koni/api/nft/index.js +13 -13
- package/koni/api/nft/nft.js +1 -1
- package/koni/api/nft/transfer.d.ts +1 -2
- package/koni/api/nft/transfer.js +10 -13
- 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 +85 -28
- 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 +18 -4
- 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/amplitude.js +7 -9
- package/services/earning-service/handlers/native-staking/astar.js +4 -3
- package/services/earning-service/handlers/native-staking/para-chain.js +12 -9
- package/services/earning-service/handlers/native-staking/relay-chain.js +24 -5
- package/services/earning-service/handlers/nomination-pool/index.js +19 -5
- package/services/earning-service/service.js +0 -1
- 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 +8 -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';
|
|
@@ -158,7 +159,7 @@ export declare enum CrowdloanParaState {
|
|
|
158
159
|
COMPLETED = "completed",
|
|
159
160
|
FAILED = "failed"
|
|
160
161
|
}
|
|
161
|
-
export interface NftItem {
|
|
162
|
+
export interface NftItem extends NftItemExtraInfo {
|
|
162
163
|
id: string;
|
|
163
164
|
chain: string;
|
|
164
165
|
collectionId: string;
|
|
@@ -170,9 +171,16 @@ export interface NftItem {
|
|
|
170
171
|
rarity?: string;
|
|
171
172
|
description?: string;
|
|
172
173
|
properties?: Record<any, any> | null;
|
|
174
|
+
}
|
|
175
|
+
interface NftItemExtraInfo {
|
|
173
176
|
type?: _AssetType.ERC721 | _AssetType.PSP34 | RMRK_VER;
|
|
174
177
|
rmrk_ver?: RMRK_VER;
|
|
175
178
|
onChainOption?: any;
|
|
179
|
+
assetHubType?: AssetHubNftType;
|
|
180
|
+
}
|
|
181
|
+
export declare enum AssetHubNftType {
|
|
182
|
+
NFTS = "nfts",
|
|
183
|
+
UNIQUES = "uniques"
|
|
176
184
|
}
|
|
177
185
|
export interface NftCollection {
|
|
178
186
|
collectionId: string;
|
|
@@ -386,6 +394,7 @@ export declare enum ExtrinsicType {
|
|
|
386
394
|
UNSTAKE_STDOT = "earn.unstake_stdot",
|
|
387
395
|
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
388
396
|
TOKEN_APPROVE = "evm.token_approve",
|
|
397
|
+
SWAP = "swap",
|
|
389
398
|
EVM_EXECUTE = "evm.execute",
|
|
390
399
|
UNKNOWN = "unknown"
|
|
391
400
|
}
|
|
@@ -427,6 +436,7 @@ export interface ExtrinsicDataTypeMap {
|
|
|
427
436
|
[ExtrinsicType.TOKEN_APPROVE]: TokenApproveData;
|
|
428
437
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
429
438
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
439
|
+
[ExtrinsicType.SWAP]: SwapTxData;
|
|
430
440
|
[ExtrinsicType.UNKNOWN]: any;
|
|
431
441
|
}
|
|
432
442
|
export declare enum ExtrinsicStatus {
|
|
@@ -570,7 +580,7 @@ export declare enum TransferTxErrorType {
|
|
|
570
580
|
TRANSFER_ERROR = "TRANSFER_ERROR",
|
|
571
581
|
RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT = "RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT"
|
|
572
582
|
}
|
|
573
|
-
export declare type TransactionErrorType = BasicTxErrorType | TransferTxErrorType | StakingTxErrorType | YieldValidationStatus;
|
|
583
|
+
export declare type TransactionErrorType = BasicTxErrorType | TransferTxErrorType | StakingTxErrorType | YieldValidationStatus | SwapErrorType;
|
|
574
584
|
export declare enum BasicTxWarningCode {
|
|
575
585
|
NOT_ENOUGH_EXISTENTIAL_DEPOSIT = "notEnoughExistentialDeposit"
|
|
576
586
|
}
|
|
@@ -618,6 +628,13 @@ export interface ResponseAccountExportPrivateKey {
|
|
|
618
628
|
privateKey: string;
|
|
619
629
|
publicKey: string;
|
|
620
630
|
}
|
|
631
|
+
export interface RequestAccountBatchExportV2 {
|
|
632
|
+
password: string;
|
|
633
|
+
addresses?: string[];
|
|
634
|
+
}
|
|
635
|
+
export interface ResponseAccountBatchExportV2 {
|
|
636
|
+
exportedJson: KeyringPairs$Json;
|
|
637
|
+
}
|
|
621
638
|
export interface RequestCheckPublicAndSecretKey {
|
|
622
639
|
secretKey: string;
|
|
623
640
|
publicKey: string;
|
|
@@ -1176,6 +1193,10 @@ export interface RequestQrSignEvm {
|
|
|
1176
1193
|
export interface ResponseQrSignEvm {
|
|
1177
1194
|
signature: string;
|
|
1178
1195
|
}
|
|
1196
|
+
export interface RequestChangeFeeToken {
|
|
1197
|
+
currentFeeToken?: string;
|
|
1198
|
+
selectedFeeToken: string;
|
|
1199
|
+
}
|
|
1179
1200
|
export interface RequestCheckTransfer extends BaseRequestSign {
|
|
1180
1201
|
networkKey: string;
|
|
1181
1202
|
from: string;
|
|
@@ -1720,6 +1741,7 @@ export interface KoniRequestSignatures {
|
|
|
1720
1741
|
'pri(derivation.createV2)': [RequestDeriveCreateV2, boolean];
|
|
1721
1742
|
'pri(json.restoreV2)': [RequestJsonRestoreV2, void];
|
|
1722
1743
|
'pri(json.batchRestoreV2)': [RequestBatchRestoreV2, void];
|
|
1744
|
+
'pri(accounts.batchExportV2)': [RequestAccountBatchExportV2, ResponseAccountBatchExportV2];
|
|
1723
1745
|
'pri(accounts.exportPrivateKey)': [RequestAccountExportPrivateKey, ResponseAccountExportPrivateKey];
|
|
1724
1746
|
'pri(accounts.subscribeWithCurrentAddress)': [RequestAccountSubscribe, AccountsWithCurrentAddress, AccountsWithCurrentAddress];
|
|
1725
1747
|
'pri(accounts.updateCurrentAddress)': [string, boolean];
|
|
@@ -1848,9 +1870,15 @@ export interface KoniRequestSignatures {
|
|
|
1848
1870
|
'pri(database.export)': [null, string];
|
|
1849
1871
|
'pri(database.import)': [string, boolean];
|
|
1850
1872
|
'pri(database.exportJson)': [null, DexieExportJsonStructure];
|
|
1873
|
+
'pri(swapService.subscribePairs)': [null, SwapPair[], SwapPair[]];
|
|
1874
|
+
'pri(swapService.handleSwapRequest)': [SwapRequest, SwapRequestResult];
|
|
1875
|
+
'pri(swapService.handleSwapStep)': [SwapSubmitParams, SWTransactionResponse];
|
|
1876
|
+
'pri(swapService.getLatestQuote)': [SwapRequest, SwapQuoteResponse];
|
|
1877
|
+
'pri(swapService.validateSwapProcess)': [ValidateSwapProcessParams, TransactionError[]];
|
|
1851
1878
|
}
|
|
1852
1879
|
export interface ApplicationMetadataType {
|
|
1853
1880
|
version: string;
|
|
1854
1881
|
}
|
|
1855
1882
|
export declare type OSType = 'Mac OS' | 'iOS' | 'Windows' | 'Android' | 'Linux' | 'Unknown';
|
|
1856
1883
|
export declare const MobileOS: OSType[];
|
|
1884
|
+
export {};
|
package/background/KoniTypes.js
CHANGED
|
@@ -38,6 +38,11 @@ export let CrowdloanParaState;
|
|
|
38
38
|
CrowdloanParaState["COMPLETED"] = "completed";
|
|
39
39
|
CrowdloanParaState["FAILED"] = "failed";
|
|
40
40
|
})(CrowdloanParaState || (CrowdloanParaState = {}));
|
|
41
|
+
export let AssetHubNftType;
|
|
42
|
+
(function (AssetHubNftType) {
|
|
43
|
+
AssetHubNftType["NFTS"] = "nfts";
|
|
44
|
+
AssetHubNftType["UNIQUES"] = "uniques";
|
|
45
|
+
})(AssetHubNftType || (AssetHubNftType = {}));
|
|
41
46
|
export let ContractType;
|
|
42
47
|
(function (ContractType) {
|
|
43
48
|
ContractType["wasm"] = "wasm";
|
|
@@ -95,6 +100,7 @@ export let ExtrinsicType;
|
|
|
95
100
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
96
101
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
97
102
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
103
|
+
ExtrinsicType["SWAP"] = "swap";
|
|
98
104
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
99
105
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
100
106
|
})(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;
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.WalletUnlockType = exports.TransferTxErrorType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.StakingTxErrorType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.NETWORK_ERROR = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.ChainEditStandard = exports.CampaignDataType = exports.BasicTxWarningCode = exports.BasicTxErrorType = exports.BalanceErrorType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
|
|
6
|
+
exports.WalletUnlockType = exports.TransferTxErrorType = exports.TransactionDirection = exports.ThemeNames = exports.StakingType = exports.StakingTxErrorType = exports.RuntimeEnvironment = exports.RMRK_VER = exports.ProviderErrorType = exports.NotificationType = exports.NETWORK_STATUS = exports.NETWORK_ERROR = exports.MobileOS = exports.MantaPayEnableMessage = exports.ExtrinsicType = exports.ExtrinsicStatus = exports.ExternalRequestPromiseStatus = exports.EvmProviderErrorType = exports.CrowdloanParaState = exports.ContractType = exports.ChainType = exports.ChainEditStandard = exports.CampaignDataType = exports.BasicTxWarningCode = exports.BasicTxErrorType = exports.BalanceErrorType = exports.AssetHubNftType = exports.AccountExternalErrorCode = exports.APIItemState = void 0;
|
|
7
7
|
// Copyright 2019-2022 @polkadot/extension-koni authors & contributors
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
let RuntimeEnvironment;
|
|
@@ -47,6 +47,12 @@ exports.CrowdloanParaState = CrowdloanParaState;
|
|
|
47
47
|
CrowdloanParaState["COMPLETED"] = "completed";
|
|
48
48
|
CrowdloanParaState["FAILED"] = "failed";
|
|
49
49
|
})(CrowdloanParaState || (exports.CrowdloanParaState = CrowdloanParaState = {}));
|
|
50
|
+
let AssetHubNftType;
|
|
51
|
+
exports.AssetHubNftType = AssetHubNftType;
|
|
52
|
+
(function (AssetHubNftType) {
|
|
53
|
+
AssetHubNftType["NFTS"] = "nfts";
|
|
54
|
+
AssetHubNftType["UNIQUES"] = "uniques";
|
|
55
|
+
})(AssetHubNftType || (exports.AssetHubNftType = AssetHubNftType = {}));
|
|
50
56
|
let ContractType;
|
|
51
57
|
exports.ContractType = ContractType;
|
|
52
58
|
(function (ContractType) {
|
|
@@ -109,6 +115,7 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
109
115
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
110
116
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
111
117
|
ExtrinsicType["TOKEN_APPROVE"] = "evm.token_approve";
|
|
118
|
+
ExtrinsicType["SWAP"] = "swap";
|
|
112
119
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
113
120
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
114
121
|
})(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 {
|
|
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
9
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
9
10
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
11
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
14
|
|
|
14
|
-
class
|
|
15
|
+
class AssetHubNftsPalletApi extends _nft.BaseNftApi {
|
|
15
16
|
// eslint-disable-next-line no-useless-constructor
|
|
16
17
|
constructor(api, addresses, chain) {
|
|
17
18
|
super(chain, api, addresses);
|
|
@@ -112,7 +113,8 @@ class StatemintNftApi extends _nft.BaseNftApi {
|
|
|
112
113
|
image: tokenInfo && tokenInfo.image ? this.parseUrl(tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.image) : undefined,
|
|
113
114
|
collectionId: this.parseTokenId(parsedClassId),
|
|
114
115
|
chain: this.chain,
|
|
115
|
-
owner: address
|
|
116
|
+
owner: address,
|
|
117
|
+
assetHubType: _KoniTypes.AssetHubNftType.NFTS
|
|
116
118
|
};
|
|
117
119
|
params.updateItem(this.chain, parsedNft, address);
|
|
118
120
|
const parsedCollection = {
|
|
@@ -140,4 +142,4 @@ class StatemintNftApi extends _nft.BaseNftApi {
|
|
|
140
142
|
return 1;
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
|
-
exports.default =
|
|
145
|
+
exports.default = AssetHubNftsPalletApi;
|
|
@@ -5,13 +5,14 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = void 0;
|
|
8
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
8
9
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
9
10
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
11
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
14
|
|
|
14
|
-
class
|
|
15
|
+
class AssetHubUniquesPalletApi extends _nft.BaseNftApi {
|
|
15
16
|
// eslint-disable-next-line no-useless-constructor
|
|
16
17
|
constructor(api, addresses, chain) {
|
|
17
18
|
super(chain, api, addresses);
|
|
@@ -112,7 +113,8 @@ class StatemineNftApi extends _nft.BaseNftApi {
|
|
|
112
113
|
image: tokenInfo && tokenInfo.image ? this.parseUrl(tokenInfo === null || tokenInfo === void 0 ? void 0 : tokenInfo.image) : undefined,
|
|
113
114
|
collectionId: this.parseTokenId(parsedClassId),
|
|
114
115
|
chain: this.chain,
|
|
115
|
-
owner: address
|
|
116
|
+
owner: address,
|
|
117
|
+
assetHubType: _KoniTypes.AssetHubNftType.UNIQUES
|
|
116
118
|
};
|
|
117
119
|
params.updateItem(this.chain, parsedNft, address);
|
|
118
120
|
const parsedCollection = {
|
|
@@ -140,4 +142,4 @@ class StatemineNftApi extends _nft.BaseNftApi {
|
|
|
140
142
|
return 1;
|
|
141
143
|
}
|
|
142
144
|
}
|
|
143
|
-
exports.default =
|
|
145
|
+
exports.default = AssetHubUniquesPalletApi;
|
|
@@ -6,19 +6,19 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.NftHandler = void 0;
|
|
8
8
|
var _acala_nft = require("@subwallet/extension-base/koni/api/nft/acala_nft");
|
|
9
|
+
var _assethub_unique = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/assethub_unique"));
|
|
9
10
|
var _bit = require("@subwallet/extension-base/koni/api/nft/bit.country");
|
|
10
11
|
var _evm_nft = require("@subwallet/extension-base/koni/api/nft/evm_nft");
|
|
11
12
|
var _karura_nft = require("@subwallet/extension-base/koni/api/nft/karura_nft");
|
|
12
13
|
var _ordinal_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/ordinal_nft"));
|
|
13
14
|
var _rmrk_nft = require("@subwallet/extension-base/koni/api/nft/rmrk_nft");
|
|
14
|
-
var _statemine_nft = _interopRequireDefault(require("@subwallet/extension-base/koni/api/nft/statemine_nft"));
|
|
15
15
|
var _unique_network_nft = require("@subwallet/extension-base/koni/api/nft/unique_network_nft");
|
|
16
16
|
var _vara_nft = require("@subwallet/extension-base/koni/api/nft/vara_nft");
|
|
17
17
|
var _wasm_nft = require("@subwallet/extension-base/koni/api/nft/wasm_nft");
|
|
18
18
|
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
19
19
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
20
20
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
21
|
-
var
|
|
21
|
+
var _assethub_nft = _interopRequireDefault(require("./assethub_nft"));
|
|
22
22
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
23
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
24
24
|
|
|
@@ -27,21 +27,21 @@ var _statemint_nft = _interopRequireDefault(require("./statemint_nft"));
|
|
|
27
27
|
function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
28
28
|
const [substrateAddresses] = (0, _utils2.categoryAddresses)(addresses);
|
|
29
29
|
if (_constants._NFT_CHAIN_GROUP.acala.includes(chain)) {
|
|
30
|
-
return new _acala_nft.AcalaNftApi(substrateApi, substrateAddresses, chain);
|
|
30
|
+
return [new _acala_nft.AcalaNftApi(substrateApi, substrateAddresses, chain)];
|
|
31
31
|
} else if (_constants._NFT_CHAIN_GROUP.karura.includes(chain)) {
|
|
32
|
-
return new _karura_nft.KaruraNftApi(substrateApi, substrateAddresses, chain);
|
|
32
|
+
return [new _karura_nft.KaruraNftApi(substrateApi, substrateAddresses, chain)];
|
|
33
33
|
} else if (_constants._NFT_CHAIN_GROUP.rmrk.includes(chain)) {
|
|
34
|
-
return new _rmrk_nft.RmrkNftApi(substrateAddresses, chain);
|
|
34
|
+
return [new _rmrk_nft.RmrkNftApi(substrateAddresses, chain)];
|
|
35
35
|
} else if (_constants._NFT_CHAIN_GROUP.statemine.includes(chain)) {
|
|
36
|
-
return new
|
|
36
|
+
return [new _assethub_unique.default(substrateApi, substrateAddresses, chain), new _assethub_nft.default(substrateApi, substrateAddresses, chain)];
|
|
37
37
|
} else if (_constants._NFT_CHAIN_GROUP.statemint.includes(chain)) {
|
|
38
|
-
return new
|
|
38
|
+
return [new _assethub_unique.default(substrateApi, substrateAddresses, chain), new _assethub_nft.default(substrateApi, substrateAddresses, chain)];
|
|
39
39
|
} else if (_constants._NFT_CHAIN_GROUP.unique_network.includes(chain)) {
|
|
40
|
-
return new _unique_network_nft.UniqueNftApi(chain, substrateAddresses);
|
|
40
|
+
return [new _unique_network_nft.UniqueNftApi(chain, substrateAddresses)];
|
|
41
41
|
} else if (_constants._NFT_CHAIN_GROUP.bitcountry.includes(chain)) {
|
|
42
|
-
return new _bit.BitCountryNftApi(substrateApi, substrateAddresses, chain);
|
|
42
|
+
return [new _bit.BitCountryNftApi(substrateApi, substrateAddresses, chain)];
|
|
43
43
|
} else if (_constants._NFT_CHAIN_GROUP.vara.includes(chain)) {
|
|
44
|
-
return new _vara_nft.VaraNftApi(chain, substrateAddresses);
|
|
44
|
+
return [new _vara_nft.VaraNftApi(chain, substrateAddresses)];
|
|
45
45
|
}
|
|
46
46
|
return null;
|
|
47
47
|
}
|
|
@@ -114,9 +114,9 @@ class NftHandler {
|
|
|
114
114
|
let [chain, chainInfo] = _ref;
|
|
115
115
|
if ((0, _utils._isChainSupportNativeNft)(chainInfo)) {
|
|
116
116
|
if (this.substrateApiMap[chain]) {
|
|
117
|
-
const
|
|
118
|
-
if (
|
|
119
|
-
this.handlers.push(
|
|
117
|
+
const handlers = createSubstrateNftApi(chain, this.substrateApiMap[chain], substrateAddresses);
|
|
118
|
+
if (handlers && !!handlers.length) {
|
|
119
|
+
this.handlers.push(...handlers);
|
|
120
120
|
}
|
|
121
121
|
}
|
|
122
122
|
}
|
package/cjs/koni/api/nft/nft.js
CHANGED
|
@@ -4,12 +4,12 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
6
|
exports.acalaGetExtrinsic = acalaGetExtrinsic;
|
|
7
|
+
exports.assetHubGetExtrinsic = assetHubGetExtrinsic;
|
|
7
8
|
exports.getNftTransferExtrinsic = getNftTransferExtrinsic;
|
|
8
9
|
exports.isRecipientSelf = isRecipientSelf;
|
|
9
10
|
exports.rmrkGetExtrinsic = rmrkGetExtrinsic;
|
|
10
|
-
exports.statemineGetExtrinsic = statemineGetExtrinsic;
|
|
11
|
-
exports.statemintGetExtrinsic = statemintGetExtrinsic;
|
|
12
11
|
exports.uniqueGetExtrinsic = uniqueGetExtrinsic;
|
|
12
|
+
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
13
13
|
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
14
14
|
var _utils = require("@subwallet/extension-base/utils");
|
|
15
15
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -64,21 +64,17 @@ async function uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress,
|
|
|
64
64
|
return null;
|
|
65
65
|
}
|
|
66
66
|
}
|
|
67
|
-
function
|
|
67
|
+
function assetHubGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
|
|
68
68
|
try {
|
|
69
69
|
const itemId = params.itemId;
|
|
70
70
|
const collectionId = params.collectionId;
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
71
|
+
const nftType = params.assetHubType;
|
|
72
|
+
if (nftType === _KoniTypes.AssetHubNftType.NFTS) {
|
|
73
|
+
return substrateApi.api.tx.nfts.transfer(collectionId, itemId, recipientAddress);
|
|
74
|
+
} else if (nftType === _KoniTypes.AssetHubNftType.UNIQUES) {
|
|
75
|
+
return substrateApi.api.tx.uniques.transfer(collectionId, itemId, recipientAddress);
|
|
76
|
+
}
|
|
74
77
|
return null;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
function statemintGetExtrinsic(substrateApi, senderAddress, recipientAddress, params) {
|
|
78
|
-
try {
|
|
79
|
-
const itemId = params.itemId;
|
|
80
|
-
const collectionId = params.collectionId;
|
|
81
|
-
return substrateApi.api.tx.nfts.transfer(collectionId, itemId, recipientAddress);
|
|
82
78
|
} catch (e) {
|
|
83
79
|
console.error(e);
|
|
84
80
|
return null;
|
|
@@ -99,9 +95,9 @@ async function getNftTransferExtrinsic(networkKey, substrateApi, senderAddress,
|
|
|
99
95
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.opal:
|
|
100
96
|
return await uniqueGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
101
97
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemine:
|
|
102
|
-
return
|
|
98
|
+
return assetHubGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
103
99
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.statemint:
|
|
104
|
-
return
|
|
100
|
+
return assetHubGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
105
101
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.bitcountry:
|
|
106
102
|
return acalaGetExtrinsic(substrateApi, senderAddress, recipientAddress, params);
|
|
107
103
|
case _config.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME.pioneer:
|
|
@@ -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);
|