@talismn/balances 0.9.8 → 0.9.10

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,
@@ -3215,10 +3199,7 @@ const SubAssetsModule = hydrate => {
3215
3199
  } = chainMeta;
3216
3200
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3217
3201
  if (metadataVersion < 14) return {};
3218
- const {
3219
- metadata
3220
- } = scale.decodeMetadata(miniMetadata);
3221
- if (metadata === undefined) return {};
3202
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata));
3222
3203
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3223
3204
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3224
3205
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
@@ -3476,14 +3457,8 @@ const SubEquilibriumModule = hydrate => {
3476
3457
  isTestnet
3477
3458
  }; // default to disabled
3478
3459
 
3479
- const {
3480
- metadataVersion,
3481
- metadata,
3482
- tag
3483
- } = scale.decodeMetadata(metadataRpc);
3484
- if (!metadata) return {
3485
- isTestnet
3486
- };
3460
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3461
+ const metadata = scale.decAnyMetadata(metadataRpc);
3487
3462
  scale.compactMetadata(metadata, [{
3488
3463
  pallet: "EqAssets",
3489
3464
  items: ["Assets"]
@@ -3491,13 +3466,7 @@ const SubEquilibriumModule = hydrate => {
3491
3466
  pallet: "System",
3492
3467
  items: ["Account"]
3493
3468
  }]);
3494
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3495
- tag,
3496
- metadata
3497
- } : {
3498
- tag,
3499
- metadata
3500
- });
3469
+ const miniMetadata = scale.encodeMetadata(metadata);
3501
3470
  return {
3502
3471
  isTestnet,
3503
3472
  miniMetadata,
@@ -3514,11 +3483,8 @@ const SubEquilibriumModule = hydrate => {
3514
3483
  } = chainMeta;
3515
3484
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3516
3485
  if (metadataVersion < 14) return {};
3517
- const {
3518
- metadata
3519
- } = scale.decodeMetadata(miniMetadata);
3520
- if (metadata === undefined) return {};
3521
3486
  try {
3487
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata));
3522
3488
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3523
3489
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3524
3490
  const stateKey = assetsCoder.keys.enc();
@@ -3758,25 +3724,13 @@ const SubForeignAssetsModule = hydrate => {
3758
3724
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3759
3725
  isTestnet
3760
3726
  };
3761
- const {
3762
- metadataVersion,
3763
- metadata,
3764
- tag
3765
- } = scale.decodeMetadata(metadataRpc);
3766
- if (!metadata) return {
3767
- isTestnet
3768
- };
3727
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3728
+ const metadata = scale.decAnyMetadata(metadataRpc);
3769
3729
  scale.compactMetadata(metadata, [{
3770
3730
  pallet: "ForeignAssets",
3771
3731
  items: ["Account", "Asset", "Metadata"]
3772
3732
  }]);
3773
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3774
- tag,
3775
- metadata
3776
- } : {
3777
- tag,
3778
- metadata
3779
- });
3733
+ const miniMetadata = scale.encodeMetadata(metadata);
3780
3734
  return {
3781
3735
  isTestnet,
3782
3736
  miniMetadata,
@@ -3792,11 +3746,9 @@ const SubForeignAssetsModule = hydrate => {
3792
3746
  } = chainMeta;
3793
3747
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3794
3748
  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));
3749
+ const metadata = scale.decAnyMetadata(miniMetadata);
3750
+ const unifiedMetadata = scale.unifyMetadata(metadata);
3751
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
3800
3752
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3801
3753
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3802
3754
  const tokens = {};
@@ -3898,17 +3850,14 @@ const SubForeignAssetsModule = hydrate => {
3898
3850
  },
3899
3851
  amount: BigInt(amount)
3900
3852
  };
