@talismn/balances 3.0.1 → 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.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 lodash_es_upperFirst_js = require("lodash-es/upperFirst.js");
49
- lodash_es_upperFirst_js = __toESM(lodash_es_upperFirst_js);
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
- builder = (0, _talismn_scale.getDynamicBuilder)((0, _talismn_scale.getLookupFn)((0, _talismn_scale.unifyMetadata)((0, _talismn_scale.decAnyMetadata)(miniMetadata.data))));
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 balances = await fetchRpcQueryPack(connector, networkId, buildQueries$2(networkId, balanceDefs, miniMetadata));
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 [interval] = await fetchRpcQueryPack(connector, networkId, [{
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
- }], at);
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 [currentBlock, ...lastStakeBlocks] = await fetchRpcQueryPack(connector, networkId, [currentBlockQuery, ...rootPairs.map(({ address, hotkey }) => {
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
- })], at);
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
- return (0, lodash_es.fromPairs)((transferToggleResults.length ? transferToggleResults[0].changes : []).map(([key, value]) => {
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) if (previous.label === "Claimable rewards") {
4681
- if (!isWithinDriftTolerance(previous.amount, next.amount, CLAIM_DRIFT_TOLERANCE_BPS)) drift = true;
4682
- } else if (previousLock) drift = true;
4683
- else if (isWithinDriftTolerance(previous.amount, next.amount, STAKE_DRIFT_TOLERANCE_BPS)) drift = true;
4684
- else return changed(`amount ${previous.amount}→${next.amount}`);
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 balances = await fetchRpcQueryPack(connector, networkId, buildQueries$1(networkId, balanceDefs, miniMetadata));
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 balancesByKey = (0, lodash_es.keyBy)(addresses.flatMap((address, index) => {
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
- }), (b) => `${b.address}:${b.onChainId}`);
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, lodash_es_upperFirst_js.default)(lock.label);
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
- new Uint8Array(remainingBytes)
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, buildNomPoolQueries(networkId, await fetchRpcQueryPack(connector, networkId, buildBaseQueries(networkId, balanceDefs, miniMetadata)), miniMetadata)),
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 token = (0, lodash_es.assign)({
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
- }, tokenConfig);
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
- return getRpcQueryPack$(connector, networkId, buildNomPoolQueries(networkId, partialBalances, miniMetadata));
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 balances = await fetchRpcQueryPack(connector, networkId, buildQueries(networkId, balanceDefs, miniMetadata));
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
- return (0, rxjs.combineLatest)([this.#chaindataProvider.getNetworkById$(networkId), this.#chaindataProvider.getTokensMapById$()]).pipe((0, rxjs.map)(([network, tokensMapById]) => ({
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 = 5 * 6e4;
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) => {