@subwallet/extension-base 1.3.26-0 → 1.3.27-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 +4 -3
- package/background/warnings/TransactionWarning.d.ts +2 -0
- package/background/warnings/TransactionWarning.js +16 -1
- package/cjs/background/warnings/TransactionWarning.js +15 -0
- package/cjs/core/logic-validation/index.js +32 -1
- package/cjs/core/utils.js +25 -3
- package/cjs/koni/background/handlers/Extension.js +86 -94
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/utils/patch.js +1 -1
- package/cjs/services/swap-service/handler/asset-hub/handler.js +182 -40
- package/cjs/services/swap-service/handler/asset-hub/utils.js +3 -0
- package/cjs/services/swap-service/handler/base-handler.js +326 -12
- package/cjs/services/swap-service/handler/chainflip-handler.js +80 -16
- package/cjs/services/swap-service/handler/hydradx-handler.js +174 -30
- package/cjs/services/swap-service/handler/simpleswap-handler.js +50 -1
- package/cjs/services/swap-service/handler/uniswap-handler.js +47 -1
- package/cjs/services/swap-service/index.js +191 -27
- package/cjs/services/swap-service/interface.js +14 -0
- package/cjs/services/swap-service/utils.js +81 -5
- package/cjs/services/transaction-service/utils.js +4 -1
- package/core/logic-validation/index.d.ts +4 -0
- package/core/logic-validation/index.js +22 -1
- package/core/utils.d.ts +3 -0
- package/core/utils.js +22 -2
- package/koni/background/handlers/Extension.d.ts +2 -2
- package/koni/background/handlers/Extension.js +20 -28
- package/package.json +12 -7
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/process.d.ts +3 -3
- package/services/balance-service/index.d.ts +2 -3
- package/services/chain-service/utils/patch.js +1 -1
- package/services/swap-service/handler/asset-hub/handler.d.ts +6 -3
- package/services/swap-service/handler/asset-hub/handler.js +170 -28
- package/services/swap-service/handler/asset-hub/utils.js +3 -0
- package/services/swap-service/handler/base-handler.d.ts +12 -3
- package/services/swap-service/handler/base-handler.js +329 -15
- package/services/swap-service/handler/chainflip-handler.d.ts +4 -3
- package/services/swap-service/handler/chainflip-handler.js +74 -10
- package/services/swap-service/handler/hydradx-handler.d.ts +8 -3
- package/services/swap-service/handler/hydradx-handler.js +176 -32
- package/services/swap-service/handler/simpleswap-handler.d.ts +4 -2
- package/services/swap-service/handler/simpleswap-handler.js +50 -1
- package/services/swap-service/handler/uniswap-handler.d.ts +4 -2
- package/services/swap-service/handler/uniswap-handler.js +47 -1
- package/services/swap-service/index.d.ts +15 -5
- package/services/swap-service/index.js +182 -18
- package/services/swap-service/interface.d.ts +9 -0
- package/services/swap-service/interface.js +8 -0
- package/services/swap-service/utils.d.ts +9 -1
- package/services/swap-service/utils.js +74 -4
- package/services/transaction-service/utils.js +4 -1
- package/types/service-base.d.ts +6 -2
- package/types/swap/index.d.ts +34 -6
- package/types/transaction/process.d.ts +0 -6
|
@@ -15,7 +15,7 @@ import { AuthUrls } from '@subwallet/extension-base/services/request-service/typ
|
|
|
15
15
|
import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
|
|
16
16
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
17
17
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
18
|
-
import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo,
|
|
18
|
+
import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalSwapPath, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParamsV2, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, 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, RequestSubmitProcessTransaction, RequestSubscribeProcessById, 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, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
19
19
|
import { RequestSubmitTransfer, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
|
|
20
20
|
import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
|
|
21
21
|
import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
|
|
@@ -1696,7 +1696,7 @@ export interface KoniRequestSignatures {
|
|
|
1696
1696
|
'pri(freeBalance.subscribe)': [RequestFreeBalance, AmountDataWithId, AmountDataWithId];
|
|
1697
1697
|
'pri(accounts.checkTransfer)': [RequestCheckTransfer, ValidateTransactionResponse];
|
|
1698
1698
|
'pri(accounts.transfer)': [RequestSubmitTransfer, SWTransactionResponse];
|
|
1699
|
-
'pri(accounts.getOptimalTransferProcess)': [RequestOptimalTransferProcess,
|
|
1699
|
+
'pri(accounts.getOptimalTransferProcess)': [RequestOptimalTransferProcess, CommonOptimalTransferPath];
|
|
1700
1700
|
'pri(accounts.approveSpending)': [TokenSpendingApprovalParams, SWTransactionResponse];
|
|
1701
1701
|
'pri(accounts.checkCrossChainTransfer)': [RequestCheckCrossChainTransfer, ValidateTransactionResponse];
|
|
1702
1702
|
'pri(accounts.crossChainTransfer)': [RequestCrossChainTransfer, SWTransactionResponse];
|
|
@@ -1778,8 +1778,9 @@ export interface KoniRequestSignatures {
|
|
|
1778
1778
|
'pri(database.setLocalStorage)': [StorageDataInterface, boolean];
|
|
1779
1779
|
'pri(database.getLocalStorage)': [string, string | null];
|
|
1780
1780
|
'pri(swapService.subscribePairs)': [null, SwapPair[], SwapPair[]];
|
|
1781
|
-
'pri(swapService.
|
|
1781
|
+
'pri(swapService.getOptimalProcessOnSelectQuote)': [OptimalSwapPathParamsV2, CommonOptimalSwapPath];
|
|
1782
1782
|
'pri(swapService.handleSwapRequest)': [SwapRequest, SwapRequestResult];
|
|
1783
|
+
'pri(swapService.handleSwapRequestV2)': [SwapRequest, SwapRequestResult];
|
|
1783
1784
|
'pri(swapService.handleSwapStep)': [SwapSubmitParams, SWTransactionResponse];
|
|
1784
1785
|
'pri(swapService.getLatestQuote)': [SwapRequest, SwapQuoteResponse];
|
|
1785
1786
|
'pri(swapService.validateSwapProcess)': [ValidateSwapProcessParams, TransactionError[]];
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { SWWarning } from '@subwallet/extension-base/background/warnings/SWWarning';
|
|
2
2
|
import { TransactionWarningType } from '@subwallet/extension-base/types';
|
|
3
|
+
import { TransactionError } from '../errors/TransactionError';
|
|
3
4
|
export declare class TransactionWarning extends SWWarning {
|
|
4
5
|
warningType: TransactionWarningType;
|
|
5
6
|
constructor(warningType: TransactionWarningType, message?: string, code?: number, data?: unknown);
|
|
7
|
+
toError(): TransactionError | null;
|
|
6
8
|
}
|
|
@@ -2,9 +2,10 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { SWWarning } from '@subwallet/extension-base/background/warnings/SWWarning';
|
|
5
|
-
import { BasicTxWarningCode } from '@subwallet/extension-base/types';
|
|
5
|
+
import { BasicTxErrorType, BasicTxWarningCode } from '@subwallet/extension-base/types';
|
|
6
6
|
import { detectTranslate } from '@subwallet/extension-base/utils';
|
|
7
7
|
import { t } from 'i18next';
|
|
8
|
+
import { TransactionError } from "../errors/TransactionError.js";
|
|
8
9
|
const defaultWarningMap = {
|
|
9
10
|
[BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT]: {
|
|
10
11
|
message: detectTranslate('Insufficient balance to cover existential deposit. Please decrease the transaction amount or increase your current balance'),
|
|
@@ -22,4 +23,18 @@ export class TransactionWarning extends SWWarning {
|
|
|
22
23
|
super(warningType, warningMessage, (_defaultWarningMap$wa2 = defaultWarningMap[warningType]) === null || _defaultWarningMap$wa2 === void 0 ? void 0 : _defaultWarningMap$wa2.code, data);
|
|
23
24
|
this.warningType = warningType;
|
|
24
25
|
}
|
|
26
|
+
toError() {
|
|
27
|
+
const type = (() => {
|
|
28
|
+
switch (this.warningType) {
|
|
29
|
+
case BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS:
|
|
30
|
+
return null;
|
|
31
|
+
case BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT:
|
|
32
|
+
return BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT;
|
|
33
|
+
}
|
|
34
|
+
})();
|
|
35
|
+
if (!type) {
|
|
36
|
+
return null;
|
|
37
|
+
}
|
|
38
|
+
return new TransactionError(type, this.message, this.data);
|
|
39
|
+
}
|
|
25
40
|
}
|
|
@@ -8,6 +8,7 @@ var _SWWarning = require("@subwallet/extension-base/background/warnings/SWWarnin
|
|
|
8
8
|
var _types = require("@subwallet/extension-base/types");
|
|
9
9
|
var _utils = require("@subwallet/extension-base/utils");
|
|
10
10
|
var _i18next = require("i18next");
|
|
11
|
+
var _TransactionError = require("../errors/TransactionError");
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
13
14
|
|
|
@@ -28,5 +29,19 @@ class TransactionWarning extends _SWWarning.SWWarning {
|
|
|
28
29
|
super(warningType, warningMessage, (_defaultWarningMap$wa2 = defaultWarningMap[warningType]) === null || _defaultWarningMap$wa2 === void 0 ? void 0 : _defaultWarningMap$wa2.code, data);
|
|
29
30
|
this.warningType = warningType;
|
|
30
31
|
}
|
|
32
|
+
toError() {
|
|
33
|
+
const type = (() => {
|
|
34
|
+
switch (this.warningType) {
|
|
35
|
+
case _types.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS:
|
|
36
|
+
return null;
|
|
37
|
+
case _types.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT:
|
|
38
|
+
return _types.BasicTxErrorType.NOT_ENOUGH_EXISTENTIAL_DEPOSIT;
|
|
39
|
+
}
|
|
40
|
+
})();
|
|
41
|
+
if (!type) {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
return new _TransactionError.TransactionError(type, this.message, this.data);
|
|
45
|
+
}
|
|
31
46
|
}
|
|
32
47
|
exports.TransactionWarning = TransactionWarning;
|
|
@@ -3,9 +3,18 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
+
var _exportNames = {
|
|
7
|
+
validateSpendingAndFeePayment: true
|
|
8
|
+
};
|
|
9
|
+
exports.validateSpendingAndFeePayment = validateSpendingAndFeePayment;
|
|
10
|
+
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
11
|
+
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
|
+
var _types = require("@subwallet/extension-base/types");
|
|
13
|
+
var _i18next = require("i18next");
|
|
6
14
|
var _swap = require("./swap");
|
|
7
15
|
Object.keys(_swap).forEach(function (key) {
|
|
8
16
|
if (key === "default" || key === "__esModule") return;
|
|
17
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
9
18
|
if (key in exports && exports[key] === _swap[key]) return;
|
|
10
19
|
Object.defineProperty(exports, key, {
|
|
11
20
|
enumerable: true,
|
|
@@ -17,6 +26,7 @@ Object.keys(_swap).forEach(function (key) {
|
|
|
17
26
|
var _request = require("./request");
|
|
18
27
|
Object.keys(_request).forEach(function (key) {
|
|
19
28
|
if (key === "default" || key === "__esModule") return;
|
|
29
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
20
30
|
if (key in exports && exports[key] === _request[key]) return;
|
|
21
31
|
Object.defineProperty(exports, key, {
|
|
22
32
|
enumerable: true,
|
|
@@ -28,6 +38,7 @@ Object.keys(_request).forEach(function (key) {
|
|
|
28
38
|
var _earning = require("./earning");
|
|
29
39
|
Object.keys(_earning).forEach(function (key) {
|
|
30
40
|
if (key === "default" || key === "__esModule") return;
|
|
41
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
31
42
|
if (key in exports && exports[key] === _earning[key]) return;
|
|
32
43
|
Object.defineProperty(exports, key, {
|
|
33
44
|
enumerable: true,
|
|
@@ -39,6 +50,7 @@ Object.keys(_earning).forEach(function (key) {
|
|
|
39
50
|
var _transfer = require("./transfer");
|
|
40
51
|
Object.keys(_transfer).forEach(function (key) {
|
|
41
52
|
if (key === "default" || key === "__esModule") return;
|
|
53
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
42
54
|
if (key in exports && exports[key] === _transfer[key]) return;
|
|
43
55
|
Object.defineProperty(exports, key, {
|
|
44
56
|
enumerable: true,
|
|
@@ -46,4 +58,23 @@ Object.keys(_transfer).forEach(function (key) {
|
|
|
46
58
|
return _transfer[key];
|
|
47
59
|
}
|
|
48
60
|
});
|
|
49
|
-
});
|
|
61
|
+
});
|
|
62
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
63
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
64
|
+
|
|
65
|
+
// apply for all tx: transfer, xcm, swap, earning
|
|
66
|
+
function validateSpendingAndFeePayment(spendingToken, feeToken, bnSpendingAmount, bnFromTokenBalance, bnFeeAmount, bnFeeTokenBalance) {
|
|
67
|
+
if (spendingToken.slug === feeToken.slug) {
|
|
68
|
+
if (bnFromTokenBalance.lte(bnSpendingAmount.plus(bnFeeAmount).plus((0, _utils._isNativeToken)(spendingToken) ? '0' : (0, _utils._getTokenMinAmount)(spendingToken)))) {
|
|
69
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, (0, _i18next.t)(`Insufficient balance. Deposit ${spendingToken.symbol} and try again.`))];
|
|
70
|
+
}
|
|
71
|
+
} else {
|
|
72
|
+
if (bnFromTokenBalance.lte(bnSpendingAmount.plus((0, _utils._isNativeToken)(spendingToken) ? '0' : (0, _utils._getTokenMinAmount)(spendingToken)))) {
|
|
73
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, (0, _i18next.t)(`Insufficient balance. Deposit ${spendingToken.symbol} and try again.`))];
|
|
74
|
+
}
|
|
75
|
+
if (bnFeeTokenBalance.lte(bnFeeAmount.plus((0, _utils._isNativeToken)(feeToken) ? '0' : (0, _utils._getTokenMinAmount)(feeToken)))) {
|
|
76
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.NOT_ENOUGH_BALANCE, (0, _i18next.t)(`Insufficient balance. Deposit ${feeToken.symbol} and try again.`))];
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return [];
|
|
80
|
+
}
|
package/cjs/core/utils.js
CHANGED
|
@@ -7,6 +7,7 @@ exports._getAppliedExistentialDeposit = _getAppliedExistentialDeposit;
|
|
|
7
7
|
exports._isAddress = _isAddress;
|
|
8
8
|
exports._isNotDuplicateAddress = _isNotDuplicateAddress;
|
|
9
9
|
exports._isNotNull = _isNotNull;
|
|
10
|
+
exports._isSufficientToken = void 0;
|
|
10
11
|
exports._isSupportLedgerAccount = _isSupportLedgerAccount;
|
|
11
12
|
exports._isValidAddressForEcosystem = _isValidAddressForEcosystem;
|
|
12
13
|
exports._isValidCardanoAddressFormat = _isValidCardanoAddressFormat;
|
|
@@ -15,9 +16,11 @@ exports._isValidTonAddressFormat = _isValidTonAddressFormat;
|
|
|
15
16
|
exports.getMaxBigInt = getMaxBigInt;
|
|
16
17
|
exports.getStrictMode = getStrictMode;
|
|
17
18
|
exports.ledgerMustCheckNetwork = ledgerMustCheckNetwork;
|
|
19
|
+
var _types = require("@subwallet/chain-list/types");
|
|
18
20
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
19
|
-
var
|
|
21
|
+
var _types2 = require("@subwallet/extension-base/core/substrate/types");
|
|
20
22
|
var _utils = require("@subwallet/extension-base/services/balance-service/helpers/subscribe/ton/utils");
|
|
23
|
+
var _constants = require("@subwallet/extension-base/services/chain-service/constants");
|
|
21
24
|
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
22
25
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
23
26
|
var _keyring = require("@subwallet/keyring");
|
|
@@ -26,7 +29,7 @@ var _utilCrypto = require("@polkadot/util-crypto");
|
|
|
26
29
|
// SPDX-License-Identifier: Apache-2.0
|
|
27
30
|
|
|
28
31
|
function getStrictMode(type, extrinsicType) {
|
|
29
|
-
if (type ===
|
|
32
|
+
if (type === _types2.BalanceAccountType.FrameSystemAccountInfo) {
|
|
30
33
|
return !extrinsicType || ![_KoniTypes.ExtrinsicType.TRANSFER_BALANCE].includes(extrinsicType);
|
|
31
34
|
}
|
|
32
35
|
return false;
|
|
@@ -146,4 +149,23 @@ function _isSupportLedgerAccount(validateRecipientParams) {
|
|
|
146
149
|
}
|
|
147
150
|
}
|
|
148
151
|
return '';
|
|
149
|
-
}
|
|
152
|
+
}
|
|
153
|
+
const _isSufficientToken = async (tokenInfo, substrateApi) => {
|
|
154
|
+
if (_constants.SUFFICIENT_CHAIN.includes(tokenInfo.originChain) && tokenInfo.assetType !== _types._AssetType.NATIVE) {
|
|
155
|
+
const assetId = (0, _utils2._isBridgedToken)(tokenInfo) ? (0, _utils2._getXcmAssetMultilocation)(tokenInfo) : (0, _utils2._getTokenOnChainAssetId)(tokenInfo);
|
|
156
|
+
const queryParams = {
|
|
157
|
+
section: 'query',
|
|
158
|
+
module: 'foreignAssets',
|
|
159
|
+
method: 'asset',
|
|
160
|
+
args: [assetId]
|
|
161
|
+
};
|
|
162
|
+
if (!(0, _utils2._isBridgedToken)(tokenInfo)) {
|
|
163
|
+
queryParams.module = 'assets';
|
|
164
|
+
}
|
|
165
|
+
const metadata = await substrateApi.makeRpcQuery(queryParams);
|
|
166
|
+
return metadata.isSufficient;
|
|
167
|
+
} else {
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
171
|
+
exports._isSufficientToken = _isSufficientToken;
|