@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
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
import { _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
|
+
import { SwapError } from '@subwallet/extension-base/background/errors/SwapError';
|
|
3
|
+
import { AmountData, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
4
|
+
import { TransactionData } from '@subwallet/extension-base/types';
|
|
5
|
+
import { BaseStepDetail } from '@subwallet/extension-base/types/service-base';
|
|
6
|
+
import BigN from 'bignumber.js';
|
|
7
|
+
export declare type SwapRate = number;
|
|
8
|
+
export interface SwapPair {
|
|
9
|
+
slug: string;
|
|
10
|
+
from: string;
|
|
11
|
+
to: string;
|
|
12
|
+
metadata?: Record<string, any>;
|
|
13
|
+
}
|
|
14
|
+
export interface SwapQuote {
|
|
15
|
+
pair: SwapPair;
|
|
16
|
+
fromAmount: string;
|
|
17
|
+
toAmount: string;
|
|
18
|
+
rate: SwapRate;
|
|
19
|
+
provider: SwapProvider;
|
|
20
|
+
aliveUntil: number;
|
|
21
|
+
route: SwapRoute;
|
|
22
|
+
minSwap?: string;
|
|
23
|
+
maxSwap?: string;
|
|
24
|
+
estimatedArrivalTime?: number;
|
|
25
|
+
isLowLiquidity?: boolean;
|
|
26
|
+
metadata?: any;
|
|
27
|
+
feeInfo: SwapFeeInfo;
|
|
28
|
+
}
|
|
29
|
+
export interface SwapRoute {
|
|
30
|
+
path: string[];
|
|
31
|
+
}
|
|
32
|
+
export declare enum SwapErrorType {
|
|
33
|
+
ERROR_FETCHING_QUOTE = "ERROR_FETCHING_QUOTE",
|
|
34
|
+
NOT_MEET_MIN_SWAP = "NOT_MEET_MIN_SWAP",
|
|
35
|
+
UNKNOWN = "UNKNOWN",
|
|
36
|
+
ASSET_NOT_SUPPORTED = "ASSET_NOT_SUPPORTED",
|
|
37
|
+
QUOTE_TIMEOUT = "QUOTE_TIMEOUT",
|
|
38
|
+
INVALID_RECIPIENT = "INVALID_RECIPIENT",
|
|
39
|
+
SWAP_EXCEED_ALLOWANCE = "SWAP_EXCEED_ALLOWANCE",
|
|
40
|
+
SWAP_NOT_ENOUGH_BALANCE = "SWAP_NOT_ENOUGH_BALANCE",
|
|
41
|
+
NOT_ENOUGH_LIQUIDITY = "NOT_ENOUGH_LIQUIDITY",
|
|
42
|
+
AMOUNT_CANNOT_BE_ZERO = "AMOUNT_CANNOT_BE_ZERO"
|
|
43
|
+
}
|
|
44
|
+
export declare enum SwapStepType {
|
|
45
|
+
DEFAULT = "DEFAULT",
|
|
46
|
+
TOKEN_APPROVAL = "TOKEN_APPROVAL",
|
|
47
|
+
SET_FEE_TOKEN = "SET_FEE_TOKEN",
|
|
48
|
+
SWAP = "SWAP",
|
|
49
|
+
XCM = "XCM"
|
|
50
|
+
}
|
|
51
|
+
export declare enum SwapProviderId {
|
|
52
|
+
CHAIN_FLIP_TESTNET = "CHAIN_FLIP_TESTNET",
|
|
53
|
+
CHAIN_FLIP_MAINNET = "CHAIN_FLIP_MAINNET",
|
|
54
|
+
HYDRADX_MAINNET = "HYDRADX_MAINNET",
|
|
55
|
+
HYDRADX_TESTNET = "HYDRADX_TESTNET"
|
|
56
|
+
}
|
|
57
|
+
export declare const _SUPPORTED_SWAP_PROVIDERS: SwapProviderId[];
|
|
58
|
+
export interface SwapProvider {
|
|
59
|
+
id: SwapProviderId;
|
|
60
|
+
name: string;
|
|
61
|
+
faq?: string;
|
|
62
|
+
}
|
|
63
|
+
export declare enum SwapFeeType {
|
|
64
|
+
PLATFORM_FEE = "PLATFORM_FEE",
|
|
65
|
+
NETWORK_FEE = "NETWORK_FEE",
|
|
66
|
+
WALLET_FEE = "WALLET_FEE"
|
|
67
|
+
}
|
|
68
|
+
export interface SwapFeeComponent {
|
|
69
|
+
feeType: SwapFeeType;
|
|
70
|
+
amount: string;
|
|
71
|
+
tokenSlug: string;
|
|
72
|
+
}
|
|
73
|
+
export interface SwapFeeInfo {
|
|
74
|
+
feeComponent: SwapFeeComponent[];
|
|
75
|
+
defaultFeeToken: string;
|
|
76
|
+
feeOptions: string[];
|
|
77
|
+
selectedFeeToken?: string;
|
|
78
|
+
}
|
|
79
|
+
export interface SwapStepDetail extends BaseStepDetail {
|
|
80
|
+
id: number;
|
|
81
|
+
}
|
|
82
|
+
export interface OptimalSwapPath {
|
|
83
|
+
totalFee: SwapFeeInfo[];
|
|
84
|
+
steps: SwapStepDetail[];
|
|
85
|
+
}
|
|
86
|
+
export declare type SwapTxData = ChainflipSwapTxData | HydradxSwapTxData;
|
|
87
|
+
export interface SwapBaseTxData {
|
|
88
|
+
provider: SwapProvider;
|
|
89
|
+
quote: SwapQuote;
|
|
90
|
+
address: string;
|
|
91
|
+
slippage: number;
|
|
92
|
+
recipient?: string;
|
|
93
|
+
process: OptimalSwapPath;
|
|
94
|
+
}
|
|
95
|
+
export interface ChainflipSwapTxData extends SwapBaseTxData {
|
|
96
|
+
depositChannelId: string;
|
|
97
|
+
depositAddress: string;
|
|
98
|
+
estimatedDepositChannelExpiryTime?: number;
|
|
99
|
+
}
|
|
100
|
+
export interface HydradxSwapTxData extends SwapBaseTxData {
|
|
101
|
+
txHex: string;
|
|
102
|
+
}
|
|
103
|
+
export declare type GenSwapStepFunc = (params: OptimalSwapPathParams) => Promise<[BaseStepDetail, SwapFeeInfo] | undefined>;
|
|
104
|
+
export interface ChainflipPreValidationMetadata {
|
|
105
|
+
minSwap: AmountData;
|
|
106
|
+
maxSwap?: AmountData;
|
|
107
|
+
chain: _ChainInfo;
|
|
108
|
+
}
|
|
109
|
+
export interface HydradxPreValidationMetadata {
|
|
110
|
+
maxSwap: AmountData;
|
|
111
|
+
chain: _ChainInfo;
|
|
112
|
+
}
|
|
113
|
+
export interface QuoteAskResponse {
|
|
114
|
+
quote?: SwapQuote;
|
|
115
|
+
error?: SwapError;
|
|
116
|
+
}
|
|
117
|
+
export interface SwapRequest {
|
|
118
|
+
address: string;
|
|
119
|
+
pair: SwapPair;
|
|
120
|
+
fromAmount: string;
|
|
121
|
+
slippage: number;
|
|
122
|
+
recipient?: string;
|
|
123
|
+
feeToken?: string;
|
|
124
|
+
}
|
|
125
|
+
export interface SwapRequestResult {
|
|
126
|
+
process: OptimalSwapPath;
|
|
127
|
+
quote: SwapQuoteResponse;
|
|
128
|
+
}
|
|
129
|
+
export interface SwapQuoteResponse {
|
|
130
|
+
optimalQuote?: SwapQuote;
|
|
131
|
+
quotes: SwapQuote[];
|
|
132
|
+
aliveUntil: number;
|
|
133
|
+
error?: SwapError;
|
|
134
|
+
}
|
|
135
|
+
export interface SwapSubmitParams {
|
|
136
|
+
process: OptimalSwapPath;
|
|
137
|
+
currentStep: number;
|
|
138
|
+
quote: SwapQuote;
|
|
139
|
+
address: string;
|
|
140
|
+
slippage: number;
|
|
141
|
+
recipient?: string;
|
|
142
|
+
}
|
|
143
|
+
export interface SwapSubmitStepData {
|
|
144
|
+
txChain: string;
|
|
145
|
+
txData: any;
|
|
146
|
+
extrinsic: TransactionData;
|
|
147
|
+
transferNativeAmount: string;
|
|
148
|
+
extrinsicType: ExtrinsicType;
|
|
149
|
+
chainType: ChainType;
|
|
150
|
+
}
|
|
151
|
+
export interface OptimalSwapPathParams {
|
|
152
|
+
request: SwapRequest;
|
|
153
|
+
selectedQuote?: SwapQuote;
|
|
154
|
+
}
|
|
155
|
+
export interface SwapEarlyValidation {
|
|
156
|
+
error?: SwapErrorType;
|
|
157
|
+
metadata?: ChainflipPreValidationMetadata | HydradxPreValidationMetadata;
|
|
158
|
+
}
|
|
159
|
+
export interface ValidateSwapProcessParams {
|
|
160
|
+
address: string;
|
|
161
|
+
process: OptimalSwapPath;
|
|
162
|
+
selectedQuote: SwapQuote;
|
|
163
|
+
recipient?: string;
|
|
164
|
+
}
|
|
165
|
+
export interface SlippageType {
|
|
166
|
+
slippage: BigN;
|
|
167
|
+
isCustomType: boolean;
|
|
168
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
// core
|
|
5
|
+
|
|
6
|
+
export let SwapErrorType;
|
|
7
|
+
(function (SwapErrorType) {
|
|
8
|
+
SwapErrorType["ERROR_FETCHING_QUOTE"] = "ERROR_FETCHING_QUOTE";
|
|
9
|
+
SwapErrorType["NOT_MEET_MIN_SWAP"] = "NOT_MEET_MIN_SWAP";
|
|
10
|
+
SwapErrorType["UNKNOWN"] = "UNKNOWN";
|
|
11
|
+
SwapErrorType["ASSET_NOT_SUPPORTED"] = "ASSET_NOT_SUPPORTED";
|
|
12
|
+
SwapErrorType["QUOTE_TIMEOUT"] = "QUOTE_TIMEOUT";
|
|
13
|
+
SwapErrorType["INVALID_RECIPIENT"] = "INVALID_RECIPIENT";
|
|
14
|
+
SwapErrorType["SWAP_EXCEED_ALLOWANCE"] = "SWAP_EXCEED_ALLOWANCE";
|
|
15
|
+
SwapErrorType["SWAP_NOT_ENOUGH_BALANCE"] = "SWAP_NOT_ENOUGH_BALANCE";
|
|
16
|
+
SwapErrorType["NOT_ENOUGH_LIQUIDITY"] = "NOT_ENOUGH_LIQUIDITY";
|
|
17
|
+
SwapErrorType["AMOUNT_CANNOT_BE_ZERO"] = "AMOUNT_CANNOT_BE_ZERO";
|
|
18
|
+
})(SwapErrorType || (SwapErrorType = {}));
|
|
19
|
+
export let SwapStepType;
|
|
20
|
+
(function (SwapStepType) {
|
|
21
|
+
SwapStepType["DEFAULT"] = "DEFAULT";
|
|
22
|
+
SwapStepType["TOKEN_APPROVAL"] = "TOKEN_APPROVAL";
|
|
23
|
+
SwapStepType["SET_FEE_TOKEN"] = "SET_FEE_TOKEN";
|
|
24
|
+
SwapStepType["SWAP"] = "SWAP";
|
|
25
|
+
SwapStepType["XCM"] = "XCM";
|
|
26
|
+
})(SwapStepType || (SwapStepType = {}));
|
|
27
|
+
export let SwapProviderId;
|
|
28
|
+
(function (SwapProviderId) {
|
|
29
|
+
SwapProviderId["CHAIN_FLIP_TESTNET"] = "CHAIN_FLIP_TESTNET";
|
|
30
|
+
SwapProviderId["CHAIN_FLIP_MAINNET"] = "CHAIN_FLIP_MAINNET";
|
|
31
|
+
SwapProviderId["HYDRADX_MAINNET"] = "HYDRADX_MAINNET";
|
|
32
|
+
SwapProviderId["HYDRADX_TESTNET"] = "HYDRADX_TESTNET";
|
|
33
|
+
})(SwapProviderId || (SwapProviderId = {}));
|
|
34
|
+
export const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET, SwapProviderId.HYDRADX_TESTNET];
|
|
35
|
+
// process handling
|
|
36
|
+
export let SwapFeeType;
|
|
37
|
+
(function (SwapFeeType) {
|
|
38
|
+
SwapFeeType["PLATFORM_FEE"] = "PLATFORM_FEE";
|
|
39
|
+
SwapFeeType["NETWORK_FEE"] = "NETWORK_FEE";
|
|
40
|
+
SwapFeeType["WALLET_FEE"] = "WALLET_FEE";
|
|
41
|
+
})(SwapFeeType || (SwapFeeType = {}));
|
|
@@ -21,6 +21,8 @@ export interface ValidatorInfo {
|
|
|
21
21
|
isVerified: boolean;
|
|
22
22
|
icon?: string;
|
|
23
23
|
isCrowded: boolean;
|
|
24
|
+
eraRewardPoint?: string;
|
|
25
|
+
topQuartile?: boolean;
|
|
24
26
|
}
|
|
25
27
|
export declare type YieldPoolTarget = NominationPoolInfo | ValidatorInfo;
|
|
26
28
|
export interface RequestGetYieldPoolTargets {
|
|
@@ -9,6 +9,10 @@ export interface PalletStakingExposureItem {
|
|
|
9
9
|
who: string;
|
|
10
10
|
value: number;
|
|
11
11
|
}
|
|
12
|
+
export interface SpStakingExposurePage {
|
|
13
|
+
pageTotal: number;
|
|
14
|
+
others: PalletStakingExposureItem[];
|
|
15
|
+
}
|
|
12
16
|
export interface PalletStakingExposure {
|
|
13
17
|
total: number;
|
|
14
18
|
own: number;
|
|
@@ -140,6 +144,10 @@ export interface PalletStakingActiveEraInfo {
|
|
|
140
144
|
index: string;
|
|
141
145
|
start: string;
|
|
142
146
|
}
|
|
147
|
+
export interface PalletStakingEraRewardPoints {
|
|
148
|
+
total: string;
|
|
149
|
+
individual: Record<string, string>;
|
|
150
|
+
}
|
|
143
151
|
export interface RuntimeDispatchInfo {
|
|
144
152
|
weight: {
|
|
145
153
|
refTime: number;
|
package/utils/index.d.ts
CHANGED
package/utils/index.js
CHANGED
package/utils/swap.d.ts
ADDED
package/utils/swap.js
ADDED
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { BN_TEN } from '@subwallet/extension-base/utils/number';
|
|
5
|
+
import BigNumber from 'bignumber.js';
|
|
6
|
+
|
|
7
|
+
// Clear zero from end, use with decimal only
|
|
8
|
+
const clearZero = result => {
|
|
9
|
+
let index = result.length - 1;
|
|
10
|
+
while (result[index] === '0') {
|
|
11
|
+
result = result.slice(0, index);
|
|
12
|
+
index--;
|
|
13
|
+
}
|
|
14
|
+
return result;
|
|
15
|
+
};
|
|
16
|
+
const NUM_1T = new BigNumber(1e12);
|
|
17
|
+
const TLIM = new BigNumber(1e17);
|
|
18
|
+
const NUM_1B = new BigNumber(1e9);
|
|
19
|
+
const BLIM = new BigNumber(1e14);
|
|
20
|
+
const NUM_1M = new BigNumber(1e6);
|
|
21
|
+
const NUM_100M = new BigNumber(1e8);
|
|
22
|
+
export const swapCustomFormatter = (input, metadata) => {
|
|
23
|
+
const minNumberFormat = 2;
|
|
24
|
+
const maxNumberFormat = (metadata === null || metadata === void 0 ? void 0 : metadata.maxNumberFormat) || 6;
|
|
25
|
+
const [int, decimal = '0'] = input.split('.');
|
|
26
|
+
let _decimal = '';
|
|
27
|
+
const intNumber = new BigNumber(int);
|
|
28
|
+
const max = BN_TEN.pow(maxNumberFormat);
|
|
29
|
+
|
|
30
|
+
// If count of number in integer part greater or equal maxNumberFormat, do not show decimal
|
|
31
|
+
if (intNumber.gte(max)) {
|
|
32
|
+
if (intNumber.gte(NUM_100M)) {
|
|
33
|
+
if (intNumber.gte(BLIM)) {
|
|
34
|
+
if (intNumber.gte(TLIM)) {
|
|
35
|
+
return `${intNumber.dividedBy(NUM_1T).toFixed()} T`;
|
|
36
|
+
}
|
|
37
|
+
return `${intNumber.dividedBy(NUM_1B).toFixed()} B`;
|
|
38
|
+
}
|
|
39
|
+
return `${intNumber.dividedBy(NUM_1M).toFixed()} M`;
|
|
40
|
+
}
|
|
41
|
+
_decimal = decimal.slice(0, metadata === null || metadata === void 0 ? void 0 : metadata.maxNumberFormat);
|
|
42
|
+
return `${int}.${_decimal}`;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Get only minNumberFormat number at decimal
|
|
46
|
+
if (decimal.length <= minNumberFormat || !(metadata !== null && metadata !== void 0 && metadata.maxNumberFormat)) {
|
|
47
|
+
_decimal = decimal;
|
|
48
|
+
} else {
|
|
49
|
+
_decimal = decimal.slice(0, maxNumberFormat);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Clear zero number for decimal
|
|
53
|
+
_decimal = clearZero(_decimal);
|
|
54
|
+
if (_decimal) {
|
|
55
|
+
return `${int}.${_decimal}`;
|
|
56
|
+
}
|
|
57
|
+
return int;
|
|
58
|
+
};
|
|
59
|
+
export const formatNumberString = numberString => {
|
|
60
|
+
const number = parseFloat(numberString);
|
|
61
|
+
const exponentNotation = number.toExponential();
|
|
62
|
+
let [coefficient, exponent] = exponentNotation.split('e');
|
|
63
|
+
if (parseInt(exponent) < 0) {
|
|
64
|
+
coefficient = coefficient.replace(/^0+|\./g, '');
|
|
65
|
+
coefficient = '0.' + '0'.repeat(Math.abs(parseInt(exponent)) - 1) + coefficient;
|
|
66
|
+
} else {
|
|
67
|
+
coefficient += '0'.repeat(parseInt(exponent) - coefficient.length + 1);
|
|
68
|
+
}
|
|
69
|
+
return coefficient;
|
|
70
|
+
};
|