@subwallet/extension-base 1.3.27-1 → 1.3.28-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 (41) hide show
  1. package/background/KoniTypes.d.ts +7 -1
  2. package/cjs/constants/index.js +1 -1
  3. package/cjs/koni/background/handlers/Extension.js +13 -0
  4. package/cjs/packageInfo.js +1 -1
  5. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +89 -33
  6. package/cjs/services/chain-service/constants.js +2 -1
  7. package/cjs/services/chain-service/utils/index.js +11 -2
  8. package/cjs/services/earning-service/handlers/base.js +3 -0
  9. package/cjs/services/earning-service/handlers/native-staking/dtao.js +97 -36
  10. package/cjs/services/earning-service/handlers/native-staking/tao.js +34 -4
  11. package/cjs/services/earning-service/service.js +13 -1
  12. package/cjs/services/migration-service/index.js +2 -5
  13. package/cjs/services/migration-service/scripts/index.js +4 -8
  14. package/cjs/services/price-service/coingecko.js +49 -0
  15. package/cjs/utils/asset.js +17 -2
  16. package/constants/index.d.ts +1 -1
  17. package/constants/index.js +1 -1
  18. package/koni/background/handlers/Extension.d.ts +1 -0
  19. package/koni/background/handlers/Extension.js +13 -0
  20. package/package.json +7 -7
  21. package/packageInfo.js +1 -1
  22. package/services/balance-service/helpers/subscribe/substrate/index.js +76 -23
  23. package/services/chain-service/constants.d.ts +1 -0
  24. package/services/chain-service/constants.js +2 -1
  25. package/services/chain-service/utils/index.d.ts +1 -0
  26. package/services/chain-service/utils/index.js +6 -0
  27. package/services/earning-service/handlers/base.d.ts +3 -2
  28. package/services/earning-service/handlers/base.js +3 -0
  29. package/services/earning-service/handlers/native-staking/dtao.d.ts +7 -2
  30. package/services/earning-service/handlers/native-staking/dtao.js +89 -31
  31. package/services/earning-service/handlers/native-staking/tao.d.ts +4 -1
  32. package/services/earning-service/handlers/native-staking/tao.js +31 -1
  33. package/services/earning-service/service.d.ts +2 -1
  34. package/services/earning-service/service.js +13 -1
  35. package/services/migration-service/index.js +2 -5
  36. package/services/migration-service/scripts/index.js +4 -8
  37. package/services/price-service/coingecko.js +48 -0
  38. package/types/yield/actions/join/submit.d.ts +3 -0
  39. package/types/yield/actions/others.d.ts +7 -0
  40. package/utils/asset.d.ts +1 -0
  41. package/utils/asset.js +14 -0
@@ -15,7 +15,7 @@ import { AuthUrls } from '@subwallet/extension-base/services/request-service/typ
15
15
  import { CrowdloanContributionsResponse } from '@subwallet/extension-base/services/subscan-service/types';
16
16
  import { SWTransactionResponse, SWTransactionResult } from '@subwallet/extension-base/services/transaction-service/types';
17
17
  import { WalletConnectNotSupportRequest, WalletConnectSessionRequest } from '@subwallet/extension-base/services/wallet-connect-service/types';
