@talismn/balances 1.4.0 → 1.5.0
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 +62 -12
- package/dist/index.d.ts +62 -12
- package/dist/index.js +462 -231
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +387 -168
- package/dist/index.mjs.map +1 -1
- package/package.json +17 -16
package/dist/index.mjs
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
// src/configureBigNumber.ts
|
|
2
|
+
import BigNumber from "bignumber.js";
|
|
3
|
+
BigNumber.set({ STRICT: false });
|
|
4
|
+
var configureBigNumber_default = BigNumber;
|
|
5
|
+
|
|
1
6
|
// src/BalancesProvider.ts
|
|
2
7
|
import {
|
|
3
8
|
isNetworkDot,
|
|
@@ -38,7 +43,7 @@ import anylogger from "anylogger";
|
|
|
38
43
|
// package.json
|
|
39
44
|
var package_default = {
|
|
40
45
|
name: "@talismn/balances",
|
|
41
|
-
version: "1.
|
|
46
|
+
version: "1.5.0",
|
|
42
47
|
author: "Talisman",
|
|
43
48
|
homepage: "https://talisman.xyz",
|
|
44
49
|
license: "GPL-3.0-or-later",
|
|
@@ -66,9 +71,9 @@ var package_default = {
|
|
|
66
71
|
},
|
|
67
72
|
dependencies: {
|
|
68
73
|
"@metaplex-foundation/mpl-token-metadata": "^3.4.0",
|
|
69
|
-
"@metaplex-foundation/umi": "^1.
|
|
74
|
+
"@metaplex-foundation/umi": "^1.5.1",
|
|
70
75
|
"@polkadot-api/utils": "0.2.0",
|
|
71
|
-
"@solana/spl-token": "^0.4.
|
|
76
|
+
"@solana/spl-token": "^0.4.14",
|
|
72
77
|
"@solana/web3.js": "^1.98.2",
|
|
73
78
|
"@talismn/chain-connectors": "workspace:*",
|
|
74
79
|
"@talismn/chaindata-provider": "workspace:*",
|
|
@@ -78,21 +83,22 @@ var package_default = {
|
|
|
78
83
|
"@talismn/token-rates": "workspace:*",
|
|
79
84
|
"@talismn/util": "workspace:*",
|
|
80
85
|
anylogger: "^1.0.11",
|
|
81
|
-
"bignumber.js": "^
|
|
82
|
-
"lodash-es": "4.
|
|
86
|
+
"bignumber.js": "^11.1.3",
|
|
87
|
+
"lodash-es": "4.18.1",
|
|
83
88
|
"p-queue": "8.1.0",
|
|
84
89
|
"polkadot-api": "1.23.3",
|
|
85
|
-
rxjs: "^7.8.
|
|
90
|
+
rxjs: "^7.8.2",
|
|
86
91
|
"scale-ts": "^1.6.1",
|
|
87
|
-
viem: "
|
|
88
|
-
zod: "^
|
|
92
|
+
viem: "2.52.2",
|
|
93
|
+
zod: "^4.4.3"
|
|
89
94
|
},
|
|
90
95
|
devDependencies: {
|
|
91
96
|
"@polkadot/api-contract": "16.1.2",
|
|
92
97
|
"@polkadot/types": "16.1.2",
|
|
93
98
|
"@talismn/tsconfig": "workspace:*",
|
|
94
99
|
"@types/lodash-es": "4.17.12",
|
|
95
|
-
|
|
100
|
+
"@types/node": "^24.5.1",
|
|
101
|
+
typescript: "^6.0.3"
|
|
96
102
|
},
|
|
97
103
|
peerDependencies: {
|
|
98
104
|
"@polkadot/api-contract": "*",
|
|
@@ -1019,13 +1025,8 @@ import { assign, omit } from "lodash-es";
|
|
|
1019
1025
|
import z from "zod/v4";
|
|
1020
1026
|
|
|
1021
1027
|
// src/modules/evm-erc20/utils.ts
|
|
1022
|
-
import {
|
|
1023
|
-
|
|
1024
|
-
erc20Abi as erc20Abi2,
|
|
1025
|
-
erc20Abi_bytes32,
|
|
1026
|
-
getContract,
|
|
1027
|
-
hexToString
|
|
1028
|
-
} from "viem";
|
|
1028
|
+
import { isErrorOfName } from "@talismn/util";
|
|
1029
|
+
import { erc20Abi as erc20Abi2, erc20Abi_bytes32, getContract, hexToString } from "viem";
|
|
1029
1030
|
var getErc20ContractData = async (client, contractAddress) => {
|
|
1030
1031
|
try {
|
|
1031
1032
|
const contract = getTypedContract(client, erc20Abi2, contractAddress);
|
|
@@ -1035,7 +1036,7 @@ var getErc20ContractData = async (client, contractAddress) => {
|
|
|
1035
1036
|
contract.read.name()
|
|
1036
1037
|
]);
|
|
1037
1038
|
} catch (e) {
|
|
1038
|
-
if (e
|
|
1039
|
+
if (isErrorOfName(e, "ContractFunctionExecutionError")) {
|
|
1039
1040
|
const contract = getTypedContract(client, erc20Abi_bytes32, contractAddress);
|
|
1040
1041
|
var [bytesSymbol, decimals, nameSymbol] = await Promise.all([
|
|
1041
1042
|
contract.read.symbol(),
|
|
@@ -1252,21 +1253,30 @@ var fetchBalances2 = async ({
|
|
|
1252
1253
|
}
|
|
1253
1254
|
const balanceDefs = getBalanceDefs(tokensWithAddresses);
|
|
1254
1255
|
if (client.chain?.contracts?.multicall3 && balanceDefs.length > 1) {
|
|
1255
|
-
|
|
1256
|
-
|
|
1256
|
+
try {
|
|
1257
|
+
return await fetchWithMulticall(
|
|
1258
|
+
client,
|
|
1259
|
+
balanceDefs,
|
|
1260
|
+
client.chain.contracts.multicall3.address
|
|
1261
|
+
);
|
|
1262
|
+
} catch {
|
|
1263
|
+
}
|
|
1257
1264
|
}
|
|
1258
|
-
return
|
|
1265
|
+
return fetchWithGetBalance(client, balanceDefs);
|
|
1259
1266
|
};
|
|
1260
|
-
var
|
|
1267
|
+
var fetchWithGetBalance = async (client, balanceDefs) => {
|
|
1261
1268
|
if (balanceDefs.length === 0) return { success: [], errors: [] };
|
|
1262
1269
|
const results = await Promise.allSettled(
|
|
1263
1270
|
balanceDefs.map(async ({ token, address }) => {
|
|
1264
1271
|
try {
|
|
1265
|
-
const result = await client.
|
|
1272
|
+
const result = await client.request({
|
|
1273
|
+
method: "eth_getBalance",
|
|
1274
|
+
params: [address, "latest"]
|
|
1275
|
+
});
|
|
1266
1276
|
const balance = {
|
|
1267
1277
|
address,
|
|
1268
1278
|
tokenId: token.id,
|
|
1269
|
-
value: result.toString(),
|
|
1279
|
+
value: BigInt(result).toString(),
|
|
1270
1280
|
source: MODULE_TYPE2,
|
|
1271
1281
|
networkId: parseTokenId2(token.id).networkId,
|
|
1272
1282
|
status: "live"
|
|
@@ -1300,55 +1310,28 @@ var fetchWithoutMulticall = async (client, balanceDefs) => {
|
|
|
1300
1310
|
};
|
|
1301
1311
|
var fetchWithMulticall = async (client, balanceDefs, multicall3Address) => {
|
|
1302
1312
|
if (balanceDefs.length === 0) return { success: [], errors: [] };
|
|
1303
|
-
|
|
1304
|
-
|
|
1305
|
-
|
|
1306
|
-
|
|
1307
|
-
|
|
1308
|
-
|
|
1309
|
-
|
|
1310
|
-
|
|
1311
|
-
|
|
1312
|
-
|
|
1313
|
-
|
|
1314
|
-
|
|
1315
|
-
|
|
1316
|
-
|
|
1317
|
-
|
|
1318
|
-
|
|
1319
|
-
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
acc.errors.push({
|
|
1326
|
-
tokenId: balanceDefs[index].token.id,
|
|
1327
|
-
address: balanceDefs[index].address,
|
|
1328
|
-
error: new BalanceFetchError(
|
|
1329
|
-
`Failed to get balance for token ${balanceDefs[index].token.id} and address ${balanceDefs[index].address} on chain ${client.chain?.id}`,
|
|
1330
|
-
balanceDefs[index].token.id,
|
|
1331
|
-
balanceDefs[index].address,
|
|
1332
|
-
result.error
|
|
1333
|
-
)
|
|
1334
|
-
});
|
|
1335
|
-
}
|
|
1336
|
-
return acc;
|
|
1337
|
-
},
|
|
1338
|
-
{ success: [], errors: [] }
|
|
1339
|
-
);
|
|
1340
|
-
} catch (err) {
|
|
1341
|
-
const errors = balanceDefs.map((balanceDef) => ({
|
|
1342
|
-
tokenId: balanceDef.token.id,
|
|
1343
|
-
address: balanceDef.address,
|
|
1344
|
-
error: new BalanceFetchNetworkError(
|
|
1345
|
-
`Failed to get balances for evm-erc20 tokens on chain ${client.chain?.id}`,
|
|
1346
|
-
String(client.chain?.id),
|
|
1347
|
-
err
|
|
1348
|
-
)
|
|
1349
|
-
}));
|
|
1350
|
-
return { success: [], errors };
|
|
1351
|
-
}
|
|
1313
|
+
const results = await client.multicall({
|
|
1314
|
+
allowFailure: false,
|
|
1315
|
+
contracts: balanceDefs.map(({ address }) => ({
|
|
1316
|
+
address: multicall3Address,
|
|
1317
|
+
abi: abiMulticall,
|
|
1318
|
+
functionName: "getEthBalance",
|
|
1319
|
+
args: [address]
|
|
1320
|
+
}))
|
|
1321
|
+
});
|
|
1322
|
+
return {
|
|
1323
|
+
success: results.map(
|
|
1324
|
+
(value, index) => ({
|
|
1325
|
+
address: balanceDefs[index].address,
|
|
1326
|
+
tokenId: balanceDefs[index].token.id,
|
|
1327
|
+
value: String(value),
|
|
1328
|
+
source: MODULE_TYPE2,
|
|
1329
|
+
networkId: parseTokenId2(balanceDefs[index].token.id).networkId,
|
|
1330
|
+
status: "live"
|
|
1331
|
+
})
|
|
1332
|
+
),
|
|
1333
|
+
errors: []
|
|
1334
|
+
};
|
|
1352
1335
|
};
|
|
1353
1336
|
|
|
1354
1337
|
// src/modules/evm-native/fetchTokens.ts
|
|
@@ -1469,7 +1452,6 @@ var PLATFORM3 = EvmUniswapV2TokenSchema.shape.platform.value;
|
|
|
1469
1452
|
// src/modules/evm-uniswapv2/fetchBalances.ts
|
|
1470
1453
|
import { parseTokenId as parseTokenId3 } from "@talismn/chaindata-provider";
|
|
1471
1454
|
import { isEthereumAddress as isEthereumAddress5 } from "@talismn/crypto";
|
|
1472
|
-
import BigNumber from "bignumber.js";
|
|
1473
1455
|
import { keyBy, uniq } from "lodash-es";
|
|
1474
1456
|
import { getContract as getContract2 } from "viem";
|
|
1475
1457
|
var fetchBalances3 = async ({
|
|
@@ -1561,7 +1543,7 @@ var fetchPoolBalances = async (client, balanceDefs) => {
|
|
|
1561
1543
|
label,
|
|
1562
1544
|
amount
|
|
1563
1545
|
});
|
|
1564
|
-
const ratio =
|
|
1546
|
+
const ratio = configureBigNumber_default(String(balance)).div(totalSupply === 0n ? "1" : String(totalSupply));
|
|
1565
1547
|
acc.success.push({
|
|
1566
1548
|
address,
|
|
1567
1549
|
tokenId: token.id,
|
|
@@ -1593,13 +1575,8 @@ import { assign as assign3, omit as omit2 } from "lodash-es";
|
|
|
1593
1575
|
import z4 from "zod/v4";
|
|
1594
1576
|
|
|
1595
1577
|
// src/modules/evm-uniswapv2/utils.ts
|
|
1596
|
-
import {
|
|
1597
|
-
|
|
1598
|
-
erc20Abi as erc20Abi4,
|
|
1599
|
-
erc20Abi_bytes32 as erc20Abi_bytes322,
|
|
1600
|
-
getContract as getContract3,
|
|
1601
|
-
hexToString as hexToString2
|
|
1602
|
-
} from "viem";
|
|
1578
|
+
import { isErrorOfName as isErrorOfName2 } from "@talismn/util";
|
|
1579
|
+
import { erc20Abi as erc20Abi4, erc20Abi_bytes32 as erc20Abi_bytes322, getContract as getContract3, hexToString as hexToString2 } from "viem";
|
|
1603
1580
|
var getErc20ContractData2 = async (client, contractAddress) => {
|
|
1604
1581
|
try {
|
|
1605
1582
|
const contract = getTypedContract2(client, erc20Abi4, contractAddress);
|
|
@@ -1609,7 +1586,7 @@ var getErc20ContractData2 = async (client, contractAddress) => {
|
|
|
1609
1586
|
contract.read.name()
|
|
1610
1587
|
]);
|
|
1611
1588
|
} catch (e) {
|
|
1612
|
-
if (e
|
|
1589
|
+
if (isErrorOfName2(e, "ContractFunctionExecutionError")) {
|
|
1613
1590
|
const contract = getTypedContract2(client, erc20Abi_bytes322, contractAddress);
|
|
1614
1591
|
var [bytesSymbol, decimals, nameSymbol] = await Promise.all([
|
|
1615
1592
|
contract.read.symbol(),
|
|
@@ -2051,9 +2028,9 @@ var buildNetworkStorageCoders = (chainId, miniMetadata, coders) => {
|
|
|
2051
2028
|
|
|
2052
2029
|
// src/modules/shared/fetchRuntimeCallResult.ts
|
|
2053
2030
|
import { parseMetadataRpc, toHex } from "@talismn/scale";
|
|
2054
|
-
var fetchRuntimeCallResult = async (connector, networkId,
|
|
2031
|
+
var fetchRuntimeCallResult = async (connector, networkId, metadataRpcOrBuilder, apiName, method, args) => {
|
|
2055
2032
|
try {
|
|
2056
|
-
const
|
|
2033
|
+
const builder = typeof metadataRpcOrBuilder === "string" ? parseMetadataRpc(metadataRpcOrBuilder).builder : metadataRpcOrBuilder;
|
|
2057
2034
|
const call = builder.buildRuntimeCall(apiName, method);
|
|
2058
2035
|
const hex = await connector.send(networkId, "state_call", [
|
|
2059
2036
|
`${apiName}_${method}`,
|
|
@@ -2124,17 +2101,17 @@ var decodeRpcQueryPack = (queries, result) => {
|
|
|
2124
2101
|
import { parseMetadataRpc as parseMetadataRpc2 } from "@talismn/scale";
|
|
2125
2102
|
var hasStorageItem = (metadata, palletName, itemName) => {
|
|
2126
2103
|
const pallet = metadata.pallets.find((p) => p.name === palletName);
|
|
2127
|
-
if (!pallet
|
|
2104
|
+
if (!pallet?.storage) return false;
|
|
2128
2105
|
return pallet.storage.items.some((item) => item.name === itemName);
|
|
2129
2106
|
};
|
|
2130
2107
|
var hasStorageItems = (metadata, palletName, itemNames) => {
|
|
2131
2108
|
const pallet = metadata.pallets.find((p) => p.name === palletName);
|
|
2132
|
-
if (!pallet
|
|
2109
|
+
if (!pallet?.storage) return false;
|
|
2133
2110
|
return itemNames.every((itemName) => pallet.storage?.items.some((item) => item.name === itemName));
|
|
2134
2111
|
};
|
|
2135
2112
|
var hasRuntimeApi = (metadata, apiName, method) => {
|
|
2136
2113
|
const api = metadata.apis.find((api2) => api2.name === apiName);
|
|
2137
|
-
if (!api
|
|
2114
|
+
if (!api?.methods) return false;
|
|
2138
2115
|
return api.methods.some((m) => m.name === method);
|
|
2139
2116
|
};
|
|
2140
2117
|
var getConstantValue = (metadataRpc, pallet, constant) => {
|
|
@@ -2300,7 +2277,7 @@ var fetchBalances5 = async ({
|
|
|
2300
2277
|
cached = fetched;
|
|
2301
2278
|
}
|
|
2302
2279
|
}
|
|
2303
|
-
if (!cached
|
|
2280
|
+
if (!cached?.isValid) return;
|
|
2304
2281
|
const token = {
|
|
2305
2282
|
id: tokenId,
|
|
2306
2283
|
type: MODULE_TYPE5,
|
|
@@ -2691,7 +2668,7 @@ var fetchBalances6 = async ({
|
|
|
2691
2668
|
cached = fetched;
|
|
2692
2669
|
}
|
|
2693
2670
|
}
|
|
2694
|
-
if (!cached
|
|
2671
|
+
if (!cached?.isValid) return;
|
|
2695
2672
|
const token = {
|
|
2696
2673
|
id: tokenId,
|
|
2697
2674
|
type: MODULE_TYPE6,
|
|
@@ -3202,7 +3179,7 @@ var fetchTokens7 = async ({
|
|
|
3202
3179
|
|
|
3203
3180
|
// src/modules/substrate-assets/getMiniMetadata.ts
|
|
3204
3181
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION3 } from "@talismn/chaindata-provider";
|
|
3205
|
-
import { compactMetadata as compactMetadata2, encodeMetadata as encodeMetadata2, parseMetadataRpc as
|
|
3182
|
+
import { compactMetadata as compactMetadata2, encodeMetadata as encodeMetadata2, parseMetadataRpc as parseMetadataRpc9 } from "@talismn/scale";
|
|
3206
3183
|
|
|
3207
3184
|
// src/types/balances.ts
|
|
3208
3185
|
import { evmErc20TokenId as evmErc20TokenId2 } from "@talismn/chaindata-provider";
|
|
@@ -3215,7 +3192,6 @@ import {
|
|
|
3215
3192
|
isBigInt,
|
|
3216
3193
|
planckToTokens
|
|
3217
3194
|
} from "@talismn/util";
|
|
3218
|
-
import BigNumber2 from "bignumber.js";
|
|
3219
3195
|
|
|
3220
3196
|
// src/modules/substrate-dtao/alphaPrice.ts
|
|
3221
3197
|
var TAO_DECIMALS = 9n;
|
|
@@ -3232,6 +3208,179 @@ var taoToAlpha = (tao, scaledAlphaPrice) => {
|
|
|
3232
3208
|
if (!tao || !scaledAlphaPrice) return 0n;
|
|
3233
3209
|
return tao * ALPHA_PRICE_SCALE / scaledAlphaPrice;
|
|
3234
3210
|
};
|
|
3211
|
+
var taoToAlphaCeil = (tao, scaledAlphaPrice) => {
|
|
3212
|
+
if (!tao || !scaledAlphaPrice) return 0n;
|
|
3213
|
+
return (tao * ALPHA_PRICE_SCALE + scaledAlphaPrice - 1n) / scaledAlphaPrice;
|
|
3214
|
+
};
|
|
3215
|
+
|
|
3216
|
+
// src/modules/substrate-dtao/convictionLocks.ts
|
|
3217
|
+
import {
|
|
3218
|
+
decodeScale as decodeScale2,
|
|
3219
|
+
parseMetadataRpc as parseMetadataRpc4
|
|
3220
|
+
} from "@talismn/scale";
|
|
3221
|
+
var convictionLockKey = (address, netuid) => `${address}:${netuid}`;
|
|
3222
|
+
var getConvictionLockLabel = (lockType) => lockType === "perpetual" ? "Perpetual Conviction Lock" : "Decaying Conviction Lock";
|
|
3223
|
+
var findDTaoConvictionLock = (locks) => {
|
|
3224
|
+
for (const lock of locks ?? []) {
|
|
3225
|
+
const meta = lock.meta;
|
|
3226
|
+
if (meta?.convictionLock?.type !== "conviction-lock") continue;
|
|
3227
|
+
const lockType = meta.convictionLock.lockType;
|
|
3228
|
+
return {
|
|
3229
|
+
amount: lock.amount.planck,
|
|
3230
|
+
hotkey: meta.convictionLock.hotkey,
|
|
3231
|
+
lockType,
|
|
3232
|
+
label: getConvictionLockLabel(lockType)
|
|
3233
|
+
};
|
|
3234
|
+
}
|
|
3235
|
+
return null;
|
|
3236
|
+
};
|
|
3237
|
+
var toBigIntValue = (value) => {
|
|
3238
|
+
if (typeof value === "bigint") return value;
|
|
3239
|
+
if (value && typeof value === "object" && "bits" in value) {
|
|
3240
|
+
const bits = value.bits;
|
|
3241
|
+
if (typeof bits === "bigint") return bits;
|
|
3242
|
+
}
|
|
3243
|
+
return 0n;
|
|
3244
|
+
};
|
|
3245
|
+
var fetchConvictionLocks = async (connector, networkId, metadataRpc, addresses) => {
|
|
3246
|
+
if (!addresses.length) return [];
|
|
3247
|
+
const { unifiedMetadata, builder } = parseMetadataRpc4(metadataRpc);
|
|
3248
|
+
if (!hasRuntimeApi(unifiedMetadata, "StakeInfoRuntimeApi", "get_coldkey_lock") || !hasStorageItems(unifiedMetadata, "SubtensorModule", ["Lock", "DecayingLock"])) {
|
|
3249
|
+
return [];
|
|
3250
|
+
}
|
|
3251
|
+
try {
|
|
3252
|
+
const lockStorageCoder = builder.buildStorage("SubtensorModule", "Lock");
|
|
3253
|
+
const decayingLockStorageCoder = builder.buildStorage("SubtensorModule", "DecayingLock");
|
|
3254
|
+
const lockStorageKeys = await fetchConvictionLockStorageKeys(
|
|
3255
|
+
connector,
|
|
3256
|
+
networkId,
|
|
3257
|
+
addresses,
|
|
3258
|
+
lockStorageCoder
|
|
3259
|
+
);
|
|
3260
|
+
if (!lockStorageKeys.length) return [];
|
|
3261
|
+
const hotkeyByPair = new Map(
|
|
3262
|
+
lockStorageKeys.map(({ address, netuid, hotkey }) => [
|
|
3263
|
+
convictionLockKey(address, netuid),
|
|
3264
|
+
hotkey
|
|
3265
|
+
])
|
|
3266
|
+
);
|
|
3267
|
+
const [lockModesByPair, lockStates] = await Promise.all([
|
|
3268
|
+
fetchConvictionLockModes(connector, networkId, lockStorageKeys, decayingLockStorageCoder),
|
|
3269
|
+
fetchColdkeyLockStates(connector, networkId, builder, lockStorageKeys)
|
|
3270
|
+
]);
|
|
3271
|
+
return lockStates.flatMap(({ address, netuid, lockState }) => {
|
|
3272
|
+
const amount = lockState?.locked_mass ?? 0n;
|
|
3273
|
+
const convictionRaw = toBigIntValue(lockState?.conviction);
|
|
3274
|
+
if (amount <= 0n && convictionRaw <= 0n) return [];
|
|
3275
|
+
const hotkey = hotkeyByPair.get(convictionLockKey(address, netuid));
|
|
3276
|
+
if (!hotkey) return [];
|
|
3277
|
+
return [
|
|
3278
|
+
{
|
|
3279
|
+
address,
|
|
3280
|
+
netuid,
|
|
3281
|
+
lock: {
|
|
3282
|
+
amount,
|
|
3283
|
+
hotkey,
|
|
3284
|
+
lockType: lockModesByPair.get(convictionLockKey(address, netuid)) ?? "decaying",
|
|
3285
|
+
convictionRaw: convictionRaw.toString()
|
|
3286
|
+
}
|
|
3287
|
+
}
|
|
3288
|
+
];
|
|
3289
|
+
});
|
|
3290
|
+
} catch (cause) {
|
|
3291
|
+
log_default.warn(`Failed to fetch Bittensor conviction locks on ${networkId}`, { cause });
|
|
3292
|
+
return [];
|
|
3293
|
+
}
|
|
3294
|
+
};
|
|
3295
|
+
var fetchConvictionLockStorageKeys = async (connector, networkId, addresses, storageCoder) => {
|
|
3296
|
+
const keysPerAddress = await Promise.all(
|
|
3297
|
+
addresses.map(async (address) => {
|
|
3298
|
+
let keyPrefix;
|
|
3299
|
+
try {
|
|
3300
|
+
keyPrefix = storageCoder.keys.enc(address);
|
|
3301
|
+
} catch (cause) {
|
|
3302
|
+
log_default.warn(
|
|
3303
|
+
`Failed to encode conviction Lock key prefix (address=${address}) on ${networkId}`,
|
|
3304
|
+
{ cause }
|
|
3305
|
+
);
|
|
3306
|
+
return [];
|
|
3307
|
+
}
|
|
3308
|
+
try {
|
|
3309
|
+
const stateKeys = await connector.send(networkId, "state_getKeys", [
|
|
3310
|
+
keyPrefix
|
|
3311
|
+
]);
|
|
3312
|
+
return stateKeys.flatMap((stateKey) => {
|
|
3313
|
+
try {
|
|
3314
|
+
const [, netuid, hotkey] = storageCoder.keys.dec(stateKey);
|
|
3315
|
+
return [{ address, netuid, hotkey }];
|
|
3316
|
+
} catch (cause) {
|
|
3317
|
+
log_default.warn(`Failed to decode conviction Lock key ${stateKey} on ${networkId}`, { cause });
|
|
3318
|
+
return [];
|
|
3319
|
+
}
|
|
3320
|
+
});
|
|
3321
|
+
} catch (cause) {
|
|
3322
|
+
log_default.warn(`Failed to fetch conviction Lock keys (address=${address}) on ${networkId}`, {
|
|
3323
|
+
cause
|
|
3324
|
+
});
|
|
3325
|
+
return [];
|
|
3326
|
+
}
|
|
3327
|
+
})
|
|
3328
|
+
);
|
|
3329
|
+
return keysPerAddress.flat();
|
|
3330
|
+
};
|
|
3331
|
+
var fetchConvictionLockModes = async (connector, networkId, pairs, storageCoder) => {
|
|
3332
|
+
const queries = pairs.map(
|
|
3333
|
+
({ address, netuid }) => {
|
|
3334
|
+
let stateKey = null;
|
|
3335
|
+
try {
|
|
3336
|
+
stateKey = storageCoder.keys.enc(address, netuid);
|
|
3337
|
+
} catch (cause) {
|
|
3338
|
+
log_default.warn(
|
|
3339
|
+
`Failed to encode conviction DecayingLock key (netuid=${netuid}, address=${address}) on ${networkId}`,
|
|
3340
|
+
{ cause }
|
|
3341
|
+
);
|
|
3342
|
+
}
|
|
3343
|
+
const key = convictionLockKey(address, netuid);
|
|
3344
|
+
return {
|
|
3345
|
+
stateKeys: [stateKey],
|
|
3346
|
+
decodeResult: (changes) => {
|
|
3347
|
+
const hexValue = changes[0];
|
|
3348
|
+
if (!hexValue) return [key, "decaying"];
|
|
3349
|
+
const decoded = decodeScale2(
|
|
3350
|
+
storageCoder,
|
|
3351
|
+
hexValue,
|
|
3352
|
+
`Failed to decode DecayingLock for (netuid=${netuid}, address=${address}) on ${networkId}`
|
|
3353
|
+
);
|
|
3354
|
+
return [key, decoded === false ? "perpetual" : "decaying"];
|
|
3355
|
+
}
|
|
3356
|
+
};
|
|
3357
|
+
}
|
|
3358
|
+
);
|
|
3359
|
+
return new Map(await fetchRpcQueryPack(connector, networkId, queries));
|
|
3360
|
+
};
|
|
3361
|
+
var fetchColdkeyLockStates = async (connector, networkId, builder, pairs) => {
|
|
3362
|
+
return Promise.all(
|
|
3363
|
+
pairs.map(async ({ address, netuid }) => {
|
|
3364
|
+
try {
|
|
3365
|
+
const lockState = await fetchRuntimeCallResult(
|
|
3366
|
+
connector,
|
|
3367
|
+
networkId,
|
|
3368
|
+
builder,
|
|
3369
|
+
"StakeInfoRuntimeApi",
|
|
3370
|
+
"get_coldkey_lock",
|
|
3371
|
+
[address, netuid]
|
|
3372
|
+
);
|
|
3373
|
+
return { address, netuid, lockState };
|
|
3374
|
+
} catch (cause) {
|
|
3375
|
+
log_default.warn(
|
|
3376
|
+
`Failed to fetch get_coldkey_lock for (netuid=${netuid}, address=${address}) on ${networkId}`,
|
|
3377
|
+
{ cause }
|
|
3378
|
+
);
|
|
3379
|
+
return { address, netuid, lockState: null };
|
|
3380
|
+
}
|
|
3381
|
+
})
|
|
3382
|
+
);
|
|
3383
|
+
};
|
|
3235
3384
|
|
|
3236
3385
|
// src/modules/substrate-dtao/getDtaoTokenRates.ts
|
|
3237
3386
|
import { subNativeTokenId } from "@talismn/chaindata-provider";
|
|
@@ -3239,7 +3388,14 @@ import {
|
|
|
3239
3388
|
newTokenRates
|
|
3240
3389
|
} from "@talismn/token-rates";
|
|
3241
3390
|
var ONE_ALPHA = 10n ** TAO_DECIMALS;
|
|
3242
|
-
var
|
|
3391
|
+
var getAlphaChange24h = (currency, taoChange24h, alphaPriceChange24h) => {
|
|
3392
|
+
if (typeof alphaPriceChange24h !== "number" || !Number.isFinite(alphaPriceChange24h))
|
|
3393
|
+
return void 0;
|
|
3394
|
+
if (currency === "tao") return alphaPriceChange24h;
|
|
3395
|
+
if (typeof taoChange24h !== "number" || !Number.isFinite(taoChange24h)) return void 0;
|
|
3396
|
+
return ((1 + alphaPriceChange24h / 100) * (1 + taoChange24h / 100) - 1) * 100;
|
|
3397
|
+
};
|
|
3398
|
+
var getDTaoTokenRates = (token, tokenRates, scaledAlphaPrice, alphaPriceChange24h) => {
|
|
3243
3399
|
try {
|
|
3244
3400
|
const taoTokenId = subNativeTokenId(token.networkId);
|
|
3245
3401
|
const taoTokenRates = tokenRates[taoTokenId];
|
|
@@ -3255,8 +3411,7 @@ var getDTaoTokenRates = (token, tokenRates, scaledAlphaPrice) => {
|
|
|
3255
3411
|
alphaRates[currency] = {
|
|
3256
3412
|
price: taoRate.price * priceRatio,
|
|
3257
3413
|
marketCap: taoRate.marketCap ? taoRate.marketCap * priceRatio : void 0,
|
|
3258
|
-
change24h:
|
|
3259
|
-
// cannot be determined from TAO rates alone
|
|
3414
|
+
change24h: getAlphaChange24h(currency, taoRate.change24h, alphaPriceChange24h)
|
|
3260
3415
|
};
|
|
3261
3416
|
}
|
|
3262
3417
|
}
|
|
@@ -3278,7 +3433,7 @@ import {
|
|
|
3278
3433
|
subDTaoTokenId as subDTaoTokenId2,
|
|
3279
3434
|
TokenSchema
|
|
3280
3435
|
} from "@talismn/chaindata-provider";
|
|
3281
|
-
import { decodeScale as
|
|
3436
|
+
import { decodeScale as decodeScale3, parseMetadataRpc as parseMetadataRpc5 } from "@talismn/scale";
|
|
3282
3437
|
import { isNotNil as isNotNil5 } from "@talismn/util";
|
|
3283
3438
|
import { keyBy as keyBy5, uniq as uniq4 } from "lodash-es";
|
|
3284
3439
|
|
|
@@ -3384,6 +3539,7 @@ var fetchBalances8 = async ({
|
|
|
3384
3539
|
[]
|
|
3385
3540
|
)
|
|
3386
3541
|
]);
|
|
3542
|
+
const dynamicInfoByNetuid = keyBy5(dynamicInfos.filter(isNotNil5), (info) => info.netuid);
|
|
3387
3543
|
const rootHotkeys = uniq4(
|
|
3388
3544
|
stakeInfos.flatMap(
|
|
3389
3545
|
([, stakes]) => stakes.filter((stake) => stake.netuid === ROOT_NETUID).map((stake) => stake.hotkey)
|
|
@@ -3403,13 +3559,10 @@ var fetchBalances8 = async ({
|
|
|
3403
3559
|
}
|
|
3404
3560
|
}
|
|
3405
3561
|
}
|
|
3406
|
-
const rootClaimedAmounts =
|
|
3407
|
-
connector,
|
|
3408
|
-
networkId,
|
|
3409
|
-
|
|
3410
|
-
addressHotkeyNetuidPairs
|
|
3411
|
-
) : /* @__PURE__ */ new Map();
|
|
3412
|
-
const dynamicInfoByNetuid = keyBy5(dynamicInfos.filter(isNotNil5), (info) => info.netuid);
|
|
3562
|
+
const [rootClaimedAmounts, convictionLocks] = await Promise.all([
|
|
3563
|
+
addressHotkeyNetuidPairs.length && miniMetadata.data ? fetchRootClaimedAmounts(connector, networkId, miniMetadata.data, addressHotkeyNetuidPairs) : Promise.resolve(/* @__PURE__ */ new Map()),
|
|
3564
|
+
miniMetadata.data ? fetchConvictionLocks(connector, networkId, miniMetadata.data, addresses) : Promise.resolve([])
|
|
3565
|
+
]);
|
|
3413
3566
|
const upsertBalance = (acc, address, tokenId, balance) => {
|
|
3414
3567
|
const key = `${address}:${tokenId}`;
|
|
3415
3568
|
const recordedBalance = acc[key];
|
|
@@ -3420,6 +3573,9 @@ var fetchBalances8 = async ({
|
|
|
3420
3573
|
// If the new balance has pendingRootClaim, use it (it's calculated from current state)
|
|
3421
3574
|
...balance.pendingRootClaim !== void 0 && {
|
|
3422
3575
|
pendingRootClaim: balance.pendingRootClaim
|
|
3576
|
+
},
|
|
3577
|
+
...balance.convictionLock !== void 0 && {
|
|
3578
|
+
convictionLock: balance.convictionLock
|
|
3423
3579
|
}
|
|
3424
3580
|
};
|
|
3425
3581
|
} else {
|
|
@@ -3462,6 +3618,21 @@ var fetchBalances8 = async ({
|
|
|
3462
3618
|
},
|
|
3463
3619
|
{}
|
|
3464
3620
|
);
|
|
3621
|
+
for (const { address, netuid, lock } of convictionLocks) {
|
|
3622
|
+
const dynamicInfo = dynamicInfoByNetuid[netuid];
|
|
3623
|
+
const scaledAlphaPrice = dynamicInfo ? getScaledAlphaPrice(dynamicInfo.alpha_in, dynamicInfo.tao_in) : 0n;
|
|
3624
|
+
const balance = {
|
|
3625
|
+
address,
|
|
3626
|
+
tokenId: subDTaoTokenId2(networkId, netuid),
|
|
3627
|
+
baseTokenId: subDTaoTokenId2(networkId, netuid),
|
|
3628
|
+
stake: 0n,
|
|
3629
|
+
hotkey: lock.hotkey,
|
|
3630
|
+
netuid,
|
|
3631
|
+
scaledAlphaPrice,
|
|
3632
|
+
convictionLock: lock
|
|
3633
|
+
};
|
|
3634
|
+
upsertBalance(balancesRaw, address, balance.tokenId, balance);
|
|
3635
|
+
}
|
|
3465
3636
|
const balances = Object.values(balancesRaw);
|
|
3466
3637
|
const tokensById = keyBy5(
|
|
3467
3638
|
tokensWithAddresses.map(([token]) => token),
|
|
@@ -3469,6 +3640,7 @@ var fetchBalances8 = async ({
|
|
|
3469
3640
|
);
|
|
3470
3641
|
const dynamicTokens = [];
|
|
3471
3642
|
for (const bal of balances) {
|
|
3643
|
+
if (bal.tokenId === bal.baseTokenId) continue;
|
|
3472
3644
|
if (!balanceDefs.some((def) => def.token.id === bal.tokenId)) {
|
|
3473
3645
|
const baseToken = tokensById[bal.baseTokenId];
|
|
3474
3646
|
if (baseToken) {
|
|
@@ -3489,6 +3661,8 @@ var fetchBalances8 = async ({
|
|
|
3489
3661
|
};
|
|
3490
3662
|
const stakeAmount = BigInt(stake?.stake?.toString() ?? "0");
|
|
3491
3663
|
const pendingRootClaimAmount = BigInt(stake?.pendingRootClaim?.toString() ?? "0");
|
|
3664
|
+
const convictionLockAmount = BigInt(stake?.convictionLock?.amount?.toString() ?? "0");
|
|
3665
|
+
const convictionLockConviction = BigInt(stake?.convictionLock?.convictionRaw ?? "0");
|
|
3492
3666
|
const hasZeroStake = stakeAmount === 0n;
|
|
3493
3667
|
const hasPendingRootClaim = pendingRootClaimAmount > 0n;
|
|
3494
3668
|
const balanceValue = {
|
|
@@ -3501,9 +3675,30 @@ var fetchBalances8 = async ({
|
|
|
3501
3675
|
type: "locked",
|
|
3502
3676
|
label: "Pending root claim",
|
|
3503
3677
|
amount: pendingRootClaimAmount.toString(),
|
|
3678
|
+
// The pending claim is not part of the stake (free amount): on-chain it only becomes
|
|
3679
|
+
// stake once claimed (root_claim_on_subnet). Since it was never included in `free`,
|
|
3680
|
+
// it must not be subtracted from it either: flag it so it does not reduce the staked
|
|
3681
|
+
// position's transferable amount.
|
|
3682
|
+
includeInTransferable: true,
|
|
3504
3683
|
meta
|
|
3505
3684
|
};
|
|
3506
3685
|
const values3 = [balanceValue, pendingRootClaimValue];
|
|
3686
|
+
if (stake?.convictionLock && (convictionLockAmount > 0n || convictionLockConviction > 0n)) {
|
|
3687
|
+
const convictionLockMeta = {
|
|
3688
|
+
...meta,
|
|
3689
|
+
convictionLock: {
|
|
3690
|
+
type: "conviction-lock",
|
|
3691
|
+
hotkey: stake.convictionLock.hotkey,
|
|
3692
|
+
lockType: stake.convictionLock.lockType
|
|
3693
|
+
}
|
|
3694
|
+
};
|
|
3695
|
+
values3.push({
|
|
3696
|
+
type: "locked",
|
|
3697
|
+
label: getConvictionLockLabel(stake.convictionLock.lockType),
|
|
3698
|
+
amount: convictionLockAmount.toString(),
|
|
3699
|
+
meta: convictionLockMeta
|
|
3700
|
+
});
|
|
3701
|
+
}
|
|
3507
3702
|
if (hasZeroStake && hasPendingRootClaim) {
|
|
3508
3703
|
values3.push({
|
|
3509
3704
|
type: "extra",
|
|
@@ -3541,7 +3736,7 @@ var fetchBalances8 = async ({
|
|
|
3541
3736
|
}
|
|
3542
3737
|
};
|
|
3543
3738
|
var buildStorageCoder = (metadataRpc, pallet, entry) => {
|
|
3544
|
-
const { builder } =
|
|
3739
|
+
const { builder } = parseMetadataRpc5(metadataRpc);
|
|
3545
3740
|
return builder.buildStorage(pallet, entry);
|
|
3546
3741
|
};
|
|
3547
3742
|
var buildRootClaimableStorageCoder = async (_connector, networkId, metadataRpc) => {
|
|
@@ -3585,7 +3780,7 @@ var buildRootClaimableQueries = (networkId, hotkeys, storageCoder) => {
|
|
|
3585
3780
|
if (!hexValue) {
|
|
3586
3781
|
return [hotkey, /* @__PURE__ */ new Map()];
|
|
3587
3782
|
}
|
|
3588
|
-
const decoded =
|
|
3783
|
+
const decoded = decodeScale3(
|
|
3589
3784
|
storageCoder,
|
|
3590
3785
|
hexValue,
|
|
3591
3786
|
`Failed to decode RootClaimable for hotkey ${hotkey} on ${networkId}`
|
|
@@ -3629,7 +3824,7 @@ var buildRootClaimedQueries = (networkId, addressHotkeyNetuidPairs, storageCoder
|
|
|
3629
3824
|
if (!hexValue) {
|
|
3630
3825
|
return [address, hotkey, netuid, 0n];
|
|
3631
3826
|
}
|
|
3632
|
-
const decoded =
|
|
3827
|
+
const decoded = decodeScale3(
|
|
3633
3828
|
storageCoder,
|
|
3634
3829
|
hexValue,
|
|
3635
3830
|
`Failed to decode RootClaimed for (netuid=${netuid}, hotkey=${hotkey}, address=${address}) on ${networkId}`
|
|
@@ -3688,7 +3883,7 @@ import {
|
|
|
3688
3883
|
SubDTaoTokenSchema as SubDTaoTokenSchema2,
|
|
3689
3884
|
subDTaoTokenId as subDTaoTokenId3
|
|
3690
3885
|
} from "@talismn/chaindata-provider";
|
|
3691
|
-
import { getStorageKeyPrefix as getStorageKeyPrefix2, parseMetadataRpc as
|
|
3886
|
+
import { getStorageKeyPrefix as getStorageKeyPrefix2, parseMetadataRpc as parseMetadataRpc6 } from "@talismn/scale";
|
|
3692
3887
|
import { isNotNil as isNotNil6 } from "@talismn/util";
|
|
3693
3888
|
import { fromPairs } from "lodash-es";
|
|
3694
3889
|
var NATIVE_TOKEN_SYMBOLS = {
|
|
@@ -3742,7 +3937,7 @@ var fetchTokens8 = async ({
|
|
|
3742
3937
|
});
|
|
3743
3938
|
};
|
|
3744
3939
|
var fetchTransferableTokensMap = async (connector, metadata, networkId) => {
|
|
3745
|
-
const { builder } =
|
|
3940
|
+
const { builder } = parseMetadataRpc6(metadata);
|
|
3746
3941
|
const transferToggleCodec = builder.buildStorage("SubtensorModule", "TransferToggle");
|
|
3747
3942
|
const transferToggleKeys = await connector.send(networkId, "state_getKeys", [
|
|
3748
3943
|
getStorageKeyPrefix2("SubtensorModule", "TransferToggle")
|
|
@@ -3764,7 +3959,7 @@ var fetchTransferableTokensMap = async (connector, metadata, networkId) => {
|
|
|
3764
3959
|
|
|
3765
3960
|
// src/modules/substrate-dtao/getMiniMetadata.ts
|
|
3766
3961
|
import { MINIMETADATA_VERSION } from "@talismn/chaindata-provider";
|
|
3767
|
-
import { compactMetadata, encodeMetadata, parseMetadataRpc as
|
|
3962
|
+
import { compactMetadata, encodeMetadata, parseMetadataRpc as parseMetadataRpc7 } from "@talismn/scale";
|
|
3768
3963
|
var getMiniMetadata7 = ({
|
|
3769
3964
|
networkId,
|
|
3770
3965
|
specVersion,
|
|
@@ -3778,7 +3973,7 @@ var getMiniMetadata7 = ({
|
|
|
3778
3973
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
3779
3974
|
);
|
|
3780
3975
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
3781
|
-
const { unifiedMetadata } =
|
|
3976
|
+
const { unifiedMetadata } = parseMetadataRpc7(metadataRpc);
|
|
3782
3977
|
if (unifiedMetadata.version < 14)
|
|
3783
3978
|
throw new Error(
|
|
3784
3979
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -3794,16 +3989,21 @@ var getMiniMetadata7 = ({
|
|
|
3794
3989
|
};
|
|
3795
3990
|
};
|
|
3796
3991
|
var getData = (metadataRpc) => {
|
|
3797
|
-
const { metadata, unifiedMetadata } =
|
|
3992
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc7(metadataRpc);
|
|
3798
3993
|
const isBittensor = unifiedMetadata.pallets.some(({ name }) => name === "SubtensorModule");
|
|
3799
3994
|
if (!isBittensor) return null;
|
|
3800
3995
|
compactMetadata(
|
|
3801
3996
|
metadata,
|
|
3802
|
-
[
|
|
3997
|
+
[
|
|
3998
|
+
{
|
|
3999
|
+
pallet: "SubtensorModule",
|
|
4000
|
+
items: ["TransferToggle", "RootClaimable", "RootClaimed", "Lock", "DecayingLock"]
|
|
4001
|
+
}
|
|
4002
|
+
],
|
|
3803
4003
|
[
|
|
3804
4004
|
{
|
|
3805
4005
|
runtimeApi: "StakeInfoRuntimeApi",
|
|
3806
|
-
methods: ["get_stake_info_for_coldkeys"]
|
|
4006
|
+
methods: ["get_stake_info_for_coldkeys", "get_coldkey_lock"]
|
|
3807
4007
|
},
|
|
3808
4008
|
{
|
|
3809
4009
|
runtimeApi: "SubnetInfoRuntimeApi",
|
|
@@ -3817,7 +4017,7 @@ var getData = (metadataRpc) => {
|
|
|
3817
4017
|
// src/modules/substrate-dtao/getTransferCallData.ts
|
|
3818
4018
|
import { mergeUint8 } from "@polkadot-api/utils";
|
|
3819
4019
|
import { isTokenOfType as isTokenOfType7, parseSubDTaoTokenId } from "@talismn/chaindata-provider";
|
|
3820
|
-
import { parseMetadataRpc as
|
|
4020
|
+
import { parseMetadataRpc as parseMetadataRpc8 } from "@talismn/scale";
|
|
3821
4021
|
import { Binary } from "polkadot-api";
|
|
3822
4022
|
var getTransferCallData7 = ({
|
|
3823
4023
|
from: from2,
|
|
@@ -3830,7 +4030,7 @@ var getTransferCallData7 = ({
|
|
|
3830
4030
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE8}.`);
|
|
3831
4031
|
const { netuid: subnetId, hotkey } = parseSubDTaoTokenId(token.id);
|
|
3832
4032
|
if (!hotkey) throw new Error(`Missing hotkey`);
|
|
3833
|
-
const { builder } =
|
|
4033
|
+
const { builder } = parseMetadataRpc8(metadataRpc);
|
|
3834
4034
|
const { codec, location } = builder.buildCall("SubtensorModule", "transfer_stake");
|
|
3835
4035
|
const args = codec.enc({
|
|
3836
4036
|
origin_netuid: subnetId,
|
|
@@ -3857,6 +4057,7 @@ var subscribeBalances7 = ({
|
|
|
3857
4057
|
miniMetadata
|
|
3858
4058
|
}) => {
|
|
3859
4059
|
if (!tokensWithAddresses.length) return of8({ success: [], errors: [] });
|
|
4060
|
+
const balanceDefs = getBalanceDefs(tokensWithAddresses);
|
|
3860
4061
|
return new Observable8((subscriber) => {
|
|
3861
4062
|
const abortController = new AbortController();
|
|
3862
4063
|
const poll = async () => {
|
|
@@ -3870,8 +4071,8 @@ var subscribeBalances7 = ({
|
|
|
3870
4071
|
});
|
|
3871
4072
|
if (abortController.signal.aborted) return;
|
|
3872
4073
|
subscriber.next(balances);
|
|
3873
|
-
setTimeout(poll, SUBSCRIPTION_INTERVAL7);
|
|
3874
4074
|
} catch (error) {
|
|
4075
|
+
if (abortController.signal.aborted) return;
|
|
3875
4076
|
log_default.error("Error", {
|
|
3876
4077
|
module: MODULE_TYPE8,
|
|
3877
4078
|
networkId,
|
|
@@ -3879,8 +4080,17 @@ var subscribeBalances7 = ({
|
|
|
3879
4080
|
addressesByToken: tokensWithAddresses,
|
|
3880
4081
|
error
|
|
3881
4082
|
});
|
|
3882
|
-
|
|
4083
|
+
const fetchError = error instanceof Error ? error : new Error(String(error));
|
|
4084
|
+
subscriber.next({
|
|
4085
|
+
success: [],
|
|
4086
|
+
errors: balanceDefs.map((def) => ({
|
|
4087
|
+
tokenId: def.token.id,
|
|
4088
|
+
address: def.address,
|
|
4089
|
+
error: fetchError
|
|
4090
|
+
}))
|
|
4091
|
+
});
|
|
3883
4092
|
}
|
|
4093
|
+
if (!abortController.signal.aborted) setTimeout(poll, SUBSCRIPTION_INTERVAL7);
|
|
3884
4094
|
};
|
|
3885
4095
|
poll();
|
|
3886
4096
|
return () => {
|
|
@@ -4183,9 +4393,9 @@ var Balance = class {
|
|
|
4183
4393
|
const totalSupply = extras.find((extra2) => extra2.label === "totalSupply")?.amount ?? "0";
|
|
4184
4394
|
const reserve0 = extras.find((extra2) => extra2.label === "reserve0")?.amount ?? "0";
|
|
4185
4395
|
const reserve1 = extras.find((extra2) => extra2.label === "reserve1")?.amount ?? "0";
|
|
4186
|
-
const totalSupplyTokens =
|
|
4187
|
-
const reserve0Tokens =
|
|
4188
|
-
const reserve1Tokens =
|
|
4396
|
+
const totalSupplyTokens = configureBigNumber_default(totalSupply).times(10 ** (-1 * decimals));
|
|
4397
|
+
const reserve0Tokens = configureBigNumber_default(reserve0).times(10 ** (-1 * decimals0));
|
|
4398
|
+
const reserve1Tokens = configureBigNumber_default(reserve1).times(10 ** (-1 * decimals1));
|
|
4189
4399
|
const rates0Currencies = new Set(Object.keys(rates0));
|
|
4190
4400
|
const rates1Currencies = new Set(Object.keys(rates1));
|
|
4191
4401
|
const currencies = [...rates0Currencies].filter((c) => rates1Currencies.has(c));
|
|
@@ -4193,7 +4403,7 @@ var Balance = class {
|
|
|
4193
4403
|
(currency) => [
|
|
4194
4404
|
currency,
|
|
4195
4405
|
// tvl (in a given currency) == reserve0*currencyRate0 + reserve1*currencyRate1
|
|
4196
|
-
|
|
4406
|
+
configureBigNumber_default.sum(
|
|
4197
4407
|
reserve0Tokens.times(rates0[currency]?.price ?? 0),
|
|
4198
4408
|
reserve1Tokens.times(rates1[currency]?.price ?? 0)
|
|
4199
4409
|
)
|
|
@@ -4584,7 +4794,7 @@ var getMiniMetadata8 = ({
|
|
|
4584
4794
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
4585
4795
|
);
|
|
4586
4796
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
4587
|
-
const { unifiedMetadata } =
|
|
4797
|
+
const { unifiedMetadata } = parseMetadataRpc9(metadataRpc);
|
|
4588
4798
|
if (unifiedMetadata.version < 14)
|
|
4589
4799
|
throw new Error(
|
|
4590
4800
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -4600,7 +4810,7 @@ var getMiniMetadata8 = ({
|
|
|
4600
4810
|
};
|
|
4601
4811
|
};
|
|
4602
4812
|
var getData2 = (metadataRpc) => {
|
|
4603
|
-
const { metadata, unifiedMetadata } =
|
|
4813
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc9(metadataRpc);
|
|
4604
4814
|
if (!hasStorageItems(unifiedMetadata, "Assets", ["Account", "Asset", "Metadata"])) return null;
|
|
4605
4815
|
compactMetadata2(metadata, [{ pallet: "Assets", items: ["Account", "Asset", "Metadata"] }]);
|
|
4606
4816
|
return encodeMetadata2(metadata);
|
|
@@ -4609,7 +4819,7 @@ var getData2 = (metadataRpc) => {
|
|
|
4609
4819
|
// src/modules/substrate-assets/getTransferCallData.ts
|
|
4610
4820
|
import { mergeUint8 as mergeUint82 } from "@polkadot-api/utils";
|
|
4611
4821
|
import { isTokenOfType as isTokenOfType8 } from "@talismn/chaindata-provider";
|
|
4612
|
-
import { parseMetadataRpc as
|
|
4822
|
+
import { parseMetadataRpc as parseMetadataRpc10 } from "@talismn/scale";
|
|
4613
4823
|
import { Binary as Binary2, Enum } from "polkadot-api";
|
|
4614
4824
|
var getTransferCallData8 = ({
|
|
4615
4825
|
from: from2,
|
|
@@ -4621,7 +4831,7 @@ var getTransferCallData8 = ({
|
|
|
4621
4831
|
}) => {
|
|
4622
4832
|
if (!isTokenOfType8(token, MODULE_TYPE7))
|
|
4623
4833
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE7}.`);
|
|
4624
|
-
const { builder } =
|
|
4834
|
+
const { builder } = parseMetadataRpc10(metadataRpc);
|
|
4625
4835
|
const method = getTransferMethod(type);
|
|
4626
4836
|
const { codec, location } = builder.buildCall("Assets", method);
|
|
4627
4837
|
const args = getEncodedArgs(method, token.assetId, to, value, codec);
|
|
@@ -4752,7 +4962,7 @@ var MODULE_TYPE9 = SubForeignAssetsTokenSchema.shape.type.value;
|
|
|
4752
4962
|
var PLATFORM9 = SubForeignAssetsTokenSchema.shape.platform.value;
|
|
4753
4963
|
|
|
4754
4964
|
// src/modules/substrate-foreignassets/buildQueries.ts
|
|
4755
|
-
import { decodeScale as
|
|
4965
|
+
import { decodeScale as decodeScale4, papiParse } from "@talismn/scale";
|
|
4756
4966
|
import { isNotNil as isNotNil7 } from "@talismn/util";
|
|
4757
4967
|
var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
4758
4968
|
const networkStorageCoders = buildNetworkStorageCoders(networkId, miniMetadata, {
|
|
@@ -4775,7 +4985,7 @@ var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
4775
4985
|
return null;
|
|
4776
4986
|
}
|
|
4777
4987
|
const decodeResult = (changes) => {
|
|
4778
|
-
const decoded =
|
|
4988
|
+
const decoded = decodeScale4(
|
|
4779
4989
|
scaleCoder,
|
|
4780
4990
|
changes[0],
|
|
4781
4991
|
`Failed to decode substrate-assets balance on chain ${networkId}`
|
|
@@ -4886,7 +5096,7 @@ import {
|
|
|
4886
5096
|
SubForeignAssetsTokenSchema as SubForeignAssetsTokenSchema2,
|
|
4887
5097
|
subForeignAssetTokenId
|
|
4888
5098
|
} from "@talismn/chaindata-provider";
|
|
4889
|
-
import { getStorageKeyPrefix as getStorageKeyPrefix3, papiStringify, parseMetadataRpc as
|
|
5099
|
+
import { getStorageKeyPrefix as getStorageKeyPrefix3, papiStringify, parseMetadataRpc as parseMetadataRpc11 } from "@talismn/scale";
|
|
4890
5100
|
import { assign as assign8, keyBy as keyBy6, keys as keys2 } from "lodash-es";
|
|
4891
5101
|
var fetchTokens9 = async ({
|
|
4892
5102
|
networkId,
|
|
@@ -4896,7 +5106,7 @@ var fetchTokens9 = async ({
|
|
|
4896
5106
|
}) => {
|
|
4897
5107
|
const anyMiniMetadata = miniMetadata;
|
|
4898
5108
|
if (!anyMiniMetadata?.data) return [];
|
|
4899
|
-
const { builder } =
|
|
5109
|
+
const { builder } = parseMetadataRpc11(anyMiniMetadata.data);
|
|
4900
5110
|
const assetCodec = builder.buildStorage("ForeignAssets", "Asset");
|
|
4901
5111
|
const metadataCodec = builder.buildStorage("ForeignAssets", "Metadata");
|
|
4902
5112
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([
|
|
@@ -4970,7 +5180,7 @@ var fetchTokens9 = async ({
|
|
|
4970
5180
|
|
|
4971
5181
|
// src/modules/substrate-foreignassets/getMiniMetadata.ts
|
|
4972
5182
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION4 } from "@talismn/chaindata-provider";
|
|
4973
|
-
import { compactMetadata as compactMetadata3, encodeMetadata as encodeMetadata3, parseMetadataRpc as
|
|
5183
|
+
import { compactMetadata as compactMetadata3, encodeMetadata as encodeMetadata3, parseMetadataRpc as parseMetadataRpc12 } from "@talismn/scale";
|
|
4974
5184
|
var getMiniMetadata9 = ({
|
|
4975
5185
|
networkId,
|
|
4976
5186
|
specVersion,
|
|
@@ -4984,7 +5194,7 @@ var getMiniMetadata9 = ({
|
|
|
4984
5194
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
4985
5195
|
);
|
|
4986
5196
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
4987
|
-
const { unifiedMetadata } =
|
|
5197
|
+
const { unifiedMetadata } = parseMetadataRpc12(metadataRpc);
|
|
4988
5198
|
if (unifiedMetadata.version < 14)
|
|
4989
5199
|
throw new Error(
|
|
4990
5200
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -5000,7 +5210,7 @@ var getMiniMetadata9 = ({
|
|
|
5000
5210
|
};
|
|
5001
5211
|
};
|
|
5002
5212
|
var getData3 = (metadataRpc) => {
|
|
5003
|
-
const { metadata, unifiedMetadata } =
|
|
5213
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc12(metadataRpc);
|
|
5004
5214
|
if (!hasStorageItems(unifiedMetadata, "ForeignAssets", ["Account", "Asset", "Metadata"]))
|
|
5005
5215
|
return null;
|
|
5006
5216
|
compactMetadata3(metadata, [{ pallet: "ForeignAssets", items: ["Account", "Asset", "Metadata"] }]);
|
|
@@ -5010,7 +5220,7 @@ var getData3 = (metadataRpc) => {
|
|
|
5010
5220
|
// src/modules/substrate-foreignassets/getTransferCallData.ts
|
|
5011
5221
|
import { mergeUint8 as mergeUint83 } from "@polkadot-api/utils";
|
|
5012
5222
|
import { isTokenOfType as isTokenOfType9 } from "@talismn/chaindata-provider";
|
|
5013
|
-
import { papiParse as papiParse2, parseMetadataRpc as
|
|
5223
|
+
import { papiParse as papiParse2, parseMetadataRpc as parseMetadataRpc13 } from "@talismn/scale";
|
|
5014
5224
|
import { Binary as Binary3, Enum as Enum2 } from "polkadot-api";
|
|
5015
5225
|
var getTransferCallData9 = ({
|
|
5016
5226
|
from: from2,
|
|
@@ -5022,7 +5232,7 @@ var getTransferCallData9 = ({
|
|
|
5022
5232
|
}) => {
|
|
5023
5233
|
if (!isTokenOfType9(token, MODULE_TYPE9))
|
|
5024
5234
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE9}.`);
|
|
5025
|
-
const { builder } =
|
|
5235
|
+
const { builder } = parseMetadataRpc13(metadataRpc);
|
|
5026
5236
|
const method = getTransferMethod2(type);
|
|
5027
5237
|
const { codec, location } = builder.buildCall("ForeignAssets", method);
|
|
5028
5238
|
const args = getEncodedArgs2(method, token.onChainId, to, value, codec);
|
|
@@ -5261,7 +5471,7 @@ import {
|
|
|
5261
5471
|
SubHydrationTokenSchema as SubHydrationTokenSchema2,
|
|
5262
5472
|
subHydrationTokenId
|
|
5263
5473
|
} from "@talismn/chaindata-provider";
|
|
5264
|
-
import { getStorageKeyPrefix as getStorageKeyPrefix4, parseMetadataRpc as
|
|
5474
|
+
import { getStorageKeyPrefix as getStorageKeyPrefix4, parseMetadataRpc as parseMetadataRpc14 } from "@talismn/scale";
|
|
5265
5475
|
import { assign as assign9, keyBy as keyBy8 } from "lodash-es";
|
|
5266
5476
|
var fetchTokens10 = async ({
|
|
5267
5477
|
networkId,
|
|
@@ -5271,7 +5481,7 @@ var fetchTokens10 = async ({
|
|
|
5271
5481
|
}) => {
|
|
5272
5482
|
const anyMiniMetadata = miniMetadata;
|
|
5273
5483
|
if (!anyMiniMetadata?.data) return [];
|
|
5274
|
-
const { builder } =
|
|
5484
|
+
const { builder } = parseMetadataRpc14(anyMiniMetadata.data);
|
|
5275
5485
|
const assetsCodec = builder.buildStorage("AssetRegistry", "Assets");
|
|
5276
5486
|
const allAssetStorageKeys = await connector.send(networkId, "state_getKeys", [
|
|
5277
5487
|
getStorageKeyPrefix4("AssetRegistry", "Assets")
|
|
@@ -5325,7 +5535,7 @@ var fetchTokens10 = async ({
|
|
|
5325
5535
|
|
|
5326
5536
|
// src/modules/substrate-hydration/getMiniMetadata.ts
|
|
5327
5537
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION5 } from "@talismn/chaindata-provider";
|
|
5328
|
-
import { compactMetadata as compactMetadata4, encodeMetadata as encodeMetadata4, parseMetadataRpc as
|
|
5538
|
+
import { compactMetadata as compactMetadata4, encodeMetadata as encodeMetadata4, parseMetadataRpc as parseMetadataRpc15 } from "@talismn/scale";
|
|
5329
5539
|
var getMiniMetadata10 = ({
|
|
5330
5540
|
networkId,
|
|
5331
5541
|
specVersion,
|
|
@@ -5339,7 +5549,7 @@ var getMiniMetadata10 = ({
|
|
|
5339
5549
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
5340
5550
|
);
|
|
5341
5551
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
5342
|
-
const { unifiedMetadata } =
|
|
5552
|
+
const { unifiedMetadata } = parseMetadataRpc15(metadataRpc);
|
|
5343
5553
|
if (unifiedMetadata.version < 14)
|
|
5344
5554
|
throw new Error(
|
|
5345
5555
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -5355,7 +5565,7 @@ var getMiniMetadata10 = ({
|
|
|
5355
5565
|
};
|
|
5356
5566
|
};
|
|
5357
5567
|
var getData4 = (metadataRpc) => {
|
|
5358
|
-
const { metadata, unifiedMetadata } =
|
|
5568
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc15(metadataRpc);
|
|
5359
5569
|
if (!hasStorageItem(unifiedMetadata, "AssetRegistry", "Assets") || !hasStorageItem(unifiedMetadata, "Tokens", "Accounts") || !hasRuntimeApi(unifiedMetadata, "CurrenciesApi", "accounts"))
|
|
5360
5570
|
return null;
|
|
5361
5571
|
compactMetadata4(
|
|
@@ -5379,7 +5589,7 @@ var getData4 = (metadataRpc) => {
|
|
|
5379
5589
|
// src/modules/substrate-hydration/getTransferCallData.ts
|
|
5380
5590
|
import { mergeUint8 as mergeUint84 } from "@polkadot-api/utils";
|
|
5381
5591
|
import { isTokenOfType as isTokenOfType10 } from "@talismn/chaindata-provider";
|
|
5382
|
-
import { parseMetadataRpc as
|
|
5592
|
+
import { parseMetadataRpc as parseMetadataRpc16 } from "@talismn/scale";
|
|
5383
5593
|
import { Binary as Binary4 } from "polkadot-api";
|
|
5384
5594
|
var getTransferCallData10 = ({
|
|
5385
5595
|
from: from2,
|
|
@@ -5390,7 +5600,7 @@ var getTransferCallData10 = ({
|
|
|
5390
5600
|
}) => {
|
|
5391
5601
|
if (!isTokenOfType10(token, MODULE_TYPE10))
|
|
5392
5602
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE10}.`);
|
|
5393
|
-
const { builder } =
|
|
5603
|
+
const { builder } = parseMetadataRpc16(metadataRpc);
|
|
5394
5604
|
const { codec, location } = builder.buildCall("Currencies", "transfer");
|
|
5395
5605
|
const args = {
|
|
5396
5606
|
dest: to,
|
|
@@ -5472,7 +5682,7 @@ var MODULE_TYPE11 = SubNativeTokenSchema.shape.type.value;
|
|
|
5472
5682
|
var PLATFORM11 = SubNativeTokenSchema.shape.platform.value;
|
|
5473
5683
|
|
|
5474
5684
|
// src/modules/substrate-native/queries/buildBaseQueries.ts
|
|
5475
|
-
import { decodeScale as
|
|
5685
|
+
import { decodeScale as decodeScale5 } from "@talismn/scale";
|
|
5476
5686
|
import { isNotNil as isNotNil8 } from "@talismn/util";
|
|
5477
5687
|
|
|
5478
5688
|
// src/modules/substrate-native/util/lockTypes.ts
|
|
@@ -5637,7 +5847,7 @@ var buildBaseQueries = (networkId, balanceDefs, miniMetadata) => {
|
|
|
5637
5847
|
}).filter(isNotNil8);
|
|
5638
5848
|
};
|
|
5639
5849
|
var decodeBaseResult = (coder, value, networkId) => {
|
|
5640
|
-
const decoded =
|
|
5850
|
+
const decoded = decodeScale5(
|
|
5641
5851
|
coder,
|
|
5642
5852
|
value,
|
|
5643
5853
|
`Failed to decode base native balance on chain ${networkId}`
|
|
@@ -5657,7 +5867,7 @@ var decodeBaseResult = (coder, value, networkId) => {
|
|
|
5657
5867
|
return newValues;
|
|
5658
5868
|
};
|
|
5659
5869
|
var decodeLocksResult = (coder, value, networkId) => {
|
|
5660
|
-
const decoded =
|
|
5870
|
+
const decoded = decodeScale5(
|
|
5661
5871
|
coder,
|
|
5662
5872
|
value,
|
|
5663
5873
|
`Failed to decode lock on chain ${networkId}`
|
|
@@ -5672,7 +5882,7 @@ var decodeLocksResult = (coder, value, networkId) => {
|
|
|
5672
5882
|
return locksQueryLocks;
|
|
5673
5883
|
};
|
|
5674
5884
|
var decodeFreezesResult = (coder, value, networkId) => {
|
|
5675
|
-
const decoded =
|
|
5885
|
+
const decoded = decodeScale5(
|
|
5676
5886
|
coder,
|
|
5677
5887
|
value,
|
|
5678
5888
|
`Failed to decode freeze on chain ${networkId}`
|
|
@@ -5686,7 +5896,7 @@ var decodeFreezesResult = (coder, value, networkId) => {
|
|
|
5686
5896
|
return freezesValues;
|
|
5687
5897
|
};
|
|
5688
5898
|
var decodeHoldsResult = (coder, value, networkId) => {
|
|
5689
|
-
const decoded =
|
|
5899
|
+
const decoded = decodeScale5(
|
|
5690
5900
|
coder,
|
|
5691
5901
|
value,
|
|
5692
5902
|
`Failed to decode holds on chain ${networkId}`
|
|
@@ -5702,7 +5912,7 @@ var decodeHoldsResult = (coder, value, networkId) => {
|
|
|
5702
5912
|
return holdsValues;
|
|
5703
5913
|
};
|
|
5704
5914
|
var decodeStakingLedgerResult = (coder, value, networkId) => {
|
|
5705
|
-
const decoded =
|
|
5915
|
+
const decoded = decodeScale5(
|
|
5706
5916
|
coder,
|
|
5707
5917
|
value,
|
|
5708
5918
|
`Failed to decode unbonding query on chain ${networkId}`
|
|
@@ -5719,7 +5929,7 @@ var decodeStakingLedgerResult = (coder, value, networkId) => {
|
|
|
5719
5929
|
return stakingLedgerResults;
|
|
5720
5930
|
};
|
|
5721
5931
|
var decodePoolMemberResult = (coder, value, networkId) => {
|
|
5722
|
-
const decoded =
|
|
5932
|
+
const decoded = decodeScale5(
|
|
5723
5933
|
coder,
|
|
5724
5934
|
value,
|
|
5725
5935
|
`Failed to decode poolMembers on chain ${networkId}`
|
|
@@ -5741,7 +5951,7 @@ var decodePoolMemberResult = (coder, value, networkId) => {
|
|
|
5741
5951
|
};
|
|
5742
5952
|
|
|
5743
5953
|
// src/modules/substrate-native/queries/buildNomPoolQueries.ts
|
|
5744
|
-
import { decodeScale as
|
|
5954
|
+
import { decodeScale as decodeScale6 } from "@talismn/scale";
|
|
5745
5955
|
|
|
5746
5956
|
// src/modules/substrate-native/util/nompoolAccountId.ts
|
|
5747
5957
|
import { mergeUint8 as mergeUint85 } from "@polkadot-api/utils";
|
|
@@ -5834,7 +6044,7 @@ var getNomPoolCoders = (networkId, miniMetadata) => {
|
|
|
5834
6044
|
});
|
|
5835
6045
|
};
|
|
5836
6046
|
var decodePoolPoints = (coder, value, networkId) => {
|
|
5837
|
-
const decoded =
|
|
6047
|
+
const decoded = decodeScale6(
|
|
5838
6048
|
coder,
|
|
5839
6049
|
value,
|
|
5840
6050
|
`Failed to decode bondedPools on chain ${networkId}`
|
|
@@ -5842,7 +6052,7 @@ var decodePoolPoints = (coder, value, networkId) => {
|
|
|
5842
6052
|
return { poolPoints: decoded?.points.toString() };
|
|
5843
6053
|
};
|
|
5844
6054
|
var decodePoolStake = (coder, value, networkId) => {
|
|
5845
|
-
const decoded =
|
|
6055
|
+
const decoded = decodeScale6(
|
|
5846
6056
|
coder,
|
|
5847
6057
|
value,
|
|
5848
6058
|
`Failed to decode ledger on chain ${networkId}`
|
|
@@ -5850,7 +6060,7 @@ var decodePoolStake = (coder, value, networkId) => {
|
|
|
5850
6060
|
return { poolTotalActiveStake: decoded?.active.toString() };
|
|
5851
6061
|
};
|
|
5852
6062
|
var decodePoolMeta = (coder, value, networkId) => {
|
|
5853
|
-
const decoded =
|
|
6063
|
+
const decoded = decodeScale6(
|
|
5854
6064
|
coder,
|
|
5855
6065
|
value,
|
|
5856
6066
|
`Failed to decode metadata on chain ${networkId}`
|
|
@@ -5972,7 +6182,7 @@ var getChainProperties = async (connector, networkId) => {
|
|
|
5972
6182
|
|
|
5973
6183
|
// src/modules/substrate-native/getMiniMetadata.ts
|
|
5974
6184
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION6 } from "@talismn/chaindata-provider";
|
|
5975
|
-
import { compactMetadata as compactMetadata5, encodeMetadata as encodeMetadata5, parseMetadataRpc as
|
|
6185
|
+
import { compactMetadata as compactMetadata5, encodeMetadata as encodeMetadata5, parseMetadataRpc as parseMetadataRpc17 } from "@talismn/scale";
|
|
5976
6186
|
var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
5977
6187
|
const source = MODULE_TYPE11;
|
|
5978
6188
|
const chainId = networkId;
|
|
@@ -5982,7 +6192,7 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
5982
6192
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
5983
6193
|
);
|
|
5984
6194
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
5985
|
-
const { metadata, unifiedMetadata } =
|
|
6195
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc17(metadataRpc);
|
|
5986
6196
|
if (unifiedMetadata.version < 14)
|
|
5987
6197
|
throw new Error(
|
|
5988
6198
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -6036,7 +6246,7 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
6036
6246
|
import { mergeUint8 as mergeUint86 } from "@polkadot-api/utils";
|
|
6037
6247
|
import { isTokenOfType as isTokenOfType11 } from "@talismn/chaindata-provider";
|
|
6038
6248
|
import {
|
|
6039
|
-
parseMetadataRpc as
|
|
6249
|
+
parseMetadataRpc as parseMetadataRpc18
|
|
6040
6250
|
} from "@talismn/scale";
|
|
6041
6251
|
import { Binary as Binary5, Enum as Enum3 } from "polkadot-api";
|
|
6042
6252
|
var getTransferCallData11 = ({
|
|
@@ -6049,7 +6259,7 @@ var getTransferCallData11 = ({
|
|
|
6049
6259
|
}) => {
|
|
6050
6260
|
if (!isTokenOfType11(token, MODULE_TYPE11))
|
|
6051
6261
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE11}.`);
|
|
6052
|
-
const { unifiedMetadata, lookupFn, builder } =
|
|
6262
|
+
const { unifiedMetadata, lookupFn, builder } = parseMetadataRpc18(metadataRpc);
|
|
6053
6263
|
const method = getTransferMethod3(type, unifiedMetadata, lookupFn);
|
|
6054
6264
|
const { codec, location } = builder.buildCall("Balances", method);
|
|
6055
6265
|
const args = getEncodedArgs3(method, to, value, codec);
|
|
@@ -7352,7 +7562,7 @@ var fetchTokens12 = async ({
|
|
|
7352
7562
|
|
|
7353
7563
|
// src/modules/substrate-psp22/getMiniMetadata.ts
|
|
7354
7564
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION7 } from "@talismn/chaindata-provider";
|
|
7355
|
-
import { parseMetadataRpc as
|
|
7565
|
+
import { parseMetadataRpc as parseMetadataRpc19 } from "@talismn/scale";
|
|
7356
7566
|
var getMiniMetadata12 = ({
|
|
7357
7567
|
networkId,
|
|
7358
7568
|
specVersion,
|
|
@@ -7366,7 +7576,7 @@ var getMiniMetadata12 = ({
|
|
|
7366
7576
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
7367
7577
|
);
|
|
7368
7578
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
7369
|
-
const { unifiedMetadata } =
|
|
7579
|
+
const { unifiedMetadata } = parseMetadataRpc19(metadataRpc);
|
|
7370
7580
|
if (unifiedMetadata.version < 14)
|
|
7371
7581
|
throw new Error(
|
|
7372
7582
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -7387,13 +7597,13 @@ import { Abi as Abi3 } from "@polkadot/api-contract";
|
|
|
7387
7597
|
import { TypeRegistry as TypeRegistry3 } from "@polkadot/types";
|
|
7388
7598
|
import { mergeUint8 as mergeUint87 } from "@polkadot-api/utils";
|
|
7389
7599
|
import { isTokenOfType as isTokenOfType12, parseTokenId as parseTokenId5 } from "@talismn/chaindata-provider";
|
|
7390
|
-
import { parseMetadataRpc as
|
|
7600
|
+
import { parseMetadataRpc as parseMetadataRpc20 } from "@talismn/scale";
|
|
7391
7601
|
import { Binary as Binary6, Enum as Enum4 } from "polkadot-api";
|
|
7392
7602
|
var getTransferCallData12 = async ({ from: from2, to, value, token, metadataRpc, connector }) => {
|
|
7393
7603
|
if (!isTokenOfType12(token, MODULE_TYPE12))
|
|
7394
7604
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE12}.`);
|
|
7395
7605
|
const networkId = parseTokenId5(token.id).networkId;
|
|
7396
|
-
const { builder } =
|
|
7606
|
+
const { builder } = parseMetadataRpc20(metadataRpc);
|
|
7397
7607
|
const { codec, location } = builder.buildCall("Contracts", "call");
|
|
7398
7608
|
const Psp22Abi = new Abi3(psp22_default);
|
|
7399
7609
|
const registry = new TypeRegistry3();
|
|
@@ -7490,7 +7700,7 @@ var MODULE_TYPE13 = SubTokensTokenSchema.shape.type.value;
|
|
|
7490
7700
|
var PLATFORM13 = SubTokensTokenSchema.shape.platform.value;
|
|
7491
7701
|
|
|
7492
7702
|
// src/modules/substrate-tokens/buildQueries.ts
|
|
7493
|
-
import { decodeScale as
|
|
7703
|
+
import { decodeScale as decodeScale7, papiParse as papiParse3 } from "@talismn/scale";
|
|
7494
7704
|
import { isNotNil as isNotNil9 } from "@talismn/util";
|
|
7495
7705
|
var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
7496
7706
|
const networkStorageCoders = buildNetworkStorageCoders(networkId, miniMetadata, {
|
|
@@ -7513,7 +7723,7 @@ var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
7513
7723
|
return null;
|
|
7514
7724
|
}
|
|
7515
7725
|
const decodeResult = (changes) => {
|
|
7516
|
-
const decoded =
|
|
7726
|
+
const decoded = decodeScale7(
|
|
7517
7727
|
scaleCoder,
|
|
7518
7728
|
changes[0],
|
|
7519
7729
|
`Failed to decode substrate-tokens balance on chain ${networkId}`
|
|
@@ -7637,7 +7847,7 @@ var fetchTokens13 = async ({
|
|
|
7637
7847
|
|
|
7638
7848
|
// src/modules/substrate-tokens/getMiniMetadata.ts
|
|
7639
7849
|
import { MINIMETADATA_VERSION as MINIMETADATA_VERSION8 } from "@talismn/chaindata-provider";
|
|
7640
|
-
import { compactMetadata as compactMetadata6, encodeMetadata as encodeMetadata6, parseMetadataRpc as
|
|
7850
|
+
import { compactMetadata as compactMetadata6, encodeMetadata as encodeMetadata6, parseMetadataRpc as parseMetadataRpc21 } from "@talismn/scale";
|
|
7641
7851
|
var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
7642
7852
|
const source = MODULE_TYPE13;
|
|
7643
7853
|
const chainId = networkId;
|
|
@@ -7647,7 +7857,7 @@ var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
7647
7857
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
7648
7858
|
);
|
|
7649
7859
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
7650
|
-
const { unifiedMetadata } =
|
|
7860
|
+
const { unifiedMetadata } = parseMetadataRpc21(metadataRpc);
|
|
7651
7861
|
if (unifiedMetadata.version < 14)
|
|
7652
7862
|
throw new Error(
|
|
7653
7863
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -7664,7 +7874,7 @@ var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
7664
7874
|
};
|
|
7665
7875
|
};
|
|
7666
7876
|
var getData5 = (metadataRpc, pallet) => {
|
|
7667
|
-
const { metadata, unifiedMetadata } =
|
|
7877
|
+
const { metadata, unifiedMetadata } = parseMetadataRpc21(metadataRpc);
|
|
7668
7878
|
if (!hasStorageItems(unifiedMetadata, pallet, ["Accounts"])) return null;
|
|
7669
7879
|
compactMetadata6(metadata, [{ pallet, items: ["Accounts"] }]);
|
|
7670
7880
|
return encodeMetadata6(metadata);
|
|
@@ -7673,12 +7883,12 @@ var getData5 = (metadataRpc, pallet) => {
|
|
|
7673
7883
|
// src/modules/substrate-tokens/getTransferCallData.ts
|
|
7674
7884
|
import { mergeUint8 as mergeUint88 } from "@polkadot-api/utils";
|
|
7675
7885
|
import { isTokenOfType as isTokenOfType13 } from "@talismn/chaindata-provider";
|
|
7676
|
-
import { papiParse as papiParse4, parseMetadataRpc as
|
|
7886
|
+
import { papiParse as papiParse4, parseMetadataRpc as parseMetadataRpc22 } from "@talismn/scale";
|
|
7677
7887
|
import { Binary as Binary7, Enum as Enum5 } from "polkadot-api";
|
|
7678
7888
|
var getTransferCallData13 = ({ from: from2, to, value, token, type, metadataRpc, config }) => {
|
|
7679
7889
|
if (!isTokenOfType13(token, MODULE_TYPE13))
|
|
7680
7890
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE13}.`);
|
|
7681
|
-
const { builder } =
|
|
7891
|
+
const { builder } = parseMetadataRpc22(metadataRpc);
|
|
7682
7892
|
const options = getCallDataOptions(to, token, value, type, config);
|
|
7683
7893
|
const callData = getCallDataFromOptions(builder, options);
|
|
7684
7894
|
return {
|
|
@@ -8117,8 +8327,14 @@ var BalancesProvider = class {
|
|
|
8117
8327
|
map6(
|
|
8118
8328
|
(results) => ({
|
|
8119
8329
|
status: "live",
|
|
8120
|
-
// exclude zero balances
|
|
8121
|
-
|
|
8330
|
+
// exclude zero balances, but keep balances that only hold a lock
|
|
8331
|
+
// (eg dtao conviction locks, reported on the subnet's base token — including
|
|
8332
|
+
// zero-mass "ghost" locks with residual conviction, which still pin the hotkey
|
|
8333
|
+
// of future lock_stake calls)
|
|
8334
|
+
balances: results.success.filter((b) => {
|
|
8335
|
+
const balance = new Balance(b);
|
|
8336
|
+
return balance.total.planck > 0n || balance.locks.some((lock) => lock.amount.planck > 0n) || !!findDTaoConvictionLock(balance.locks);
|
|
8337
|
+
}),
|
|
8122
8338
|
failedBalanceIds: results.errors.map(
|
|
8123
8339
|
({ tokenId, address }) => getBalanceId({ tokenId, address })
|
|
8124
8340
|
)
|
|
@@ -8505,7 +8721,9 @@ export {
|
|
|
8505
8721
|
excludeFromTransferableAmount,
|
|
8506
8722
|
filterBaseLocks,
|
|
8507
8723
|
filterMirrorTokens,
|
|
8724
|
+
findDTaoConvictionLock,
|
|
8508
8725
|
getBalanceId,
|
|
8726
|
+
getConvictionLockLabel,
|
|
8509
8727
|
getDTaoTokenRates,
|
|
8510
8728
|
getLockTitle,
|
|
8511
8729
|
getLockedType,
|
|
@@ -8513,6 +8731,7 @@ export {
|
|
|
8513
8731
|
getValueId,
|
|
8514
8732
|
includeInTotalExtraAmount,
|
|
8515
8733
|
taoToAlpha,
|
|
8734
|
+
taoToAlphaCeil,
|
|
8516
8735
|
uniswapV2PairAbi
|
|
8517
8736
|
};
|
|
8518
8737
|
//# sourceMappingURL=index.mjs.map
|