@subwallet/extension-base 1.1.7-0 → 1.1.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 +10 -0
- package/cjs/koni/api/dotsama/domain.js +56 -0
- package/cjs/koni/api/nft/acala_nft/index.js +1 -1
- package/cjs/koni/api/nft/karura_nft/index.js +1 -1
- package/cjs/koni/api/nft/nft.js +3 -0
- package/cjs/koni/api/nft/wasm_nft/index.js +25 -7
- package/cjs/koni/api/staking/bonding/relayChain.js +12 -2
- package/cjs/koni/api/tokens/wasm/index.js +14 -0
- package/cjs/koni/background/cron.js +1 -1
- package/cjs/koni/background/handlers/Extension.js +13 -0
- package/cjs/koni/background/handlers/State.js +3 -0
- package/cjs/koni/background/subscription.js +3 -1
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/chain-service/helper/index.js +8 -2
- package/cjs/services/chain-service/index.js +20 -2
- package/cjs/services/migration-service/scripts/DeleteChain.js +21 -0
- package/cjs/services/migration-service/scripts/index.js +3 -1
- package/cjs/services/transaction-service/utils.js +4 -1
- package/cjs/services/wallet-connect-service/index.js +19 -10
- package/koni/api/dotsama/domain.d.ts +10 -0
- package/koni/api/dotsama/domain.js +41 -0
- package/koni/api/nft/acala_nft/index.js +1 -1
- package/koni/api/nft/karura_nft/index.js +1 -1
- package/koni/api/nft/nft.js +3 -0
- package/koni/api/nft/wasm_nft/index.js +26 -8
- package/koni/api/staking/bonding/relayChain.js +12 -2
- package/koni/api/tokens/wasm/index.d.ts +2 -0
- package/koni/api/tokens/wasm/index.js +13 -1
- package/koni/background/cron.js +1 -1
- package/koni/background/handlers/Extension.d.ts +2 -0
- package/koni/background/handlers/Extension.js +13 -0
- package/koni/background/handlers/State.d.ts +1 -0
- package/koni/background/handlers/State.js +3 -0
- package/koni/background/subscription.js +3 -1
- package/package.json +19 -6
- package/packageInfo.js +1 -1
- package/services/chain-service/helper/azero_domain_registry_abi.json +5428 -0
- package/services/chain-service/helper/index.d.ts +2 -0
- package/services/chain-service/helper/index.js +5 -1
- package/services/chain-service/helper/pink_psp34_abi.json +2758 -0
- package/services/chain-service/index.d.ts +1 -0
- package/services/chain-service/index.js +20 -2
- package/services/migration-service/scripts/DeleteChain.d.ts +4 -0
- package/services/migration-service/scripts/DeleteChain.js +13 -0
- package/services/migration-service/scripts/index.js +3 -1
- package/services/transaction-service/utils.js +4 -1
- package/services/wallet-connect-service/index.js +19 -10
|
@@ -1511,6 +1511,14 @@ export interface ResponseFindRawMetadata {
|
|
|
1511
1511
|
rawMetadata: string;
|
|
1512
1512
|
specVersion: number;
|
|
1513
1513
|
}
|
|
1514
|
+
export interface ResolveDomainRequest {
|
|
1515
|
+
chain: string;
|
|
1516
|
+
domain: string;
|
|
1517
|
+
}
|
|
1518
|
+
export interface ResolveAddressToDomainRequest {
|
|
1519
|
+
chain: string;
|
|
1520
|
+
address: string;
|
|
1521
|
+
}
|
|
1514
1522
|
export interface KoniRequestSignatures {
|
|
1515
1523
|
'pri(staking.submitTuringCancelCompound)': [RequestTuringCancelStakeCompound, SWTransactionResponse];
|
|
1516
1524
|
'pri(staking.submitTuringCompound)': [RequestTuringStakeCompound, SWTransactionResponse];
|
|
@@ -1606,6 +1614,8 @@ export interface KoniRequestSignatures {
|
|
|
1606
1614
|
'pri(accounts.subscribeAddresses)': [null, AddressBookInfo, AddressBookInfo];
|
|
1607
1615
|
'pri(accounts.editContact)': [RequestEditContactAccount, boolean];
|
|
1608
1616
|
'pri(accounts.deleteContact)': [RequestDeleteContactAccount, boolean];
|
|
1617
|
+
'pri(accounts.resolveDomainToAddress)': [ResolveDomainRequest, string | undefined];
|
|
1618
|
+
'pri(accounts.resolveAddressToDomain)': [ResolveAddressToDomainRequest, string | undefined];
|
|
1609
1619
|
'pri(settings.changeBalancesVisibility)': [null, boolean];
|
|
1610
1620
|
'pri(settings.subscribe)': [null, UiSettings, UiSettings];
|
|
1611
1621
|
'pri(settings.getLogoMaps)': [null, AllLogoMap];
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TZERO_ID_SUFFIX = exports.SUPPORTED_DOMAIN_SUFFIX = exports.ENS_SUFFIX = exports.CHAINS_SUPPORTED_DOMAIN = exports.AZERO_ID_SUFFIX = exports.AZERO_DOMAIN_CONTRACTS = void 0;
|
|
7
|
+
exports.isAzeroDomain = isAzeroDomain;
|
|
8
|
+
exports.resolveAzeroAddressToDomain = resolveAzeroAddressToDomain;
|
|
9
|
+
exports.resolveAzeroDomainToAddress = resolveAzeroDomainToAddress;
|
|
10
|
+
var _resolverCore = require("@azns/resolver-core");
|
|
11
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
12
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
13
|
+
|
|
14
|
+
const ENS_SUFFIX = '.eth';
|
|
15
|
+
exports.ENS_SUFFIX = ENS_SUFFIX;
|
|
16
|
+
const TZERO_ID_SUFFIX = '.tzero';
|
|
17
|
+
exports.TZERO_ID_SUFFIX = TZERO_ID_SUFFIX;
|
|
18
|
+
const AZERO_ID_SUFFIX = '.azero';
|
|
19
|
+
exports.AZERO_ID_SUFFIX = AZERO_ID_SUFFIX;
|
|
20
|
+
const SUPPORTED_DOMAIN_SUFFIX = [ENS_SUFFIX, TZERO_ID_SUFFIX, AZERO_ID_SUFFIX];
|
|
21
|
+
exports.SUPPORTED_DOMAIN_SUFFIX = SUPPORTED_DOMAIN_SUFFIX;
|
|
22
|
+
const CHAINS_SUPPORTED_DOMAIN = ['aleph', 'alephTest'];
|
|
23
|
+
exports.CHAINS_SUPPORTED_DOMAIN = CHAINS_SUPPORTED_DOMAIN;
|
|
24
|
+
const AZERO_DOMAIN_CONTRACTS = ['5FsB91tXSEuMj6akzdPczAtmBaVKToqHmtAwSUzXh49AYzaD', '5CTQBfBC9SfdrCDBJdfLiyW2pg9z5W6C6Es8sK313BLnFgDf'];
|
|
25
|
+
exports.AZERO_DOMAIN_CONTRACTS = AZERO_DOMAIN_CONTRACTS;
|
|
26
|
+
async function resolveAzeroDomainToAddress(domain, chain, api) {
|
|
27
|
+
let chainId = _resolverCore.SupportedChainId.AlephZero;
|
|
28
|
+
if (chain === 'alephTest') {
|
|
29
|
+
chainId = _resolverCore.SupportedChainId.AlephZeroTestnet;
|
|
30
|
+
}
|
|
31
|
+
const primaryDomains = await (0, _resolverCore.resolveDomainToAddress)(domain, {
|
|
32
|
+
chainId,
|
|
33
|
+
customApi: api
|
|
34
|
+
});
|
|
35
|
+
if (primaryDomains.error) {
|
|
36
|
+
console.debug(primaryDomains.error);
|
|
37
|
+
}
|
|
38
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.address) || undefined;
|
|
39
|
+
}
|
|
40
|
+
async function resolveAzeroAddressToDomain(address, chain, api) {
|
|
41
|
+
let chainId = _resolverCore.SupportedChainId.AlephZero;
|
|
42
|
+
if (chain === 'alephTest') {
|
|
43
|
+
chainId = _resolverCore.SupportedChainId.AlephZeroTestnet;
|
|
44
|
+
}
|
|
45
|
+
const primaryDomains = await (0, _resolverCore.resolveAddressToDomain)(address, {
|
|
46
|
+
chainId,
|
|
47
|
+
customApi: api
|
|
48
|
+
});
|
|
49
|
+
if (primaryDomains.error) {
|
|
50
|
+
console.debug(primaryDomains.error);
|
|
51
|
+
}
|
|
52
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.primaryDomain) || undefined;
|
|
53
|
+
}
|
|
54
|
+
function isAzeroDomain(input) {
|
|
55
|
+
return input.includes(AZERO_ID_SUFFIX) || input.includes(TZERO_ID_SUFFIX);
|
|
56
|
+
}
|
|
@@ -143,7 +143,7 @@ const getMetadata = metadataUrl => {
|
|
|
143
143
|
if (!metadataUrl) {
|
|
144
144
|
return null;
|
|
145
145
|
}
|
|
146
|
-
url = (0, _config.getRandomIpfsGateway)() + metadataUrl + '/
|
|
146
|
+
url = (0, _config.getRandomIpfsGateway)() + metadataUrl + '/azero_domain_registry_abi.json';
|
|
147
147
|
return (0, _crossFetch.default)(url, {
|
|
148
148
|
method: 'GET',
|
|
149
149
|
headers
|
|
@@ -146,7 +146,7 @@ const getKaruraMetadata = metadataUrl => {
|
|
|
146
146
|
if (!metadataUrl) {
|
|
147
147
|
return null;
|
|
148
148
|
}
|
|
149
|
-
url = (0, _config.getRandomIpfsGateway)() + metadataUrl + '/
|
|
149
|
+
url = (0, _config.getRandomIpfsGateway)() + metadataUrl + '/azero_domain_registry_abi.json';
|
|
150
150
|
return (0, _crossFetch.default)(url, {
|
|
151
151
|
method: 'GET',
|
|
152
152
|
headers: {
|
package/cjs/koni/api/nft/nft.js
CHANGED
|
@@ -6,11 +6,13 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
});
|
|
7
7
|
exports.WasmNftApi = void 0;
|
|
8
8
|
var _types = require("@subwallet/chain-list/types");
|
|
9
|
+
var _domain = require("@subwallet/extension-base/koni/api/dotsama/domain");
|
|
9
10
|
var _nft = require("@subwallet/extension-base/koni/api/nft/nft");
|
|
10
11
|
var _utils = require("@subwallet/extension-base/koni/api/nft/wasm_nft/utils");
|
|
11
12
|
var _wasm = require("@subwallet/extension-base/koni/api/tokens/wasm");
|
|
12
13
|
var _utils2 = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
13
14
|
var _utils3 = require("@subwallet/extension-base/services/chain-service/utils");
|
|
15
|
+
var _utils4 = require("@subwallet/extension-base/utils");
|
|
14
16
|
var _axios = _interopRequireDefault(require("axios"));
|
|
15
17
|
var _crossFetch = _interopRequireDefault(require("cross-fetch"));
|
|
16
18
|
var _utilCrypto = require("@polkadot/util-crypto");
|
|
@@ -76,6 +78,9 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
76
78
|
if (!tokenUri || tokenUri.length === 0) {
|
|
77
79
|
return undefined;
|
|
78
80
|
}
|
|
81
|
+
if ((0, _utils4.isUrl)(tokenUri)) {
|
|
82
|
+
return tokenUri;
|
|
83
|
+
}
|
|
79
84
|
if (tokenUri.startsWith('/ipfs/')) {
|
|
80
85
|
return tokenUri;
|
|
81
86
|
}
|
|
@@ -262,16 +267,19 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
262
267
|
owner: '',
|
|
263
268
|
name: tokenId
|
|
264
269
|
};
|
|
265
|
-
const
|
|
270
|
+
const _isFeatured = isFeatured && !_domain.AZERO_DOMAIN_CONTRACTS.includes(contractPromise.address.toString());
|
|
271
|
+
const _tokenUri = await contractPromise.query[(0, _wasm.isPinkRoboNft)(contractPromise.address.toString()) ? 'pinkMint::tokenUri' : 'psp34Traits::tokenUri'](address, {
|
|
266
272
|
gasLimit: (0, _utils2.getDefaultWeightV2)((_this$substrateApi2 = this.substrateApi) === null || _this$substrateApi2 === void 0 ? void 0 : _this$substrateApi2.api)
|
|
267
|
-
},
|
|
273
|
+
}, (0, _wasm.isAzeroDomainNft)(contractPromise.address.toString()) ? {
|
|
274
|
+
bytes: tokenId
|
|
275
|
+
} : tokenId);
|
|
268
276
|
if (_tokenUri.output) {
|
|
269
277
|
let itemDetail = false;
|
|
270
278
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
271
279
|
const _tokenUriObj = _tokenUri.output.toJSON();
|
|
272
280
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
273
|
-
const tokenUri = _tokenUriObj.Ok || _tokenUriObj.ok;
|
|
274
|
-
if (
|
|
281
|
+
const tokenUri = (0, _wasm.isPinkRoboNft)(contractPromise.address.toString()) ? _tokenUriObj.ok.ok : _tokenUriObj.Ok || _tokenUriObj.ok;
|
|
282
|
+
if (_isFeatured) {
|
|
275
283
|
const parsedTokenUri = this.parseFeaturedTokenUri(tokenUri);
|
|
276
284
|
if (parsedTokenUri) {
|
|
277
285
|
const resp = await (0, _crossFetch.default)(`${(0, _utils.ipfsApiFromArtZero)(this.chain)}?input=${parsedTokenUri}`);
|
|
@@ -283,6 +291,11 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
283
291
|
if (detailUrl) {
|
|
284
292
|
const resp = await (0, _crossFetch.default)(detailUrl);
|
|
285
293
|
itemDetail = resp && resp.ok && (await resp.json());
|
|
294
|
+
if (_domain.AZERO_DOMAIN_CONTRACTS.includes(contractPromise.address.toString())) {
|
|
295
|
+
var _itemDetail;
|
|
296
|
+
// @ts-ignore
|
|
297
|
+
itemDetail = (_itemDetail = itemDetail) === null || _itemDetail === void 0 ? void 0 : _itemDetail.metadata;
|
|
298
|
+
}
|
|
286
299
|
}
|
|
287
300
|
}
|
|
288
301
|
if (!itemDetail) {
|
|
@@ -292,14 +305,14 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
292
305
|
nftItem.description = itemDetail.description;
|
|
293
306
|
nftItem.externalUrl = itemDetail.external_url;
|
|
294
307
|
const rawImageSrc = itemDetail.image ? itemDetail.image : itemDetail.image_url;
|
|
295
|
-
if (
|
|
308
|
+
if (_isFeatured) {
|
|
296
309
|
nftItem.image = await this.parseFeaturedNftImage(rawImageSrc);
|
|
297
310
|
nftItem.externalUrl = (0, _utils.externalUrlOnArtZero)(this.chain);
|
|
298
311
|
} else {
|
|
299
312
|
nftItem.image = this.parseUrl(rawImageSrc);
|
|
300
313
|
}
|
|
301
314
|
const propertiesMap = {};
|
|
302
|
-
const traitList = itemDetail.attributes
|
|
315
|
+
const traitList = itemDetail.attributes || itemDetail.traits;
|
|
303
316
|
if (traitList) {
|
|
304
317
|
traitList.forEach(traitMap => {
|
|
305
318
|
propertiesMap[traitMap.trait_type] = {
|
|
@@ -345,8 +358,13 @@ class WasmNftApi extends _nft.BaseNftApi {
|
|
|
345
358
|
if (_tokenByIndexResp.output) {
|
|
346
359
|
const rawTokenId = _tokenByIndexResp.output.toHuman();
|
|
347
360
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-member-access
|
|
348
|
-
|
|
361
|
+
let tokenIdObj = rawTokenId.Ok.Ok || rawTokenId.ok.ok; // capital O, not normal o
|
|
349
362
|
const tokenId = Object.values(tokenIdObj)[0].replaceAll(',', '');
|
|
363
|
+
if ((0, _wasm.isAzeroDomainNft)(contractPromise.address.toString())) {
|
|
364
|
+
tokenIdObj = {
|
|
365
|
+
bytes: tokenId
|
|
366
|
+
};
|
|
367
|
+
}
|
|
350
368
|
nftIds.push(tokenId);
|
|
351
369
|
let tokenUri;
|
|
352
370
|
try {
|
|
@@ -92,23 +92,33 @@ function validateRelayBondingCondition(chainInfo, amount, selectedValidators, ad
|
|
|
92
92
|
}
|
|
93
93
|
function subscribeRelayChainStakingMetadata(chainInfo, substrateApi, callback) {
|
|
94
94
|
return substrateApi.api.query.staking.currentEra(async _currentEra => {
|
|
95
|
-
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6;
|
|
95
|
+
var _substrateApi$api$que, _substrateApi$api$que2, _substrateApi$api$que3, _substrateApi$api$que4, _substrateApi$api$que5, _substrateApi$api$que6, _substrateApi$api$que7;
|
|
96
96
|
const currentEra = _currentEra.toString();
|
|
97
97
|
const maxNominations = substrateApi.api.consts.staking.maxNominations.toString();
|
|
98
98
|
const maxUnlockingChunks = substrateApi.api.consts.staking.maxUnlockingChunks.toString();
|
|
99
99
|
const unlockingEras = substrateApi.api.consts.staking.bondingDuration.toString();
|
|
100
|
-
const [_minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.
|
|
100
|
+
const [_totalEraStake, _totalIssuance, _auctionCounter, _minNominatorBond, _minPoolJoin, _minimumActiveStake] = await Promise.all([substrateApi.api.query.staking.erasTotalStake(parseInt(currentEra)), substrateApi.api.query.balances.totalIssuance(), (_substrateApi$api$que = substrateApi.api.query.auctions) === null || _substrateApi$api$que === void 0 ? void 0 : _substrateApi$api$que.auctionCounter(), substrateApi.api.query.staking.minNominatorBond(), (_substrateApi$api$que2 = substrateApi.api.query) === null || _substrateApi$api$que2 === void 0 ? void 0 : (_substrateApi$api$que3 = _substrateApi$api$que2.nominationPools) === null || _substrateApi$api$que3 === void 0 ? void 0 : _substrateApi$api$que3.minJoinBond(), ((_substrateApi$api$que4 = substrateApi.api.query) === null || _substrateApi$api$que4 === void 0 ? void 0 : (_substrateApi$api$que5 = _substrateApi$api$que4.staking) === null || _substrateApi$api$que5 === void 0 ? void 0 : _substrateApi$api$que5.minimumActiveStake) && ((_substrateApi$api$que6 = substrateApi.api.query) === null || _substrateApi$api$que6 === void 0 ? void 0 : (_substrateApi$api$que7 = _substrateApi$api$que6.staking) === null || _substrateApi$api$que7 === void 0 ? void 0 : _substrateApi$api$que7.minimumActiveStake())]);
|
|
101
101
|
const minActiveStake = (_minimumActiveStake === null || _minimumActiveStake === void 0 ? void 0 : _minimumActiveStake.toString()) || '0';
|
|
102
102
|
const minNominatorBond = _minNominatorBond.toString();
|
|
103
103
|
const bnMinActiveStake = new _util.BN(minActiveStake);
|
|
104
104
|
const bnMinNominatorBond = new _util.BN(minNominatorBond);
|
|
105
105
|
const minStake = bnMinActiveStake.gt(bnMinNominatorBond) ? bnMinActiveStake : bnMinNominatorBond;
|
|
106
|
+
const rawTotalEraStake = _totalEraStake.toString();
|
|
107
|
+
const rawTotalIssuance = _totalIssuance.toString();
|
|
108
|
+
const numAuctions = _auctionCounter ? _auctionCounter.toHuman() : 0;
|
|
109
|
+
const bnTotalEraStake = new _util.BN(rawTotalEraStake);
|
|
110
|
+
const bnTotalIssuance = new _util.BN(rawTotalIssuance);
|
|
111
|
+
const inflation = (0, _utils.calculateInflation)(bnTotalEraStake, bnTotalIssuance, numAuctions, chainInfo.slug);
|
|
112
|
+
const expectedReturn = (0, _utils.calculateChainStakedReturn)(inflation, bnTotalEraStake, bnTotalIssuance, chainInfo.slug);
|
|
106
113
|
const minPoolJoin = (_minPoolJoin === null || _minPoolJoin === void 0 ? void 0 : _minPoolJoin.toString()) || undefined;
|
|
107
114
|
const unlockingPeriod = parseInt(unlockingEras) * (_constants._STAKING_ERA_LENGTH_MAP[chainInfo.slug] || _constants._STAKING_ERA_LENGTH_MAP.default); // in hours
|
|
108
115
|
|
|
109
116
|
callback(chainInfo.slug, {
|
|
110
117
|
chain: chainInfo.slug,
|
|
111
118
|
type: _KoniTypes.StakingType.NOMINATED,
|
|
119
|
+
expectedReturn: !_constants._STAKING_CHAIN_GROUP.ternoa.includes(chainInfo.slug) ? expectedReturn : undefined,
|
|
120
|
+
// in %, annually
|
|
121
|
+
inflation,
|
|
112
122
|
era: parseInt(currentEra),
|
|
113
123
|
minStake: minStake.toString(),
|
|
114
124
|
maxValidatorPerNominator: parseInt(maxNominations),
|
|
@@ -6,6 +6,8 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.getPSP22ContractPromise = getPSP22ContractPromise;
|
|
7
7
|
exports.getPSP34ContractPromise = getPSP34ContractPromise;
|
|
8
8
|
exports.getPSP34TransferExtrinsic = getPSP34TransferExtrinsic;
|
|
9
|
+
exports.isAzeroDomainNft = isAzeroDomainNft;
|
|
10
|
+
exports.isPinkRoboNft = isPinkRoboNft;
|
|
9
11
|
var _utils = require("@subwallet/extension-base/koni/api/tokens/wasm/utils");
|
|
10
12
|
var _helper = require("@subwallet/extension-base/services/chain-service/helper");
|
|
11
13
|
var _apiContract = require("@polkadot/api-contract");
|
|
@@ -15,7 +17,19 @@ var _apiContract = require("@polkadot/api-contract");
|
|
|
15
17
|
function getPSP22ContractPromise(apiPromise, contractAddress) {
|
|
16
18
|
return new _apiContract.ContractPromise(apiPromise, _helper._PSP22_ABI, contractAddress);
|
|
17
19
|
}
|
|
20
|
+
function isPinkRoboNft(contractAddress) {
|
|
21
|
+
return ['XoywUxTTtNKPRrRN7V5KXCqz2QLMFeK7DxhpSniqZHps5Xq'].includes(contractAddress);
|
|
22
|
+
}
|
|
23
|
+
function isAzeroDomainNft(contractAddress) {
|
|
24
|
+
return ['5FsB91tXSEuMj6akzdPczAtmBaVKToqHmtAwSUzXh49AYzaD', '5CTQBfBC9SfdrCDBJdfLiyW2pg9z5W6C6Es8sK313BLnFgDf'].includes(contractAddress);
|
|
25
|
+
}
|
|
18
26
|
function getPSP34ContractPromise(apiPromise, contractAddress) {
|
|
27
|
+
if (isPinkRoboNft(contractAddress)) {
|
|
28
|
+
return new _apiContract.ContractPromise(apiPromise, _helper._PINK_PSP34_ABI, contractAddress);
|
|
29
|
+
}
|
|
30
|
+
if (isAzeroDomainNft(contractAddress)) {
|
|
31
|
+
return new _apiContract.ContractPromise(apiPromise, _helper._AZERO_DOMAIN_REGISTRY_ABI, contractAddress);
|
|
32
|
+
}
|
|
19
33
|
return new _apiContract.ContractPromise(apiPromise, _helper._PSP34_ABI, contractAddress);
|
|
20
34
|
}
|
|
21
35
|
const mustFormatNumberReg = /^-?[0-9][0-9,.]+$/;
|
|
@@ -116,7 +116,7 @@ class KoniCron {
|
|
|
116
116
|
this.resetNft(currentAccountInfo.address);
|
|
117
117
|
this.addCron('refreshNft', this.refreshNft(currentAccountInfo.address, this.state.getApiMap(), this.state.getSmartContractNfts(), this.state.getActiveChainInfoMap()), _constants.CRON_REFRESH_NFT_INTERVAL);
|
|
118
118
|
this.addCron('refreshStakingReward', this.refreshStakingReward(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_INTERVAL);
|
|
119
|
-
this.addCron('
|
|
119
|
+
this.addCron('refreshPoolingSta kingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
|
|
120
120
|
this.addCron('syncMantaPay', this.syncMantaPay, _constants.CRON_SYNC_MANTA_PAY);
|
|
121
121
|
} else {
|
|
122
122
|
this.setStakingRewardReady();
|
|
@@ -15,6 +15,7 @@ var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
|
15
15
|
var _TransactionWarning = require("@subwallet/extension-base/background/warnings/TransactionWarning");
|
|
16
16
|
var _constants = require("@subwallet/extension-base/constants");
|
|
17
17
|
var _defaults = require("@subwallet/extension-base/defaults");
|
|
18
|
+
var _domain = require("@subwallet/extension-base/koni/api/dotsama/domain");
|
|
18
19
|
var _parseTransaction = require("@subwallet/extension-base/koni/api/dotsama/parseTransaction");
|
|
19
20
|
var _transfer = require("@subwallet/extension-base/koni/api/dotsama/transfer");
|
|
20
21
|
var _transfer2 = require("@subwallet/extension-base/koni/api/nft/transfer");
|
|
@@ -3494,6 +3495,14 @@ class KoniExtension {
|
|
|
3494
3495
|
specVersion
|
|
3495
3496
|
};
|
|
3496
3497
|
}
|
|
3498
|
+
async resolveDomainByAddress(request) {
|
|
3499
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3500
|
+
return await (0, _domain.resolveAzeroDomainToAddress)(request.domain, request.chain, chainApi.api);
|
|
3501
|
+
}
|
|
3502
|
+
async resolveAddressByDomain(request) {
|
|
3503
|
+
const chainApi = this.#koniState.getSubstrateApi(request.chain);
|
|
3504
|
+
return await (0, _domain.resolveAzeroAddressToDomain)(request.address, request.chain, chainApi.api);
|
|
3505
|
+
}
|
|
3497
3506
|
|
|
3498
3507
|
// --------------------------------------------------------------
|
|
3499
3508
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
@@ -3701,6 +3710,10 @@ class KoniExtension {
|
|
|
3701
3710
|
// Subscribe address
|
|
3702
3711
|
case 'pri(accounts.subscribeAddresses)':
|
|
3703
3712
|
return this.subscribeAddresses(id, port);
|
|
3713
|
+
case 'pri(accounts.resolveDomainToAddress)':
|
|
3714
|
+
return await this.resolveDomainByAddress(request);
|
|
3715
|
+
case 'pri(accounts.resolveAddressToDomain)':
|
|
3716
|
+
return await this.resolveAddressByDomain(request);
|
|
3704
3717
|
|
|
3705
3718
|
// ChainService
|
|
3706
3719
|
case 'pri(chainService.subscribeChainInfoMap)':
|
|
@@ -864,6 +864,9 @@ class KoniState {
|
|
|
864
864
|
removeCustomChain(networkKey) {
|
|
865
865
|
return this.chainService.removeCustomChain(networkKey);
|
|
866
866
|
}
|
|
867
|
+
forceRemoveChain(networkKey) {
|
|
868
|
+
this.chainService.forceRemoveChain(networkKey);
|
|
869
|
+
}
|
|
867
870
|
|
|
868
871
|
// TODO: avoids turning off chains related to ledger account
|
|
869
872
|
getDefaultNetworkKeys = () => {
|
|
@@ -132,7 +132,9 @@ class KoniSubscription {
|
|
|
132
132
|
maxWithdrawalRequestPerValidator: rs.maxWithdrawalRequestPerValidator,
|
|
133
133
|
// by default
|
|
134
134
|
allowCancelUnstaking: rs.allowCancelUnstaking,
|
|
135
|
-
unstakingPeriod: rs.unstakingPeriod
|
|
135
|
+
unstakingPeriod: rs.unstakingPeriod,
|
|
136
|
+
expectedReturn: rs.expectedReturn,
|
|
137
|
+
inflation: rs.inflation
|
|
136
138
|
});
|
|
137
139
|
});
|
|
138
140
|
if (onlyRunOnFirstTime) {
|
package/cjs/packageInfo.js
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports._TEST_ERC721_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._ERC721_ABI = exports._ERC20_ABI = void 0;
|
|
6
|
+
exports._TEST_ERC721_ABI = exports._PSP34_ABI = exports._PSP22_ABI = exports._PINK_PSP34_ABI = exports._ERC721_ABI = exports._ERC20_ABI = exports._AZERO_DOMAIN_REGISTRY_ABI = void 0;
|
|
7
7
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
8
8
|
// SPDX-License-Identifier: Apache-2.0
|
|
9
9
|
|
|
@@ -21,4 +21,10 @@ const _PSP22_ABI = require('./psp22_abi.json');
|
|
|
21
21
|
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
22
22
|
exports._PSP22_ABI = _PSP22_ABI;
|
|
23
23
|
const _PSP34_ABI = require('./psp34_abi.json');
|
|
24
|
-
|
|
24
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
25
|
+
exports._PSP34_ABI = _PSP34_ABI;
|
|
26
|
+
const _PINK_PSP34_ABI = require('./pink_psp34_abi.json');
|
|
27
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires,@typescript-eslint/no-unsafe-assignment
|
|
28
|
+
exports._PINK_PSP34_ABI = _PINK_PSP34_ABI;
|
|
29
|
+
const _AZERO_DOMAIN_REGISTRY_ABI = require('./azero_domain_registry_abi.json');
|
|
30
|
+
exports._AZERO_DOMAIN_REGISTRY_ABI = _AZERO_DOMAIN_REGISTRY_ABI;
|
|
@@ -293,11 +293,29 @@ class ChainService {
|
|
|
293
293
|
}
|
|
294
294
|
|
|
295
295
|
// Setter
|
|
296
|
-
|
|
296
|
+
forceRemoveChain(slug) {
|
|
297
297
|
if (this.lockChainInfoMap) {
|
|
298
298
|
return false;
|
|
299
299
|
}
|
|
300
|
+
const chainInfoMap = this.getChainInfoMap();
|
|
301
|
+
const chainStateMap = this.getChainStateMap();
|
|
302
|
+
if (!(slug in chainInfoMap)) {
|
|
303
|
+
return false;
|
|
304
|
+
}
|
|
300
305
|
this.lockChainInfoMap = true;
|
|
306
|
+
delete chainStateMap[slug];
|
|
307
|
+
delete chainInfoMap[slug];
|
|
308
|
+
this.deleteAssetsByChain(slug);
|
|
309
|
+
this.dbService.removeFromChainStore([slug]).catch(console.error);
|
|
310
|
+
this.updateChainSubscription();
|
|
311
|
+
this.lockChainInfoMap = false;
|
|
312
|
+
this.eventService.emit('chain.updateState', slug);
|
|
313
|
+
return true;
|
|
314
|
+
}
|
|
315
|
+
removeCustomChain(slug) {
|
|
316
|
+
if (this.lockChainInfoMap) {
|
|
317
|
+
return false;
|
|
318
|
+
}
|
|
301
319
|
const chainInfoMap = this.getChainInfoMap();
|
|
302
320
|
const chainStateMap = this.getChainStateMap();
|
|
303
321
|
if (!(slug in chainInfoMap)) {
|
|
@@ -309,6 +327,7 @@ class ChainService {
|
|
|
309
327
|
if (chainStateMap[slug].active) {
|
|
310
328
|
return false;
|
|
311
329
|
}
|
|
330
|
+
this.lockChainInfoMap = true;
|
|
312
331
|
delete chainStateMap[slug];
|
|
313
332
|
delete chainInfoMap[slug];
|
|
314
333
|
this.deleteAssetsByChain(slug);
|
|
@@ -428,7 +447,6 @@ class ChainService {
|
|
|
428
447
|
|
|
429
448
|
// Avoid unnecessary update in case disable chain
|
|
430
449
|
if (currentStatus !== status) {
|
|
431
|
-
console.log(chainInfo.name, currentStatus, status);
|
|
432
450
|
this.setChainConnectionStatus(chainInfo.slug, status);
|
|
433
451
|
this.updateChainStateMapSubscription();
|
|
434
452
|
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports.default = void 0;
|
|
8
|
+
var _Base = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/Base"));
|
|
9
|
+
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
10
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
11
|
+
|
|
12
|
+
class DeleteChain extends _Base.default {
|
|
13
|
+
// eslint-disable-next-line @typescript-eslint/require-await
|
|
14
|
+
async run() {
|
|
15
|
+
['snow', 'snow_evm', 'arctic_testnet'].forEach(chain => {
|
|
16
|
+
this.state.forceRemoveChain(chain);
|
|
17
|
+
});
|
|
18
|
+
console.log('done job');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
exports.default = DeleteChain;
|
|
@@ -5,6 +5,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
7
|
exports.default = exports.EVERYTIME = void 0;
|
|
8
|
+
var _DeleteChain = _interopRequireDefault(require("@subwallet/extension-base/services/migration-service/scripts/DeleteChain"));
|
|
8
9
|
var _AutoEnableChainsTokens = _interopRequireDefault(require("./AutoEnableChainsTokens"));
|
|
9
10
|
var _MigrateAuthUrls = _interopRequireDefault(require("./MigrateAuthUrls"));
|
|
10
11
|
var _MigrateAutoLock = _interopRequireDefault(require("./MigrateAutoLock"));
|
|
@@ -32,7 +33,8 @@ var _default = {
|
|
|
32
33
|
'1.0.3-02': _MigrateChainPatrol.default,
|
|
33
34
|
'1.0.9-01': _MigrateLedgerAccount.default,
|
|
34
35
|
'1.0.12-02': _MigrateEthProvider.default,
|
|
35
|
-
'1.1.6-01': _MigrateWalletReference.default
|
|
36
|
+
'1.1.6-01': _MigrateWalletReference.default,
|
|
37
|
+
'1.1.7': _DeleteChain.default
|
|
36
38
|
// [`${EVERYTIME}-1`]: AutoEnableChainsTokens
|
|
37
39
|
};
|
|
38
40
|
exports.default = _default;
|
|
@@ -18,6 +18,9 @@ function getBlockExplorerAccountRoute(explorerLink) {
|
|
|
18
18
|
if (explorerLink.includes('explorer.subspace.network')) {
|
|
19
19
|
return 'accounts';
|
|
20
20
|
}
|
|
21
|
+
if (explorerLink.includes('deeperscan.io')) {
|
|
22
|
+
return 'account';
|
|
23
|
+
}
|
|
21
24
|
if (explorerLink.includes('subscan.io')) {
|
|
22
25
|
return 'account';
|
|
23
26
|
}
|
|
@@ -27,7 +30,7 @@ function getBlockExplorerTxRoute(chainInfo) {
|
|
|
27
30
|
if ((0, _utils._isPureEvmChain)(chainInfo)) {
|
|
28
31
|
return 'tx';
|
|
29
32
|
}
|
|
30
|
-
if (['aventus'].includes(chainInfo.slug)) {
|
|
33
|
+
if (['aventus', 'deeper_network'].includes(chainInfo.slug)) {
|
|
31
34
|
return 'transaction';
|
|
32
35
|
}
|
|
33
36
|
return 'extrinsic';
|
|
@@ -145,21 +145,29 @@ class WalletConnectService {
|
|
|
145
145
|
// Disconnect session
|
|
146
146
|
const sessions = ((_classPrivateFieldLoo7 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo7 === void 0 ? void 0 : _classPrivateFieldLoo7.session.values) || [];
|
|
147
147
|
for (const session of sessions) {
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
148
|
+
try {
|
|
149
|
+
var _classPrivateFieldLoo8;
|
|
150
|
+
await ((_classPrivateFieldLoo8 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo8 === void 0 ? void 0 : _classPrivateFieldLoo8.disconnect({
|
|
151
|
+
topic: session.topic,
|
|
152
|
+
reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
|
|
153
|
+
}));
|
|
154
|
+
} catch (e) {
|
|
155
|
+
console.error(e);
|
|
156
|
+
}
|
|
153
157
|
}
|
|
154
158
|
|
|
155
159
|
// Disconnect pair
|
|
156
160
|
const pairs = ((_classPrivateFieldLoo9 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo9 === void 0 ? void 0 : _classPrivateFieldLoo9.pairing.values) || [];
|
|
157
161
|
for (const pair of pairs) {
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
162
|
+
try {
|
|
163
|
+
var _classPrivateFieldLoo10;
|
|
164
|
+
await ((_classPrivateFieldLoo10 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo10 === void 0 ? void 0 : _classPrivateFieldLoo10.disconnect({
|
|
165
|
+
topic: pair.topic,
|
|
166
|
+
reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
|
|
167
|
+
}));
|
|
168
|
+
} catch (e) {
|
|
169
|
+
console.error(e);
|
|
170
|
+
}
|
|
163
171
|
}
|
|
164
172
|
const keys = (await ((_classPrivateFieldLoo11 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo11 === void 0 ? void 0 : _classPrivateFieldLoo11.core.storage.getKeys())) || [];
|
|
165
173
|
const deleteKeys = resetAll ? keys : keys.filter(key => key.startsWith('wc@'));
|
|
@@ -172,6 +180,7 @@ class WalletConnectService {
|
|
|
172
180
|
}
|
|
173
181
|
}
|
|
174
182
|
await (0, _classPrivateFieldLooseBase2.default)(this, _initClient)[_initClient]();
|
|
183
|
+
(0, _classPrivateFieldLooseBase2.default)(this, _updateSessions)[_updateSessions]();
|
|
175
184
|
}
|
|
176
185
|
async disconnect(topic) {
|
|
177
186
|
var _classPrivateFieldLoo13;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ApiPromise } from '@polkadot/api';
|
|
2
|
+
export declare const ENS_SUFFIX = ".eth";
|
|
3
|
+
export declare const TZERO_ID_SUFFIX = ".tzero";
|
|
4
|
+
export declare const AZERO_ID_SUFFIX = ".azero";
|
|
5
|
+
export declare const SUPPORTED_DOMAIN_SUFFIX: string[];
|
|
6
|
+
export declare const CHAINS_SUPPORTED_DOMAIN: string[];
|
|
7
|
+
export declare const AZERO_DOMAIN_CONTRACTS: string[];
|
|
8
|
+
export declare function resolveAzeroDomainToAddress(domain: string, chain: string, api: ApiPromise): Promise<string | undefined>;
|
|
9
|
+
export declare function resolveAzeroAddressToDomain(address: string, chain: string, api: ApiPromise): Promise<string | undefined>;
|
|
10
|
+
export declare function isAzeroDomain(input: string): boolean;
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import { resolveAddressToDomain, resolveDomainToAddress, SupportedChainId } from '@azns/resolver-core';
|
|
5
|
+
export const ENS_SUFFIX = '.eth';
|
|
6
|
+
export const TZERO_ID_SUFFIX = '.tzero';
|
|
7
|
+
export const AZERO_ID_SUFFIX = '.azero';
|
|
8
|
+
export const SUPPORTED_DOMAIN_SUFFIX = [ENS_SUFFIX, TZERO_ID_SUFFIX, AZERO_ID_SUFFIX];
|
|
9
|
+
export const CHAINS_SUPPORTED_DOMAIN = ['aleph', 'alephTest'];
|
|
10
|
+
export const AZERO_DOMAIN_CONTRACTS = ['5FsB91tXSEuMj6akzdPczAtmBaVKToqHmtAwSUzXh49AYzaD', '5CTQBfBC9SfdrCDBJdfLiyW2pg9z5W6C6Es8sK313BLnFgDf'];
|
|
11
|
+
export async function resolveAzeroDomainToAddress(domain, chain, api) {
|
|
12
|
+
let chainId = SupportedChainId.AlephZero;
|
|
13
|
+
if (chain === 'alephTest') {
|
|
14
|
+
chainId = SupportedChainId.AlephZeroTestnet;
|
|
15
|
+
}
|
|
16
|
+
const primaryDomains = await resolveDomainToAddress(domain, {
|
|
17
|
+
chainId,
|
|
18
|
+
customApi: api
|
|
19
|
+
});
|
|
20
|
+
if (primaryDomains.error) {
|
|
21
|
+
console.debug(primaryDomains.error);
|
|
22
|
+
}
|
|
23
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.address) || undefined;
|
|
24
|
+
}
|
|
25
|
+
export async function resolveAzeroAddressToDomain(address, chain, api) {
|
|
26
|
+
let chainId = SupportedChainId.AlephZero;
|
|
27
|
+
if (chain === 'alephTest') {
|
|
28
|
+
chainId = SupportedChainId.AlephZeroTestnet;
|
|
29
|
+
}
|
|
30
|
+
const primaryDomains = await resolveAddressToDomain(address, {
|
|
31
|
+
chainId,
|
|
32
|
+
customApi: api
|
|
33
|
+
});
|
|
34
|
+
if (primaryDomains.error) {
|
|
35
|
+
console.debug(primaryDomains.error);
|
|
36
|
+
}
|
|
37
|
+
return (primaryDomains === null || primaryDomains === void 0 ? void 0 : primaryDomains.primaryDomain) || undefined;
|
|
38
|
+
}
|
|
39
|
+
export function isAzeroDomain(input) {
|
|
40
|
+
return input.includes(AZERO_ID_SUFFIX) || input.includes(TZERO_ID_SUFFIX);
|
|
41
|
+
}
|
|
@@ -135,7 +135,7 @@ const getMetadata = metadataUrl => {
|
|
|
135
135
|
if (!metadataUrl) {
|
|
136
136
|
return null;
|
|
137
137
|
}
|
|
138
|
-
url = getRandomIpfsGateway() + metadataUrl + '/
|
|
138
|
+
url = getRandomIpfsGateway() + metadataUrl + '/azero_domain_registry_abi.json';
|
|
139
139
|
return fetch(url, {
|
|
140
140
|
method: 'GET',
|
|
141
141
|
headers
|
|
@@ -137,7 +137,7 @@ const getKaruraMetadata = metadataUrl => {
|
|
|
137
137
|
if (!metadataUrl) {
|
|
138
138
|
return null;
|
|
139
139
|
}
|
|
140
|
-
url = getRandomIpfsGateway() + metadataUrl + '/
|
|
140
|
+
url = getRandomIpfsGateway() + metadataUrl + '/azero_domain_registry_abi.json';
|
|
141
141
|
return fetch(url, {
|
|
142
142
|
method: 'GET',
|
|
143
143
|
headers: {
|
package/koni/api/nft/nft.js
CHANGED