@talismn/balances 0.0.0-pr2020-20250605072904 → 0.0.0-pr2023-20250606134638

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.
@@ -2,6 +2,6 @@ import { NewBalanceModule } from "../../BalanceModule";
2
2
  import { CustomSubNativeToken, ModuleType, SubNativeChainMeta, SubNativeModuleConfig, SubNativeToken, SubNativeTransferParams } from "./types";
3
3
  export { filterBaseLocks, getLockTitle } from "./util/balanceLockTypes";
4
4
  export type { BalanceLockType } from "./util/balanceLockTypes";
5
- export type { CustomSubNativeToken, ModuleType, SubNativeBalance, SubNativeChainMeta, SubNativeModuleConfig, SubNativeToken, SubNativeTransferParams, } from "./types";
6
5
  export { subNativeTokenId } from "./types";
6
+ export type { CustomSubNativeToken, ModuleType, SubNativeBalance, SubNativeChainMeta, SubNativeModuleConfig, SubNativeToken, SubNativeTransferParams, } from "./types";
7
7
  export declare const SubNativeModule: NewBalanceModule<ModuleType, SubNativeToken | CustomSubNativeToken, SubNativeChainMeta, SubNativeModuleConfig, SubNativeTransferParams>;
@@ -18,6 +18,12 @@ export declare const buildStorageCoders: <TBalanceModule extends AnyNewBalanceMo
18
18
  moduleType: InferModuleType<TBalanceModule>;
19
19
  coders: TCoders;