18
- import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalSwapPath, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParamsV2, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
18
+ import { AccountChainType, AccountJson, AccountsWithCurrentAddress, AddressJson, BalanceJson, BaseRequestSign, BuyServiceInfo, BuyTokenInfo, CommonOptimalSwapPath, CommonOptimalTransferPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParamsV2, OptimalYieldPath, OptimalYieldPathParams, RequestAccountBatchExportV2, RequestAccountCreateSuriV2, RequestAccountNameValidate, RequestAccountProxyEdit, RequestAccountProxyForget, RequestBatchJsonGetAccountInfo, RequestBatchRestoreV2, RequestBounceableValidate, RequestChangeAllowOneSign, RequestChangeTonWalletContractVersion, RequestCheckCrossChainTransfer, RequestCheckPublicAndSecretKey, RequestCheckTransfer, RequestCrossChainTransfer, RequestDeriveCreateMultiple, RequestDeriveCreateV3, RequestDeriveValidateV2, RequestEarlyValidateYield, RequestEarningSlippage, RequestExportAccountProxyMnemonic, RequestGetAllTonWalletContractVersion, RequestGetAmountForPair, RequestGetDeriveAccounts, RequestGetDeriveSuggestion, RequestGetTokensCanPayFee, RequestGetYieldPoolTargets, RequestInputAccountSubscribe, RequestJsonGetAccountInfo, RequestJsonRestoreV2, RequestMetadataHash, RequestMnemonicCreateV2, RequestMnemonicValidateV2, RequestPrivateKeyValidateV2, RequestShortenMetadata, RequestStakeCancelWithdrawal, RequestStakeClaimReward, RequestSubmitProcessTransaction, RequestSubscribeProcessById, RequestTransfer, RequestUnlockDotCheckCanMint, RequestUnlockDotSubscribeMintedData, RequestYieldLeave, RequestYieldStepSubmit, RequestYieldWithdrawal, ResponseAccountBatchExportV2, ResponseAccountCreateSuriV2, ResponseAccountNameValidate, ResponseBatchJsonGetAccountInfo, ResponseCheckPublicAndSecretKey, ResponseDeriveValidateV2, ResponseEarlyValidateYield, ResponseExportAccountProxyMnemonic, ResponseGetAllTonWalletContractVersion, ResponseGetDeriveAccounts, ResponseGetDeriveSuggestion, ResponseGetYieldPoolTargets, ResponseInputAccountSubscribe, ResponseJsonGetAccountInfo, ResponseMetadataHash, ResponseMnemonicCreateV2, ResponseMnemonicValidateV2, ResponsePrivateKeyValidateV2, ResponseShortenMetadata, ResponseSubscribeProcessAlive, ResponseSubscribeProcessById, StorageDataInterface, SubmitYieldStepData, SubnetYieldPositionInfo, SwapPair, SwapQuoteResponse, SwapRequest, SwapRequestResult, SwapSubmitParams, SwapTxData, TokenSpendingApprovalParams, UnlockDotTransactionNft, UnstakingStatus, ValidateSwapProcessParams, ValidateYieldProcessParams, YieldPoolInfo, YieldPoolType, YieldPositionInfo } from '@subwallet/extension-base/types';
19
19
  import { RequestSubmitTransfer, RequestSubscribeTransfer, ResponseSubscribeTransfer } from '@subwallet/extension-base/types/balance/transfer';
20
20
  import { RequestClaimBridge } from '@subwallet/extension-base/types/bridge';
21
21
  import { GetNotificationParams, RequestIsClaimedPolygonBridge, RequestSwitchStatusParams } from '@subwallet/extension-base/types/notification';
@@ -1167,6 +1167,11 @@ export interface BondingSubmitParams extends BaseRequestSign {
1167
1167
  lockPeriod?: number;
1168
1168
  poolInfo?: {
1169
1169
  metadata: SubnetYieldPositionInfo;
1170
+ type: YieldPoolType;
1171
+ chain: string;
1172
+ };
1173
+ poolPosition?: {
1174
+ chain: string;
1170
1175
  };
1171
1176
  }
1172
1177
  export declare type RequestBondingSubmit = InternalRequestSign<BondingSubmitParams>;
