@talismn/balances 1.4.0 → 2.0.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 +530 -288
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +439 -209
- package/dist/index.mjs.map +1 -1
- package/package.json +19 -18
package/dist/index.js
CHANGED
|
@@ -81,7 +81,9 @@ __export(index_exports, {
|
|
|
81
81
|
excludeFromTransferableAmount: () => excludeFromTransferableAmount,
|
|
82
82
|
filterBaseLocks: () => filterBaseLocks,
|
|
83
83
|
filterMirrorTokens: () => filterMirrorTokens,
|
|
84
|
+
findDTaoConvictionLock: () => findDTaoConvictionLock,
|
|
84
85
|
getBalanceId: () => getBalanceId,
|
|
86
|
+
getConvictionLockLabel: () => getConvictionLockLabel,
|
|
85
87
|
getDTaoTokenRates: () => getDTaoTokenRates,
|
|
86
88
|
getLockTitle: () => getLockTitle,
|
|
87
89
|
getLockedType: () => getLockedType,
|
|
@@ -89,14 +91,20 @@ __export(index_exports, {
|
|
|
89
91
|
getValueId: () => getValueId,
|
|
90
92
|
includeInTotalExtraAmount: () => includeInTotalExtraAmount,
|
|
91
93
|
taoToAlpha: () => taoToAlpha,
|
|
94
|
+
taoToAlphaCeil: () => taoToAlphaCeil,
|
|
92
95
|
uniswapV2PairAbi: () => uniswapV2PairAbi
|
|
93
96
|
});
|
|
94
97
|
module.exports = __toCommonJS(index_exports);
|
|
95
98
|
|
|
99
|
+
// src/configureBigNumber.ts
|
|
100
|
+
var import_bignumber = __toESM(require("bignumber.js"));
|
|
101
|
+
import_bignumber.default.set({ STRICT: false });
|
|
102
|
+
var configureBigNumber_default = import_bignumber.default;
|
|
103
|
+
|
|
96
104
|
// src/BalancesProvider.ts
|
|
97
105
|
var import_chaindata_provider71 = require("@talismn/chaindata-provider");
|
|
98
106
|
var import_crypto8 = require("@talismn/crypto");
|
|
99
|
-
var
|
|
107
|
+
var import_util17 = require("@talismn/util");
|
|
100
108
|
var import_lodash_es30 = require("lodash-es");
|
|
101
109
|
var import_rxjs16 = require("rxjs");
|
|
102
110
|
var import_viem9 = require("viem");
|
|
@@ -110,7 +118,7 @@ var import_anylogger = __toESM(require("anylogger"));
|
|
|
110
118
|
// package.json
|
|
111
119
|
var package_default = {
|
|
112
120
|
name: "@talismn/balances",
|
|
113
|
-
version: "
|
|
121
|
+
version: "2.0.0",
|
|
114
122
|
author: "Talisman",
|
|
115
123
|
homepage: "https://talisman.xyz",
|
|
116
124
|
license: "GPL-3.0-or-later",
|
|
@@ -138,9 +146,9 @@ var package_default = {
|
|
|
138
146
|
},
|
|
139
147
|
dependencies: {
|
|
140
148
|
"@metaplex-foundation/mpl-token-metadata": "^3.4.0",
|
|
141
|
-
"@metaplex-foundation/umi": "^1.
|
|
142
|
-
"@polkadot-api/utils": "0.
|
|
143
|
-
"@solana/spl-token": "^0.4.
|
|
149
|
+
"@metaplex-foundation/umi": "^1.5.1",
|
|
150
|
+
"@polkadot-api/utils": "0.4.0",
|
|
151
|
+
"@solana/spl-token": "^0.4.14",
|
|
144
152
|
"@solana/web3.js": "^1.98.2",
|
|
145
153
|
"@talismn/chain-connectors": "workspace:*",
|
|
146
154
|
"@talismn/chaindata-provider": "workspace:*",
|
|
@@ -150,21 +158,22 @@ var package_default = {
|
|
|
150
158
|
"@talismn/token-rates": "workspace:*",
|
|
151
159
|
"@talismn/util": "workspace:*",
|
|
152
160
|
anylogger: "^1.0.11",
|
|
153
|
-
"bignumber.js": "^
|
|
154
|
-
"lodash-es": "4.
|
|
161
|
+
"bignumber.js": "^11.1.3",
|
|
162
|
+
"lodash-es": "4.18.1",
|
|
155
163
|
"p-queue": "8.1.0",
|
|
156
|
-
"polkadot-api": "1.
|
|
157
|
-
rxjs: "^7.8.
|
|
164
|
+
"polkadot-api": "2.1.6",
|
|
165
|
+
rxjs: "^7.8.2",
|
|
158
166
|
"scale-ts": "^1.6.1",
|
|
159
|
-
viem: "
|
|
160
|
-
zod: "^
|
|
167
|
+
viem: "2.52.2",
|
|
168
|
+
zod: "^4.4.3"
|
|
161
169
|
},
|
|
162
170
|
devDependencies: {
|
|
163
171
|
"@polkadot/api-contract": "16.1.2",
|
|
164
172
|
"@polkadot/types": "16.1.2",
|
|
165
173
|
"@talismn/tsconfig": "workspace:*",
|
|
166
174
|
"@types/lodash-es": "4.17.12",
|
|
167
|
-
|
|
175
|
+
"@types/node": "^24.5.1",
|
|
176
|
+
typescript: "^6.0.3"
|
|
168
177
|
},
|
|
169
178
|
peerDependencies: {
|
|
170
179
|
"@polkadot/api-contract": "*",
|
|
@@ -1088,6 +1097,7 @@ var import_lodash_es = require("lodash-es");
|
|
|
1088
1097
|
var import_v4 = __toESM(require("zod/v4"));
|
|
1089
1098
|
|
|
1090
1099
|
// src/modules/evm-erc20/utils.ts
|
|
1100
|
+
var import_util = require("@talismn/util");
|
|
1091
1101
|
var import_viem4 = require("viem");
|
|
1092
1102
|
var getErc20ContractData = async (client, contractAddress) => {
|
|
1093
1103
|
try {
|
|
@@ -1098,7 +1108,7 @@ var getErc20ContractData = async (client, contractAddress) => {
|
|
|
1098
1108
|
contract.read.name()
|
|
1099
1109
|
]);
|
|
1100
1110
|
} catch (e) {
|
|
1101
|
-
if (e
|
|
1111
|
+
if ((0, import_util.isErrorOfName)(e, "ContractFunctionExecutionError")) {
|
|
1102
1112
|
const contract = getTypedContract(client, import_viem4.erc20Abi_bytes32, contractAddress);
|
|
1103
1113
|
var [bytesSymbol, decimals, nameSymbol] = await Promise.all([
|
|
1104
1114
|
contract.read.symbol(),
|
|
@@ -1315,21 +1325,30 @@ var fetchBalances2 = async ({
|
|
|
1315
1325
|
}
|
|
1316
1326
|
const balanceDefs = getBalanceDefs(tokensWithAddresses);
|
|
1317
1327
|
if (client.chain?.contracts?.multicall3 && balanceDefs.length > 1) {
|
|
1318
|
-
|
|
1319
|
-
|
|
1328
|
+
try {
|
|
1329
|
+
return await fetchWithMulticall(
|
|
1330
|
+
client,
|
|
1331
|
+
balanceDefs,
|
|
1332
|
+
client.chain.contracts.multicall3.address
|
|
1333
|
+
);
|
|
1334
|
+
} catch {
|
|
1335
|
+
}
|
|
1320
1336
|
}
|
|
1321
|
-
return
|
|
1337
|
+
return fetchWithGetBalance(client, balanceDefs);
|
|
1322
1338
|
};
|
|
1323
|
-
var
|
|
1339
|
+
var fetchWithGetBalance = async (client, balanceDefs) => {
|
|
1324
1340
|
if (balanceDefs.length === 0) return { success: [], errors: [] };
|
|
1325
1341
|
const results = await Promise.allSettled(
|
|
1326
1342
|
balanceDefs.map(async ({ token, address }) => {
|
|
1327
1343
|
try {
|
|
1328
|
-
const result = await client.
|
|
1344
|
+
const result = await client.request({
|
|
1345
|
+
method: "eth_getBalance",
|
|
1346
|
+
params: [address, "latest"]
|
|
1347
|
+
});
|
|
1329
1348
|
const balance = {
|
|
1330
1349
|
address,
|
|
1331
1350
|
tokenId: token.id,
|
|
1332
|
-
value: result.toString(),
|
|
1351
|
+
value: BigInt(result).toString(),
|
|
1333
1352
|
source: MODULE_TYPE2,
|
|
1334
1353
|
networkId: (0, import_chaindata_provider8.parseTokenId)(token.id).networkId,
|
|
1335
1354
|
status: "live"
|
|
@@ -1363,55 +1382,28 @@ var fetchWithoutMulticall = async (client, balanceDefs) => {
|
|
|
1363
1382
|
};
|
|
1364
1383
|
var fetchWithMulticall = async (client, balanceDefs, multicall3Address) => {
|
|
1365
1384
|
if (balanceDefs.length === 0) return { success: [], errors: [] };
|
|
1366
|
-
|
|
1367
|
-
|
|
1368
|
-
|
|
1369
|
-
|
|
1370
|
-
|
|
1371
|
-
|
|
1372
|
-
|
|
1373
|
-
|
|
1374
|
-
|
|
1375
|
-
|
|
1376
|
-
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
acc.errors.push({
|
|
1389
|
-
tokenId: balanceDefs[index].token.id,
|
|
1390
|
-
address: balanceDefs[index].address,
|
|
1391
|
-
error: new BalanceFetchError(
|
|
1392
|
-
`Failed to get balance for token ${balanceDefs[index].token.id} and address ${balanceDefs[index].address} on chain ${client.chain?.id}`,
|
|
1393
|
-
balanceDefs[index].token.id,
|
|
1394
|
-
balanceDefs[index].address,
|
|
1395
|
-
result.error
|
|
1396
|
-
)
|
|
1397
|
-
});
|
|
1398
|
-
}
|
|
1399
|
-
return acc;
|
|
1400
|
-
},
|
|
1401
|
-
{ success: [], errors: [] }
|
|
1402
|
-
);
|
|
1403
|
-
} catch (err) {
|
|
1404
|
-
const errors = balanceDefs.map((balanceDef) => ({
|
|
1405
|
-
tokenId: balanceDef.token.id,
|
|
1406
|
-
address: balanceDef.address,
|
|
1407
|
-
error: new BalanceFetchNetworkError(
|
|
1408
|
-
`Failed to get balances for evm-erc20 tokens on chain ${client.chain?.id}`,
|
|
1409
|
-
String(client.chain?.id),
|
|
1410
|
-
err
|
|
1411
|
-
)
|
|
1412
|
-
}));
|
|
1413
|
-
return { success: [], errors };
|
|
1414
|
-
}
|
|
1385
|
+
const results = await client.multicall({
|
|
1386
|
+
allowFailure: false,
|
|
1387
|
+
contracts: balanceDefs.map(({ address }) => ({
|
|
1388
|
+
address: multicall3Address,
|
|
1389
|
+
abi: abiMulticall,
|
|
1390
|
+
functionName: "getEthBalance",
|
|
1391
|
+
args: [address]
|
|
1392
|
+
}))
|
|
1393
|
+
});
|
|
1394
|
+
return {
|
|
1395
|
+
success: results.map(
|
|
1396
|
+
(value, index) => ({
|
|
1397
|
+
address: balanceDefs[index].address,
|
|
1398
|
+
tokenId: balanceDefs[index].token.id,
|
|
1399
|
+
value: String(value),
|
|
1400
|
+
source: MODULE_TYPE2,
|
|
1401
|
+
networkId: (0, import_chaindata_provider8.parseTokenId)(balanceDefs[index].token.id).networkId,
|
|
1402
|
+
status: "live"
|
|
1403
|
+
})
|
|
1404
|
+
),
|
|
1405
|
+
errors: []
|
|
1406
|
+
};
|
|
1415
1407
|
};
|
|
1416
1408
|
|
|
1417
1409
|
// src/modules/evm-native/fetchTokens.ts
|
|
@@ -1529,7 +1521,6 @@ var PLATFORM3 = import_chaindata_provider11.EvmUniswapV2TokenSchema.shape.platfo
|
|
|
1529
1521
|
// src/modules/evm-uniswapv2/fetchBalances.ts
|
|
1530
1522
|
var import_chaindata_provider12 = require("@talismn/chaindata-provider");
|
|
1531
1523
|
var import_crypto5 = require("@talismn/crypto");
|
|
1532
|
-
var import_bignumber = __toESM(require("bignumber.js"));
|
|
1533
1524
|
var import_lodash_es5 = require("lodash-es");
|
|
1534
1525
|
var import_viem6 = require("viem");
|
|
1535
1526
|
var fetchBalances3 = async ({
|
|
@@ -1621,7 +1612,7 @@ var fetchPoolBalances = async (client, balanceDefs) => {
|
|
|
1621
1612
|
label,
|
|
1622
1613
|
amount
|
|
1623
1614
|
});
|
|
1624
|
-
const ratio = (
|
|
1615
|
+
const ratio = configureBigNumber_default(String(balance)).div(totalSupply === 0n ? "1" : String(totalSupply));
|
|
1625
1616
|
acc.success.push({
|
|
1626
1617
|
address,
|
|
1627
1618
|
tokenId: token.id,
|
|
@@ -1650,6 +1641,7 @@ var import_lodash_es6 = require("lodash-es");
|
|
|
1650
1641
|
var import_v44 = __toESM(require("zod/v4"));
|
|
1651
1642
|
|
|
1652
1643
|
// src/modules/evm-uniswapv2/utils.ts
|
|
1644
|
+
var import_util2 = require("@talismn/util");
|
|
1653
1645
|
var import_viem7 = require("viem");
|
|
1654
1646
|
var getErc20ContractData2 = async (client, contractAddress) => {
|
|
1655
1647
|
try {
|
|
@@ -1660,7 +1652,7 @@ var getErc20ContractData2 = async (client, contractAddress) => {
|
|
|
1660
1652
|
contract.read.name()
|
|
1661
1653
|
]);
|
|
1662
1654
|
} catch (e) {
|
|
1663
|
-
if (e
|
|
1655
|
+
if ((0, import_util2.isErrorOfName)(e, "ContractFunctionExecutionError")) {
|
|
1664
1656
|
const contract = getTypedContract2(client, import_viem7.erc20Abi_bytes32, contractAddress);
|
|
1665
1657
|
var [bytesSymbol, decimals, nameSymbol] = await Promise.all([
|
|
1666
1658
|
contract.read.symbol(),
|
|
@@ -2056,7 +2048,7 @@ var PLATFORM5 = import_chaindata_provider19.SolSplTokenSchema.shape.platform.val
|
|
|
2056
2048
|
// src/modules/sol-spl/fetchBalances.ts
|
|
2057
2049
|
var import_web34 = require("@solana/web3.js");
|
|
2058
2050
|
var import_chaindata_provider22 = require("@talismn/chaindata-provider");
|
|
2059
|
-
var
|
|
2051
|
+
var import_util4 = require("@talismn/util");
|
|
2060
2052
|
var import_lodash_es12 = require("lodash-es");
|
|
2061
2053
|
|
|
2062
2054
|
// src/modules/shared/buildNetworkStorageCoders.ts
|
|
@@ -2094,9 +2086,9 @@ var buildNetworkStorageCoders = (chainId, miniMetadata, coders) => {
|
|
|
2094
2086
|
|
|
2095
2087
|
// src/modules/shared/fetchRuntimeCallResult.ts
|
|
2096
2088
|
var import_scale2 = require("@talismn/scale");
|
|
2097
|
-
var fetchRuntimeCallResult = async (connector, networkId,
|
|
2089
|
+
var fetchRuntimeCallResult = async (connector, networkId, metadataRpcOrBuilder, apiName, method, args) => {
|
|
2098
2090
|
try {
|
|
2099
|
-
const
|
|
2091
|
+
const builder = typeof metadataRpcOrBuilder === "string" ? (0, import_scale2.parseMetadataRpc)(metadataRpcOrBuilder).builder : metadataRpcOrBuilder;
|
|
2100
2092
|
const call = builder.buildRuntimeCall(apiName, method);
|
|
2101
2093
|
const hex = await connector.send(networkId, "state_call", [
|
|
2102
2094
|
`${apiName}_${method}`,
|
|
@@ -2111,11 +2103,11 @@ var fetchRuntimeCallResult = async (connector, networkId, metadataRpc, apiName,
|
|
|
2111
2103
|
};
|
|
2112
2104
|
|
|
2113
2105
|
// src/modules/shared/rpcQueryPack.ts
|
|
2114
|
-
var
|
|
2106
|
+
var import_util3 = require("@talismn/util");
|
|
2115
2107
|
var import_lodash_es10 = require("lodash-es");
|
|
2116
2108
|
var import_rxjs5 = require("rxjs");
|
|
2117
2109
|
var fetchRpcQueryPack = async (connector, networkId, queries) => {
|
|
2118
|
-
const allStateKeys = queries.flatMap(({ stateKeys }) => stateKeys).filter(
|
|
2110
|
+
const allStateKeys = queries.flatMap(({ stateKeys }) => stateKeys).filter(import_util3.isNotNil);
|
|
2119
2111
|
if (!allStateKeys.length)
|
|
2120
2112
|
return queries.map(({ stateKeys, decodeResult }) => decodeResult(stateKeys.map(() => null)));
|
|
2121
2113
|
const [result] = await connector.send(networkId, "state_queryStorageAt", [
|
|
@@ -2124,7 +2116,7 @@ var fetchRpcQueryPack = async (connector, networkId, queries) => {
|
|
|
2124
2116
|
return decodeRpcQueryPack(queries, result);
|
|
2125
2117
|
};
|
|
2126
2118
|
var getRpcQueryPack$ = (connector, networkId, queries, timeout = false) => {
|
|
2127
|
-
const allStateKeys = queries.flatMap(({ stateKeys }) => stateKeys).filter(
|
|
2119
|
+
const allStateKeys = queries.flatMap(({ stateKeys }) => stateKeys).filter(import_util3.isNotNil);
|
|
2128
2120
|
if (!allStateKeys.length)
|
|
2129
2121
|
return (0, import_rxjs5.of)(queries.map(({ stateKeys, decodeResult }) => decodeResult(stateKeys.map(() => null))));
|
|
2130
2122
|
return new import_rxjs5.Observable((subscriber) => {
|
|
@@ -2167,17 +2159,17 @@ var decodeRpcQueryPack = (queries, result) => {
|
|
|
2167
2159
|
var import_scale3 = require("@talismn/scale");
|
|
2168
2160
|
var hasStorageItem = (metadata, palletName, itemName) => {
|
|
2169
2161
|
const pallet = metadata.pallets.find((p) => p.name === palletName);
|
|
2170
|
-
if (!pallet
|
|
2162
|
+
if (!pallet?.storage) return false;
|
|
2171
2163
|
return pallet.storage.items.some((item) => item.name === itemName);
|
|
2172
2164
|
};
|
|
2173
2165
|
var hasStorageItems = (metadata, palletName, itemNames) => {
|
|
2174
2166
|
const pallet = metadata.pallets.find((p) => p.name === palletName);
|
|
2175
|
-
if (!pallet
|
|
2167
|
+
if (!pallet?.storage) return false;
|
|
2176
2168
|
return itemNames.every((itemName) => pallet.storage?.items.some((item) => item.name === itemName));
|
|
2177
2169
|
};
|
|
2178
2170
|
var hasRuntimeApi = (metadata, apiName, method) => {
|
|
2179
2171
|
const api = metadata.apis.find((api2) => api2.name === apiName);
|
|
2180
|
-
if (!api
|
|
2172
|
+
if (!api?.methods) return false;
|
|
2181
2173
|
return api.methods.some((m) => m.name === method);
|
|
2182
2174
|
};
|
|
2183
2175
|
var getConstantValue = (metadataRpc, pallet, constant) => {
|
|
@@ -2321,7 +2313,7 @@ var fetchBalances5 = async ({
|
|
|
2321
2313
|
});
|
|
2322
2314
|
return null;
|
|
2323
2315
|
}
|
|
2324
|
-
}).filter(
|
|
2316
|
+
}).filter(import_util4.isNotNil);
|
|
2325
2317
|
setDetectedTokenIds(
|
|
2326
2318
|
address,
|
|
2327
2319
|
MODULE_TYPE5,
|
|
@@ -2343,7 +2335,7 @@ var fetchBalances5 = async ({
|
|
|
2343
2335
|
cached = fetched;
|
|
2344
2336
|
}
|
|
2345
2337
|
}
|
|
2346
|
-
if (!cached
|
|
2338
|
+
if (!cached?.isValid) return;
|
|
2347
2339
|
const token = {
|
|
2348
2340
|
id: tokenId,
|
|
2349
2341
|
type: MODULE_TYPE5,
|
|
@@ -2549,7 +2541,7 @@ var PLATFORM6 = import_chaindata_provider26.SolToken2022TokenSchema.shape.platfo
|
|
|
2549
2541
|
// src/modules/sol-token2022/fetchBalances.ts
|
|
2550
2542
|
var import_web37 = require("@solana/web3.js");
|
|
2551
2543
|
var import_chaindata_provider28 = require("@talismn/chaindata-provider");
|
|
2552
|
-
var
|
|
2544
|
+
var import_util5 = require("@talismn/util");
|
|
2553
2545
|
var import_lodash_es15 = require("lodash-es");
|
|
2554
2546
|
|
|
2555
2547
|
// src/modules/sol-token2022/onChainTokenMetadata.ts
|
|
@@ -2703,7 +2695,7 @@ var fetchBalances6 = async ({
|
|
|
2703
2695
|
});
|
|
2704
2696
|
return null;
|
|
2705
2697
|
}
|
|
2706
|
-
}).filter(
|
|
2698
|
+
}).filter(import_util5.isNotNil);
|
|
2707
2699
|
setDetectedTokenIds(
|
|
2708
2700
|
address,
|
|
2709
2701
|
MODULE_TYPE6,
|
|
@@ -2725,7 +2717,7 @@ var fetchBalances6 = async ({
|
|
|
2725
2717
|
cached = fetched;
|
|
2726
2718
|
}
|
|
2727
2719
|
}
|
|
2728
|
-
if (!cached
|
|
2720
|
+
if (!cached?.isValid) return;
|
|
2729
2721
|
const token = {
|
|
2730
2722
|
id: tokenId,
|
|
2731
2723
|
type: MODULE_TYPE6,
|
|
@@ -3003,7 +2995,7 @@ var PLATFORM7 = import_chaindata_provider32.SubAssetsTokenSchema.shape.platform.
|
|
|
3003
2995
|
|
|
3004
2996
|
// src/modules/substrate-assets/buildQueries.ts
|
|
3005
2997
|
var import_scale4 = require("@talismn/scale");
|
|
3006
|
-
var
|
|
2998
|
+
var import_util6 = require("@talismn/util");
|
|
3007
2999
|
var buildQueries = (networkId, balanceDefs, miniMetadata) => {
|
|
3008
3000
|
const networkStorageCoders = buildNetworkStorageCoders(networkId, miniMetadata, {
|
|
3009
3001
|
storage: ["Assets", "Account"]
|
|
@@ -3052,7 +3044,7 @@ var buildQueries = (networkId, balanceDefs, miniMetadata) => {
|
|
|
3052
3044
|
stateKeys: [stateKey],
|
|
3053
3045
|
decodeResult
|
|
3054
3046
|
};
|
|
3055
|
-
}).filter(
|
|
3047
|
+
}).filter(import_util6.isNotNil);
|
|
3056
3048
|
};
|
|
3057
3049
|
var tryEncode = (scaleCoder, ...args) => {
|
|
3058
3050
|
try {
|
|
@@ -3136,6 +3128,7 @@ var fetchBalances7 = async ({
|
|
|
3136
3128
|
var import_chaindata_provider33 = require("@talismn/chaindata-provider");
|
|
3137
3129
|
var import_scale5 = require("@talismn/scale");
|
|
3138
3130
|
var import_lodash_es18 = require("lodash-es");
|
|
3131
|
+
var import_polkadot_api = require("polkadot-api");
|
|
3139
3132
|
var fetchTokens7 = async ({
|
|
3140
3133
|
networkId,
|
|
3141
3134
|
tokens,
|
|
@@ -3177,8 +3170,8 @@ var fetchTokens7 = async ({
|
|
|
3177
3170
|
assetId,
|
|
3178
3171
|
decimals: metadata.decimals,
|
|
3179
3172
|
isFrozen: metadata.is_frozen,
|
|
3180
|
-
name: metadata.name
|
|
3181
|
-
symbol: metadata.symbol
|
|
3173
|
+
name: metadata.name ? import_polkadot_api.Binary.toText(metadata.name) : void 0,
|
|
3174
|
+
symbol: metadata.symbol ? import_polkadot_api.Binary.toText(metadata.symbol) : void 0
|
|
3182
3175
|
};
|
|
3183
3176
|
}),
|
|
3184
3177
|
(a) => a.assetId
|
|
@@ -3216,13 +3209,12 @@ var fetchTokens7 = async ({
|
|
|
3216
3209
|
|
|
3217
3210
|
// src/modules/substrate-assets/getMiniMetadata.ts
|
|
3218
3211
|
var import_chaindata_provider44 = require("@talismn/chaindata-provider");
|
|
3219
|
-
var
|
|
3212
|
+
var import_scale12 = require("@talismn/scale");
|
|
3220
3213
|
|
|
3221
3214
|
// src/types/balances.ts
|
|
3222
3215
|
var import_chaindata_provider42 = require("@talismn/chaindata-provider");
|
|
3223
3216
|
var import_token_rates2 = require("@talismn/token-rates");
|
|
3224
|
-
var
|
|
3225
|
-
var import_bignumber2 = __toESM(require("bignumber.js"));
|
|
3217
|
+
var import_util9 = require("@talismn/util");
|
|
3226
3218
|
|
|
3227
3219
|
// src/modules/substrate-dtao/alphaPrice.ts
|
|
3228
3220
|
var TAO_DECIMALS = 9n;
|
|
@@ -3239,12 +3231,189 @@ var taoToAlpha = (tao, scaledAlphaPrice) => {
|
|
|
3239
3231
|
if (!tao || !scaledAlphaPrice) return 0n;
|
|
3240
3232
|
return tao * ALPHA_PRICE_SCALE / scaledAlphaPrice;
|
|
3241
3233
|
};
|
|
3234
|
+
var taoToAlphaCeil = (tao, scaledAlphaPrice) => {
|
|
3235
|
+
if (!tao || !scaledAlphaPrice) return 0n;
|
|
3236
|
+
return (tao * ALPHA_PRICE_SCALE + scaledAlphaPrice - 1n) / scaledAlphaPrice;
|
|
3237
|
+
};
|
|
3238
|
+
|
|
3239
|
+
// src/modules/substrate-dtao/convictionLocks.ts
|
|
3240
|
+
var import_scale6 = require("@talismn/scale");
|
|
3241
|
+
var convictionLockKey = (address, netuid) => `${address}:${netuid}`;
|
|
3242
|
+
var getConvictionLockLabel = (lockType) => lockType === "perpetual" ? "Perpetual Conviction Lock" : "Decaying Conviction Lock";
|
|
3243
|
+
var findDTaoConvictionLock = (locks) => {
|
|
3244
|
+
for (const lock of locks ?? []) {
|
|
3245
|
+
const meta = lock.meta;
|
|
3246
|
+
if (meta?.convictionLock?.type !== "conviction-lock") continue;
|
|
3247
|
+
const lockType = meta.convictionLock.lockType;
|
|
3248
|
+
return {
|
|
3249
|
+
amount: lock.amount.planck,
|
|
3250
|
+
hotkey: meta.convictionLock.hotkey,
|
|
3251
|
+
lockType,
|
|
3252
|
+
label: getConvictionLockLabel(lockType)
|
|
3253
|
+
};
|
|
3254
|
+
}
|
|
3255
|
+
return null;
|
|
3256
|
+
};
|
|
3257
|
+
var toBigIntValue = (value) => {
|
|
3258
|
+
if (typeof value === "bigint") return value;
|
|
3259
|
+
if (value && typeof value === "object" && "bits" in value) {
|
|
3260
|
+
const bits = value.bits;
|
|
3261
|
+
if (typeof bits === "bigint") return bits;
|
|
3262
|
+
}
|
|
3263
|
+
return 0n;
|
|
3264
|
+
};
|
|
3265
|
+
var fetchConvictionLocks = async (connector, networkId, metadataRpc, addresses) => {
|
|
3266
|
+
if (!addresses.length) return [];
|
|
3267
|
+
const { unifiedMetadata, builder } = (0, import_scale6.parseMetadataRpc)(metadataRpc);
|
|
3268
|
+
if (!hasRuntimeApi(unifiedMetadata, "StakeInfoRuntimeApi", "get_coldkey_lock") || !hasStorageItems(unifiedMetadata, "SubtensorModule", ["Lock", "DecayingLock"])) {
|
|
3269
|
+
return [];
|
|
3270
|
+
}
|
|
3271
|
+
try {
|
|
3272
|
+
const lockStorageCoder = builder.buildStorage("SubtensorModule", "Lock");
|
|
3273
|
+
const decayingLockStorageCoder = builder.buildStorage("SubtensorModule", "DecayingLock");
|
|
3274
|
+
const lockStorageKeys = await fetchConvictionLockStorageKeys(
|
|
3275
|
+
connector,
|
|
3276
|
+
networkId,
|
|
3277
|
+
addresses,
|
|
3278
|
+
lockStorageCoder
|
|
3279
|
+
);
|
|
3280
|
+
if (!lockStorageKeys.length) return [];
|
|
3281
|
+
const hotkeyByPair = new Map(
|
|
3282
|
+
lockStorageKeys.map(({ address, netuid, hotkey }) => [
|
|
3283
|
+
convictionLockKey(address, netuid),
|
|
3284
|
+
hotkey
|
|
3285
|
+
])
|
|
3286
|
+
);
|
|
3287
|
+
const [lockModesByPair, lockStates] = await Promise.all([
|
|
3288
|
+
fetchConvictionLockModes(connector, networkId, lockStorageKeys, decayingLockStorageCoder),
|
|
3289
|
+
fetchColdkeyLockStates(connector, networkId, builder, lockStorageKeys)
|
|
3290
|
+
]);
|
|
3291
|
+
return lockStates.flatMap(({ address, netuid, lockState }) => {
|
|
3292
|
+
const amount = lockState?.locked_mass ?? 0n;
|
|
3293
|
+
const convictionRaw = toBigIntValue(lockState?.conviction);
|
|
3294
|
+
if (amount <= 0n && convictionRaw <= 0n) return [];
|
|
3295
|
+
const hotkey = hotkeyByPair.get(convictionLockKey(address, netuid));
|
|
3296
|
+
if (!hotkey) return [];
|
|
3297
|
+
return [
|
|
3298
|
+
{
|
|
3299
|
+
address,
|
|
3300
|
+
netuid,
|
|
3301
|
+
lock: {
|
|
3302
|
+
amount,
|
|
3303
|
+
hotkey,
|
|
3304
|
+
lockType: lockModesByPair.get(convictionLockKey(address, netuid)) ?? "decaying",
|
|
3305
|
+
convictionRaw: convictionRaw.toString()
|
|
3306
|
+
}
|
|
3307
|
+
}
|
|
3308
|
+
];
|
|
3309
|
+
});
|
|
3310
|
+
} catch (cause) {
|
|
3311
|
+
log_default.warn(`Failed to fetch Bittensor conviction locks on ${networkId}`, { cause });
|
|
3312
|
+
return [];
|
|
3313
|
+
}
|
|
3314
|
+
};
|
|
3315
|
+
var fetchConvictionLockStorageKeys = async (connector, networkId, addresses, storageCoder) => {
|
|
3316
|
+
const keysPerAddress = await Promise.all(
|
|
3317
|
+
addresses.map(async (address) => {
|
|
3318
|
+
let keyPrefix;
|
|
3319
|
+
try {
|
|
3320
|
+
keyPrefix = storageCoder.keys.enc(address);
|
|
3321
|
+
} catch (cause) {
|
|
3322
|
+
log_default.warn(
|
|
3323
|
+
`Failed to encode conviction Lock key prefix (address=${address}) on ${networkId}`,
|
|
3324
|
+
{ cause }
|
|
3325
|
+
);
|
|
3326
|
+
return [];
|
|
3327
|
+
}
|
|
3328
|
+
try {
|
|
3329
|
+
const stateKeys = await connector.send(networkId, "state_getKeys", [
|
|
3330
|
+
keyPrefix
|
|
3331
|
+
]);
|
|
3332
|
+
return stateKeys.flatMap((stateKey) => {
|
|
3333
|
+
try {
|
|
3334
|
+
const [, netuid, hotkey] = storageCoder.keys.dec(stateKey);
|
|
3335
|
+
return [{ address, netuid, hotkey }];
|
|
3336
|
+
} catch (cause) {
|
|
3337
|
+
log_default.warn(`Failed to decode conviction Lock key ${stateKey} on ${networkId}`, { cause });
|
|
3338
|
+
return [];
|
|
3339
|
+
}
|
|
3340
|
+
});
|
|
3341
|
+
} catch (cause) {
|
|
3342
|
+
log_default.warn(`Failed to fetch conviction Lock keys (address=${address}) on ${networkId}`, {
|
|
3343
|
+
cause
|
|
3344
|
+
});
|
|
3345
|
+
return [];
|
|
3346
|
+
}
|
|
3347
|
+
})
|
|
3348
|
+
);
|
|
3349
|
+
return keysPerAddress.flat();
|
|
3350
|
+
};
|
|
3351
|
+
var fetchConvictionLockModes = async (connector, networkId, pairs, storageCoder) => {
|
|
3352
|
+
const queries = pairs.map(
|
|
3353
|
+
({ address, netuid }) => {
|
|
3354
|
+
let stateKey = null;
|
|
3355
|
+
try {
|
|
3356
|
+
stateKey = storageCoder.keys.enc(address, netuid);
|
|
3357
|
+
} catch (cause) {
|
|
3358
|
+
log_default.warn(
|
|
3359
|
+
`Failed to encode conviction DecayingLock key (netuid=${netuid}, address=${address}) on ${networkId}`,
|
|
3360
|
+
{ cause }
|
|
3361
|
+
);
|
|
3362
|
+
}
|
|
3363
|
+
const key = convictionLockKey(address, netuid);
|
|
3364
|
+
return {
|
|
3365
|
+
stateKeys: [stateKey],
|
|
3366
|
+
decodeResult: (changes) => {
|
|
3367
|
+
const hexValue = changes[0];
|
|
3368
|
+
if (!hexValue) return [key, "decaying"];
|
|
3369
|
+
const decoded = (0, import_scale6.decodeScale)(
|
|
3370
|
+
storageCoder,
|
|
3371
|
+
hexValue,
|
|
3372
|
+
`Failed to decode DecayingLock for (netuid=${netuid}, address=${address}) on ${networkId}`
|
|
3373
|
+
);
|
|
3374
|
+
return [key, decoded === false ? "perpetual" : "decaying"];
|
|
3375
|
+
}
|
|
3376
|
+
};
|
|
3377
|
+
}
|
|
3378
|
+
);
|
|
3379
|
+
return new Map(await fetchRpcQueryPack(connector, networkId, queries));
|
|
3380
|
+
};
|
|
3381
|
+
var fetchColdkeyLockStates = async (connector, networkId, builder, pairs) => {
|
|
3382
|
+
return Promise.all(
|
|
3383
|
+
pairs.map(async ({ address, netuid }) => {
|
|
3384
|
+
try {
|
|
3385
|
+
const lockState = await fetchRuntimeCallResult(
|
|
3386
|
+
connector,
|
|
3387
|
+
networkId,
|
|
3388
|
+
builder,
|
|
3389
|
+
"StakeInfoRuntimeApi",
|
|
3390
|
+
"get_coldkey_lock",
|
|
3391
|
+
[address, netuid]
|
|
3392
|
+
);
|
|
3393
|
+
return { address, netuid, lockState };
|
|
3394
|
+
} catch (cause) {
|
|
3395
|
+
log_default.warn(
|
|
3396
|
+
`Failed to fetch get_coldkey_lock for (netuid=${netuid}, address=${address}) on ${networkId}`,
|
|
3397
|
+
{ cause }
|
|
3398
|
+
);
|
|
3399
|
+
return { address, netuid, lockState: null };
|
|
3400
|
+
}
|
|
3401
|
+
})
|
|
3402
|
+
);
|
|
3403
|
+
};
|
|
3242
3404
|
|
|
3243
3405
|
// src/modules/substrate-dtao/getDtaoTokenRates.ts
|
|
3244
3406
|
var import_chaindata_provider34 = require("@talismn/chaindata-provider");
|
|
3245
3407
|
var import_token_rates = require("@talismn/token-rates");
|
|
3246
3408
|
var ONE_ALPHA = 10n ** TAO_DECIMALS;
|
|
3247
|
-
var
|
|
3409
|
+
var getAlphaChange24h = (currency, taoChange24h, alphaPriceChange24h) => {
|
|
3410
|
+
if (typeof alphaPriceChange24h !== "number" || !Number.isFinite(alphaPriceChange24h))
|
|
3411
|
+
return void 0;
|
|
3412
|
+
if (currency === "tao") return alphaPriceChange24h;
|
|
3413
|
+
if (typeof taoChange24h !== "number" || !Number.isFinite(taoChange24h)) return void 0;
|
|
3414
|
+
return ((1 + alphaPriceChange24h / 100) * (1 + taoChange24h / 100) - 1) * 100;
|
|
3415
|
+
};
|
|
3416
|
+
var getDTaoTokenRates = (token, tokenRates, scaledAlphaPrice, alphaPriceChange24h) => {
|
|
3248
3417
|
try {
|
|
3249
3418
|
const taoTokenId = (0, import_chaindata_provider34.subNativeTokenId)(token.networkId);
|
|
3250
3419
|
const taoTokenRates = tokenRates[taoTokenId];
|
|
@@ -3260,8 +3429,7 @@ var getDTaoTokenRates = (token, tokenRates, scaledAlphaPrice) => {
|
|
|
3260
3429
|
alphaRates[currency] = {
|
|
3261
3430
|
price: taoRate.price * priceRatio,
|
|
3262
3431
|
marketCap: taoRate.marketCap ? taoRate.marketCap * priceRatio : void 0,
|
|
3263
|
-
change24h:
|
|
3264
|
-
// cannot be determined from TAO rates alone
|
|
3432
|
+
change24h: getAlphaChange24h(currency, taoRate.change24h, alphaPriceChange24h)
|
|
3265
3433
|
};
|
|
3266
3434
|
}
|
|
3267
3435
|
}
|
|
@@ -3279,8 +3447,8 @@ var PLATFORM8 = import_chaindata_provider35.SubDTaoTokenSchema.shape.platform.va
|
|
|
3279
3447
|
|
|
3280
3448
|
// src/modules/substrate-dtao/fetchBalances.ts
|
|
3281
3449
|
var import_chaindata_provider37 = require("@talismn/chaindata-provider");
|
|
3282
|
-
var
|
|
3283
|
-
var
|
|
3450
|
+
var import_scale7 = require("@talismn/scale");
|
|
3451
|
+
var import_util7 = require("@talismn/util");
|
|
3284
3452
|
var import_lodash_es19 = require("lodash-es");
|
|
3285
3453
|
|
|
3286
3454
|
// src/modules/substrate-dtao/calculatePendingRootClaimable.ts
|
|
@@ -3385,6 +3553,7 @@ var fetchBalances8 = async ({
|
|
|
3385
3553
|
[]
|
|
3386
3554
|
)
|
|
3387
3555
|
]);
|
|
3556
|
+
const dynamicInfoByNetuid = (0, import_lodash_es19.keyBy)(dynamicInfos.filter(import_util7.isNotNil), (info) => info.netuid);
|
|
3388
3557
|
const rootHotkeys = (0, import_lodash_es19.uniq)(
|
|
3389
3558
|
stakeInfos.flatMap(
|
|
3390
3559
|
([, stakes]) => stakes.filter((stake) => stake.netuid === ROOT_NETUID).map((stake) => stake.hotkey)
|
|
@@ -3404,13 +3573,10 @@ var fetchBalances8 = async ({
|
|
|
3404
3573
|
}
|
|
3405
3574
|
}
|
|
3406
3575
|
}
|
|
3407
|
-
const rootClaimedAmounts =
|
|
3408
|
-
connector,
|
|
3409
|
-
networkId,
|
|
3410
|
-
|
|
3411
|
-
addressHotkeyNetuidPairs
|
|
3412
|
-
) : /* @__PURE__ */ new Map();
|
|
3413
|
-
const dynamicInfoByNetuid = (0, import_lodash_es19.keyBy)(dynamicInfos.filter(import_util5.isNotNil), (info) => info.netuid);
|
|
3576
|
+
const [rootClaimedAmounts, convictionLocks] = await Promise.all([
|
|
3577
|
+
addressHotkeyNetuidPairs.length && miniMetadata.data ? fetchRootClaimedAmounts(connector, networkId, miniMetadata.data, addressHotkeyNetuidPairs) : Promise.resolve(/* @__PURE__ */ new Map()),
|
|
3578
|
+
miniMetadata.data ? fetchConvictionLocks(connector, networkId, miniMetadata.data, addresses) : Promise.resolve([])
|
|
3579
|
+
]);
|
|
3414
3580
|
const upsertBalance = (acc, address, tokenId, balance) => {
|
|
3415
3581
|
const key = `${address}:${tokenId}`;
|
|
3416
3582
|
const recordedBalance = acc[key];
|
|
@@ -3421,6 +3587,9 @@ var fetchBalances8 = async ({
|
|
|
3421
3587
|
// If the new balance has pendingRootClaim, use it (it's calculated from current state)
|
|
3422
3588
|
...balance.pendingRootClaim !== void 0 && {
|
|
3423
3589
|
pendingRootClaim: balance.pendingRootClaim
|
|
3590
|
+
},
|
|
3591
|
+
...balance.convictionLock !== void 0 && {
|
|
3592
|
+
convictionLock: balance.convictionLock
|
|
3424
3593
|
}
|
|
3425
3594
|
};
|
|
3426
3595
|
} else {
|
|
@@ -3463,6 +3632,21 @@ var fetchBalances8 = async ({
|
|
|
3463
3632
|
},
|
|
3464
3633
|
{}
|
|
3465
3634
|
);
|
|
3635
|
+
for (const { address, netuid, lock } of convictionLocks) {
|
|
3636
|
+
const dynamicInfo = dynamicInfoByNetuid[netuid];
|
|
3637
|
+
const scaledAlphaPrice = dynamicInfo ? getScaledAlphaPrice(dynamicInfo.alpha_in, dynamicInfo.tao_in) : 0n;
|
|
3638
|
+
const balance = {
|
|
3639
|
+
address,
|
|
3640
|
+
tokenId: (0, import_chaindata_provider37.subDTaoTokenId)(networkId, netuid),
|
|
3641
|
+
baseTokenId: (0, import_chaindata_provider37.subDTaoTokenId)(networkId, netuid),
|
|
3642
|
+
stake: 0n,
|
|
3643
|
+
hotkey: lock.hotkey,
|
|
3644
|
+
netuid,
|
|
3645
|
+
scaledAlphaPrice,
|
|
3646
|
+
convictionLock: lock
|
|
3647
|
+
};
|
|
3648
|
+
upsertBalance(balancesRaw, address, balance.tokenId, balance);
|
|
3649
|
+
}
|
|
3466
3650
|
const balances = Object.values(balancesRaw);
|
|
3467
3651
|
const tokensById = (0, import_lodash_es19.keyBy)(
|
|
3468
3652
|
tokensWithAddresses.map(([token]) => token),
|
|
@@ -3470,6 +3654,7 @@ var fetchBalances8 = async ({
|
|
|
3470
3654
|
);
|
|
3471
3655
|
const dynamicTokens = [];
|
|
3472
3656
|
for (const bal of balances) {
|
|
3657
|
+
if (bal.tokenId === bal.baseTokenId) continue;
|
|
3473
3658
|
if (!balanceDefs.some((def) => def.token.id === bal.tokenId)) {
|
|
3474
3659
|
const baseToken = tokensById[bal.baseTokenId];
|
|
3475
3660
|
if (baseToken) {
|
|
@@ -3490,6 +3675,8 @@ var fetchBalances8 = async ({
|
|
|
3490
3675
|
};
|
|
3491
3676
|
const stakeAmount = BigInt(stake?.stake?.toString() ?? "0");
|
|
3492
3677
|
const pendingRootClaimAmount = BigInt(stake?.pendingRootClaim?.toString() ?? "0");
|
|
3678
|
+
const convictionLockAmount = BigInt(stake?.convictionLock?.amount?.toString() ?? "0");
|
|
3679
|
+
const convictionLockConviction = BigInt(stake?.convictionLock?.convictionRaw ?? "0");
|
|
3493
3680
|
const hasZeroStake = stakeAmount === 0n;
|
|
3494
3681
|
const hasPendingRootClaim = pendingRootClaimAmount > 0n;
|
|
3495
3682
|
const balanceValue = {
|
|
@@ -3502,9 +3689,30 @@ var fetchBalances8 = async ({
|
|
|
3502
3689
|
type: "locked",
|
|
3503
3690
|
label: "Pending root claim",
|
|
3504
3691
|
amount: pendingRootClaimAmount.toString(),
|
|
3692
|
+
// The pending claim is not part of the stake (free amount): on-chain it only becomes
|
|
3693
|
+
// stake once claimed (root_claim_on_subnet). Since it was never included in `free`,
|
|
3694
|
+
// it must not be subtracted from it either: flag it so it does not reduce the staked
|
|
3695
|
+
// position's transferable amount.
|
|
3696
|
+
includeInTransferable: true,
|
|
3505
3697
|
meta
|
|
3506
3698
|
};
|
|
3507
3699
|
const values3 = [balanceValue, pendingRootClaimValue];
|
|
3700
|
+
if (stake?.convictionLock && (convictionLockAmount > 0n || convictionLockConviction > 0n)) {
|
|
3701
|
+
const convictionLockMeta = {
|
|
3702
|
+
...meta,
|
|
3703
|
+
convictionLock: {
|
|
3704
|
+
type: "conviction-lock",
|
|
3705
|
+
hotkey: stake.convictionLock.hotkey,
|
|
3706
|
+
lockType: stake.convictionLock.lockType
|
|
3707
|
+
}
|
|
3708
|
+
};
|
|
3709
|
+
values3.push({
|
|
3710
|
+
type: "locked",
|
|
3711
|
+
label: getConvictionLockLabel(stake.convictionLock.lockType),
|
|
3712
|
+
amount: convictionLockAmount.toString(),
|
|
3713
|
+
meta: convictionLockMeta
|
|
3714
|
+
});
|
|
3715
|
+
}
|
|
3508
3716
|
if (hasZeroStake && hasPendingRootClaim) {
|
|
3509
3717
|
values3.push({
|
|
3510
3718
|
type: "extra",
|
|
@@ -3542,7 +3750,7 @@ var fetchBalances8 = async ({
|
|
|
3542
3750
|
}
|
|
3543
3751
|
};
|
|
3544
3752
|
var buildStorageCoder = (metadataRpc, pallet, entry) => {
|
|
3545
|
-
const { builder } = (0,
|
|
3753
|
+
const { builder } = (0, import_scale7.parseMetadataRpc)(metadataRpc);
|
|
3546
3754
|
return builder.buildStorage(pallet, entry);
|
|
3547
3755
|
};
|
|
3548
3756
|
var buildRootClaimableStorageCoder = async (_connector, networkId, metadataRpc) => {
|
|
@@ -3586,7 +3794,7 @@ var buildRootClaimableQueries = (networkId, hotkeys, storageCoder) => {
|
|
|
3586
3794
|
if (!hexValue) {
|
|
3587
3795
|
return [hotkey, /* @__PURE__ */ new Map()];
|
|
3588
3796
|
}
|
|
3589
|
-
const decoded = (0,
|
|
3797
|
+
const decoded = (0, import_scale7.decodeScale)(
|
|
3590
3798
|
storageCoder,
|
|
3591
3799
|
hexValue,
|
|
3592
3800
|
`Failed to decode RootClaimable for hotkey ${hotkey} on ${networkId}`
|
|
@@ -3630,7 +3838,7 @@ var buildRootClaimedQueries = (networkId, addressHotkeyNetuidPairs, storageCoder
|
|
|
3630
3838
|
if (!hexValue) {
|
|
3631
3839
|
return [address, hotkey, netuid, 0n];
|
|
3632
3840
|
}
|
|
3633
|
-
const decoded = (0,
|
|
3841
|
+
const decoded = (0, import_scale7.decodeScale)(
|
|
3634
3842
|
storageCoder,
|
|
3635
3843
|
hexValue,
|
|
3636
3844
|
`Failed to decode RootClaimed for (netuid=${netuid}, hotkey=${hotkey}, address=${address}) on ${networkId}`
|
|
@@ -3686,9 +3894,10 @@ var fetchRootClaimedAmounts = async (connector, networkId, metadataRpc, addressH
|
|
|
3686
3894
|
|
|
3687
3895
|
// src/modules/substrate-dtao/fetchTokens.ts
|
|
3688
3896
|
var import_chaindata_provider38 = require("@talismn/chaindata-provider");
|
|
3689
|
-
var
|
|
3690
|
-
var
|
|
3897
|
+
var import_scale8 = require("@talismn/scale");
|
|
3898
|
+
var import_util8 = require("@talismn/util");
|
|
3691
3899
|
var import_lodash_es20 = require("lodash-es");
|
|
3900
|
+
var import_polkadot_api2 = require("polkadot-api");
|
|
3692
3901
|
var NATIVE_TOKEN_SYMBOLS = {
|
|
3693
3902
|
"bittensor": "TAO",
|
|
3694
3903
|
"bittensor-testnet": "testTAO"
|
|
@@ -3712,10 +3921,10 @@ var fetchTokens8 = async ({
|
|
|
3712
3921
|
[]
|
|
3713
3922
|
)
|
|
3714
3923
|
]);
|
|
3715
|
-
return dynamicInfos.filter(
|
|
3924
|
+
return dynamicInfos.filter(import_util8.isNotNil).map((info) => {
|
|
3716
3925
|
const config = tokens.find((t) => t.netuid === info.netuid);
|
|
3717
3926
|
let symbol = new TextDecoder().decode(Uint8Array.from(info.token_symbol));
|
|
3718
|
-
const subnetName = info.subnet_identity?.subnet_name
|
|
3927
|
+
const subnetName = (info.subnet_identity?.subnet_name ? import_polkadot_api2.Binary.toText(info.subnet_identity.subnet_name) : void 0) ?? (info.netuid === 0 ? "Root" : `Subnet ${info.netuid}`);
|
|
3719
3928
|
const name = `SN${info.netuid} | ${subnetName} ${symbol}`;
|
|
3720
3929
|
if (info.netuid === 0 && NATIVE_TOKEN_SYMBOLS[networkId])
|
|
3721
3930
|
symbol = NATIVE_TOKEN_SYMBOLS[networkId];
|
|
@@ -3740,10 +3949,10 @@ var fetchTokens8 = async ({
|
|
|
3740
3949
|
});
|
|
3741
3950
|
};
|
|
3742
3951
|
var fetchTransferableTokensMap = async (connector, metadata, networkId) => {
|
|
3743
|
-
const { builder } = (0,
|
|
3952
|
+
const { builder } = (0, import_scale8.parseMetadataRpc)(metadata);
|
|
3744
3953
|
const transferToggleCodec = builder.buildStorage("SubtensorModule", "TransferToggle");
|
|
3745
3954
|
const transferToggleKeys = await connector.send(networkId, "state_getKeys", [
|
|
3746
|
-
(0,
|
|
3955
|
+
(0, import_scale8.getStorageKeyPrefix)("SubtensorModule", "TransferToggle")
|
|
3747
3956
|
]);
|
|
3748
3957
|
const transferToggleResults = await connector.send(
|
|
3749
3958
|
networkId,
|
|
@@ -3762,7 +3971,7 @@ var fetchTransferableTokensMap = async (connector, metadata, networkId) => {
|
|
|
3762
3971
|
|
|
3763
3972
|
// src/modules/substrate-dtao/getMiniMetadata.ts
|
|
3764
3973
|
var import_chaindata_provider39 = require("@talismn/chaindata-provider");
|
|
3765
|
-
var
|
|
3974
|
+
var import_scale9 = require("@talismn/scale");
|
|
3766
3975
|
var getMiniMetadata7 = ({
|
|
3767
3976
|
networkId,
|
|
3768
3977
|
specVersion,
|
|
@@ -3776,7 +3985,7 @@ var getMiniMetadata7 = ({
|
|
|
3776
3985
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
3777
3986
|
);
|
|
3778
3987
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
3779
|
-
const { unifiedMetadata } = (0,
|
|
3988
|
+
const { unifiedMetadata } = (0, import_scale9.parseMetadataRpc)(metadataRpc);
|
|
3780
3989
|
if (unifiedMetadata.version < 14)
|
|
3781
3990
|
throw new Error(
|
|
3782
3991
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -3792,16 +4001,21 @@ var getMiniMetadata7 = ({
|
|
|
3792
4001
|
};
|
|
3793
4002
|
};
|
|
3794
4003
|
var getData = (metadataRpc) => {
|
|
3795
|
-
const { metadata, unifiedMetadata } = (0,
|
|
4004
|
+
const { metadata, unifiedMetadata } = (0, import_scale9.parseMetadataRpc)(metadataRpc);
|
|
3796
4005
|
const isBittensor = unifiedMetadata.pallets.some(({ name }) => name === "SubtensorModule");
|
|
3797
4006
|
if (!isBittensor) return null;
|
|
3798
|
-
(0,
|
|
4007
|
+
(0, import_scale9.compactMetadata)(
|
|
3799
4008
|
metadata,
|
|
3800
|
-
[
|
|
4009
|
+
[
|
|
4010
|
+
{
|
|
4011
|
+
pallet: "SubtensorModule",
|
|
4012
|
+
items: ["TransferToggle", "RootClaimable", "RootClaimed", "Lock", "DecayingLock"]
|
|
4013
|
+
}
|
|
4014
|
+
],
|
|
3801
4015
|
[
|
|
3802
4016
|
{
|
|
3803
4017
|
runtimeApi: "StakeInfoRuntimeApi",
|
|
3804
|
-
methods: ["get_stake_info_for_coldkeys"]
|
|
4018
|
+
methods: ["get_stake_info_for_coldkeys", "get_coldkey_lock"]
|
|
3805
4019
|
},
|
|
3806
4020
|
{
|
|
3807
4021
|
runtimeApi: "SubnetInfoRuntimeApi",
|
|
@@ -3809,14 +4023,14 @@ var getData = (metadataRpc) => {
|
|
|
3809
4023
|
}
|
|
3810
4024
|
]
|
|
3811
4025
|
);
|
|
3812
|
-
return (0,
|
|
4026
|
+
return (0, import_scale9.encodeMetadata)(metadata);
|
|
3813
4027
|
};
|
|
3814
4028
|
|
|
3815
4029
|
// src/modules/substrate-dtao/getTransferCallData.ts
|
|
3816
4030
|
var import_utils3 = require("@polkadot-api/utils");
|
|
3817
4031
|
var import_chaindata_provider40 = require("@talismn/chaindata-provider");
|
|
3818
|
-
var
|
|
3819
|
-
var
|
|
4032
|
+
var import_scale10 = require("@talismn/scale");
|
|
4033
|
+
var import_polkadot_api3 = require("polkadot-api");
|
|
3820
4034
|
var getTransferCallData7 = ({
|
|
3821
4035
|
from: from2,
|
|
3822
4036
|
to,
|
|
@@ -3828,7 +4042,7 @@ var getTransferCallData7 = ({
|
|
|
3828
4042
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE8}.`);
|
|
3829
4043
|
const { netuid: subnetId, hotkey } = (0, import_chaindata_provider40.parseSubDTaoTokenId)(token.id);
|
|
3830
4044
|
if (!hotkey) throw new Error(`Missing hotkey`);
|
|
3831
|
-
const { builder } = (0,
|
|
4045
|
+
const { builder } = (0, import_scale10.parseMetadataRpc)(metadataRpc);
|
|
3832
4046
|
const { codec, location } = builder.buildCall("SubtensorModule", "transfer_stake");
|
|
3833
4047
|
const args = codec.enc({
|
|
3834
4048
|
origin_netuid: subnetId,
|
|
@@ -3837,10 +4051,10 @@ var getTransferCallData7 = ({
|
|
|
3837
4051
|
destination_netuid: subnetId,
|
|
3838
4052
|
alpha_amount: value
|
|
3839
4053
|
});
|
|
3840
|
-
const callData =
|
|
4054
|
+
const callData = (0, import_utils3.mergeUint8)([new Uint8Array(location), args]);
|
|
3841
4055
|
return {
|
|
3842
4056
|
address: from2,
|
|
3843
|
-
method:
|
|
4057
|
+
method: import_polkadot_api3.Binary.toHex(callData)
|
|
3844
4058
|
};
|
|
3845
4059
|
};
|
|
3846
4060
|
|
|
@@ -3855,6 +4069,7 @@ var subscribeBalances7 = ({
|
|
|
3855
4069
|
miniMetadata
|
|
3856
4070
|
}) => {
|
|
3857
4071
|
if (!tokensWithAddresses.length) return (0, import_rxjs9.of)({ success: [], errors: [] });
|
|
4072
|
+
const balanceDefs = getBalanceDefs(tokensWithAddresses);
|
|
3858
4073
|
return new import_rxjs9.Observable((subscriber) => {
|
|
3859
4074
|
const abortController = new AbortController();
|
|
3860
4075
|
const poll = async () => {
|
|
@@ -3868,8 +4083,8 @@ var subscribeBalances7 = ({
|
|
|
3868
4083
|
});
|
|
3869
4084
|
if (abortController.signal.aborted) return;
|
|
3870
4085
|
subscriber.next(balances);
|
|
3871
|
-
setTimeout(poll, SUBSCRIPTION_INTERVAL7);
|
|
3872
4086
|
} catch (error) {
|
|
4087
|
+
if (abortController.signal.aborted) return;
|
|
3873
4088
|
log_default.error("Error", {
|
|
3874
4089
|
module: MODULE_TYPE8,
|
|
3875
4090
|
networkId,
|
|
@@ -3877,8 +4092,17 @@ var subscribeBalances7 = ({
|
|
|
3877
4092
|
addressesByToken: tokensWithAddresses,
|
|
3878
4093
|
error
|
|
3879
4094
|
});
|
|
3880
|
-
|
|
4095
|
+
const fetchError = error instanceof Error ? error : new Error(String(error));
|
|
4096
|
+
subscriber.next({
|
|
4097
|
+
success: [],
|
|
4098
|
+
errors: balanceDefs.map((def) => ({
|
|
4099
|
+
tokenId: def.token.id,
|
|
4100
|
+
address: def.address,
|
|
4101
|
+
error: fetchError
|
|
4102
|
+
}))
|
|
4103
|
+
});
|
|
3881
4104
|
}
|
|
4105
|
+
if (!abortController.signal.aborted) setTimeout(poll, SUBSCRIPTION_INTERVAL7);
|
|
3882
4106
|
};
|
|
3883
4107
|
poll();
|
|
3884
4108
|
return () => {
|
|
@@ -3910,7 +4134,7 @@ var SubDTaoTokenConfigSchema = import_v411.default.strictObject({
|
|
|
3910
4134
|
function excludeFromTransferableAmount(locks) {
|
|
3911
4135
|
if (typeof locks === "string") return BigInt(locks);
|
|
3912
4136
|
if (!Array.isArray(locks)) locks = [locks];
|
|
3913
|
-
return locks.filter((lock) => lock.includeInTransferable !== true).map((lock) => lock.amount.planck).reduce((max, lock) =>
|
|
4137
|
+
return locks.filter((lock) => lock.includeInTransferable !== true).map((lock) => lock.amount.planck).reduce((max, lock) => import_util9.BigMath.max(max, lock), 0n);
|
|
3914
4138
|
}
|
|
3915
4139
|
function excludeFromFeePayableLocks(locks) {
|
|
3916
4140
|
if (typeof locks === "string") return [];
|
|
@@ -3938,7 +4162,7 @@ var Balances = class _Balances {
|
|
|
3938
4162
|
if (balances instanceof Balance) return new _Balances([balances], hydrate);
|
|
3939
4163
|
if (!Array.isArray(balances)) return new _Balances(Object.values(balances), hydrate);
|
|
3940
4164
|
if (balances.length === 0) return this;
|
|
3941
|
-
if (!(0,
|
|
4165
|
+
if (!(0, import_util9.isArrayOf)(balances, Balance))
|
|
3942
4166
|
return new _Balances(
|
|
3943
4167
|
balances.map((storage) => new Balance(storage)),
|
|
3944
4168
|
hydrate
|
|
@@ -4132,7 +4356,7 @@ var Balance = class {
|
|
|
4132
4356
|
if (hydrate !== void 0) this.#db = hydrate;
|
|
4133
4357
|
};
|
|
4134
4358
|
#format = (balance) => new BalanceFormatter(
|
|
4135
|
-
(0,
|
|
4359
|
+
(0, import_util9.isBigInt)(balance) ? balance.toString() : balance,
|
|
4136
4360
|
this.decimals || void 0,
|
|
4137
4361
|
this.rates
|
|
4138
4362
|
);
|
|
@@ -4181,9 +4405,9 @@ var Balance = class {
|
|
|
4181
4405
|
const totalSupply = extras.find((extra2) => extra2.label === "totalSupply")?.amount ?? "0";
|
|
4182
4406
|
const reserve0 = extras.find((extra2) => extra2.label === "reserve0")?.amount ?? "0";
|
|
4183
4407
|
const reserve1 = extras.find((extra2) => extra2.label === "reserve1")?.amount ?? "0";
|
|
4184
|
-
const totalSupplyTokens = (
|
|
4185
|
-
const reserve0Tokens = (
|
|
4186
|
-
const reserve1Tokens = (
|
|
4408
|
+
const totalSupplyTokens = configureBigNumber_default(totalSupply).times(10 ** (-1 * decimals));
|
|
4409
|
+
const reserve0Tokens = configureBigNumber_default(reserve0).times(10 ** (-1 * decimals0));
|
|
4410
|
+
const reserve1Tokens = configureBigNumber_default(reserve1).times(10 ** (-1 * decimals1));
|
|
4187
4411
|
const rates0Currencies = new Set(Object.keys(rates0));
|
|
4188
4412
|
const rates1Currencies = new Set(Object.keys(rates1));
|
|
4189
4413
|
const currencies = [...rates0Currencies].filter((c) => rates1Currencies.has(c));
|
|
@@ -4191,7 +4415,7 @@ var Balance = class {
|
|
|
4191
4415
|
(currency) => [
|
|
4192
4416
|
currency,
|
|
4193
4417
|
// tvl (in a given currency) == reserve0*currencyRate0 + reserve1*currencyRate1
|
|
4194
|
-
|
|
4418
|
+
configureBigNumber_default.sum(
|
|
4195
4419
|
reserve0Tokens.times(rates0[currency]?.price ?? 0),
|
|
4196
4420
|
reserve1Tokens.times(rates1[currency]?.price ?? 0)
|
|
4197
4421
|
)
|
|
@@ -4277,7 +4501,7 @@ var Balance = class {
|
|
|
4277
4501
|
/** The frozen balance of this token. Is included in the free amount. */
|
|
4278
4502
|
get locked() {
|
|
4279
4503
|
return this.#format(
|
|
4280
|
-
this.locks.map(({ amount }) => amount.planck).reduce((a, b) =>
|
|
4504
|
+
this.locks.map(({ amount }) => amount.planck).reduce((a, b) => import_util9.BigMath.max(a, b), 0n)
|
|
4281
4505
|
);
|
|
4282
4506
|
}
|
|
4283
4507
|
get locks() {
|
|
@@ -4301,15 +4525,15 @@ var Balance = class {
|
|
|
4301
4525
|
const oldTransferableCalculation = () => {
|
|
4302
4526
|
if (this.locks.length === 0) return this.free;
|
|
4303
4527
|
const excludeAmount = excludeFromTransferableAmount(this.locks);
|
|
4304
|
-
return this.#format(
|
|
4528
|
+
return this.#format(import_util9.BigMath.max(this.free.planck - excludeAmount, 0n));
|
|
4305
4529
|
};
|
|
4306
4530
|
const newTransferableCalculation = () => {
|
|
4307
4531
|
if (this.locks.length === 0) return this.free;
|
|
4308
|
-
const untouchableAmount =
|
|
4532
|
+
const untouchableAmount = import_util9.BigMath.max(
|
|
4309
4533
|
excludeFromTransferableAmount(this.locks) - this.reserved.planck,
|
|
4310
4534
|
0n
|
|
4311
4535
|
);
|
|
4312
|
-
return this.#format(
|
|
4536
|
+
return this.#format(import_util9.BigMath.max(this.free.planck - untouchableAmount, 0n));
|
|
4313
4537
|
};
|
|
4314
4538
|
if (this.#storage.useLegacyTransferableCalculation) return oldTransferableCalculation();
|
|
4315
4539
|
return newTransferableCalculation();
|
|
@@ -4321,7 +4545,7 @@ var Balance = class {
|
|
|
4321
4545
|
*/
|
|
4322
4546
|
get unavailable() {
|
|
4323
4547
|
const oldCalculation = () => this.locked.planck + this.reserved.planck;
|
|
4324
|
-
const newCalculation = () =>
|
|
4548
|
+
const newCalculation = () => import_util9.BigMath.max(this.locked.planck, this.reserved.planck);
|
|
4325
4549
|
const baseUnavailable = this.#storage.useLegacyTransferableCalculation ? oldCalculation() : newCalculation();
|
|
4326
4550
|
const nomPoolStakedPlancks = this.locks.some(
|
|
4327
4551
|
(lock) => lock.source === "substrate-native-holds" && lock.label === "DelegatedStaking"
|
|
@@ -4331,8 +4555,8 @@ var Balance = class {
|
|
|
4331
4555
|
/** The feePayable balance of this token. Is generally the free amount - the feeFrozen amount. */
|
|
4332
4556
|
get feePayable() {
|
|
4333
4557
|
if (this.locks.length === 0) return this.free;
|
|
4334
|
-
const excludeAmount = excludeFromFeePayableLocks(this.locked.planck.toString()).map((lock) => BigInt(lock.amount)).reduce((max, lock) =>
|
|
4335
|
-
return this.#format(
|
|
4558
|
+
const excludeAmount = excludeFromFeePayableLocks(this.locked.planck.toString()).map((lock) => BigInt(lock.amount)).reduce((max, lock) => import_util9.BigMath.max(max, lock), 0n);
|
|
4559
|
+
return this.#format(import_util9.BigMath.max(this.free.planck - excludeAmount, 0n));
|
|
4336
4560
|
}
|
|
4337
4561
|
};
|
|
4338
4562
|
var BalanceValueGetter = class {
|
|
@@ -4355,7 +4579,7 @@ var BalanceFormatter = class {
|
|
|
4355
4579
|
#decimals;
|
|
4356
4580
|
#tokenRates;
|
|
4357
4581
|
constructor(planck, decimals, fiatRatios) {
|
|
4358
|
-
this.#planck = (0,
|
|
4582
|
+
this.#planck = (0, import_util9.isBigInt)(planck) ? planck.toString() : planck ?? "0";
|
|
4359
4583
|
this.#decimals = decimals || 0;
|
|
4360
4584
|
this.#tokenRates = fiatRatios || null;
|
|
4361
4585
|
}
|
|
@@ -4364,7 +4588,7 @@ var BalanceFormatter = class {
|
|
|
4364
4588
|
return BigInt(this.#planck);
|
|
4365
4589
|
}
|
|
4366
4590
|
get tokens() {
|
|
4367
|
-
return (0,
|
|
4591
|
+
return (0, import_util9.planckToTokens)(this.#planck, this.#decimals);
|
|
4368
4592
|
}
|
|
4369
4593
|
fiat(currency) {
|
|
4370
4594
|
if (!this.#tokenRates) return null;
|
|
@@ -4559,13 +4783,13 @@ var getValueId = (amount) => {
|
|
|
4559
4783
|
|
|
4560
4784
|
// src/types/minimetadatas.ts
|
|
4561
4785
|
var import_chaindata_provider43 = require("@talismn/chaindata-provider");
|
|
4562
|
-
var
|
|
4786
|
+
var import_scale11 = require("@talismn/scale");
|
|
4563
4787
|
var deriveMiniMetadataId = ({
|
|
4564
4788
|
source,
|
|
4565
4789
|
chainId,
|
|
4566
4790
|
specVersion
|
|
4567
|
-
}) => (0,
|
|
4568
|
-
(0,
|
|
4791
|
+
}) => (0, import_scale11.toHex)(
|
|
4792
|
+
(0, import_scale11.Twox128)(new TextEncoder().encode(`${source}${chainId}${specVersion}${import_chaindata_provider43.MINIMETADATA_VERSION}`))
|
|
4569
4793
|
).slice(-32);
|
|
4570
4794
|
|
|
4571
4795
|
// src/modules/substrate-assets/getMiniMetadata.ts
|
|
@@ -4582,7 +4806,7 @@ var getMiniMetadata8 = ({
|
|
|
4582
4806
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
4583
4807
|
);
|
|
4584
4808
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
4585
|
-
const { unifiedMetadata } = (0,
|
|
4809
|
+
const { unifiedMetadata } = (0, import_scale12.parseMetadataRpc)(metadataRpc);
|
|
4586
4810
|
if (unifiedMetadata.version < 14)
|
|
4587
4811
|
throw new Error(
|
|
4588
4812
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -4598,17 +4822,17 @@ var getMiniMetadata8 = ({
|
|
|
4598
4822
|
};
|
|
4599
4823
|
};
|
|
4600
4824
|
var getData2 = (metadataRpc) => {
|
|
4601
|
-
const { metadata, unifiedMetadata } = (0,
|
|
4825
|
+
const { metadata, unifiedMetadata } = (0, import_scale12.parseMetadataRpc)(metadataRpc);
|
|
4602
4826
|
if (!hasStorageItems(unifiedMetadata, "Assets", ["Account", "Asset", "Metadata"])) return null;
|
|
4603
|
-
(0,
|
|
4604
|
-
return (0,
|
|
4827
|
+
(0, import_scale12.compactMetadata)(metadata, [{ pallet: "Assets", items: ["Account", "Asset", "Metadata"] }]);
|
|
4828
|
+
return (0, import_scale12.encodeMetadata)(metadata);
|
|
4605
4829
|
};
|
|
4606
4830
|
|
|
4607
4831
|
// src/modules/substrate-assets/getTransferCallData.ts
|
|
4608
4832
|
var import_utils4 = require("@polkadot-api/utils");
|
|
4609
4833
|
var import_chaindata_provider45 = require("@talismn/chaindata-provider");
|
|
4610
|
-
var
|
|
4611
|
-
var
|
|
4834
|
+
var import_scale13 = require("@talismn/scale");
|
|
4835
|
+
var import_polkadot_api4 = require("polkadot-api");
|
|
4612
4836
|
var getTransferCallData8 = ({
|
|
4613
4837
|
from: from2,
|
|
4614
4838
|
to,
|
|
@@ -4619,14 +4843,14 @@ var getTransferCallData8 = ({
|
|
|
4619
4843
|
}) => {
|
|
4620
4844
|
if (!(0, import_chaindata_provider45.isTokenOfType)(token, MODULE_TYPE7))
|
|
4621
4845
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE7}.`);
|
|
4622
|
-
const { builder } = (0,
|
|
4846
|
+
const { builder } = (0, import_scale13.parseMetadataRpc)(metadataRpc);
|
|
4623
4847
|
const method = getTransferMethod(type);
|
|
4624
4848
|
const { codec, location } = builder.buildCall("Assets", method);
|
|
4625
4849
|
const args = getEncodedArgs(method, token.assetId, to, value, codec);
|
|
4626
|
-
const callData =
|
|
4850
|
+
const callData = (0, import_utils4.mergeUint8)([new Uint8Array(location), args]);
|
|
4627
4851
|
return {
|
|
4628
4852
|
address: from2,
|
|
4629
|
-
method:
|
|
4853
|
+
method: import_polkadot_api4.Binary.toHex(callData)
|
|
4630
4854
|
};
|
|
4631
4855
|
};
|
|
4632
4856
|
var getTransferMethod = (type) => {
|
|
@@ -4666,13 +4890,13 @@ var getTransferEncodedArgs = (assetId, to, value, codec) => {
|
|
|
4666
4890
|
() => ({
|
|
4667
4891
|
id: Number(assetId),
|
|
4668
4892
|
// for most networks
|
|
4669
|
-
target: (0,
|
|
4893
|
+
target: (0, import_polkadot_api4.Enum)("Id", to),
|
|
4670
4894
|
amount: BigInt(value)
|
|
4671
4895
|
}),
|
|
4672
4896
|
() => ({
|
|
4673
4897
|
id: BigInt(assetId),
|
|
4674
4898
|
// for Astar
|
|
4675
|
-
target: (0,
|
|
4899
|
+
target: (0, import_polkadot_api4.Enum)("Id", to),
|
|
4676
4900
|
amount: BigInt(value)
|
|
4677
4901
|
}),
|
|
4678
4902
|
() => ({
|
|
@@ -4688,13 +4912,13 @@ var getTransferAllEncodedArgs = (assetId, to, codec) => {
|
|
|
4688
4912
|
() => ({
|
|
4689
4913
|
id: Number(assetId),
|
|
4690
4914
|
// for most networks
|
|
4691
|
-
dest: (0,
|
|
4915
|
+
dest: (0, import_polkadot_api4.Enum)("Id", to),
|
|
4692
4916
|
keep_alive: false
|
|
4693
4917
|
}),
|
|
4694
4918
|
() => ({
|
|
4695
4919
|
id: BigInt(assetId),
|
|
4696
4920
|
// for Astar
|
|
4697
|
-
dest: (0,
|
|
4921
|
+
dest: (0, import_polkadot_api4.Enum)("Id", to),
|
|
4698
4922
|
keep_alive: false
|
|
4699
4923
|
}),
|
|
4700
4924
|
() => ({
|
|
@@ -4750,8 +4974,8 @@ var MODULE_TYPE9 = import_chaindata_provider47.SubForeignAssetsTokenSchema.shape
|
|
|
4750
4974
|
var PLATFORM9 = import_chaindata_provider47.SubForeignAssetsTokenSchema.shape.platform.value;
|
|
4751
4975
|
|
|
4752
4976
|
// src/modules/substrate-foreignassets/buildQueries.ts
|
|
4753
|
-
var
|
|
4754
|
-
var
|
|
4977
|
+
var import_scale14 = require("@talismn/scale");
|
|
4978
|
+
var import_util10 = require("@talismn/util");
|
|
4755
4979
|
var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
4756
4980
|
const networkStorageCoders = buildNetworkStorageCoders(networkId, miniMetadata, {
|
|
4757
4981
|
storage: ["ForeignAssets", "Account"]
|
|
@@ -4760,7 +4984,7 @@ var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
4760
4984
|
const scaleCoder = networkStorageCoders?.storage;
|
|
4761
4985
|
const getStateKey = (onChainId) => {
|
|
4762
4986
|
try {
|
|
4763
|
-
return scaleCoder?.keys?.enc?.((0,
|
|
4987
|
+
return scaleCoder?.keys?.enc?.((0, import_scale14.papiParse)(onChainId), address);
|
|
4764
4988
|
} catch {
|
|
4765
4989
|
return null;
|
|
4766
4990
|
}
|
|
@@ -4773,7 +4997,7 @@ var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
4773
4997
|
return null;
|
|
4774
4998
|
}
|
|
4775
4999
|
const decodeResult = (changes) => {
|
|
4776
|
-
const decoded = (0,
|
|
5000
|
+
const decoded = (0, import_scale14.decodeScale)(
|
|
4777
5001
|
scaleCoder,
|
|
4778
5002
|
changes[0],
|
|
4779
5003
|
`Failed to decode substrate-assets balance on chain ${networkId}`
|
|
@@ -4806,7 +5030,7 @@ var buildQueries2 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
4806
5030
|
stateKeys: [stateKey],
|
|
4807
5031
|
decodeResult
|
|
4808
5032
|
};
|
|
4809
|
-
}).filter(
|
|
5033
|
+
}).filter(import_util10.isNotNil);
|
|
4810
5034
|
};
|
|
4811
5035
|
|
|
4812
5036
|
// src/modules/substrate-foreignassets/fetchBalances.ts
|
|
@@ -4881,8 +5105,9 @@ var fetchBalances9 = async ({
|
|
|
4881
5105
|
|
|
4882
5106
|
// src/modules/substrate-foreignassets/fetchTokens.ts
|
|
4883
5107
|
var import_chaindata_provider48 = require("@talismn/chaindata-provider");
|
|
4884
|
-
var
|
|
5108
|
+
var import_scale15 = require("@talismn/scale");
|
|
4885
5109
|
var import_lodash_es22 = require("lodash-es");
|
|
5110
|
+
var import_polkadot_api5 = require("polkadot-api");
|
|
4886
5111
|
var fetchTokens9 = async ({
|
|
4887
5112
|
networkId,
|
|
4888
5113
|
tokens,
|
|
@@ -4891,15 +5116,15 @@ var fetchTokens9 = async ({
|
|
|
4891
5116
|
}) => {
|
|
4892
5117
|
const anyMiniMetadata = miniMetadata;
|
|
4893
5118
|
if (!anyMiniMetadata?.data) return [];
|
|
4894
|
-
const { builder } = (0,
|
|
5119
|
+
const { builder } = (0, import_scale15.parseMetadataRpc)(anyMiniMetadata.data);
|
|
4895
5120
|
const assetCodec = builder.buildStorage("ForeignAssets", "Asset");
|
|
4896
5121
|
const metadataCodec = builder.buildStorage("ForeignAssets", "Metadata");
|
|
4897
5122
|
const [allAssetStorageKeys, allMetadataStorageKeys] = await Promise.all([
|
|
4898
5123
|
connector.send(networkId, "state_getKeys", [
|
|
4899
|
-
(0,
|
|
5124
|
+
(0, import_scale15.getStorageKeyPrefix)("ForeignAssets", "Asset")
|
|
4900
5125
|
]),
|
|
4901
5126
|
connector.send(networkId, "state_getKeys", [
|
|
4902
|
-
(0,
|
|
5127
|
+
(0, import_scale15.getStorageKeyPrefix)("ForeignAssets", "Metadata")
|
|
4903
5128
|
])
|
|
4904
5129
|
]);
|
|
4905
5130
|
const [assetStorageResults, metadataStorageResults] = await Promise.all([
|
|
@@ -4911,7 +5136,7 @@ var fetchTokens9 = async ({
|
|
|
4911
5136
|
const assetByOnChainId = (0, import_lodash_es22.keyBy)(
|
|
4912
5137
|
assetStorageEntries.map(([key, value]) => {
|
|
4913
5138
|
const [decodedKey] = assetCodec.keys.dec(key);
|
|
4914
|
-
const onChainId = (0,
|
|
5139
|
+
const onChainId = (0, import_scale15.papiStringify)(decodedKey);
|
|
4915
5140
|
const asset = assetCodec.value.dec(value);
|
|
4916
5141
|
return { onChainId, existentialDeposit: asset.min_balance, isSufficient: asset.is_sufficient };
|
|
4917
5142
|
}),
|
|
@@ -4920,14 +5145,14 @@ var fetchTokens9 = async ({
|
|
|
4920
5145
|
const metadataByOnChainId = (0, import_lodash_es22.keyBy)(
|
|
4921
5146
|
metadataStorageEntries.map(([key, value]) => {
|
|
4922
5147
|
const [decodedKey] = metadataCodec.keys.dec(key);
|
|
4923
|
-
const onChainId = (0,
|
|
5148
|
+
const onChainId = (0, import_scale15.papiStringify)(decodedKey);
|
|
4924
5149
|
const metadata = metadataCodec.value.dec(value);
|
|
4925
5150
|
return {
|
|
4926
5151
|
onChainId,
|
|
4927
5152
|
decimals: metadata.decimals,
|
|
4928
5153
|
isFrozen: metadata.is_frozen,
|
|
4929
|
-
name: metadata.name
|
|
4930
|
-
symbol: metadata.symbol
|
|
5154
|
+
name: metadata.name ? import_polkadot_api5.Binary.toText(metadata.name) : void 0,
|
|
5155
|
+
symbol: metadata.symbol ? import_polkadot_api5.Binary.toText(metadata.symbol) : void 0
|
|
4931
5156
|
};
|
|
4932
5157
|
}),
|
|
4933
5158
|
(a) => a.onChainId
|
|
@@ -4965,7 +5190,7 @@ var fetchTokens9 = async ({
|
|
|
4965
5190
|
|
|
4966
5191
|
// src/modules/substrate-foreignassets/getMiniMetadata.ts
|
|
4967
5192
|
var import_chaindata_provider49 = require("@talismn/chaindata-provider");
|
|
4968
|
-
var
|
|
5193
|
+
var import_scale16 = require("@talismn/scale");
|
|
4969
5194
|
var getMiniMetadata9 = ({
|
|
4970
5195
|
networkId,
|
|
4971
5196
|
specVersion,
|
|
@@ -4979,7 +5204,7 @@ var getMiniMetadata9 = ({
|
|
|
4979
5204
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
4980
5205
|
);
|
|
4981
5206
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
4982
|
-
const { unifiedMetadata } = (0,
|
|
5207
|
+
const { unifiedMetadata } = (0, import_scale16.parseMetadataRpc)(metadataRpc);
|
|
4983
5208
|
if (unifiedMetadata.version < 14)
|
|
4984
5209
|
throw new Error(
|
|
4985
5210
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -4995,18 +5220,18 @@ var getMiniMetadata9 = ({
|
|
|
4995
5220
|
};
|
|
4996
5221
|
};
|
|
4997
5222
|
var getData3 = (metadataRpc) => {
|
|
4998
|
-
const { metadata, unifiedMetadata } = (0,
|
|
5223
|
+
const { metadata, unifiedMetadata } = (0, import_scale16.parseMetadataRpc)(metadataRpc);
|
|
4999
5224
|
if (!hasStorageItems(unifiedMetadata, "ForeignAssets", ["Account", "Asset", "Metadata"]))
|
|
5000
5225
|
return null;
|
|
5001
|
-
(0,
|
|
5002
|
-
return (0,
|
|
5226
|
+
(0, import_scale16.compactMetadata)(metadata, [{ pallet: "ForeignAssets", items: ["Account", "Asset", "Metadata"] }]);
|
|
5227
|
+
return (0, import_scale16.encodeMetadata)(metadata);
|
|
5003
5228
|
};
|
|
5004
5229
|
|
|
5005
5230
|
// src/modules/substrate-foreignassets/getTransferCallData.ts
|
|
5006
5231
|
var import_utils5 = require("@polkadot-api/utils");
|
|
5007
5232
|
var import_chaindata_provider50 = require("@talismn/chaindata-provider");
|
|
5008
|
-
var
|
|
5009
|
-
var
|
|
5233
|
+
var import_scale17 = require("@talismn/scale");
|
|
5234
|
+
var import_polkadot_api6 = require("polkadot-api");
|
|
5010
5235
|
var getTransferCallData9 = ({
|
|
5011
5236
|
from: from2,
|
|
5012
5237
|
to,
|
|
@@ -5017,14 +5242,14 @@ var getTransferCallData9 = ({
|
|
|
5017
5242
|
}) => {
|
|
5018
5243
|
if (!(0, import_chaindata_provider50.isTokenOfType)(token, MODULE_TYPE9))
|
|
5019
5244
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE9}.`);
|
|
5020
|
-
const { builder } = (0,
|
|
5245
|
+
const { builder } = (0, import_scale17.parseMetadataRpc)(metadataRpc);
|
|
5021
5246
|
const method = getTransferMethod2(type);
|
|
5022
5247
|
const { codec, location } = builder.buildCall("ForeignAssets", method);
|
|
5023
5248
|
const args = getEncodedArgs2(method, token.onChainId, to, value, codec);
|
|
5024
|
-
const callData =
|
|
5249
|
+
const callData = (0, import_utils5.mergeUint8)([new Uint8Array(location), args]);
|
|
5025
5250
|
return {
|
|
5026
5251
|
address: from2,
|
|
5027
|
-
method:
|
|
5252
|
+
method: import_polkadot_api6.Binary.toHex(callData)
|
|
5028
5253
|
};
|
|
5029
5254
|
};
|
|
5030
5255
|
var getTransferMethod2 = (type) => {
|
|
@@ -5064,13 +5289,13 @@ var getEncodedValue2 = (codec, possibleValue) => {
|
|
|
5064
5289
|
var getTransferEncodedArgs2 = (onChainId, to, value, codec) => {
|
|
5065
5290
|
return getEncodedValue2(codec, [
|
|
5066
5291
|
() => ({
|
|
5067
|
-
id: (0,
|
|
5292
|
+
id: (0, import_scale17.papiParse)(onChainId),
|
|
5068
5293
|
// for most networks
|
|
5069
|
-
target: (0,
|
|
5294
|
+
target: (0, import_polkadot_api6.Enum)("Id", to),
|
|
5070
5295
|
amount: BigInt(value)
|
|
5071
5296
|
}),
|
|
5072
5297
|
() => ({
|
|
5073
|
-
id: (0,
|
|
5298
|
+
id: (0, import_scale17.papiParse)(onChainId),
|
|
5074
5299
|
// for Neuroweb
|
|
5075
5300
|
target: to,
|
|
5076
5301
|
amount: BigInt(value)
|
|
@@ -5080,13 +5305,13 @@ var getTransferEncodedArgs2 = (onChainId, to, value, codec) => {
|
|
|
5080
5305
|
var getTransferAllEncodedArgs2 = (onChainId, to, codec) => {
|
|
5081
5306
|
return getEncodedValue2(codec, [
|
|
5082
5307
|
() => ({
|
|
5083
|
-
id: (0,
|
|
5308
|
+
id: (0, import_scale17.papiParse)(onChainId),
|
|
5084
5309
|
// for most networks
|
|
5085
|
-
dest: (0,
|
|
5310
|
+
dest: (0, import_polkadot_api6.Enum)("Id", to),
|
|
5086
5311
|
keep_alive: false
|
|
5087
5312
|
}),
|
|
5088
5313
|
() => ({
|
|
5089
|
-
id: (0,
|
|
5314
|
+
id: (0, import_scale17.papiParse)(onChainId),
|
|
5090
5315
|
// for Neuroweb
|
|
5091
5316
|
dest: to,
|
|
5092
5317
|
keep_alive: false
|
|
@@ -5253,8 +5478,9 @@ var fetchBalances10 = async ({
|
|
|
5253
5478
|
|
|
5254
5479
|
// src/modules/substrate-hydration/fetchTokens.ts
|
|
5255
5480
|
var import_chaindata_provider53 = require("@talismn/chaindata-provider");
|
|
5256
|
-
var
|
|
5481
|
+
var import_scale18 = require("@talismn/scale");
|
|
5257
5482
|
var import_lodash_es24 = require("lodash-es");
|
|
5483
|
+
var import_polkadot_api7 = require("polkadot-api");
|
|
5258
5484
|
var fetchTokens10 = async ({
|
|
5259
5485
|
networkId,
|
|
5260
5486
|
tokens,
|
|
@@ -5263,10 +5489,10 @@ var fetchTokens10 = async ({
|
|
|
5263
5489
|
}) => {
|
|
5264
5490
|
const anyMiniMetadata = miniMetadata;
|
|
5265
5491
|
if (!anyMiniMetadata?.data) return [];
|
|
5266
|
-
const { builder } = (0,
|
|
5492
|
+
const { builder } = (0, import_scale18.parseMetadataRpc)(anyMiniMetadata.data);
|
|
5267
5493
|
const assetsCodec = builder.buildStorage("AssetRegistry", "Assets");
|
|
5268
5494
|
const allAssetStorageKeys = await connector.send(networkId, "state_getKeys", [
|
|
5269
|
-
(0,
|
|
5495
|
+
(0, import_scale18.getStorageKeyPrefix)("AssetRegistry", "Assets")
|
|
5270
5496
|
]);
|
|
5271
5497
|
const assetStorageResults = await connector.send(
|
|
5272
5498
|
networkId,
|
|
@@ -5282,8 +5508,8 @@ var fetchTokens10 = async ({
|
|
|
5282
5508
|
onChainId,
|
|
5283
5509
|
assetType: asset.asset_type.type,
|
|
5284
5510
|
isSufficient: asset.is_sufficient,
|
|
5285
|
-
name: asset.name
|
|
5286
|
-
symbol: asset.symbol
|
|
5511
|
+
name: asset.name ? import_polkadot_api7.Binary.toText(asset.name) : void 0,
|
|
5512
|
+
symbol: asset.symbol ? import_polkadot_api7.Binary.toText(asset.symbol) : void 0,
|
|
5287
5513
|
decimals: asset.decimals,
|
|
5288
5514
|
existentialDeposit: asset.existential_deposit.toString()
|
|
5289
5515
|
};
|
|
@@ -5317,7 +5543,7 @@ var fetchTokens10 = async ({
|
|
|
5317
5543
|
|
|
5318
5544
|
// src/modules/substrate-hydration/getMiniMetadata.ts
|
|
5319
5545
|
var import_chaindata_provider54 = require("@talismn/chaindata-provider");
|
|
5320
|
-
var
|
|
5546
|
+
var import_scale19 = require("@talismn/scale");
|
|
5321
5547
|
var getMiniMetadata10 = ({
|
|
5322
5548
|
networkId,
|
|
5323
5549
|
specVersion,
|
|
@@ -5331,7 +5557,7 @@ var getMiniMetadata10 = ({
|
|
|
5331
5557
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
5332
5558
|
);
|
|
5333
5559
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
5334
|
-
const { unifiedMetadata } = (0,
|
|
5560
|
+
const { unifiedMetadata } = (0, import_scale19.parseMetadataRpc)(metadataRpc);
|
|
5335
5561
|
if (unifiedMetadata.version < 14)
|
|
5336
5562
|
throw new Error(
|
|
5337
5563
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -5347,10 +5573,10 @@ var getMiniMetadata10 = ({
|
|
|
5347
5573
|
};
|
|
5348
5574
|
};
|
|
5349
5575
|
var getData4 = (metadataRpc) => {
|
|
5350
|
-
const { metadata, unifiedMetadata } = (0,
|
|
5576
|
+
const { metadata, unifiedMetadata } = (0, import_scale19.parseMetadataRpc)(metadataRpc);
|
|
5351
5577
|
if (!hasStorageItem(unifiedMetadata, "AssetRegistry", "Assets") || !hasStorageItem(unifiedMetadata, "Tokens", "Accounts") || !hasRuntimeApi(unifiedMetadata, "CurrenciesApi", "accounts"))
|
|
5352
5578
|
return null;
|
|
5353
|
-
(0,
|
|
5579
|
+
(0, import_scale19.compactMetadata)(
|
|
5354
5580
|
metadata,
|
|
5355
5581
|
[
|
|
5356
5582
|
{ pallet: "AssetRegistry", items: ["Assets"] },
|
|
@@ -5365,14 +5591,14 @@ var getData4 = (metadataRpc) => {
|
|
|
5365
5591
|
}
|
|
5366
5592
|
]
|
|
5367
5593
|
);
|
|
5368
|
-
return (0,
|
|
5594
|
+
return (0, import_scale19.encodeMetadata)(metadata);
|
|
5369
5595
|
};
|
|
5370
5596
|
|
|
5371
5597
|
// src/modules/substrate-hydration/getTransferCallData.ts
|
|
5372
5598
|
var import_utils6 = require("@polkadot-api/utils");
|
|
5373
5599
|
var import_chaindata_provider55 = require("@talismn/chaindata-provider");
|
|
5374
|
-
var
|
|
5375
|
-
var
|
|
5600
|
+
var import_scale20 = require("@talismn/scale");
|
|
5601
|
+
var import_polkadot_api8 = require("polkadot-api");
|
|
5376
5602
|
var getTransferCallData10 = ({
|
|
5377
5603
|
from: from2,
|
|
5378
5604
|
to,
|
|
@@ -5382,17 +5608,17 @@ var getTransferCallData10 = ({
|
|
|
5382
5608
|
}) => {
|
|
5383
5609
|
if (!(0, import_chaindata_provider55.isTokenOfType)(token, MODULE_TYPE10))
|
|
5384
5610
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE10}.`);
|
|
5385
|
-
const { builder } = (0,
|
|
5611
|
+
const { builder } = (0, import_scale20.parseMetadataRpc)(metadataRpc);
|
|
5386
5612
|
const { codec, location } = builder.buildCall("Currencies", "transfer");
|
|
5387
5613
|
const args = {
|
|
5388
5614
|
dest: to,
|
|
5389
5615
|
currency_id: token.onChainId,
|
|
5390
5616
|
amount: BigInt(value)
|
|
5391
5617
|
};
|
|
5392
|
-
const callData =
|
|
5618
|
+
const callData = (0, import_utils6.mergeUint8)([new Uint8Array(location), codec.enc(args)]);
|
|
5393
5619
|
return {
|
|
5394
5620
|
address: from2,
|
|
5395
|
-
method:
|
|
5621
|
+
method: import_polkadot_api8.Binary.toHex(callData)
|
|
5396
5622
|
};
|
|
5397
5623
|
};
|
|
5398
5624
|
|
|
@@ -5464,8 +5690,9 @@ var MODULE_TYPE11 = import_chaindata_provider57.SubNativeTokenSchema.shape.type.
|
|
|
5464
5690
|
var PLATFORM11 = import_chaindata_provider57.SubNativeTokenSchema.shape.platform.value;
|
|
5465
5691
|
|
|
5466
5692
|
// src/modules/substrate-native/queries/buildBaseQueries.ts
|
|
5467
|
-
var
|
|
5468
|
-
var
|
|
5693
|
+
var import_scale21 = require("@talismn/scale");
|
|
5694
|
+
var import_util11 = require("@talismn/util");
|
|
5695
|
+
var import_polkadot_api9 = require("polkadot-api");
|
|
5469
5696
|
|
|
5470
5697
|
// src/modules/substrate-native/util/lockTypes.ts
|
|
5471
5698
|
var import_upperFirst = __toESM(require("lodash-es/upperFirst"));
|
|
@@ -5626,10 +5853,10 @@ var buildBaseQueries = (networkId, balanceDefs, miniMetadata) => {
|
|
|
5626
5853
|
return { balance, nomPoolMemberInfo };
|
|
5627
5854
|
}
|
|
5628
5855
|
};
|
|
5629
|
-
}).filter(
|
|
5856
|
+
}).filter(import_util11.isNotNil);
|
|
5630
5857
|
};
|
|
5631
5858
|
var decodeBaseResult = (coder, value, networkId) => {
|
|
5632
|
-
const decoded = (0,
|
|
5859
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5633
5860
|
coder,
|
|
5634
5861
|
value,
|
|
5635
5862
|
`Failed to decode base native balance on chain ${networkId}`
|
|
@@ -5649,22 +5876,25 @@ var decodeBaseResult = (coder, value, networkId) => {
|
|
|
5649
5876
|
return newValues;
|
|
5650
5877
|
};
|
|
5651
5878
|
var decodeLocksResult = (coder, value, networkId) => {
|
|
5652
|
-
const decoded = (0,
|
|
5879
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5653
5880
|
coder,
|
|
5654
5881
|
value,
|
|
5655
5882
|
`Failed to decode lock on chain ${networkId}`
|
|
5656
5883
|
);
|
|
5657
|
-
const locksQueryLocks = decoded?.map?.((lock) =>
|
|
5658
|
-
|
|
5659
|
-
|
|
5660
|
-
|
|
5661
|
-
|
|
5662
|
-
|
|
5663
|
-
|
|
5884
|
+
const locksQueryLocks = decoded?.map?.((lock) => {
|
|
5885
|
+
const id = lock?.id ? import_polkadot_api9.Binary.toText(import_polkadot_api9.Binary.fromHex(lock.id)) : void 0;
|
|
5886
|
+
return {
|
|
5887
|
+
type: "locked",
|
|
5888
|
+
source: "substrate-native-locks",
|
|
5889
|
+
label: getLockedType(id),
|
|
5890
|
+
meta: { id },
|
|
5891
|
+
amount: (lock?.amount ?? 0n).toString()
|
|
5892
|
+
};
|
|
5893
|
+
}) ?? [];
|
|
5664
5894
|
return locksQueryLocks;
|
|
5665
5895
|
};
|
|
5666
5896
|
var decodeFreezesResult = (coder, value, networkId) => {
|
|
5667
|
-
const decoded = (0,
|
|
5897
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5668
5898
|
coder,
|
|
5669
5899
|
value,
|
|
5670
5900
|
`Failed to decode freeze on chain ${networkId}`
|
|
@@ -5678,7 +5908,7 @@ var decodeFreezesResult = (coder, value, networkId) => {
|
|
|
5678
5908
|
return freezesValues;
|
|
5679
5909
|
};
|
|
5680
5910
|
var decodeHoldsResult = (coder, value, networkId) => {
|
|
5681
|
-
const decoded = (0,
|
|
5911
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5682
5912
|
coder,
|
|
5683
5913
|
value,
|
|
5684
5914
|
`Failed to decode holds on chain ${networkId}`
|
|
@@ -5694,7 +5924,7 @@ var decodeHoldsResult = (coder, value, networkId) => {
|
|
|
5694
5924
|
return holdsValues;
|
|
5695
5925
|
};
|
|
5696
5926
|
var decodeStakingLedgerResult = (coder, value, networkId) => {
|
|
5697
|
-
const decoded = (0,
|
|
5927
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5698
5928
|
coder,
|
|
5699
5929
|
value,
|
|
5700
5930
|
`Failed to decode unbonding query on chain ${networkId}`
|
|
@@ -5711,7 +5941,7 @@ var decodeStakingLedgerResult = (coder, value, networkId) => {
|
|
|
5711
5941
|
return stakingLedgerResults;
|
|
5712
5942
|
};
|
|
5713
5943
|
var decodePoolMemberResult = (coder, value, networkId) => {
|
|
5714
|
-
const decoded = (0,
|
|
5944
|
+
const decoded = (0, import_scale21.decodeScale)(
|
|
5715
5945
|
coder,
|
|
5716
5946
|
value,
|
|
5717
5947
|
`Failed to decode poolMembers on chain ${networkId}`
|
|
@@ -5733,11 +5963,12 @@ var decodePoolMemberResult = (coder, value, networkId) => {
|
|
|
5733
5963
|
};
|
|
5734
5964
|
|
|
5735
5965
|
// src/modules/substrate-native/queries/buildNomPoolQueries.ts
|
|
5736
|
-
var
|
|
5966
|
+
var import_scale22 = require("@talismn/scale");
|
|
5967
|
+
var import_polkadot_api11 = require("polkadot-api");
|
|
5737
5968
|
|
|
5738
5969
|
// src/modules/substrate-native/util/nompoolAccountId.ts
|
|
5739
5970
|
var import_utils7 = require("@polkadot-api/utils");
|
|
5740
|
-
var
|
|
5971
|
+
var import_polkadot_api10 = require("polkadot-api");
|
|
5741
5972
|
var import_scale_ts = require("scale-ts");
|
|
5742
5973
|
var nompoolAccountId = (palletId, poolId, index) => {
|
|
5743
5974
|
const utf8Encoder = new TextEncoder();
|
|
@@ -5749,7 +5980,7 @@ var nompoolAccountId = (palletId, poolId, index) => {
|
|
|
5749
5980
|
const remainingBytes = 32 - length;
|
|
5750
5981
|
const encEmptyH256 = new Uint8Array(remainingBytes);
|
|
5751
5982
|
const bytes = (0, import_utils7.mergeUint8)([encModPrefix, encPalletId, encIndex, encPoolId, encEmptyH256]);
|
|
5752
|
-
return (0,
|
|
5983
|
+
return (0, import_polkadot_api10.AccountId)().dec(bytes);
|
|
5753
5984
|
};
|
|
5754
5985
|
var nompoolStashAccountId = (palletId, poolId) => nompoolAccountId(palletId, poolId, 0);
|
|
5755
5986
|
|
|
@@ -5826,7 +6057,7 @@ var getNomPoolCoders = (networkId, miniMetadata) => {
|
|
|
5826
6057
|
});
|
|
5827
6058
|
};
|
|
5828
6059
|
var decodePoolPoints = (coder, value, networkId) => {
|
|
5829
|
-
const decoded = (0,
|
|
6060
|
+
const decoded = (0, import_scale22.decodeScale)(
|
|
5830
6061
|
coder,
|
|
5831
6062
|
value,
|
|
5832
6063
|
`Failed to decode bondedPools on chain ${networkId}`
|
|
@@ -5834,7 +6065,7 @@ var decodePoolPoints = (coder, value, networkId) => {
|
|
|
5834
6065
|
return { poolPoints: decoded?.points.toString() };
|
|
5835
6066
|
};
|
|
5836
6067
|
var decodePoolStake = (coder, value, networkId) => {
|
|
5837
|
-
const decoded = (0,
|
|
6068
|
+
const decoded = (0, import_scale22.decodeScale)(
|
|
5838
6069
|
coder,
|
|
5839
6070
|
value,
|
|
5840
6071
|
`Failed to decode ledger on chain ${networkId}`
|
|
@@ -5842,12 +6073,12 @@ var decodePoolStake = (coder, value, networkId) => {
|
|
|
5842
6073
|
return { poolTotalActiveStake: decoded?.active.toString() };
|
|
5843
6074
|
};
|
|
5844
6075
|
var decodePoolMeta = (coder, value, networkId) => {
|
|
5845
|
-
const decoded = (0,
|
|
6076
|
+
const decoded = (0, import_scale22.decodeScale)(
|
|
5846
6077
|
coder,
|
|
5847
6078
|
value,
|
|
5848
6079
|
`Failed to decode metadata on chain ${networkId}`
|
|
5849
6080
|
);
|
|
5850
|
-
const metadata = decoded
|
|
6081
|
+
const metadata = decoded ? import_polkadot_api11.Binary.toText(decoded) : void 0;
|
|
5851
6082
|
return { metadata };
|
|
5852
6083
|
};
|
|
5853
6084
|
var getNomPoolStateKeys = (coders, nomPoolMemberInfo, extra) => {
|
|
@@ -5961,7 +6192,8 @@ var getChainProperties = async (connector, networkId) => {
|
|
|
5961
6192
|
|
|
5962
6193
|
// src/modules/substrate-native/getMiniMetadata.ts
|
|
5963
6194
|
var import_chaindata_provider59 = require("@talismn/chaindata-provider");
|
|
5964
|
-
var
|
|
6195
|
+
var import_scale23 = require("@talismn/scale");
|
|
6196
|
+
var import_polkadot_api12 = require("polkadot-api");
|
|
5965
6197
|
var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
5966
6198
|
const source = MODULE_TYPE11;
|
|
5967
6199
|
const chainId = networkId;
|
|
@@ -5971,7 +6203,7 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
5971
6203
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
5972
6204
|
);
|
|
5973
6205
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
5974
|
-
const { metadata, unifiedMetadata } = (0,
|
|
6206
|
+
const { metadata, unifiedMetadata } = (0, import_scale23.parseMetadataRpc)(metadataRpc);
|
|
5975
6207
|
if (unifiedMetadata.version < 14)
|
|
5976
6208
|
throw new Error(
|
|
5977
6209
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -5991,16 +6223,17 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
5991
6223
|
"Balances",
|
|
5992
6224
|
"ExistentialDeposit"
|
|
5993
6225
|
)?.toString();
|
|
5994
|
-
const
|
|
6226
|
+
const nominationPoolsPalletIdHex = tryGetConstantValue(
|
|
5995
6227
|
metadataRpc,
|
|
5996
6228
|
"NominationPools",
|
|
5997
6229
|
"PalletId"
|
|
5998
|
-
)
|
|
6230
|
+
);
|
|
6231
|
+
const nominationPoolsPalletId = nominationPoolsPalletIdHex ? import_polkadot_api12.Binary.toText(import_polkadot_api12.Binary.fromHex(nominationPoolsPalletIdHex)) : void 0;
|
|
5999
6232
|
const hasFreezesItem = Boolean(
|
|
6000
6233
|
unifiedMetadata.pallets.find(({ name }) => name === "Balances")?.storage?.items.find(({ name }) => name === "Freezes")
|
|
6001
6234
|
);
|
|
6002
6235
|
const useLegacyTransferableCalculation = !hasFreezesItem;
|
|
6003
|
-
(0,
|
|
6236
|
+
(0, import_scale23.compactMetadata)(metadata, [
|
|
6004
6237
|
{ pallet: "System", constants: ["Version", "SS58Prefix"], items: ["Account"] },
|
|
6005
6238
|
{ pallet: "Balances", items: ["Reserves", "Holds", "Locks", "Freezes"] },
|
|
6006
6239
|
{ pallet: "NominationPools", items: ["PoolMembers", "BondedPools", "Metadata"] },
|
|
@@ -6012,7 +6245,7 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
6012
6245
|
chainId,
|
|
6013
6246
|
specVersion,
|
|
6014
6247
|
version: import_chaindata_provider59.MINIMETADATA_VERSION,
|
|
6015
|
-
data: (0,
|
|
6248
|
+
data: (0, import_scale23.encodeMetadata)(metadata),
|
|
6016
6249
|
extra: {
|
|
6017
6250
|
useLegacyTransferableCalculation,
|
|
6018
6251
|
existentialDeposit,
|
|
@@ -6024,8 +6257,8 @@ var getMiniMetadata11 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
6024
6257
|
// src/modules/substrate-native/getTransferCallData.ts
|
|
6025
6258
|
var import_utils8 = require("@polkadot-api/utils");
|
|
6026
6259
|
var import_chaindata_provider60 = require("@talismn/chaindata-provider");
|
|
6027
|
-
var
|
|
6028
|
-
var
|
|
6260
|
+
var import_scale24 = require("@talismn/scale");
|
|
6261
|
+
var import_polkadot_api13 = require("polkadot-api");
|
|
6029
6262
|
var getTransferCallData11 = ({
|
|
6030
6263
|
from: from2,
|
|
6031
6264
|
to,
|
|
@@ -6036,14 +6269,14 @@ var getTransferCallData11 = ({
|
|
|
6036
6269
|
}) => {
|
|
6037
6270
|
if (!(0, import_chaindata_provider60.isTokenOfType)(token, MODULE_TYPE11))
|
|
6038
6271
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE11}.`);
|
|
6039
|
-
const { unifiedMetadata, lookupFn, builder } = (0,
|
|
6272
|
+
const { unifiedMetadata, lookupFn, builder } = (0, import_scale24.parseMetadataRpc)(metadataRpc);
|
|
6040
6273
|
const method = getTransferMethod3(type, unifiedMetadata, lookupFn);
|
|
6041
6274
|
const { codec, location } = builder.buildCall("Balances", method);
|
|
6042
6275
|
const args = getEncodedArgs3(method, to, value, codec);
|
|
6043
|
-
const callData =
|
|
6276
|
+
const callData = (0, import_utils8.mergeUint8)([new Uint8Array(location), args]);
|
|
6044
6277
|
return {
|
|
6045
6278
|
address: from2,
|
|
6046
|
-
method:
|
|
6279
|
+
method: import_polkadot_api13.Binary.toHex(callData)
|
|
6047
6280
|
};
|
|
6048
6281
|
};
|
|
6049
6282
|
var getTransferMethod3 = (type, unifiedMetadata, lookupFn) => {
|
|
@@ -6089,7 +6322,7 @@ var getEncodedValue3 = (codec, possibleValue) => {
|
|
|
6089
6322
|
var getTransferEncodedArgs3 = (to, value, codec) => {
|
|
6090
6323
|
return getEncodedValue3(codec, [
|
|
6091
6324
|
() => ({
|
|
6092
|
-
dest: (0,
|
|
6325
|
+
dest: (0, import_polkadot_api13.Enum)("Id", to),
|
|
6093
6326
|
value: BigInt(value)
|
|
6094
6327
|
}),
|
|
6095
6328
|
() => ({
|
|
@@ -6102,7 +6335,7 @@ var getTransferEncodedArgs3 = (to, value, codec) => {
|
|
|
6102
6335
|
var getTransferAllEncodedArgs3 = (to, codec) => {
|
|
6103
6336
|
return getEncodedValue3(codec, [
|
|
6104
6337
|
() => ({
|
|
6105
|
-
dest: (0,
|
|
6338
|
+
dest: (0, import_polkadot_api13.Enum)("Id", to),
|
|
6106
6339
|
keep_alive: false
|
|
6107
6340
|
}),
|
|
6108
6341
|
() => ({
|
|
@@ -7336,7 +7569,7 @@ var fetchTokens12 = async ({
|
|
|
7336
7569
|
|
|
7337
7570
|
// src/modules/substrate-psp22/getMiniMetadata.ts
|
|
7338
7571
|
var import_chaindata_provider63 = require("@talismn/chaindata-provider");
|
|
7339
|
-
var
|
|
7572
|
+
var import_scale25 = require("@talismn/scale");
|
|
7340
7573
|
var getMiniMetadata12 = ({
|
|
7341
7574
|
networkId,
|
|
7342
7575
|
specVersion,
|
|
@@ -7350,7 +7583,7 @@ var getMiniMetadata12 = ({
|
|
|
7350
7583
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
7351
7584
|
);
|
|
7352
7585
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
7353
|
-
const { unifiedMetadata } = (0,
|
|
7586
|
+
const { unifiedMetadata } = (0, import_scale25.parseMetadataRpc)(metadataRpc);
|
|
7354
7587
|
if (unifiedMetadata.version < 14)
|
|
7355
7588
|
throw new Error(
|
|
7356
7589
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -7371,13 +7604,13 @@ var import_api_contract3 = require("@polkadot/api-contract");
|
|
|
7371
7604
|
var import_types19 = require("@polkadot/types");
|
|
7372
7605
|
var import_utils9 = require("@polkadot-api/utils");
|
|
7373
7606
|
var import_chaindata_provider64 = require("@talismn/chaindata-provider");
|
|
7374
|
-
var
|
|
7375
|
-
var
|
|
7607
|
+
var import_scale26 = require("@talismn/scale");
|
|
7608
|
+
var import_polkadot_api14 = require("polkadot-api");
|
|
7376
7609
|
var getTransferCallData12 = async ({ from: from2, to, value, token, metadataRpc, connector }) => {
|
|
7377
7610
|
if (!(0, import_chaindata_provider64.isTokenOfType)(token, MODULE_TYPE12))
|
|
7378
7611
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE12}.`);
|
|
7379
7612
|
const networkId = (0, import_chaindata_provider64.parseTokenId)(token.id).networkId;
|
|
7380
|
-
const { builder } = (0,
|
|
7613
|
+
const { builder } = (0, import_scale26.parseMetadataRpc)(metadataRpc);
|
|
7381
7614
|
const { codec, location } = builder.buildCall("Contracts", "call");
|
|
7382
7615
|
const Psp22Abi = new import_api_contract3.Abi(psp22_default);
|
|
7383
7616
|
const registry = new import_types19.TypeRegistry();
|
|
@@ -7390,19 +7623,19 @@ var getTransferCallData12 = async ({ from: from2, to, value, token, metadataRpc,
|
|
|
7390
7623
|
const hexData = registry.createType("Vec<u8>", data).toHex();
|
|
7391
7624
|
const dryRunResult = await contractCall(from2, token.contractAddress, data);
|
|
7392
7625
|
const args = codec.enc({
|
|
7393
|
-
dest: (0,
|
|
7626
|
+
dest: (0, import_polkadot_api14.Enum)("Id", token.contractAddress),
|
|
7394
7627
|
value: 0,
|
|
7395
7628
|
gas_limit: {
|
|
7396
7629
|
ref_time: dryRunResult.gasRequired.refTime.toBigInt(),
|
|
7397
7630
|
proof_size: dryRunResult.gasRequired.proofSize.toBigInt()
|
|
7398
7631
|
},
|
|
7399
7632
|
storage_deposit_limit: dryRunResult.storageDeposit.isCharge ? dryRunResult.storageDeposit.asCharge.toBigInt() : null,
|
|
7400
|
-
data:
|
|
7633
|
+
data: import_polkadot_api14.Binary.fromHex(hexData)
|
|
7401
7634
|
});
|
|
7402
|
-
const callData =
|
|
7635
|
+
const callData = (0, import_utils9.mergeUint8)([new Uint8Array(location), args]);
|
|
7403
7636
|
return {
|
|
7404
7637
|
address: from2,
|
|
7405
|
-
method:
|
|
7638
|
+
method: import_polkadot_api14.Binary.toHex(callData)
|
|
7406
7639
|
};
|
|
7407
7640
|
};
|
|
7408
7641
|
|
|
@@ -7474,8 +7707,8 @@ var MODULE_TYPE13 = import_chaindata_provider66.SubTokensTokenSchema.shape.type.
|
|
|
7474
7707
|
var PLATFORM13 = import_chaindata_provider66.SubTokensTokenSchema.shape.platform.value;
|
|
7475
7708
|
|
|
7476
7709
|
// src/modules/substrate-tokens/buildQueries.ts
|
|
7477
|
-
var
|
|
7478
|
-
var
|
|
7710
|
+
var import_scale27 = require("@talismn/scale");
|
|
7711
|
+
var import_util15 = require("@talismn/util");
|
|
7479
7712
|
var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
7480
7713
|
const networkStorageCoders = buildNetworkStorageCoders(networkId, miniMetadata, {
|
|
7481
7714
|
storage: [miniMetadata.extra.palletId, "Accounts"]
|
|
@@ -7484,7 +7717,7 @@ var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
7484
7717
|
const scaleCoder = networkStorageCoders?.storage;
|
|
7485
7718
|
const getStateKey = (onChainId) => {
|
|
7486
7719
|
try {
|
|
7487
|
-
return scaleCoder.keys.enc(address, (0,
|
|
7720
|
+
return scaleCoder.keys.enc(address, (0, import_scale27.papiParse)(onChainId));
|
|
7488
7721
|
} catch {
|
|
7489
7722
|
return null;
|
|
7490
7723
|
}
|
|
@@ -7497,7 +7730,7 @@ var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
7497
7730
|
return null;
|
|
7498
7731
|
}
|
|
7499
7732
|
const decodeResult = (changes) => {
|
|
7500
|
-
const decoded = (0,
|
|
7733
|
+
const decoded = (0, import_scale27.decodeScale)(
|
|
7501
7734
|
scaleCoder,
|
|
7502
7735
|
changes[0],
|
|
7503
7736
|
`Failed to decode substrate-tokens balance on chain ${networkId}`
|
|
@@ -7523,7 +7756,7 @@ var buildQueries3 = (networkId, balanceDefs, miniMetadata) => {
|
|
|
7523
7756
|
stateKeys: [stateKey],
|
|
7524
7757
|
decodeResult
|
|
7525
7758
|
};
|
|
7526
|
-
}).filter(
|
|
7759
|
+
}).filter(import_util15.isNotNil);
|
|
7527
7760
|
};
|
|
7528
7761
|
|
|
7529
7762
|
// src/modules/substrate-tokens/fetchBalances.ts
|
|
@@ -7621,7 +7854,7 @@ var fetchTokens13 = async ({
|
|
|
7621
7854
|
|
|
7622
7855
|
// src/modules/substrate-tokens/getMiniMetadata.ts
|
|
7623
7856
|
var import_chaindata_provider68 = require("@talismn/chaindata-provider");
|
|
7624
|
-
var
|
|
7857
|
+
var import_scale28 = require("@talismn/scale");
|
|
7625
7858
|
var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
7626
7859
|
const source = MODULE_TYPE13;
|
|
7627
7860
|
const chainId = networkId;
|
|
@@ -7631,7 +7864,7 @@ var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
7631
7864
|
`specVersion mismatch: expected ${specVersion}, metadata got ${systemVersion.spec_version}`
|
|
7632
7865
|
);
|
|
7633
7866
|
const id = deriveMiniMetadataId({ source, chainId, specVersion });
|
|
7634
|
-
const { unifiedMetadata } = (0,
|
|
7867
|
+
const { unifiedMetadata } = (0, import_scale28.parseMetadataRpc)(metadataRpc);
|
|
7635
7868
|
if (unifiedMetadata.version < 14)
|
|
7636
7869
|
throw new Error(
|
|
7637
7870
|
`Unsupported metadata version: ${unifiedMetadata.version}. Minimum required is 14.`
|
|
@@ -7648,26 +7881,26 @@ var getMiniMetadata13 = ({ networkId, specVersion, metadataRpc, config }) => {
|
|
|
7648
7881
|
};
|
|
7649
7882
|
};
|
|
7650
7883
|
var getData5 = (metadataRpc, pallet) => {
|
|
7651
|
-
const { metadata, unifiedMetadata } = (0,
|
|
7884
|
+
const { metadata, unifiedMetadata } = (0, import_scale28.parseMetadataRpc)(metadataRpc);
|
|
7652
7885
|
if (!hasStorageItems(unifiedMetadata, pallet, ["Accounts"])) return null;
|
|
7653
|
-
(0,
|
|
7654
|
-
return (0,
|
|
7886
|
+
(0, import_scale28.compactMetadata)(metadata, [{ pallet, items: ["Accounts"] }]);
|
|
7887
|
+
return (0, import_scale28.encodeMetadata)(metadata);
|
|
7655
7888
|
};
|
|
7656
7889
|
|
|
7657
7890
|
// src/modules/substrate-tokens/getTransferCallData.ts
|
|
7658
7891
|
var import_utils10 = require("@polkadot-api/utils");
|
|
7659
7892
|
var import_chaindata_provider69 = require("@talismn/chaindata-provider");
|
|
7660
|
-
var
|
|
7661
|
-
var
|
|
7893
|
+
var import_scale29 = require("@talismn/scale");
|
|
7894
|
+
var import_polkadot_api15 = require("polkadot-api");
|
|
7662
7895
|
var getTransferCallData13 = ({ from: from2, to, value, token, type, metadataRpc, config }) => {
|
|
7663
7896
|
if (!(0, import_chaindata_provider69.isTokenOfType)(token, MODULE_TYPE13))
|
|
7664
7897
|
throw new Error(`Token type ${token.type} is not ${MODULE_TYPE13}.`);
|
|
7665
|
-
const { builder } = (0,
|
|
7898
|
+
const { builder } = (0, import_scale29.parseMetadataRpc)(metadataRpc);
|
|
7666
7899
|
const options = getCallDataOptions(to, token, value, type, config);
|
|
7667
7900
|
const callData = getCallDataFromOptions(builder, options);
|
|
7668
7901
|
return {
|
|
7669
7902
|
address: from2,
|
|
7670
|
-
method:
|
|
7903
|
+
method: import_polkadot_api15.Binary.toHex(callData)
|
|
7671
7904
|
};
|
|
7672
7905
|
};
|
|
7673
7906
|
var getTransferMethod4 = (type) => {
|
|
@@ -7691,17 +7924,17 @@ var getCallDataFromOptions = (builder, options) => {
|
|
|
7691
7924
|
};
|
|
7692
7925
|
var buildCallData = (builder, pallet, method, args) => {
|
|
7693
7926
|
const { location, codec } = builder.buildCall(pallet, method);
|
|
7694
|
-
return
|
|
7927
|
+
return (0, import_utils10.mergeUint8)([new Uint8Array(location), codec.enc(args)]);
|
|
7695
7928
|
};
|
|
7696
7929
|
var getCallDataOptions = (to, token, value, type, config) => {
|
|
7697
|
-
const onChainId = (0,
|
|
7930
|
+
const onChainId = (0, import_scale29.papiParse)(token.onChainId);
|
|
7698
7931
|
const method = getTransferMethod4(type);
|
|
7699
7932
|
return [
|
|
7700
7933
|
{
|
|
7701
7934
|
pallet: "Currencies",
|
|
7702
7935
|
method: "transfer",
|
|
7703
7936
|
getArgs: () => ({
|
|
7704
|
-
dest: (0,
|
|
7937
|
+
dest: (0, import_polkadot_api15.Enum)("Id", to),
|
|
7705
7938
|
currency_id: onChainId,
|
|
7706
7939
|
amount: BigInt(value)
|
|
7707
7940
|
})
|
|
@@ -7719,11 +7952,11 @@ var getCallDataOptions = (to, token, value, type, config) => {
|
|
|
7719
7952
|
pallet: "Tokens",
|
|
7720
7953
|
method,
|
|
7721
7954
|
getArgs: () => method === "transfer_all" ? {
|
|
7722
|
-
dest: (0,
|
|
7955
|
+
dest: (0, import_polkadot_api15.Enum)("Id", to),
|
|
7723
7956
|
currency_id: onChainId,
|
|
7724
7957
|
keepAlive: false
|
|
7725
7958
|
} : {
|
|
7726
|
-
dest: (0,
|
|
7959
|
+
dest: (0, import_polkadot_api15.Enum)("Id", to),
|
|
7727
7960
|
currency_id: onChainId,
|
|
7728
7961
|
amount: BigInt(value)
|
|
7729
7962
|
}
|
|
@@ -7747,11 +7980,11 @@ var getCallDataOptions = (to, token, value, type, config) => {
|
|
|
7747
7980
|
pallet: config.palletId,
|
|
7748
7981
|
method,
|
|
7749
7982
|
getArgs: () => method === "transfer_all" ? {
|
|
7750
|
-
dest: (0,
|
|
7983
|
+
dest: (0, import_polkadot_api15.Enum)("Id", to),
|
|
7751
7984
|
currency_id: onChainId,
|
|
7752
7985
|
keepAlive: false
|
|
7753
7986
|
} : {
|
|
7754
|
-
dest: (0,
|
|
7987
|
+
dest: (0, import_polkadot_api15.Enum)("Id", to),
|
|
7755
7988
|
currency_id: onChainId,
|
|
7756
7989
|
amount: BigInt(value)
|
|
7757
7990
|
}
|
|
@@ -7835,7 +8068,7 @@ var BALANCE_MODULES = [
|
|
|
7835
8068
|
|
|
7836
8069
|
// src/getMiniMetadatas/getMetadataRpc.ts
|
|
7837
8070
|
var import_sapi = require("@talismn/sapi");
|
|
7838
|
-
var
|
|
8071
|
+
var import_util16 = require("@talismn/util");
|
|
7839
8072
|
var CACHE = /* @__PURE__ */ new Map();
|
|
7840
8073
|
var getMetadataRpc = async (chainConnector, networkId) => {
|
|
7841
8074
|
if (CACHE.has(networkId)) return CACHE.get(networkId);
|
|
@@ -7849,7 +8082,7 @@ var getMetadataRpc = async (chainConnector, networkId) => {
|
|
|
7849
8082
|
try {
|
|
7850
8083
|
return await pResult;
|
|
7851
8084
|
} catch (cause) {
|
|
7852
|
-
if ((0,
|
|
8085
|
+
if ((0, import_util16.isAbortError)(cause)) throw cause;
|
|
7853
8086
|
throw new Error(`Failed to fetch metadataRpc for network ${networkId}`, { cause });
|
|
7854
8087
|
} finally {
|
|
7855
8088
|
CACHE.delete(networkId);
|
|
@@ -7938,16 +8171,16 @@ var BalancesProvider = class {
|
|
|
7938
8171
|
this.#chaindataProvider = chaindataProvider;
|
|
7939
8172
|
this.#chainConnectors = chainConnectors;
|
|
7940
8173
|
this.#storage = new import_rxjs16.BehaviorSubject({
|
|
7941
|
-
balances: (0, import_lodash_es30.keyBy)(storage.balances.filter(
|
|
7942
|
-
miniMetadatas: (0, import_lodash_es30.keyBy)(storage.miniMetadatas.filter(
|
|
8174
|
+
balances: (0, import_lodash_es30.keyBy)(storage.balances.filter(import_util17.isNotNil), (b) => getBalanceId(b)),
|
|
8175
|
+
miniMetadatas: (0, import_lodash_es30.keyBy)(storage.miniMetadatas.filter(import_util17.isNotNil), (m) => m.id)
|
|
7943
8176
|
});
|
|
7944
8177
|
}
|
|
7945
8178
|
get storage$() {
|
|
7946
8179
|
return this.#storage.pipe(
|
|
7947
8180
|
(0, import_rxjs16.map)(
|
|
7948
8181
|
({ balances, miniMetadatas }) => ({
|
|
7949
|
-
balances: (0, import_lodash_es30.values)(balances).filter(
|
|
7950
|
-
miniMetadatas: (0, import_lodash_es30.values)(miniMetadatas).filter(
|
|
8182
|
+
balances: (0, import_lodash_es30.values)(balances).filter(import_util17.isNotNil).sort(sortByBalanceId),
|
|
8183
|
+
miniMetadatas: (0, import_lodash_es30.values)(miniMetadatas).filter(import_util17.isNotNil).sort(sortByMiniMetadataId)
|
|
7951
8184
|
}),
|
|
7952
8185
|
(0, import_rxjs16.shareReplay)(1)
|
|
7953
8186
|
)
|
|
@@ -8048,7 +8281,7 @@ var BalancesProvider = class {
|
|
|
8048
8281
|
}),
|
|
8049
8282
|
(0, import_rxjs16.map)((results) => {
|
|
8050
8283
|
const errorBalanceIds = results.flatMap((result) => result.failedBalanceIds);
|
|
8051
|
-
const staleBalances = errorBalanceIds.map((balanceId) => this.#storage.value.balances[balanceId]).filter(
|
|
8284
|
+
const staleBalances = errorBalanceIds.map((balanceId) => this.#storage.value.balances[balanceId]).filter(import_util17.isNotNil).map((b) => ({ ...b, status: "stale" }));
|
|
8052
8285
|
return {
|
|
8053
8286
|
status: results.some(({ status }) => status === "initialising") ? "initialising" : "live",
|
|
8054
8287
|
balances: results.flatMap((result) => result.balances).concat(staleBalances).sort(sortByBalanceId),
|
|
@@ -8059,7 +8292,7 @@ var BalancesProvider = class {
|
|
|
8059
8292
|
);
|
|
8060
8293
|
}
|
|
8061
8294
|
getPolkadotNetworkModuleBalances$(networkId, tokensWithAddresses, mod) {
|
|
8062
|
-
return (0,
|
|
8295
|
+
return (0, import_util17.getSharedObservable)(
|
|
8063
8296
|
`BalancesProvider.getPolkadotNetworkModuleBalances$`,
|
|
8064
8297
|
{ networkId, mod, tokensWithAddresses },
|
|
8065
8298
|
() => {
|
|
@@ -8101,8 +8334,14 @@ var BalancesProvider = class {
|
|
|
8101
8334
|
(0, import_rxjs16.map)(
|
|
8102
8335
|
(results) => ({
|
|
8103
8336
|
status: "live",
|
|
8104
|
-
// exclude zero balances
|
|
8105
|
-
|
|
8337
|
+
// exclude zero balances, but keep balances that only hold a lock
|
|
8338
|
+
// (eg dtao conviction locks, reported on the subnet's base token — including
|
|
8339
|
+
// zero-mass "ghost" locks with residual conviction, which still pin the hotkey
|
|
8340
|
+
// of future lock_stake calls)
|
|
8341
|
+
balances: results.success.filter((b) => {
|
|
8342
|
+
const balance = new Balance(b);
|
|
8343
|
+
return balance.total.planck > 0n || balance.locks.some((lock) => lock.amount.planck > 0n) || !!findDTaoConvictionLock(balance.locks);
|
|
8344
|
+
}),
|
|
8106
8345
|
failedBalanceIds: results.errors.map(
|
|
8107
8346
|
({ tokenId, address }) => getBalanceId({ tokenId, address })
|
|
8108
8347
|
)
|
|
@@ -8113,7 +8352,7 @@ var BalancesProvider = class {
|
|
|
8113
8352
|
}),
|
|
8114
8353
|
// shareReplay + keepAlive(0) keep the subscription alive while root observable is being unsubscribed+resubscribed, in case any input change
|
|
8115
8354
|
(0, import_rxjs16.shareReplay)({ refCount: true, bufferSize: 1 }),
|
|
8116
|
-
(0,
|
|
8355
|
+
(0, import_util17.keepAlive)(0)
|
|
8117
8356
|
);
|
|
8118
8357
|
return (0, import_rxjs16.defer)(
|
|
8119
8358
|
() => moduleBalances$.pipe(
|
|
@@ -8128,7 +8367,7 @@ var BalancesProvider = class {
|
|
|
8128
8367
|
);
|
|
8129
8368
|
}
|
|
8130
8369
|
getEthereumNetworkModuleBalances$(networkId, tokensWithAddresses, mod) {
|
|
8131
|
-
return (0,
|
|
8370
|
+
return (0, import_util17.getSharedObservable)(
|
|
8132
8371
|
`BalancesProvider.getEthereumNetworkModuleBalances$`,
|
|
8133
8372
|
{ networkId, mod, tokensWithAddresses },
|
|
8134
8373
|
() => {
|
|
@@ -8172,7 +8411,7 @@ var BalancesProvider = class {
|
|
|
8172
8411
|
}),
|
|
8173
8412
|
// shareReplay + keepAlive(0) keep the subscription alive while root observable is being unsubscribed+resubscribed, in case any input change
|
|
8174
8413
|
(0, import_rxjs16.shareReplay)({ refCount: true, bufferSize: 1 }),
|
|
8175
|
-
(0,
|
|
8414
|
+
(0, import_util17.keepAlive)(0)
|
|
8176
8415
|
);
|
|
8177
8416
|
return (0, import_rxjs16.defer)(
|
|
8178
8417
|
() => moduleBalances$.pipe(
|
|
@@ -8187,7 +8426,7 @@ var BalancesProvider = class {
|
|
|
8187
8426
|
);
|
|
8188
8427
|
}
|
|
8189
8428
|
getSolanaNetworkModuleBalances$(networkId, tokensWithAddresses, mod) {
|
|
8190
|
-
return (0,
|
|
8429
|
+
return (0, import_util17.getSharedObservable)(
|
|
8191
8430
|
`BalancesProvider.getSolanaNetworkModuleBalances$`,
|
|
8192
8431
|
{ networkId, mod, tokensWithAddresses },
|
|
8193
8432
|
() => {
|
|
@@ -8236,7 +8475,7 @@ var BalancesProvider = class {
|
|
|
8236
8475
|
}),
|
|
8237
8476
|
// shareReplay + keepAlive(0) keep the subscription alive while root observable is being unsubscribed+resubscribed, in case any input change
|
|
8238
8477
|
(0, import_rxjs16.shareReplay)({ refCount: true, bufferSize: 1 }),
|
|
8239
|
-
(0,
|
|
8478
|
+
(0, import_util17.keepAlive)(0)
|
|
8240
8479
|
);
|
|
8241
8480
|
return (0, import_rxjs16.defer)(
|
|
8242
8481
|
() => moduleBalances$.pipe(
|
|
@@ -8274,7 +8513,7 @@ var BalancesProvider = class {
|
|
|
8274
8513
|
this.#storage.next((0, import_lodash_es30.assign)({}, storage, { balances }));
|
|
8275
8514
|
}
|
|
8276
8515
|
getNetworkMiniMetadatas$(networkId) {
|
|
8277
|
-
return (0,
|
|
8516
|
+
return (0, import_util17.getSharedObservable)(`BalancesProvider.getNetworkMiniMetadatas$`, { networkId }, () => {
|
|
8278
8517
|
return this.#chaindataProvider.getNetworkById$(networkId).pipe(
|
|
8279
8518
|
(0, import_rxjs16.switchMap)(
|
|
8280
8519
|
(network) => (0, import_chaindata_provider71.isNetworkDot)(network) ? this.getNetworkSpecVersion$(networkId).pipe(
|
|
@@ -8368,7 +8607,7 @@ var BalancesProvider = class {
|
|
|
8368
8607
|
return this.storedMiniMetadataMapById$.pipe(
|
|
8369
8608
|
(0, import_rxjs16.map)((mapById) => {
|
|
8370
8609
|
const miniMetadatas = miniMetadataIds.map((id) => mapById[id]);
|
|
8371
|
-
return miniMetadatas.length && miniMetadatas.every(
|
|
8610
|
+
return miniMetadatas.length && miniMetadatas.every(import_util17.isTruthy) ? miniMetadatas : null;
|
|
8372
8611
|
}),
|
|
8373
8612
|
// source changes very often
|
|
8374
8613
|
(0, import_rxjs16.distinctUntilChanged)(import_lodash_es30.isEqual)
|
|
@@ -8378,7 +8617,7 @@ var BalancesProvider = class {
|
|
|
8378
8617
|
return this.#chaindataProvider.miniMetadatasMapById$.pipe(
|
|
8379
8618
|
(0, import_rxjs16.map)((mapById) => {
|
|
8380
8619
|
const miniMetadatas = miniMetadataIds.map((id) => mapById[id]);
|
|
8381
|
-
return miniMetadatas.length && miniMetadatas.every(
|
|
8620
|
+
return miniMetadatas.length && miniMetadatas.every(import_util17.isTruthy) ? miniMetadatas : null;
|
|
8382
8621
|
})
|
|
8383
8622
|
);
|
|
8384
8623
|
}
|
|
@@ -8386,7 +8625,7 @@ var BalancesProvider = class {
|
|
|
8386
8625
|
const balanceDefs = (0, import_lodash_es30.toPairs)(addressesByToken).flatMap(
|
|
8387
8626
|
([tokenId, addresses]) => addresses.map((address) => [tokenId, address])
|
|
8388
8627
|
);
|
|
8389
|
-
return balanceDefs.map(([tokenId, address]) => this.#storage.value.balances[getBalanceId({ address, tokenId })]).filter(
|
|
8628
|
+
return balanceDefs.map(([tokenId, address]) => this.#storage.value.balances[getBalanceId({ address, tokenId })]).filter(import_util17.isNotNil).sort(sortByBalanceId);
|
|
8390
8629
|
}
|
|
8391
8630
|
cleanupAddressesByTokenId$(addressesByTokenId) {
|
|
8392
8631
|
return this.#chaindataProvider.getNetworksMapById$().pipe(
|
|
@@ -8490,7 +8729,9 @@ var import_chaindata_provider72 = require("@talismn/chaindata-provider");
|
|
|
8490
8729
|
excludeFromTransferableAmount,
|
|
8491
8730
|
filterBaseLocks,
|
|
8492
8731
|
filterMirrorTokens,
|
|
8732
|
+
findDTaoConvictionLock,
|
|
8493
8733
|
getBalanceId,
|
|
8734
|
+
getConvictionLockLabel,
|
|
8494
8735
|
getDTaoTokenRates,
|
|
8495
8736
|
getLockTitle,
|
|
8496
8737
|
getLockedType,
|
|
@@ -8498,6 +8739,7 @@ var import_chaindata_provider72 = require("@talismn/chaindata-provider");
|
|
|
8498
8739
|
getValueId,
|
|
8499
8740
|
includeInTotalExtraAmount,
|
|
8500
8741
|
taoToAlpha,
|
|
8742
|
+
taoToAlphaCeil,
|
|
8501
8743
|
uniswapV2PairAbi
|
|
8502
8744
|
});
|
|
8503
8745
|
//# sourceMappingURL=index.js.map
|