@subwallet/extension-base 1.1.33-beta.0 → 1.1.33-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/background/KoniTypes.d.ts +9 -0
- package/background/KoniTypes.js +3 -0
- package/cjs/background/KoniTypes.js +3 -0
- package/cjs/koni/api/yield/helper/utils.js +6 -3
- package/cjs/services/chain-service/constants.js +4 -2
- package/cjs/services/chain-service/handler/SubstrateApi.js +10 -5
- package/cjs/services/chain-service/index.js +120 -37
- package/cjs/services/chain-service/utils.js +68 -0
- package/cjs/services/earning-service/handlers/liquid-staking/base.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +140 -0
- package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
- package/cjs/services/earning-service/handlers/liquid-staking/index.js +7 -0
- package/cjs/services/earning-service/handlers/special.js +7 -3
- package/cjs/services/earning-service/service.js +1 -0
- package/cjs/services/storage-service/DatabaseService.js +29 -1
- package/cjs/services/storage-service/databases/index.js +3 -0
- package/cjs/services/storage-service/db-stores/AssetRef.js +24 -0
- package/cjs/services/transaction-service/index.js +3 -0
- package/cjs/types/yield/actions/join/step.js +1 -0
- package/koni/api/yield/helper/utils.d.ts +1 -1
- package/koni/api/yield/helper/utils.js +5 -3
- package/package.json +12 -2
- package/services/chain-service/constants.d.ts +1 -0
- package/services/chain-service/constants.js +1 -0
- package/services/chain-service/handler/SubstrateApi.js +10 -5
- package/services/chain-service/index.d.ts +11 -1
- package/services/chain-service/index.js +116 -34
- package/services/chain-service/utils.d.ts +10 -1
- package/services/chain-service/utils.js +66 -1
- package/services/earning-service/handlers/liquid-staking/base.d.ts +1 -1
- package/services/earning-service/handlers/liquid-staking/base.js +2 -1
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +37 -0
- package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +132 -0
- package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +3 -3
- package/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
- package/services/earning-service/handlers/liquid-staking/index.d.ts +1 -0
- package/services/earning-service/handlers/liquid-staking/index.js +1 -0
- package/services/earning-service/handlers/special.js +7 -3
- package/services/earning-service/service.js +2 -1
- package/services/storage-service/DatabaseService.d.ts +8 -2
- package/services/storage-service/DatabaseService.js +28 -1
- package/services/storage-service/databases/index.d.ts +5 -1
- package/services/storage-service/databases/index.js +3 -0
- package/services/storage-service/db-stores/AssetRef.d.ts +7 -0
- package/services/storage-service/db-stores/AssetRef.js +16 -0
- package/services/transaction-service/index.js +3 -0
- package/types/yield/actions/join/step.d.ts +1 -0
- package/types/yield/actions/join/step.js +1 -0
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
// Copyright 2019-2022 @subwallet/extension-base
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
|
-
import { COMMON_CHAIN_SLUGS } from '@subwallet/chain-list';
|
|
5
4
|
import { TransactionError } from '@subwallet/extension-base/background/errors/TransactionError';
|
|
6
5
|
import { BasicTxErrorType, ChainType, ExtrinsicType } from '@subwallet/extension-base/background/KoniTypes';
|
|
7
6
|
import { ALL_ACCOUNT_KEY } from '@subwallet/extension-base/constants';
|
|
@@ -201,13 +200,16 @@ export default class BaseSpecialStakingPoolHandler extends BasePoolHandler {
|
|
|
201
200
|
const altInputTokenBalance = await this.state.balanceService.getTokenFreeBalance(address, altInputTokenInfo.originChain, altInputTokenSlug);
|
|
202
201
|
const bnAltInputTokenBalance = new BN(altInputTokenBalance.value || '0');
|
|
203
202
|
if (bnAltInputTokenBalance.gt(BN_ZERO)) {
|
|
203
|
+
const altChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
204
|
+
const symbol = altInputTokenInfo.symbol;
|
|
205
|
+
const networkName = altChainInfo.name;
|
|
204
206
|
const step = {
|
|
205
207
|
metadata: {
|
|
206
208
|
sendingValue: bnAmount.toString(),
|
|
207
209
|
originTokenInfo: altInputTokenInfo,
|
|
208
210
|
destinationTokenInfo: inputTokenInfo
|
|
209
211
|
},
|
|
210
|
-
name:
|
|
212
|
+
name: `Transfer ${symbol} from ${networkName}`,
|
|
211
213
|
type: YieldStepType.XCM
|
|
212
214
|
};
|
|
213
215
|
const xcmOriginSubstrateApi = await this.state.getSubstrateApi(altInputTokenInfo.originChain).isReady;
|
|
@@ -404,7 +406,9 @@ export default class BaseSpecialStakingPoolHandler extends BasePoolHandler {
|
|
|
404
406
|
amount
|
|
405
407
|
} = data;
|
|
406
408
|
const destinationTokenSlug = this.inputAsset;
|
|
407
|
-
const
|
|
409
|
+
const altInputTokenSlug = this.altInputAsset || '';
|
|
410
|
+
const altInputTokenInfo = this.state.getAssetBySlug(altInputTokenSlug);
|
|
411
|
+
const originChainInfo = this.state.getChainInfo(altInputTokenInfo.originChain);
|
|
408
412
|
const originTokenSlug = _getChainNativeTokenSlug(originChainInfo);
|
|
409
413
|
const originTokenInfo = this.state.getAssetBySlug(originTokenSlug);
|
|
410
414
|
const destinationTokenInfo = this.state.getAssetBySlug(destinationTokenSlug);
|
|
@@ -12,7 +12,7 @@ import { YieldPoolType } from '@subwallet/extension-base/types';
|
|
|
12
12
|
import { addLazy, categoryAddresses, createPromiseHandler } from '@subwallet/extension-base/utils';
|
|
13
13
|
import fetch from 'cross-fetch';
|
|
14
14
|
import { BehaviorSubject } from 'rxjs';
|
|
15
|
-
import { AcalaLiquidStakingPoolHandler, AmplitudeNativeStakingPoolHandler, AstarNativeStakingPoolHandler, BifrostLiquidStakingPoolHandler, InterlayLendingPoolHandler, NominationPoolHandler, ParallelLiquidStakingPoolHandler, ParaNativeStakingPoolHandler, RelayNativeStakingPoolHandler, StellaSwapLiquidStakingPoolHandler } from "./handlers/index.js";
|
|
15
|
+
import { AcalaLiquidStakingPoolHandler, AmplitudeNativeStakingPoolHandler, AstarNativeStakingPoolHandler, BifrostLiquidStakingPoolHandler, BifrostMantaLiquidStakingPoolHandler, InterlayLendingPoolHandler, NominationPoolHandler, ParallelLiquidStakingPoolHandler, ParaNativeStakingPoolHandler, RelayNativeStakingPoolHandler, StellaSwapLiquidStakingPoolHandler } from "./handlers/index.js";
|
|
16
16
|
const POOLS_DATA_URLS = 'https://sw-static-cache.pages.dev/earning/yield-pools.json';
|
|
17
17
|
const fetchPoolsData = async () => {
|
|
18
18
|
const res = await fetch(POOLS_DATA_URLS);
|
|
@@ -70,6 +70,7 @@ export default class EarningService {
|
|
|
70
70
|
if (_STAKING_CHAIN_GROUP.liquidStaking.includes(chain)) {
|
|
71
71
|
if (chain === 'bifrost_dot') {
|
|
72
72
|
handlers.push(new BifrostLiquidStakingPoolHandler(this.state, chain));
|
|
73
|
+
handlers.push(new BifrostMantaLiquidStakingPoolHandler(this.state, chain));
|
|
73
74
|
}
|
|
74
75
|
if (chain === 'acala') {
|
|
75
76
|
handlers.push(new AcalaLiquidStakingPoolHandler(this.state, chain));
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import { _ChainAsset } from '@subwallet/chain-list/types';
|
|
1
|
+
import { _AssetRef, _ChainAsset } from '@subwallet/chain-list/types';
|
|
2
2
|
import { ChainStakingMetadata, CrowdloanItem, MantaPayConfig, NftCollection, NftItem, NominatorMetadata, PriceJson, StakingItem, StakingType, TransactionHistoryItem } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
3
|
import { EventService } from '@subwallet/extension-base/services/event-service';
|
|
4
|
-
import { IBalance, ICampaign, IChain, INft } from '@subwallet/extension-base/services/storage-service/databases';
|
|
4
|
+
import { IAssetRef, IBalance, ICampaign, IChain, INft } from '@subwallet/extension-base/services/storage-service/databases';
|
|
5
5
|
import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MetadataStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
|
|
6
|
+
import AssetRefStore from '@subwallet/extension-base/services/storage-service/db-stores/AssetRef';
|
|
6
7
|
import CampaignStore from '@subwallet/extension-base/services/storage-service/db-stores/Campaign';
|
|
7
8
|
import ChainStakingMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata';
|
|
8
9
|
import MantaPayStore from '@subwallet/extension-base/services/storage-service/db-stores/MantaPay';
|
|
@@ -35,6 +36,7 @@ export default class DatabaseService {
|
|
|
35
36
|
nominatorMetadata: NominatorMetadataStore;
|
|
36
37
|
mantaPay: MantaPayStore;
|
|
37
38
|
campaign: CampaignStore;
|
|
39
|
+
assetRef: AssetRefStore;
|
|
38
40
|
};
|
|
39
41
|
private logger;
|
|
40
42
|
private nftSubscription;
|
|
@@ -112,4 +114,8 @@ export default class DatabaseService {
|
|
|
112
114
|
exportDB(): Promise<string>;
|
|
113
115
|
importDB(data: string): Promise<boolean>;
|
|
114
116
|
getExportJson(): Promise<DexieExportJsonStructure>;
|
|
117
|
+
setAssetRef(assetRef: Record<string, _AssetRef>): Promise<unknown>;
|
|
118
|
+
getAssetRef(slug: string): Promise<IAssetRef | undefined>;
|
|
119
|
+
getAssetRefMap(): Promise<Record<string, _AssetRef>>;
|
|
120
|
+
subscribeAssetRef(): import("dexie").Observable<IAssetRef[]>;
|
|
115
121
|
}
|
|
@@ -4,6 +4,7 @@
|
|
|
4
4
|
import { APIItemState, StakingType } from '@subwallet/extension-base/background/KoniTypes';
|
|
5
5
|
import KoniDatabase from '@subwallet/extension-base/services/storage-service/databases';
|
|
6
6
|
import { AssetStore, BalanceStore, ChainStore, CrowdloanStore, MetadataStore, MigrationStore, NftCollectionStore, NftStore, PriceStore, StakingStore, TransactionStore } from '@subwallet/extension-base/services/storage-service/db-stores';
|
|
7
|
+
import AssetRefStore from '@subwallet/extension-base/services/storage-service/db-stores/AssetRef';
|
|
7
8
|
import CampaignStore from '@subwallet/extension-base/services/storage-service/db-stores/Campaign';
|
|
8
9
|
import ChainStakingMetadataStore from '@subwallet/extension-base/services/storage-service/db-stores/ChainStakingMetadata';
|
|
9
10
|
import MantaPayStore from '@subwallet/extension-base/services/storage-service/db-stores/MantaPay';
|
|
@@ -43,7 +44,8 @@ export default class DatabaseService {
|
|
|
43
44
|
chainStakingMetadata: new ChainStakingMetadataStore(this._db.chainStakingMetadata),
|
|
44
45
|
nominatorMetadata: new NominatorMetadataStore(this._db.nominatorMetadata),
|
|
45
46
|
mantaPay: new MantaPayStore(this._db.mantaPay),
|
|
46
|
-
campaign: new CampaignStore(this._db.campaign)
|
|
47
|
+
campaign: new CampaignStore(this._db.campaign),
|
|
48
|
+
assetRef: new AssetRefStore(this._db.assetRef)
|
|
47
49
|
};
|
|
48
50
|
}
|
|
49
51
|
async updatePriceStore(priceData) {
|
|
@@ -378,4 +380,29 @@ export default class DatabaseService {
|
|
|
378
380
|
async getExportJson() {
|
|
379
381
|
return JSON.parse(await this.exportDB());
|
|
380
382
|
}
|
|
383
|
+
setAssetRef(assetRef) {
|
|
384
|
+
const assetRefList = Object.entries(assetRef).map(([slug, item]) => {
|
|
385
|
+
return {
|
|
386
|
+
slug,
|
|
387
|
+
...item
|
|
388
|
+
};
|
|
389
|
+
});
|
|
390
|
+
return this.stores.assetRef.bulkUpsert(assetRefList);
|
|
391
|
+
}
|
|
392
|
+
getAssetRef(slug) {
|
|
393
|
+
return this.stores.assetRef.getAssetRef(slug);
|
|
394
|
+
}
|
|
395
|
+
async getAssetRefMap() {
|
|
396
|
+
const assetRefList = await this.stores.assetRef.getAll();
|
|
397
|
+
const assetRefObj = {};
|
|
398
|
+
assetRefList.forEach(item => {
|
|
399
|
+
assetRefObj[item.slug] = {
|
|
400
|
+
...item
|
|
401
|
+
};
|
|
402
|
+
});
|
|
403
|
+
return assetRefObj;
|
|
404
|
+
}
|
|
405
|
+
subscribeAssetRef() {
|
|
406
|
+
return this.stores.assetRef.subscribeAssetRef();
|
|
407
|
+
}
|
|
381
408
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
1
|
+
import { _AssetRef, _ChainAsset, _ChainInfo } from '@subwallet/chain-list/types';
|
|
2
2
|
import { CampaignData, ChainStakingMetadata, CrowdloanItem, MetadataItem, NftCollection, NftItem, NominatorMetadata, PriceJson, StakingItem, TransactionHistoryItem } from '@subwallet/extension-base/background/KoniTypes';
|
|
3
3
|
import { BalanceItem, YieldPoolInfo, YieldPositionInfo } from '@subwallet/extension-base/types';
|
|
4
4
|
import Dexie, { Table } from 'dexie';
|
|
@@ -31,6 +31,9 @@ export interface IMetadataItem extends MetadataItem, DefaultChainDoc {
|
|
|
31
31
|
}
|
|
32
32
|
export declare type IMantaPayLedger = any;
|
|
33
33
|
export declare type ICampaign = CampaignData;
|
|
34
|
+
export interface IAssetRef extends _AssetRef {
|
|
35
|
+
slug: string;
|
|
36
|
+
}
|
|
34
37
|
export default class KoniDatabase extends Dexie {
|
|
35
38
|
price: Table<PriceJson, object>;
|
|
36
39
|
balances: Table<IBalance, object>;
|
|
@@ -49,6 +52,7 @@ export default class KoniDatabase extends Dexie {
|
|
|
49
52
|
yieldPosition: Table<YieldPositionInfo, object>;
|
|
50
53
|
mantaPay: Table<IMantaPayLedger, object>;
|
|
51
54
|
campaign: Table<ICampaign, object>;
|
|
55
|
+
assetRef: Table<IAssetRef, object>;
|
|
52
56
|
private schemaVersion;
|
|
53
57
|
constructor(name?: string, schemaVersion?: number);
|
|
54
58
|
private conditionalVersion;
|
|
@@ -37,6 +37,9 @@ export default class KoniDatabase extends Dexie {
|
|
|
37
37
|
this.conditionalVersion(5, {
|
|
38
38
|
campaign: 'slug'
|
|
39
39
|
});
|
|
40
|
+
this.conditionalVersion(5, {
|
|
41
|
+
assetRef: 'slug'
|
|
42
|
+
});
|
|
40
43
|
}
|
|
41
44
|
conditionalVersion(version, schema, upgrade) {
|
|
42
45
|
if (this.schemaVersion != null && this.schemaVersion < version) {
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IAssetRef } from '@subwallet/extension-base/services/storage-service/databases';
|
|
2
|
+
import BaseStore from '@subwallet/extension-base/services/storage-service/db-stores/BaseStore';
|
|
3
|
+
export default class AssetRefStore extends BaseStore<IAssetRef> {
|
|
4
|
+
getAll(): Promise<IAssetRef[]>;
|
|
5
|
+
getAssetRef(slug: string): Promise<IAssetRef | undefined>;
|
|
6
|
+
subscribeAssetRef(): import("dexie").Observable<IAssetRef[]>;
|
|
7
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
// Copyright 2019-2022 @subwallet/extension-base authors & contributors
|
|
2
|
+
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
+
|
|
4
|
+
import BaseStore from '@subwallet/extension-base/services/storage-service/db-stores/BaseStore';
|
|
5
|
+
import { liveQuery } from 'dexie';
|
|
6
|
+
export default class AssetRefStore extends BaseStore {
|
|
7
|
+
async getAll() {
|
|
8
|
+
return this.table.toArray();
|
|
9
|
+
}
|
|
10
|
+
async getAssetRef(slug) {
|
|
11
|
+
return this.table.get(slug);
|
|
12
|
+
}
|
|
13
|
+
subscribeAssetRef() {
|
|
14
|
+
return liveQuery(async () => await this.table.toArray());
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -522,6 +522,7 @@ export default class TransactionService {
|
|
|
522
522
|
case ExtrinsicType.MINT_QDOT:
|
|
523
523
|
case ExtrinsicType.MINT_LDOT:
|
|
524
524
|
case ExtrinsicType.MINT_SDOT:
|
|
525
|
+
case ExtrinsicType.MINT_VMANTA:
|
|
525
526
|
|
|
526
527
|
// eslint-disable-next-line no-fallthrough
|
|
527
528
|
case ExtrinsicType.MINT_VDOT:
|
|
@@ -575,12 +576,14 @@ export default class TransactionService {
|
|
|
575
576
|
break;
|
|
576
577
|
}
|
|
577
578
|
case ExtrinsicType.UNSTAKE_VDOT:
|
|
579
|
+
case ExtrinsicType.UNSTAKE_VMANTA:
|
|
578
580
|
case ExtrinsicType.UNSTAKE_LDOT:
|
|
579
581
|
case ExtrinsicType.UNSTAKE_SDOT:
|
|
580
582
|
case ExtrinsicType.UNSTAKE_STDOT:
|
|
581
583
|
case ExtrinsicType.REDEEM_STDOT:
|
|
582
584
|
case ExtrinsicType.REDEEM_LDOT:
|
|
583
585
|
case ExtrinsicType.REDEEM_SDOT:
|
|
586
|
+
case ExtrinsicType.REDEEM_VMANTA:
|
|
584
587
|
|
|
585
588
|
// eslint-disable-next-line no-fallthrough
|
|
586
589
|
case ExtrinsicType.REDEEM_VDOT:
|
|
@@ -38,6 +38,7 @@ export let YieldStepType;
|
|
|
38
38
|
YieldStepType["NOMINATE"] = "NOMINATE";
|
|
39
39
|
YieldStepType["JOIN_NOMINATION_POOL"] = "JOIN_NOMINATION_POOL";
|
|
40
40
|
YieldStepType["MINT_VDOT"] = "MINT_VDOT";
|
|
41
|
+
YieldStepType["MINT_VMANTA"] = "MINT_VMANTA";
|
|
41
42
|
YieldStepType["MINT_LDOT"] = "MINT_LDOT";
|
|
42
43
|
YieldStepType["MINT_QDOT"] = "MINT_QDOT";
|
|
43
44
|
YieldStepType["MINT_SDOT"] = "MINT_SDOT";
|