@subwallet/extension-base 1.3.1 → 1.3.3-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 +5 -1
- package/cjs/constants/index.js +7 -1
- package/cjs/koni/api/nft/assethub_nft/index.js +30 -7
- package/cjs/koni/api/nft/config.js +11 -1
- package/cjs/koni/api/nft/index.js +9 -0
- package/cjs/koni/api/nft/ternoa_nft/index.js +174 -0
- package/cjs/koni/api/staking/bonding/utils.js +1 -1
- package/cjs/koni/background/handlers/Extension.js +67 -32
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +9 -0
- package/cjs/services/chain-service/constants.js +2 -1
- package/cjs/services/chain-service/index.js +11 -14
- package/cjs/services/earning-service/constants/chains.js +2 -1
- package/cjs/services/earning-service/handlers/base.js +2 -1
- package/cjs/services/earning-service/handlers/native-staking/index.js +8 -1
- package/cjs/services/earning-service/handlers/native-staking/tao.js +394 -0
- package/cjs/services/earning-service/service.js +3 -0
- package/cjs/services/earning-service/utils/index.js +2 -0
- package/cjs/services/keyring-service/context/handlers/Modify.js +11 -3
- package/cjs/services/keyring-service/context/state.js +2 -3
- package/cjs/services/keyring-service/index.js +1 -1
- package/cjs/services/swap-service/handler/chainflip-handler.js +13 -5
- package/cjs/services/transaction-service/utils.js +6 -0
- package/cjs/types/swap/index.js +4 -2
- package/cjs/utils/account/derive/info/solo.js +2 -0
- package/cjs/utils/account/derive/info/unified.js +2 -0
- package/cjs/utils/account/transform.js +4 -4
- package/constants/index.d.ts +2 -0
- package/constants/index.js +2 -0
- package/koni/api/nft/assethub_nft/index.d.ts +2 -0
- package/koni/api/nft/assethub_nft/index.js +30 -7
- package/koni/api/nft/config.d.ts +4 -0
- package/koni/api/nft/config.js +6 -0
- package/koni/api/nft/index.js +9 -0
- package/koni/api/nft/ternoa_nft/index.d.ts +32 -0
- package/koni/api/nft/ternoa_nft/index.js +167 -0
- package/koni/api/staking/bonding/utils.js +1 -1
- package/koni/background/handlers/Extension.d.ts +1 -0
- package/koni/background/handlers/Extension.js +38 -3
- package/package.json +16 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/helpers/subscribe/substrate/index.js +9 -0
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +2 -1
- package/services/chain-service/index.js +11 -14
- package/services/earning-service/constants/chains.d.ts +1 -0
- package/services/earning-service/constants/chains.js +2 -1
- package/services/earning-service/handlers/base.js +2 -1
- package/services/earning-service/handlers/native-staking/index.d.ts +1 -0
- package/services/earning-service/handlers/native-staking/index.js +2 -1
- package/services/earning-service/handlers/native-staking/tao.d.ts +49 -0
- package/services/earning-service/handlers/native-staking/tao.js +378 -0
- package/services/earning-service/service.js +4 -1
- package/services/earning-service/utils/index.js +2 -0
- package/services/keyring-service/context/handlers/Modify.js +11 -3
- package/services/keyring-service/context/state.js +2 -3
- package/services/keyring-service/index.d.ts +1 -1
- package/services/keyring-service/index.js +1 -1
- package/services/swap-service/handler/chainflip-handler.js +13 -5
- package/services/transaction-service/utils.js +6 -0
- package/types/swap/index.d.ts +1 -0
- package/types/swap/index.js +2 -1
- package/utils/account/derive/info/solo.js +2 -0
- package/utils/account/derive/info/unified.js +2 -0
- package/utils/account/transform.js +4 -4
|
@@ -1405,6 +1405,10 @@ export interface ResponseSubscribeHistory {
|
|
|
1405
1405
|
id: string;
|
|
1406
1406
|
items: TransactionHistoryItem[];
|
|
1407
1407
|
}
|
|
1408
|
+
export interface ResponseNftImport {
|
|
1409
|
+
success: boolean;
|
|
1410
|
+
error: string;
|
|
1411
|
+
}
|
|
1408
1412
|
export declare type _Address = string;
|
|
1409
1413
|
export declare type _BalanceMetadata = unknown;
|
|
1410
1414
|
export interface KoniRequestSignatures {
|
|
@@ -1434,7 +1438,7 @@ export interface KoniRequestSignatures {
|
|
|
1434
1438
|
'pri(chainService.disableChain)': [string, boolean];
|
|
1435
1439
|
'pri(chainService.removeChain)': [string, boolean];
|
|
1436
1440
|
'pri(chainService.deleteCustomAsset)': [string, boolean];
|
|
1437
|
-
'pri(chainService.upsertCustomAsset)': [Record<string, any>,
|
|
1441
|
+
'pri(chainService.upsertCustomAsset)': [Record<string, any>, ResponseNftImport];
|
|
1438
1442
|
'pri(chainService.validateCustomAsset)': [_ValidateCustomAssetRequest, _ValidateCustomAssetResponse];
|
|
1439
1443
|
'pri(chainService.resetDefaultChains)': [null, boolean];
|
|
1440
1444
|
'pri(chainService.getSupportedContractTypes)': [null, string[]];
|
package/cjs/constants/index.js
CHANGED
|
@@ -23,6 +23,8 @@ var _exportNames = {
|
|
|
23
23
|
CRON_RECOVER_HISTORY_INTERVAL: true,
|
|
24
24
|
CRON_SYNC_MANTA_PAY: true,
|
|
25
25
|
MANTA_PAY_BALANCE_INTERVAL: true,
|
|
26
|
+
BITTENSOR_REFRESH_STAKE_INFO: true,
|
|
27
|
+
BITTENSOR_REFRESH_STAKE_APY: true,
|
|
26
28
|
CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL: true,
|
|
27
29
|
ALL_ACCOUNT_KEY: true,
|
|
28
30
|
ALL_NETWORK_KEY: true,
|
|
@@ -38,7 +40,7 @@ var _exportNames = {
|
|
|
38
40
|
ORDINAL_METHODS: true,
|
|
39
41
|
PERMISSIONS_TO_REVOKE: true
|
|
40
42
|
};
|
|
41
|
-
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_GET_API_MAP_STATUS = exports.CRON_AUTO_RECOVER_WEB3_INTERVAL = exports.CRON_AUTO_RECOVER_DOTSAMA_INTERVAL = 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;
|
|
43
|
+
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_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;
|
|
42
44
|
var _blockedActionsList = require("./blocked-actions-list");
|
|
43
45
|
Object.keys(_blockedActionsList).forEach(function (key) {
|
|
44
46
|
if (key === "default" || key === "__esModule") return;
|
|
@@ -140,6 +142,10 @@ const CRON_SYNC_MANTA_PAY = 300000;
|
|
|
140
142
|
exports.CRON_SYNC_MANTA_PAY = CRON_SYNC_MANTA_PAY;
|
|
141
143
|
const MANTA_PAY_BALANCE_INTERVAL = 30000;
|
|
142
144
|
exports.MANTA_PAY_BALANCE_INTERVAL = MANTA_PAY_BALANCE_INTERVAL;
|
|
145
|
+
const BITTENSOR_REFRESH_STAKE_INFO = 30000;
|
|
146
|
+
exports.BITTENSOR_REFRESH_STAKE_INFO = BITTENSOR_REFRESH_STAKE_INFO;
|
|
147
|
+
const BITTENSOR_REFRESH_STAKE_APY = 300000;
|
|
148
|
+
exports.BITTENSOR_REFRESH_STAKE_APY = BITTENSOR_REFRESH_STAKE_APY;
|
|
143
149
|
const CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = 15 * BASE_MINUTE_INTERVAL;
|
|
144
150
|
exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL;
|
|
145
151
|
const ALL_ACCOUNT_KEY = 'ALL';
|
|
@@ -30,6 +30,21 @@ class AssetHubNftsPalletApi extends _nft.BaseNftApi {
|
|
|
30
30
|
}
|
|
31
31
|
}).then(res => res.json());
|
|
32
32
|
}
|
|
33
|
+
processImageUrl(image, isKodadot, isTokenInfo) {
|
|
34
|
+
if (!image) {
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
if (isKodadot) {
|
|
38
|
+
return isTokenInfo ? image.replace('ipfs://ipfs/', 'https://image.w.kodadot.xyz/ipfs/') : image.replace('ipfs://', 'https://image.w.kodadot.xyz/ipfs/');
|
|
39
|
+
}
|
|
40
|
+
return this.parseUrl(image);
|
|
41
|
+
}
|
|
42
|
+
parseTokenInfo(tokenInfo, classId) {
|
|
43
|
+
if (classId === '244' && tokenInfo) {
|
|
44
|
+
return JSON.parse(tokenInfo);
|
|
45
|
+
}
|
|
46
|
+
return tokenInfo;
|
|
47
|
+
}
|
|
33
48
|
|
|
34
49
|
/**
|
|
35
50
|
* Retrieve id of NFTs
|
|
@@ -87,8 +102,6 @@ class AssetHubNftsPalletApi extends _nft.BaseNftApi {
|
|
|
87
102
|
return this.getMetadata(collectionMetadata === null || collectionMetadata === void 0 ? void 0 : collectionMetadata.data);
|
|
88
103
|
}
|
|
89
104
|
async handleNft(address, params) {
|
|
90
|
-
// const start = performance.now();
|
|
91
|
-
|
|
92
105
|
const assetIds = await this.getNfts([address]);
|
|
93
106
|
try {
|
|
94
107
|
if (!assetIds || assetIds.length === 0) {
|
|
@@ -97,18 +110,28 @@ class AssetHubNftsPalletApi extends _nft.BaseNftApi {
|
|
|
97
110
|
const collectionIds = [];
|
|
98
111
|
const nftIds = [];
|
|
99
112
|
await Promise.all(assetIds.map(async assetId => {
|
|
113
|
+
var _tokenInfo2, _tokenInfo3, _tokenInfo4;
|
|
100
114
|
const parsedClassId = this.parseTokenId(assetId.classId);
|
|
101
115
|
const parsedTokenId = this.parseTokenId(assetId.tokenId);
|
|
102
116
|
if (!collectionIds.includes(parsedClassId)) {
|
|
103
117
|
collectionIds.push(parsedClassId);
|
|
104
118
|
}
|
|
105
119
|
nftIds.push(parsedTokenId);
|
|
106
|
-
|
|
120
|
+
let [tokenInfo, collectionMeta] = await Promise.all([this.getTokenDetails(assetId), this.getCollectionDetail(parseInt(parsedClassId))]);
|
|
121
|
+
const isKodadot = assetId.classId === '244';
|
|
122
|
+
tokenInfo = this.parseTokenInfo(tokenInfo, assetId.classId);
|
|
123
|
+
if (tokenInfo) {
|
|
124
|
+
var _tokenInfo;
|
|
125
|
+
tokenInfo.image = this.processImageUrl((_tokenInfo = tokenInfo) === null || _tokenInfo === void 0 ? void 0 : _tokenInfo.image, isKodadot, true);
|
|
126
|
+
}
|
|
127
|
+
if (collectionMeta) {
|
|
128
|
+
collectionMeta.image = this.processImageUrl(collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.image, isKodadot, false);
|
|
129
|
+
}
|
|
107
130
|
const parsedNft = {
|
|
108
131
|
id: parsedTokenId,
|
|
109
|
-
name: tokenInfo === null ||
|
|
110
|
-
description: tokenInfo === null ||
|
|
111
|
-
image:
|
|
132
|
+
name: (_tokenInfo2 = tokenInfo) === null || _tokenInfo2 === void 0 ? void 0 : _tokenInfo2.name,
|
|
133
|
+
description: (_tokenInfo3 = tokenInfo) === null || _tokenInfo3 === void 0 ? void 0 : _tokenInfo3.description,
|
|
134
|
+
image: (_tokenInfo4 = tokenInfo) === null || _tokenInfo4 === void 0 ? void 0 : _tokenInfo4.image,
|
|
112
135
|
collectionId: this.parseTokenId(parsedClassId),
|
|
113
136
|
chain: this.chain,
|
|
114
137
|
owner: address,
|
|
@@ -119,7 +142,7 @@ class AssetHubNftsPalletApi extends _nft.BaseNftApi {
|
|
|
119
142
|
collectionId: parsedClassId,
|
|
120
143
|
chain: this.chain,
|
|
121
144
|
collectionName: collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.name,
|
|
122
|
-
image: collectionMeta
|
|
145
|
+
image: collectionMeta === null || collectionMeta === void 0 ? void 0 : collectionMeta.image
|
|
123
146
|
};
|
|
124
147
|
params.updateCollection(this.chain, parsedCollection);
|
|
125
148
|
}));
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = exports.BIT_AVATAR_API = exports.AVAIL_LIGHT_CLIENT_NFT = void 0;
|
|
6
|
+
exports.W3S_IPFS = exports.VARA_SCAN_ENDPOINT = exports.UNSUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.UNIQUE_SCAN_ENDPOINT = exports.UNIQUE_IPFS_GATEWAY = exports.TRANSFER_CHAIN_ID = exports.TERNOA_MAINNET_GATEWAY = exports.TERNOA_MAINNET_CLIENT_NFT = exports.TERNOA_ALPHANET_GATEWAY = exports.TERNOA_ALPHANET_CLIENT_NFT = exports.SUPPORTED_TRANSFER_SUBSTRATE_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN_NAME = exports.SUPPORTED_TRANSFER_EVM_CHAIN = exports.SUPPORTED_NFT_NETWORKS = exports.SUBWALLET_IPFS = exports.SINGULAR_V2_ENDPOINT = exports.SINGULAR_V2_COLLECTION_ENDPOINT = exports.SINGULAR_V1_ENDPOINT = exports.SINGULAR_V1_COLLECTION_ENDPOINT = exports.RMRK_PINATA_SERVER = exports.QUARTZ_SCAN_ENDPOINT = exports.PINATA_IPFS_GATEWAY = exports.OPAL_SCAN_ENDPOINT = exports.NFT_STORAGE_GATEWAY = exports.KANARIA_EXTERNAL_SERVER = exports.KANARIA_ENDPOINT = exports.IPFS_W3S_LINK = exports.IPFS_IO = exports.IPFS_GATEWAY_4EVERLAND = exports.IPFS_FLEEK = exports.IPFS_ETH_ARAGON = exports.IPFS2_RMRK = exports.GATEWAY_IPFS_IO = exports.DWEB_LINK = exports.CLOUDFLARE_PINATA_SERVER = exports.CF_IPFS_GATEWAY = exports.BIT_COUNTRY_THUMBNAIL_RESOLVER = exports.BIT_COUNTRY_LAND_ESTATE_METADATA_API = exports.BIT_COUNTRY_IPFS_SERVER = exports.BIT_AVATAR_API = exports.AVAIL_LIGHT_CLIENT_NFT = void 0;
|
|
7
7
|
exports.getRandomIpfsGateway = getRandomIpfsGateway;
|
|
8
8
|
var _environment = require("@subwallet/extension-base/utils/environment");
|
|
9
9
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -77,7 +77,17 @@ const IPFS_IO = 'https://ipfs.io/ipfs/';
|
|
|
77
77
|
// XOrigin
|
|
78
78
|
exports.IPFS_IO = IPFS_IO;
|
|
79
79
|
const DWEB_LINK = 'https://dweb.link/ipfs/';
|
|
80
|
+
|
|
81
|
+
// XOrigin
|
|
80
82
|
exports.DWEB_LINK = DWEB_LINK;
|
|
83
|
+
const TERNOA_MAINNET_CLIENT_NFT = 'https://indexer-mainnet.ternoa.dev';
|
|
84
|
+
exports.TERNOA_MAINNET_CLIENT_NFT = TERNOA_MAINNET_CLIENT_NFT;
|
|
85
|
+
const TERNOA_ALPHANET_CLIENT_NFT = 'https://indexer-alphanet.ternoa.dev';
|
|
86
|
+
exports.TERNOA_ALPHANET_CLIENT_NFT = TERNOA_ALPHANET_CLIENT_NFT;
|
|
87
|
+
const TERNOA_MAINNET_GATEWAY = 'https://ipfs-mainnet.trnnfr.com/ipfs/';
|
|
88
|
+
exports.TERNOA_MAINNET_GATEWAY = TERNOA_MAINNET_GATEWAY;
|
|
89
|
+
const TERNOA_ALPHANET_GATEWAY = 'https://ipfs-dev.trnnfr.com/ipfs/';
|
|
90
|
+
exports.TERNOA_ALPHANET_GATEWAY = TERNOA_ALPHANET_GATEWAY;
|
|
81
91
|
const IPFS_GATEWAY_4EVERLAND = 'https://4everland.io/ipfs/';
|
|
82
92
|
exports.IPFS_GATEWAY_4EVERLAND = IPFS_GATEWAY_4EVERLAND;
|
|
83
93
|
const IPFS_FLEEK = 'https://ipfs.fleek.co/ipfs/';
|
|
@@ -20,6 +20,7 @@ var _constants = require("@subwallet/extension-base/services/chain-service/const
|
|
|
20
20
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
21
21
|
var _utils2 = require("@subwallet/extension-base/utils");
|
|
22
22
|
var _assethub_nft = _interopRequireDefault(require("./assethub_nft"));
|
|
23
|
+
var _ternoa_nft = require("./ternoa_nft");
|
|
23
24
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
24
25
|
// SPDX-License-Identifier: Apache-2.0
|
|
25
26
|
|
|
@@ -50,6 +51,8 @@ function createSubstrateNftApi(chain, substrateApi, addresses) {
|
|
|
50
51
|
return [new _vara_nft.VaraNftApi(chain, substrateAddresses)];
|
|
51
52
|
} else if (_constants._NFT_CHAIN_GROUP.avail.includes(chain)) {
|
|
52
53
|
return [new _blobinscription.BlobInscriptionApi(chain, substrateAddresses)];
|
|
54
|
+
} else if (_constants._NFT_CHAIN_GROUP.ternoa.includes(chain)) {
|
|
55
|
+
return [new _ternoa_nft.TernoaNftApi(substrateApi, substrateAddresses, chain)];
|
|
53
56
|
}
|
|
54
57
|
return null;
|
|
55
58
|
}
|
|
@@ -148,6 +151,12 @@ class NftHandler {
|
|
|
148
151
|
this.handlers.push(...handlers);
|
|
149
152
|
}
|
|
150
153
|
}
|
|
154
|
+
if (chain === 'ternoa') {
|
|
155
|
+
const handlers = createSubstrateNftApi(chain, this.substrateApiMap[chain], substrateAddresses);
|
|
156
|
+
if (handlers && !!handlers.length) {
|
|
157
|
+
this.handlers.push(...handlers);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
151
160
|
if ((0, _utils._isChainSupportWasmNft)(chainInfo)) {
|
|
152
161
|
if (this.substrateApiMap[chain]) {
|
|
153
162
|
const handler = createWasmNftApi(chain, this.substrateApiMap[chain], substrateAddresses);
|
|
@@ -0,0 +1,174 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TernoaNftApi = void 0;
|
|
7
|
+
var _utils = require("@subwallet/extension-base/utils");
|
|
8
|
+
var _utilCrypto = require("@polkadot/util-crypto");
|
|
9
|
+
var _config = require("../config");
|
|
10
|
+
var _nft = require("../nft");
|
|
11
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
|
|
14
|
+
class TernoaNftApi extends _nft.BaseNftApi {
|
|
15
|
+
constructor(api, addresses, chain) {
|
|
16
|
+
super(chain, api, addresses);
|
|
17
|
+
}
|
|
18
|
+
endpoint = _config.TERNOA_MAINNET_CLIENT_NFT;
|
|
19
|
+
parseUrl(input) {
|
|
20
|
+
return (0, _utils.baseParseIPFSUrl)(input, _config.TERNOA_MAINNET_GATEWAY);
|
|
21
|
+
}
|
|
22
|
+
static parseNftRequest(address) {
|
|
23
|
+
return {
|
|
24
|
+
query: `
|
|
25
|
+
query {
|
|
26
|
+
nftEntities(
|
|
27
|
+
filter: {
|
|
28
|
+
owner: { equalTo: "${address}" }
|
|
29
|
+
}
|
|
30
|
+
) {
|
|
31
|
+
totalCount
|
|
32
|
+
nodes {
|
|
33
|
+
nftId
|
|
34
|
+
owner
|
|
35
|
+
creator
|
|
36
|
+
collectionId
|
|
37
|
+
offchainData
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}`
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
/* GET NFTs */
|
|
45
|
+
|
|
46
|
+
async fetchNftsWithDetail(address) {
|
|
47
|
+
const query = TernoaNftApi.parseNftRequest(address);
|
|
48
|
+
try {
|
|
49
|
+
const response = await fetch(this.endpoint, {
|
|
50
|
+
method: 'POST',
|
|
51
|
+
headers: {
|
|
52
|
+
'Content-Type': 'application/json'
|
|
53
|
+
},
|
|
54
|
+
body: JSON.stringify(query)
|
|
55
|
+
});
|
|
56
|
+
const result = await response.json();
|
|
57
|
+
const nftEntities = result.data.nftEntities.nodes;
|
|
58
|
+
if (!nftEntities) {
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
const nftDetails = await Promise.all(nftEntities.map(async nft => {
|
|
62
|
+
const ipfsUrl = `${_config.TERNOA_MAINNET_GATEWAY}${nft.offchainData}`;
|
|
63
|
+
try {
|
|
64
|
+
const ipfsResponse = await fetch(ipfsUrl);
|
|
65
|
+
const nftDetail = await ipfsResponse.json();
|
|
66
|
+
nftDetail.image = `${_config.TERNOA_MAINNET_GATEWAY}${nftDetail.image}`;
|
|
67
|
+
return {
|
|
68
|
+
metadata: nft,
|
|
69
|
+
detail: nftDetail
|
|
70
|
+
};
|
|
71
|
+
} catch (err) {
|
|
72
|
+
console.error('Error:', err);
|
|
73
|
+
return null;
|
|
74
|
+
}
|
|
75
|
+
}));
|
|
76
|
+
return nftDetails.filter(nft => nft !== null);
|
|
77
|
+
} catch (err) {
|
|
78
|
+
console.error('Error:', err);
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
/* GET NFTs */
|
|
84
|
+
|
|
85
|
+
/* GET Collection */
|
|
86
|
+
|
|
87
|
+
async getCollectionDetail(collectionId) {
|
|
88
|
+
if (!this.substrateApi) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
92
|
+
try {
|
|
93
|
+
const collectionMetadata = (await substrateApi.api.query.nft.collections(parseInt(collectionId))).toHuman();
|
|
94
|
+
if (!(collectionMetadata !== null && collectionMetadata !== void 0 && collectionMetadata.offchainData)) {
|
|
95
|
+
return null;
|
|
96
|
+
}
|
|
97
|
+
const ipfsUrl = `${_config.TERNOA_MAINNET_GATEWAY}${collectionMetadata.offchainData}`;
|
|
98
|
+
const ipfsResponse = await fetch(ipfsUrl);
|
|
99
|
+
if (!ipfsResponse.ok) {
|
|
100
|
+
return {
|
|
101
|
+
name: collectionMetadata.offchainData,
|
|
102
|
+
banner_image: ''
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
const collectionDetail = await ipfsResponse.json();
|
|
106
|
+
collectionDetail.banner_image = `${_config.TERNOA_MAINNET_GATEWAY}${collectionDetail.banner_image}`;
|
|
107
|
+
return collectionDetail;
|
|
108
|
+
} catch (err) {
|
|
109
|
+
console.error('Error:', err);
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
/* Get Collection */
|
|
115
|
+
|
|
116
|
+
async handleNfts(params) {
|
|
117
|
+
const collectionMap = new Map();
|
|
118
|
+
await Promise.all(this.addresses.map(async address => {
|
|
119
|
+
address = (0, _utilCrypto.encodeAddress)((0, _utilCrypto.decodeAddress)(address), 42);
|
|
120
|
+
const nftDetails = await this.fetchNftsWithDetail(address);
|
|
121
|
+
if (!nftDetails || nftDetails.length === 0) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
|
|
125
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
126
|
+
await Promise.all(nftDetails.map(async nft => {
|
|
127
|
+
const {
|
|
128
|
+
detail,
|
|
129
|
+
metadata
|
|
130
|
+
} = nft;
|
|
131
|
+
let collectionId = metadata.collectionId;
|
|
132
|
+
if (!collectionId) {
|
|
133
|
+
collectionId = 'Ternoa_Collection';
|
|
134
|
+
}
|
|
135
|
+
const parsedNft = {
|
|
136
|
+
id: metadata.nftId,
|
|
137
|
+
name: detail.title,
|
|
138
|
+
description: detail.description,
|
|
139
|
+
image: detail.image ? this.parseUrl(detail.image) : undefined,
|
|
140
|
+
collectionId,
|
|
141
|
+
chain: this.chain,
|
|
142
|
+
owner: address
|
|
143
|
+
};
|
|
144
|
+
params.updateItem(this.chain, parsedNft, address);
|
|
145
|
+
if (!collectionMap.has(collectionId)) {
|
|
146
|
+
collectionMap.set(collectionId, true);
|
|
147
|
+
}
|
|
148
|
+
}));
|
|
149
|
+
}));
|
|
150
|
+
for (const collectionId of collectionMap.keys()) {
|
|
151
|
+
const collectionDetail = collectionId !== 'Ternoa_Collection' ? await this.getCollectionDetail(collectionId) : {
|
|
152
|
+
name: 'Ternoa NFTs',
|
|
153
|
+
description: 'Collection for NFTs without a specific collection',
|
|
154
|
+
banner_image: ''
|
|
155
|
+
};
|
|
156
|
+
const parsedCollection = {
|
|
157
|
+
collectionId,
|
|
158
|
+
chain: this.chain,
|
|
159
|
+
collectionName: collectionDetail === null || collectionDetail === void 0 ? void 0 : collectionDetail.name,
|
|
160
|
+
image: collectionDetail !== null && collectionDetail !== void 0 && collectionDetail.banner_image ? this.parseUrl(collectionDetail === null || collectionDetail === void 0 ? void 0 : collectionDetail.banner_image) : undefined
|
|
161
|
+
};
|
|
162
|
+
params.updateCollection(this.chain, parsedCollection);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
async fetchNfts(params) {
|
|
166
|
+
try {
|
|
167
|
+
await this.handleNfts(params);
|
|
168
|
+
} catch (e) {
|
|
169
|
+
return 0;
|
|
170
|
+
}
|
|
171
|
+
return 1;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
exports.TernoaNftApi = TernoaNftApi;
|
|
@@ -369,7 +369,7 @@ function getEarningStatusByNominations(bnTotalActiveStake, nominationList) {
|
|
|
369
369
|
function getValidatorLabel(chain) {
|
|
370
370
|
if (_constants2._STAKING_CHAIN_GROUP.astar.includes(chain)) {
|
|
371
371
|
return 'dApp';
|
|
372
|
-
} else if (_constants2._STAKING_CHAIN_GROUP.relay.includes(chain)) {
|
|
372
|
+
} else if (_constants2._STAKING_CHAIN_GROUP.relay.includes(chain) || _constants2._STAKING_CHAIN_GROUP.bittensor.includes(chain)) {
|
|
373
373
|
return 'Validator';
|
|
374
374
|
}
|
|
375
375
|
return 'Collator';
|
|
@@ -8,6 +8,7 @@ exports.default = void 0;
|
|
|
8
8
|
exports.isJsonPayload = isJsonPayload;
|
|
9
9
|
var _common = require("@ethereumjs/common");
|
|
10
10
|
var _tx = require("@ethereumjs/tx");
|
|
11
|
+
var _types = require("@subwallet/chain-list/types");
|
|
11
12
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
12
13
|
var _helpers = require("@subwallet/extension-base/background/handlers/helpers");
|
|
13
14
|
var _subscriptions = require("@subwallet/extension-base/background/handlers/subscriptions");
|
|
@@ -32,7 +33,7 @@ var _token = require("@subwallet/extension-base/services/balance-service/transfe
|
|
|
32
33
|
var _tonTransfer = require("@subwallet/extension-base/services/balance-service/transfer/ton-transfer");
|
|
33
34
|
var _xcm = require("@subwallet/extension-base/services/balance-service/transfer/xcm");
|
|
34
35
|
var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
|
|
35
|
-
var
|
|
36
|
+
var _types2 = require("@subwallet/extension-base/services/chain-service/types");
|
|
36
37
|
var _utils4 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
37
38
|
var _constants3 = require("@subwallet/extension-base/services/request-service/constants");
|
|
38
39
|
var _constants4 = require("@subwallet/extension-base/services/setting-service/constants");
|
|
@@ -40,18 +41,18 @@ var _constants5 = require("@subwallet/extension-base/services/wallet-connect-ser
|
|
|
40
41
|
var _helpers2 = require("@subwallet/extension-base/services/wallet-connect-service/helpers");
|
|
41
42
|
var _storage = require("@subwallet/extension-base/storage");
|
|
42
43
|
var _stores = require("@subwallet/extension-base/stores");
|
|
43
|
-
var
|
|
44
|
+
var _types3 = require("@subwallet/extension-base/types");
|
|
44
45
|
var _utils5 = require("@subwallet/extension-base/utils");
|
|
45
46
|
var _parseTransaction2 = require("@subwallet/extension-base/utils/eth/parseTransaction");
|
|
46
47
|
var _extensionChains = require("@subwallet/extension-chains");
|
|
47
48
|
var _keyring = require("@subwallet/keyring");
|
|
48
|
-
var
|
|
49
|
+
var _types4 = require("@subwallet/keyring/types");
|
|
49
50
|
var _uiKeyring = require("@subwallet/ui-keyring");
|
|
50
51
|
var _utils6 = require("@walletconnect/utils");
|
|
51
52
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
52
53
|
var _i18next = require("i18next");
|
|
53
54
|
var _rxjs = require("rxjs");
|
|
54
|
-
var
|
|
55
|
+
var _types5 = require("@polkadot/types");
|
|
55
56
|
var _util = require("@polkadot/util");
|
|
56
57
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
57
58
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
@@ -200,7 +201,7 @@ class KoniExtension {
|
|
|
200
201
|
const {
|
|
201
202
|
reject
|
|
202
203
|
} = queued;
|
|
203
|
-
reject(new _TransactionError.TransactionError(
|
|
204
|
+
reject(new _TransactionError.TransactionError(_types3.BasicTxErrorType.USER_REJECT_REQUEST));
|
|
204
205
|
return true;
|
|
205
206
|
}
|
|
206
207
|
|
|
@@ -572,9 +573,9 @@ class KoniExtension {
|
|
|
572
573
|
isAddressValidWithAuthType(address, accountAuthTypes) {
|
|
573
574
|
const type = (0, _keyring.getKeypairTypeByAddress)(address);
|
|
574
575
|
const validTypes = {
|
|
575
|
-
evm:
|
|
576
|
-
substrate:
|
|
577
|
-
ton:
|
|
576
|
+
evm: _types4.EthereumKeypairTypes,
|
|
577
|
+
substrate: _types4.SubstrateKeypairTypes,
|
|
578
|
+
ton: _types4.TonKeypairTypes
|
|
578
579
|
};
|
|
579
580
|
return !!accountAuthTypes && accountAuthTypes.some(authType => {
|
|
580
581
|
var _validTypes$authType;
|
|
@@ -1246,10 +1247,10 @@ class KoniExtension {
|
|
|
1246
1247
|
};
|
|
1247
1248
|
const ignoreWarnings = [];
|
|
1248
1249
|
if (transferAll) {
|
|
1249
|
-
ignoreWarnings.push(
|
|
1250
|
+
ignoreWarnings.push(_types3.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
|
|
1250
1251
|
}
|
|
1251
1252
|
if (transferBounceable) {
|
|
1252
|
-
ignoreWarnings.push(
|
|
1253
|
+
ignoreWarnings.push(_types3.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
|
|
1253
1254
|
}
|
|
1254
1255
|
return this.#koniState.transactionService.handleTransaction({
|
|
1255
1256
|
errors,
|
|
@@ -1355,10 +1356,10 @@ class KoniExtension {
|
|
|
1355
1356
|
}
|
|
1356
1357
|
const ignoreWarnings = [];
|
|
1357
1358
|
if (transferAll) {
|
|
1358
|
-
ignoreWarnings.push(
|
|
1359
|
+
ignoreWarnings.push(_types3.BasicTxWarningCode.NOT_ENOUGH_EXISTENTIAL_DEPOSIT);
|
|
1359
1360
|
}
|
|
1360
1361
|
if (transferBounceable) {
|
|
1361
|
-
ignoreWarnings.push(
|
|
1362
|
+
ignoreWarnings.push(_types3.BasicTxWarningCode.IS_BOUNCEABLE_ADDRESS);
|
|
1362
1363
|
}
|
|
1363
1364
|
return await this.#koniState.transactionService.handleTransaction({
|
|
1364
1365
|
url: _constants3.EXTENSION_REQUEST_URL,
|
|
@@ -1452,13 +1453,47 @@ class KoniExtension {
|
|
|
1452
1453
|
return false;
|
|
1453
1454
|
}
|
|
1454
1455
|
}
|
|
1456
|
+
async validateERC721Token(data) {
|
|
1457
|
+
var _data$metadata;
|
|
1458
|
+
const evmApi = this.#koniState.getEvmApi(data.originChain);
|
|
1459
|
+
|
|
1460
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-argument
|
|
1461
|
+
const tokenContract = new evmApi.api.eth.Contract(_utils._ERC721_ABI, (_data$metadata = data.metadata) === null || _data$metadata === void 0 ? void 0 : _data$metadata.contractAddress);
|
|
1462
|
+
try {
|
|
1463
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access
|
|
1464
|
+
await tokenContract.methods.tokenOfOwnerByIndex('0xB7fdD27a8Df011816205a6e3cAA097DC4D8C2C5d', 1).call();
|
|
1465
|
+
return true;
|
|
1466
|
+
} catch (err) {
|
|
1467
|
+
const error = err;
|
|
1468
|
+
if (error.message.includes('ERC721Enumerable: owner index out of bounds')) {
|
|
1469
|
+
return true;
|
|
1470
|
+
} else {
|
|
1471
|
+
return false;
|
|
1472
|
+
}
|
|
1473
|
+
}
|
|
1474
|
+
}
|
|
1455
1475
|
async upsertCustomToken(data) {
|
|
1456
1476
|
try {
|
|
1477
|
+
if (data.assetType === _types._AssetType.ERC721) {
|
|
1478
|
+
const isCompatible = await this.validateERC721Token(data);
|
|
1479
|
+
if (!isCompatible) {
|
|
1480
|
+
return {
|
|
1481
|
+
success: false,
|
|
1482
|
+
error: 'incompatibleNFT'
|
|
1483
|
+
};
|
|
1484
|
+
}
|
|
1485
|
+
}
|
|
1457
1486
|
await this.#koniState.upsertCustomToken(data);
|
|
1458
|
-
return
|
|
1487
|
+
return {
|
|
1488
|
+
success: true,
|
|
1489
|
+
error: ''
|
|
1490
|
+
};
|
|
1459
1491
|
} catch (e) {
|
|
1460
1492
|
console.error(e);
|
|
1461
|
-
return
|
|
1493
|
+
return {
|
|
1494
|
+
success: false,
|
|
1495
|
+
error: 'Error'
|
|
1496
|
+
};
|
|
1462
1497
|
}
|
|
1463
1498
|
}
|
|
1464
1499
|
async deleteCustomAsset(assetSlug) {
|
|
@@ -1904,7 +1939,7 @@ class KoniExtension {
|
|
|
1904
1939
|
chainName: chainInfo.name
|
|
1905
1940
|
}
|
|
1906
1941
|
});
|
|
1907
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
1942
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
|
|
1908
1943
|
}
|
|
1909
1944
|
const bondingValidation = (0, _bonding.validateBondingCondition)(chainInfo, amount, selectedValidators, address, chainStakingMetadata, nominatorMetadata);
|
|
1910
1945
|
if (!amount || !selectedValidators || bondingValidation.length > 0) {
|
|
@@ -1932,7 +1967,7 @@ class KoniExtension {
|
|
|
1932
1967
|
} = inputData;
|
|
1933
1968
|
const chainStakingMetadata = await this.#koniState.getStakingMetadataByChain(chain, _KoniTypes.StakingType.NOMINATED);
|
|
1934
1969
|
if (!chainStakingMetadata || !nominatorMetadata) {
|
|
1935
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
1970
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
|
|
1936
1971
|
}
|
|
1937
1972
|
const unbondingValidation = (0, _bonding.validateUnbondingCondition)(nominatorMetadata, amount, chain, chainStakingMetadata, validatorAddress);
|
|
1938
1973
|
if (!amount || unbondingValidation.length > 0) {
|
|
@@ -1957,10 +1992,10 @@ class KoniExtension {
|
|
|
1957
1992
|
} = inputData;
|
|
1958
1993
|
const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
|
|
1959
1994
|
if (!address || !poolHandler) {
|
|
1960
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
1995
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
1961
1996
|
}
|
|
1962
1997
|
const chain = poolHandler.chain;
|
|
1963
|
-
const stakingType = poolHandler.type ===
|
|
1998
|
+
const stakingType = poolHandler.type === _types3.YieldPoolType.NOMINATION_POOL ? _KoniTypes.StakingType.POOLED : _KoniTypes.StakingType.NOMINATED;
|
|
1964
1999
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
1965
2000
|
const extrinsic = await (0, _bonding.getClaimRewardExtrinsic)(substrateApi, chain, address, stakingType, bondReward);
|
|
1966
2001
|
return await this.#koniState.transactionService.handleTransaction({
|
|
@@ -1981,7 +2016,7 @@ class KoniExtension {
|
|
|
1981
2016
|
} = inputData;
|
|
1982
2017
|
const chain = (_this$koniState$earni = this.#koniState.earningService.getPoolHandler(slug)) === null || _this$koniState$earni === void 0 ? void 0 : _this$koniState$earni.chain;
|
|
1983
2018
|
if (!chain || !selectedUnstaking) {
|
|
1984
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
2019
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
1985
2020
|
}
|
|
1986
2021
|
const substrateApi = this.#koniState.getSubstrateApi(chain);
|
|
1987
2022
|
// @ts-ignore
|
|
@@ -2011,7 +2046,7 @@ class KoniExtension {
|
|
|
2011
2046
|
chainName: chainInfo.name
|
|
2012
2047
|
}
|
|
2013
2048
|
});
|
|
2014
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
2049
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
|
|
2015
2050
|
}
|
|
2016
2051
|
const bondingValidation = (0, _relayChain.validatePoolBondingCondition)(chainInfo, amount, selectedPool, address, chainStakingMetadata, nominatorMetadata);
|
|
2017
2052
|
if (!amount || bondingValidation.length > 0) {
|
|
@@ -2043,7 +2078,7 @@ class KoniExtension {
|
|
|
2043
2078
|
chainName: chainInfo === null || chainInfo === void 0 ? void 0 : chainInfo.name
|
|
2044
2079
|
}
|
|
2045
2080
|
});
|
|
2046
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
2081
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.StakingTxErrorType.CAN_NOT_GET_METADATA, errMessage)]);
|
|
2047
2082
|
}
|
|
2048
2083
|
const unbondingValidation = (0, _relayChain.validateRelayUnbondingCondition)(amount, chainStakingMetadata, nominatorMetadata);
|
|
2049
2084
|
if (!amount || unbondingValidation.length > 0) {
|
|
@@ -2080,7 +2115,7 @@ class KoniExtension {
|
|
|
2080
2115
|
networkKey
|
|
2081
2116
|
} = inputData;
|
|
2082
2117
|
if (!address) {
|
|
2083
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
2118
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
2084
2119
|
}
|
|
2085
2120
|
const dotSamaApi = this.#koniState.getSubstrateApi(networkKey);
|
|
2086
2121
|
const chainInfo = this.#koniState.getChainInfo(networkKey);
|
|
@@ -2282,8 +2317,8 @@ class KoniExtension {
|
|
|
2282
2317
|
metadata = await this.#koniState.chainService.getMetadataByHash(payload.genesisHash);
|
|
2283
2318
|
if (metadata) {
|
|
2284
2319
|
var _chainInfo$substrateI, _chainInfo$substrateI2, _chainInfo$substrateI3, _chainInfo$substrateI4;
|
|
2285
|
-
registry = new
|
|
2286
|
-
const _metadata = new
|
|
2320
|
+
registry = new _types5.TypeRegistry();
|
|
2321
|
+
const _metadata = new _types5.Metadata(registry, metadata.hexValue);
|
|
2287
2322
|
registry.register(metadata.types);
|
|
2288
2323
|
registry.setChainProperties(registry.createType('ChainProperties', {
|
|
2289
2324
|
ss58Format: (_chainInfo$substrateI = chainInfo === null || chainInfo === void 0 ? void 0 : (_chainInfo$substrateI2 = chainInfo.substrateInfo) === null || _chainInfo$substrateI2 === void 0 ? void 0 : _chainInfo$substrateI2.addressPrefix) !== null && _chainInfo$substrateI !== void 0 ? _chainInfo$substrateI : 42,
|
|
@@ -2293,7 +2328,7 @@ class KoniExtension {
|
|
|
2293
2328
|
registry.setMetadata(_metadata, payload.signedExtensions, metadata.userExtensions);
|
|
2294
2329
|
} else {
|
|
2295
2330
|
// we have no metadata, create a new registry
|
|
2296
|
-
registry = new
|
|
2331
|
+
registry = new _types5.TypeRegistry();
|
|
2297
2332
|
registry.setSignedExtensions(payload.signedExtensions);
|
|
2298
2333
|
}
|
|
2299
2334
|
}
|
|
@@ -2319,7 +2354,7 @@ class KoniExtension {
|
|
|
2319
2354
|
}
|
|
2320
2355
|
} else {
|
|
2321
2356
|
// for non-payload, just create a registry to use
|
|
2322
|
-
registry = new
|
|
2357
|
+
registry = new _types5.TypeRegistry();
|
|
2323
2358
|
}
|
|
2324
2359
|
const result = request.sign(registry, pair);
|
|
2325
2360
|
resolve({
|
|
@@ -2722,7 +2757,7 @@ class KoniExtension {
|
|
|
2722
2757
|
const {
|
|
2723
2758
|
connectionStatus
|
|
2724
2759
|
} = this.#koniState.chainService.getChainStatusByKey(_constants2._DEFAULT_MANTA_ZK_CHAIN);
|
|
2725
|
-
if (connectionStatus !==
|
|
2760
|
+
if (connectionStatus !== _types2._ChainConnectionStatus.CONNECTED) {
|
|
2726
2761
|
// TODO: do better
|
|
2727
2762
|
await timeout();
|
|
2728
2763
|
}
|
|
@@ -2932,7 +2967,7 @@ class KoniExtension {
|
|
|
2932
2967
|
address
|
|
2933
2968
|
} = data;
|
|
2934
2969
|
if (!data) {
|
|
2935
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
2970
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
|
|
2936
2971
|
}
|
|
2937
2972
|
const isLastStep = inputData.currentStep + 1 === path.steps.length;
|
|
2938
2973
|
const yieldValidation = await this.#koniState.earningService.validateYieldJoin({
|
|
@@ -3067,7 +3102,7 @@ class KoniExtension {
|
|
|
3067
3102
|
} = params;
|
|
3068
3103
|
const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
|
|
3069
3104
|
if (!poolHandler) {
|
|
3070
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
3105
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
3071
3106
|
}
|
|
3072
3107
|
const extrinsic = await this.#koniState.earningService.handleYieldWithdraw(params);
|
|
3073
3108
|
return await this.#koniState.transactionService.handleTransaction({
|
|
@@ -3087,7 +3122,7 @@ class KoniExtension {
|
|
|
3087
3122
|
} = params;
|
|
3088
3123
|
const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
|
|
3089
3124
|
if (!poolHandler || !selectedUnstaking) {
|
|
3090
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
3125
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
3091
3126
|
}
|
|
3092
3127
|
const chain = poolHandler.chain;
|
|
3093
3128
|
const extrinsic = await this.#koniState.earningService.handleYieldCancelUnstake(params);
|
|
@@ -3107,7 +3142,7 @@ class KoniExtension {
|
|
|
3107
3142
|
} = params;
|
|
3108
3143
|
const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
|
|
3109
3144
|
if (!address || !poolHandler) {
|
|
3110
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
3145
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
|
|
3111
3146
|
}
|
|
3112
3147
|
const extrinsic = await this.#koniState.earningService.handleYieldClaimReward(params);
|
|
3113
3148
|
return await this.#koniState.transactionService.handleTransaction({
|
|
@@ -3318,7 +3353,7 @@ class KoniExtension {
|
|
|
3318
3353
|
recipient
|
|
3319
3354
|
} = inputData;
|
|
3320
3355
|
if (!quote || !address || !process) {
|
|
3321
|
-
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(
|
|
3356
|
+
return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INTERNAL_ERROR)]);
|
|
3322
3357
|
}
|
|
3323
3358
|
const isLastStep = inputData.currentStep + 1 === process.steps.length;
|
|
3324
3359
|
const swapValidations = await this.#koniState.swapService.validateSwapProcess({
|