@@ -1687,6 +1692,7 @@ export interface KoniRequestSignatures {
1687
1692
  'pri(yield.withdraw.submit)': [RequestYieldWithdrawal, SWTransactionResponse];
1688
1693
  'pri(yield.cancelWithdrawal.submit)': [RequestStakeCancelWithdrawal, SWTransactionResponse];
1689
1694
  'pri(yield.claimReward.submit)': [RequestStakeClaimReward, SWTransactionResponse];
1695
+ 'pri(yield.getEarningSlippage)': [RequestEarningSlippage, number];
1690
1696
  'pri(transaction.history.getSubscription)': [null, TransactionHistoryItem[], TransactionHistoryItem[]];
1691
1697
  'pri(transaction.history.subscribe)': [RequestSubscribeHistory, ResponseSubscribeHistory, TransactionHistoryItem[]];
1692
1698
  'pri(transfer.getMaxTransferable)': [RequestMaxTransferable, AmountData];
@@ -160,7 +160,7 @@ const MANTA_PAY_BALANCE_INTERVAL = 30000;
160
160
  exports.MANTA_PAY_BALANCE_INTERVAL = MANTA_PAY_BALANCE_INTERVAL;
161
161
  const BITTENSOR_REFRESH_STAKE_INFO = 30000;
162
162
  exports.BITTENSOR_REFRESH_STAKE_INFO = BITTENSOR_REFRESH_STAKE_INFO;
163
- const BITTENSOR_REFRESH_STAKE_APY = 300000;
163
+ const BITTENSOR_REFRESH_STAKE_APY = 30000;
164
164
  exports.BITTENSOR_REFRESH_STAKE_APY = BITTENSOR_REFRESH_STAKE_APY;
165
165
  const CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = 15 * BASE_MINUTE_INTERVAL;
166
166
  exports.CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL = CRON_REFRESH_EARNING_REWARD_HISTORY_INTERVAL;
@@ -3485,6 +3485,17 @@ class KoniExtension {
3485
3485
  chainType: (poolHandler === null || poolHandler === void 0 ? void 0 : poolHandler.transactionChainType) || _KoniTypes.ChainType.SUBSTRATE
3486
3486
  });
3487
3487
  }
3488
+ async yieldGetEarningSlippage(params) {
3489
+ const {
3490
+ slug
3491
+ } = params;
3492
+ const poolHandler = this.#koniState.earningService.getPoolHandler(slug);
3493
+ if (!poolHandler) {
3494
+ return this.#koniState.transactionService.generateBeforeHandleResponseErrors([new _TransactionError.TransactionError(_types3.BasicTxErrorType.INVALID_PARAMS)]);
3495
+ }
3496
+ const slippage = await this.#koniState.earningService.yieldGetEarningSlippage(params);
3497
+ return slippage;
3498
+ }
3488
3499
 
3489
3500
  /* Campaign */
3490
3501
 
