@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.
Files changed (47) hide show
  1. package/background/KoniTypes.d.ts +10 -0
  2. package/cjs/koni/api/dotsama/domain.js +56 -0
  3. package/cjs/koni/api/nft/acala_nft/index.js +1 -1
  4. package/cjs/koni/api/nft/karura_nft/index.js +1 -1
  5. package/cjs/koni/api/nft/nft.js +3 -0
  6. package/cjs/koni/api/nft/wasm_nft/index.js +25 -7
  7. package/cjs/koni/api/staking/bonding/relayChain.js +12 -2
  8. package/cjs/koni/api/tokens/wasm/index.js +14 -0
  9. package/cjs/koni/background/cron.js +1 -1
  10. package/cjs/koni/background/handlers/Extension.js +13 -0
  11. package/cjs/koni/background/handlers/State.js +3 -0
  12. package/cjs/koni/background/subscription.js +3 -1
  13. package/cjs/packageInfo.js +1 -1
  14. package/cjs/services/chain-service/helper/index.js +8 -2
  15. package/cjs/services/chain-service/index.js +20 -2
  16. package/cjs/services/migration-service/scripts/DeleteChain.js +21 -0
  17. package/cjs/services/migration-service/scripts/index.js +3 -1
  18. package/cjs/services/transaction-service/utils.js +4 -1
  19. package/cjs/services/wallet-connect-service/index.js +19 -10
  20. package/koni/api/dotsama/domain.d.ts +10 -0
  21. package/koni/api/dotsama/domain.js +41 -0
  22. package/koni/api/nft/acala_nft/index.js +1 -1
  23. package/koni/api/nft/karura_nft/index.js +1 -1
  24. package/koni/api/nft/nft.js +3 -0
  25. package/koni/api/nft/wasm_nft/index.js +26 -8
  26. package/koni/api/staking/bonding/relayChain.js +12 -2
  27. package/koni/api/tokens/wasm/index.d.ts +2 -0
  28. package/koni/api/tokens/wasm/index.js +13 -1
  29. package/koni/background/cron.js +1 -1
  30. package/koni/background/handlers/Extension.d.ts +2 -0
  31. package/koni/background/handlers/Extension.js +13 -0
  32. package/koni/background/handlers/State.d.ts +1 -0
  33. package/koni/background/handlers/State.js +3 -0
  34. package/koni/background/subscription.js +3 -1
  35. package/package.json +19 -6
  36. package/packageInfo.js +1 -1
  37. package/services/chain-service/helper/azero_domain_registry_abi.json +5428 -0
  38. package/services/chain-service/helper/index.d.ts +2 -0
  39. package/services/chain-service/helper/index.js +5 -1
  40. package/services/chain-service/helper/pink_psp34_abi.json +2758 -0
  41. package/services/chain-service/index.d.ts +1 -0
  42. package/services/chain-service/index.js +20 -2
  43. package/services/migration-service/scripts/DeleteChain.d.ts +4 -0
  44. package/services/migration-service/scripts/DeleteChain.js +13 -0
  45. package/services/migration-service/scripts/index.js +3 -1
  46. package/services/transaction-service/utils.js +4 -1
  47. 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 + '/metadata.json';
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 + '/metadata.json';
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: {
@@ -74,6 +74,9 @@ class BaseNftApi {
74
74
  if (!input || input.length === 0) {
75
75
  return undefined;
76
76
  }
77
+ if ((0, _utils.isUrl)(input)) {
78
+ return input;
79
+ }
77
80
  if ((0, _utils.isUrl)(input) || input.includes('https://') || input.includes('http')) {
78
81
  return input;
79
82
  }
@@ -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 _tokenUri = await contractPromise.query['psp34Traits::tokenUri'](address, {
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
- }, tokenId);
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 (isFeatured) {
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 (isFeatured) {
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 ? itemDetail.attributes : itemDetail.traits;
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
- const tokenIdObj = rawTokenId.Ok.Ok || rawTokenId.ok.ok; // capital O, not normal o
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.minNominatorBond(), (_substrateApi$api$que = substrateApi.api.query) === null || _substrateApi$api$que === void 0 ? void 0 : (_substrateApi$api$que2 = _substrateApi$api$que.nominationPools) === null || _substrateApi$api$que2 === void 0 ? void 0 : _substrateApi$api$que2.minJoinBond(), ((_substrateApi$api$que3 = substrateApi.api.query) === null || _substrateApi$api$que3 === void 0 ? void 0 : (_substrateApi$api$que4 = _substrateApi$api$que3.staking) === null || _substrateApi$api$que4 === void 0 ? void 0 : _substrateApi$api$que4.minimumActiveStake) && ((_substrateApi$api$que5 = substrateApi.api.query) === null || _substrateApi$api$que5 === void 0 ? void 0 : (_substrateApi$api$que6 = _substrateApi$api$que5.staking) === null || _substrateApi$api$que6 === void 0 ? void 0 : _substrateApi$api$que6.minimumActiveStake())]);
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('refreshPoolingStakingReward', this.refreshStakingRewardFastInterval(currentAccountInfo.address), _constants.CRON_REFRESH_STAKING_REWARD_FAST_INTERVAL);
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) {
@@ -13,6 +13,6 @@ const packageInfo = {
13
13
  name: '@subwallet/extension-base',
14
14
  path: typeof __dirname === 'string' ? __dirname : 'auto',
15
15
  type: 'cjs',
16
- version: '1.1.7-0'
16
+ version: '1.1.9-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -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
- exports._PSP34_ABI = _PSP34_ABI;
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
- removeCustomChain(slug) {
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
- var _classPrivateFieldLoo8;
149
- (_classPrivateFieldLoo8 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo8 === void 0 ? void 0 : _classPrivateFieldLoo8.disconnect({
150
- topic: session.topic,
151
- reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
152
- }).catch(console.error);
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
- var _classPrivateFieldLoo10;
159
- (_classPrivateFieldLoo10 = (0, _classPrivateFieldLooseBase2.default)(this, _client)[_client]) === null || _classPrivateFieldLoo10 === void 0 ? void 0 : _classPrivateFieldLoo10.disconnect({
160
- topic: pair.topic,
161
- reason: (0, _utils2.getSdkError)('USER_DISCONNECTED')
162
- }).catch(console.error);
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 + '/metadata.json';
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 + '/metadata.json';
140
+ url = getRandomIpfsGateway() + metadataUrl + '/azero_domain_registry_abi.json';
141
141
  return fetch(url, {
142
142
  method: 'GET',
143
143
  headers: {
@@ -68,6 +68,9 @@ export class BaseNftApi {
68
68
  if (!input || input.length === 0) {
69
69
  return undefined;
70
70
  }
71
+ if (isUrl(input)) {
72
+ return input;
73
+ }
71
74
  if (isUrl(input) || input.includes('https://') || input.includes('http')) {
72
75
  return input;
73
76
  }