@talismn/balances 0.0.0-pr2075-20250710142256 → 0.0.0-pr2075-20250711064604
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.
@@ -5,3 +5,8 @@ export type BalanceDef<T extends TokenType = TokenType> = {
|
|
5
5
|
address: TokenPlatform<T> extends "ethereum" ? `0x${string}` : string;
|
6
6
|
};
|
7
7
|
export declare const getBalanceDefs: <T extends TokenType = TokenType>(addressesByToken: TokensWithAddresses) => BalanceDef<T>[];
|
8
|
+
export type QueryStorageChange = [stateKey: `0x${string}`, value: `0x${string}`];
|
9
|
+
export type QueryStorageResult = [{
|
10
|
+
block: `0x${string}`;
|
11
|
+
changes: QueryStorageChange[];
|
12
|
+
}] | [];
|
@@ -621,6 +621,10 @@ const getBalanceDefs = addressesByToken => {
|
|
621
621
|
})));
|
622
622
|
};
|
623
623
|
|
624
|
+
// esponse of getStorageAt queries:
|
625
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
626
|
+
// if the storage has no entries in it (ex: Assets on ewx or moonbeam), the response will be an empty array
|
627
|
+
|
624
628
|
const fetchBalances$8 = async ({
|
625
629
|
networkId,
|
626
630
|
tokensWithAddresses,
|
@@ -1502,7 +1506,7 @@ const decodeRpcQueryPack = (queries, result) => {
|
|
1502
1506
|
decodeResult
|
1503
1507
|
}) => {
|
1504
1508
|
const changes = stateKeys.map(stateKey => {
|
1505
|
-
if (!stateKey) return null;
|
1509
|
+
if (!stateKey || !result) return null;
|
1506
1510
|
const change = result.changes.find(([key]) => key === stateKey);
|
1507
1511
|
if (!change) return null;
|
1508
1512
|
return change[1];
|
@@ -1750,8 +1754,8 @@ const fetchTokens$5 = async ({
|
|
1750
1754
|
const metadataCodec = builder.buildStorage("Assets", "Metadata");
|
1751
1755
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("Assets", "Asset")]), connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("Assets", "Metadata")])]);
|
1752
1756
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
1753
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
1754
|
-
const metadataStorageEntries = metadataStorageResults[0].changes;
|
1757
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
1758
|
+
const metadataStorageEntries = metadataStorageResults.length ? metadataStorageResults[0].changes : [];
|
1755
1759
|
const assetByAssetId = lodashEs.keyBy(assetStorageEntries.map(([key, value]) => {
|
1756
1760
|
const [assetId] = assetCodec.keys.dec(key);
|
1757
1761
|
const asset = assetCodec.value.dec(value);
|
@@ -1801,7 +1805,8 @@ const fetchTokens$5 = async ({
|
|
1801
1805
|
// validate results
|
1802
1806
|
.filter(t => {
|
1803
1807
|
const parsed = chaindataProvider.SubAssetsTokenSchema.safeParse(t);
|
1804
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
1808
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
1809
|
+
|
1805
1810
|
return parsed.success;
|
1806
1811
|
});
|
1807
1812
|
};
|
@@ -2580,11 +2585,7 @@ const getMiniMetadata$5 = ({
|
|
2580
2585
|
const source = MODULE_TYPE$5;
|
2581
2586
|
const chainId = networkId;
|
2582
2587
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2583
|
-
if (specVersion !== systemVersion.spec_version)
|
2584
|
-
networkId,
|
2585
|
-
specVersion,
|
2586
|
-
systemVersion
|
2587
|
-
});
|
2588
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2588
2589
|
const id = deriveMiniMetadataId({
|
2589
2590
|
source,
|
2590
2591
|
chainId,
|
@@ -2902,8 +2903,11 @@ const fetchTokens$4 = async ({
|
|
2902
2903
|
const metadataCodec = builder.buildStorage("ForeignAssets", "Metadata");
|
2903
2904
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("ForeignAssets", "Asset")]), connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("ForeignAssets", "Metadata")])]);
|
2904
2905
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
2905
|
-
|
2906
|
-
|
2906
|
+
|
2907
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
2908
|
+
// some networks avec the pallet with no tokens in it, in which case the response will be an empty array
|
2909
|
+
const assetStorageEntries = assetStorageResults[0]?.changes ?? [];
|
2910
|
+
const metadataStorageEntries = metadataStorageResults[0]?.changes ?? [];
|
2907
2911
|
const assetByOnChainId = lodashEs.keyBy(assetStorageEntries.map(([key, value]) => {
|
2908
2912
|
const [decodedKey] = assetCodec.keys.dec(key);
|
2909
2913
|
const onChainId = scale.papiStringify(decodedKey);
|
@@ -2955,7 +2959,8 @@ const fetchTokens$4 = async ({
|
|
2955
2959
|
// validate results
|
2956
2960
|
.filter(t => {
|
2957
2961
|
const parsed = chaindataProvider.SubForeignAssetsTokenSchema.safeParse(t);
|
2958
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
2962
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
2963
|
+
|
2959
2964
|
return parsed.success;
|
2960
2965
|
});
|
2961
2966
|
};
|
@@ -2968,11 +2973,7 @@ const getMiniMetadata$4 = ({
|
|
2968
2973
|
const source = MODULE_TYPE$4;
|
2969
2974
|
const chainId = networkId;
|
2970
2975
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2971
|
-
if (specVersion !== systemVersion.spec_version)
|
2972
|
-
networkId,
|
2973
|
-
specVersion,
|
2974
|
-
systemVersion
|
2975
|
-
});
|
2976
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2976
2977
|
const id = deriveMiniMetadataId({
|
2977
2978
|
source,
|
2978
2979
|
chainId,
|
@@ -3247,7 +3248,7 @@ const fetchTokens$3 = async ({
|
|
3247
3248
|
const assetsCodec = builder.buildStorage("AssetRegistry", "Assets");
|
3248
3249
|
const allAssetStorageKeys = await connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("AssetRegistry", "Assets")]);
|
3249
3250
|
const assetStorageResults = await connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]);
|
3250
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
3251
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
3251
3252
|
const configTokenByAssetId = lodashEs.keyBy(tokens, t => t.onChainId);
|
3252
3253
|
return assetStorageEntries.map(([key, value]) => {
|
3253
3254
|
// parse results
|
@@ -3292,7 +3293,8 @@ const fetchTokens$3 = async ({
|
|
3292
3293
|
// validate results
|
3293
3294
|
.filter(t => {
|
3294
3295
|
const parsed = chaindataProvider.SubHydrationTokenSchema.safeParse(t);
|
3295
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
3296
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
3297
|
+
|
3296
3298
|
return parsed.success;
|
3297
3299
|
});
|
3298
3300
|
};
|
@@ -3305,11 +3307,7 @@ const getMiniMetadata$3 = ({
|
|
3305
3307
|
const source = MODULE_TYPE$3;
|
3306
3308
|
const chainId = networkId;
|
3307
3309
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
3308
|
-
if (specVersion !== systemVersion.spec_version)
|
3309
|
-
networkId,
|
3310
|
-
specVersion,
|
3311
|
-
systemVersion
|
3312
|
-
});
|
3310
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
3313
3311
|
const id = deriveMiniMetadataId({
|
3314
3312
|
source,
|
3315
3313
|
chainId,
|
@@ -4074,7 +4072,7 @@ const fetchTokens$2 = async ({
|
|
4074
4072
|
const token = lodashEs.assign(nativeToken, tokenConfig);
|
4075
4073
|
const parsed = chaindataProvider.SubNativeTokenSchema.safeParse(token);
|
4076
4074
|
if (!parsed.success) {
|
4077
|
-
log.warn(`Ignoring invalid token ${MODULE_TYPE
|
4075
|
+
// log.warn(`Ignoring invalid token ${MODULE_TYPE}`, token, parsed.error)
|
4078
4076
|
return [];
|
4079
4077
|
}
|
4080
4078
|
return [parsed.data];
|
@@ -4105,11 +4103,7 @@ const getMiniMetadata$2 = ({
|
|
4105
4103
|
const source = MODULE_TYPE$2;
|
4106
4104
|
const chainId = networkId;
|
4107
4105
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
4108
|
-
if (specVersion !== systemVersion.spec_version)
|
4109
|
-
networkId,
|
4110
|
-
specVersion,
|
4111
|
-
systemVersion
|
4112
|
-
});
|
4106
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
4113
4107
|
const id = deriveMiniMetadataId({
|
4114
4108
|
source,
|
4115
4109
|
chainId,
|
@@ -5604,7 +5598,8 @@ const fetchTokens$1 = async ({
|
|
5604
5598
|
}
|
5605
5599
|
return lodashEs.values(tokenList).filter(t => {
|
5606
5600
|
const parsed = chaindataProvider.SubPsp22TokenSchema.safeParse(t);
|
5607
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
5601
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
5602
|
+
|
5608
5603
|
return parsed.success;
|
5609
5604
|
});
|
5610
5605
|
};
|
@@ -5617,11 +5612,7 @@ const getMiniMetadata$1 = ({
|
|
5617
5612
|
const source = MODULE_TYPE$1;
|
5618
5613
|
const chainId = networkId;
|
5619
5614
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5620
|
-
if (specVersion !== systemVersion.spec_version)
|
5621
|
-
networkId,
|
5622
|
-
specVersion,
|
5623
|
-
systemVersion
|
5624
|
-
});
|
5615
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5625
5616
|
const id = deriveMiniMetadataId({
|
5626
5617
|
source,
|
5627
5618
|
chainId,
|
@@ -5920,11 +5911,7 @@ const getMiniMetadata = ({
|
|
5920
5911
|
const source = MODULE_TYPE;
|
5921
5912
|
const chainId = networkId;
|
5922
5913
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5923
|
-
if (specVersion !== systemVersion.spec_version)
|
5924
|
-
networkId,
|
5925
|
-
specVersion,
|
5926
|
-
systemVersion
|
5927
|
-
});
|
5914
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5928
5915
|
const id = deriveMiniMetadataId({
|
5929
5916
|
source,
|
5930
5917
|
chainId,
|
@@ -621,6 +621,10 @@ const getBalanceDefs = addressesByToken => {
|
|
621
621
|
})));
|
622
622
|
};
|
623
623
|
|
624
|
+
// esponse of getStorageAt queries:
|
625
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
626
|
+
// if the storage has no entries in it (ex: Assets on ewx or moonbeam), the response will be an empty array
|
627
|
+
|
624
628
|
const fetchBalances$8 = async ({
|
625
629
|
networkId,
|
626
630
|
tokensWithAddresses,
|
@@ -1502,7 +1506,7 @@ const decodeRpcQueryPack = (queries, result) => {
|
|
1502
1506
|
decodeResult
|
1503
1507
|
}) => {
|
1504
1508
|
const changes = stateKeys.map(stateKey => {
|
1505
|
-
if (!stateKey) return null;
|
1509
|
+
if (!stateKey || !result) return null;
|
1506
1510
|
const change = result.changes.find(([key]) => key === stateKey);
|
1507
1511
|
if (!change) return null;
|
1508
1512
|
return change[1];
|
@@ -1750,8 +1754,8 @@ const fetchTokens$5 = async ({
|
|
1750
1754
|
const metadataCodec = builder.buildStorage("Assets", "Metadata");
|
1751
1755
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("Assets", "Asset")]), connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("Assets", "Metadata")])]);
|
1752
1756
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
1753
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
1754
|
-
const metadataStorageEntries = metadataStorageResults[0].changes;
|
1757
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
1758
|
+
const metadataStorageEntries = metadataStorageResults.length ? metadataStorageResults[0].changes : [];
|
1755
1759
|
const assetByAssetId = lodashEs.keyBy(assetStorageEntries.map(([key, value]) => {
|
1756
1760
|
const [assetId] = assetCodec.keys.dec(key);
|
1757
1761
|
const asset = assetCodec.value.dec(value);
|
@@ -1801,7 +1805,8 @@ const fetchTokens$5 = async ({
|
|
1801
1805
|
// validate results
|
1802
1806
|
.filter(t => {
|
1803
1807
|
const parsed = chaindataProvider.SubAssetsTokenSchema.safeParse(t);
|
1804
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
1808
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
1809
|
+
|
1805
1810
|
return parsed.success;
|
1806
1811
|
});
|
1807
1812
|
};
|
@@ -2580,11 +2585,7 @@ const getMiniMetadata$5 = ({
|
|
2580
2585
|
const source = MODULE_TYPE$5;
|
2581
2586
|
const chainId = networkId;
|
2582
2587
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2583
|
-
if (specVersion !== systemVersion.spec_version)
|
2584
|
-
networkId,
|
2585
|
-
specVersion,
|
2586
|
-
systemVersion
|
2587
|
-
});
|
2588
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2588
2589
|
const id = deriveMiniMetadataId({
|
2589
2590
|
source,
|
2590
2591
|
chainId,
|
@@ -2902,8 +2903,11 @@ const fetchTokens$4 = async ({
|
|
2902
2903
|
const metadataCodec = builder.buildStorage("ForeignAssets", "Metadata");
|
2903
2904
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("ForeignAssets", "Asset")]), connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("ForeignAssets", "Metadata")])]);
|
2904
2905
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
2905
|
-
|
2906
|
-
|
2906
|
+
|
2907
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
2908
|
+
// some networks avec the pallet with no tokens in it, in which case the response will be an empty array
|
2909
|
+
const assetStorageEntries = assetStorageResults[0]?.changes ?? [];
|
2910
|
+
const metadataStorageEntries = metadataStorageResults[0]?.changes ?? [];
|
2907
2911
|
const assetByOnChainId = lodashEs.keyBy(assetStorageEntries.map(([key, value]) => {
|
2908
2912
|
const [decodedKey] = assetCodec.keys.dec(key);
|
2909
2913
|
const onChainId = scale.papiStringify(decodedKey);
|
@@ -2955,7 +2959,8 @@ const fetchTokens$4 = async ({
|
|
2955
2959
|
// validate results
|
2956
2960
|
.filter(t => {
|
2957
2961
|
const parsed = chaindataProvider.SubForeignAssetsTokenSchema.safeParse(t);
|
2958
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
2962
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
2963
|
+
|
2959
2964
|
return parsed.success;
|
2960
2965
|
});
|
2961
2966
|
};
|
@@ -2968,11 +2973,7 @@ const getMiniMetadata$4 = ({
|
|
2968
2973
|
const source = MODULE_TYPE$4;
|
2969
2974
|
const chainId = networkId;
|
2970
2975
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2971
|
-
if (specVersion !== systemVersion.spec_version)
|
2972
|
-
networkId,
|
2973
|
-
specVersion,
|
2974
|
-
systemVersion
|
2975
|
-
});
|
2976
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2976
2977
|
const id = deriveMiniMetadataId({
|
2977
2978
|
source,
|
2978
2979
|
chainId,
|
@@ -3247,7 +3248,7 @@ const fetchTokens$3 = async ({
|
|
3247
3248
|
const assetsCodec = builder.buildStorage("AssetRegistry", "Assets");
|
3248
3249
|
const allAssetStorageKeys = await connector.send(networkId, "state_getKeys", [scale.getStorageKeyPrefix("AssetRegistry", "Assets")]);
|
3249
3250
|
const assetStorageResults = await connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]);
|
3250
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
3251
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
3251
3252
|
const configTokenByAssetId = lodashEs.keyBy(tokens, t => t.onChainId);
|
3252
3253
|
return assetStorageEntries.map(([key, value]) => {
|
3253
3254
|
// parse results
|
@@ -3292,7 +3293,8 @@ const fetchTokens$3 = async ({
|
|
3292
3293
|
// validate results
|
3293
3294
|
.filter(t => {
|
3294
3295
|
const parsed = chaindataProvider.SubHydrationTokenSchema.safeParse(t);
|
3295
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
3296
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
3297
|
+
|
3296
3298
|
return parsed.success;
|
3297
3299
|
});
|
3298
3300
|
};
|
@@ -3305,11 +3307,7 @@ const getMiniMetadata$3 = ({
|
|
3305
3307
|
const source = MODULE_TYPE$3;
|
3306
3308
|
const chainId = networkId;
|
3307
3309
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
3308
|
-
if (specVersion !== systemVersion.spec_version)
|
3309
|
-
networkId,
|
3310
|
-
specVersion,
|
3311
|
-
systemVersion
|
3312
|
-
});
|
3310
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
3313
3311
|
const id = deriveMiniMetadataId({
|
3314
3312
|
source,
|
3315
3313
|
chainId,
|
@@ -4074,7 +4072,7 @@ const fetchTokens$2 = async ({
|
|
4074
4072
|
const token = lodashEs.assign(nativeToken, tokenConfig);
|
4075
4073
|
const parsed = chaindataProvider.SubNativeTokenSchema.safeParse(token);
|
4076
4074
|
if (!parsed.success) {
|
4077
|
-
log.warn(`Ignoring invalid token ${MODULE_TYPE
|
4075
|
+
// log.warn(`Ignoring invalid token ${MODULE_TYPE}`, token, parsed.error)
|
4078
4076
|
return [];
|
4079
4077
|
}
|
4080
4078
|
return [parsed.data];
|
@@ -4105,11 +4103,7 @@ const getMiniMetadata$2 = ({
|
|
4105
4103
|
const source = MODULE_TYPE$2;
|
4106
4104
|
const chainId = networkId;
|
4107
4105
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
4108
|
-
if (specVersion !== systemVersion.spec_version)
|
4109
|
-
networkId,
|
4110
|
-
specVersion,
|
4111
|
-
systemVersion
|
4112
|
-
});
|
4106
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
4113
4107
|
const id = deriveMiniMetadataId({
|
4114
4108
|
source,
|
4115
4109
|
chainId,
|
@@ -5604,7 +5598,8 @@ const fetchTokens$1 = async ({
|
|
5604
5598
|
}
|
5605
5599
|
return lodashEs.values(tokenList).filter(t => {
|
5606
5600
|
const parsed = chaindataProvider.SubPsp22TokenSchema.safeParse(t);
|
5607
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
5601
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
5602
|
+
|
5608
5603
|
return parsed.success;
|
5609
5604
|
});
|
5610
5605
|
};
|
@@ -5617,11 +5612,7 @@ const getMiniMetadata$1 = ({
|
|
5617
5612
|
const source = MODULE_TYPE$1;
|
5618
5613
|
const chainId = networkId;
|
5619
5614
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5620
|
-
if (specVersion !== systemVersion.spec_version)
|
5621
|
-
networkId,
|
5622
|
-
specVersion,
|
5623
|
-
systemVersion
|
5624
|
-
});
|
5615
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5625
5616
|
const id = deriveMiniMetadataId({
|
5626
5617
|
source,
|
5627
5618
|
chainId,
|
@@ -5920,11 +5911,7 @@ const getMiniMetadata = ({
|
|
5920
5911
|
const source = MODULE_TYPE;
|
5921
5912
|
const chainId = networkId;
|
5922
5913
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5923
|
-
if (specVersion !== systemVersion.spec_version)
|
5924
|
-
networkId,
|
5925
|
-
specVersion,
|
5926
|
-
systemVersion
|
5927
|
-
});
|
5914
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5928
5915
|
const id = deriveMiniMetadataId({
|
5929
5916
|
source,
|
5930
5917
|
chainId,
|
@@ -612,6 +612,10 @@ const getBalanceDefs = addressesByToken => {
|
|
612
612
|
})));
|
613
613
|
};
|
614
614
|
|
615
|
+
// esponse of getStorageAt queries:
|
616
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
617
|
+
// if the storage has no entries in it (ex: Assets on ewx or moonbeam), the response will be an empty array
|
618
|
+
|
615
619
|
const fetchBalances$8 = async ({
|
616
620
|
networkId,
|
617
621
|
tokensWithAddresses,
|
@@ -1493,7 +1497,7 @@ const decodeRpcQueryPack = (queries, result) => {
|
|
1493
1497
|
decodeResult
|
1494
1498
|
}) => {
|
1495
1499
|
const changes = stateKeys.map(stateKey => {
|
1496
|
-
if (!stateKey) return null;
|
1500
|
+
if (!stateKey || !result) return null;
|
1497
1501
|
const change = result.changes.find(([key]) => key === stateKey);
|
1498
1502
|
if (!change) return null;
|
1499
1503
|
return change[1];
|
@@ -1741,8 +1745,8 @@ const fetchTokens$5 = async ({
|
|
1741
1745
|
const metadataCodec = builder.buildStorage("Assets", "Metadata");
|
1742
1746
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [getStorageKeyPrefix("Assets", "Asset")]), connector.send(networkId, "state_getKeys", [getStorageKeyPrefix("Assets", "Metadata")])]);
|
1743
1747
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
1744
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
1745
|
-
const metadataStorageEntries = metadataStorageResults[0].changes;
|
1748
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
1749
|
+
const metadataStorageEntries = metadataStorageResults.length ? metadataStorageResults[0].changes : [];
|
1746
1750
|
const assetByAssetId = keyBy(assetStorageEntries.map(([key, value]) => {
|
1747
1751
|
const [assetId] = assetCodec.keys.dec(key);
|
1748
1752
|
const asset = assetCodec.value.dec(value);
|
@@ -1792,7 +1796,8 @@ const fetchTokens$5 = async ({
|
|
1792
1796
|
// validate results
|
1793
1797
|
.filter(t => {
|
1794
1798
|
const parsed = SubAssetsTokenSchema.safeParse(t);
|
1795
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
1799
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
1800
|
+
|
1796
1801
|
return parsed.success;
|
1797
1802
|
});
|
1798
1803
|
};
|
@@ -2571,11 +2576,7 @@ const getMiniMetadata$5 = ({
|
|
2571
2576
|
const source = MODULE_TYPE$5;
|
2572
2577
|
const chainId = networkId;
|
2573
2578
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2574
|
-
if (specVersion !== systemVersion.spec_version)
|
2575
|
-
networkId,
|
2576
|
-
specVersion,
|
2577
|
-
systemVersion
|
2578
|
-
});
|
2579
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2579
2580
|
const id = deriveMiniMetadataId({
|
2580
2581
|
source,
|
2581
2582
|
chainId,
|
@@ -2893,8 +2894,11 @@ const fetchTokens$4 = async ({
|
|
2893
2894
|
const metadataCodec = builder.buildStorage("ForeignAssets", "Metadata");
|
2894
2895
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([connector.send(networkId, "state_getKeys", [getStorageKeyPrefix("ForeignAssets", "Asset")]), connector.send(networkId, "state_getKeys", [getStorageKeyPrefix("ForeignAssets", "Metadata")])]);
|
2895
2896
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]), connector.send(networkId, "state_queryStorageAt", [allMetadataStorageKeys])]);
|
2896
|
-
|
2897
|
-
|
2897
|
+
|
2898
|
+
// if there is at least one storage entry, the results will be an array with a single object
|
2899
|
+
// some networks avec the pallet with no tokens in it, in which case the response will be an empty array
|
2900
|
+
const assetStorageEntries = assetStorageResults[0]?.changes ?? [];
|
2901
|
+
const metadataStorageEntries = metadataStorageResults[0]?.changes ?? [];
|
2898
2902
|
const assetByOnChainId = keyBy(assetStorageEntries.map(([key, value]) => {
|
2899
2903
|
const [decodedKey] = assetCodec.keys.dec(key);
|
2900
2904
|
const onChainId = papiStringify(decodedKey);
|
@@ -2946,7 +2950,8 @@ const fetchTokens$4 = async ({
|
|
2946
2950
|
// validate results
|
2947
2951
|
.filter(t => {
|
2948
2952
|
const parsed = SubForeignAssetsTokenSchema.safeParse(t);
|
2949
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
2953
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
2954
|
+
|
2950
2955
|
return parsed.success;
|
2951
2956
|
});
|
2952
2957
|
};
|
@@ -2959,11 +2964,7 @@ const getMiniMetadata$4 = ({
|
|
2959
2964
|
const source = MODULE_TYPE$4;
|
2960
2965
|
const chainId = networkId;
|
2961
2966
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
2962
|
-
if (specVersion !== systemVersion.spec_version)
|
2963
|
-
networkId,
|
2964
|
-
specVersion,
|
2965
|
-
systemVersion
|
2966
|
-
});
|
2967
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
2967
2968
|
const id = deriveMiniMetadataId({
|
2968
2969
|
source,
|
2969
2970
|
chainId,
|
@@ -3238,7 +3239,7 @@ const fetchTokens$3 = async ({
|
|
3238
3239
|
const assetsCodec = builder.buildStorage("AssetRegistry", "Assets");
|
3239
3240
|
const allAssetStorageKeys = await connector.send(networkId, "state_getKeys", [getStorageKeyPrefix("AssetRegistry", "Assets")]);
|
3240
3241
|
const assetStorageResults = await connector.send(networkId, "state_queryStorageAt", [allAssetStorageKeys]);
|
3241
|
-
const assetStorageEntries = assetStorageResults[0].changes;
|
3242
|
+
const assetStorageEntries = assetStorageResults.length ? assetStorageResults[0].changes : [];
|
3242
3243
|
const configTokenByAssetId = keyBy(tokens, t => t.onChainId);
|
3243
3244
|
return assetStorageEntries.map(([key, value]) => {
|
3244
3245
|
// parse results
|
@@ -3283,7 +3284,8 @@ const fetchTokens$3 = async ({
|
|
3283
3284
|
// validate results
|
3284
3285
|
.filter(t => {
|
3285
3286
|
const parsed = SubHydrationTokenSchema.safeParse(t);
|
3286
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
3287
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
3288
|
+
|
3287
3289
|
return parsed.success;
|
3288
3290
|
});
|
3289
3291
|
};
|
@@ -3296,11 +3298,7 @@ const getMiniMetadata$3 = ({
|
|
3296
3298
|
const source = MODULE_TYPE$3;
|
3297
3299
|
const chainId = networkId;
|
3298
3300
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
3299
|
-
if (specVersion !== systemVersion.spec_version)
|
3300
|
-
networkId,
|
3301
|
-
specVersion,
|
3302
|
-
systemVersion
|
3303
|
-
});
|
3301
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
3304
3302
|
const id = deriveMiniMetadataId({
|
3305
3303
|
source,
|
3306
3304
|
chainId,
|
@@ -4065,7 +4063,7 @@ const fetchTokens$2 = async ({
|
|
4065
4063
|
const token = assign(nativeToken, tokenConfig);
|
4066
4064
|
const parsed = SubNativeTokenSchema.safeParse(token);
|
4067
4065
|
if (!parsed.success) {
|
4068
|
-
log.warn(`Ignoring invalid token ${MODULE_TYPE
|
4066
|
+
// log.warn(`Ignoring invalid token ${MODULE_TYPE}`, token, parsed.error)
|
4069
4067
|
return [];
|
4070
4068
|
}
|
4071
4069
|
return [parsed.data];
|
@@ -4096,11 +4094,7 @@ const getMiniMetadata$2 = ({
|
|
4096
4094
|
const source = MODULE_TYPE$2;
|
4097
4095
|
const chainId = networkId;
|
4098
4096
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
4099
|
-
if (specVersion !== systemVersion.spec_version)
|
4100
|
-
networkId,
|
4101
|
-
specVersion,
|
4102
|
-
systemVersion
|
4103
|
-
});
|
4097
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
4104
4098
|
const id = deriveMiniMetadataId({
|
4105
4099
|
source,
|
4106
4100
|
chainId,
|
@@ -5595,7 +5589,8 @@ const fetchTokens$1 = async ({
|
|
5595
5589
|
}
|
5596
5590
|
return values(tokenList).filter(t => {
|
5597
5591
|
const parsed = SubPsp22TokenSchema.safeParse(t);
|
5598
|
-
if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE
|
5592
|
+
// if (!parsed.success) log.warn(`Ignoring invalid token ${MODULE_TYPE}`, t)
|
5593
|
+
|
5599
5594
|
return parsed.success;
|
5600
5595
|
});
|
5601
5596
|
};
|
@@ -5608,11 +5603,7 @@ const getMiniMetadata$1 = ({
|
|
5608
5603
|
const source = MODULE_TYPE$1;
|
5609
5604
|
const chainId = networkId;
|
5610
5605
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5611
|
-
if (specVersion !== systemVersion.spec_version)
|
5612
|
-
networkId,
|
5613
|
-
specVersion,
|
5614
|
-
systemVersion
|
5615
|
-
});
|
5606
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5616
5607
|
const id = deriveMiniMetadataId({
|
5617
5608
|
source,
|
5618
5609
|
chainId,
|
@@ -5911,11 +5902,7 @@ const getMiniMetadata = ({
|
|
5911
5902
|
const source = MODULE_TYPE;
|
5912
5903
|
const chainId = networkId;
|
5913
5904
|
const systemVersion = getConstantValue(metadataRpc, "System", "Version");
|
5914
|
-
if (specVersion !== systemVersion.spec_version)
|
5915
|
-
networkId,
|
5916
|
-
specVersion,
|
5917
|
-
systemVersion
|
5918
|
-
});
|
5905
|
+
if (specVersion !== systemVersion.spec_version) throw new Error(`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`);
|
5919
5906
|
const id = deriveMiniMetadataId({
|
5920
5907
|
source,
|
5921
5908
|
chainId,
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@talismn/balances",
|
3
|
-
"version": "0.0.0-pr2075-
|
3
|
+
"version": "0.0.0-pr2075-20250711064604",
|
4
4
|
"author": "Talisman",
|
5
5
|
"homepage": "https://talisman.xyz",
|
6
6
|
"license": "GPL-3.0-or-later",
|
@@ -34,13 +34,13 @@
|
|
34
34
|
"scale-ts": "^1.6.1",
|
35
35
|
"viem": "^2.27.3",
|
36
36
|
"zod": "^3.25.62",
|
37
|
-
"@talismn/chain-connector": "0.0.0-pr2075-
|
38
|
-
"@talismn/chain-connector-evm": "0.0.0-pr2075-
|
39
|
-
"@talismn/
|
40
|
-
"@talismn/
|
41
|
-
"@talismn/
|
42
|
-
"@talismn/
|
43
|
-
"@talismn/
|
37
|
+
"@talismn/chain-connector": "0.0.0-pr2075-20250711064604",
|
38
|
+
"@talismn/chain-connector-evm": "0.0.0-pr2075-20250711064604",
|
39
|
+
"@talismn/sapi": "0.0.0-pr2075-20250711064604",
|
40
|
+
"@talismn/chaindata-provider": "0.0.0-pr2075-20250711064604",
|
41
|
+
"@talismn/scale": "0.0.0-pr2075-20250711064604",
|
42
|
+
"@talismn/token-rates": "0.0.0-pr2075-20250711064604",
|
43
|
+
"@talismn/util": "0.0.0-pr2075-20250711064604"
|
44
44
|
},
|
45
45
|
"devDependencies": {
|
46
46
|
"@polkadot/api-contract": "16.1.2",
|