3901
- const {
3902
- metadata
3903
- } = scale.decodeMetadata(metadataRpc);
3904
- if (metadata === undefined) throw new Error("Unable to decode metadata");
3853
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
3905
3854
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3906
3855
  try {
3907
3856
  const {
3908
3857
  location,
3909
3858
  codec
3910
3859
  } = scaleBuilder.buildCall(pallet, method);
3911
- const callData = polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args)));
3860
+ const callData = polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)]));
3912
3861
  return {
3913
3862
  type: "substrate",
3914
3863
  callData: utils.toHex(callData.asBytes())
@@ -4311,7 +4260,7 @@ const nompoolAccountId = (palletId, poolId, index) => {
4311
4260
  const length = encModPrefix.length + encPalletId.length + encIndex.length + encPoolId.length;
4312
4261
  const remainingBytes = 32 - length;
4313
4262
  const encEmptyH256 = new Uint8Array(remainingBytes);
4314
- const bytes = utils.mergeUint8(encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256);
4263
+ const bytes = utils.mergeUint8([encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256]);
4315
4264
  return polkadotApi.AccountId().dec(bytes);
4316
4265
  };
4317
4266
  /** The stash account for the nomination pool */
@@ -5474,25 +5423,17 @@ const SubNativeModule = hydrate => {
5474
5423
  //
5475
5424
  // process metadata into SCALE encoders/decoders
5476
5425
  //
5477
-
5478
- const {
5479
- metadataVersion,
5480
- metadata,
5481
- tag
5482
- } = scale.decodeMetadata(metadataRpc);
5483
- if (!metadata) return {
5484
- isTestnet,
5485
- symbol,
5486
- decimals
5487
- };
5426
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
5427
+ const metadata = scale.decAnyMetadata(metadataRpc);
5428
+ const unifiedMetadata = scale.unifyMetadata(metadata);
5488
5429
 
5489
5430
  //
5490
5431
  // get runtime constants
5491
5432
  //
5492
5433
 
5493
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
5434
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
5494
5435
  const getConstantValue = (palletName, constantName) => {
5495
- const encodedValue = metadata.pallets.find(({
5436
+ const encodedValue = unifiedMetadata.pallets.find(({
5496
5437
  name
5497
5438
  }) => name === palletName)?.constants.find(({
5498
5439
  name
@@ -5541,14 +5482,8 @@ const SubNativeModule = hydrate => {
5541
5482
  runtimeApi: "SubnetInfoRuntimeApi",
5542
5483
  methods: ["get_dynamic_info"]
5543
5484
  }]);
5544
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
5545
- tag,
5546
- metadata
5547
- } : {
5548
- tag,
5549
- metadata
5550
- });
5551
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5485
+ const miniMetadata = scale.encodeMetadata(metadata);
5486
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5552
5487
  name
5553
5488
  }) => name === "Balances")?.storage?.items.find(({
5554
5489
  name
@@ -7257,26 +7192,14 @@ const SubTokensModule = hydrate => {
7257
7192
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7258
7193
  isTestnet
7259
7194
  };
7260
- const {
7261
- metadataVersion,
7262
- metadata,
7263
- tag
7264
- } = scale.decodeMetadata(metadataRpc);
7265
- if (!metadata) return {
7266
- isTestnet
7267
- };
7195
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
7196
+ const metadata = scale.decAnyMetadata(metadataRpc);
7268
7197
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7269
7198
  scale.compactMetadata(metadata, [{
7270
7199
  pallet: palletId,
7271
7200
  items: ["Accounts"]
7272
7201
  }]);
7273
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
7274
- tag,
7275
- metadata
7276
- } : {
7277
- tag,
7278
- metadata
7279
- });
7202
+ const miniMetadata = scale.encodeMetadata(metadata);
7280
7203
  return palletId === defaultPalletId ? {
7281
7204
  isTestnet,
7282
7205
  miniMetadata,
@@ -7372,10 +7295,7 @@ const SubTokensModule = hydrate => {
7372
7295
  return token.onChainId;
7373
7296
  }
7374
7297
  })();
7375
- const {
7376
- metadata
7377
- } = scale.decodeMetadata(metadataRpc);
7378
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7298
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
7379
7299
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
7380
7300
  const tryBuildCallData = (pallet, method, args) => {
7381
7301
  try {
@@ -7383,7 +7303,7 @@ const SubTokensModule = hydrate => {
7383
7303
  location,
7384
7304
  codec
7385
7305
  } = scaleBuilder.buildCall(pallet, method);
7386
- return [polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args))), undefined];
7306
+ return [polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)])), undefined];
7387
7307
  } catch (cause) {
7388
7308
  return [undefined, new Error("Failed to build call", {
7389
7309
  cause
@@ -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,
@@ -3215,10 +3199,7 @@ const SubAssetsModule = hydrate => {
3215
3199
  } = chainMeta;
3216
3200
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3217
3201
  if (metadataVersion < 14) return {};
3218
- const {
3219
- metadata
3220
- } = scale.decodeMetadata(miniMetadata);
3221
- if (metadata === undefined) return {};
3202
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata));
3222
3203
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3223
3204
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3224
3205
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
@@ -3476,14 +3457,8 @@ const SubEquilibriumModule = hydrate => {
3476
3457
  isTestnet
3477
3458
  }; // default to disabled
3478
3459
 
3479
- const {
3480
- metadataVersion,
3481
- metadata,
3482
- tag
3483
- } = scale.decodeMetadata(metadataRpc);
3484
- if (!metadata) return {
3485
- isTestnet
3486
- };
3460
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3461
+ const metadata = scale.decAnyMetadata(metadataRpc);
3487
3462
  scale.compactMetadata(metadata, [{
3488
3463
  pallet: "EqAssets",
3489
3464
  items: ["Assets"]
@@ -3491,13 +3466,7 @@ const SubEquilibriumModule = hydrate => {
3491
3466
  pallet: "System",
3492
3467
  items: ["Account"]
3493
3468
  }]);
3494
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3495
- tag,
3496
- metadata
3497
- } : {
3498
- tag,
3499
- metadata
3500
- });
3469
+ const miniMetadata = scale.encodeMetadata(metadata);
3501
3470
  return {
3502
3471
  isTestnet,
3503
3472
  miniMetadata,
@@ -3514,11 +3483,8 @@ const SubEquilibriumModule = hydrate => {
3514
3483
  } = chainMeta;
3515
3484
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3516
3485
  if (metadataVersion < 14) return {};
3517
- const {
3518
- metadata
3519
- } = scale.decodeMetadata(miniMetadata);
3520
- if (metadata === undefined) return {};
3521
3486
  try {
3487
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(miniMetadata));
3522
3488
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3523
3489
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3524
3490
  const stateKey = assetsCoder.keys.enc();
@@ -3758,25 +3724,13 @@ const SubForeignAssetsModule = hydrate => {
3758
3724
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3759
3725
  isTestnet
3760
3726
  };
3761
- const {
3762
- metadataVersion,
3763
- metadata,
3764
- tag
3765
- } = scale.decodeMetadata(metadataRpc);
3766
- if (!metadata) return {
3767
- isTestnet
3768
- };
3727
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
3728
+ const metadata = scale.decAnyMetadata(metadataRpc);
3769
3729
  scale.compactMetadata(metadata, [{
3770
3730
  pallet: "ForeignAssets",
3771
3731
  items: ["Account", "Asset", "Metadata"]
3772
3732
  }]);
3773
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
3774
- tag,
3775
- metadata
3776
- } : {
3777
- tag,
3778
- metadata
3779
- });
3733
+ const miniMetadata = scale.encodeMetadata(metadata);
3780
3734
  return {
3781
3735
  isTestnet,
3782
3736
  miniMetadata,
@@ -3792,11 +3746,9 @@ const SubForeignAssetsModule = hydrate => {
3792
3746
  } = chainMeta;
3793
3747
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3794
3748
  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));
