@subwallet/extension-base 1.2.8-0 → 1.2.9-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 +7 -3
- package/background/KoniTypes.js +1 -1
- package/cjs/background/KoniTypes.js +1 -1
- package/cjs/core/logic-validation/transfer.js +22 -2
- package/cjs/core/substrate/foreign-asset-pallet.js +16 -0
- package/cjs/core/substrate/xcm-parser.js +26 -4
- package/cjs/koni/api/contract-handler/evm/web3.js +58 -0
- package/cjs/{services/chain-service/helper → koni/api/contract-handler/utils}/index.js +19 -2
- package/cjs/koni/api/contract-handler/wasm/index.js +49 -0
- package/cjs/koni/api/nft/evm_nft/index.js +6 -6
- package/cjs/koni/api/nft/wasm_nft/index.js +16 -16
- package/cjs/koni/api/yield/helper/utils.js +1 -22
- package/cjs/koni/background/handlers/Extension.js +128 -64
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/index.js +11 -0
- package/cjs/services/balance-service/helpers/process.js +50 -0
- package/cjs/services/balance-service/helpers/subscribe/evm.js +11 -3
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +10 -24
- package/cjs/services/balance-service/index.js +20 -0
- package/cjs/{koni/api/tokens/evm/transfer.js → services/balance-service/transfer/smart-contract.js} +33 -38
- package/cjs/{koni/api/dotsama/transfer.js → services/balance-service/transfer/token.js} +3 -3
- package/cjs/{koni/api → services/balance-service/transfer}/xcm/index.js +26 -6
- package/cjs/{koni/api → services/balance-service/transfer}/xcm/polkadotXcm.js +2 -2
- package/cjs/services/balance-service/transfer/xcm/snowBridge.js +60 -0
- package/cjs/{koni/api → services/balance-service/transfer}/xcm/xTokens.js +1 -1
- package/cjs/{koni/api → services/balance-service/transfer}/xcm/xcmPallet.js +1 -1
- package/cjs/services/chain-service/handler/EvmChainHandler.js +3 -3
- package/cjs/services/chain-service/handler/SubstrateChainHandler.js +4 -4
- package/cjs/services/chain-service/health-check/utils/asset-info.js +18 -18
- package/cjs/services/earning-service/handlers/liquid-staking/stella-swap.js +16 -35
- package/cjs/services/earning-service/handlers/special.js +1 -1
- package/cjs/services/swap-service/handler/base-handler.js +3 -2
- package/cjs/services/swap-service/handler/chainflip-handler.js +10 -9
- package/cjs/services/swap-service/handler/hydradx-handler.js +12 -11
- package/cjs/services/swap-service/index.js +3 -2
- package/cjs/services/swap-service/utils.js +1 -13
- package/cjs/services/transaction-service/index.js +2 -2
- package/cjs/types/service-base.js +30 -1
- package/cjs/types/swap/index.js +0 -4
- package/cjs/utils/eth/parseTransaction/index.js +10 -10
- package/core/logic-validation/transfer.d.ts +1 -1
- package/core/logic-validation/transfer.js +22 -3
- package/core/substrate/foreign-asset-pallet.d.ts +8 -0
- package/core/substrate/foreign-asset-pallet.js +9 -0
- package/core/substrate/xcm-parser.d.ts +3 -1
- package/core/substrate/xcm-parser.js +25 -5
- package/koni/api/contract-handler/evm/web3.d.ts +8 -0
- package/koni/api/contract-handler/evm/web3.js +45 -0
- package/{services/chain-service/helper → koni/api/contract-handler/utils}/index.d.ts +4 -0
- package/{services/chain-service/helper → koni/api/contract-handler/utils}/index.js +15 -1
- package/koni/api/contract-handler/utils/snowbridge_gateway_abi.json +1122 -0
- package/koni/api/{tokens → contract-handler}/wasm/index.d.ts +0 -2
- package/koni/api/{tokens → contract-handler}/wasm/index.js +1 -25
- package/koni/api/nft/evm_nft/index.js +1 -1
- package/koni/api/nft/wasm_nft/index.js +2 -2
- package/koni/api/yield/helper/utils.d.ts +1 -5
- package/koni/api/yield/helper/utils.js +0 -16
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +82 -18
- package/package.json +85 -79
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/index.d.ts +1 -0
- package/services/balance-service/helpers/index.js +2 -1
- package/services/balance-service/helpers/process.d.ts +13 -0
- package/services/balance-service/helpers/process.js +43 -0
- package/services/balance-service/helpers/subscribe/evm.js +11 -3
- package/services/balance-service/helpers/subscribe/substrate/index.js +11 -25
- package/services/balance-service/index.d.ts +3 -0
- package/services/balance-service/index.js +21 -1
- package/services/balance-service/transfer/smart-contract.d.ts +7 -0
- package/{koni/api/tokens/evm/transfer.js → services/balance-service/transfer/smart-contract.js} +28 -31
- package/{koni/api/dotsama/transfer.js → services/balance-service/transfer/token.js} +4 -4
- package/{koni/api → services/balance-service/transfer}/xcm/index.d.ts +9 -3
- package/{koni/api → services/balance-service/transfer}/xcm/index.js +21 -3
- package/{koni/api → services/balance-service/transfer}/xcm/polkadotXcm.js +3 -3
- package/services/balance-service/transfer/xcm/snowBridge.d.ts +4 -0
- package/services/balance-service/transfer/xcm/snowBridge.js +54 -0
- package/{koni/api → services/balance-service/transfer}/xcm/xTokens.js +1 -1
- package/{koni/api → services/balance-service/transfer}/xcm/xcmPallet.js +1 -1
- package/services/chain-service/handler/EvmChainHandler.js +1 -1
- package/services/chain-service/handler/SubstrateChainHandler.js +2 -2
- package/services/chain-service/health-check/utils/asset-info.js +3 -3
- package/services/earning-service/handlers/liquid-staking/stella-swap.js +16 -35
- package/services/earning-service/handlers/special.js +1 -1
- package/services/swap-service/handler/base-handler.d.ts +5 -5
- package/services/swap-service/handler/base-handler.js +4 -3
- package/services/swap-service/handler/chainflip-handler.d.ts +4 -4
- package/services/swap-service/handler/chainflip-handler.js +7 -6
- package/services/swap-service/handler/hydradx-handler.d.ts +6 -6
- package/services/swap-service/handler/hydradx-handler.js +12 -11
- package/services/swap-service/index.d.ts +3 -2
- package/services/swap-service/index.js +4 -3
- package/services/swap-service/utils.d.ts +1 -3
- package/services/swap-service/utils.js +1 -11
- package/services/transaction-service/index.js +2 -2
- package/types/service-base.d.ts +31 -3
- package/types/service-base.js +23 -1
- package/types/swap/index.d.ts +8 -30
- package/types/swap/index.js +0 -4
- package/types/yield/actions/join/submit.d.ts +7 -4
- package/utils/eth/parseTransaction/index.js +1 -1
- package/cjs/koni/api/tokens/evm/balance.js +0 -18
- package/cjs/koni/api/tokens/evm/web3.js +0 -17
- package/cjs/koni/api/tokens/index.js +0 -17
- package/cjs/koni/api/tokens/wasm/index.js +0 -74
- package/koni/api/tokens/evm/balance.d.ts +0 -2
- package/koni/api/tokens/evm/balance.js +0 -12
- package/koni/api/tokens/evm/transfer.d.ts +0 -17
- package/koni/api/tokens/evm/web3.d.ts +0 -3
- package/koni/api/tokens/evm/web3.js +0 -9
- package/koni/api/tokens/index.d.ts +0 -1
- package/koni/api/tokens/index.js +0 -11
- /package/cjs/koni/api/{tokens → contract-handler}/wasm/utils.js +0 -0
- /package/cjs/{koni/api → services/balance-service/transfer}/xcm/utils.js +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/azero_domain_registry_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/erc20_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/erc721_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/neuroguns_psp34_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/pink_psp34_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/psp22_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/psp34_abi.json +0 -0
- /package/{services/chain-service/helper → koni/api/contract-handler/utils}/test_erc721_abi.json +0 -0
- /package/koni/api/{tokens → contract-handler}/wasm/utils.d.ts +0 -0
- /package/koni/api/{tokens → contract-handler}/wasm/utils.js +0 -0
- /package/{koni/api/dotsama/transfer.d.ts → services/balance-service/transfer/token.d.ts} +0 -0
- /package/{koni/api → services/balance-service/transfer}/xcm/polkadotXcm.d.ts +0 -0
- /package/{koni/api → services/balance-service/transfer}/xcm/utils.d.ts +0 -0
- /package/{koni/api → services/balance-service/transfer}/xcm/utils.js +0 -0
- /package/{koni/api → services/balance-service/transfer}/xcm/xTokens.d.ts +0 -0
- /package/{koni/api → services/balance-service/transfer}/xcm/xcmPallet.d.ts +0 -0
|
@@ -2,12 +2,14 @@ import { _AssetRef, _AssetType, _ChainAsset, _ChainInfo, _FundStatus, _MultiChai
|
|
|
2
2
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
3
3
|
import { AuthUrls, Resolver } from '@subwallet/extension-base/background/handlers/State';
|
|
4
4
|
import { AccountAuthType, AccountJson, AddressJson, AuthorizeRequest, ConfirmationRequestBase, RequestAccountList, RequestAccountSubscribe, RequestAccountUnsubscribe, RequestAuthorizeCancel, RequestAuthorizeReject, RequestAuthorizeSubscribe, RequestAuthorizeTab, RequestCurrentAccountAddress, ResponseAuthorizeList, ResponseJsonGetAccountInfo, SeedLengths } from '@subwallet/extension-base/background/types';
|
|
5
|
+
import { RequestOptimalTransferProcess } from '@subwallet/extension-base/services/balance-service/helpers';
|
|
5
6
|
import { _CHAIN_VALIDATION_ERROR } from '@subwallet/extension-base/services/chain-service/handler/types';
|
|
6
7
|
import { _ChainState, _EvmApi, _NetworkUpsertParams, _SubstrateApi, _ValidateCustomAssetRequest, _ValidateCustomAssetResponse, EnableChainParams, EnableMultiChainParams } from '@subwallet/extension-base/services/chain-service/types';
|
|
7
8
|
import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
|
|
8
9
|
import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
|
|
9
10
|
import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
|
|
10
|
-
import { BalanceJson, BuyServiceInfo, BuyTokenInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestEarlyValidateYield, RequestGetYieldPoolTargets, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseEarlyValidateYield, ResponseGetYieldPoolTargets, StorageDataInterface, SubmitYieldStepData,
|
|
11
|
+
import { BalanceJson, BuyServiceInfo, BuyTokenInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, LeavePoolAdditionalData, NominationPoolInfo, OptimalYieldPath, OptimalYieldPathParams, RequestEarlyValidateYield, RequestGetYieldPoolTargets, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseEarlyValidateYield, ResponseGetYieldPoolTargets, StorageDataInterface, SubmitYieldStepData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo, YieldValidationStatus } from '@subwallet/extension-base/types';
|
|
12
|
+
import { CommonOptimalPath } from '@subwallet/extension-base/types/service-base';
|
|
11
13
|
import { SwapErrorType, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, ValidateSwapProcessParams } from '@subwallet/extension-base/types/swap';
|
|
12
14
|
import { InjectedAccount, InjectedAccountWithMeta, MetadataDefBase } from '@subwallet/extension-inject/types';
|
|
13
15
|
import { KeyringPair$Json, KeyringPair$Meta } from '@subwallet/keyring/types';
|
|
@@ -391,7 +393,7 @@ export declare enum ExtrinsicType {
|
|
|
391
393
|
UNSTAKE_SDOT = "earn.unstake_sdot",
|
|
392
394
|
UNSTAKE_STDOT = "earn.unstake_stdot",
|
|
393
395
|
UNSTAKE_VMANTA = "earn.unstake_vmanta",
|
|
394
|
-
|
|
396
|
+
TOKEN_SPENDING_APPROVAL = "token.spending_approval",
|
|
395
397
|
SWAP = "swap",
|
|
396
398
|
EVM_EXECUTE = "evm.execute",
|
|
397
399
|
UNKNOWN = "unknown"
|
|
@@ -431,7 +433,7 @@ export interface ExtrinsicDataTypeMap {
|
|
|
431
433
|
[ExtrinsicType.REDEEM_SDOT]: RequestYieldLeave;
|
|
432
434
|
[ExtrinsicType.REDEEM_STDOT]: RequestYieldLeave;
|
|
433
435
|
[ExtrinsicType.REDEEM_VMANTA]: RequestYieldLeave;
|
|
434
|
-
[ExtrinsicType.
|
|
436
|
+
[ExtrinsicType.TOKEN_SPENDING_APPROVAL]: TokenSpendingApprovalParams;
|
|
435
437
|
[ExtrinsicType.EVM_EXECUTE]: TransactionConfig;
|
|
436
438
|
[ExtrinsicType.CROWDLOAN]: any;
|
|
437
439
|
[ExtrinsicType.SWAP]: SwapTxData;
|
|
@@ -1670,6 +1672,8 @@ export interface KoniRequestSignatures {
|
|
|
1670
1672
|
'pri(freeBalance.subscribe)': [RequestFreeBalance, AmountDataWithId, AmountDataWithId];
|
|
1671
1673
|
'pri(accounts.checkTransfer)': [RequestCheckTransfer, ValidateTransactionResponse];
|
|
1672
1674
|
'pri(accounts.transfer)': [RequestTransfer, SWTransactionResponse];
|
|
1675
|
+
'pri(accounts.getOptimalTransferProcess)': [RequestOptimalTransferProcess, CommonOptimalPath];
|
|
1676
|
+
'pri(accounts.approveSpending)': [TokenSpendingApprovalParams, SWTransactionResponse];
|
|
1673
1677
|
'pri(accounts.checkCrossChainTransfer)': [RequestCheckCrossChainTransfer, ValidateTransactionResponse];
|
|
1674
1678
|
'pri(accounts.crossChainTransfer)': [RequestCrossChainTransfer, SWTransactionResponse];
|
|
1675
1679
|
'pri(confirmations.subscribe)': [RequestConfirmationsSubscribe, ConfirmationsQueue, ConfirmationsQueue];
|
package/background/KoniTypes.js
CHANGED
|
@@ -99,7 +99,7 @@ export let ExtrinsicType;
|
|
|
99
99
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
100
100
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
101
101
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
102
|
-
ExtrinsicType["
|
|
102
|
+
ExtrinsicType["TOKEN_SPENDING_APPROVAL"] = "token.spending_approval";
|
|
103
103
|
ExtrinsicType["SWAP"] = "swap";
|
|
104
104
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
105
105
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
@@ -114,7 +114,7 @@ exports.ExtrinsicType = ExtrinsicType;
|
|
|
114
114
|
ExtrinsicType["UNSTAKE_SDOT"] = "earn.unstake_sdot";
|
|
115
115
|
ExtrinsicType["UNSTAKE_STDOT"] = "earn.unstake_stdot";
|
|
116
116
|
ExtrinsicType["UNSTAKE_VMANTA"] = "earn.unstake_vmanta";
|
|
117
|
-
ExtrinsicType["
|
|
117
|
+
ExtrinsicType["TOKEN_SPENDING_APPROVAL"] = "token.spending_approval";
|
|
118
118
|
ExtrinsicType["SWAP"] = "swap";
|
|
119
119
|
ExtrinsicType["EVM_EXECUTE"] = "evm.execute";
|
|
120
120
|
ExtrinsicType["UNKNOWN"] = "unknown";
|
|
@@ -88,13 +88,14 @@ function validateXcmTransferRequest(destTokenInfo, sender, sendingValue) {
|
|
|
88
88
|
}
|
|
89
89
|
return [errors, keypair, transferValue];
|
|
90
90
|
}
|
|
91
|
-
function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, sendingAmount, senderTransferable) {
|
|
91
|
+
function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, sendingAmount, senderTransferable, receiverNativeBalance, destChainInfo) {
|
|
92
|
+
let isSnowBridge = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : false;
|
|
92
93
|
const destMinAmount = (0, _utils._getTokenMinAmount)(destinationTokenInfo);
|
|
93
94
|
const minSendingRequired = new _bignumber.default(destMinAmount).multipliedBy(_constants.XCM_MIN_AMOUNT_RATIO);
|
|
94
95
|
let error;
|
|
95
96
|
let warning;
|
|
96
97
|
|
|
97
|
-
// Check
|
|
98
|
+
// Check sending token ED for receiver
|
|
98
99
|
if (new _bignumber.default(sendingAmount).lt(minSendingRequired)) {
|
|
99
100
|
const atLeastStr = (0, _utils3.formatNumber)(minSendingRequired, destinationTokenInfo.decimals || 0, _utils3.balanceFormatter, {
|
|
100
101
|
maxNumberFormat: destinationTokenInfo.decimals || 6
|
|
@@ -107,6 +108,25 @@ function additionalValidateXcmTransfer(originTokenInfo, destinationTokenInfo, se
|
|
|
107
108
|
}));
|
|
108
109
|
}
|
|
109
110
|
|
|
111
|
+
// check native token ED on dest chain for receiver
|
|
112
|
+
const bnKeepAliveBalance = (0, _utils._isNativeToken)(destinationTokenInfo) ? new _bignumber.default(receiverNativeBalance).plus(sendingAmount) : new _bignumber.default(receiverNativeBalance);
|
|
113
|
+
if (isSnowBridge && bnKeepAliveBalance.lt((0, _utils._getChainExistentialDeposit)(destChainInfo))) {
|
|
114
|
+
const {
|
|
115
|
+
decimals,
|
|
116
|
+
symbol
|
|
117
|
+
} = (0, _utils._getChainNativeTokenBasicInfo)(destChainInfo);
|
|
118
|
+
const atLeastStr = (0, _utils3.formatNumber)((0, _utils._getChainExistentialDeposit)(destChainInfo), decimals || 0, _utils3.balanceFormatter, {
|
|
119
|
+
maxNumberFormat: 6
|
|
120
|
+
});
|
|
121
|
+
error = new _TransactionError.TransactionError(_KoniTypes.TransferTxErrorType.RECEIVER_NOT_ENOUGH_EXISTENTIAL_DEPOSIT, (0, _i18next.t)(' Insufficient {{symbol}} on {{chain}} to cover min balance ({{amount}} {{symbol}})', {
|
|
122
|
+
replace: {
|
|
123
|
+
amount: atLeastStr,
|
|
124
|
+
symbol,
|
|
125
|
+
chain: destChainInfo.name
|
|
126
|
+
}
|
|
127
|
+
}));
|
|
128
|
+
}
|
|
129
|
+
|
|
110
130
|
// Check ed for sender
|
|
111
131
|
if (!(0, _utils._isNativeToken)(originTokenInfo)) {
|
|
112
132
|
if (new _bignumber.default(senderTransferable).minus(sendingAmount).lt((0, _utils._getTokenMinAmount)(originTokenInfo))) {
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports._getForeignAssetPalletLockedBalance = _getForeignAssetPalletLockedBalance;
|
|
7
|
+
exports._getForeignAssetPalletTransferable = _getForeignAssetPalletTransferable;
|
|
8
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
9
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
10
|
+
|
|
11
|
+
function _getForeignAssetPalletTransferable(accountInfo) {
|
|
12
|
+
return accountInfo.status !== 'Liquid' ? BigInt(0) : BigInt(accountInfo.balance);
|
|
13
|
+
}
|
|
14
|
+
function _getForeignAssetPalletLockedBalance(accountInfo) {
|
|
15
|
+
return accountInfo.status === 'Liquid' ? BigInt(0) : BigInt(accountInfo.balance);
|
|
16
|
+
}
|
|
@@ -8,7 +8,9 @@ exports._getXcmDestWeight = _getXcmDestWeight;
|
|
|
8
8
|
exports._getXcmMultiAssets = _getXcmMultiAssets;
|
|
9
9
|
exports._getXcmMultiLocation = _getXcmMultiLocation;
|
|
10
10
|
exports._getXcmUnstableWarning = _getXcmUnstableWarning;
|
|
11
|
+
exports._isSnowBridgeXcm = _isSnowBridgeXcm;
|
|
11
12
|
exports._isXcmTransferUnstable = _isXcmTransferUnstable;
|
|
13
|
+
exports._isXcmWithinSameConsensus = _isXcmWithinSameConsensus;
|
|
12
14
|
var _chainList = require("@subwallet/chain-list");
|
|
13
15
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
16
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -60,7 +62,7 @@ function _getXcmMultiLocation(originChainInfo, destChainInfo, version, recipient
|
|
|
60
62
|
function _isXcmTransferUnstable(originChainInfo, destChainInfo) {
|
|
61
63
|
return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo);
|
|
62
64
|
}
|
|
63
|
-
function
|
|
65
|
+
function getAssetHubBridgeUnstableWarning(originChainInfo) {
|
|
64
66
|
switch (originChainInfo.slug) {
|
|
65
67
|
case _chainList.COMMON_CHAIN_SLUGS.POLKADOT_ASSET_HUB:
|
|
66
68
|
return 'Cross-chain transfer of this token is not recommended as it is in beta and incurs a transaction fee of 2 DOT. Continue at your own risk';
|
|
@@ -70,12 +72,32 @@ function _getXcmUnstableWarning(originChainInfo) {
|
|
|
70
72
|
return 'Cross-chain transfer of this token is not recommended as it is in beta and incurs a large transaction fee. Continue at your own risk';
|
|
71
73
|
}
|
|
72
74
|
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
75
|
+
function getSnowBridgeUnstableWarning(originChainInfo) {
|
|
76
|
+
switch (originChainInfo.slug) {
|
|
77
|
+
case _chainList.COMMON_CHAIN_SLUGS.POLKADOT_ASSET_HUB:
|
|
78
|
+
return 'Cross-chain transfer of this token is not recommended as it is in beta, incurs a fee of 70$ and takes up to 1 hour to complete. Continue at your own risk';
|
|
79
|
+
case _chainList.COMMON_CHAIN_SLUGS.ETHEREUM:
|
|
80
|
+
return 'Cross-chain transfer of this token is not recommended as it is in beta, incurs a fee of 5$ and takes up to 1 hour to complete. Continue at your own risk';
|
|
81
|
+
default:
|
|
82
|
+
return 'Cross-chain transfer of this token is not recommended as it is in beta, incurs a high fee and takes up to 1 hour to complete. Continue at your own risk';
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
function _getXcmUnstableWarning(originChainInfo, destChainInfo) {
|
|
86
|
+
if (_isSnowBridgeXcm(originChainInfo, destChainInfo)) {
|
|
87
|
+
return getSnowBridgeUnstableWarning(originChainInfo);
|
|
88
|
+
} else {
|
|
89
|
+
return getAssetHubBridgeUnstableWarning(originChainInfo);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
76
92
|
function _isXcmWithinSameConsensus(originChainInfo, destChainInfo) {
|
|
77
93
|
return (0, _utils._getSubstrateRelayParent)(originChainInfo) === destChainInfo.slug || (0, _utils._getSubstrateRelayParent)(destChainInfo) === originChainInfo.slug || (0, _utils._getSubstrateRelayParent)(originChainInfo) === (0, _utils._getSubstrateRelayParent)(destChainInfo);
|
|
78
94
|
}
|
|
95
|
+
function _isSnowBridgeXcm(originChainInfo, destChainInfo) {
|
|
96
|
+
return !_isXcmWithinSameConsensus(originChainInfo, destChainInfo) && ((0, _utils._isPureEvmChain)(originChainInfo) || (0, _utils._isPureEvmChain)(destChainInfo));
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
// ---------------------------------------------------------------------------------------------------------------------
|
|
100
|
+
|
|
79
101
|
function _getMultiLocationParent(originChainInfo, isWithinSameConsensus) {
|
|
80
102
|
let parent = 0; // how many hops up the hierarchy
|
|
81
103
|
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getERC20Allowance = getERC20Allowance;
|
|
7
|
+
exports.getERC20Contract = void 0;
|
|
8
|
+
exports.getERC20SpendingApprovalTx = getERC20SpendingApprovalTx;
|
|
9
|
+
exports.getWeb3Contract = getWeb3Contract;
|
|
10
|
+
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
11
|
+
var _utils2 = require("@subwallet/extension-base/services/fee-service/utils");
|
|
12
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
13
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
14
|
+
|
|
15
|
+
const getERC20Contract = function (assetAddress, evmApi) {
|
|
16
|
+
let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
17
|
+
// @ts-ignore
|
|
18
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access
|
|
19
|
+
return new evmApi.api.eth.Contract(_utils._ERC20_ABI, assetAddress, options);
|
|
20
|
+
};
|
|
21
|
+
exports.getERC20Contract = getERC20Contract;
|
|
22
|
+
function getWeb3Contract(contractAddress, evmApi, contractAbi) {
|
|
23
|
+
let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
24
|
+
// @ts-ignore
|
|
25
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access
|
|
26
|
+
return new evmApi.api.eth.Contract(contractAbi, contractAddress, options);
|
|
27
|
+
}
|
|
28
|
+
async function getERC20Allowance(spender, owner, contractAddress, evmApi) {
|
|
29
|
+
const tokenContract = getERC20Contract(contractAddress, evmApi);
|
|
30
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
31
|
+
const allowanceCall = tokenContract.methods.allowance(owner, spender);
|
|
32
|
+
|
|
33
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
34
|
+
return await allowanceCall.call();
|
|
35
|
+
}
|
|
36
|
+
async function getERC20SpendingApprovalTx(spender, owner, contractAddress, evmApi) {
|
|
37
|
+
var _priority$maxFeePerGa, _priority$maxPriority;
|
|
38
|
+
let amount = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : '115792089237316195423570985008687907853269984665640564039457584007913129639935';
|
|
39
|
+
const tokenContract = getERC20Contract(contractAddress, evmApi);
|
|
40
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
41
|
+
const approveCall = tokenContract.methods.approve(spender, amount); // TODO: need test
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-assignment
|
|
43
|
+
const approveEncodedCall = approveCall.encodeABI();
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-member-access
|
|
45
|
+
const gasLimit = await approveCall.estimateGas({
|
|
46
|
+
from: owner
|
|
47
|
+
});
|
|
48
|
+
const priority = await (0, _utils2.calculateGasFeeParams)(evmApi, evmApi.chainSlug);
|
|
49
|
+
return {
|
|
50
|
+
from: owner,
|
|
51
|
+
to: contractAddress,
|
|
52
|
+
data: approveEncodedCall,
|
|
53
|
+
gas: gasLimit,
|
|
54
|
+
gasPrice: priority.gasPrice,
|
|
55
|
+
maxFeePerGas: (_priority$maxFeePerGa = priority.maxFeePerGas) === null || _priority$maxFeePerGa === void 0 ? void 0 : _priority$maxFeePerGa.toString(),
|
|
56
|
+
maxPriorityFeePerGas: (_priority$maxPriority = priority.maxPriorityFeePerGas) === null || _priority$maxPriority === void 0 ? void 0 : _priority$maxPriority.toString()
|
|
57
|
+
};
|
|
58
|
+
}
|
|
@@ -3,7 +3,10 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._TEST_ERC721_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = void 0;
|
|
6
|
+
exports._TEST_ERC721_ABI = exports._SNOWBRIDGE_GATEWAY_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._PINK_PSP34_ABI = exports._NEUROGUNS_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = void 0;
|
|
7
|
+
exports.getSnowBridgeGatewayContract = getSnowBridgeGatewayContract;
|
|
8
|
+
exports.isSnowBridgeGatewayContract = isSnowBridgeGatewayContract;
|
|
9
|
+
var _chainList = require("@subwallet/chain-list");
|
|
7
10
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
8
11
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
12
|
|
|
@@ -30,4 +33,18 @@ const _NEUROGUNS_PSP34_ABI = require('./neuroguns_psp34_abi.json');
|
|
|
30
33
|
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
31
34
|
exports._NEUROGUNS_PSP34_ABI = _NEUROGUNS_PSP34_ABI;
|
|
32
35
|
const _AZERO_DOMAIN_REGISTRY_ABI = require('./azero_domain_registry_abi.json');
|
|
33
|
-
|
|
36
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
37
|
+
exports._AZERO_DOMAIN_REGISTRY_ABI = _AZERO_DOMAIN_REGISTRY_ABI;
|
|
38
|
+
const _SNOWBRIDGE_GATEWAY_ABI = require('./snowbridge_gateway_abi.json');
|
|
39
|
+
exports._SNOWBRIDGE_GATEWAY_ABI = _SNOWBRIDGE_GATEWAY_ABI;
|
|
40
|
+
const SNOWBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS = '0x27ca963C279c93801941e1eB8799c23f407d68e7';
|
|
41
|
+
const SNOWBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS = '0x5B4909cE6Ca82d2CE23BD46738953c7959E710Cd';
|
|
42
|
+
function getSnowBridgeGatewayContract(chain) {
|
|
43
|
+
if (chain === _chainList.COMMON_CHAIN_SLUGS.ETHEREUM_SEPOLIA) {
|
|
44
|
+
return SNOWBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS;
|
|
45
|
+
}
|
|
46
|
+
return SNOWBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS;
|
|
47
|
+
}
|
|
48
|
+
function isSnowBridgeGatewayContract(contractAddress) {
|
|
49
|
+
return [SNOWBRIDGE_GATEWAY_ETHEREUM_CONTRACT_ADDRESS, SNOWBRIDGE_GATEWAY_SEPOLIA_CONTRACT_ADDRESS].includes(contractAddress);
|
|
50
|
+
}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getPSP22ContractPromise = getPSP22ContractPromise;
|
|
7
|
+
exports.getPSP34ContractPromise = getPSP34ContractPromise;
|
|
8
|
+
exports.getTokenUriMethod = getTokenUriMethod;
|
|
9
|
+
exports.isAzeroDomainNft = isAzeroDomainNft;
|
|
10
|
+
exports.isNeurogunNft = isNeurogunNft;
|
|
11
|
+
exports.isPinkRoboNft = isPinkRoboNft;
|
|
12
|
+
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
13
|
+
var _apiContract = require("@polkadot/api-contract");
|
|
14
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
15
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
|
|
17
|
+
function getPSP22ContractPromise(apiPromise, contractAddress) {
|
|
18
|
+
return new _apiContract.ContractPromise(apiPromise, _utils._PSP22_ABI, contractAddress);
|
|
19
|
+
}
|
|
20
|
+
function isPinkRoboNft(contractAddress) {
|
|
21
|
+
return ['XoywUxTTtNKPRrRN7V5KXCqz2QLMFeK7DxhpSniqZHps5Xq'].includes(contractAddress);
|
|
22
|
+
}
|
|
23
|
+
function isNeurogunNft(contractAddress) {
|
|
24
|
+
return ['aZ9bd2tHeGKrs3FnJv5oe7kgVrP5GQvdJMhC2GxjXA2Yqbd'].includes(contractAddress);
|
|
25
|
+
}
|
|
26
|
+
function isAzeroDomainNft(contractAddress) {
|
|
27
|
+
return ['5FsB91tXSEuMj6akzdPczAtmBaVKToqHmtAwSUzXh49AYzaD', '5CTQBfBC9SfdrCDBJdfLiyW2pg9z5W6C6Es8sK313BLnFgDf'].includes(contractAddress);
|
|
28
|
+
}
|
|
29
|
+
function getPSP34ContractPromise(apiPromise, contractAddress) {
|
|
30
|
+
if (isPinkRoboNft(contractAddress)) {
|
|
31
|
+
return new _apiContract.ContractPromise(apiPromise, _utils._PINK_PSP34_ABI, contractAddress);
|
|
32
|
+
}
|
|
33
|
+
if (isNeurogunNft(contractAddress)) {
|
|
34
|
+
return new _apiContract.ContractPromise(apiPromise, _utils._NEUROGUNS_PSP34_ABI, contractAddress);
|
|
35
|
+
}
|
|
36
|
+
if (isAzeroDomainNft(contractAddress)) {
|
|
37
|
+
return new _apiContract.ContractPromise(apiPromise, _utils._AZERO_DOMAIN_REGISTRY_ABI, contractAddress);
|
|
38
|
+
}
|
|
39
|
+
return new _apiContract.ContractPromise(apiPromise, _utils._PSP34_ABI, contractAddress);
|
|
40
|
+
}
|
|
41
|
+
function getTokenUriMethod(contractAddress) {
|
|
42
|
+
if (isPinkRoboNft(contractAddress)) {
|
|
43
|
+
return 'pinkMint::tokenUri';
|
|
44
|
+
}
|
|
45
|
+
if (isNeurogunNft(contractAddress)) {
|
|
46
|
+
return 'tokenUri';
|
|
47
|
+
}
|
|
48
|
+
return 'psp34Traits::tokenUri';
|
|
49
|
+
}
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.EvmNftApi = void 0;
|
|
7
7
|
var _types = require("@subwallet/chain-list/types");
|
|
8
|
+
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/utils");
|
|
8
9
|
var _config = require("@subwallet/extension-base/koni/api/nft/config");
|
|
9
10
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
10
|
-
var
|
|
11
|
-
var
|
|
12
|
-
var _utils2 = require("@subwallet/extension-base/utils");
|
|
11
|
+
var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
12
|
+
var _utils3 = require("@subwallet/extension-base/utils");
|
|
13
13
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
14
14
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
15
15
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -28,7 +28,7 @@ class EvmNftApi extends _nft.BaseNftApi {
|
|
|
28
28
|
if (!input) {
|
|
29
29
|
return undefined;
|
|
30
30
|
}
|
|
31
|
-
if ((0,
|
|
31
|
+
if ((0, _utils3.isUrl)(input)) {
|
|
32
32
|
return input;
|
|
33
33
|
}
|
|
34
34
|
if (input.includes('ipfs://')) {
|
|
@@ -74,10 +74,10 @@ class EvmNftApi extends _nft.BaseNftApi {
|
|
|
74
74
|
if (!this.evmApi) {
|
|
75
75
|
return;
|
|
76
76
|
}
|
|
77
|
-
const smartContract = (0,
|
|
77
|
+
const smartContract = (0, _utils2._getContractAddressOfToken)(tokenInfo);
|
|
78
78
|
|
|
79
79
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument,@typescript-eslint/no-unsafe-member-access,@typescript-eslint/no-unsafe-call,@typescript-eslint/no-unsafe-assignment
|
|
80
|
-
const contract = new this.evmApi.api.eth.Contract(
|
|
80
|
+
const contract = new this.evmApi.api.eth.Contract(_utils._ERC721_ABI, smartContract);
|
|
81
81
|
let ownItem = false;
|
|
82
82
|
let collectionImage;
|
|
83
83
|
const nftOwnerMap = {};
|
|
@@ -5,11 +5,11 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.WasmNftApi = void 0;
|
|
7
7
|
var _types = require("@subwallet/chain-list/types");
|
|
8
|
+
var _wasm = require("@subwallet/extension-base/koni/api/contract-handler/wasm");
|
|
9
|
+
var _utils = require("@subwallet/extension-base/koni/api/contract-handler/wasm/utils");
|
|
8
10
|
var _domain = require("@subwallet/extension-base/koni/api/dotsama/domain");
|
|
9
11
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
10
|
-
var
|
|
11
|
-
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
12
|
-
var _utils2 = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
12
|
+
var _utils2 = require("@subwallet/extension-base/koni/api/nft/wasm_nft/utils");
|
|
13
13
|
var _utils3 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
14
14
|
var _utils4 = require("@subwallet/extension-base/utils");
|
|
15
15
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -31,7 +31,7 @@ async function isArtZeroFeaturedCollection(networkKey, contractAddress) {
|
|
|
31
31
|
const urlencoded = new URLSearchParams();
|
|
32
32
|
urlencoded.append('collection_address', contractAddress);
|
|
33
33
|
const collectionInfoPromise = new Promise(function (resolve) {
|
|
34
|
-
fetch((0,
|
|
34
|
+
fetch((0, _utils2.collectionApiFromArtZero)(networkKey), {
|
|
35
35
|
method: 'POST',
|
|
36
36
|
headers: {
|
|
37
37
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
@@ -62,7 +62,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
62
62
|
|
|
63
63
|
// @ts-ignore
|
|
64
64
|
const _onChainAttributeCount = await contractPromise.query['psp34Traits::getAttributeCount'](this.addresses[0], {
|
|
65
|
-
gasLimit: (0,
|
|
65
|
+
gasLimit: (0, _utils.getDefaultWeightV2)((_this$substrateApi = this.substrateApi) === null || _this$substrateApi === void 0 ? void 0 : _this$substrateApi.api)
|
|
66
66
|
});
|
|
67
67
|
const _attributeCount = _onChainAttributeCount === null || _onChainAttributeCount === void 0 ? void 0 : (_onChainAttributeCoun = _onChainAttributeCount.output) === null || _onChainAttributeCoun === void 0 ? void 0 : _onChainAttributeCoun.toJSON();
|
|
68
68
|
const onChainAttributeCount = _onChainAttributeCount.output ? (_attributeCount === null || _attributeCount === void 0 ? void 0 : _attributeCount.ok) || (_attributeCount === null || _attributeCount === void 0 ? void 0 : _attributeCount.Ok) : '0';
|
|
@@ -97,14 +97,14 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
97
97
|
if (!parsedTokenUri) {
|
|
98
98
|
return undefined;
|
|
99
99
|
}
|
|
100
|
-
const nftItemImageSrc = `${(0,
|
|
100
|
+
const nftItemImageSrc = `${(0, _utils2.itemImageApiFromArtZero)(this.chain)}?input=${parsedTokenUri}&size=500`;
|
|
101
101
|
const collectionImageUrl = await fetch(nftItemImageSrc);
|
|
102
102
|
return await collectionImageUrl.text();
|
|
103
103
|
}
|
|
104
104
|
async parseFeaturedCollectionImage(smartContract) {
|
|
105
105
|
const urlencoded = new URLSearchParams();
|
|
106
106
|
urlencoded.append('collection_address', smartContract);
|
|
107
|
-
const resp = await fetch((0,
|
|
107
|
+
const resp = await fetch((0, _utils2.collectionDetailApiFromArtZero)(this.chain), {
|
|
108
108
|
method: 'POST',
|
|
109
109
|
headers: {
|
|
110
110
|
'Content-Type': 'application/x-www-form-urlencoded'
|
|
@@ -123,7 +123,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
123
123
|
if (!parsedCollectionImage) {
|
|
124
124
|
return;
|
|
125
125
|
}
|
|
126
|
-
const collectionImageSrc = `${(0,
|
|
126
|
+
const collectionImageSrc = `${(0, _utils2.itemImageApiFromArtZero)(this.chain)}?input=${parsedCollectionImage}&size=500`;
|
|
127
127
|
const collectionImageUrl = await fetch(collectionImageSrc);
|
|
128
128
|
return await collectionImageUrl.text();
|
|
129
129
|
}
|
|
@@ -216,7 +216,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
216
216
|
if (isFeatured) {
|
|
217
217
|
const parsedTokenUri = this.parseFeaturedTokenUri(tokenUri);
|
|
218
218
|
if (parsedTokenUri) {
|
|
219
|
-
const resp = await fetch(`${(0,
|
|
219
|
+
const resp = await fetch(`${(0, _utils2.ipfsApiFromArtZero)(this.chain)}?input=${parsedTokenUri}`);
|
|
220
220
|
itemDetail = resp && resp.ok && (await resp.json());
|
|
221
221
|
}
|
|
222
222
|
} else {
|
|
@@ -235,7 +235,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
235
235
|
const rawImageSrc = itemDetail.image ? itemDetail.image : itemDetail.image_url;
|
|
236
236
|
if (isFeatured) {
|
|
237
237
|
nftItem.image = await this.parseFeaturedNftImage(rawImageSrc);
|
|
238
|
-
nftItem.externalUrl = (0,
|
|
238
|
+
nftItem.externalUrl = (0, _utils2.externalUrlOnArtZero)(this.chain);
|
|
239
239
|
} else {
|
|
240
240
|
nftItem.image = this.parseUrl(rawImageSrc);
|
|
241
241
|
}
|
|
@@ -262,7 +262,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
262
262
|
};
|
|
263
263
|
const _isFeatured = isFeatured && !_domain.AZERO_DOMAIN_CONTRACTS.includes(contractPromise.address.toString());
|
|
264
264
|
const _tokenUri = await contractPromise.query[(0, _wasm.getTokenUriMethod)(contractPromise.address.toString())](address, {
|
|
265
|
-
gasLimit: (0,
|
|
265
|
+
gasLimit: (0, _utils.getDefaultWeightV2)((_this$substrateApi2 = this.substrateApi) === null || _this$substrateApi2 === void 0 ? void 0 : _this$substrateApi2.api)
|
|
266
266
|
}, (0, _wasm.isAzeroDomainNft)(contractPromise.address.toString()) ? {
|
|
267
267
|
bytes: tokenId
|
|
268
268
|
} : tokenId);
|
|
@@ -275,7 +275,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
275
275
|
if (_isFeatured) {
|
|
276
276
|
const parsedTokenUri = this.parseFeaturedTokenUri(tokenUri);
|
|
277
277
|
if (parsedTokenUri) {
|
|
278
|
-
const resp = await fetch(`${(0,
|
|
278
|
+
const resp = await fetch(`${(0, _utils2.ipfsApiFromArtZero)(this.chain)}?input=${parsedTokenUri}`);
|
|
279
279
|
itemDetail = resp && resp.ok && (await resp.json());
|
|
280
280
|
}
|
|
281
281
|
} else {
|
|
@@ -300,7 +300,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
300
300
|
const rawImageSrc = itemDetail.image ? itemDetail.image : itemDetail.image_url;
|
|
301
301
|
if (_isFeatured) {
|
|
302
302
|
nftItem.image = await this.parseFeaturedNftImage(rawImageSrc);
|
|
303
|
-
nftItem.externalUrl = (0,
|
|
303
|
+
nftItem.externalUrl = (0, _utils2.externalUrlOnArtZero)(this.chain);
|
|
304
304
|
} else {
|
|
305
305
|
nftItem.image = this.parseUrl(rawImageSrc);
|
|
306
306
|
}
|
|
@@ -329,7 +329,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
329
329
|
}
|
|
330
330
|
const nftIds = [];
|
|
331
331
|
const _balance = await contractPromise.query['psp34::balanceOf'](address, {
|
|
332
|
-
gasLimit: (0,
|
|
332
|
+
gasLimit: (0, _utils.getDefaultWeightV2)((_this$substrateApi3 = this.substrateApi) === null || _this$substrateApi3 === void 0 ? void 0 : _this$substrateApi3.api)
|
|
333
333
|
}, address);
|
|
334
334
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
335
335
|
const balanceJson = _balance === null || _balance === void 0 ? void 0 : (_balance$output = _balance.output) === null || _balance$output === void 0 ? void 0 : _balance$output.toJSON();
|
|
@@ -346,7 +346,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
346
346
|
await Promise.all(itemIndexes.map(async i => {
|
|
347
347
|
var _this$substrateApi4;
|
|
348
348
|
const _tokenByIndexResp = await contractPromise.query['psp34Enumerable::ownersTokenByIndex'](address, {
|
|
349
|
-
gasLimit: (0,
|
|
349
|
+
gasLimit: (0, _utils.getDefaultWeightV2)((_this$substrateApi4 = this.substrateApi) === null || _this$substrateApi4 === void 0 ? void 0 : _this$substrateApi4.api)
|
|
350
350
|
}, address, i);
|
|
351
351
|
if (_tokenByIndexResp.output) {
|
|
352
352
|
const rawTokenId = _tokenByIndexResp.output.toHuman();
|
|
@@ -364,7 +364,7 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
364
364
|
if (isAttributeOnChain) {
|
|
365
365
|
var _this$substrateApi5, _tokenUri$output;
|
|
366
366
|
const _tokenUri = await contractPromise.query['psp34Traits::getAttributes'](address, {
|
|
367
|
-
gasLimit: (0,
|
|
367
|
+
gasLimit: (0, _utils.getDefaultWeightV2)((_this$substrateApi5 = this.substrateApi) === null || _this$substrateApi5 === void 0 ? void 0 : _this$substrateApi5.api)
|
|
368
368
|
}, tokenIdObj, ['metadata']);
|
|
369
369
|
const tokenUriObj = (_tokenUri$output = _tokenUri.output) === null || _tokenUri$output === void 0 ? void 0 : _tokenUri$output.toJSON();
|
|
370
370
|
tokenUri = (tokenUriObj.ok || tokenUriObj.Ok)[0];
|
|
@@ -4,40 +4,19 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.YIELD_POOL_STAT_REFRESH_INTERVAL = exports.
|
|
8
|
-
exports.calculateAlternativeFee = calculateAlternativeFee;
|
|
7
|
+
exports.YIELD_POOL_STAT_REFRESH_INTERVAL = exports.YIELD_EXTRINSIC_TYPES = void 0;
|
|
9
8
|
exports.convertDerivativeToOriginToken = convertDerivativeToOriginToken;
|
|
10
|
-
exports.syntheticSelectedValidators = void 0;
|
|
11
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
12
10
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
|
-
var _types = require("@subwallet/extension-base/types");
|
|
14
11
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
15
12
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
16
13
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
17
14
|
// SPDX-License-Identifier: Apache-2.0
|
|
18
15
|
|
|
19
|
-
const syntheticSelectedValidators = ['15MLn9YQaHZ4GMkhK3qXqR5iGGSdULyJ995ctjeBgFRseyi6', '1REAJ1k691g5Eqqg9gL7vvZCBG7FCCZ8zgQkZWd4va5ESih', '1yGJ3h7TQuJWLYSsUVPZbM8aR8UsQXCqMvrFx5Fn1ktiAmq', '16GDRhRYxk42paoK6TfHAqWej8PdDDUwdDazjv4bAn4KGNeb', '13Ybj8CPEArUee78DxUAP9yX3ABmFNVQME1ZH4w8HVncHGzc', '14yx4vPAACZRhoDQm1dyvXD3QdRQyCRRCe5tj1zPomhhS29a', '14Vh8S1DzzycngbAB9vqEgPFR9JpSvmF1ezihTUES1EaHAV', '153YD8ZHD9dRh82U419bSCB5SzWhbdAFzjj4NtA5pMazR2yC', '1LUckyocmz9YzeQZHVpBvYYRGXb3rnSm2tvfz79h3G3JDgP', '14oRE62MB1SWR6h5RTx3GY5HK2oZipi1Gp3zdiLwVYLfEyRZ', '1cFsLn7o74nmjbRyDtMAnMpQMc5ZLsjgCSz9Np2mcejUK83', '15ZvLonEseaWZNy8LDkXXj3Y8bmAjxCjwvpy4pXWSL4nGSBs', '1NebF2xZHb4TJJpiqZZ3reeTo8dZov6LZ49qZqcHHbsmHfo', '1HmAqbBRrWvsqbLkvpiVDkdA2PcctUE5JUe3qokEh1FN455', '15tfUt4iQNjMyhZiJGBf4EpETE2KqtW1nfJwbBT1MvWjvcK9', '12RXTLiaYh59PokjZVhQvKzcfBEB5CvDnjKKUmDUotzcTH3S'];
|
|
20
|
-
exports.syntheticSelectedValidators = syntheticSelectedValidators;
|
|
21
|
-
function calculateAlternativeFee(feeInfo) {
|
|
22
|
-
return feeInfo.partialFee;
|
|
23
|
-
}
|
|
24
|
-
const DEFAULT_YIELD_FIRST_STEP = {
|
|
25
|
-
id: 0,
|
|
26
|
-
name: 'Fill information',
|
|
27
|
-
type: _types.YieldStepType.DEFAULT
|
|
28
|
-
};
|
|
29
|
-
exports.DEFAULT_YIELD_FIRST_STEP = DEFAULT_YIELD_FIRST_STEP;
|
|
30
16
|
const YIELD_EXTRINSIC_TYPES = [_KoniTypes.ExtrinsicType.MINT_VDOT, _KoniTypes.ExtrinsicType.MINT_LDOT, _KoniTypes.ExtrinsicType.MINT_SDOT, _KoniTypes.ExtrinsicType.MINT_QDOT, _KoniTypes.ExtrinsicType.MINT_STDOT, _KoniTypes.ExtrinsicType.REDEEM_QDOT, _KoniTypes.ExtrinsicType.REDEEM_SDOT, _KoniTypes.ExtrinsicType.REDEEM_VDOT, _KoniTypes.ExtrinsicType.REDEEM_LDOT, _KoniTypes.ExtrinsicType.REDEEM_STDOT, _KoniTypes.ExtrinsicType.STAKING_JOIN_POOL, _KoniTypes.ExtrinsicType.STAKING_CLAIM_REWARD, _KoniTypes.ExtrinsicType.STAKING_LEAVE_POOL, _KoniTypes.ExtrinsicType.STAKING_POOL_WITHDRAW];
|
|
31
17
|
exports.YIELD_EXTRINSIC_TYPES = YIELD_EXTRINSIC_TYPES;
|
|
32
18
|
const YIELD_POOL_STAT_REFRESH_INTERVAL = 90000;
|
|
33
19
|
exports.YIELD_POOL_STAT_REFRESH_INTERVAL = YIELD_POOL_STAT_REFRESH_INTERVAL;
|
|
34
|
-
const YIELD_POOL_MIN_AMOUNT_PERCENT = {
|
|
35
|
-
DOT___acala_liquid_staking: 0.98,
|
|
36
|
-
DOT___bifrost_liquid_staking: 0.99,
|
|
37
|
-
DOT___parallel_liquid_staking: 0.97,
|
|
38
|
-
default: 0.98
|
|
39
|
-
};
|
|
40
|
-
exports.YIELD_POOL_MIN_AMOUNT_PERCENT = YIELD_POOL_MIN_AMOUNT_PERCENT;
|
|
41
20
|
function convertDerivativeToOriginToken(amount, poolInfo, derivativeTokenInfo, originTokenInfo) {
|
|
42
21
|
var _poolInfo$statistic, _poolInfo$statistic$a;
|
|
43
22
|
const derivativeDecimals = (0, _utils._getAssetDecimals)(derivativeTokenInfo);
|