@talismn/balances 3.0.2 → 3.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +184 -184
- package/dist/index.d.mts.map +1 -1
- package/dist/index.d.ts +179 -179
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +45 -27
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +42 -24
- package/dist/index.mjs.map +1 -1
- package/package.json +15 -15
package/dist/index.js
CHANGED
|
@@ -16,7 +16,7 @@ var __copyProps = (to, from, except, desc) => {
|
|
|
16
16
|
}
|
|
17
17
|
return to;
|
|
18
18
|
};
|
|
19
|
-
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
19
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule || !__hasOwnProp.call(mod, "default") ? __defProp(target, "default", {
|
|
20
20
|
value: mod,
|
|
21
21
|
enumerable: true
|
|
22
22
|
}) : target, mod));
|
|
@@ -45,8 +45,8 @@ let _metaplex_foundation_umi = require("@metaplex-foundation/umi");
|
|
|
45
45
|
let _solana_program_token_2022 = require("@solana-program/token-2022");
|
|
46
46
|
let _polkadot_api_substrate_bindings = require("@polkadot-api/substrate-bindings");
|
|
47
47
|
let _polkadot_api_utils = require("@polkadot-api/utils");
|
|
48
|
-
let
|
|
49
|
-
|
|
48
|
+
let lodash_es_upperFirst = require("lodash-es/upperFirst");
|
|
49
|
+
lodash_es_upperFirst = __toESM(lodash_es_upperFirst);
|
|
50
50
|
let scale_ts = require("scale-ts");
|
|
51
51
|
let _talismn_sapi = require("@talismn/sapi");
|
|
52
52
|
//#region src/configureBigNumber.ts
|
|
@@ -1736,7 +1736,8 @@ const getCachedScaleBuilder = (miniMetadata) => {
|
|
|
1736
1736
|
}
|
|
1737
1737
|
let builder = null;
|
|
1738
1738
|
try {
|
|
1739
|
-
|
|
1739
|
+
const metadata = (0, _talismn_scale.unifyMetadata)((0, _talismn_scale.decAnyMetadata)(miniMetadata.data));
|
|
1740
|
+
builder = (0, _talismn_scale.getDynamicBuilder)((0, _talismn_scale.getLookupFn)(metadata));
|
|
1740
1741
|
} catch (cause) {
|
|
1741
1742
|
log_default.error(`Failed to build scale builder for chain ${miniMetadata.chainId}`, cause);
|
|
1742
1743
|
}
|
|
@@ -3690,7 +3691,8 @@ const fetchBalances$6 = async ({ networkId, tokensWithAddresses, connector, mini
|
|
|
3690
3691
|
}))
|
|
3691
3692
|
};
|
|
3692
3693
|
}
|
|
3693
|
-
const
|
|
3694
|
+
const queries = buildQueries$2(networkId, balanceDefs, miniMetadata);
|
|
3695
|
+
const balances = await fetchRpcQueryPack(connector, networkId, queries);
|
|
3694
3696
|
return balanceDefs.reduce((acc, def) => {
|
|
3695
3697
|
const balance = balances.find((b) => b?.address === def.address && b?.tokenId === def.token.id);
|
|
3696
3698
|
if (balance) acc.success.push(balance);
|
|
@@ -4222,7 +4224,7 @@ const fetchRootStakeHolds = async (connector, networkId, metadataRpc, rootPairs,
|
|
|
4222
4224
|
};
|
|
4223
4225
|
const fetchUnlockInterval = async (connector, networkId, unifiedMetadata, builder, at) => {
|
|
4224
4226
|
const storageCoder = builder.buildStorage("SubtensorModule", "RootStakeUnlockInterval");
|
|
4225
|
-
const
|
|
4227
|
+
const query = {
|
|
4226
4228
|
stateKeys: [storageCoder.keys.enc()],
|
|
4227
4229
|
decodeResult: (changes) => {
|
|
4228
4230
|
const encoded = changes[0] ?? getUnlockIntervalFallback(unifiedMetadata, networkId);
|
|
@@ -4230,7 +4232,8 @@ const fetchUnlockInterval = async (connector, networkId, unifiedMetadata, builde
|
|
|
4230
4232
|
if (decoded === null) throw new Error(`Failed to decode RootStakeUnlockInterval on ${networkId}`);
|
|
4231
4233
|
return decoded;
|
|
4232
4234
|
}
|
|
4233
|
-
}
|
|
4235
|
+
};
|
|
4236
|
+
const [interval] = await fetchRpcQueryPack(connector, networkId, [query], at);
|
|
4234
4237
|
return interval ?? 0n;
|
|
4235
4238
|
};
|
|
4236
4239
|
const getUnlockIntervalFallback = (unifiedMetadata, networkId) => {
|
|
@@ -4254,7 +4257,7 @@ const fetchLastStakeBlocks = async (connector, networkId, builder, rootPairs, at
|
|
|
4254
4257
|
}
|
|
4255
4258
|
};
|
|
4256
4259
|
const storageCoder = builder.buildStorage("SubtensorModule", "LastColdkeyHotkeyStakeBlock");
|
|
4257
|
-
const
|
|
4260
|
+
const queries = rootPairs.map(({ address, hotkey }) => {
|
|
4258
4261
|
let stateKey;
|
|
4259
4262
|
try {
|
|
4260
4263
|
stateKey = storageCoder.keys.enc(address, hotkey);
|
|
@@ -4280,7 +4283,8 @@ const fetchLastStakeBlocks = async (connector, networkId, builder, rootPairs, at
|
|
|
4280
4283
|
};
|
|
4281
4284
|
}
|
|
4282
4285
|
};
|
|
4283
|
-
})
|
|
4286
|
+
});
|
|
4287
|
+
const [currentBlock, ...lastStakeBlocks] = await fetchRpcQueryPack(connector, networkId, [currentBlockQuery, ...queries], at);
|
|
4284
4288
|
return {
|
|
4285
4289
|
currentBlock,
|
|
4286
4290
|
lastStakeBlocks
|
|
@@ -4534,7 +4538,8 @@ const fetchTransferableTokensMap = async (connector, metadata, networkId) => {
|
|
|
4534
4538
|
const transferToggleCodec = builder.buildStorage("SubtensorModule", "TransferToggle");
|
|
4535
4539
|
const transferToggleKeys = await fetchStorageKeysPaged(connector, networkId, (0, _talismn_scale.getStorageKeyPrefix)("SubtensorModule", "TransferToggle"));
|
|
4536
4540
|
const transferToggleResults = await connector.send(networkId, "state_queryStorageAt", [transferToggleKeys]);
|
|
4537
|
-
|
|
4541
|
+
const transferToggleEntries = transferToggleResults.length ? transferToggleResults[0].changes : [];
|
|
4542
|
+
return (0, lodash_es.fromPairs)(transferToggleEntries.map(([key, value]) => {
|
|
4538
4543
|
const [netuid] = transferToggleCodec.keys.dec(key);
|
|
4539
4544
|
return [netuid, transferToggleCodec.value.dec(value)];
|
|
4540
4545
|
}));
|
|
@@ -4677,11 +4682,13 @@ const classifyValue = (previous, next) => {
|
|
|
4677
4682
|
if (previousLock?.type !== nextLock?.type || previousLock?.hotkey !== nextLock?.hotkey || previousLock?.lockType !== nextLock?.lockType) return changed("conviction lock meta");
|
|
4678
4683
|
if (previousMeta?.rootStakeHold?.unlockAtBlock !== nextMeta?.rootStakeHold?.unlockAtBlock) return changed("root stake hold meta");
|
|
4679
4684
|
let drift = false;
|
|
4680
|
-
if (previous.amount !== next.amount)
|
|
4681
|
-
if (
|
|
4682
|
-
|
|
4683
|
-
|
|
4684
|
-
|
|
4685
|
+
if (previous.amount !== next.amount) {
|
|
4686
|
+
if (previous.label === "Claimable rewards") {
|
|
4687
|
+
if (!isWithinDriftTolerance(previous.amount, next.amount, CLAIM_DRIFT_TOLERANCE_BPS)) drift = true;
|
|
4688
|
+
} else if (previousLock) drift = true;
|
|
4689
|
+
else if (isWithinDriftTolerance(previous.amount, next.amount, STAKE_DRIFT_TOLERANCE_BPS)) drift = true;
|
|
4690
|
+
else return changed(`amount ${previous.amount}→${next.amount}`);
|
|
4691
|
+
}
|
|
4685
4692
|
return { equivalence: drift ? "drift" : "equal" };
|
|
4686
4693
|
};
|
|
4687
4694
|
const keyOf = (value) => `${value.type}|${value.label}`;
|
|
@@ -4887,7 +4894,8 @@ const fetchBalances$4 = async ({ networkId, tokensWithAddresses, connector, mini
|
|
|
4887
4894
|
}))
|
|
4888
4895
|
};
|
|
4889
4896
|
}
|
|
4890
|
-
const
|
|
4897
|
+
const queries = buildQueries$1(networkId, balanceDefs, miniMetadata);
|
|
4898
|
+
const balances = await fetchRpcQueryPack(connector, networkId, queries);
|
|
4891
4899
|
return balanceDefs.reduce((acc, def) => {
|
|
4892
4900
|
const balance = balances.find((b) => b?.address === def.address && b?.tokenId === def.token.id);
|
|
4893
4901
|
if (balance) acc.success.push(balance);
|
|
@@ -5153,7 +5161,7 @@ const fetchBalances$3 = async ({ networkId, tokensWithAddresses, connector, mini
|
|
|
5153
5161
|
const addresses = (0, lodash_es.uniq)(balanceDefs.map((def) => def.address));
|
|
5154
5162
|
try {
|
|
5155
5163
|
const res = await Promise.all(addresses.map((address) => fetchRuntimeCallResult(connector, networkId, miniMetadata.data, "CurrenciesApi", "accounts", [address])));
|
|
5156
|
-
const
|
|
5164
|
+
const fetchedBalances = addresses.flatMap((address, index) => {
|
|
5157
5165
|
return res[index].map(([onChainId, balance]) => ({
|
|
5158
5166
|
address,
|
|
5159
5167
|
onChainId,
|
|
@@ -5161,7 +5169,8 @@ const fetchBalances$3 = async ({ networkId, tokensWithAddresses, connector, mini
|
|
|
5161
5169
|
reserved: balance.reserved.toString(),
|
|
5162
5170
|
frozen: balance.frozen.toString()
|
|
5163
5171
|
})).filter((b) => b.onChainId !== void 0);
|
|
5164
|
-
})
|
|
5172
|
+
});
|
|
5173
|
+
const balancesByKey = (0, lodash_es.keyBy)(fetchedBalances, (b) => `${b.address}:${b.onChainId}`);
|
|
5165
5174
|
return {
|
|
5166
5175
|
success: tokensWithAddresses.reduce((acc, [token, addresses]) => {
|
|
5167
5176
|
if (token.type === MODULE_TYPE$3) for (const address of addresses) {
|
|
@@ -5427,7 +5436,7 @@ const getLockTitle = (lock, { balance } = {}) => {
|
|
|
5427
5436
|
if (lock.label === "fees") return "Locked (Fees)";
|
|
5428
5437
|
if (lock.label === "misc") return "Locked";
|
|
5429
5438
|
if (lock.label.startsWith("other")) return "Locked";
|
|
5430
|
-
return (0,
|
|
5439
|
+
return (0, lodash_es_upperFirst.default)(lock.label);
|
|
5431
5440
|
};
|
|
5432
5441
|
//#endregion
|
|
5433
5442
|
//#region src/modules/substrate-native/queries/buildBaseQueries.ts
|
|
@@ -5602,12 +5611,13 @@ const nompoolAccountId = (palletId, poolId, index) => {
|
|
|
5602
5611
|
const encIndex = new Uint8Array([index]);
|
|
5603
5612
|
const encPoolId = scale_ts.u32.enc(typeof poolId === "string" ? parseInt(poolId, 10) : poolId);
|
|
5604
5613
|
const remainingBytes = 32 - (encModPrefix.length + encPalletId.length + encIndex.length + encPoolId.length);
|
|
5614
|
+
const encEmptyH256 = new Uint8Array(remainingBytes);
|
|
5605
5615
|
const bytes = (0, _polkadot_api_utils.mergeUint8)([
|
|
5606
5616
|
encModPrefix,
|
|
5607
5617
|
encPalletId,
|
|
5608
5618
|
encIndex,
|
|
5609
5619
|
encPoolId,
|
|
5610
|
-
|
|
5620
|
+
encEmptyH256
|
|
5611
5621
|
]);
|
|
5612
5622
|
return (0, _polkadot_api_substrate_bindings.AccountId)().dec(bytes);
|
|
5613
5623
|
};
|
|
@@ -5735,8 +5745,11 @@ const fetchBalances$2 = async ({ networkId, tokensWithAddresses, connector, mini
|
|
|
5735
5745
|
}))
|
|
5736
5746
|
};
|
|
5737
5747
|
}
|
|
5748
|
+
const baseQueries = buildBaseQueries(networkId, balanceDefs, miniMetadata);
|
|
5749
|
+
const partialBalances = await fetchRpcQueryPack(connector, networkId, baseQueries);
|
|
5750
|
+
const nomPoolQueries = buildNomPoolQueries(networkId, partialBalances, miniMetadata);
|
|
5738
5751
|
return {
|
|
5739
|
-
success: await fetchRpcQueryPack(connector, networkId,
|
|
5752
|
+
success: await fetchRpcQueryPack(connector, networkId, nomPoolQueries),
|
|
5740
5753
|
errors: []
|
|
5741
5754
|
};
|
|
5742
5755
|
};
|
|
@@ -5747,7 +5760,7 @@ const fetchTokens$2 = async ({ networkId, tokens, connector, miniMetadata }) =>
|
|
|
5747
5760
|
const { tokenSymbol: symbol, tokenDecimals: decimals } = await getChainProperties(connector, networkId);
|
|
5748
5761
|
if (!miniMetadata.extra.existentialDeposit) log_default.warn(`Substrate native module: existentialDeposit is undefined for ${networkId}, using 0`);
|
|
5749
5762
|
const tokenConfig = tokens[0];
|
|
5750
|
-
const
|
|
5763
|
+
const nativeToken = {
|
|
5751
5764
|
id: (0, _talismn_chaindata_provider.subNativeTokenId)(networkId),
|
|
5752
5765
|
type: "substrate-native",
|
|
5753
5766
|
platform: "polkadot",
|
|
@@ -5757,7 +5770,8 @@ const fetchTokens$2 = async ({ networkId, tokens, connector, miniMetadata }) =>
|
|
|
5757
5770
|
name: symbol,
|
|
5758
5771
|
decimals,
|
|
5759
5772
|
existentialDeposit: miniMetadata.extra.existentialDeposit ?? "0"
|
|
5760
|
-
}
|
|
5773
|
+
};
|
|
5774
|
+
const token = (0, lodash_es.assign)(nativeToken, tokenConfig);
|
|
5761
5775
|
const parsed = _talismn_chaindata_provider.SubNativeTokenSchema.safeParse(token);
|
|
5762
5776
|
if (!parsed.success) return [];
|
|
5763
5777
|
return [parsed.data];
|
|
@@ -5923,7 +5937,8 @@ const subscribeBalances$2 = ({ networkId, tokensWithAddresses, connector, miniMe
|
|
|
5923
5937
|
await (0, _talismn_util.yieldToEventLoop)();
|
|
5924
5938
|
return buildBaseQueries(networkId, balanceDefs, miniMetadata);
|
|
5925
5939
|
}).pipe((0, rxjs.switchMap)((baseQueries) => getRpcQueryPack$(connector, networkId, baseQueries)), (0, rxjs.switchMap)((partialBalances) => {
|
|
5926
|
-
|
|
5940
|
+
const nomPoolQueries = buildNomPoolQueries(networkId, partialBalances, miniMetadata);
|
|
5941
|
+
return getRpcQueryPack$(connector, networkId, nomPoolQueries);
|
|
5927
5942
|
}), (0, rxjs.map)((balances) => ({
|
|
5928
5943
|
success: balances,
|
|
5929
5944
|
errors: []
|
|
@@ -6697,7 +6712,8 @@ const fetchBalances = async ({ networkId, tokensWithAddresses, connector, miniMe
|
|
|
6697
6712
|
}))
|
|
6698
6713
|
};
|
|
6699
6714
|
}
|
|
6700
|
-
const
|
|
6715
|
+
const queries = buildQueries(networkId, balanceDefs, miniMetadata);
|
|
6716
|
+
const balances = await fetchRpcQueryPack(connector, networkId, queries);
|
|
6701
6717
|
return balanceDefs.reduce((acc, def) => {
|
|
6702
6718
|
const balance = balances.find((b) => b?.address === def.address && b?.tokenId === def.token.id);
|
|
6703
6719
|
if (balance) acc.success.push(balance);
|
|
@@ -7090,7 +7106,9 @@ var BalancesProvider = class {
|
|
|
7090
7106
|
return getDetectedTokensIds$(address);
|
|
7091
7107
|
}
|
|
7092
7108
|
getNetworkBalances$(networkId, addressesByTokenId) {
|
|
7093
|
-
|
|
7109
|
+
const network$ = this.#chaindataProvider.getNetworkById$(networkId);
|
|
7110
|
+
const tokensMapById$ = this.#chaindataProvider.getTokensMapById$();
|
|
7111
|
+
return (0, rxjs.combineLatest)([network$, tokensMapById$]).pipe((0, rxjs.map)(([network, tokensMapById]) => ({
|
|
7094
7112
|
network,
|
|
7095
7113
|
tokens: (0, lodash_es.keys)(addressesByTokenId).map((tokenId) => tokensMapById[tokenId])
|
|
7096
7114
|
})), (0, rxjs.distinctUntilChanged)((a, b) => a.network === b.network && a.tokens.every((token, i) => token === b.tokens[i])), (0, rxjs.switchMap)(({ network, tokens }) => {
|
|
@@ -7465,7 +7483,7 @@ const getStaleVariant = (balance) => {
|
|
|
7465
7483
|
}
|
|
7466
7484
|
return variant;
|
|
7467
7485
|
};
|
|
7468
|
-
const LIVE_SEED_MAX_AGE_MS =
|
|
7486
|
+
const LIVE_SEED_MAX_AGE_MS = 3e5;
|
|
7469
7487
|
const liveVariants = /* @__PURE__ */ new WeakMap();
|
|
7470
7488
|
const seededLiveVariants = /* @__PURE__ */ new WeakSet();
|
|
7471
7489
|
const getLiveVariant = (balance) => {
|