3749
+ const metadata = scale.decAnyMetadata(miniMetadata);
3750
+ const unifiedMetadata = scale.unifyMetadata(metadata);
3751
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
3800
3752
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3801
3753
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3802
3754
  const tokens = {};
@@ -3898,17 +3850,14 @@ const SubForeignAssetsModule = hydrate => {
3898
3850
  },
3899
3851
  amount: BigInt(amount)
3900
3852
  };
3901
- const {
3902
- metadata
3903
- } = scale.decodeMetadata(metadataRpc);
3904
- if (metadata === undefined) throw new Error("Unable to decode metadata");
3853
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
3905
3854
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
3906
3855
  try {
3907
3856
  const {
3908
3857
  location,
3909
3858
  codec
3910
3859
  } = scaleBuilder.buildCall(pallet, method);
3911
- const callData = polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args)));
3860
+ const callData = polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)]));
3912
3861
  return {
3913
3862
  type: "substrate",
3914
3863
  callData: utils.toHex(callData.asBytes())
@@ -4311,7 +4260,7 @@ const nompoolAccountId = (palletId, poolId, index) => {
4311
4260
  const length = encModPrefix.length + encPalletId.length + encIndex.length + encPoolId.length;
4312
4261
  const remainingBytes = 32 - length;
4313
4262
  const encEmptyH256 = new Uint8Array(remainingBytes);
4314
- const bytes = utils.mergeUint8(encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256);
4263
+ const bytes = utils.mergeUint8([encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256]);
4315
4264
  return polkadotApi.AccountId().dec(bytes);
4316
4265
  };
4317
4266
  /** The stash account for the nomination pool */
@@ -5474,25 +5423,17 @@ const SubNativeModule = hydrate => {
5474
5423
  //
5475
5424
  // process metadata into SCALE encoders/decoders
5476
5425
  //
5477
-
5478
- const {
5479
- metadataVersion,
5480
- metadata,
5481
- tag
5482
- } = scale.decodeMetadata(metadataRpc);
5483
- if (!metadata) return {
5484
- isTestnet,
5485
- symbol,
5486
- decimals
5487
- };
5426
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
5427
+ const metadata = scale.decAnyMetadata(metadataRpc);
5428
+ const unifiedMetadata = scale.unifyMetadata(metadata);
5488
5429
 
5489
5430
  //
5490
5431
  // get runtime constants
5491
5432
  //
5492
5433
 
5493
- const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
5434
+ const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(unifiedMetadata));
5494
5435
  const getConstantValue = (palletName, constantName) => {
5495
- const encodedValue = metadata.pallets.find(({
5436
+ const encodedValue = unifiedMetadata.pallets.find(({
5496
5437
  name
5497
5438
  }) => name === palletName)?.constants.find(({
5498
5439
  name
@@ -5541,14 +5482,8 @@ const SubNativeModule = hydrate => {
5541
5482
  runtimeApi: "SubnetInfoRuntimeApi",
5542
5483
  methods: ["get_dynamic_info"]
5543
5484
  }]);
5544
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
5545
- tag,
5546
- metadata
5547
- } : {
5548
- tag,
5549
- metadata
5550
- });
5551
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5485
+ const miniMetadata = scale.encodeMetadata(metadata);
5486
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5552
5487
  name
5553
5488
  }) => name === "Balances")?.storage?.items.find(({
5554
5489
  name
@@ -7257,26 +7192,14 @@ const SubTokensModule = hydrate => {
7257
7192
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7258
7193
  isTestnet
7259
7194
  };
7260
- const {
7261
- metadataVersion,
7262
- metadata,
7263
- tag
7264
- } = scale.decodeMetadata(metadataRpc);
7265
- if (!metadata) return {
7266
- isTestnet
7267
- };
7195
+ const metadataVersion = scale.getMetadataVersion(metadataRpc);
7196
+ const metadata = scale.decAnyMetadata(metadataRpc);
7268
7197
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7269
7198
  scale.compactMetadata(metadata, [{
7270
7199
  pallet: palletId,
7271
7200
  items: ["Accounts"]
7272
7201
  }]);
7273
- const miniMetadata = scale.encodeMetadata(tag === "v15" ? {
7274
- tag,
7275
- metadata
7276
- } : {
7277
- tag,
7278
- metadata
7279
- });
7202
+ const miniMetadata = scale.encodeMetadata(metadata);
7280
7203
  return palletId === defaultPalletId ? {
7281
7204
  isTestnet,
7282
7205
  miniMetadata,
@@ -7372,10 +7295,7 @@ const SubTokensModule = hydrate => {
7372
7295
  return token.onChainId;
7373
7296
  }
7374
7297
  })();
7375
- const {
7376
- metadata
7377
- } = scale.decodeMetadata(metadataRpc);
7378
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7298
+ const metadata = scale.unifyMetadata(scale.decAnyMetadata(metadataRpc));
7379
7299
  const scaleBuilder = scale.getDynamicBuilder(scale.getLookupFn(metadata));
7380
7300
  const tryBuildCallData = (pallet, method, args) => {
7381
7301
  try {
@@ -7383,7 +7303,7 @@ const SubTokensModule = hydrate => {
7383
7303
  location,
7384
7304
  codec
7385
7305
  } = scaleBuilder.buildCall(pallet, method);
7386
- return [polkadotApi.Binary.fromBytes(utils.mergeUint8(new Uint8Array(location), codec.enc(args))), undefined];
7306
+ return [polkadotApi.Binary.fromBytes(utils.mergeUint8([new Uint8Array(location), codec.enc(args)])), undefined];
7387
7307
  } catch (cause) {
7388
7308
  return [undefined, new Error("Failed to build call", {
7389
7309
  cause
@@ -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, 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,
@@ -3202,10 +3186,7 @@ const SubAssetsModule = hydrate => {
3202
3186
  } = chainMeta;
3203
3187
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3204
3188
  if (metadataVersion < 14) return {};
3205
- const {
3206
- metadata
3207
- } = decodeMetadata(miniMetadata);
3208
- if (metadata === undefined) return {};
3189
+ const metadata = unifyMetadata(decAnyMetadata(miniMetadata));
3209
3190
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3210
3191
  const assetCoder = scaleBuilder.buildStorage("Assets", "Asset");
3211
3192
  const metadataCoder = scaleBuilder.buildStorage("Assets", "Metadata");
@@ -3463,14 +3444,8 @@ const SubEquilibriumModule = hydrate => {
3463
3444
  isTestnet
3464
3445
  }; // default to disabled
3465
3446
 
3466
- const {
3467
- metadataVersion,
3468
- metadata,
3469
- tag
3470
- } = decodeMetadata(metadataRpc);
3471
- if (!metadata) return {
3472
- isTestnet
3473
- };
3447
+ const metadataVersion = getMetadataVersion(metadataRpc);
3448
+ const metadata = decAnyMetadata(metadataRpc);
3474
3449
  compactMetadata(metadata, [{
3475
3450
  pallet: "EqAssets",
3476
3451
  items: ["Assets"]
@@ -3478,13 +3453,7 @@ const SubEquilibriumModule = hydrate => {
3478
3453
  pallet: "System",
3479
3454
  items: ["Account"]
3480
3455
  }]);
3481
- const miniMetadata = encodeMetadata(tag === "v15" ? {
3482
- tag,
3483
- metadata
3484
- } : {
3485
- tag,
3486
- metadata
3487
- });
3456
+ const miniMetadata = encodeMetadata(metadata);
3488
3457
  return {
3489
3458
  isTestnet,
3490
3459
  miniMetadata,
@@ -3501,11 +3470,8 @@ const SubEquilibriumModule = hydrate => {
3501
3470
  } = chainMeta;
3502
3471
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3503
3472
  if (metadataVersion < 14) return {};
3504
- const {
3505
- metadata
3506
- } = decodeMetadata(miniMetadata);
3507
- if (metadata === undefined) return {};
3508
3473
  try {
3474
+ const metadata = unifyMetadata(decAnyMetadata(miniMetadata));
3509
3475
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3510
3476
  const assetsCoder = scaleBuilder.buildStorage("EqAssets", "Assets");
3511
3477
  const stateKey = assetsCoder.keys.enc();
@@ -3745,25 +3711,13 @@ const SubForeignAssetsModule = hydrate => {
3745
3711
  if ((moduleConfig?.tokens ?? []).length < 1) return {
3746
3712
  isTestnet
3747
3713
  };
3748
- const {
3749
- metadataVersion,
3750
- metadata,
3751
- tag
3752
- } = decodeMetadata(metadataRpc);
3753
- if (!metadata) return {
3754
- isTestnet
3755
- };
3714
+ const metadataVersion = getMetadataVersion(metadataRpc);
3715
+ const metadata = decAnyMetadata(metadataRpc);
3756
3716
  compactMetadata(metadata, [{
3757
3717
  pallet: "ForeignAssets",
3758
3718
  items: ["Account", "Asset", "Metadata"]
3759
3719
  }]);
3760
- const miniMetadata = encodeMetadata(tag === "v15" ? {
3761
- tag,
3762
- metadata
3763
- } : {
3764
- tag,
3765
- metadata
3766
- });
3720
+ const miniMetadata = encodeMetadata(metadata);
3767
3721
  return {
3768
3722
  isTestnet,
3769
3723
  miniMetadata,
@@ -3779,11 +3733,9 @@ const SubForeignAssetsModule = hydrate => {
3779
3733
  } = chainMeta;
3780
3734
  if (miniMetadata === undefined || metadataVersion === undefined) return {};
3781
3735
  if (metadataVersion < 14) return {};
3782
- const {
3783
- metadata
3784
- } = decodeMetadata(miniMetadata);
3785
- if (metadata === undefined) return {};
3786
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3736
+ const metadata = decAnyMetadata(miniMetadata);
3737
+ const unifiedMetadata = unifyMetadata(metadata);
3738
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifiedMetadata));
3787
3739
  const assetCoder = scaleBuilder.buildStorage("ForeignAssets", "Asset");
3788
3740
  const metadataCoder = scaleBuilder.buildStorage("ForeignAssets", "Metadata");
3789
3741
  const tokens = {};
@@ -3885,17 +3837,14 @@ const SubForeignAssetsModule = hydrate => {
3885
3837
  },
3886
3838
  amount: BigInt(amount)
3887
3839
  };
3888
- const {
3889
- metadata
3890
- } = decodeMetadata(metadataRpc);
3891
- if (metadata === undefined) throw new Error("Unable to decode metadata");
3840
+ const metadata = unifyMetadata(decAnyMetadata(metadataRpc));
3892
3841
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
3893
3842
  try {
3894
3843
  const {
3895
3844
  location,
3896
3845
  codec
3897
3846
  } = scaleBuilder.buildCall(pallet, method);
3898
- const callData = Binary.fromBytes(mergeUint8(new Uint8Array(location), codec.enc(args)));
3847
+ const callData = Binary.fromBytes(mergeUint8([new Uint8Array(location), codec.enc(args)]));
3899
3848
  return {
3900
3849
  type: "substrate",
3901
3850
  callData: toHex$1(callData.asBytes())
@@ -4298,7 +4247,7 @@ const nompoolAccountId = (palletId, poolId, index) => {
4298
4247
  const length = encModPrefix.length + encPalletId.length + encIndex.length + encPoolId.length;
4299
4248
  const remainingBytes = 32 - length;
4300
4249
  const encEmptyH256 = new Uint8Array(remainingBytes);
4301
- const bytes = mergeUint8(encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256);
4250
+ const bytes = mergeUint8([encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256]);
4302
4251
  return AccountId().dec(bytes);
4303
4252
  };
4304
4253
  /** The stash account for the nomination pool */
@@ -5461,25 +5410,17 @@ const SubNativeModule = hydrate => {
5461
5410
  //
5462
5411
  // process metadata into SCALE encoders/decoders
5463
5412
  //
5464
-
5465
- const {
5466
- metadataVersion,
5467
- metadata,
5468
- tag
5469
- } = decodeMetadata(metadataRpc);
5470
- if (!metadata) return {
5471
- isTestnet,
5472
- symbol,
5473
- decimals
5474
- };
5413
+ const metadataVersion = getMetadataVersion(metadataRpc);
5414
+ const metadata = decAnyMetadata(metadataRpc);
5415
+ const unifiedMetadata = unifyMetadata(metadata);
5475
5416
 
5476
5417
  //
5477
5418
  // get runtime constants
5478
5419
  //
5479
5420
 
5480
- const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
5421
+ const scaleBuilder = getDynamicBuilder(getLookupFn(unifiedMetadata));
5481
5422
  const getConstantValue = (palletName, constantName) => {
5482
- const encodedValue = metadata.pallets.find(({
5423
+ const encodedValue = unifiedMetadata.pallets.find(({
5483
5424
  name
5484
5425
  }) => name === palletName)?.constants.find(({
5485
5426
  name
@@ -5528,14 +5469,8 @@ const SubNativeModule = hydrate => {
5528
5469
  runtimeApi: "SubnetInfoRuntimeApi",
5529
5470
  methods: ["get_dynamic_info"]
5530
5471
  }]);
5531
- const miniMetadata = encodeMetadata(tag === "v15" ? {
5532
- tag,
5533
- metadata
5534
- } : {
5535
- tag,
5536
- metadata
5537
- });
5538
- const hasFreezesItem = Boolean(metadata.pallets.find(({
5472
+ const miniMetadata = encodeMetadata(metadata);
5473
+ const hasFreezesItem = Boolean(unifiedMetadata.pallets.find(({
5539
5474
  name
5540
5475
  }) => name === "Balances")?.storage?.items.find(({
5541
5476
  name
@@ -7244,26 +7179,14 @@ const SubTokensModule = hydrate => {
7244
7179
  if ((moduleConfig?.tokens ?? []).length < 1) return {
7245
7180
  isTestnet
7246
7181
  };
7247
- const {
7248
- metadataVersion,
7249
- metadata,
7250
- tag
7251
- } = decodeMetadata(metadataRpc);
7252
- if (!metadata) return {
7253
- isTestnet
7254
- };
7182
+ const metadataVersion = getMetadataVersion(metadataRpc);
7183
+ const metadata = decAnyMetadata(metadataRpc);
7255
7184
  const palletId = moduleConfig?.palletId ?? defaultPalletId;
7256
7185
  compactMetadata(metadata, [{
7257
7186
  pallet: palletId,
7258
7187
  items: ["Accounts"]
7259
7188
  }]);
7260
- const miniMetadata = encodeMetadata(tag === "v15" ? {
7261
- tag,
7262
- metadata
7263
- } : {
7264
- tag,
7265
- metadata
7266
- });
7189
+ const miniMetadata = encodeMetadata(metadata);
7267
7190
  return palletId === defaultPalletId ? {
7268
7191
  isTestnet,
7269
7192
  miniMetadata,
@@ -7359,10 +7282,7 @@ const SubTokensModule = hydrate => {
7359
7282
  return token.onChainId;
7360
7283
  }
7361
7284
  })();
7362
- const {
7363
- metadata
7364
- } = decodeMetadata(metadataRpc);
7365
- if (metadata === undefined) throw new Error("Unable to decode metadata");
7285
+ const metadata = unifyMetadata(decAnyMetadata(metadataRpc));
7366
7286
  const scaleBuilder = getDynamicBuilder(getLookupFn(metadata));
7367
7287
  const tryBuildCallData = (pallet, method, args) => {
7368
7288
  try {
@@ -7370,7 +7290,7 @@ const SubTokensModule = hydrate => {
7370
7290
  location,
7371
7291
  codec
7372
7292
  } = scaleBuilder.buildCall(pallet, method);
7373
- return [Binary.fromBytes(mergeUint8(new Uint8Array(location), codec.enc(args))), undefined];
7293
+ return [Binary.fromBytes(mergeUint8([new Uint8Array(location), codec.enc(args)])), undefined];
7374
7294
  } catch (cause) {
7375
7295
  return [undefined, new Error("Failed to build call", {
7376
7296
  cause
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@talismn/balances",
3
- "version": "0.9.8",
3
+ "version": "0.9.10",
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.10.7",
38
- "@talismn/chain-connector-evm": "0.10.7",
39
- "@talismn/chaindata-provider": "0.10.7",
40
- "@talismn/sapi": "0.0.3",
41
- "@talismn/token-rates": "2.0.8",
42
- "@talismn/scale": "0.1.1",
43
- "@talismn/util": "0.4.1"
37
+ "@talismn/chain-connector": "0.10.9",
38
+ "@talismn/chain-connector-evm": "0.10.9",
39
+ "@talismn/chaindata-provider": "0.10.9",
40
+ "@talismn/sapi": "0.0.4",
41
+ "@talismn/token-rates": "2.0.10",
42
+ "@talismn/scale": "0.1.2",
43
+ "@talismn/util": "0.4.2"
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": "*",