@subwallet/extension-base 1.3.17-0 → 1.3.18-1
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 +7 -2
- package/cjs/constants/index.js +6 -3
- package/cjs/core/logic-validation/request.js +26 -19
- package/cjs/core/logic-validation/transfer.js +18 -17
- package/cjs/koni/api/contract-handler/evm/web3.js +3 -3
- package/cjs/koni/background/handlers/Extension.js +269 -123
- package/cjs/koni/background/handlers/State.js +1 -8
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +1 -1
- package/cjs/services/balance-service/index.js +13 -0
- package/cjs/services/balance-service/transfer/smart-contract.js +47 -33
- package/cjs/services/balance-service/transfer/token.js +5 -4
- package/cjs/services/balance-service/transfer/xcm/availBridge.js +14 -18
- package/cjs/services/balance-service/transfer/xcm/index.js +30 -61
- package/cjs/services/balance-service/transfer/xcm/polygonBridge.js +13 -17
- package/cjs/services/balance-service/transfer/xcm/posBridge.js +20 -21
- package/cjs/services/balance-service/transfer/xcm/snowBridge.js +7 -7
- package/cjs/services/balance-service/transfer/xcm/utils.js +2 -2
- package/cjs/services/chain-service/constants.js +3 -3
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +7 -12
- package/cjs/services/earning-service/handlers/special.js +15 -4
- package/cjs/services/fee-service/interfaces.js +1 -0
- package/cjs/services/fee-service/service.js +111 -0
- package/cjs/services/fee-service/utils/index.js +99 -113
- package/cjs/services/storage-service/db-stores/Balance.js +3 -0
- package/cjs/services/swap-service/handler/asset-hub/handler.js +23 -7
- package/cjs/services/swap-service/handler/asset-hub/router.js +1 -1
- package/cjs/services/swap-service/handler/asset-hub/utils.js +4 -4
- package/cjs/services/swap-service/handler/base-handler.js +3 -1
- package/cjs/services/swap-service/handler/chainflip-handler.js +26 -5
- package/cjs/services/swap-service/handler/hydradx-handler.js +23 -8
- package/cjs/services/swap-service/handler/simpleswap-handler.js +24 -4
- package/cjs/services/swap-service/index.js +8 -8
- package/cjs/services/transaction-service/index.js +23 -3
- package/cjs/types/balance/transfer.js +1 -0
- package/cjs/types/fee/base.js +1 -0
- package/cjs/types/fee/evm.js +16 -1
- package/cjs/types/fee/index.js +37 -4
- package/cjs/types/fee/option.js +1 -0
- package/cjs/types/fee/subscription.js +1 -0
- package/cjs/types/fee/substrate.js +1 -0
- package/cjs/types/fee/ton.js +1 -0
- package/cjs/utils/fee/combine.js +50 -0
- package/cjs/utils/fee/index.js +27 -0
- package/cjs/utils/fee/transfer.js +374 -0
- package/cjs/utils/index.js +12 -0
- package/constants/index.d.ts +1 -0
- package/constants/index.js +1 -0
- package/core/logic-validation/request.js +17 -10
- package/core/logic-validation/transfer.d.ts +5 -5
- package/core/logic-validation/transfer.js +20 -19
- package/core/substrate/xcm-parser.d.ts +1 -1
- package/koni/api/contract-handler/evm/web3.js +3 -3
- package/koni/background/handlers/Extension.d.ts +3 -3
- package/koni/background/handlers/Extension.js +253 -107
- package/koni/background/handlers/State.js +1 -8
- package/package.json +55 -5
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +1 -1
- package/services/balance-service/index.d.ts +1 -0
- package/services/balance-service/index.js +13 -0
- package/services/balance-service/transfer/smart-contract.d.ts +24 -4
- package/services/balance-service/transfer/smart-contract.js +45 -33
- package/services/balance-service/transfer/token.js +6 -5
- package/services/balance-service/transfer/xcm/availBridge.d.ts +3 -2
- package/services/balance-service/transfer/xcm/availBridge.js +11 -15
- package/services/balance-service/transfer/xcm/index.d.ts +12 -11
- package/services/balance-service/transfer/xcm/index.js +29 -58
- package/services/balance-service/transfer/xcm/polygonBridge.d.ts +4 -3
- package/services/balance-service/transfer/xcm/polygonBridge.js +13 -17
- package/services/balance-service/transfer/xcm/posBridge.d.ts +4 -3
- package/services/balance-service/transfer/xcm/posBridge.js +18 -19
- package/services/balance-service/transfer/xcm/snowBridge.d.ts +2 -1
- package/services/balance-service/transfer/xcm/snowBridge.js +7 -7
- package/services/balance-service/transfer/xcm/utils.js +2 -2
- package/services/chain-service/constants.js +3 -3
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +7 -12
- package/services/earning-service/handlers/special.js +15 -4
- package/services/fee-service/interfaces.d.ts +5 -0
- package/services/fee-service/interfaces.js +1 -0
- package/services/fee-service/service.d.ts +4 -1
- package/services/fee-service/service.js +111 -0
- package/services/fee-service/utils/index.d.ts +8 -2
- package/services/fee-service/utils/index.js +92 -108
- package/services/storage-service/db-stores/Balance.d.ts +1 -0
- package/services/storage-service/db-stores/Balance.js +3 -0
- package/services/swap-service/handler/asset-hub/handler.d.ts +2 -1
- package/services/swap-service/handler/asset-hub/handler.js +23 -7
- package/services/swap-service/handler/asset-hub/router.js +2 -2
- package/services/swap-service/handler/asset-hub/utils.d.ts +1 -1
- package/services/swap-service/handler/asset-hub/utils.js +2 -2
- package/services/swap-service/handler/base-handler.d.ts +4 -1
- package/services/swap-service/handler/base-handler.js +3 -1
- package/services/swap-service/handler/chainflip-handler.d.ts +2 -1
- package/services/swap-service/handler/chainflip-handler.js +25 -4
- package/services/swap-service/handler/hydradx-handler.d.ts +2 -1
- package/services/swap-service/handler/hydradx-handler.js +22 -7
- package/services/swap-service/handler/simpleswap-handler.d.ts +2 -1
- package/services/swap-service/handler/simpleswap-handler.js +24 -4
- package/services/swap-service/index.js +8 -8
- package/services/transaction-service/index.js +23 -3
- package/services/transaction-service/types.d.ts +5 -4
- package/types/balance/transfer.d.ts +25 -0
- package/types/balance/transfer.js +1 -0
- package/types/fee/base.d.ts +8 -0
- package/types/fee/base.js +1 -0
- package/types/fee/evm.d.ts +46 -16
- package/types/fee/evm.js +10 -1
- package/types/fee/index.d.ts +4 -1
- package/types/fee/index.js +4 -1
- package/types/fee/option.d.ts +8 -0
- package/types/fee/option.js +1 -0
- package/types/fee/subscription.d.ts +12 -0
- package/types/fee/subscription.js +1 -0
- package/types/fee/substrate.d.ts +15 -0
- package/types/fee/substrate.js +1 -0
- package/types/fee/ton.d.ts +18 -0
- package/types/fee/ton.js +1 -0
- package/types/transaction/request.d.ts +13 -3
- package/utils/fee/combine.d.ts +12 -0
- package/utils/fee/combine.js +42 -0
- package/utils/fee/index.d.ts +2 -0
- package/utils/fee/index.js +5 -0
- package/utils/fee/transfer.d.ts +22 -0
- package/utils/fee/transfer.js +363 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +1 -0
|
@@ -7,13 +7,15 @@ import { RequestOptimalTransferProcess } from '@subwallet/extension-base/service
|
|
|
7
7
|
import { TonTransactionConfig } from '@subwallet/extension-base/services/balance-service/transfer/ton-transfer';
|
|
8
8
|
import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
|
|
9
9
|
import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
|
|
10
|
+
import { TokenHasBalanceInfo } from '@subwallet/extension-base/services/fee-service/interfaces';
|
|
10
11
|
import { _NotificationInfo, NotificationSetup } from '@subwallet/extension-base/services/inapp-notification-service/interfaces';
|
|
11
12
|
import { AppBannerData, AppConfirmationData, AppPopupData } from '@subwallet/extension-base/services/mkt-campaign-service/types';
|
|
12
13
|
import { AuthUrls } from '@subwallet/extension-base/services/request-service/types';
|
|
13
14
|
import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
|
|
14
15
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
15
16
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
16
|
-
import { AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, StorageDataInterface, SubmitYieldStepData, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
17
|
+
import { AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, StorageDataInterface, SubmitYieldStepData, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
18
|
+
import { RequestSubmitTransfer, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
|
|
17
19
|
import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
|
|
18
20
|
import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
|
|
19
21
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
@@ -1609,15 +1611,18 @@ export interface KoniRequestSignatures {
|
|
|
1609
1611
|
'pri(transaction.history.getSubscription)': [null, TransactionHistoryItem[], TransactionHistoryItem[]];
|
|
1610
1612
|
'pri(transaction.history.subscribe)': [RequestSubscribeHistory, ResponseSubscribeHistory, TransactionHistoryItem[]];
|
|
1611
1613
|
'pri(transfer.getMaxTransferable)': [RequestMaxTransferable, AmountData];
|
|
1614
|
+
'pri(transfer.subscribe)': [RequestSubscribeTransfer, ResponseSubscribeTransfer, ResponseSubscribeTransfer];
|
|
1612
1615
|
'pri(subscription.cancel)': [string, boolean];
|
|
1613
1616
|
'pri(freeBalance.get)': [RequestFreeBalance, AmountData];
|
|
1614
1617
|
'pri(freeBalance.subscribe)': [RequestFreeBalance, AmountDataWithId, AmountDataWithId];
|
|
1615
1618
|
'pri(accounts.checkTransfer)': [RequestCheckTransfer, ValidateTransactionResponse];
|
|
1616
|
-
'pri(accounts.transfer)': [
|
|
1619
|
+
'pri(accounts.transfer)': [RequestSubmitTransfer, SWTransactionResponse];
|
|
1617
1620
|
'pri(accounts.getOptimalTransferProcess)': [RequestOptimalTransferProcess, CommonOptimalPath];
|
|
1618
1621
|
'pri(accounts.approveSpending)': [TokenSpendingApprovalParams, SWTransactionResponse];
|
|
1619
1622
|
'pri(accounts.checkCrossChainTransfer)': [RequestCheckCrossChainTransfer, ValidateTransactionResponse];
|
|
1620
1623
|
'pri(accounts.crossChainTransfer)': [RequestCrossChainTransfer, SWTransactionResponse];
|
|
1624
|
+
'pri(customFee.getTokensCanPayFee)': [RequestGetTokensCanPayFee, TokenHasBalanceInfo[]];
|
|
1625
|
+
'pri(customFee.getAmountForPair)': [RequestGetAmountForPair, string];
|
|
1621
1626
|
'pri(confirmations.subscribe)': [RequestConfirmationsSubscribe, ConfirmationsQueue, ConfirmationsQueue];
|
|
1622
1627
|
'pri(confirmationsTon.subscribe)': [RequestConfirmationsSubscribeTon, ConfirmationsQueueTon, ConfirmationsQueueTon];
|
|
1623
1628
|
'pri(confirmations.complete)': [RequestConfirmationComplete, boolean];
|
package/cjs/constants/index.js
CHANGED
|
@@ -39,9 +39,10 @@ var _exportNames = {
|
|
|
39
39
|
NETWORK_MULTI_GAS_FEE: true,
|
|
40
40
|
ORDINAL_COLLECTION: true,
|
|
41
41
|
ORDINAL_METHODS: true,
|
|
42
|
-
PERMISSIONS_TO_REVOKE: true
|
|
42
|
+
PERMISSIONS_TO_REVOKE: true,
|
|
43
|
+
ASSET_HUB_CHAIN_SLUGS: true
|
|
43
44
|
};
|
|
44
|
-
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;
|
|
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.ASSET_HUB_CHAIN_SLUGS = exports.ALL_NETWORK_KEY = exports.ALL_GENESIS_HASH = exports.ALL_ACCOUNT_KEY = exports.ALL_ACCOUNT_AUTH_TYPES = exports.ACALA_REFRESH_CROWDLOAN_INTERVAL = void 0;
|
|
45
46
|
var _blockedActions = require("./blocked-actions");
|
|
46
47
|
Object.keys(_blockedActions).forEach(function (key) {
|
|
47
48
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -188,4 +189,6 @@ exports.ORDINAL_COLLECTION = ORDINAL_COLLECTION;
|
|
|
188
189
|
const ORDINAL_METHODS = ['drc-20', 'pol-20'];
|
|
189
190
|
exports.ORDINAL_METHODS = ORDINAL_METHODS;
|
|
190
191
|
const PERMISSIONS_TO_REVOKE = ['eth_accounts'];
|
|
191
|
-
exports.PERMISSIONS_TO_REVOKE = PERMISSIONS_TO_REVOKE;
|
|
192
|
+
exports.PERMISSIONS_TO_REVOKE = PERMISSIONS_TO_REVOKE;
|
|
193
|
+
const ASSET_HUB_CHAIN_SLUGS = ['paseo_assethub', 'westend_assethub', 'rococo_assethub', 'statemine', 'statemint'];
|
|
194
|
+
exports.ASSET_HUB_CHAIN_SLUGS = ASSET_HUB_CHAIN_SLUGS;
|
|
@@ -20,13 +20,13 @@ var _ethSigUtil = require("@metamask/eth-sig-util");
|
|
|
20
20
|
var _EvmProviderError = require("@subwallet/extension-base/background/errors/EvmProviderError");
|
|
21
21
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
22
22
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
23
|
-
var _utils = require("@subwallet/extension-base/services/fee-service/utils");
|
|
24
23
|
var _types = require("@subwallet/extension-base/types");
|
|
25
|
-
var
|
|
24
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
26
25
|
var _parseTransaction = require("@subwallet/extension-base/utils/eth/parseTransaction");
|
|
26
|
+
var _getId = require("@subwallet/extension-base/utils/getId");
|
|
27
27
|
var _keyring = require("@subwallet/keyring");
|
|
28
28
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
29
|
-
var
|
|
29
|
+
var _utils2 = require("@walletconnect/utils");
|
|
30
30
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
31
31
|
var _bn = _interopRequireDefault(require("bn.js"));
|
|
32
32
|
var _i18next = require("i18next");
|
|
@@ -163,7 +163,7 @@ async function validationAuthMiddleware(koni, url, payload) {
|
|
|
163
163
|
errors.push(new Error(message));
|
|
164
164
|
} else {
|
|
165
165
|
const authList = await koni.getAuthList();
|
|
166
|
-
const authInfo = authList[(0,
|
|
166
|
+
const authInfo = authList[(0, _utils.stripUrl)(url)];
|
|
167
167
|
if (!authInfo || !authInfo.isAllowed || !authInfo.isAllowedMap[payload.pair.address]) {
|
|
168
168
|
payload.errorPosition = 'dApp';
|
|
169
169
|
const [message] = convertErrorMessage('Account not in allowed list', '');
|
|
@@ -234,7 +234,7 @@ async function validationConnectMiddleware(koni, url, payload) {
|
|
|
234
234
|
|
|
235
235
|
// Calculate transaction data
|
|
236
236
|
try {
|
|
237
|
-
await Promise.race([checkProviderConnected(), (0,
|
|
237
|
+
await Promise.race([checkProviderConnected(), (0, _utils.wait)(3000).then(async () => {
|
|
238
238
|
if (!currentProviderConnected) {
|
|
239
239
|
await koni.chainService.initSingleApi(networkKey);
|
|
240
240
|
await checkProviderConnected();
|
|
@@ -307,7 +307,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
307
307
|
if (transaction.value) {
|
|
308
308
|
try {
|
|
309
309
|
const valueBn = new _bignumber.default(transaction.value.toString());
|
|
310
|
-
if (!valueBn.eq(
|
|
310
|
+
if (!valueBn.eq(_utils.BN_ZERO)) {
|
|
311
311
|
handleError('Recipient address not found');
|
|
312
312
|
}
|
|
313
313
|
} catch (e) {
|
|
@@ -331,7 +331,7 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
331
331
|
|
|
332
332
|
// Calculate transaction data
|
|
333
333
|
try {
|
|
334
|
-
await Promise.race([getTransactionGas(), (0,
|
|
334
|
+
await Promise.race([getTransactionGas(), (0, _utils.wait)(3000).then(async () => {
|
|
335
335
|
if (!transaction.gas) {
|
|
336
336
|
await koni.chainService.initSingleApi(networkKey || '');
|
|
337
337
|
await getTransactionGas();
|
|
@@ -351,15 +351,22 @@ async function validationEvmDataTransactionMiddleware(koni, url, payload) {
|
|
|
351
351
|
estimateGas = new _bignumber.default(transactionParams.gasPrice).multipliedBy(transaction.gas).toFixed(0);
|
|
352
352
|
} else {
|
|
353
353
|
try {
|
|
354
|
-
const
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
estimateGas =
|
|
354
|
+
const gasLimit = transaction.gas || (await evmApi.api.eth.estimateGas(transaction));
|
|
355
|
+
const id = (0, _getId.getId)();
|
|
356
|
+
const feeInfo = await koni.feeService.subscribeChainFee(id, transaction.chain || '', 'evm');
|
|
357
|
+
const feeCombine = (0, _utils.combineEthFee)(feeInfo);
|
|
358
|
+
if (transaction.maxFeePerGas) {
|
|
359
|
+
estimateGas = new _bignumber.default(transaction.maxFeePerGas.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
360
|
+
} else if (transaction.gasPrice) {
|
|
361
|
+
estimateGas = new _bignumber.default(transaction.gasPrice.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
360
362
|
} else {
|
|
361
|
-
|
|
362
|
-
|
|
363
|
+
if (feeCombine.maxFeePerGas) {
|
|
364
|
+
const maxFee = new _bignumber.default(feeCombine.maxFeePerGas); // TODO: Need review
|
|
365
|
+
|
|
366
|
+
estimateGas = maxFee.multipliedBy(gasLimit).toFixed(0);
|
|
367
|
+
} else if (feeCombine.gasPrice) {
|
|
368
|
+
estimateGas = new _bignumber.default(feeCombine.gasPrice || 0).multipliedBy(gasLimit).toFixed(0);
|
|
369
|
+
}
|
|
363
370
|
}
|
|
364
371
|
} catch (e) {
|
|
365
372
|
handleError(e.message);
|
|
@@ -419,7 +426,7 @@ async function validationEvmSignMessageMiddleware(koni, url, payload_) {
|
|
|
419
426
|
const {
|
|
420
427
|
promise,
|
|
421
428
|
resolve
|
|
422
|
-
} = (0,
|
|
429
|
+
} = (0, _utils.createPromiseHandler)();
|
|
423
430
|
let hashPayload = '';
|
|
424
431
|
let canSign = false;
|
|
425
432
|
const handleError = message_ => {
|
|
@@ -502,14 +509,14 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
502
509
|
const {
|
|
503
510
|
promise,
|
|
504
511
|
resolve
|
|
505
|
-
} = (0,
|
|
512
|
+
} = (0, _utils.createPromiseHandler)();
|
|
506
513
|
const {
|
|
507
514
|
address,
|
|
508
515
|
errors
|
|
509
516
|
} = payload;
|
|
510
517
|
if (!topic) {
|
|
511
518
|
payload.errorPosition = 'dApp';
|
|
512
|
-
errors.push(new Error((0,
|
|
519
|
+
errors.push(new Error((0, _utils2.getSdkError)('UNAUTHORIZED_EXTEND_REQUEST').message));
|
|
513
520
|
} else {
|
|
514
521
|
const requestSession = koni.walletConnectService.getSession(topic);
|
|
515
522
|
let sessionAccounts = [];
|
|
@@ -532,7 +539,7 @@ function validationAuthWCMiddleware(koni, url, payload, topic) {
|
|
|
532
539
|
const [message] = convertErrorMessage('Unable to find account');
|
|
533
540
|
errors.push(new Error(message));
|
|
534
541
|
}
|
|
535
|
-
const isExitsAccount = sessionAccounts.find(account => (0,
|
|
542
|
+
const isExitsAccount = sessionAccounts.find(account => (0, _utils.isSameAddress)(account, address));
|
|
536
543
|
if (!isExitsAccount) {
|
|
537
544
|
payload.errorPosition = 'dApp';
|
|
538
545
|
const [message] = convertErrorMessage('Account not in allowed list');
|
|
@@ -38,15 +38,10 @@ var _utilCrypto = require("@polkadot/util-crypto");
|
|
|
38
38
|
// normal transfer
|
|
39
39
|
function validateTransferRequest(tokenInfo, from, to, value, transferAll) {
|
|
40
40
|
const errors = [];
|
|
41
|
-
const keypair = _uiKeyring.keyring.getPair(from);
|
|
42
|
-
let transferValue;
|
|
43
41
|
if (!transferAll) {
|
|
44
42
|
if (value === undefined) {
|
|
45
43
|
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Transfer amount is required')));
|
|
46
44
|
}
|
|
47
|
-
if (value) {
|
|
48
|
-
transferValue = new _bignumber.default(value);
|
|
49
|
-
}
|
|
50
45
|
}
|
|
51
46
|
if (!tokenInfo) {
|
|
52
47
|
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found token from registry')));
|
|
@@ -57,7 +52,7 @@ function validateTransferRequest(tokenInfo, from, to, value, transferAll) {
|
|
|
57
52
|
if ((0, _keyring.isTonAddress)(from) && (0, _keyring.isTonAddress)(to) && (0, _utils2._isTokenTonSmartContract)(tokenInfo) && (0, _utils2._getContractAddressOfToken)(tokenInfo).length === 0) {
|
|
58
53
|
errors.push(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)('Not found TEP74 address for this token')));
|
|
59
54
|
}
|
|
60
|
-
return
|
|
55
|
+
return errors;
|
|
61
56
|
}
|
|
62
57
|
function additionalValidateTransferForRecipient(sendingTokenInfo, nativeTokenInfo, extrinsicType, receiverSendingTokenKeepAliveBalance, transferAmount, senderSendingTokenTransferable, receiverSystemAccountInfo, isSendingTokenSufficient) {
|
|
63
58
|
const sendingTokenMinAmount = BigInt((0, _utils2._getTokenMinAmount)(sendingTokenInfo));
|
|
@@ -119,11 +114,10 @@ function additionalValidateTransferForRecipient(sendingTokenInfo, nativeTokenInf
|
|
|
119
114
|
function validateXcmTransferRequest(destTokenInfo, sender, sendingValue) {
|
|
120
115
|
const errors = [];
|
|
121
116
|
const keypair = _uiKeyring.keyring.getPair(sender);
|
|
122
|
-
const transferValue = new _bignumber.default(sendingValue);
|
|
123
117
|
if (!destTokenInfo) {
|
|
124
118
|
errors.push(new _TransactionError.TransactionError(_types.TransferTxErrorType.INVALID_TOKEN, (0, _i18next.t)('Not found token from registry')));
|
|
125
119
|
}
|
|
126
|
-
return [errors, keypair
|
|
120
|
+
return [errors, keypair];
|
|
127
121
|
}
|
|
128
122
|
function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, sendingAmount, senderTransferable, receiverNativeBalance, destChainInfo) {
|
|
129
123
|
let isSnowBridge = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
@@ -350,7 +344,7 @@ function checkSupportForTransaction(validationResponse, transaction) {
|
|
|
350
344
|
}
|
|
351
345
|
}
|
|
352
346
|
}
|
|
353
|
-
async function estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi) {
|
|
347
|
+
async function estimateFeeForTransaction(validationResponse, transaction, chainInfo, evmApi, substrateApi, feeInfo, nativeTokenInfo, tokenPayFeeInfo, isTransferLocalTokenAndPayThatTokenAsFee) {
|
|
354
348
|
const estimateFee = {
|
|
355
349
|
symbol: '',
|
|
356
350
|
decimals: 0,
|
|
@@ -371,21 +365,21 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
371
365
|
estimateFee.value = transaction.estimateFee; // todo: might need to update logic estimate fee inside for future actions excluding normal transfer Ton and Jetton
|
|
372
366
|
} else {
|
|
373
367
|
const gasLimit = transaction.gas || (await evmApi.api.eth.estimateGas(transaction));
|
|
374
|
-
const
|
|
368
|
+
const feeCombine = (0, _utils4.combineEthFee)(feeInfo, validationResponse.feeOption, validationResponse.feeCustom);
|
|
375
369
|
if (transaction.maxFeePerGas) {
|
|
376
370
|
estimateFee.value = new _bignumber.default(transaction.maxFeePerGas.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
377
371
|
} else if (transaction.gasPrice) {
|
|
378
|
-
estimateFee.value = new _bignumber.default(
|
|
372
|
+
estimateFee.value = new _bignumber.default(transaction.gasPrice.toString()).multipliedBy(gasLimit).toFixed(0);
|
|
379
373
|
} else {
|
|
380
|
-
if (
|
|
381
|
-
const maxFee =
|
|
374
|
+
if (feeCombine.maxFeePerGas) {
|
|
375
|
+
const maxFee = new _bignumber.default(feeCombine.maxFeePerGas); // TODO: Need review
|
|
382
376
|
|
|
383
377
|
estimateFee.value = maxFee.multipliedBy(gasLimit).toFixed(0);
|
|
384
|
-
} else {
|
|
385
|
-
estimateFee.value = new _bignumber.default(
|
|
378
|
+
} else if (feeCombine.gasPrice) {
|
|
379
|
+
estimateFee.value = new _bignumber.default(feeCombine.gasPrice || 0).multipliedBy(gasLimit).toFixed(0);
|
|
386
380
|
}
|
|
387
381
|
}
|
|
388
|
-
estimateFee.tooHigh =
|
|
382
|
+
estimateFee.tooHigh = feeInfo.busyNetwork;
|
|
389
383
|
}
|
|
390
384
|
} catch (e) {
|
|
391
385
|
const error = e;
|
|
@@ -394,6 +388,12 @@ async function estimateFeeForTransaction(validationResponse, transaction, chainI
|
|
|
394
388
|
}
|
|
395
389
|
}
|
|
396
390
|
}
|
|
391
|
+
if (tokenPayFeeInfo) {
|
|
392
|
+
const estimatedFeeAmount = isTransferLocalTokenAndPayThatTokenAsFee ? (BigInt(estimateFee.value) * BigInt(_utils3.FEE_COVERAGE_PERCENTAGE_SPECIAL_CASE) / BigInt(100)).toString() : estimateFee.value;
|
|
393
|
+
estimateFee.decimals = tokenPayFeeInfo.decimals || 0;
|
|
394
|
+
estimateFee.symbol = tokenPayFeeInfo.symbol;
|
|
395
|
+
estimateFee.value = await (0, _utils3.calculateToAmountByReservePool)(substrateApi.api, nativeTokenInfo, tokenPayFeeInfo, estimatedFeeAmount);
|
|
396
|
+
}
|
|
397
397
|
return estimateFee;
|
|
398
398
|
}
|
|
399
399
|
function checkSigningAccountForTransaction(validationResponse, chainInfoMap) {
|
|
@@ -432,9 +432,10 @@ function checkBalanceWithTransactionFee(validationResponse, transactionInput, na
|
|
|
432
432
|
edAsWarning,
|
|
433
433
|
extrinsicType,
|
|
434
434
|
isTransferAll,
|
|
435
|
+
nonNativeTokenPayFeeSlug,
|
|
435
436
|
skipFeeValidation
|
|
436
437
|
} = transactionInput;
|
|
437
|
-
if (skipFeeValidation) {
|
|
438
|
+
if (skipFeeValidation || nonNativeTokenPayFeeSlug) {
|
|
438
439
|
return;
|
|
439
440
|
}
|
|
440
441
|
const bnFee = new _bignumber.default(validationResponse.estimateFee.value);
|
|
@@ -9,6 +9,7 @@ exports.getERC20SpendingApprovalTx = getERC20SpendingApprovalTx;
|
|
|
9
9
|
exports.getWeb3Contract = getWeb3Contract;
|
|
10
10
|
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
11
11
|
var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
|
|
12
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
12
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
13
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
14
15
|
|
|
@@ -34,7 +35,6 @@ async function getERC20Allowance(spender, owner, contractAddress, evmApi) {
|
|
|
34
35
|
return await allowanceCall.call();
|
|
35
36
|
}
|
|
36
37
|
async function getERC20SpendingApprovalTx(spender, owner, contractAddress, evmApi) {
|
|
37
|
-
var _priority$maxFeePerGa, _priority$maxPriority;
|
|
38
38
|
let amount = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '115792089237316195423570985008687907853269984665640564039457584007913129639935';
|
|
39
39
|
const tokenContract = getERC20Contract(contractAddress, evmApi);
|
|
40
40
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
@@ -46,13 +46,13 @@ async function getERC20SpendingApprovalTx(spender, owner, contractAddress, evmAp
|
|
|
46
46
|
from: owner
|
|
47
47
|
});
|
|
48
48
|
const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
|
|
49
|
+
const feeCombine = (0, _utils3.combineEthFee)(priority);
|
|
49
50
|
return {
|
|
50
51
|
from: owner,
|
|
51
52
|
to: contractAddress,
|
|
52
53
|
data: approveEncodedCall,
|
|
53
54
|
gas: gasLimit,
|
|
54
55
|
gasPrice: priority.gasPrice,
|
|
55
|
-
|
|
56
|
-
maxPriorityFeePerGas: (_priority$maxPriority = priority.maxPriorityFeePerGas) === null || _priority$maxPriority === void 0 ? void 0 : _priority$maxPriority.toString()
|
|
56
|
+
...feeCombine
|
|
57
57
|
};
|
|
58
58
|
}
|