20
20
  }) => Map<string, { [Property in keyof TCoders]: {
21
+ args: [import("scale-ts").Encoder<any[]>, import("scale-ts").Decoder<any[]>] & {
22
+ enc: import("scale-ts").Encoder<any[]>;
23
+ dec: import("scale-ts").Decoder<any[]>;
24
+ } & {
25
+ inner: import("@talismn/scale").Codec<any>[];
26
+ };
21
27
  keys: {
22
28
  enc: (...args: any[]) => string;
23
29
  dec: (value: string) => any[];
@@ -2948,11 +2948,7 @@ const buildStorageCoders = ({
2948
2948
  const [, miniMetadata] = findChainMeta(miniMetadatas, moduleType, chain);
2949
2949
  if (!miniMetadata) return [];
2950
2950
  if (!miniMetadata.data) return [];
2951
- const {
2952
- metadata,
2953
- tag
2954
- } = scale.decodeMetadata(miniMetadata.data);
2955
- if (!metadata || !tag) return [];
2951
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata.data));
2956
2952
  try {
2957
2953
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
2958
2954
  const builtCoders = Object.fromEntries(Object.entries(coders).flatMap(([key, moduleMethodOrFn]) => {
@@ -3181,25 +3177,13 @@ const SubAssetsModule = hydrate => {
3181
3177
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3182
3178
  isTestnet
3183
3179
  };
3184
- const {
3185
- metadataVersion,
3186
- metadata,
3187
- tag
3188
- } = scale.decodeMetadata(metadataRpc);
3189
- if (!metadata) return {
3190
- isTestnet
3191
- };
3180
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3181
+ const metadata = scale.decAnyMetadata(metadataRpc);
3192
3182
  scale.compactMetadata(metadata, [{
3193
3183
  pallet: "Assets",
3194
3184
  items: ["Account", "Asset", "Metadata"]
3195
3185
  }]);
3196
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3197
- tag,
3198
- metadata
3199
- } : {
3200
- tag,
3201
- metadata
3202
- });
3186
+ const miniMetadata = scale.encodeMetadata(metadata);
3203
3187
  return {
3204
3188
  isTestnet,
3205
3189
  miniMetadata,
@@ -3219,7 +3203,7 @@ const SubAssetsModule = hydrate => {
3219
3203
  metadata
3220
3204
  } = scale.decodeMetadata(miniMetadata);
3221
3205
  if (metadata === undefined) return {};
3222
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3206
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3223
3207
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3224
3208
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
3225
3209
  const tokens = {};
@@ -3476,14 +3460,8 @@ const SubEquilibriumModule = hydrate => {
3476
3460
  isTestnet
3477
3461
  }; // default to disabled
3478
3462
 
3479
- const {
3480
- metadataVersion,
3481
- metadata,
3482
- tag
3483
- } = scale.decodeMetadata(metadataRpc);
3484
- if (!metadata) return {
3485
- isTestnet
3486
- };
3463
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3464
+ const metadata = scale.decAnyMetadata(metadataRpc);
3487
3465
  scale.compactMetadata(metadata, [{
3488
3466
  pallet: "EqAssets",
3489
3467
  items: ["Assets"]
@@ -3491,13 +3469,7 @@ const SubEquilibriumModule = hydrate => {
3491
3469
  pallet: "System",
3492
3470
  items: ["Account"]
3493
3471
  }]);
3494
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3495
- tag,
3496
- metadata
3497
- } : {
3498
- tag,
3499
- metadata
3500
- });
3472
+ const miniMetadata = scale.encodeMetadata(metadata);
3501
3473
  return {
3502
3474
  isTestnet,
3503
3475
  miniMetadata,
@@ -3519,7 +3491,7 @@ const SubEquilibriumModule = hydrate => {
3519
3491
  } = scale.decodeMetadata(miniMetadata);
3520
3492
  if (metadata === undefined) return {};
3521
3493
  try {
3522
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3494
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3523
3495
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3524
3496
  const stateKey = assetsCoder.keys.enc();
3525
3497
 
@@ -3758,25 +3730,13 @@ const SubForeignAssetsModule = hydrate => {
3758
3730
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3759
3731
  isTestnet
3760
3732
  };
3761
- const {
3762
- metadataVersion,
3763
- metadata,
3764
- tag
3765
- } = scale.decodeMetadata(metadataRpc);
3766
- if (!metadata) return {
3767
- isTestnet
3768
- };
3733
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3734
+ const metadata = scale.decAnyMetadata(metadataRpc);
3769
3735
  scale.compactMetadata(metadata, [{
3770
3736
  pallet: "ForeignAssets",
3771
3737
  items: ["Account", "Asset", "Metadata"]
3772
3738
  }]);
3773
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3774
- tag,
3775
- metadata
3776
- } : {
3777
- tag,
3778
- metadata
3779
- });
3739
+ const miniMetadata = scale.encodeMetadata(metadata);
3780
3740
  return {
3781
3741
  isTestnet,
3782
3742
  miniMetadata,
@@ -3792,11 +3752,9 @@ const SubForeignAssetsModule = hydrate => {
3792
3752
  } = chainMeta;
3793
3753
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3794
3754
  if (metadataVersion < 14) return {};
3795
- const {
3796
- metadata
3797
- } = scale.decodeMetadata(miniMetadata);
3798
- if (metadata === undefined) return {};
3799
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3755
+ const metadata = scale.decAnyMetadata(miniMetadata);
3756
+ const unifiedMetadata = scale.unifyMetadata(metadata);
3757
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
3800
3758
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3801
3759
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3802
3760
  const tokens = {};
@@ -3902,7 +3860,7 @@ const SubForeignAssetsModule = hydrate => {
3902
3860
  metadata
3903
3861
  } = scale.decodeMetadata(metadataRpc);
3904
3862
  if (metadata === undefined) throw new Error("Unable to decode metadata");
3905
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3863
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3906
3864
  try {
3907
3865
  const {
3908
3866
  location,
@@ -5474,25 +5432,17 @@ const SubNativeModule = hydrate => {
5474
5432
  //
5475
5433
  // process metadata into SCALE encoders/decoders
5476
5434
  //
5477
-
5478
- const {
5479
- metadataVersion,
5480
- metadata,
5481
- tag
5482
- } = scale.decodeMetadata(metadataRpc);
5483
- if (!metadata) return {
5484
- isTestnet,
5485
- symbol,
5486
- decimals
5487
- };
5435
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
5436
+ const metadata = scale.decAnyMetadata(metadataRpc);
5437
+ const unifiedMetadata = scale.unifyMetadata(metadata);
5488
5438
 
5489
5439
  //
5490
5440
  // get runtime constants
5491
5441
  //
5492
5442
 
5493
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
5443
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
5494
5444
  const getConstantValue = (palletName, constantName) => {
5495
- const encodedValue = metadata.pallets.find(({
5445
+ const encodedValue = unifiedMetadata.pallets.find(({
5496
5446
  name
5497
5447
  }) => name === palletName)?.constants.find(({
5498
5448
  name
@@ -5541,14 +5491,8 @@ const SubNativeModule = hydrate => {
5541
5491
  runtimeApi: "SubnetInfoRuntimeApi",
5542
5492
  methods: ["get_dynamic_info"]
5543
5493
  }]);
5544
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
5545
- tag,
5546
- metadata
5547
- } : {
5548
- tag,
5549
- metadata
5550
- });
5551
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5494
+ const miniMetadata = scale.encodeMetadata(metadata);
5495
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5552
5496
  name
5553
5497
  }) => name === "Balances")?.storage?.items.find(({
5554
5498
  name
@@ -7257,26 +7201,16 @@ const SubTokensModule = hydrate => {
7257
7201
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7258
7202
  isTestnet
7259
7203
  };
7260
- const {
7261
- metadataVersion,
7262
- metadata,
7263
- tag
7264
- } = scale.decodeMetadata(metadataRpc);
7265
- if (!metadata) return {
7266
- isTestnet
7267
- };
7204
+
7205
+ // TODO understand why this is needed
7206
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
7207
+ const metadata = scale.decAnyMetadata(metadataRpc);
7268
7208
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7269
7209
  scale.compactMetadata(metadata, [{
7270
7210
  pallet: palletId,
7271
7211
  items: ["Accounts"]
7272
7212
  }]);
7273
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
7274
- tag,
7275
- metadata
7276
- } : {
7277
- tag,
7278
- metadata
7279
- });
7213
+ const miniMetadata = scale.encodeMetadata(metadata);
7280
7214
  return palletId === defaultPalletId ? {
7281
7215
  isTestnet,
7282
7216
  miniMetadata,
@@ -7372,10 +7306,7 @@ const SubTokensModule = hydrate => {
7372
7306
  return token.onChainId;
7373
7307
  }
7374
7308
  })();
7375
- const {
7376
- metadata
7377
- } = scale.decodeMetadata(metadataRpc);
7378
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7309
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
7379
7310
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
7380
7311
  const tryBuildCallData = (pallet, method, args) => {
7381
7312
  try {
@@ -2948,11 +2948,7 @@ const buildStorageCoders = ({
2948
2948
  const [, miniMetadata] = findChainMeta(miniMetadatas, moduleType, chain);
2949
2949
  if (!miniMetadata) return [];
2950
2950
  if (!miniMetadata.data) return [];
2951
- const {
2952
- metadata,
2953
- tag
2954
- } = scale.decodeMetadata(miniMetadata.data);
2955
- if (!metadata || !tag) return [];
2951
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata.data));
2956
2952
  try {
2957
2953
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
2958
2954
  const builtCoders = Object.fromEntries(Object.entries(coders).flatMap(([key, moduleMethodOrFn]) => {
@@ -3181,25 +3177,13 @@ const SubAssetsModule = hydrate => {
3181
3177
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3182
3178
  isTestnet
3183
3179
  };
3184
- const {
3185
- metadataVersion,
3186
- metadata,
3187
- tag
3188
- } = scale.decodeMetadata(metadataRpc);
3189
- if (!metadata) return {
3190
- isTestnet
3191
- };
3180
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3181
+ const metadata = scale.decAnyMetadata(metadataRpc);
3192
3182
  scale.compactMetadata(metadata, [{
3193
3183
  pallet: "Assets",
3194
3184
  items: ["Account", "Asset", "Metadata"]
3195
3185
  }]);
3196
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3197
- tag,
3198
- metadata
3199
- } : {
3200
- tag,
3201
- metadata
3202
- });
3186
+ const miniMetadata = scale.encodeMetadata(metadata);
3203
3187
  return {
3204
3188
  isTestnet,
3205
3189
  miniMetadata,
@@ -3219,7 +3203,7 @@ const SubAssetsModule = hydrate => {
3219
3203
  metadata
3220
3204
  } = scale.decodeMetadata(miniMetadata);
3221
3205
  if (metadata === undefined) return {};
3222
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3206
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3223
3207
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3224
3208
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
3225
3209
  const tokens = {};
@@ -3476,14 +3460,8 @@ const SubEquilibriumModule = hydrate => {
3476
3460
  isTestnet
3477
3461
  }; // default to disabled
3478
3462
 
3479
- const {
3480
- metadataVersion,
3481
- metadata,
3482
- tag
3483
- } = scale.decodeMetadata(metadataRpc);
3484
- if (!metadata) return {
3485
- isTestnet
3486
- };
3463
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3464
+ const metadata = scale.decAnyMetadata(metadataRpc);
3487
3465
  scale.compactMetadata(metadata, [{
3488
3466
  pallet: "EqAssets",
3489
3467
  items: ["Assets"]
@@ -3491,13 +3469,7 @@ const SubEquilibriumModule = hydrate => {
3491
3469
  pallet: "System",
3492
3470
  items: ["Account"]
3493
3471
  }]);
3494
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3495
- tag,
3496
- metadata
3497
- } : {
3498
- tag,
3499
- metadata
3500
- });
3472
+ const miniMetadata = scale.encodeMetadata(metadata);
3501
3473
  return {
3502
3474
  isTestnet,
3503
3475
  miniMetadata,
@@ -3519,7 +3491,7 @@ const SubEquilibriumModule = hydrate => {
3519
3491
  } = scale.decodeMetadata(miniMetadata);
3520
3492
  if (metadata === undefined) return {};
3521
3493
  try {
3522
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3494
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3523
3495
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3524
3496
  const stateKey = assetsCoder.keys.enc();
3525
3497
 
@@ -3758,25 +3730,13 @@ const SubForeignAssetsModule = hydrate => {
3758
3730
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3759
3731
  isTestnet
3760
3732
  };
3761
- const {
3762
- metadataVersion,
3763
- metadata,
3764
- tag
3765
- } = scale.decodeMetadata(metadataRpc);
3766
- if (!metadata) return {
3767
- isTestnet
3768
- };
3733
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3734
+ const metadata = scale.decAnyMetadata(metadataRpc);
3769
3735
  scale.compactMetadata(metadata, [{
3770
3736
  pallet: "ForeignAssets",
3771
3737
  items: ["Account", "Asset", "Metadata"]
3772
3738
  }]);
3773
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3774
- tag,
3775
- metadata
3776
- } : {
3777
- tag,
3778
- metadata
3779
- });
3739
+ const miniMetadata = scale.encodeMetadata(metadata);
3780
3740
  return {
3781
3741
  isTestnet,
3782
3742
  miniMetadata,
@@ -3792,11 +3752,9 @@ const SubForeignAssetsModule = hydrate => {
3792
3752
  } = chainMeta;
3793
3753
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3794
3754
  if (metadataVersion < 14) return {};
3795
- const {
3796
- metadata
3797
- } = scale.decodeMetadata(miniMetadata);
3798
- if (metadata === undefined) return {};
3799
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3755
+ const metadata = scale.decAnyMetadata(miniMetadata);
3756
+ const unifiedMetadata = scale.unifyMetadata(metadata);
3757
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
3800
3758
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3801
3759
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3802
3760
  const tokens = {};
@@ -3902,7 +3860,7 @@ const SubForeignAssetsModule = hydrate => {
3902
3860
  metadata
3903
3861
  } = scale.decodeMetadata(metadataRpc);
3904
3862
  if (metadata === undefined) throw new Error("Unable to decode metadata");
3905
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3863
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(scale.unifyMetadata(metadata)));
3906
3864
  try {
3907
3865
  const {
3908
3866
  location,
@@ -5474,25 +5432,17 @@ const SubNativeModule = hydrate => {
5474
5432
  //
5475
5433
  // process metadata into SCALE encoders/decoders
5476
5434
  //
5477
-
5478
- const {
5479
- metadataVersion,
5480
- metadata,
5481
- tag
5482
- } = scale.decodeMetadata(metadataRpc);
5483
- if (!metadata) return {
5484
- isTestnet,
5485
- symbol,
5486
- decimals
5487
- };
5435
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
5436
+ const metadata = scale.decAnyMetadata(metadataRpc);
5437
+ const unifiedMetadata = scale.unifyMetadata(metadata);
5488
5438
 
5489
5439
  //
5490
5440
  // get runtime constants
5491
5441
  //
5492
5442
 
5493
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
5443
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
5494
5444
  const getConstantValue = (palletName, constantName) => {
5495
- const encodedValue = metadata.pallets.find(({
5445
+ const encodedValue = unifiedMetadata.pallets.find(({
5496
5446
  name
5497
5447
  }) => name === palletName)?.constants.find(({
5498
5448
  name
@@ -5541,14 +5491,8 @@ const SubNativeModule = hydrate => {
5541
5491
  runtimeApi: "SubnetInfoRuntimeApi",
5542
5492
  methods: ["get_dynamic_info"]
5543
5493
  }]);
5544
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
5545
- tag,
5546
- metadata
5547
- } : {
5548
- tag,
5549
- metadata
5550
- });
5551
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5494
+ const miniMetadata = scale.encodeMetadata(metadata);
5495
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5552
5496
  name
5553
5497
  }) => name === "Balances")?.storage?.items.find(({
5554
5498
  name
@@ -7257,26 +7201,16 @@ const SubTokensModule = hydrate => {
7257
7201
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7258
7202
  isTestnet
7259
7203
  };
7260
- const {
7261
- metadataVersion,
7262
- metadata,
7263
- tag
7264
- } = scale.decodeMetadata(metadataRpc);
7265
- if (!metadata) return {
7266
- isTestnet
7267
- };
7204
+
7205
+ // TODO understand why this is needed
7206
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
7207
+ const metadata = scale.decAnyMetadata(metadataRpc);
7268
7208
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7269
7209
  scale.compactMetadata(metadata, [{
7270
7210
  pallet: palletId,
7271
7211
  items: ["Accounts"]
7272
7212
  }]);
7273
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
7274
- tag,
7275
- metadata
7276
- } : {
7277
- tag,
7278
- metadata
7279
- });
7213
+ const miniMetadata = scale.encodeMetadata(metadata);
7280
7214
  return palletId === defaultPalletId ? {
7281
7215
  isTestnet,
7282
7216
  miniMetadata,
@@ -7372,10 +7306,7 @@ const SubTokensModule = hydrate => {
7372
7306
  return token.onChainId;
7373
7307
  }
7374
7308
  })();
7375
- const {
7376
- metadata
7377
- } = scale.decodeMetadata(metadataRpc);
7378
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7309
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
7379
7310
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
7380
7311
  const tryBuildCallData = (pallet, method, args) => {
7381
7312
  try {
@@ -1,6 +1,6 @@
1
1
  import PromisePool$1, { PromisePool } from '@supercharge/promise-pool';
2
2
  import { fetchMiniMetadatas, fetchInitMiniMetadatas, availableTokenLogoFilenames, githubTokenLogoUrl } from '@talismn/chaindata-provider';
3
- import { toHex, decodeMetadata, getDynamicBuilder, getLookupFn, compactMetadata, encodeMetadata, decodeScale, encodeStateKey, papiParse } from '@talismn/scale';
3
+ import { toHex, unifyMetadata, decAnyMetadata, getDynamicBuilder, getLookupFn, decodeMetadata, getMetadataVersion, compactMetadata, encodeMetadata, decodeScale, encodeStateKey, papiParse } from '@talismn/scale';
4
4
  import { Dexie, liveQuery } from 'dexie';
5
5
  import isEqual from 'lodash/isEqual';
6
6
  import { from, Observable, scan, share, map, switchAll, combineLatest, mergeMap, toArray, interval, startWith, exhaustMap, pipe, filter, shareReplay, combineLatestWith, distinctUntilChanged, firstValueFrom, BehaviorSubject, debounceTime, takeUntil, switchMap, withLatestFrom, concatMap } from 'rxjs';
@@ -2935,11 +2935,7 @@ const buildStorageCoders = ({
2935
2935
  const [, miniMetadata] = findChainMeta(miniMetadatas, moduleType, chain);
2936
2936
  if (!miniMetadata) return [];
2937
2937
  if (!miniMetadata.data) return [];
2938
- const {
2939
- metadata,
2940
- tag
2941
- } = decodeMetadata(miniMetadata.data);
2942
- if (!metadata || !tag) return [];
2938
+ const metadata = unifyMetadata(decAnyMetadata(miniMetadata.data));
2943
2939
  try {
2944
2940
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
2945
2941
  const builtCoders = Object.fromEntries(Object.entries(coders).flatMap(([key, moduleMethodOrFn]) => {
@@ -3168,25 +3164,13 @@ const SubAssetsModule = hydrate => {
3168
3164
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3169
3165
  isTestnet
3170
3166
  };
3171
- const {
3172
- metadataVersion,
3173
- metadata,
3174
- tag
3175
- } = decodeMetadata(metadataRpc);
3176
- if (!metadata) return {
3177
- isTestnet
3178
- };
3167
+ const metadataVersion = getMetadataVersion(metadataRpc);
3168
+ const metadata = decAnyMetadata(metadataRpc);
3179
3169
  compactMetadata(metadata, [{
3180
3170
  pallet: "Assets",
3181
3171
  items: ["Account", "Asset", "Metadata"]
3182
3172
  }]);
3183
- const miniMetadata = encodeMetadata(tag === "v15" ? {
3184
- tag,
3185
- metadata
3186
- } : {
3187
- tag,
3188
- metadata
3189
- });
3173
+ const miniMetadata = encodeMetadata(metadata);
3190
3174
  return {
3191
3175
  isTestnet,
3192
3176
  miniMetadata,
@@ -3206,7 +3190,7 @@ const SubAssetsModule = hydrate => {
3206
3190
  metadata
3207
3191
  } = decodeMetadata(miniMetadata);
3208
3192
  if (metadata === undefined) return {};
3209
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3193
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifyMetadata(metadata)));
3210
3194
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3211
3195
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
3212
3196
  const tokens = {};
@@ -3463,14 +3447,8 @@ const SubEquilibriumModule = hydrate => {
3463
3447
  isTestnet
3464
3448
  }; // default to disabled
3465
3449
 
3466
- const {
3467
- metadataVersion,
3468
- metadata,
3469
- tag
3470
- } = decodeMetadata(metadataRpc);
3471
- if (!metadata) return {
3472
- isTestnet
3473
- };
3450
+ const metadataVersion = getMetadataVersion(metadataRpc);
3451
+ const metadata = decAnyMetadata(metadataRpc);
3474
3452
  compactMetadata(metadata, [{
3475
3453
  pallet: "EqAssets",
3476
3454
  items: ["Assets"]
@@ -3478,13 +3456,7 @@ const SubEquilibriumModule = hydrate => {
3478
3456
  pallet: "System",
3479
3457
  items: ["Account"]
3480
3458
  }]);
3481
- const miniMetadata = encodeMetadata(tag === "v15" ? {
3482
- tag,
3483
- metadata
3484
- } : {
3485
- tag,
3486
- metadata
3487
- });
3459
+ const miniMetadata = encodeMetadata(metadata);
3488
3460
  return {
3489
3461
  isTestnet,
3490
3462
  miniMetadata,
@@ -3506,7 +3478,7 @@ const SubEquilibriumModule = hydrate => {
3506
3478
  } = decodeMetadata(miniMetadata);
3507
3479
  if (metadata === undefined) return {};
3508
3480
  try {
3509
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3481
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifyMetadata(metadata)));
3510
3482
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3511
3483
  const stateKey = assetsCoder.keys.enc();
3512
3484
 
@@ -3745,25 +3717,13 @@ const SubForeignAssetsModule = hydrate => {
3745
3717
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3746
3718
  isTestnet
3747
3719
  };
3748
- const {
3749
- metadataVersion,
3750
- metadata,
3751
- tag
3752
- } = decodeMetadata(metadataRpc);
3753
- if (!metadata) return {
3754
- isTestnet
3755
- };
3720
+ const metadataVersion = getMetadataVersion(metadataRpc);
3721
+ const metadata = decAnyMetadata(metadataRpc);
3756
3722
  compactMetadata(metadata, [{
3757
3723
  pallet: "ForeignAssets",
3758
3724
  items: ["Account", "Asset", "Metadata"]
3759
3725
  }]);
3760
- const miniMetadata = encodeMetadata(tag === "v15" ? {
3761
- tag,
3762
- metadata
3763
- } : {
3764
- tag,
3765
- metadata
3766
- });
3726
+ const miniMetadata = encodeMetadata(metadata);
3767
3727
  return {
3768
3728
  isTestnet,
3769
3729
  miniMetadata,
@@ -3779,11 +3739,9 @@ const SubForeignAssetsModule = hydrate => {
3779
3739
  } = chainMeta;
3780
3740
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3781
3741
  if (metadataVersion < 14) return {};
3782
- const {
3783
- metadata
3784
- } = decodeMetadata(miniMetadata);
3785
- if (metadata === undefined) return {};
3786
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3742
+ const metadata = decAnyMetadata(miniMetadata);
3743
+ const unifiedMetadata = unifyMetadata(metadata);
3744
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifiedMetadata));
3787
3745
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3788
3746
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3789
3747
  const tokens = {};
@@ -3889,7 +3847,7 @@ const SubForeignAssetsModule = hydrate => {
3889
3847
  metadata
3890
3848
  } = decodeMetadata(metadataRpc);
3891
3849
  if (metadata === undefined) throw new Error("Unable to decode metadata");
3892
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3850
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifyMetadata(metadata)));
3893
3851
  try {
3894
3852
  const {
3895
3853
  location,
@@ -5461,25 +5419,17 @@ const SubNativeModule = hydrate => {
5461
5419
  //
5462
5420
  // process metadata into SCALE encoders/decoders
5463
5421
  //
5464
-
5465
- const {
5466
- metadataVersion,
5467
- metadata,
5468
- tag
5469
- } = decodeMetadata(metadataRpc);
5470
- if (!metadata) return {
5471
- isTestnet,
5472
- symbol,
5473
- decimals
5474
- };
5422
+ const metadataVersion = getMetadataVersion(metadataRpc);
5423
+ const metadata = decAnyMetadata(metadataRpc);
5424
+ const unifiedMetadata = unifyMetadata(metadata);
5475
5425
 
5476
5426
  //
5477
5427
  // get runtime constants
5478
5428
  //
5479
5429
 
5480
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
5430
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifiedMetadata));
5481
5431
  const getConstantValue = (palletName, constantName) => {
5482
- const encodedValue = metadata.pallets.find(({
5432
+ const encodedValue = unifiedMetadata.pallets.find(({
5483
5433
  name
5484
5434
  }) => name === palletName)?.constants.find(({
5485
5435
  name
@@ -5528,14 +5478,8 @@ const SubNativeModule = hydrate => {
5528
5478
  runtimeApi: "SubnetInfoRuntimeApi",
5529
5479
  methods: ["get_dynamic_info"]
5530
5480
  }]);
5531
- const miniMetadata = encodeMetadata(tag === "v15" ? {
5532
- tag,
5533
- metadata
5534
- } : {
5535
- tag,
5536
- metadata
5537
- });
5538
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5481
+ const miniMetadata = encodeMetadata(metadata);
5482
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5539
5483
  name
5540
5484
  }) => name === "Balances")?.storage?.items.find(({
5541
5485
  name
@@ -7244,26 +7188,16 @@ const SubTokensModule = hydrate => {
7244
7188
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7245
7189
  isTestnet
7246
7190
  };
7247
- const {
7248
- metadataVersion,
7249
- metadata,
7250
- tag
7251
- } = decodeMetadata(metadataRpc);
7252
- if (!metadata) return {
7253
- isTestnet
7254
- };
7191
+
7192
+ // TODO understand why this is needed
7193
+ const metadataVersion = getMetadataVersion(metadataRpc);
7194
+ const metadata = decAnyMetadata(metadataRpc);
7255
7195
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7256
7196
  compactMetadata(metadata, [{
7257
7197
  pallet: palletId,
7258
7198
  items: ["Accounts"]
7259
7199
  }]);
7260
- const miniMetadata = encodeMetadata(tag === "v15" ? {
7261
- tag,
7262
- metadata
7263
- } : {
7264
- tag,
7265
- metadata
7266
- });
7200
+ const miniMetadata = encodeMetadata(metadata);
7267
7201
  return palletId === defaultPalletId ? {
7268
7202
  isTestnet,
7269
7203
  miniMetadata,
@@ -7359,10 +7293,7 @@ const SubTokensModule = hydrate => {
7359
7293
  return token.onChainId;
7360
7294
  }
7361
7295
  })();
7362
- const {
7363
- metadata
7364
- } = decodeMetadata(metadataRpc);
7365
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7296
+ const metadata = unifyMetadata(decAnyMetadata(metadataRpc));
7366
7297
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
7367
7298
  const tryBuildCallData = (pallet, method, args) => {
7368
7299
  try {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.0.0-pr2020-20250605072904",
3
+ "version": "0.0.0-pr2023-20250606134638",
4
4
  "author": "Talisman",
5
5
  "homepage": "https://talisman.xyz",
6
6
  "license": "GPL-3.0-or-later",
@@ -22,7 +22,7 @@
22
22
  "node": ">=18"
23
23
  },
24
24
  "dependencies": {
25
- "@polkadot-api/utils": "0.1.2",
25
+ "@polkadot-api/utils": "0.2.0",
26
26
  "@supercharge/promise-pool": "^3.2.0",
27
27
  "anylogger": "^1.0.11",
28
28
  "bignumber.js": "^9.1.2",
@@ -30,23 +30,23 @@
30
30
  "lodash": "4.17.21",
31
31
  "lz-string": "1.5.0",
32
32
  "pako": "^2.1.0",
33
- "polkadot-api": "1.7.6",
33
+ "polkadot-api": "1.13.1",
34
34
  "rxjs": "^7.8.1",
35
35
  "scale-ts": "^1.6.1",
36
36
  "viem": "^2.27.3",
37
- "@talismn/chain-connector": "0.0.0-pr2020-20250605072904",
38
- "@talismn/chain-connector-evm": "0.0.0-pr2020-20250605072904",
39
- "@talismn/sapi": "0.0.3",
40
- "@talismn/chaindata-provider": "0.0.0-pr2020-20250605072904",
41
- "@talismn/scale": "0.1.1",
42
- "@talismn/util": "0.4.1",
43
- "@talismn/token-rates": "0.0.0-pr2020-20250605072904"
37
+ "@talismn/chain-connector": "0.0.0-pr2023-20250606134638",
38
+ "@talismn/chain-connector-evm": "0.0.0-pr2023-20250606134638",
39
+ "@talismn/chaindata-provider": "0.0.0-pr2023-20250606134638",
40
+ "@talismn/sapi": "0.0.0-pr2023-20250606134638",
41
+ "@talismn/scale": "0.0.0-pr2023-20250606134638",
42
+ "@talismn/token-rates": "0.0.0-pr2023-20250606134638",
43
+ "@talismn/util": "0.0.0-pr2023-20250606134638"
44
44
  },
45
45
  "devDependencies": {
46
- "@polkadot/api-contract": "15.8.1",
47
- "@polkadot/types": "15.8.1",
48
- "@polkadot/util": "13.4.3",
49
- "@polkadot/util-crypto": "13.4.3",
46
+ "@polkadot/api-contract": "16.1.2",
47
+ "@polkadot/types": "16.1.2",
48
+ "@polkadot/util": "13.5.1",
49
+ "@polkadot/util-crypto": "13.5.1",
50
50
  "@substrate/txwrapper-core": "7.5.3",
51
51
  "@types/jest": "^29.5.14",
52
52
  "@types/lodash": "^4.17.12",
@@ -55,8 +55,8 @@
55
55
  "jest": "^29.7.0",
56
56
  "ts-jest": "^29.2.5",
57
57
  "typescript": "^5.6.3",
58
- "@talismn/tsconfig": "0.0.2",
59
- "@talismn/eslint-config": "0.0.3"
58
+ "@talismn/eslint-config": "0.0.3",
59
+ "@talismn/tsconfig": "0.0.2"
60
60
  },
61
61
  "peerDependencies": {
62
62
  "@polkadot/api-contract": "*",