@subwallet/extension-base 1.3.23-0 → 1.3.24-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 +2 -2
- package/cjs/constants/environment.js +1 -1
- package/cjs/constants/index.js +21 -4
- package/cjs/core/logic-validation/transfer.js +23 -8
- package/cjs/koni/background/handlers/Extension.js +109 -89
- package/cjs/koni/background/handlers/State.js +2 -2
- package/cjs/koni/background/handlers/Tabs.js +1 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/transfer/smart-contract.js +24 -3
- package/cjs/services/chain-service/index.js +11 -0
- package/cjs/services/fee-service/utils/tokenPayFee.js +151 -0
- package/cjs/services/request-service/handler/MetadataRequestHandler.js +5 -13
- package/cjs/services/request-service/index.js +2 -2
- package/cjs/services/transaction-service/index.js +8 -5
- package/cjs/utils/fee/transfer.js +47 -14
- package/constants/environment.js +1 -1
- package/constants/index.d.ts +6 -1
- package/constants/index.js +14 -1
- package/core/logic-validation/transfer.d.ts +1 -1
- package/core/logic-validation/transfer.js +25 -10
- package/koni/background/handlers/Extension.js +82 -62
- package/koni/background/handlers/State.d.ts +1 -1
- package/koni/background/handlers/State.js +2 -2
- package/koni/background/handlers/Tabs.js +1 -1
- package/package.json +11 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/transfer/smart-contract.d.ts +4 -2
- package/services/balance-service/transfer/smart-contract.js +24 -3
- package/services/chain-service/index.d.ts +1 -0
- package/services/chain-service/index.js +12 -1
- package/services/fee-service/interfaces.d.ts +25 -0
- package/services/fee-service/utils/tokenPayFee.d.ts +8 -0
- package/services/fee-service/utils/tokenPayFee.js +141 -0
- package/services/request-service/handler/MetadataRequestHandler.d.ts +1 -1
- package/services/request-service/handler/MetadataRequestHandler.js +5 -13
- package/services/request-service/index.d.ts +1 -1
- package/services/request-service/index.js +2 -2
- package/services/transaction-service/index.js +10 -7
- package/types/fee/option.d.ts +1 -1
- package/utils/fee/transfer.d.ts +1 -1
- package/utils/fee/transfer.js +46 -13
|
@@ -8,7 +8,7 @@ import { CardanoTransactionConfig } from '@subwallet/extension-base/services/bal
|
|
|
8
8
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
9
9
|
import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
|
|
10
10
|
import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
|
|
11
|
-
import {
|
|
11
|
+
import { TokenPayFeeInfo } from '@subwallet/extension-base/services/fee-service/interfaces';
|
|
12
12
|
import { _NotificationInfo, NotificationSetup } from '@subwallet/extension-base/services/inapp-notification-service/interfaces';
|
|
13
13
|
import { AppBannerData, AppConfirmationData, AppPopupData } from '@subwallet/extension-base/services/mkt-campaign-service/types';
|
|
14
14
|
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
|
|
@@ -1692,7 +1692,7 @@ export interface KoniRequestSignatures {
|
|
|
1692
1692
|
'pri(accounts.approveSpending)': [TokenSpendingApprovalParams, SWTransactionResponse];
|
|
1693
1693
|
'pri(accounts.checkCrossChainTransfer)': [RequestCheckCrossChainTransfer, ValidateTransactionResponse];
|
|
1694
1694
|
'pri(accounts.crossChainTransfer)': [RequestCrossChainTransfer, SWTransactionResponse];
|
|
1695
|
-
'pri(customFee.getTokensCanPayFee)': [RequestGetTokensCanPayFee,
|
|
1695
|
+
'pri(customFee.getTokensCanPayFee)': [RequestGetTokensCanPayFee, TokenPayFeeInfo];
|
|
1696
1696
|
'pri(customFee.getAmountForPair)': [RequestGetAmountForPair, string];
|
|
1697
1697
|
'pri(confirmations.subscribe)': [RequestConfirmationsSubscribe, ConfirmationsQueue, ConfirmationsQueue];
|
|
1698
1698
|
'pri(confirmationsTon.subscribe)': [RequestConfirmationsSubscribeTon, ConfirmationsQueueTon, ConfirmationsQueueTon];
|
|
@@ -11,5 +11,5 @@ const PRODUCTION_BRANCHES = ['master', 'webapp', 'webapp-dev'];
|
|
|
11
11
|
const branchName = process.env.BRANCH_NAME || 'subwallet-dev';
|
|
12
12
|
const isProductionMode = PRODUCTION_BRANCHES.indexOf(branchName) > -1;
|
|
13
13
|
exports.isProductionMode = isProductionMode;
|
|
14
|
-
const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://
|
|
14
|
+
const BACKEND_API_URL = process.env.SUBWALLET_API || (isProductionMode ? 'https://sw-services.subwallet.app/api' : 'https://be-dev.subwallet.app/api');
|
|
15
15
|
exports.BACKEND_API_URL = BACKEND_API_URL;
|
package/cjs/constants/index.js
CHANGED
|
@@ -40,9 +40,11 @@ var _exportNames = {
|
|
|
40
40
|
ORDINAL_COLLECTION: true,
|
|
41
41
|
ORDINAL_METHODS: true,
|
|
42
42
|
PERMISSIONS_TO_REVOKE: true,
|
|
43
|
-
|
|
43
|
+
_SUPPORT_TOKEN_PAY_FEE_GROUP: true,
|
|
44
|
+
getSupportTokenPayFeeChain: true,
|
|
45
|
+
isChainSupportTokenPayFee: true
|
|
44
46
|
};
|
|
45
|
-
exports.XCM_MIN_AMOUNT_RATIO = exports.XCM_FEE_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.PERMISSIONS_TO_REVOKE = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_MKT_CAMPAIGN_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_LISTEN_AVAIL_BRIDGE_CLAIM = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BITTENSOR_REFRESH_STAKE_INFO = exports.BITTENSOR_REFRESH_STAKE_APY = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.
|
|
47
|
+
exports.isChainSupportTokenPayFee = exports.getSupportTokenPayFeeChain = exports._SUPPORT_TOKEN_PAY_FEE_GROUP = exports.XCM_MIN_AMOUNT_RATIO = exports.XCM_FEE_RATIO = exports.SUB_TOKEN_REFRESH_BALANCE_INTERVAL = exports.PERMISSIONS_TO_REVOKE = exports.ORDINAL_METHODS = exports.ORDINAL_COLLECTION = exports.NETWORK_MULTI_GAS_FEE = exports.MANTA_PAY_BALANCE_INTERVAL = exports.IGNORE_QR_SIGNER = exports.IGNORE_GET_SUBSTRATE_FEATURES_LIST = exports.GAS_PRICE_RATIO = exports.CRON_SYNC_MANTA_PAY = exports.CRON_REFRESH_STAKING_REWARD_INTERVAL = exports.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL = exports.CRON_REFRESH_PRICE_INTERVAL = exports.CRON_REFRESH_NFT_INTERVAL = exports.CRON_REFRESH_MKT_CAMPAIGN_INTERVAL = exports.CRON_REFRESH_HISTORY_INTERVAL = exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = exports.CRON_REFRESH_CHAIN_STAKING_METADATA = exports.CRON_REFRESH_CHAIN_NOMINATOR_METADATA = exports.CRON_RECOVER_HISTORY_INTERVAL = exports.CRON_LISTEN_AVAIL_BRIDGE_CLAIM = exports.CRON_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = exports.BITTENSOR_REFRESH_STAKE_INFO = exports.BITTENSOR_REFRESH_STAKE_APY = exports.BASE_SECOND_INTERVAL = exports.BASE_MINUTE_INTERVAL = exports.ASTAR_REFRESH_BALANCE_INTERVAL = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ALL_ACCOUNT_AUTH_TYPES = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
|
|
46
48
|
var _blockedActions = require("./blocked-actions");
|
|
47
49
|
Object.keys(_blockedActions).forEach(function (key) {
|
|
48
50
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -190,5 +192,20 @@ const ORDINAL_METHODS = ['drc-20', 'pol-20'];
|
|
|
190
192
|
exports.ORDINAL_METHODS = ORDINAL_METHODS;
|
|
191
193
|
const PERMISSIONS_TO_REVOKE = ['eth_accounts'];
|
|
192
194
|
exports.PERMISSIONS_TO_REVOKE = PERMISSIONS_TO_REVOKE;
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
+
const _SUPPORT_TOKEN_PAY_FEE_GROUP = {
|
|
196
|
+
assetHub: ['paseo_assethub', 'westend_assethub', 'rococo_assethub', 'statemine', 'statemint'],
|
|
197
|
+
hydration: ['hydradx_main', 'hydradx_rococo']
|
|
198
|
+
};
|
|
199
|
+
exports._SUPPORT_TOKEN_PAY_FEE_GROUP = _SUPPORT_TOKEN_PAY_FEE_GROUP;
|
|
200
|
+
const getSupportTokenPayFeeChain = () => {
|
|
201
|
+
return Object.values(_SUPPORT_TOKEN_PAY_FEE_GROUP).flat();
|
|
202
|
+
};
|
|
203
|
+
exports.getSupportTokenPayFeeChain = getSupportTokenPayFeeChain;
|
|
204
|
+
const isChainSupportTokenPayFee = chainSlug => {
|
|
205
|
+
if (!chainSlug) {
|
|
206
|
+
console.error('You must provide chain slug!');
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
return getSupportTokenPayFeeChain().includes(chainSlug);
|
|
210
|
+
};
|
|
211
|
+
exports.isChainSupportTokenPayFee = isChainSupportTokenPayFee;
|
|
@@ -348,7 +348,7 @@ function checkSupportForTransaction(validationResponse, transaction) {
|
|
|
348
348
|
}
|
|
349
349
|
}
|
|
350
350
|
}
|
|
351
|
-
async function estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi, substrateApi, feeInfo, nativeTokenInfo,
|
|
351
|
+
async function estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi, substrateApi, priceMap, feeInfo, nativeTokenInfo, nonNativeTokenPayFeeInfo, isTransferLocalTokenAndPayThatTokenAsFee) {
|
|
352
352
|
const estimateFee = {
|
|
353
353
|
symbol: '',
|
|
354
354
|
decimals: 0,
|
|
@@ -394,11 +394,25 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
394
394
|
}
|
|
395
395
|
}
|
|
396
396
|
}
|
|
397
|
-
|
|
397
|
+
const isCustomTokenPayFeeAssetHub = !!nonNativeTokenPayFeeInfo && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.assetHub.includes(nonNativeTokenPayFeeInfo.originChain);
|
|
398
|
+
const isCustomTokenPayFeeHydration = !!nonNativeTokenPayFeeInfo && _constants._SUPPORT_TOKEN_PAY_FEE_GROUP.hydration.includes(nonNativeTokenPayFeeInfo.originChain);
|
|
399
|
+
if (isCustomTokenPayFeeAssetHub) {
|
|
398
400
|
const estimatedFeeAmount = isTransferLocalTokenAndPayThatTokenAsFee ? (BigInt(estimateFee.value) * BigInt(_utils4.FEE_COVERAGE_PERCENTAGE_SPECIAL_CASE) / BigInt(100)).toString() : estimateFee.value;
|
|
399
|
-
estimateFee.decimals =
|
|
400
|
-
estimateFee.symbol =
|
|
401
|
-
estimateFee.value = await (0, _utils4.calculateToAmountByReservePool)(substrateApi.api, nativeTokenInfo,
|
|
401
|
+
estimateFee.decimals = (0, _utils3._getAssetDecimals)(nonNativeTokenPayFeeInfo);
|
|
402
|
+
estimateFee.symbol = (0, _utils3._getAssetSymbol)(nonNativeTokenPayFeeInfo);
|
|
403
|
+
estimateFee.value = await (0, _utils4.calculateToAmountByReservePool)(substrateApi.api, nativeTokenInfo, nonNativeTokenPayFeeInfo, estimatedFeeAmount);
|
|
404
|
+
}
|
|
405
|
+
if (isCustomTokenPayFeeHydration) {
|
|
406
|
+
const nativePriceId = (0, _utils3._getAssetPriceId)(nativeTokenInfo);
|
|
407
|
+
const nativeDecimals = (0, _utils3._getAssetDecimals)(nativeTokenInfo);
|
|
408
|
+
const nativePrice = priceMap[nativePriceId];
|
|
409
|
+
const tokenPriceId = (0, _utils3._getAssetPriceId)(nonNativeTokenPayFeeInfo);
|
|
410
|
+
const tokenDecimals = (0, _utils3._getAssetDecimals)(nonNativeTokenPayFeeInfo);
|
|
411
|
+
const tokenPrice = priceMap[tokenPriceId];
|
|
412
|
+
const rate = new _bignumber.default(nativePrice).div(tokenPrice).multipliedBy(10 ** (tokenDecimals - nativeDecimals)).toFixed();
|
|
413
|
+
estimateFee.decimals = (0, _utils3._getAssetDecimals)(nonNativeTokenPayFeeInfo);
|
|
414
|
+
estimateFee.symbol = (0, _utils3._getAssetSymbol)(nonNativeTokenPayFeeInfo);
|
|
415
|
+
estimateFee.value = new _bignumber.default(estimateFee.value).multipliedBy(rate).toFixed(0);
|
|
402
416
|
}
|
|
403
417
|
return estimateFee;
|
|
404
418
|
}
|
|
@@ -438,10 +452,11 @@ function checkBalanceWithTransactionFee(validationResponse, transactionInput, na
|
|
|
438
452
|
edAsWarning,
|
|
439
453
|
extrinsicType,
|
|
440
454
|
isTransferAll,
|
|
441
|
-
|
|
442
|
-
|
|
455
|
+
skipFeeValidation,
|
|
456
|
+
tokenPayFeeSlug
|
|
443
457
|
} = transactionInput;
|
|
444
|
-
if (skipFeeValidation ||
|
|
458
|
+
if (skipFeeValidation || tokenPayFeeSlug && !(0, _utils3._isNativeTokenBySlug)(tokenPayFeeSlug)) {
|
|
459
|
+
// todo: need improve: input should be balance of fee token and check this again
|
|
445
460
|
return;
|
|
446
461
|
}
|
|
447
462
|
const bnFee = new _bignumber.default(validationResponse.estimateFee.value);
|