@subwallet/extension-base 1.3.24-0 → 1.3.25-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 (58) hide show
  1. package/background/KoniTypes.d.ts +9 -1
  2. package/background/KoniTypes.js +1 -0
  3. package/background/errors/EvmProviderError.js +4 -0
  4. package/background/errors/ProviderError.d.ts +1 -1
  5. package/background/errors/ProviderError.js +2 -2
  6. package/cjs/background/KoniTypes.js +1 -0
  7. package/cjs/background/errors/EvmProviderError.js +4 -0
  8. package/cjs/background/errors/ProviderError.js +2 -2
  9. package/cjs/koni/background/handlers/Tabs.js +3 -2
  10. package/cjs/packageInfo.js +1 -1
  11. package/cjs/page/index.js +1 -1
  12. package/cjs/services/balance-service/helpers/subscribe/substrate/index.js +3 -3
  13. package/cjs/services/buy-service/constants/token.js +3 -0
  14. package/cjs/services/earning-service/constants/chains.js +1 -1
  15. package/cjs/services/earning-service/handlers/base.js +11 -5
  16. package/cjs/services/earning-service/handlers/native-staking/base-para.js +7 -6
  17. package/cjs/services/earning-service/handlers/native-staking/base.js +6 -3
  18. package/cjs/services/earning-service/handlers/native-staking/dtao.js +444 -0
  19. package/cjs/services/earning-service/handlers/native-staking/index.js +8 -1
  20. package/cjs/services/earning-service/handlers/native-staking/tao.js +138 -125
  21. package/cjs/services/earning-service/service.js +14 -4
  22. package/cjs/services/inapp-notification-service/index.js +3 -0
  23. package/cjs/services/transaction-service/index.js +6 -0
  24. package/cjs/types/yield/info/base.js +1 -0
  25. package/cjs/utils/fetchEvmChainInfo.js +10 -5
  26. package/koni/background/handlers/Tabs.js +3 -2
  27. package/package.json +11 -6
  28. package/packageInfo.js +1 -1
  29. package/page/index.js +1 -1
  30. package/services/balance-service/helpers/subscribe/substrate/index.js +2 -2
  31. package/services/buy-service/constants/token.js +3 -0
  32. package/services/earning-service/constants/chains.js +1 -1
  33. package/services/earning-service/handlers/base.d.ts +7 -5
  34. package/services/earning-service/handlers/base.js +11 -7
  35. package/services/earning-service/handlers/native-staking/base-para.d.ts +1 -1
  36. package/services/earning-service/handlers/native-staking/base-para.js +7 -6
  37. package/services/earning-service/handlers/native-staking/base.d.ts +1 -1
  38. package/services/earning-service/handlers/native-staking/base.js +6 -3
  39. package/services/earning-service/handlers/native-staking/dtao.d.ts +64 -0
  40. package/services/earning-service/handlers/native-staking/dtao.js +434 -0
  41. package/services/earning-service/handlers/native-staking/index.d.ts +1 -0
  42. package/services/earning-service/handlers/native-staking/index.js +2 -1
  43. package/services/earning-service/handlers/native-staking/tao.d.ts +16 -4
  44. package/services/earning-service/handlers/native-staking/tao.js +136 -121
  45. package/services/earning-service/service.d.ts +1 -0
  46. package/services/earning-service/service.js +15 -5
  47. package/services/inapp-notification-service/index.js +3 -0
  48. package/services/transaction-service/index.js +6 -0
  49. package/types/bridge/index.d.ts +1 -0
  50. package/types/buy.d.ts +1 -1
  51. package/types/yield/actions/join/step.d.ts +1 -0
  52. package/types/yield/actions/join/submit.d.ts +1 -0
  53. package/types/yield/info/account/info.d.ts +14 -1
  54. package/types/yield/info/base.d.ts +3 -1
  55. package/types/yield/info/base.js +1 -0
  56. package/types/yield/info/chain/info.d.ts +5 -1
  57. package/utils/fetchEvmChainInfo.d.ts +1 -1
  58. package/utils/fetchEvmChainInfo.js +10 -5
