@subwallet/extension-base 1.3.51-0 → 1.3.52-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/cjs/constants/environment.js +3 -1
- package/cjs/koni/background/handlers/State.js +1 -5
- package/cjs/packageInfo.js +1 -1
- package/cjs/services/balance-service/index.js +3 -4
- package/cjs/services/balance-service/transfer/cardano-transfer.js +43 -11
- package/cjs/services/balance-service/transfer/xcm/acrossBridge/index.js +13 -92
- package/cjs/services/balance-service/transfer/xcm/index.js +12 -4
- package/cjs/services/chain-service/utils/patch.js +3 -2
- package/cjs/services/earning-service/handlers/native-staking/dtao.js +28 -301
- package/cjs/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
- package/cjs/services/earning-service/handlers/native-staking/tao.js +174 -148
- package/cjs/services/earning-service/handlers/nomination-pool/index.js +11 -5
- package/cjs/services/earning-service/service.js +5 -2
- package/cjs/services/fee-service/utils/tokenPayFee.js +17 -13
- package/cjs/services/price-service/coingecko.js +3 -3
- package/cjs/services/swap-service/handler/hydradx-handler.js +19 -13
- package/cjs/services/swap-service/index.js +8 -5
- package/cjs/services/transaction-service/utils.js +31 -22
- package/cjs/utils/index.js +12 -0
- package/cjs/utils/setup-api-sdk.js +27 -0
- package/constants/environment.d.ts +1 -0
- package/constants/environment.js +1 -0
- package/koni/background/handlers/State.js +3 -7
- package/package.json +12 -6
- package/packageInfo.js +1 -1
- package/services/balance-service/index.js +3 -4
- package/services/balance-service/transfer/cardano-transfer.js +42 -10
- package/services/balance-service/transfer/xcm/acrossBridge/index.js +14 -93
- package/services/balance-service/transfer/xcm/index.js +12 -4
- package/services/chain-service/utils/patch.d.ts +1 -0
- package/services/chain-service/utils/patch.js +1 -1
- package/services/earning-service/handlers/native-staking/dtao.d.ts +4 -36
- package/services/earning-service/handlers/native-staking/dtao.js +24 -298
- package/services/earning-service/handlers/native-staking/relay-chain.d.ts +1 -2
- package/services/earning-service/handlers/native-staking/relay-chain.js +4 -4
- package/services/earning-service/handlers/native-staking/tao.d.ts +25 -5
- package/services/earning-service/handlers/native-staking/tao.js +169 -149
- package/services/earning-service/handlers/nomination-pool/index.d.ts +1 -2
- package/services/earning-service/handlers/nomination-pool/index.js +11 -5
- package/services/earning-service/service.d.ts +1 -0
- package/services/earning-service/service.js +4 -2
- package/services/fee-service/utils/tokenPayFee.js +17 -13
- package/services/price-service/coingecko.js +2 -3
- package/services/swap-service/handler/hydradx-handler.js +19 -13
- package/services/swap-service/index.js +8 -5
- package/services/transaction-service/utils.d.ts +0 -1
- package/services/transaction-service/utils.js +31 -21
- package/types/swap/index.d.ts +1 -1
- package/types/yield/info/chain/info.d.ts +1 -0
- package/utils/index.d.ts +1 -0
- package/utils/index.js +2 -1
- package/utils/setup-api-sdk.d.ts +1 -0
- package/utils/setup-api-sdk.js +20 -0
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = exports.BittensorCache = void 0;
|
|
7
|
+
exports.getAlphaToTaoRate = exports.default = exports.DEFAULT_DTAO_MINBOND = exports.BittensorCache = void 0;
|
|
8
8
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
@@ -16,11 +16,16 @@ var _environment = require("@subwallet/extension-base/types/environment");
|
|
|
16
16
|
var _utils3 = require("@subwallet/extension-base/utils");
|
|
17
17
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
18
18
|
var _i18next = require("i18next");
|
|
19
|
+
var _rxjs = require("rxjs");
|
|
19
20
|
var _util = require("@polkadot/util");
|
|
21
|
+
var _service = require("../../service");
|
|
20
22
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
21
23
|
// SPDX-License-Identifier: Apache-2.0
|
|
22
24
|
|
|
25
|
+
const DEFAULT_BITTENSOR_SLIPPAGE = 0.005;
|
|
26
|
+
const DEFAULT_DTAO_MINBOND = '21000000';
|
|
23
27
|
/* Fetch data */
|
|
28
|
+
exports.DEFAULT_DTAO_MINBOND = DEFAULT_DTAO_MINBOND;
|
|
24
29
|
class BittensorCache {
|
|
25
30
|
static instance = null;
|
|
26
31
|
cache = null;
|
|
@@ -136,6 +141,16 @@ class BittensorCache {
|
|
|
136
141
|
// }
|
|
137
142
|
// };
|
|
138
143
|
exports.BittensorCache = BittensorCache;
|
|
144
|
+
const getAlphaToTaoRate = async (substrateApi, netuid) => {
|
|
145
|
+
const subnetInfo = (await substrateApi.api.call.subnetInfoRuntimeApi.getDynamicInfo(netuid)).toJSON();
|
|
146
|
+
if (!subnetInfo) {
|
|
147
|
+
return '1';
|
|
148
|
+
}
|
|
149
|
+
const taoIn = subnetInfo.taoIn ? new _bignumber.default(subnetInfo.taoIn) : new _bignumber.default(0);
|
|
150
|
+
const alphaIn = subnetInfo.alphaIn ? new _bignumber.default(subnetInfo.alphaIn) : new _bignumber.default(0);
|
|
151
|
+
return netuid === 0 || alphaIn.lte(0) ? '1' : taoIn.dividedBy(alphaIn).toString();
|
|
152
|
+
};
|
|
153
|
+
exports.getAlphaToTaoRate = getAlphaToTaoRate;
|
|
139
154
|
class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
140
155
|
availableMethod = {
|
|
141
156
|
join: true,
|
|
@@ -146,6 +161,36 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
146
161
|
claimReward: false,
|
|
147
162
|
changeValidator: true
|
|
148
163
|
};
|
|
164
|
+
async getMinBond(netuid) {
|
|
165
|
+
var _cachedPool$metadata2, _cachedPool$statistic, _cachedPool$statistic2, _onlinePool$metadata2, _onlinePool$statistic, _onlinePool$statistic2;
|
|
166
|
+
// @ts-ignore
|
|
167
|
+
if (this.type === _types.YieldPoolType.SUBNET_STAKING) {
|
|
168
|
+
var _cachedPool$metadata, _onlinePool$metadata;
|
|
169
|
+
if (!netuid) {
|
|
170
|
+
return new _bignumber.default(DEFAULT_DTAO_MINBOND);
|
|
171
|
+
}
|
|
172
|
+
const subnetSlug = `${this.slug}__subnet_${netuid.toString().padStart(2, '0')}`;
|
|
173
|
+
const cachedPool = await this.getPoolInfo(subnetSlug);
|
|
174
|
+
if (cachedPool !== null && cachedPool !== void 0 && (_cachedPool$metadata = cachedPool.metadata) !== null && _cachedPool$metadata !== void 0 && _cachedPool$metadata.minValidate) {
|
|
175
|
+
return new _bignumber.default(cachedPool.metadata.minValidate);
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
// If can't get from cached -> get data online
|
|
179
|
+
const onlineData = await (0, _service.fetchPoolsData)();
|
|
180
|
+
const onlinePool = onlineData[subnetSlug];
|
|
181
|
+
return new _bignumber.default((onlinePool === null || onlinePool === void 0 ? void 0 : (_onlinePool$metadata = onlinePool.metadata) === null || _onlinePool$metadata === void 0 ? void 0 : _onlinePool$metadata.minValidate) || DEFAULT_DTAO_MINBOND);
|
|
182
|
+
}
|
|
183
|
+
const cachedPool = await this.getPoolInfo(this.slug);
|
|
184
|
+
if (cachedPool !== null && cachedPool !== void 0 && (_cachedPool$metadata2 = cachedPool.metadata) !== null && _cachedPool$metadata2 !== void 0 && _cachedPool$metadata2.minValidate || cachedPool !== null && cachedPool !== void 0 && (_cachedPool$statistic = cachedPool.statistic) !== null && _cachedPool$statistic !== void 0 && (_cachedPool$statistic2 = _cachedPool$statistic.earningThreshold) !== null && _cachedPool$statistic2 !== void 0 && _cachedPool$statistic2.join) {
|
|
185
|
+
var _cachedPool$metadata3, _cachedPool$statistic3, _cachedPool$statistic4;
|
|
186
|
+
return new _bignumber.default(((_cachedPool$metadata3 = cachedPool.metadata) === null || _cachedPool$metadata3 === void 0 ? void 0 : _cachedPool$metadata3.minValidate) || ((_cachedPool$statistic3 = cachedPool.statistic) === null || _cachedPool$statistic3 === void 0 ? void 0 : (_cachedPool$statistic4 = _cachedPool$statistic3.earningThreshold) === null || _cachedPool$statistic4 === void 0 ? void 0 : _cachedPool$statistic4.join) || 0);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// If can get from cached -> get data online
|
|
190
|
+
const onlineData = await (0, _service.fetchPoolsData)();
|
|
191
|
+
const onlinePool = onlineData[this.slug];
|
|
192
|
+
return new _bignumber.default((onlinePool === null || onlinePool === void 0 ? void 0 : (_onlinePool$metadata2 = onlinePool.metadata) === null || _onlinePool$metadata2 === void 0 ? void 0 : _onlinePool$metadata2.minValidate) || (onlinePool === null || onlinePool === void 0 ? void 0 : (_onlinePool$statistic = onlinePool.statistic) === null || _onlinePool$statistic === void 0 ? void 0 : (_onlinePool$statistic2 = _onlinePool$statistic.earningThreshold) === null || _onlinePool$statistic2 === void 0 ? void 0 : _onlinePool$statistic2.join) || 0);
|
|
193
|
+
}
|
|
149
194
|
constructor(state, chain) {
|
|
150
195
|
super(state, chain);
|
|
151
196
|
this.bittensorCache = BittensorCache.getInstance();
|
|
@@ -171,83 +216,98 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
171
216
|
|
|
172
217
|
async subscribePoolInfo(callback) {
|
|
173
218
|
let cancel = false;
|
|
174
|
-
const substrateApi = this.substrateApi;
|
|
175
|
-
const
|
|
219
|
+
const substrateApi = await this.substrateApi.isReady;
|
|
220
|
+
const aprSubject = new _rxjs.BehaviorSubject(0);
|
|
221
|
+
const fetchAPR = async () => {
|
|
176
222
|
try {
|
|
223
|
+
const _topValidator = await this.bittensorCache.fetchApr(0);
|
|
224
|
+
const validators = _topValidator.data;
|
|
225
|
+
const highestApr = validators === null || validators === void 0 ? void 0 : validators[0];
|
|
226
|
+
const apr = this.chain === 'bittensor' ? Number((highestApr === null || highestApr === void 0 ? void 0 : highestApr.thirty_day_apy) || 0) * 100 : 0;
|
|
227
|
+
aprSubject.next(apr);
|
|
228
|
+
} catch (e) {
|
|
229
|
+
console.error('Fetch APR error:', e);
|
|
230
|
+
}
|
|
231
|
+
};
|
|
232
|
+
await fetchAPR();
|
|
233
|
+
const interval = setInterval(() => {
|
|
234
|
+
fetchAPR().catch(console.error);
|
|
235
|
+
}, _constants.BITTENSOR_REFRESH_STAKE_APY);
|
|
236
|
+
const rxSubnetTAO = substrateApi.api.rx.query.subtensorModule.subnetTAO(0);
|
|
237
|
+
const rxMinDelegatorStake = substrateApi.api.rx.query.subtensorModule.nominatorMinRequiredStake();
|
|
238
|
+
const rxMaxValidators = substrateApi.api.rx.query.subtensorModule.maxAllowedValidators(0);
|
|
239
|
+
const subscription = (0, _rxjs.combineLatest)([rxMinDelegatorStake, rxMaxValidators, rxSubnetTAO, aprSubject]).subscribe({
|
|
240
|
+
next: _ref => {
|
|
241
|
+
let [minDelegatorStake, maxValidators, taoIn, apr] = _ref;
|
|
177
242
|
if (cancel) {
|
|
178
243
|
return;
|
|
179
244
|
}
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
type: this.type,
|
|
192
|
-
metadata: {
|
|
193
|
-
...this.metadataInfo,
|
|
194
|
-
description: this.getDescription((0, _utils3.formatNumber)(BNminDelegatorStake, (0, _utils2._getAssetDecimals)(this.nativeToken)))
|
|
195
|
-
},
|
|
196
|
-
statistic: {
|
|
197
|
-
assetEarning: [{
|
|
198
|
-
slug: this.nativeToken.slug
|
|
199
|
-
}],
|
|
200
|
-
maxCandidatePerFarmer: Number(maxValidatorPerNominator),
|
|
201
|
-
maxWithdrawalRequestPerFarmer: 1,
|
|
202
|
-
earningThreshold: {
|
|
203
|
-
join: BNminDelegatorStake.toString(),
|
|
204
|
-
defaultUnstake: '0',
|
|
205
|
-
fastUnstake: '0'
|
|
245
|
+
try {
|
|
246
|
+
const bnTaoIn = new _bignumber.default(taoIn.toString());
|
|
247
|
+
const bnMinStake = new _bignumber.default(minDelegatorStake.toString());
|
|
248
|
+
const minStake = bnMinStake.toString();
|
|
249
|
+
const data = {
|
|
250
|
+
...this.baseInfo,
|
|
251
|
+
type: this.type,
|
|
252
|
+
metadata: {
|
|
253
|
+
...this.metadataInfo,
|
|
254
|
+
description: this.getDescription((0, _utils3.formatNumber)(bnMinStake, (0, _utils2._getAssetDecimals)(this.nativeToken))),
|
|
255
|
+
minValidate: minStake
|
|
206
256
|
},
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
257
|
+
statistic: {
|
|
258
|
+
assetEarning: [{
|
|
259
|
+
slug: this.nativeToken.slug
|
|
260
|
+
}],
|
|
261
|
+
maxCandidatePerFarmer: Number(maxValidators.toString()),
|
|
262
|
+
maxWithdrawalRequestPerFarmer: 1,
|
|
263
|
+
earningThreshold: {
|
|
264
|
+
join: minStake,
|
|
265
|
+
defaultUnstake: '0',
|
|
266
|
+
fastUnstake: '0'
|
|
267
|
+
},
|
|
268
|
+
eraTime: 24,
|
|
269
|
+
era: 0,
|
|
270
|
+
unstakingPeriod: 1.2,
|
|
271
|
+
tvl: bnTaoIn.toString(),
|
|
272
|
+
totalApy: apr
|
|
273
|
+
}
|
|
274
|
+
};
|
|
275
|
+
callback(data);
|
|
276
|
+
} catch (err) {
|
|
277
|
+
console.error(err);
|
|
278
|
+
}
|
|
217
279
|
}
|
|
218
|
-
};
|
|
219
|
-
const subscribeStakingMetadataInterval = () => {
|
|
220
|
-
updateStakingInfo().catch(console.error);
|
|
221
|
-
};
|
|
222
|
-
await substrateApi.isReady;
|
|
223
|
-
subscribeStakingMetadataInterval();
|
|
224
|
-
const interval = setInterval(subscribeStakingMetadataInterval, _constants.BITTENSOR_REFRESH_STAKE_APY);
|
|
280
|
+
});
|
|
225
281
|
return () => {
|
|
226
282
|
cancel = true;
|
|
283
|
+
aprSubject.complete();
|
|
284
|
+
subscription.unsubscribe();
|
|
227
285
|
clearInterval(interval);
|
|
228
286
|
};
|
|
229
287
|
}
|
|
230
288
|
|
|
231
289
|
/* Subscribe pool position */
|
|
232
290
|
|
|
233
|
-
|
|
291
|
+
parseNominatorMetadataBase(chainInfo, delegatorState, minBond) {
|
|
292
|
+
let applyRate = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
234
293
|
const nominationList = [];
|
|
235
|
-
const getMinDelegatorStake = this.substrateApi.api.query.subtensorModule.nominatorMinRequiredStake();
|
|
236
|
-
const minDelegatorStake = (await getMinDelegatorStake).toString();
|
|
237
294
|
let allActiveStake = _util.BN_ZERO;
|
|
238
295
|
for (const delegate of delegatorState) {
|
|
239
|
-
const
|
|
240
|
-
const
|
|
296
|
+
const stake = new _bignumber.default(delegate.amount);
|
|
297
|
+
const originActiveStake = applyRate ? stake.multipliedBy(delegate.rate || 1).toFixed(0) : stake.toFixed(0);
|
|
298
|
+
const bnActiveStake = new _util.BN(originActiveStake);
|
|
241
299
|
if (bnActiveStake.gt(_util.BN_ZERO)) {
|
|
242
|
-
const delegationStatus = _types.EarningStatus.EARNING_REWARD;
|
|
243
300
|
allActiveStake = allActiveStake.add(bnActiveStake);
|
|
244
301
|
nominationList.push({
|
|
245
|
-
status:
|
|
302
|
+
status: _types.EarningStatus.EARNING_REWARD,
|
|
246
303
|
chain: chainInfo.slug,
|
|
247
304
|
validatorAddress: delegate.owner,
|
|
248
|
-
activeStake:
|
|
249
|
-
validatorMinStake:
|
|
250
|
-
validatorIdentity: delegate.identity
|
|
305
|
+
activeStake: delegate.amount,
|
|
306
|
+
validatorMinStake: minBond,
|
|
307
|
+
validatorIdentity: delegate.identity,
|
|
308
|
+
...(applyRate ? {
|
|
309
|
+
originActiveStake
|
|
310
|
+
} : {})
|
|
251
311
|
});
|
|
252
312
|
}
|
|
253
313
|
}
|
|
@@ -263,6 +323,10 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
263
323
|
unstakings: []
|
|
264
324
|
};
|
|
265
325
|
}
|
|
326
|
+
async parseNominatorMetadata(chainInfo, delegatorState) {
|
|
327
|
+
const bnMinBond = await this.getMinBond();
|
|
328
|
+
return this.parseNominatorMetadataBase(chainInfo, delegatorState, bnMinBond.toString());
|
|
329
|
+
}
|
|
266
330
|
async subscribePoolPosition(useAddresses, rsCallback) {
|
|
267
331
|
let cancel = false;
|
|
268
332
|
const substrateApi = await this.substrateApi.isReady;
|
|
@@ -305,7 +369,7 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
305
369
|
});
|
|
306
370
|
}
|
|
307
371
|
if (delegateStateInfo && delegateStateInfo.length > 0) {
|
|
308
|
-
this.parseNominatorMetadata(chainInfo,
|
|
372
|
+
this.parseNominatorMetadata(chainInfo, delegatorState).then(nominatorMetadata => {
|
|
309
373
|
rsCallback({
|
|
310
374
|
...defaultInfo,
|
|
311
375
|
...nominatorMetadata,
|
|
@@ -331,61 +395,6 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
331
395
|
});
|
|
332
396
|
}
|
|
333
397
|
};
|
|
334
|
-
|
|
335
|
-
// const getMainnetPoolPosition = async () => {
|
|
336
|
-
// const rawDelegateStateInfos = await Promise.all(
|
|
337
|
-
// useAddresses.map((address) => fetchTaoDelegateState(address))
|
|
338
|
-
// );
|
|
339
|
-
|
|
340
|
-
// if (rawDelegateStateInfos.length > 0) {
|
|
341
|
-
// rawDelegateStateInfos.forEach((rawDelegateStateInfo, i) => {
|
|
342
|
-
// const owner = reformatAddress(useAddresses[i], 42);
|
|
343
|
-
// const delegatorState: TaoStakingStakeOption[] = [];
|
|
344
|
-
// let bnTotalBalance = BN_ZERO;
|
|
345
|
-
// const delegateStateInfo = rawDelegateStateInfo.data;
|
|
346
|
-
|
|
347
|
-
// for (const delegate of delegateStateInfo) {
|
|
348
|
-
// const name = delegate.hotkey_name || delegate.hotkey.ss58;
|
|
349
|
-
|
|
350
|
-
// bnTotalBalance = bnTotalBalance.add(new BN(delegate.stake));
|
|
351
|
-
|
|
352
|
-
// delegatorState.push({
|
|
353
|
-
// owner: delegate.hotkey.ss58,
|
|
354
|
-
// amount: delegate.stake,
|
|
355
|
-
// identity: name
|
|
356
|
-
// });
|
|
357
|
-
// }
|
|
358
|
-
|
|
359
|
-
// if (delegateStateInfo && delegateStateInfo.length > 0) {
|
|
360
|
-
// this.parseNominatorMetadata(chainInfo, owner, delegatorState)
|
|
361
|
-
// .then((nominatorMetadata) => {
|
|
362
|
-
// rsCallback({
|
|
363
|
-
// ...defaultInfo,
|
|
364
|
-
// ...nominatorMetadata,
|
|
365
|
-
// address: owner,
|
|
366
|
-
// type: this.type
|
|
367
|
-
// });
|
|
368
|
-
// })
|
|
369
|
-
// .catch(console.error);
|
|
370
|
-
// } else {
|
|
371
|
-
// rsCallback({
|
|
372
|
-
// ...defaultInfo,
|
|
373
|
-
// type: this.type,
|
|
374
|
-
// address: owner,
|
|
375
|
-
// balanceToken: this.nativeToken.slug,
|
|
376
|
-
// totalStake: '0',
|
|
377
|
-
// activeStake: '0',
|
|
378
|
-
// unstakeBalance: '0',
|
|
379
|
-
// status: EarningStatus.NOT_STAKING,
|
|
380
|
-
// isBondedBefore: false,
|
|
381
|
-
// nominations: [],
|
|
382
|
-
// unstakings: []
|
|
383
|
-
// });
|
|
384
|
-
// }
|
|
385
|
-
// });
|
|
386
|
-
// }
|
|
387
|
-
// };
|
|
388
|
-
|
|
389
398
|
const getStakingPositionInterval = async () => {
|
|
390
399
|
if (cancel) {
|
|
391
400
|
return;
|
|
@@ -410,14 +419,14 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
410
419
|
/* Subscribe pool position */
|
|
411
420
|
|
|
412
421
|
/* Get pool targets */
|
|
413
|
-
|
|
414
422
|
// eslint-disable-next-line @typescript-eslint/require-await
|
|
415
|
-
async getDevnetPoolTargets() {
|
|
423
|
+
async getDevnetPoolTargets(netuid) {
|
|
416
424
|
const testnetDelegate = (await this.substrateApi.api.call.delegateInfoRuntimeApi.getDelegates()).toJSON();
|
|
417
|
-
const
|
|
418
|
-
const
|
|
419
|
-
|
|
420
|
-
|
|
425
|
+
const bnMinBond = await this.getMinBond(netuid);
|
|
426
|
+
const filteredDelegates = testnetDelegate.filter(delegate => {
|
|
427
|
+
return delegate.returnPer1000 !== 0;
|
|
428
|
+
});
|
|
429
|
+
return filteredDelegates.map(delegate => ({
|
|
421
430
|
address: delegate.delegateSs58,
|
|
422
431
|
totalStake: '0',
|
|
423
432
|
ownStake: '0',
|
|
@@ -431,14 +440,12 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
431
440
|
isCrowded: false
|
|
432
441
|
}));
|
|
433
442
|
}
|
|
434
|
-
async getMainnetPoolTargets() {
|
|
443
|
+
async getMainnetPoolTargets(netuid) {
|
|
435
444
|
const _topValidator = await this.bittensorCache.get();
|
|
436
445
|
const topValidator = _topValidator;
|
|
437
|
-
const
|
|
438
|
-
const nominatorMinRequiredStake = (await getNominatorMinRequiredStake).toString();
|
|
439
|
-
const bnMinBond = new _bignumber.default(nominatorMinRequiredStake);
|
|
446
|
+
const bnMinBond = await this.getMinBond();
|
|
440
447
|
const validatorList = topValidator.data;
|
|
441
|
-
const aprResponse = await this.bittensorCache.fetchApr(
|
|
448
|
+
const aprResponse = await this.bittensorCache.fetchApr(netuid);
|
|
442
449
|
const aprMap = {};
|
|
443
450
|
aprResponse.data.forEach(item => {
|
|
444
451
|
aprMap[item.hotkey.ss58] = item.thirty_day_apy;
|
|
@@ -473,11 +480,11 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
473
480
|
}));
|
|
474
481
|
return results;
|
|
475
482
|
}
|
|
476
|
-
async getPoolTargets() {
|
|
483
|
+
async getPoolTargets(netuid) {
|
|
477
484
|
if (this.chain === 'bittensor') {
|
|
478
|
-
return this.getMainnetPoolTargets();
|
|
485
|
+
return this.getMainnetPoolTargets(netuid !== null && netuid !== void 0 ? netuid : 0);
|
|
479
486
|
} else {
|
|
480
|
-
return this.getDevnetPoolTargets();
|
|
487
|
+
return this.getDevnetPoolTargets(netuid);
|
|
481
488
|
}
|
|
482
489
|
}
|
|
483
490
|
|
|
@@ -486,16 +493,23 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
486
493
|
/* Join pool action */
|
|
487
494
|
|
|
488
495
|
async createJoinExtrinsic(data, positionInfo) {
|
|
496
|
+
var _subnetData$netuid, _subnetData$slippage;
|
|
489
497
|
let bondDest = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'Staked';
|
|
490
498
|
const {
|
|
491
499
|
amount,
|
|
492
|
-
selectedValidators: targetValidators
|
|
500
|
+
selectedValidators: targetValidators,
|
|
501
|
+
subnetData
|
|
493
502
|
} = data;
|
|
494
503
|
const chainApi = await this.substrateApi.isReady;
|
|
495
504
|
const binaryAmount = new _bignumber.default(amount);
|
|
496
505
|
const selectedValidatorInfo = targetValidators[0];
|
|
497
506
|
const hotkey = selectedValidatorInfo.address;
|
|
498
|
-
const
|
|
507
|
+
const netuid = (_subnetData$netuid = subnetData === null || subnetData === void 0 ? void 0 : subnetData.netuid) !== null && _subnetData$netuid !== void 0 ? _subnetData$netuid : 0;
|
|
508
|
+
const slippage = (_subnetData$slippage = subnetData === null || subnetData === void 0 ? void 0 : subnetData.slippage) !== null && _subnetData$slippage !== void 0 ? _subnetData$slippage : DEFAULT_BITTENSOR_SLIPPAGE;
|
|
509
|
+
const alphaToTaoPrice = new _bignumber.default(await getAlphaToTaoRate(this.substrateApi, netuid));
|
|
510
|
+
const limitPrice = alphaToTaoPrice.multipliedBy(10 ** (0, _utils2._getAssetDecimals)(this.nativeToken)).multipliedBy(1 + slippage);
|
|
511
|
+
const BNlimitPrice = new _bignumber.default(limitPrice.integerValue(_bignumber.default.ROUND_CEIL).toFixed());
|
|
512
|
+
const extrinsic = chainApi.api.tx.subtensorModule.addStakeLimit(hotkey, netuid, binaryAmount.toFixed(), BNlimitPrice.toFixed(), false);
|
|
499
513
|
return [extrinsic, {
|
|
500
514
|
slug: this.nativeToken.slug,
|
|
501
515
|
amount: '0'
|
|
@@ -509,10 +523,10 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
509
523
|
return baseErrors;
|
|
510
524
|
}
|
|
511
525
|
const {
|
|
512
|
-
amount
|
|
526
|
+
amount,
|
|
527
|
+
subnetData
|
|
513
528
|
} = data;
|
|
514
|
-
const
|
|
515
|
-
const bnMinStake = minDelegatorStake.toString();
|
|
529
|
+
const bnMinStake = await this.getMinBond(subnetData === null || subnetData === void 0 ? void 0 : subnetData.netuid);
|
|
516
530
|
if (new _bignumber.default(amount).lt(bnMinStake)) {
|
|
517
531
|
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)(`Insufficient stake. You need to stake at least ${(0, _utils3.formatNumber)(bnMinStake, (0, _utils2._getAssetDecimals)(this.nativeToken))} ${(0, _utils2._getAssetSymbol)(this.nativeToken)} to earn rewards`))];
|
|
518
532
|
}
|
|
@@ -524,16 +538,21 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
524
538
|
/* Leave pool action */
|
|
525
539
|
|
|
526
540
|
async handleYieldUnstake(amount, address, selectedTarget) {
|
|
541
|
+
let netuid = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 0;
|
|
542
|
+
let slippage = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : DEFAULT_BITTENSOR_SLIPPAGE;
|
|
527
543
|
const apiPromise = await this.substrateApi.isReady;
|
|
528
|
-
|
|
529
|
-
const poolPosition = await this.getPoolPosition(address);
|
|
530
|
-
if (!selectedTarget || !poolPosition) {
|
|
544
|
+
if (!selectedTarget) {
|
|
531
545
|
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS));
|
|
532
546
|
}
|
|
533
|
-
const
|
|
547
|
+
const binaryAmount = new _bignumber.default(amount);
|
|
548
|
+
const alphaToTaoPrice = new _bignumber.default(await getAlphaToTaoRate(this.substrateApi, netuid));
|
|
549
|
+
const limitPrice = alphaToTaoPrice.multipliedBy(10 ** (0, _utils2._getAssetDecimals)(this.nativeToken)).multipliedBy(1 - slippage);
|
|
550
|
+
const BNlimitPrice = new _bignumber.default(limitPrice.integerValue(_bignumber.default.ROUND_CEIL).toFixed());
|
|
551
|
+
const extrinsic = apiPromise.api.tx.subtensorModule.removeStakeLimit(selectedTarget, netuid, binaryAmount.toFixed(), BNlimitPrice.toFixed(), false);
|
|
534
552
|
return [_KoniTypes.ExtrinsicType.STAKING_UNBOND, extrinsic];
|
|
535
553
|
}
|
|
536
554
|
async validateYieldLeave(amount, address, fastLeave, selectedTarget, slug, poolInfo) {
|
|
555
|
+
var _poolInfo$metadata$su;
|
|
537
556
|
const baseErrors = await super.validateYieldLeave(amount, address, fastLeave, selectedTarget, slug);
|
|
538
557
|
if (baseErrors.length > 0) {
|
|
539
558
|
return baseErrors;
|
|
@@ -541,10 +560,13 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
541
560
|
if (!poolInfo) {
|
|
542
561
|
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS)];
|
|
543
562
|
}
|
|
544
|
-
const
|
|
545
|
-
const
|
|
546
|
-
|
|
547
|
-
|
|
563
|
+
const netuid = (_poolInfo$metadata$su = poolInfo.metadata.subnetData) === null || _poolInfo$metadata$su === void 0 ? void 0 : _poolInfo$metadata$su.netuid;
|
|
564
|
+
const alphaToTaoPrice = new _bignumber.default(await getAlphaToTaoRate(this.substrateApi, netuid || 0));
|
|
565
|
+
const minDelegatorStake = await this.getMinBond(netuid);
|
|
566
|
+
const minUnstake = minDelegatorStake.dividedBy(alphaToTaoPrice);
|
|
567
|
+
if (new _bignumber.default(amount).lt(minUnstake)) {
|
|
568
|
+
var _poolInfo$metadata$su2;
|
|
569
|
+
return [new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)(`Amount too low. You need to unstake at least ${(0, _utils3.formatNumber)(minUnstake, (0, _utils2._getAssetDecimals)(this.nativeToken))} ${((_poolInfo$metadata$su2 = poolInfo.metadata.subnetData) === null || _poolInfo$metadata$su2 === void 0 ? void 0 : _poolInfo$metadata$su2.subnetSymbol) || (0, _utils2._getAssetSymbol)(this.nativeToken)}`))];
|
|
548
570
|
}
|
|
549
571
|
return baseErrors;
|
|
550
572
|
}
|
|
@@ -557,14 +579,15 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
557
579
|
const {
|
|
558
580
|
amount,
|
|
559
581
|
maxAmount,
|
|
582
|
+
metadata,
|
|
560
583
|
originValidator,
|
|
561
|
-
selectedValidators: targetValidators
|
|
584
|
+
selectedValidators: targetValidators,
|
|
585
|
+
subnetData
|
|
562
586
|
} = data;
|
|
563
587
|
if (!originValidator) {
|
|
564
588
|
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS));
|
|
565
589
|
}
|
|
566
|
-
|
|
567
|
-
// Bittensor only supports changing 1 validator at a time, not multiple
|
|
590
|
+
const netuid = (subnetData === null || subnetData === void 0 ? void 0 : subnetData.netuid) || 0;
|
|
568
591
|
const selectedValidatorInfo = targetValidators[0];
|
|
569
592
|
const destValidator = selectedValidatorInfo.address;
|
|
570
593
|
if (new _bignumber.default(amount).lte(0)) {
|
|
@@ -573,17 +596,20 @@ class TaoNativeStakingPoolHandler extends _basePara.default {
|
|
|
573
596
|
if (originValidator === destValidator) {
|
|
574
597
|
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, 'From validator is the same with to validator'));
|
|
575
598
|
}
|
|
576
|
-
const
|
|
577
|
-
const
|
|
578
|
-
|
|
579
|
-
|
|
599
|
+
const alphaToTaoPrice = new _bignumber.default(await getAlphaToTaoRate(this.substrateApi, netuid));
|
|
600
|
+
const bnMinStake = await this.getMinBond(netuid);
|
|
601
|
+
const minUnstake = bnMinStake.dividedBy(alphaToTaoPrice);
|
|
602
|
+
const formattedMinUnstake = minUnstake.dividedBy(1000000).integerValue(_bignumber.default.ROUND_CEIL).dividedBy(1000);
|
|
603
|
+
const bnMinMoveStake = formattedMinUnstake.multipliedBy(10 ** (0, _utils2._getAssetDecimals)(this.nativeToken));
|
|
604
|
+
if (new _bignumber.default(amount).lt(bnMinMoveStake)) {
|
|
605
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.BasicTxErrorType.INVALID_PARAMS, (0, _i18next.t)(`Amount too low. You need to move at least ${formattedMinUnstake.toString()} ${(metadata === null || metadata === void 0 ? void 0 : metadata.subnetSymbol) || ''}`)));
|
|
580
606
|
}
|
|
581
607
|
|
|
582
608
|
// Avoid remaining amount too low -> can't do anything with that amount
|
|
583
609
|
if (!(maxAmount === amount) && new _bignumber.default(maxAmount).minus(new _bignumber.default(amount)).lt(bnMinMoveStake)) {
|
|
584
|
-
return Promise.reject(new _TransactionError.TransactionError(_types.StakingTxErrorType.REMAINING_AMOUNT_TOO_LOW, (0, _i18next.t)(`Your remaining stake on the initial validator will fall below minimum active stake and cannot be unstaked if you proceed with the chosen amount. Hit "Move all" to move all ${(0, _utils3.formatNumber)(maxAmount, (0, _utils2._getAssetDecimals)(this.nativeToken))} ${(0, _utils2._getAssetSymbol)(this.nativeToken)} to the new validator, or "Cancel" and lower the amount, then try again`)));
|
|
610
|
+
return Promise.reject(new _TransactionError.TransactionError(_types.StakingTxErrorType.REMAINING_AMOUNT_TOO_LOW, (0, _i18next.t)(`Your remaining stake on the initial validator will fall below minimum active stake and cannot be unstaked if you proceed with the chosen amount. Hit "Move all" to move all ${(0, _utils3.formatNumber)(maxAmount, (0, _utils2._getAssetDecimals)(this.nativeToken))} ${(metadata === null || metadata === void 0 ? void 0 : metadata.subnetSymbol) || (0, _utils2._getAssetSymbol)(this.nativeToken)} to the new validator, or "Cancel" and lower the amount, then try again`)));
|
|
585
611
|
}
|
|
586
|
-
const extrinsic = chainApi.api.tx.subtensorModule.moveStake(originValidator, destValidator,
|
|
612
|
+
const extrinsic = chainApi.api.tx.subtensorModule.moveStake(originValidator, destValidator, netuid, netuid, amount);
|
|
587
613
|
return extrinsic;
|
|
588
614
|
}
|
|
589
615
|
}
|
|
@@ -158,7 +158,7 @@ class NominationPoolHandler extends _base.default {
|
|
|
158
158
|
|
|
159
159
|
/* Subscribe pool position */
|
|
160
160
|
|
|
161
|
-
async parsePoolMemberMetadata(substrateApi, poolMemberInfo, currentEra,
|
|
161
|
+
async parsePoolMemberMetadata(substrateApi, poolMemberInfo, currentEra, address) {
|
|
162
162
|
const chainInfo = this.chainInfo;
|
|
163
163
|
const unlimitedNominatorRewarded = substrateApi.api.consts.staking.maxExposurePageSize !== undefined;
|
|
164
164
|
const _maxNominatorRewardedPerValidator = (substrateApi.api.consts.staking.maxNominatorRewardedPerValidator || 0).toString();
|
|
@@ -254,14 +254,13 @@ class NominationPoolHandler extends _base.default {
|
|
|
254
254
|
return;
|
|
255
255
|
}
|
|
256
256
|
if (ledgers) {
|
|
257
|
-
|
|
258
|
-
const [_currentEra, _deriveSessionProgress] = await Promise.all([substrateApi.api.query.staking.currentEra(), (_substrateApi$api$der = substrateApi.api.derive) === null || _substrateApi$api$der === void 0 ? void 0 : (_substrateApi$api$der2 = _substrateApi$api$der.session) === null || _substrateApi$api$der2 === void 0 ? void 0 : _substrateApi$api$der2.progress()]);
|
|
257
|
+
const _currentEra = await substrateApi.api.query.staking.currentEra();
|
|
259
258
|
const currentEra = _currentEra.toString();
|
|
260
259
|
await Promise.all(ledgers.map(async (_poolMemberInfo, i) => {
|
|
261
260
|
const poolMemberInfo = _poolMemberInfo.toPrimitive();
|
|
262
261
|
const owner = (0, _utils3.reformatAddress)(useAddresses[i], 42);
|
|
263
262
|
if (poolMemberInfo) {
|
|
264
|
-
const nominatorMetadata = await this.parsePoolMemberMetadata(substrateApi, poolMemberInfo, currentEra,
|
|
263
|
+
const nominatorMetadata = await this.parsePoolMemberMetadata(substrateApi, poolMemberInfo, currentEra, owner);
|
|
265
264
|
resultCallback({
|
|
266
265
|
...defaultInfo,
|
|
267
266
|
...nominatorMetadata,
|
|
@@ -574,7 +573,14 @@ class NominationPoolHandler extends _base.default {
|
|
|
574
573
|
async handleYieldWithdraw(address, unstakingInfo) {
|
|
575
574
|
const chainApi = await this.substrateApi.isReady;
|
|
576
575
|
if (chainApi.api.tx.nominationPools.withdrawUnbonded.meta.args.length === 2) {
|
|
577
|
-
|
|
576
|
+
var _chainApi$api$call, _chainApi$api$call$no;
|
|
577
|
+
let slashingSpanCount;
|
|
578
|
+
if ((_chainApi$api$call = chainApi.api.call) !== null && _chainApi$api$call !== void 0 && (_chainApi$api$call$no = _chainApi$api$call.nominationPoolsApi) !== null && _chainApi$api$call$no !== void 0 && _chainApi$api$call$no.memberPendingSlash) {
|
|
579
|
+
slashingSpanCount = await chainApi.api.call.nominationPoolsApi.memberPendingSlash(address);
|
|
580
|
+
} else {
|
|
581
|
+
// Incase api call not exists
|
|
582
|
+
slashingSpanCount = chainApi.api.consts.staking.historyDepth.toPrimitive();
|
|
583
|
+
}
|
|
578
584
|
return chainApi.api.tx.nominationPools.withdrawUnbonded({
|
|
579
585
|
Id: address
|
|
580
586
|
}, slashingSpanCount);
|
|
@@ -4,7 +4,7 @@ var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefau
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.default = void 0;
|
|
7
|
+
exports.fetchPoolsData = exports.default = void 0;
|
|
8
8
|
var _TransactionError = require("@subwallet/extension-base/background/errors/TransactionError");
|
|
9
9
|
var _KoniTypes = require("@subwallet/extension-base/background/KoniTypes");
|
|
10
10
|
var _constants = require("@subwallet/extension-base/constants");
|
|
@@ -27,6 +27,7 @@ const fetchPoolsData = async () => {
|
|
|
27
27
|
});
|
|
28
28
|
return fetchData.data;
|
|
29
29
|
};
|
|
30
|
+
exports.fetchPoolsData = fetchPoolsData;
|
|
30
31
|
class EarningService {
|
|
31
32
|
handlers = {};
|
|
32
33
|
handlerCache = new Map();
|
|
@@ -358,7 +359,9 @@ class EarningService {
|
|
|
358
359
|
const unsubList = [];
|
|
359
360
|
for (const handler of Object.values(this.handlers)) {
|
|
360
361
|
// Force subscribe onchain data
|
|
361
|
-
const forceSubscribe = handler.type === _types2.YieldPoolType.LIQUID_STAKING || handler.type === _types2.YieldPoolType.LENDING ||
|
|
362
|
+
const forceSubscribe = handler.type === _types2.YieldPoolType.LIQUID_STAKING || handler.type === _types2.YieldPoolType.LENDING ||
|
|
363
|
+
// Skip subscribing for subnet staking handlers because subnet staking slugs are not included in the online cache (only slugs with netuid are cached)
|
|
364
|
+
!onlineData[handler.slug] && handler.type !== _types2.YieldPoolType.SUBNET_STAKING;
|
|
362
365
|
if (!this.useOnlineCacheOnly || forceSubscribe) {
|
|
363
366
|
handler.subscribePoolInfo(callback).then(unsub => {
|
|
364
367
|
if (!cancel) {
|
|
@@ -11,7 +11,7 @@ exports.getHydrationTokensCanPayFee = getHydrationTokensCanPayFee;
|
|
|
11
11
|
var _types = require("@subwallet/chain-list/types");
|
|
12
12
|
var _utils = require("@subwallet/extension-base/services/chain-service/utils");
|
|
13
13
|
var _utils2 = require("@subwallet/extension-base/services/swap-service/handler/asset-hub/utils");
|
|
14
|
-
var
|
|
14
|
+
var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
|
|
15
15
|
var _bignumber = _interopRequireDefault(require("bignumber.js"));
|
|
16
16
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
17
17
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -132,20 +132,24 @@ function batchExtrinsicSetFeeHydration(substrateApi, tx, feeSetting, assetId) {
|
|
|
132
132
|
return tx;
|
|
133
133
|
}
|
|
134
134
|
async function getHydrationRate(address, hdx, desToken) {
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
}
|
|
135
|
+
let quoteRate;
|
|
136
|
+
try {
|
|
137
|
+
const quote = await _subwalletServicesSdk.default.swapApi.getHydrationRate({
|
|
138
|
+
address,
|
|
139
|
+
pair: {
|
|
140
|
+
slug: `${hdx.slug}___${desToken.slug}`,
|
|
141
|
+
from: hdx.slug,
|
|
142
|
+
to: desToken.slug
|
|
143
|
+
}
|
|
144
|
+
});
|
|
145
|
+
quoteRate = quote.rate;
|
|
146
|
+
} catch (error) {
|
|
147
|
+
console.error(`Failed to fetch swap quote: ${error.message}`);
|
|
148
|
+
}
|
|
149
|
+
if (quoteRate) {
|
|
147
150
|
const hdxDecimal = (0, _utils._getAssetDecimals)(hdx);
|
|
148
151
|
const desTokenDecimal = (0, _utils._getAssetDecimals)(desToken);
|
|
149
152
|
return new _bignumber.default(quoteRate).multipliedBy(10 ** (desTokenDecimal - hdxDecimal)).toFixed();
|
|
150
153
|
}
|
|
154
|
+
return undefined;
|
|
151
155
|
}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
3
4
|
Object.defineProperty(exports, "__esModule", {
|
|
4
5
|
value: true
|
|
5
6
|
});
|
|
6
7
|
exports.getPriceMap = exports.getHistoryPrice = exports.getExchangeRateMap = void 0;
|
|
7
8
|
var _constants = require("@subwallet/extension-base/constants");
|
|
8
9
|
var _staticData = require("@subwallet/extension-base/utils/staticData");
|
|
9
|
-
var
|
|
10
|
+
var _subwalletServicesSdk = _interopRequireDefault(require("@subwallet-monorepos/subwallet-services-sdk"));
|
|
10
11
|
var _util = require("@polkadot/util");
|
|
11
12
|
// Copyright 2019-2022 @subwallet/extension-koni authors & contributors
|
|
12
13
|
// SPDX-License-Identifier: Apache-2.0
|
|
@@ -155,8 +156,7 @@ const getPriceMap = async function (priceIds) {
|
|
|
155
156
|
exports.getPriceMap = getPriceMap;
|
|
156
157
|
const getHistoryPrice = async (priceId, type) => {
|
|
157
158
|
try {
|
|
158
|
-
|
|
159
|
-
const response = await ((_subwalletApiSdk$pric = _subwalletApiSdk.subwalletApiSdk.priceHistoryApi) === null || _subwalletApiSdk$pric === void 0 ? void 0 : _subwalletApiSdk$pric.getPriceHistory(priceId, type));
|
|
159
|
+
const response = await _subwalletServicesSdk.default.priceHistoryApi.getPriceHistory(priceId, type);
|
|
160
160
|
if (response) {
|
|
161
161
|
return response;
|
|
162
162
|
}
|