@@ -4404,6 +4415,8 @@ class KoniExtension {
4404
4415
  return await this.yieldSubmitCancelWithdrawal(request);
4405
4416
  case 'pri(yield.claimReward.submit)':
4406
4417
  return await this.yieldSubmitClaimReward(request);
4418
+ case 'pri(yield.getEarningSlippage)':
4419
+ return await this.yieldGetEarningSlippage(request);
4407
4420
 
4408
4421
  /* Others */
4409
4422
 
@@ -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.3.27-1'
16
+ version: '1.3.28-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
@@ -19,7 +19,6 @@ var _wasm = require("@subwallet/extension-base/koni/api/contract-handler/wasm");
19
19
  var _utils = require("@subwallet/extension-base/koni/api/contract-handler/wasm/utils");
20
20
  var _constants2 = require("@subwallet/extension-base/services/chain-service/constants");
21
21
  var _utils2 = require("@subwallet/extension-base/services/chain-service/utils");
22
- var _dtao = require("@subwallet/extension-base/services/earning-service/handlers/native-staking/dtao");
23
22
  var _utils3 = require("@subwallet/extension-base/utils");
24
23
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
25
24
  var _evm = require("../evm");
@@ -36,6 +35,7 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
36
35
  let unsubBridgedToken;
37
36
  let unsubGrcToken;
38
37
  let unsubVftToken;
38
+ let unsubSubnetAlphaToken;
39
39
  const chain = chainInfo.slug;
40
40
  const baseParams = {
41
41
  addresses,
@@ -72,6 +72,9 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
72
72
  if (_constants2._BALANCE_CHAIN_GROUP.supportBridged.includes(chain)) {
73
73
  unsubBridgedToken = await subscribeForeignAssetBalance(substrateParams);
74
74
  }
75
+ if (_constants2._BALANCE_CHAIN_GROUP.bittensor.includes(chain)) {
76
+ unsubSubnetAlphaToken = await subscribeSubnetAlphaPallet(substrateParams);
77
+ }
75
78
 
76
79
  /**
77
80
  * Some substrate chain use evm account format but not have evm connection and support ERC20 contract,
@@ -100,7 +103,7 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
100
103
  console.warn(err);
101
104
  }
102
105
  return () => {
103
- var _unsubGrcToken, _unsubVftToken;
106
+ var _unsubGrcToken, _unsubVftToken, _unsubSubnetAlphaToke;
104
107
  unsubNativeToken && unsubNativeToken();
105
108
  unsubLocalToken && unsubLocalToken();
106
109
  unsubEvmContractToken && unsubEvmContractToken();
@@ -108,6 +111,7 @@ const subscribeSubstrateBalance = async (addresses, chainInfo, assetMap, substra
108
111
  unsubBridgedToken && unsubBridgedToken();
109
112
  (_unsubGrcToken = unsubGrcToken) === null || _unsubGrcToken === void 0 ? void 0 : _unsubGrcToken();
110
113
  (_unsubVftToken = unsubVftToken) === null || _unsubVftToken === void 0 ? void 0 : _unsubVftToken();
114
+ (_unsubSubnetAlphaToke = unsubSubnetAlphaToken) === null || _unsubSubnetAlphaToke === void 0 ? void 0 : _unsubSubnetAlphaToke();
111
115
  };
112
116
  };
113
117
 
@@ -139,27 +143,20 @@ const subscribeWithSystemAccountPallet = async _ref => {
139
143
  args: addresses
140
144
  });
141
145
  }
142
- let bittensorStakingBalances = new Array(addresses.length).fill(new _bignumber.default(0));
143
- if (['bittensor', 'bittensor_testnet'].includes(chainInfo.slug)) {
144
- bittensorStakingBalances = await Promise.all(addresses.map(async address => {
145
- const stakeInfo = (await substrateApi.api.call.stakeInfoRuntimeApi.getStakeInfoForColdkey(address)).toJSON();
146
- const price = await (0, _dtao.getTaoToAlphaMapping)(substrateApi);
147
- let TaoTotalStake = new _bignumber.default(0);
148
- if (stakeInfo) {
149
- for (const validator of Object.values(stakeInfo)) {
150
- const stake = new _bignumber.default(validator.stake);
151
- const netuid = validator.netuid;
152
- const taoToAlphaPrice = price[netuid] ? new _bignumber.default(price[netuid]) : new _bignumber.default(1);
153
- const taoStake = stake.multipliedBy(taoToAlphaPrice).toFixed(0).toString();
154
- TaoTotalStake = TaoTotalStake.plus(taoStake);
155
- }
156
- }
157
- return new _bignumber.default(TaoTotalStake.toString());
158
- }));
159
- }
160
- const subscription = substrateApi.subscribeDataWithMulti(params, rs => {
146
+
147
+ // eslint-disable-next-line @typescript-eslint/no-misused-promises
148
+ const subscription = substrateApi.subscribeDataWithMulti(params, async rs => {
161
149
  const balances = rs[systemAccountKey];
162
150
  const poolMemberInfos = rs[poolMembersKey];
151
+ let bittensorStakingBalances = new Array(addresses.length).fill(new _bignumber.default(0));
152
+ if (_constants2._BALANCE_CHAIN_GROUP.bittensor.includes(chainInfo.slug)) {
153
+ const rawData = await substrateApi.api.call.stakeInfoRuntimeApi.getStakeInfoForColdkeys(addresses);
154
+ const values = rawData.toPrimitive();
155
+ bittensorStakingBalances = values.map(_ref2 => {
156
+ let [, stakes] = _ref2;
157
+ return stakes.filter(i => i.netuid === 0).reduce((previousValue, currentValue) => previousValue.plus(currentValue.stake), (0, _bignumber.default)(0));
158
+ });
159
+ }
163
160
  const items = balances.map((_balance, index) => {
164
161
  const balanceInfo = _balance;
165
162
  const transferableBalance = (0, _systemPallet._getSystemPalletTransferable)(balanceInfo, (0, _utils2._getChainExistentialDeposit)(chainInfo), extrinsicType);
@@ -200,7 +197,7 @@ const checkNominationPoolCompleteMigrated = async substrateApi => {
200
197
  const nominationPoolInfoLength = nominationPoolInfoRaw.length;
201
198
  return nominationPoolCounter !== 0 && nominationPoolInfoLength !== 0;
202
199
  };
203
- const subscribeForeignAssetBalance = async _ref2 => {
200
+ const subscribeForeignAssetBalance = async _ref3 => {
204
201
  let {
205
202
  addresses,
206
203
  assetMap,
@@ -208,7 +205,7 @@ const subscribeForeignAssetBalance = async _ref2 => {
208
205
  chainInfo,
209
206
  extrinsicType,
210
207
  substrateApi
211
- } = _ref2;
208
+ } = _ref3;
212
209
  const foreignAssetsAccountKey = 'query_foreignAssets_account';
213
210
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, [_types._AssetType.LOCAL]);
214
211
  const unsubList = await Promise.all(Object.values(tokenMap).map(tokenInfo => {
@@ -268,19 +265,19 @@ function extractOkResponse(response) {
268
265
  }
269
266
  return undefined;
270
267
  }
271
- const subscribePSP22Balance = _ref3 => {
268
+ const subscribePSP22Balance = _ref4 => {
272
269
  let {
273
270
  addresses,
274
271
  assetMap,
275
272
  callback,
276
273
  chainInfo,
277
274
  substrateApi
278
- } = _ref3;
275
+ } = _ref4;
279
276
  const chain = chainInfo.slug;
280
277
  const psp22ContractMap = {};
281
278
  const tokenList = (0, _utils3.filterAssetsByChainAndType)(assetMap, chain, [_types._AssetType.PSP22]);
282
- Object.entries(tokenList).forEach(_ref4 => {
283
- let [slug, tokenInfo] = _ref4;
279
+ Object.entries(tokenList).forEach(_ref5 => {
280
+ let [slug, tokenInfo] = _ref5;
284
281
  psp22ContractMap[slug] = (0, _wasm.getPSP22ContractPromise)(substrateApi.api, (0, _utils2._getContractAddressOfToken)(tokenInfo));
285
282
  });
286
283
  const getTokenBalances = () => {
@@ -327,7 +324,7 @@ const subscribePSP22Balance = _ref3 => {
327
324
  clearInterval(interval);
328
325
  };
329
326
  };
330
- const subscribeTokensAccountsPallet = async _ref5 => {
327
+ const subscribeTokensAccountsPallet = async _ref6 => {
331
328
  let {
332
329
  addresses,
333
330
  assetMap,
@@ -336,7 +333,7 @@ const subscribeTokensAccountsPallet = async _ref5 => {
336
333
  extrinsicType,
337
334
  includeNativeToken,
338
335
  substrateApi
339
- } = _ref5;
336
+ } = _ref6;
340
337
  const tokensAccountsKey = 'query_tokens_accounts';
341
338
  const tokenTypes = includeNativeToken ? [_types._AssetType.NATIVE, _types._AssetType.LOCAL] : [_types._AssetType.LOCAL];
342
339
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, tokenTypes);
@@ -375,7 +372,7 @@ const subscribeTokensAccountsPallet = async _ref5 => {
375
372
  });
376
373
  };
377
374
  };
378
- const subscribeAssetsAccountPallet = async _ref6 => {
375
+ const subscribeAssetsAccountPallet = async _ref7 => {
379
376
  let {
380
377
  addresses,
381
378
  assetMap,
@@ -383,7 +380,7 @@ const subscribeAssetsAccountPallet = async _ref6 => {
383
380
  chainInfo,
384
381
  extrinsicType,
385
382
  substrateApi
386
- } = _ref6;
383
+ } = _ref7;
387
384
  const assetsAccountKey = 'query_assets_account';
388
385
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, [_types._AssetType.LOCAL]);
389
386
  Object.values(tokenMap).forEach(token => {
@@ -444,7 +441,7 @@ const subscribeAssetsAccountPallet = async _ref6 => {
444
441
  };
445
442
 
446
443
  // eslint-disable-next-line @typescript-eslint/require-await
447
- const subscribeOrmlTokensPallet = async _ref7 => {
444
+ const subscribeOrmlTokensPallet = async _ref8 => {
448
445
  let {
449
446
  addresses,
450
447
  assetMap,
@@ -452,7 +449,7 @@ const subscribeOrmlTokensPallet = async _ref7 => {
452
449
  chainInfo,
453
450
  extrinsicType,
454
451
  substrateApi
455
- } = _ref7;
452
+ } = _ref8;
456
453
  const ormlTokensAccountsKey = 'query_ormlTokens_accounts';
457
454
  const tokenMap = (0, _utils3.filterAssetsByChainAndType)(assetMap, chainInfo.slug, [_types._AssetType.LOCAL]);
458
455
  const unsubList = Object.values(tokenMap).map(tokenInfo => {
@@ -491,4 +488,63 @@ const subscribeOrmlTokensPallet = async _ref7 => {
491
488
  unsub && unsub.unsubscribe();
492
489
  });
493
490
  };
491
+ };
492
+
493
+ // eslint-disable-next-line @typescript-eslint/require-await
494
+ const subscribeSubnetAlphaPallet = async _ref9 => {
495
+ let {
496
+ addresses,
497
+ assetMap,
498
+ callback,
499
+ chainInfo,
500
+ substrateApi
501
+ } = _ref9;
502
+ let cancel = false;
503
+ const tokenMap = (0, _utils3.filterAlphaAssetsByChain)(assetMap, chainInfo.slug);
504
+ const getTokenBalances = async () => {
505
+ if (cancel) {
506
+ return;
507
+ }
508
+ const rawData = await substrateApi.api.call.stakeInfoRuntimeApi.getStakeInfoForColdkeys(addresses);
509
+ const values = rawData.toPrimitive();
510
+ const converted = {};
511
+ for (let i = 0; i < values.length; i++) {
512
+ const [, stakes] = values[i];
513
+ const address = addresses[i];
514
+ converted[address] = {};
515
+ stakes.forEach(stakeInfo => {
516
+ const {
517
+ netuid,
518
+ stake
519
+ } = stakeInfo;
520
+ const currentValue = converted[address][netuid] || (0, _bignumber.default)(0);
521
+ converted[address][netuid] = currentValue.plus(stake);
522
+ });
523
+ }
524
+ for (const chainAsset of Object.values(tokenMap)) {
525
+ const netuid = (0, _utils2._getAssetNetuid)(chainAsset);
526
+ const items = Object.entries(converted).map(_ref10 => {
527
+ let [address, stakeMap] = _ref10;
528
+ const value = stakeMap[netuid] || (0, _bignumber.default)(0);
529
+ return {
530
+ address: address,
531
+ tokenSlug: chainAsset.slug,
532
+ state: _KoniTypes.APIItemState.READY,
533
+ free: value.toFixed(0),
534
+ locked: '0'
535
+ };
536
+ });
537
+ if (!cancel) {
538
+ callback(items);
539
+ }
540
+ }
541
+ };
542
+ getTokenBalances().catch(console.error);
543
+ const interval = setInterval(() => {
544
+ getTokenBalances().catch(console.error);
545
+ }, _constants.SUB_TOKEN_REFRESH_BALANCE_INTERVAL);
546
+ return () => {
547
+ cancel = true;
548
+ clearInterval(interval);
549
+ };
494
550
  };
@@ -45,7 +45,8 @@ const _BALANCE_CHAIN_GROUP = {
45
45
  kusama: ['kusama', 'kintsugi', 'kintsugi_test', 'interlay', 'acala', 'statemint', 'karura', 'bifrost'],
46
46
  // perhaps there are some runtime updates
47
47
  centrifuge: ['centrifuge'],
48
- supportBridged: ['rococo_assethub', 'statemint', 'statemine', 'polimec']
48
+ supportBridged: ['rococo_assethub', 'statemint', 'statemine', 'polimec'],
49
+ bittensor: ['bittensor', 'bittensor_testnet']
49
50
  };
50
51
  exports._BALANCE_CHAIN_GROUP = _BALANCE_CHAIN_GROUP;
51
52
  const _BALANCE_TOKEN_GROUP = {
@@ -98,7 +98,8 @@ var _exportNames = {
98
98
  randomizeProvider: true,
99
99
  _isAssetCanPayTxFee: true,
100
100
  updateLatestChainInfo: true,
101
- _chainInfoToChainType: true
101
+ _chainInfoToChainType: true,
102
+ _getAssetNetuid: true
102
103
  };
103
104
  exports._chainInfoToChainType = void 0;
104
105
  exports._checkSmartContractSupportByChain = _checkSmartContractSupportByChain;
@@ -106,6 +107,7 @@ exports._generateCustomProviderKey = _generateCustomProviderKey;
106
107
  exports._getAssetDecimals = _getAssetDecimals;
107
108
  exports._getAssetExistentialDeposit = _getAssetExistentialDeposit;
108
109
  exports._getAssetName = _getAssetName;
110
+ exports._getAssetNetuid = void 0;
109
111
  exports._getAssetOriginChain = _getAssetOriginChain;
110
112
  exports._getAssetPriceId = _getAssetPriceId;
111
113
  exports._getAssetSymbol = _getAssetSymbol;
@@ -790,4 +792,11 @@ const _chainInfoToChainType = chainInfo => {
790
792
  }
791
793
  return _types3.AccountChainType.SUBSTRATE;
792
794
  };
793
- exports._chainInfoToChainType = _chainInfoToChainType;
795
+ exports._chainInfoToChainType = _chainInfoToChainType;
796
+ const _getAssetNetuid = assetInfo => {
797
+ var _assetInfo$metadata$n, _assetInfo$metadata;
798
+ // @ts-ignore
799
+ // eslint-disable-next-line @typescript-eslint/no-unsafe-return
800
+ return (_assetInfo$metadata$n = (_assetInfo$metadata = assetInfo.metadata) === null || _assetInfo$metadata === void 0 ? void 0 : _assetInfo$metadata.netuid) !== null && _assetInfo$metadata$n !== void 0 ? _assetInfo$metadata$n : -1;
801
+ };
802
+ exports._getAssetNetuid = _getAssetNetuid;
@@ -274,6 +274,9 @@ class BasePoolHandler {
274
274
  canHandleSlug(slug) {
275
275
  return this.slug === slug;
276
276
  }
277
+ getEarningSlippage(params) {
278
+ return Promise.resolve(0);
279
+ }
277
280
  /* Other actions */
278
281
  }
279
282
  exports.default = BasePoolHandler;