@@ -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, CommonOptimalPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParams, 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, 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, CommonOptimalPath, CurrentAccountInfo, EarningRewardHistoryItem, EarningRewardJson, EarningStatus, HandleYieldStepParams, InternalRequestSign, LeavePoolAdditionalData, NominationPoolInfo, OptimalSwapPathParams, 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';
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';
@@ -821,6 +821,7 @@ export declare enum EvmProviderErrorType {
821
821
  UNSUPPORTED_METHOD = "UNSUPPORTED_METHOD",
822
822
  DISCONNECTED = "DISCONNECTED",
823
823
  CHAIN_DISCONNECTED = "CHAIN_DISCONNECTED",
824
+ NETWORK_NOT_SUPPORTED = "NETWORK_NOT_SUPPORTED",
824
825
  INVALID_PARAMS = "INVALID_PARAMS",
825
826
  INTERNAL_ERROR = "INTERNAL_ERROR"
826
827
  }
@@ -1120,6 +1121,7 @@ export interface NominationInfo {
1120
1121
  hasUnstaking?: boolean;
1121
1122
  validatorMinStake?: string;
1122
1123
  status: EarningStatus;
1124
+ originActiveStake?: string;
1123
1125
  }
1124
1126
  export interface UnstakingInfo {
1125
1127
  chain: string;
@@ -1163,6 +1165,9 @@ export interface BondingSubmitParams extends BaseRequestSign {
1163
1165
  address: string;
1164
1166
  selectedValidators: ValidatorInfo[];
1165
1167
  lockPeriod?: number;
1168
+ poolInfo?: {
1169
+ metadata: SubnetYieldPositionInfo;
1170
+ };
1166
1171
  }
1167
1172
  export declare type RequestBondingSubmit = InternalRequestSign<BondingSubmitParams>;
1168
1173
  export interface UnbondingSubmitParams extends BaseRequestSign {
@@ -1175,6 +1180,9 @@ export interface UnbondingSubmitParams extends BaseRequestSign {
1175
1180
  exchangeRate?: number;
1176
1181
  inputTokenInfo?: _ChainAsset;
1177
1182
  isFastUnbond: boolean;
1183
+ poolInfo?: {
1184
+ metadata: SubnetYieldPositionInfo;
1185
+ };
1178
1186
  }
1179
1187
  export declare type RequestUnbondingSubmit = InternalRequestSign<UnbondingSubmitParams>;
1180
1188
  export interface StakePoolingBondingParams extends BaseRequestSign {
@@ -181,6 +181,7 @@ export let EvmProviderErrorType;
181
181
  EvmProviderErrorType["UNSUPPORTED_METHOD"] = "UNSUPPORTED_METHOD";
182
182
  EvmProviderErrorType["DISCONNECTED"] = "DISCONNECTED";
183
183
  EvmProviderErrorType["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
184
+ EvmProviderErrorType["NETWORK_NOT_SUPPORTED"] = "NETWORK_NOT_SUPPORTED";
184
185
  EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
185
186
  EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
186
187
  })(EvmProviderErrorType || (EvmProviderErrorType = {}));
@@ -25,6 +25,10 @@ const defaultErrorMap = {
25
25
  message: detectTranslate('Network is disconnected'),
26
26
  code: 4901
27
27
  },
28
+ NETWORK_NOT_SUPPORTED: {
29
+ message: detectTranslate('This network is currently not supported'),
30
+ code: 4902
31
+ },
28
32
  INVALID_PARAMS: {
29
33
  message: detectTranslate('Undefined error. Please contact SubWallet support'),
30
34
  code: -32602
@@ -2,5 +2,5 @@ import { SWError } from '@subwallet/extension-base/background/errors/SWError';
2
2
  import { ProviderErrorType } from '@subwallet/extension-base/background/KoniTypes';
3
3
  export declare class ProviderError extends SWError {
4
4
  errorType: ProviderErrorType;
5
- constructor(errorType: ProviderErrorType, errMessage?: string, data?: unknown);
5
+ constructor(errorType: ProviderErrorType, errMessage?: string, data?: unknown, errorCode?: number);
6
6
  }
@@ -22,12 +22,12 @@ const defaultErrorMap = {
22
22
  }
23
23
  };
24
24
  export class ProviderError extends SWError {
25
- constructor(errorType, errMessage, data) {
25
+ constructor(errorType, errMessage, data, errorCode) {
26
26
  const {
27
27
  code,
28
28
  message
29
29
  } = defaultErrorMap[errorType];
30
- super(errorType, errMessage || message, code, data);
30
+ super(errorType, errMessage || message, errorCode || code, data);
31
31
  this.errorType = errorType;
32
32
  }
33
33
  }
@@ -195,6 +195,7 @@ exports.EvmProviderErrorType = EvmProviderErrorType;
195
195
  EvmProviderErrorType["UNSUPPORTED_METHOD"] = "UNSUPPORTED_METHOD";
196
196
  EvmProviderErrorType["DISCONNECTED"] = "DISCONNECTED";
197
197
  EvmProviderErrorType["CHAIN_DISCONNECTED"] = "CHAIN_DISCONNECTED";
198
+ EvmProviderErrorType["NETWORK_NOT_SUPPORTED"] = "NETWORK_NOT_SUPPORTED";
198
199
  EvmProviderErrorType["INVALID_PARAMS"] = "INVALID_PARAMS";
199
200
  EvmProviderErrorType["INTERNAL_ERROR"] = "INTERNAL_ERROR";
200
201
  })(EvmProviderErrorType || (exports.EvmProviderErrorType = EvmProviderErrorType = {}));
@@ -31,6 +31,10 @@ const defaultErrorMap = {
31
31
  message: (0, _utils.detectTranslate)('Network is disconnected'),
32
32
  code: 4901
33
33
  },
34
+ NETWORK_NOT_SUPPORTED: {
35
+ message: (0, _utils.detectTranslate)('This network is currently not supported'),
36
+ code: 4902
37
+ },
34
38
  INVALID_PARAMS: {
35
39
  message: (0, _utils.detectTranslate)('Undefined error. Please contact SubWallet support'),
36
40
  code: -32602
@@ -28,12 +28,12 @@ const defaultErrorMap = {
28
28
  }
29
29
  };
30
30
  class ProviderError extends _SWError.SWError {
31
- constructor(errorType, errMessage, data) {
31
+ constructor(errorType, errMessage, data, errorCode) {
32
32
  const {
33
33
  code,
34
34
  message
35
35
  } = defaultErrorMap[errorType];
36
- super(errorType, errMessage || message, code, data);
36
+ super(errorType, errMessage || message, errorCode || code, data);
37
37
  this.errorType = errorType;
38
38
  }
39
39
  }
@@ -541,11 +541,12 @@ class KoniTabs {
541
541
  } else {
542
542
  const onlineData = await (0, _utils2.getEVMChainInfo)(chainIdDec);
543
543
  if (onlineData) {
544
+ var _onlineData$explorers;
544
545
  const chainData = {
545
546
  chainId: chainId,
546
547
  rpcUrls: onlineData.rpc.filter(url => url.startsWith('https://')),
547
548
  chainName: onlineData.name,
548
- blockExplorerUrls: onlineData.explorers.map(explorer => explorer.url),
549
+ blockExplorerUrls: (_onlineData$explorers = onlineData.explorers) === null || _onlineData$explorers === void 0 ? void 0 : _onlineData$explorers.map(explorer => explorer.url),
549
550
  nativeCurrency: onlineData.nativeCurrency,
550
551
  requestId: id
551
552
  };
@@ -554,7 +555,7 @@ class KoniTabs {
554
555
  params: [chainData]
555
556
  });
556
557
  } else {
557
- throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.INVALID_PARAMS, 'This network is currently not supported');
558
+ throw new _EvmProviderError.EvmProviderError(_KoniTypes.EvmProviderErrorType.NETWORK_NOT_SUPPORTED, 'This network is currently not supported');
558
559
  }
559
560
  }
