@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.
Files changed (48) hide show
  1. package/background/KoniTypes.d.ts +9 -0
  2. package/background/KoniTypes.js +3 -0
  3. package/cjs/background/KoniTypes.js +3 -0
  4. package/cjs/koni/api/yield/helper/utils.js +6 -3
  5. package/cjs/services/chain-service/constants.js +4 -2
  6. package/cjs/services/chain-service/handler/SubstrateApi.js +10 -5
  7. package/cjs/services/chain-service/index.js +120 -37
  8. package/cjs/services/chain-service/utils.js +68 -0
  9. package/cjs/services/earning-service/handlers/liquid-staking/base.js +2 -1
  10. package/cjs/services/earning-service/handlers/liquid-staking/bifrost-manta.js +140 -0
  11. package/cjs/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  12. package/cjs/services/earning-service/handlers/liquid-staking/index.js +7 -0
  13. package/cjs/services/earning-service/handlers/special.js +7 -3
  14. package/cjs/services/earning-service/service.js +1 -0
  15. package/cjs/services/storage-service/DatabaseService.js +29 -1
  16. package/cjs/services/storage-service/databases/index.js +3 -0
  17. package/cjs/services/storage-service/db-stores/AssetRef.js +24 -0
  18. package/cjs/services/transaction-service/index.js +3 -0
  19. package/cjs/types/yield/actions/join/step.js +1 -0
  20. package/koni/api/yield/helper/utils.d.ts +1 -1
  21. package/koni/api/yield/helper/utils.js +5 -3
  22. package/package.json +12 -2
  23. package/services/chain-service/constants.d.ts +1 -0
  24. package/services/chain-service/constants.js +1 -0
  25. package/services/chain-service/handler/SubstrateApi.js +10 -5
  26. package/services/chain-service/index.d.ts +11 -1
  27. package/services/chain-service/index.js +116 -34
  28. package/services/chain-service/utils.d.ts +10 -1
  29. package/services/chain-service/utils.js +66 -1
  30. package/services/earning-service/handlers/liquid-staking/base.d.ts +1 -1
  31. package/services/earning-service/handlers/liquid-staking/base.js +2 -1
  32. package/services/earning-service/handlers/liquid-staking/bifrost-manta.d.ts +37 -0
  33. package/services/earning-service/handlers/liquid-staking/bifrost-manta.js +132 -0
  34. package/services/earning-service/handlers/liquid-staking/bifrost.d.ts +3 -3
  35. package/services/earning-service/handlers/liquid-staking/bifrost.js +2 -1
  36. package/services/earning-service/handlers/liquid-staking/index.d.ts +1 -0
  37. package/services/earning-service/handlers/liquid-staking/index.js +1 -0
  38. package/services/earning-service/handlers/special.js +7 -3
  39. package/services/earning-service/service.js +2 -1
  40. package/services/storage-service/DatabaseService.d.ts +8 -2
  41. package/services/storage-service/DatabaseService.js +28 -1
  42. package/services/storage-service/databases/index.d.ts +5 -1
  43. package/services/storage-service/databases/index.js +3 -0
  44. package/services/storage-service/db-stores/AssetRef.d.ts +7 -0
  45. package/services/storage-service/db-stores/AssetRef.js +16 -0
  46. package/services/transaction-service/index.js +3 -0
  47. package/types/yield/actions/join/step.d.ts +1 -0
  48. 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: 'Transfer DOT from Polkadot',
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 originChainInfo = this.state.getChainInfo(COMMON_CHAIN_SLUGS.POLKADOT);
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:
@@ -39,6 +39,7 @@ export declare enum YieldStepType {
39
39
  NOMINATE = "NOMINATE",
40
40
  JOIN_NOMINATION_POOL = "JOIN_NOMINATION_POOL",
41
41
  MINT_VDOT = "MINT_VDOT",
42
+ MINT_VMANTA = "MINT_VMANTA",
42
43
  MINT_LDOT = "MINT_LDOT",
43
44
  MINT_QDOT = "MINT_QDOT",
44
45
  MINT_SDOT = "MINT_SDOT",
@@ -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";