@subwallet/extension-base 1.3.76-0 → 1.3.78-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 +4 -1
- package/cjs/core/logic-validation/index.js +1 -1
- package/cjs/core/substrate/xcm-parser.js +17 -11
- package/cjs/koni/background/handlers/Extension.js +293 -71
- package/cjs/koni/background/handlers/State.js +20 -0
- package/cjs/koni/background/handlers/Tabs.js +2 -3
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/evm.js +85 -6
- package/cjs/services/balance-service/helpers/subscribe/index.js +2 -1
- package/cjs/services/balance-service/index.js +6 -2
- package/cjs/services/balance-service/transfer/token.js +15 -0
- package/cjs/services/balance-service/transfer/xcm/bittensorBridge/index.js +27 -0
- package/cjs/services/balance-service/transfer/xcm/bittensorBridge/nativeTokenBridge.js +58 -0
- package/cjs/services/balance-service/transfer/xcm/bittensorBridge/utils.js +36 -0
- package/cjs/services/balance-service/transfer/xcm/index.js +61 -2
- package/cjs/services/balance-service/transfer/xcm/utils.js +94 -6
- package/cjs/services/chain-service/constants.js +4 -2
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/earning-service/constants/chains.js +7 -2
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +8 -5
- package/cjs/services/earning-service/handlers/special.js +82 -65
- package/cjs/services/earning-service/service.js +19 -2
- package/cjs/services/multisig-service/index.js +1 -1
- package/cjs/services/request-service/handler/SubstrateRequestHandler.js +12 -0
- package/cjs/services/request-service/index.js +3 -0
- package/cjs/services/setting-service/constants.js +2 -1
- package/cjs/services/storage-service/db-stores/InappNotification.js +1 -1
- package/cjs/services/swap-service/handler/bittensor-handler.js +197 -0
- package/cjs/services/swap-service/index.js +7 -0
- package/cjs/services/transaction-service/index.js +10 -0
- package/cjs/types/balance/index.js +1 -0
- package/cjs/types/swap/index.js +3 -1
- package/cjs/utils/fee/transfer.js +20 -5
- package/core/logic-validation/index.js +1 -1
- package/core/substrate/xcm-parser.d.ts +3 -0
- package/core/substrate/xcm-parser.js +14 -11
- package/koni/background/handlers/Extension.d.ts +19 -0
- package/koni/background/handlers/Extension.js +233 -14
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +20 -0
- package/koni/background/handlers/Tabs.js +2 -3
- package/package.json +26 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/evm.d.ts +1 -0
- package/services/balance-service/helpers/subscribe/evm.js +76 -1
- package/services/balance-service/helpers/subscribe/index.js +2 -1
- package/services/balance-service/index.js +6 -2
- package/services/balance-service/transfer/token.d.ts +2 -1
- package/services/balance-service/transfer/token.js +15 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/index.d.ts +2 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/index.js +5 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/nativeTokenBridge.d.ts +6 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/nativeTokenBridge.js +50 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/utils.d.ts +8 -0
- package/services/balance-service/transfer/xcm/bittensorBridge/utils.js +29 -0
- package/services/balance-service/transfer/xcm/index.d.ts +5 -0
- package/services/balance-service/transfer/xcm/index.js +57 -2
- package/services/balance-service/transfer/xcm/utils.d.ts +3 -2
- package/services/balance-service/transfer/xcm/utils.js +87 -1
- package/services/chain-service/constants.d.ts +2 -0
- package/services/chain-service/constants.js +4 -2
- package/services/chain-service/utils/patch.d.ts +1 -1
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/constants/chains.d.ts +2 -0
- package/services/earning-service/constants/chains.js +4 -1
- package/services/earning-service/handlers/liquid-staking/stella-swap.d.ts +1 -0
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +6 -4
- package/services/earning-service/handlers/special.d.ts +1 -1
- package/services/earning-service/handlers/special.js +85 -68
- package/services/earning-service/service.js +21 -4
- package/services/inapp-notification-service/interfaces.d.ts +1 -0
- package/services/multisig-service/index.js +1 -1
- package/services/request-service/handler/SubstrateRequestHandler.d.ts +1 -0
- package/services/request-service/handler/SubstrateRequestHandler.js +12 -0
- package/services/request-service/index.d.ts +1 -0
- package/services/request-service/index.js +3 -0
- package/services/request-service/types.d.ts +1 -0
- package/services/setting-service/constants.js +2 -1
- package/services/storage-service/db-stores/InappNotification.js +1 -1
- package/services/swap-service/handler/bittensor-handler.d.ts +21 -0
- package/services/swap-service/handler/bittensor-handler.js +189 -0
- package/services/swap-service/index.js +7 -0
- package/services/transaction-service/index.d.ts +1 -1
- package/services/transaction-service/index.js +10 -0
- package/services/transaction-service/types.d.ts +4 -3
- package/types/balance/index.d.ts +3 -1
- package/types/balance/index.js +1 -0
- package/types/balance/transfer.d.ts +9 -0
- package/types/fee/base.d.ts +1 -0
- package/types/multisig/index.d.ts +12 -0
- package/types/swap/index.d.ts +3 -1
- package/types/swap/index.js +3 -1
- package/types/yield/actions/join/step.d.ts +6 -0
- package/types/yield/actions/join/submit.d.ts +1 -0
- package/utils/fee/transfer.d.ts +1 -0
- package/utils/fee/transfer.js +21 -6
|
@@ -20,6 +20,7 @@ import subwalletApiSdk from '@subwallet-monorepos/subwallet-services-sdk';
|
|
|
20
20
|
import BigN from 'bignumber.js';
|
|
21
21
|
import { t } from 'i18next';
|
|
22
22
|
import { BehaviorSubject } from 'rxjs';
|
|
23
|
+
import { BittensorSwapHandler } from "./handler/bittensor-handler.js";
|
|
23
24
|
import { KyberHandler } from "./handler/kyber-handler.js";
|
|
24
25
|
import { SimpleSwapHandler } from "./handler/simpleswap-handler.js";
|
|
25
26
|
import { UniswapHandler } from "./handler/uniswap-handler.js";
|
|
@@ -289,6 +290,12 @@ export class SwapService {
|
|
|
289
290
|
case SwapProviderId.OPTIMEX_TESTNET:
|
|
290
291
|
this.handlers[providerId] = new OptimexHandler(this.chainService, this.state.balanceService, this.state.feeService, true);
|
|
291
292
|
break;
|
|
293
|
+
case SwapProviderId.BITTENSOR:
|
|
294
|
+
this.handlers[providerId] = new BittensorSwapHandler(this.chainService, this.state.balanceService, this.state.feeService, false);
|
|
295
|
+
break;
|
|
296
|
+
case SwapProviderId.BITTENSOR_TESTNET:
|
|
297
|
+
this.handlers[providerId] = new BittensorSwapHandler(this.chainService, this.state.balanceService, this.state.feeService, true);
|
|
298
|
+
break;
|
|
292
299
|
default:
|
|
293
300
|
throw new Error('Unsupported provider');
|
|
294
301
|
}
|
|
@@ -74,7 +74,7 @@ export default class TransactionService {
|
|
|
74
74
|
private sendPermitTransaction;
|
|
75
75
|
private sendDutchTransaction;
|
|
76
76
|
private removeTransaction;
|
|
77
|
-
|
|
77
|
+
updateTransaction(id: string, data: Partial<Omit<SWTransactionBase, 'id'>>): void;
|
|
78
78
|
private getTransactionLink;
|
|
79
79
|
private transactionToHistories;
|
|
80
80
|
private onSigned;
|
|
@@ -930,6 +930,7 @@ export default class TransactionService {
|
|
|
930
930
|
nonce: nonce !== null && nonce !== void 0 ? nonce : 0,
|
|
931
931
|
startBlock: startBlock || 0,
|
|
932
932
|
processId: (_transaction$step3 = transaction.step) === null || _transaction$step3 === void 0 ? void 0 : _transaction$step3.processId,
|
|
933
|
+
crossChainFeeInfo: transaction === null || transaction === void 0 ? void 0 : transaction.xcmDestinationFee,
|
|
933
934
|
substrateProxyAddresses: []
|
|
934
935
|
};
|
|
935
936
|
const substrateProxyHistories = [];
|
|
@@ -1371,6 +1372,15 @@ export default class TransactionService {
|
|
|
1371
1372
|
case ExtrinsicType.UNKNOWN:
|
|
1372
1373
|
break;
|
|
1373
1374
|
}
|
|
1375
|
+
const txData = transaction.data;
|
|
1376
|
+
const signer = txData === null || txData === void 0 ? void 0 : txData.signer;
|
|
1377
|
+
if (signer) {
|
|
1378
|
+
const currentAdditionalInfo = historyItem.additionalInfo ? historyItem.additionalInfo : {};
|
|
1379
|
+
historyItem.additionalInfo = {
|
|
1380
|
+
...currentAdditionalInfo,
|
|
1381
|
+
signer
|
|
1382
|
+
};
|
|
1383
|
+
}
|
|
1374
1384
|
try {
|
|
1375
1385
|
// Return one more history record if transaction send to account in the wallets
|
|
1376
1386
|
const toAccount = (historyItem === null || historyItem === void 0 ? void 0 : historyItem.to) && keyring.getPair(historyItem.to);
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
|
|
1
|
+
import { AmountData, ChainType, ExtrinsicDataTypeMap, ExtrinsicStatus, ExtrinsicType, FeeData, ValidateTransactionResponse } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
2
|
import { SignTypedDataMessageV3V4 } from '@subwallet/extension-base/core/logic-validation';
|
|
3
3
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
4
4
|
import { UniswapOrderInfo } from '@subwallet/extension-base/services/swap-service/handler/uniswap-handler';
|
|
@@ -23,6 +23,7 @@ export interface SWTransactionBase extends ValidateTransactionResponse, Partial<
|
|
|
23
23
|
updatedAt: number;
|
|
24
24
|
estimateFee?: FeeData;
|
|
25
25
|
xcmFeeDryRun?: string;
|
|
26
|
+
xcmDestinationFee?: AmountData;
|
|
26
27
|
transaction: any;
|
|
27
28
|
additionalValidator?: (inputTransaction: SWTransactionResponse) => Promise<void>;
|
|
28
29
|
eventsHandler?: (eventEmitter: TransactionEmitter) => void;
|
|
@@ -75,7 +76,7 @@ export interface SWTransactionEmitter {
|
|
|
75
76
|
emitterTransaction?: TransactionEmitter;
|
|
76
77
|
}
|
|
77
78
|
declare type SwInputBase = Pick<SWTransactionBase, 'address' | 'url' | 'data' | 'extrinsicType' | 'chain' | 'chainType' | 'ignoreWarnings' | 'transferNativeAmount'> & Partial<Pick<SWTransactionBase, 'additionalValidator' | 'eventsHandler'>>;
|
|
78
|
-
export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransactionBase, 'estimateFee' | 'signAfterCreate' | 'isPassConfirmation' | 'step' | 'errorOnTimeOut' | 'xcmFeeDryRun' | 'wrappingStatus'>>, TransactionFee {
|
|
79
|
+
export interface SWTransactionInput extends SwInputBase, Partial<Pick<SWTransactionBase, 'estimateFee' | 'signAfterCreate' | 'isPassConfirmation' | 'step' | 'errorOnTimeOut' | 'xcmFeeDryRun' | 'xcmDestinationFee' | 'wrappingStatus'>>, TransactionFee {
|
|
79
80
|
id?: string;
|
|
80
81
|
transaction?: SWTransactionBase['transaction'] | null;
|
|
81
82
|
warnings?: SWTransactionBase['warnings'];
|
|
@@ -94,7 +95,7 @@ export interface SWPermitTransactionInput extends Omit<SWTransactionInput, 'tran
|
|
|
94
95
|
export interface SWDutchTransactionInput extends Omit<SWTransactionInput, 'transaction'> {
|
|
95
96
|
transaction?: SWDutchTransaction['transaction'] | null;
|
|
96
97
|
}
|
|
97
|
-
export declare type SWTransactionResponse = SwInputBase & Pick<SWTransactionBase, 'warnings' | 'errors'> & Partial<Pick<SWTransactionBase, 'id' | 'extrinsicHash' | 'status' | 'estimateFee' | 'xcmFeeDryRun' | 'wrappingStatus'>> & TransactionFee & {
|
|
98
|
+
export declare type SWTransactionResponse = SwInputBase & Pick<SWTransactionBase, 'warnings' | 'errors'> & Partial<Pick<SWTransactionBase, 'id' | 'extrinsicHash' | 'status' | 'estimateFee' | 'xcmFeeDryRun' | 'xcmDestinationFee' | 'wrappingStatus'>> & TransactionFee & {
|
|
98
99
|
processId?: string;
|
|
99
100
|
};
|
|
100
101
|
export declare type BitcoinTransactionData = {
|
package/types/balance/index.d.ts
CHANGED
|
@@ -12,7 +12,8 @@ export declare enum BalanceType {
|
|
|
12
12
|
TRANSFERABLE = "transferable",
|
|
13
13
|
TOTAL = "total",
|
|
14
14
|
TOTAL_MINUS_RESERVED = "totalMinusReserved",
|
|
15
|
-
KEEP_ALIVE = "keepAlive"
|
|
15
|
+
KEEP_ALIVE = "keepAlive",
|
|
16
|
+
STAKING = "staking"
|
|
16
17
|
}
|
|
17
18
|
/**
|
|
18
19
|
* Balance info of a token on an address
|
|
@@ -62,6 +63,7 @@ export interface SubscribeSubstratePalletBalance extends SubscribeBasePalletBala
|
|
|
62
63
|
}
|
|
63
64
|
export interface SubscribeEvmPalletBalance extends SubscribeBasePalletBalance {
|
|
64
65
|
evmApi: _EvmApi;
|
|
66
|
+
substrateApiMap?: Record<string, _SubstrateApi>;
|
|
65
67
|
}
|
|
66
68
|
export interface SubscribeTonPalletBalance extends SubscribeBasePalletBalance {
|
|
67
69
|
tonApi: _TonApi;
|
package/types/balance/index.js
CHANGED
|
@@ -18,6 +18,7 @@ export let BalanceType;
|
|
|
18
18
|
BalanceType["TOTAL"] = "total";
|
|
19
19
|
BalanceType["TOTAL_MINUS_RESERVED"] = "totalMinusReserved";
|
|
20
20
|
BalanceType["KEEP_ALIVE"] = "keepAlive";
|
|
21
|
+
BalanceType["STAKING"] = "staking";
|
|
21
22
|
})(BalanceType || (BalanceType = {}));
|
|
22
23
|
/** Balance info of all tokens on an address */
|
|
23
24
|
// Key is tokenSlug
|
|
@@ -9,6 +9,7 @@ export interface RequestSubscribeTransfer extends TransactionFee {
|
|
|
9
9
|
token: string;
|
|
10
10
|
destChain: string;
|
|
11
11
|
transferAll?: boolean;
|
|
12
|
+
metadata?: Record<string, any>;
|
|
12
13
|
}
|
|
13
14
|
export interface ResponseSubscribeTransfer {
|
|
14
15
|
id: string;
|
|
@@ -26,6 +27,11 @@ export interface RequestSubmitTransferWithId extends RequestSubmitTransfer {
|
|
|
26
27
|
export interface ResponseSubscribeTransferConfirmation extends Omit<ResponseSubscribeTransfer, 'maxTransferable'> {
|
|
27
28
|
error?: string;
|
|
28
29
|
}
|
|
30
|
+
export interface AlphaTokenTransferMetadata {
|
|
31
|
+
netuid: number;
|
|
32
|
+
fromValidator: string;
|
|
33
|
+
toValidator: string;
|
|
34
|
+
}
|
|
29
35
|
export interface RequestSubmitTransfer extends BaseRequestSign, TransactionFee {
|
|
30
36
|
chain: string;
|
|
31
37
|
from: string;
|
|
@@ -35,6 +41,9 @@ export interface RequestSubmitTransfer extends BaseRequestSign, TransactionFee {
|
|
|
35
41
|
value: string;
|
|
36
42
|
transferBounceable?: boolean;
|
|
37
43
|
isSubstrateECDSATransaction?: boolean;
|
|
44
|
+
maxTransferableWithoutFee?: string;
|
|
45
|
+
maxTransferable?: string;
|
|
46
|
+
metadata?: Record<string, any>;
|
|
38
47
|
}
|
|
39
48
|
export interface RequestSubmitSignPsbtTransfer extends BaseRequestSign {
|
|
40
49
|
id: string;
|
package/types/fee/base.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
1
2
|
import { ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
2
3
|
import { MultisigTxType } from '@subwallet/extension-base/services/multisig-service';
|
|
3
4
|
import { DecodeCallDataResponse } from '@subwallet/extension-base/services/multisig-service/utils';
|
|
@@ -44,6 +45,17 @@ export interface InitMultisigTxResponse {
|
|
|
44
45
|
networkFee: string;
|
|
45
46
|
error?: SelectSignatoryError;
|
|
46
47
|
}
|
|
48
|
+
export interface PrepareMultisigSignRequest {
|
|
49
|
+
id: string;
|
|
50
|
+
signer: string;
|
|
51
|
+
}
|
|
52
|
+
export interface PrepareMultisigSignResponse {
|
|
53
|
+
submittedCallData: HexString;
|
|
54
|
+
callData: HexString;
|
|
55
|
+
depositAmount: string;
|
|
56
|
+
networkFee: string;
|
|
57
|
+
errors: TransactionError[];
|
|
58
|
+
}
|
|
47
59
|
export interface RequestGetSignableAccountInfos {
|
|
48
60
|
multisigProxyId: string;
|
|
49
61
|
chain: string;
|
package/types/swap/index.d.ts
CHANGED
|
@@ -65,7 +65,9 @@ export declare enum SwapProviderId {
|
|
|
65
65
|
UNISWAP = "UNISWAP",
|
|
66
66
|
KYBER = "KYBER",
|
|
67
67
|
OPTIMEX = "OPTIMEX",
|
|
68
|
-
OPTIMEX_TESTNET = "OPTIMEX_TESTNET"
|
|
68
|
+
OPTIMEX_TESTNET = "OPTIMEX_TESTNET",
|
|
69
|
+
BITTENSOR = "BITTENSOR",
|
|
70
|
+
BITTENSOR_TESTNET = "BITTENSOR_TESTNET"
|
|
69
71
|
}
|
|
70
72
|
export declare const _SUPPORTED_SWAP_PROVIDERS: SwapProviderId[];
|
|
71
73
|
export interface SwapProvider {
|
package/types/swap/index.js
CHANGED
|
@@ -42,8 +42,10 @@ export let SwapProviderId;
|
|
|
42
42
|
SwapProviderId["KYBER"] = "KYBER";
|
|
43
43
|
SwapProviderId["OPTIMEX"] = "OPTIMEX";
|
|
44
44
|
SwapProviderId["OPTIMEX_TESTNET"] = "OPTIMEX_TESTNET";
|
|
45
|
+
SwapProviderId["BITTENSOR"] = "BITTENSOR";
|
|
46
|
+
SwapProviderId["BITTENSOR_TESTNET"] = "BITTENSOR_TESTNET";
|
|
45
47
|
})(SwapProviderId || (SwapProviderId = {}));
|
|
46
|
-
export const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET, SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB, SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP, SwapProviderId.KYBER, SwapProviderId.OPTIMEX, SwapProviderId.OPTIMEX_TESTNET];
|
|
48
|
+
export const _SUPPORTED_SWAP_PROVIDERS = [SwapProviderId.CHAIN_FLIP_TESTNET, SwapProviderId.CHAIN_FLIP_MAINNET, SwapProviderId.HYDRADX_MAINNET, SwapProviderId.POLKADOT_ASSET_HUB, SwapProviderId.KUSAMA_ASSET_HUB, SwapProviderId.SIMPLE_SWAP, SwapProviderId.UNISWAP, SwapProviderId.KYBER, SwapProviderId.OPTIMEX, SwapProviderId.OPTIMEX_TESTNET, SwapProviderId.BITTENSOR, SwapProviderId.BITTENSOR_TESTNET];
|
|
47
49
|
// process handling
|
|
48
50
|
export let SwapFeeType;
|
|
49
51
|
(function (SwapFeeType) {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { _ChainAsset } from '@subwallet/chain-list/types';
|
|
1
2
|
import { YieldPoolTarget } from '@subwallet/extension-base/types';
|
|
2
3
|
/**
|
|
3
4
|
* @interface RequestEarlyValidateYield
|
|
@@ -95,3 +96,8 @@ export interface OptimalYieldPath {
|
|
|
95
96
|
connectionError?: string;
|
|
96
97
|
}
|
|
97
98
|
export declare type GenStepFunction = (params: OptimalYieldPathParams) => Promise<YieldStepBaseInfo | undefined>;
|
|
99
|
+
export interface XcmStepMetadataForLiqStaking {
|
|
100
|
+
sendingValue: string;
|
|
101
|
+
originTokenInfo: _ChainAsset;
|
|
102
|
+
destinationTokenInfo: _ChainAsset;
|
|
103
|
+
}
|
package/utils/fee/transfer.d.ts
CHANGED
|
@@ -20,6 +20,7 @@ export interface CalculateMaxTransferable extends TransactionFee {
|
|
|
20
20
|
isTransferNativeTokenAndPayLocalTokenAsFee: boolean;
|
|
21
21
|
nativeToken: _ChainAsset;
|
|
22
22
|
transferAll?: boolean;
|
|
23
|
+
metadata?: Record<string, any>;
|
|
23
24
|
}
|
|
24
25
|
export declare const detectTransferTxType: (srcToken: _ChainAsset, srcChain: _ChainInfo, destChain: _ChainInfo) => FeeChainType;
|
|
25
26
|
export declare const calculateMaxTransferable: (id: string, request: CalculateMaxTransferable, freeBalance: AmountData, fee: FeeInfo) => Promise<ResponseSubscribeTransfer>;
|
package/utils/fee/transfer.js
CHANGED
|
@@ -9,9 +9,10 @@ import { createCardanoTransaction } from '@subwallet/extension-base/services/bal
|
|
|
9
9
|
import { gasSettingsForEWC, getERC20TransactionObject, getEVMTransactionObject } from '@subwallet/extension-base/services/balance-service/transfer/smart-contract';
|
|
10
10
|
import { createSubstrateExtrinsic } from '@subwallet/extension-base/services/balance-service/transfer/token';
|
|
11
11
|
import { createTonTransaction } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
12
|
-
import { createAcrossBridgeExtrinsic, createAvailBridgeExtrinsicFromAvail, createAvailBridgeTxFromEth, createPolygonBridgeExtrinsic, createSnowBridgeExtrinsic, createXcmExtrinsicV2 } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
|
|
12
|
+
import { createAcrossBridgeExtrinsic, createAvailBridgeExtrinsicFromAvail, createAvailBridgeTxFromEth, createBittensorToSubtensorEvmExtrinsic, createPolygonBridgeExtrinsic, createSnowBridgeExtrinsic, createSubtensorEvmToBittensorExtrinsic, createXcmExtrinsicV2 } from '@subwallet/extension-base/services/balance-service/transfer/xcm';
|
|
13
13
|
import { _isAcrossChainBridge, _isAcrossTestnetBridge, getAcrossSendingValue } from '@subwallet/extension-base/services/balance-service/transfer/xcm/acrossBridge';
|
|
14
14
|
import { isAvailChainBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/availBridge';
|
|
15
|
+
import { _isBittensorToSubtensorBridge, _isSubtensorToBittensorBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/bittensorBridge/nativeTokenBridge';
|
|
15
16
|
import { _isPolygonChainBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/polygonBridge';
|
|
16
17
|
import { _isPosChainBridge } from '@subwallet/extension-base/services/balance-service/transfer/xcm/posBridge';
|
|
17
18
|
import { estimateXcmFee } from '@subwallet/extension-base/services/balance-service/transfer/xcm/utils';
|
|
@@ -82,6 +83,7 @@ export const calculateTransferMaxTransferable = async (id, request, freeBalance,
|
|
|
82
83
|
feeOption,
|
|
83
84
|
isTransferLocalTokenAndPayThatTokenAsFee,
|
|
84
85
|
isTransferNativeTokenAndPayLocalTokenAsFee,
|
|
86
|
+
metadata,
|
|
85
87
|
nativeToken,
|
|
86
88
|
srcChain,
|
|
87
89
|
srcToken,
|
|
@@ -184,7 +186,8 @@ export const calculateTransferMaxTransferable = async (id, request, freeBalance,
|
|
|
184
186
|
networkKey: srcChain.slug,
|
|
185
187
|
tokenInfo: srcToken,
|
|
186
188
|
to: recipient,
|
|
187
|
-
substrateApi
|
|
189
|
+
substrateApi,
|
|
190
|
+
metadata
|
|
188
191
|
});
|
|
189
192
|
}
|
|
190
193
|
if (feeChainType === 'evm') {
|
|
@@ -337,10 +340,12 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
337
340
|
srcChain,
|
|
338
341
|
srcToken,
|
|
339
342
|
substrateApi,
|
|
343
|
+
transferAll,
|
|
340
344
|
value
|
|
341
345
|
} = request;
|
|
342
346
|
const feeChainType = fee.type;
|
|
343
347
|
let estimatedFee = '0';
|
|
348
|
+
let crossChainFee = '0';
|
|
344
349
|
let feeOptions;
|
|
345
350
|
let maxTransferable;
|
|
346
351
|
let error;
|
|
@@ -350,7 +355,9 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
350
355
|
const isPolygonBridgeTransfer = _isPolygonChainBridge(srcChain.slug, destChain.slug);
|
|
351
356
|
const isPosBridgeTransfer = _isPosChainBridge(srcChain.slug, destChain.slug);
|
|
352
357
|
const isAcrossBridgeTransfer = _isAcrossChainBridge(srcChain.slug, destChain.slug);
|
|
353
|
-
const
|
|
358
|
+
const isBittensorBridgeTransfer = _isBittensorToSubtensorBridge(srcChain.slug, destChain.slug);
|
|
359
|
+
const isSubtensorEvmBridgeTransfer = _isSubtensorToBittensorBridge(srcChain.slug, destChain.slug);
|
|
360
|
+
const isSubstrateParaspellXcm = !(isAvailBridgeFromEvm || isAvailBridgeFromAvail || isSnowBridgeEvmTransfer || isPolygonBridgeTransfer || isPosBridgeTransfer || isAcrossBridgeTransfer || isBittensorBridgeTransfer || isSubtensorEvmBridgeTransfer);
|
|
354
361
|
const fakeAddress = '5DRewsYzhJqZXU3SRaWy1FSt5iDr875ao91aw5fjrJmDG4Ap'; // todo: move this
|
|
355
362
|
const substrateAddress = fakeAddress; // todo: move this
|
|
356
363
|
const evmAddress = u8aToHex(addressToEvm(fakeAddress)); // todo: move this
|
|
@@ -373,7 +380,8 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
373
380
|
evmApi,
|
|
374
381
|
feeCustom,
|
|
375
382
|
feeOption,
|
|
376
|
-
feeInfo: fee
|
|
383
|
+
feeInfo: fee,
|
|
384
|
+
transferAll
|
|
377
385
|
};
|
|
378
386
|
let funcCreateExtrinsic;
|
|
379
387
|
if (isPosBridgeTransfer || isPolygonBridgeTransfer) {
|
|
@@ -381,6 +389,10 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
381
389
|
} else if (isAcrossBridgeTransfer) {
|
|
382
390
|
funcCreateExtrinsic = createAcrossBridgeExtrinsic;
|
|
383
391
|
params.sendingValue = await getAcrossSendingValue(srcChain, srcToken, destChain, _isAcrossTestnetBridge(srcChain.slug));
|
|
392
|
+
} else if (isBittensorBridgeTransfer) {
|
|
393
|
+
funcCreateExtrinsic = createBittensorToSubtensorEvmExtrinsic;
|
|
394
|
+
} else if (isSubtensorEvmBridgeTransfer) {
|
|
395
|
+
funcCreateExtrinsic = createSubtensorEvmToBittensorExtrinsic;
|
|
384
396
|
} else if (isSnowBridgeEvmTransfer) {
|
|
385
397
|
funcCreateExtrinsic = createSnowBridgeExtrinsic;
|
|
386
398
|
} else if (isAvailBridgeFromEvm) {
|
|
@@ -412,7 +424,8 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
412
424
|
};
|
|
413
425
|
} else if (feeChainType === 'substrate') {
|
|
414
426
|
// Calculate fee for substrate transaction
|
|
415
|
-
if (
|
|
427
|
+
if (isSubstrateParaspellXcm) {
|
|
428
|
+
var _xcmFeeInfo$destinati;
|
|
416
429
|
const xcmFeeInfo = await estimateXcmFee({
|
|
417
430
|
fromChainInfo: params.originChain,
|
|
418
431
|
fromTokenInfo: params.originTokenInfo,
|
|
@@ -422,6 +435,7 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
422
435
|
value: params.sendingValue
|
|
423
436
|
});
|
|
424
437
|
estimatedFee = (xcmFeeInfo === null || xcmFeeInfo === void 0 ? void 0 : xcmFeeInfo.origin.fee) || '0';
|
|
438
|
+
crossChainFee = (xcmFeeInfo === null || xcmFeeInfo === void 0 ? void 0 : (_xcmFeeInfo$destinati = xcmFeeInfo.destination) === null || _xcmFeeInfo$destinati === void 0 ? void 0 : _xcmFeeInfo$destinati.fee) || '0';
|
|
425
439
|
} else {
|
|
426
440
|
try {
|
|
427
441
|
var _paymentInfo$partialF2;
|
|
@@ -436,7 +450,8 @@ export const calculateXcmMaxTransferable = async (id, request, freeBalance, fee)
|
|
|
436
450
|
estimatedFee = new BigN(estimatedFee).plus(tip).toFixed(0);
|
|
437
451
|
feeOptions = {
|
|
438
452
|
...fee,
|
|
439
|
-
estimatedFee
|
|
453
|
+
estimatedFee,
|
|
454
|
+
crossChainFee
|
|
440
455
|
};
|
|
441
456
|
} else if (feeChainType === 'bitcoin') {
|
|
442
457
|
feeOptions = {
|