560
561
  return null;
@@ -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.24-0'
16
+ version: '1.3.25-0'
17
17
  };
18
18
  exports.packageInfo = packageInfo;
package/cjs/page/index.js CHANGED
@@ -64,7 +64,7 @@ function handleResponse(data) {
64
64
  // eslint-disable-next-line @typescript-eslint/ban-types
65
65
  handler.subscriber(data.subscription);
66
66
  } else if (data.error) {
67
- handler.reject(new _ProviderError.ProviderError(_KoniTypes.ProviderErrorType.INTERNAL_ERROR, data.error, data.errorCode));
67
+ handler.reject(new _ProviderError.ProviderError(_KoniTypes.ProviderErrorType.INTERNAL_ERROR, data.error, data.errorCode, data.errorCode));
68
68
  } else {
69
69
  handler.resolve(data.response);
70
70
  }
@@ -19,7 +19,7 @@ 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 _tao = require("@subwallet/extension-base/services/earning-service/handlers/native-staking/tao");
22
+ var _dtao = require("@subwallet/extension-base/services/earning-service/handlers/native-staking/dtao");
23
23
  var _utils3 = require("@subwallet/extension-base/utils");
24
24
  var _bignumber = _interopRequireDefault(require("bignumber.js"));
25
25
  var _evm = require("../evm");
@@ -140,10 +140,10 @@ const subscribeWithSystemAccountPallet = async _ref => {
140
140
  });
141
141
  }
142
142
  let bittensorStakingBalances = new Array(addresses.length).fill(new _bignumber.default(0));
143
- if (['bittensor'].includes(chainInfo.slug)) {
143
+ if (['bittensor', 'bittensor_testnet'].includes(chainInfo.slug)) {
144
144
  bittensorStakingBalances = await Promise.all(addresses.map(async address => {
145
145
  const stakeInfo = (await substrateApi.api.call.stakeInfoRuntimeApi.getStakeInfoForColdkey(address)).toJSON();
146
- const price = await (0, _tao.getTaoToAlphaMapping)(substrateApi);
146
+ const price = await (0, _dtao.getTaoToAlphaMapping)(substrateApi);
147
147
  let TaoTotalStake = new _bignumber.default(0);
148
148
  if (stakeInfo) {
149
149
  for (const validator of Object.values(stakeInfo)) {
@@ -26,6 +26,9 @@ const DEFAULT_SERVICE_INFO = {
26
26
  },
27
27
  moonpay: {
28
28
  ...DEFAULT_BUY_SERVICE
29
+ },
30
+ meld: {
31
+ ...DEFAULT_BUY_SERVICE
29
32
  }
30
33
  };
31
34
  exports.DEFAULT_SERVICE_INFO = DEFAULT_SERVICE_INFO;
@@ -23,7 +23,7 @@ const _STAKING_CHAIN_GROUP = {
23
23
  lending: ['interlay'],
24
24
  krest_network: ['krest_network'],
25
25
  manta: ['manta_network'],
26
- bittensor: ['bittensor', 'bittensor_devnet'],
26
+ bittensor: ['bittensor', 'bittensor_testnet'],
27
27
  mythos: ['mythos', 'muse_testnet']
28
28
  };
29
29
  exports._STAKING_CHAIN_GROUP = _STAKING_CHAIN_GROUP;
@@ -113,11 +113,13 @@ class BasePoolHandler {
113
113
  return false;
114
114
  }
115
115
  async getPoolInfo() {
116
- return await this.state.earningService.getYieldPool(this.slug);
116
+ let slug = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.slug;
117
+ return await this.state.earningService.getYieldPool(slug);
117
118
  }
118
119
  async getPoolPosition(address) {
120
+ let slug = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.slug;
119
121
  const originAddress = (0, _utils2.reformatAddress)(address);
120
- return await this.state.earningService.getYieldPosition(originAddress, this.slug);
122
+ return await this.state.earningService.getYieldPosition(originAddress, slug);
121
123
  }
122
124
 
123
125
  /* Subscribe data */
@@ -132,7 +134,7 @@ class BasePoolHandler {
132
134
 
133
135
  async earlyValidate(request) {
134
136
  var _poolInfo$statistic, _poolInfo$statistic2, _poolInfo$statistic2$;
135
- const poolInfo = await this.getPoolInfo();
137
+ const poolInfo = await this.getPoolInfo(request.slug);
136
138
  if (!poolInfo || !((_poolInfo$statistic = poolInfo.statistic) !== null && _poolInfo$statistic !== void 0 && _poolInfo$statistic.earningThreshold.join)) {
137
139
  return {
138
140
  passed: false,
@@ -254,11 +256,11 @@ class BasePoolHandler {
254
256
  /** Validate param to join the pool */
255
257
 
256
258
  /** Create `transaction` to leave the pool */
257
- async handleYieldLeave(fastLeave, amount, address, selectedTarget) {
259
+ async handleYieldLeave(fastLeave, amount, address, selectedTarget, netuid) {
258
260
  if (fastLeave) {
259
261
  return this.handleYieldRedeem(amount, address, selectedTarget);
260
262
  } else {
261
- return this.handleYieldUnstake(amount, address, selectedTarget);
263
+ return this.handleYieldUnstake(amount, address, selectedTarget, netuid);
262
264
  }
263
265
  }
264
266
 
@@ -268,6 +270,10 @@ class BasePoolHandler {
268
270
 
269
271
  /** Create `transaction` to withdraw unstaked amount */
270
272
 
273
+ /** Check handler can handle slug */
274
+ canHandleSlug(slug) {
275
+ return this.slug === slug;
276
+ }
271
277
  /* Other actions */
272
278
  }
273
279
  exports.default = BasePoolHandler;
@@ -32,10 +32,11 @@ class BaseParaNativeStakingPoolHandler extends _base.default {
32
32
  const {
33
33
  address,
34
34
  amount,
35
- selectedValidators
35
+ selectedValidators,
36
+ slug
36
37
  } = data;
37
- const poolInfo = await this.getPoolInfo();
38
- const poolPosition = await this.getPoolPosition(address);
38
+ const poolInfo = await this.getPoolInfo(slug);
39
+ const poolPosition = await this.getPoolPosition(address, slug);
39
40
  const chainInfo = this.chainInfo;
40
41
  const bnAmount = new _util.BN(amount);
41
42
  if (bnAmount.lte(_util.BN_ZERO)) {
@@ -101,10 +102,10 @@ class BaseParaNativeStakingPoolHandler extends _base.default {
101
102
  /**
102
103
  * @todo Recheck
103
104
  * */
104
- async validateYieldLeave(amount, address, fastLeave, selectedTarget) {
105
+ async validateYieldLeave(amount, address, fastLeave, selectedTarget, slug) {
105
106
  const errors = [];
106
- const poolInfo = await this.getPoolInfo();
107
- const poolPosition = await this.getPoolPosition(address);
107
+ const poolInfo = await this.getPoolInfo(slug);
108
+ const poolPosition = await this.getPoolPosition(address, slug);
108
109
  if (!poolInfo || !poolInfo.statistic || !poolPosition || fastLeave || !selectedTarget) {
109
110
  return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INTERNAL_ERROR)];
110
111
  }
@@ -100,6 +100,7 @@ class BaseNativeStakingPoolHandler extends _base.default {
100
100
  const {
101
101
  address,
102
102
  amount,
103
+ netuid,
103
104
  slug,
104
105
  targets
105
106
  } = params;
@@ -108,7 +109,8 @@ class BaseNativeStakingPoolHandler extends _base.default {
108
109
  amount,
109
110
  address,
110
111
  slug,
111
- selectedValidators
112
+ selectedValidators,
113
+ netuid
112
114
  };
113
115
  const positionInfo = await this.getPoolPosition(address);
114
116
  const [, fee] = await this.createJoinExtrinsic(data, positionInfo);
@@ -119,9 +121,10 @@ class BaseNativeStakingPoolHandler extends _base.default {
119
121
  const {
120
122
  address,
121
123
  amount,
122
- selectedValidators
124
+ selectedValidators,
125
+ slug
123
126
  } = data;
124
- const positionInfo = await this.getPoolPosition(address);
127
+ const positionInfo = await this.getPoolPosition(address, slug);
125
128
  const [extrinsic] = await this.createJoinExtrinsic(data, positionInfo);
126
129
  const bondingData = {
127
130
  poolPosition: positionInfo,