@w3lib/evm-batch-call 0.4.2 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (88) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +165 -2
  3. package/dist/fallback.d.ts +5 -0
  4. package/dist/fallback.d.ts.map +1 -1
  5. package/dist/fallback.js +7 -0
  6. package/dist/fallback.js.map +1 -1
  7. package/dist/lp.d.ts +149 -0
  8. package/dist/lp.d.ts.map +1 -0
  9. package/dist/lp.js +499 -0
  10. package/dist/lp.js.map +1 -0
  11. package/dist/lpMath.d.ts +25 -0
  12. package/dist/lpMath.d.ts.map +1 -0
  13. package/dist/lpMath.js +103 -0
  14. package/dist/lpMath.js.map +1 -0
  15. package/dist/lpV4.d.ts +108 -0
  16. package/dist/lpV4.d.ts.map +1 -0
  17. package/dist/lpV4.js +283 -0
  18. package/dist/lpV4.js.map +1 -0
  19. package/dist/owner.d.ts +1 -1
  20. package/dist/owner.d.ts.map +1 -1
  21. package/dist/owner.js +18 -5
  22. package/dist/owner.js.map +1 -1
  23. package/dist/scan.d.ts +54 -0
  24. package/dist/scan.d.ts.map +1 -1
  25. package/dist/scan.js +124 -92
  26. package/dist/scan.js.map +1 -1
  27. package/dist/source.d.ts +2 -0
  28. package/dist/source.d.ts.map +1 -1
  29. package/dist/source.js +4 -0
  30. package/dist/source.js.map +1 -1
  31. package/dist/subpaths/lp.d.ts +33 -0
  32. package/dist/subpaths/lp.d.ts.map +1 -0
  33. package/dist/subpaths/lp.js +47 -0
  34. package/dist/subpaths/lp.js.map +1 -0
  35. package/dist/subpaths/write.d.ts +20 -0
  36. package/dist/subpaths/write.d.ts.map +1 -0
  37. package/dist/subpaths/write.js +18 -0
  38. package/dist/subpaths/write.js.map +1 -0
  39. package/dist/tron.d.ts +2 -0
  40. package/dist/tron.d.ts.map +1 -1
  41. package/dist/tron.js +4 -0
  42. package/dist/tron.js.map +1 -1
  43. package/dist/write/batch.d.ts +88 -0
  44. package/dist/write/batch.d.ts.map +1 -0
  45. package/dist/write/batch.js +231 -0
  46. package/dist/write/batch.js.map +1 -0
  47. package/dist/write/collect.d.ts +53 -0
  48. package/dist/write/collect.d.ts.map +1 -0
  49. package/dist/write/collect.js +255 -0
  50. package/dist/write/collect.js.map +1 -0
  51. package/dist/write/rpc.d.ts +68 -0
  52. package/dist/write/rpc.d.ts.map +1 -0
  53. package/dist/write/rpc.js +236 -0
  54. package/dist/write/rpc.js.map +1 -0
  55. package/dist/write/send.d.ts +124 -0
  56. package/dist/write/send.d.ts.map +1 -0
  57. package/dist/write/send.js +373 -0
  58. package/dist/write/send.js.map +1 -0
  59. package/dist/write/signer.d.ts +58 -0
  60. package/dist/write/signer.d.ts.map +1 -0
  61. package/dist/write/signer.js +41 -0
  62. package/dist/write/signer.js.map +1 -0
  63. package/dist/write/transfer.d.ts +83 -0
  64. package/dist/write/transfer.d.ts.map +1 -0
  65. package/dist/write/transfer.js +259 -0
  66. package/dist/write/transfer.js.map +1 -0
  67. package/dist/write/tron.d.ts +58 -0
  68. package/dist/write/tron.d.ts.map +1 -0
  69. package/dist/write/tron.js +956 -0
  70. package/dist/write/tron.js.map +1 -0
  71. package/package.json +27 -14
  72. package/src/fallback.ts +8 -0
  73. package/src/lp.ts +721 -0
  74. package/src/lpMath.ts +113 -0
  75. package/src/lpV4.ts +406 -0
  76. package/src/owner.ts +19 -6
  77. package/src/scan.ts +155 -86
  78. package/src/source.ts +5 -0
  79. package/src/subpaths/lp.ts +71 -0
  80. package/src/subpaths/write.ts +26 -0
  81. package/src/tron.ts +5 -0
  82. package/src/write/batch.ts +302 -0
  83. package/src/write/collect.ts +312 -0
  84. package/src/write/rpc.ts +277 -0
  85. package/src/write/send.ts +490 -0
  86. package/src/write/signer.ts +90 -0
  87. package/src/write/transfer.ts +344 -0
  88. package/src/write/tron.ts +1100 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.5.0
4
+
5
+ ### 新功能
6
+
7
+ - 批量写操作,子路径 `@w3lib/evm-batch-call/write`(只做查询时打包不会带上):
8
+ - `batchCall`:批量调用合约。`'tx'` 模式每个调用一笔交易,同一钱包按 nonce 顺序连续发出、不同钱包并发;`'7702'` 模式通过 EIP-7702 委托给 Simple7702Account,同一钱包的调用合成一笔交易。依赖前一笔结果的调用(先 approve 再调用)预估失败时自动等前一笔确认后重新预估
9
+ - `batchTransfer`:一对多转账(主币 / ERC20 可混合),默认走 Disperse 合约,链上没有合约、只有一个收款人、某一批预估 revert 时自动改为逐笔发送;为 Disperse 发出的 approve 交易在结果的 `approvals` 里
10
+ - `batchCollect`:多钱包归集,可选 `gasWallet` 自动补 gas(只补差额)、扫空剩余主币(扣除手续费,OP Stack / Scroll 预留 L1 数据费;代币没有全部归集成功的钱包不扫)
11
+ - `revokeDelegation`:撤销 EIP-7702 委托
12
+ - Tron:同样的三个函数传 Tron 的 Provider 即可(TRX / TRC20 转账、合约调用、归集含补 gas 和激活账户)。交易本地编码签名、`broadcasthex` 广播,合约调用先模拟,过期按链上时间判断后自动重发;支持浏览器钱包(tronWeb / tronwallet-adapter);这部分按需加载
13
+ - 钱包可以传私钥或 ethers Signer(含浏览器钱包的 JsonRpcSigner);结果可以直接 JSON 序列化,`onUpdate` 回调进度,支持 `dryRun` / `wait: false` / `signal`
14
+ - `FallbackRpc.request(method, fn)`:用任意方法请求节点,与 call / getBalance 相同的故障切换
15
+ - LP 仓位,子路径 `@w3lib/evm-batch-call/lp`:`getLpPositions` / `lpPositions` 查一个地址的 V2 LP 代币、V3 / V4 仓位 NFT,两种代币的数量、未领取手续费(与合约 `decreaseLiquidity` / `collect` 的结果逐位核对过)、可选美元价值。内置 Uniswap、PancakeSwap、SushiSwap(7 条 EVM 链)和 Tron 的 SunSwap;V4 支持传 tokenId 或扫描 Transfer 事件发现仓位
16
+ - DefiLlama 价格源支持 Tron(资产列表在 Tron 上也可以带价格)
17
+
3
18
  ## 0.4.2
4
19
 
5
20
  ### 修复
package/README.md CHANGED
@@ -1,11 +1,13 @@
1
1
  # @w3lib/evm-batch-call
2
2
 
3
- 基于 Multicall3 的 EVM / Tron 批量合约读取与交易预执行库,依赖 ethers v6,API 兼容 [ethcall](https://github.com/Destiner/ethcall)。
3
+ 基于 Multicall3 的 EVM / Tron 批量合约读取与交易预执行库,依赖 ethers v6,API 兼容 [ethcall](https://github.com/Destiner/ethcall)。另有[批量写操作](#批量写操作)(批量转账、归集、批量调用合约)。
4
4
 
5
5
  ```bash
6
6
  pnpm add @w3lib/evm-batch-call ethers
7
7
  ```
8
8
 
9
+ **在线 demo**:<https://web3-lib.github.io/libs/evm/>(余额、代币信息、资产列表、LP 仓位、NFT,8 条链含 Tron,显示每次查询实际发出的节点请求数)。本地运行:`pnpm --filter @w3lib/evm-batch-call demo`(http://localhost:5174)
10
+
9
11
  ## 快速上手
10
12
 
11
13
  ### 常用查询
@@ -50,8 +52,9 @@ await getErc1155Balances(user, [{ contract: ITEMS, tokenId: 7 }], { chainId: 137
50
52
  | `getNftTokenUris(items, opts)` | `nftTokenUris(multi, items, opts)` | **`/nft`**。元数据地址:自动兼容 ERC721 `tokenURI` 与 ERC1155 `uri`(`{id}` 按规范替换),`ipfsGateway` 转换 `ipfs://`;首次查询顺带识别集合标准并缓存,之后只发对应的调用 |
51
53
  | `getErc1155Balances(owner, items, opts)` | `erc1155Balances(multi, owner, items)` | **`/nft`**。ERC1155 余额 |
52
54
  | `getOwnerTokens(owner, opts)` | `ownerTokens(multi, owner, opts)` | **子路径 `/owner`**。资产列表:地址持有的代币(**不推荐使用**,结果不保证完整,见[资产列表](#资产列表)) |
55
+ | `getLpPositions(owner, opts)` | `lpPositions(multi, owner, opts)` | **子路径 `/lp`**。LP 仓位:V2 的 LP 代币、V3 / V4 的仓位 NFT,代币数量、未领取手续费、可选美元价值,见 [LP 仓位](#lp-仓位) |
53
56
 
54
- **子路径**:NFT 查询在 `@w3lib/evm-batch-call/nft`,资产列表(含代币来源、价格源、Transfer 增量扫描)在 `@w3lib/evm-batch-call/owner`。不用这些功能时打包不会带上它们的代码(拆出后约少 15KB:只用 `getBalances` 时 minify 后约 44KB、gzip 约 16KB,均不含 ethers)。
57
+ **子路径**:NFT 查询在 `@w3lib/evm-batch-call/nft`,资产列表(含代币来源、价格源、Transfer 增量扫描)在 `@w3lib/evm-batch-call/owner`,LP 仓位在 `@w3lib/evm-batch-call/lp`,批量写操作在 `@w3lib/evm-batch-call/write`。不用这些功能时打包不会带上它们的代码(拆出后约少 15KB:只用 `getBalances` 时 minify 后约 50KB、gzip 约 17KB,均不含 ethers)。
55
58
 
56
59
  共同的规则:
57
60
 
@@ -237,6 +240,64 @@ await getOwnerTokens(user, { chainId: 1, scanTransfers: { lookbackBlocks: 20_000
237
240
  7. 使用 Alchemy / NodeReal 时受它们的免费额度和限频约束,翻页次数默认最多 20 页(2000 个代币),可用 `maxPages` 调整
238
241
  8. 开启 `scanTransfers` 时另有局限,见上面「增量扫描」
239
242
 
243
+ ## LP 仓位
244
+
245
+ 查一个地址在各 DEX 的流动性仓位(子路径 `@w3lib/evm-batch-call/lp`):V2 的 LP 代币、V3 / V4 的仓位 NFT,每个仓位的两种代币数量、未领取的手续费,可选美元价值。所有合约读取都用 multicall 批量完成(整个查询通常 4~6 次请求)。
246
+
247
+ ```ts
248
+ import { getLpPositions } from '@w3lib/evm-batch-call/lp'
249
+
250
+ await getLpPositions(user, { chainId: 56 }) // 这条链上内置的全部协议
251
+ await getLpPositions(user, { chainId: 56, prices: true }) // 带美元价值(DefiLlama),按价值排序
252
+ await getLpPositions(user, { chainId: 56, tokens: heldTokens }) // V2:再用这些代币 × 计价币找池子
253
+ await getLpPositions(user, { chainId: 1, v4: { tokenIds: [12345n] } }) // V4:已知的仓位
254
+ await getLpPositions(user, { chainId: 1, v4: { scan: { storage } } }) // V4:扫描 Transfer 事件发现仓位
255
+ // [
256
+ // { version: 'v3', protocol: 'pancakeswap-v3', protocolName: 'PancakeSwap V3', pool: '0x…', tokenId: '123', positionManager: '0x…',
257
+ // token0: { address, symbol: 'WBNB', decimals: 18, native: false }, token1: { symbol: 'USDT', … },
258
+ // amount0: '1200000000000000000', amount0Formatted: '1.2', amount1Formatted: '700',
259
+ // fees0Formatted: '0.003', fees1Formatted: '1.8', fee: 500, tickLower, tickUpper, tick, inRange: true,
260
+ // liquidity, price: 583.2, priceLower: 500, priceUpper: 650, valueUsd: 1400, feesUsd: 3.6, chainId: 56 },
261
+ // { version: 'v2', protocol: 'pancakeswap-v2', pool: '0x…', balance, totalSupply, share: 0.0001, amount0Formatted, amount1Formatted, valueUsd, … },
262
+ // ]
263
+ ```
264
+
265
+ ### 内置的协议
266
+
267
+ | 链 | V2 | V3 | V4 |
268
+ | --- | --- | --- | --- |
269
+ | Ethereum | Uniswap、SushiSwap、PancakeSwap | Uniswap、PancakeSwap | Uniswap |
270
+ | BSC | PancakeSwap、Uniswap、SushiSwap | PancakeSwap、Uniswap | Uniswap |
271
+ | Base | Uniswap、PancakeSwap | Uniswap、PancakeSwap | Uniswap |
272
+ | Arbitrum | Uniswap、SushiSwap、PancakeSwap | Uniswap、PancakeSwap | Uniswap |
273
+ | Optimism | Uniswap | Uniswap | Uniswap |
274
+ | Polygon | Uniswap、SushiSwap | Uniswap | Uniswap |
275
+ | Avalanche | | Uniswap | |
276
+ | Tron | SunSwap | SunSwap | |
277
+
278
+ 地址都在链上核对过(2026-10)。其他 DEX / 链传自己的协议:`protocols: [{ id: 'my-dex', name: 'My DEX', version: 'v3', chainId, positionManager, factory }]`(V2 只需要 `factory`;V3 需要 `positionManager` 和 `factory`,ABI 与 Uniswap V3 相同的分叉都可以;V4 需要 `positionManager` 和 `stateView`,`deployBlock` 可选)。`protocols: ['uniswap-v3']` 只查某些协议,`versions: ['v3']` 只查某些类型。
279
+
280
+ ### 每种类型怎么查、能不能查全
281
+
282
+ | 类型 | 能否查全 | 做法 |
283
+ | --- | --- | --- |
284
+ | **V3**(仓位 NFT) | 能 | 仓位合约可以按地址列出 NFT:`balanceOf` → `tokenOfOwnerByIndex` → `positions`,再读池子的价格和手续费增长。仓位很多的地址只核对按持有顺序最后的 `maxPositions` 个(默认 500,大致是最近的) |
285
+ | **V2**(LP 代币) | **尽量** | 链上没有“地址持有哪些代币”的索引。默认用计价币之间的组合(WETH/USDT、WBNB/USDT…)在各工厂里找池子;`tokens` 传入更多代币(如资产列表里的)一起组合;`pools` 直接传池子地址;`source: alchemy({ apiKey })` 用代币来源列出地址持有的全部 ERC20(包括 LP 代币,见[资产列表](#资产列表))。找到的 LP 代币按 `token0` / `token1` / `factory` 识别池子和协议,工厂不在协议表里的显示为 `Unknown V2` |
286
+ | **V4**(仓位 NFT) | **需要配置** | V4 的仓位合约不能按地址列出 NFT。`v4.tokenIds` 传已知的仓位;`v4.scan` 扫描仓位合约发给该地址的 NFT(`Transfer` 事件),扫到的再核对是否仍归这个地址(已转走 / 销毁的从进度里去掉)。两个都不传时不查 V4;候选太多时只核对 tokenId 最大的 `maxPositions` 个 |
287
+
288
+ **V4 扫描**(`v4: { scan: true }` 或传选项):每次调用从上次的位置往后扫,进度默认在内存里,`storage: keyValueLpScanStorage(localStorage)` 可以跨页面刷新接着扫。`fromBlock`:`'deployment'`(默认,从仓位合约部署的区块开始扫全部历史;自定义协议没传 `deployBlock` 时等同于 `'latest'`)、`'latest'`(只发现之后的新仓位)或区块号。只查仓位合约的事件,单次范围默认 10000 个区块,节点有上限时自动缩小,限频 / 超时自动退避(与[增量扫描](#增量扫描可选)相同)。扫全部历史在公共节点上很慢(BSC 公共节点每次只能查几百个区块),每次调用只推进 `maxRequests` 个请求 / `timeBudget` 时间,建议用自己的节点或把进度存起来。**没扫到最新区块之前 V4 的结果不完整**(从旧往新扫,最近铸造的仓位最后才扫到):`onProgress: ({ cursor, target, done, pausedUntil }) => …` 可以拿到进度,没扫完时提示用户或再调用几次(节点不开放 getLogs 时会暂停一段时间:触发暂停的那次带 `pausedUntil`,暂停期间的调用 `target` 为 null;拿不到最新区块时 `target` 也为 null)。`confirmations`(默认 5)不要设为 0:刚出的区块可能被重组。已转走 / 销毁的仓位只在节点跟上扫描进度时才从进度里去掉,节点落后时照常返回结果、这次不清理。改 `fromBlock` 只对还没有进度的地址生效(进度按链 + 仓位合约 + 地址保存)。
289
+
290
+ ### 数值
291
+
292
+ - **数量**(`amount0` / `amount1`):V2 按份额(`储备 × 持有 / 总量`);V3 / V4 是在当前价格下撤出全部流动性能拿到的数量(与合约的 `decreaseLiquidity` 结果逐位一致,不含手续费)
293
+ - **手续费**(`fees0` / `fees1`,V3 / V4):未领取的手续费,按池子的手续费增长计算,不用发交易。V3 与仓位合约记的账一致;仓位合约按每个仓位单独取整、池子按同一区间合并记账,实际能领到的偶尔会少几 wei。V2 的手续费已经计入份额,没有单独的未领取手续费
294
+ - **价格**(`price` / `priceLower` / `priceUpper`):token1 / token0,按精度换算的浮点数,只用于展示;`inRange` 表示当前价格在仓位区间内(在区间内才赚手续费)
295
+ - **已清空的仓位**:V3 / V4 撤出全部流动性、手续费也领完后 NFT 还在,默认不返回;`includeClosed: true` 时返回
296
+ - **美元价值(可选)**:默认不查;价格源出错(服务不可用、被拦截等)时照样返回仓位,只是 `valueUsd` / `feesUsd` 为 `null`;传 `onPriceError: (err) => …` 可以知道是价格服务出错(而不是代币没有价格)。`prices: true` 用 DefiLlama(与资产列表相同),也可以传自己的 `PriceSource`。`valueUsd` 是仓位里两种代币的价值,`feesUsd` 是未领取手续费的价值;数量不为 0 的代币没有价格时为 `null`;开启后结果按价值从高到低排序
297
+ - **Tron**:地址(池子、代币、仓位合约)都是 T 开头的格式;价格用 DefiLlama 的 Tron 数据
298
+
299
+ **局限**:PancakeSwap 等质押到农场(MasterChef)的仓位 NFT 不在用户名下,查不到;V2 只能尽量查(见上表);V4 需要传 `tokenIds` 或开启扫描。
300
+
240
301
  ## 功能
241
302
 
242
303
  - **常用查询**:余额、代币详情、授权额度、NFT(集合 / 持有 / 元数据地址 / ERC1155 余额,子路径 `/nft`),一个函数一次请求
@@ -360,6 +421,108 @@ for (const r of results) {
360
421
 
361
422
  预执行**不走 multicall**:multicall 里子调用的 `msg.sender` 是 multicall 合约,也无法逐条带 `value`,与真实交易不一致。每条都是对目标合约的独立 `eth_call`,同时发出(`JsonRpcProvider` 会合进一个 JSON-RPC batch 请求)。
362
423
 
424
+ ## 批量写操作
425
+
426
+ 子路径 `@w3lib/evm-batch-call/write`,只做查询时打包不会带上。三个函数都复用 `Provider`(节点故障切换、一次 multicall 读余额 / decimals)。在已经用到 `Provider` 的基础上,只引入 `batchCall` 约增加 12KB(minify,gzip 约 4KB),三个函数都引入约 21KB(gzip 约 8KB),均不含 ethers;私钥用 ethers 的 `BaseWallet` 签名,不会带上 `Wallet` 的 keystore 加解密代码(约 74KB):
427
+
428
+ ```ts
429
+ import { Contract, ERC20_ABI, NATIVE_TOKEN, Provider } from '@w3lib/evm-batch-call'
430
+ import { batchCall, batchCollect, batchTransfer } from '@w3lib/evm-batch-call/write'
431
+
432
+ const multi = new Provider(56, [rpc1, rpc2])
433
+
434
+ // 一对多转账:默认走 Disperse 合约,每种代币一笔交易(代币先 approve 本次的精确总额)
435
+ await batchTransfer(multi, privateKey, [
436
+ { to: a, formatted: '1.5' }, // 默认代币(token 选项,默认主币)
437
+ { to: b, amount: 10n ** 18n }, // amount 是最小单位,formatted 按精度换算,二选一
438
+ { to: c, token: USDT, formatted: '20' }, // 主币、代币可以混在一起
439
+ ])
440
+
441
+ // 归集:多个钱包 → 一个地址;主币不够付手续费的子钱包先由 gasWallet 补 gas
442
+ const { results, topUps } = await batchCollect(multi, [key1, key2, key3], hotWallet, {
443
+ tokens: [USDT, NATIVE_TOKEN], // 包含主币:代币归集确认后,扣掉手续费扫空剩余主币
444
+ gasWallet: gasKey,
445
+ })
446
+
447
+ // 通用批量调用合约
448
+ const usdt = new Contract(USDT, ERC20_ABI)
449
+ await batchCall(multi, [
450
+ { from: key1, call: usdt.approve(router, amount) },
451
+ { from: key1, to: router, data: swapData }, // 依赖上一笔:预估失败时先等 approve 确认再预估
452
+ { from: key2, to: someone, value: 10n ** 16n },
453
+ ])
454
+ ```
455
+
456
+ **钱包**:私钥字符串,或 ethers Signer。能本地签名的(`Wallet` 等)自己管理 nonce,可以连续发出、等待时重发;浏览器钱包的 `JsonRpcSigner` 交给钱包签名并发送(每笔需要用户确认,不支持 `'7702'`)。
457
+
458
+ **发送方式**:
459
+
460
+ | mode | 说明 | 用于 |
461
+ | --- | --- | --- |
462
+ | `'tx'` | 每个调用一笔交易。同一钱包按 nonce 顺序连续发出(不等上一笔确认),不同钱包并发(`concurrency`,默认 8) | `batchCall` 默认;所有链 |
463
+ | `'disperse'` | [Disperse](https://disperse.app) 合约(`DISPERSE_ADDRESS`),每种代币每 `batchSize`(默认 200)个收款人一笔交易 | `batchTransfer` 默认 |
464
+ | `'7702'` | 钱包通过 EIP-7702 委托给 Simple7702Account(`SIMPLE_7702_ACCOUNT`,eth-infinitism),同一钱包的调用合成一笔发给自己的 `executeBatch` 交易(每 `batchSize`,默认 50 个一笔),一笔里的调用要么全成功要么全失败;`msg.sender` 仍是钱包本身 | `batchCall` / `batchTransfer` 可选 |
465
+
466
+ - **Disperse 自动退回逐笔发送**:链上没有 Disperse 合约、某种代币只有一个收款人、某一批预估就 revert(收款地址拒收主币、转账收税的代币、被拉黑的地址等)时,这部分改为逐笔发送,出问题的收款项单独标记失败。结果里的 `via` 是实际的发送方式。Disperse 只会从调用者自己的账户 `transferFrom`,approve 给它的额度别人无法动用
467
+ - **7702 会改变账户**:委托一直保留,直到撤销(`revokeDelegation(multi, key)`)。钱包已委托给其他合约时默认报错,传 `redelegate: true` 才会改。需要链支持 EIP-7702、委托合约在这条链上已部署(没部署时直接报错:委托给没有代码的地址时调用会“成功”但什么都不执行),钱包需要能本地签名 7702 授权(私钥 / ethers Wallet)。发授权交易时钱包不能有未确认的交易(否则 gas 预估不准、上链后执行失败)。第一笔带授权的交易确认后才发同一钱包的下一笔,没确认(超时)时后面的批次跳过
468
+ - **Disperse 不能用于通用调用**:它只能分发主币 / 代币。任意合约调用合成一笔交易只能用 `'7702'`(Multicall3 的 `msg.sender` 是 Multicall3 合约本身,approve 或转给它的代币任何人都能拿走)
469
+
470
+ **结果**:与输入一一对应,字段都是字符串 / 数字 / null,可以直接 `JSON.stringify`:
471
+
472
+ ```ts
473
+ { index: 0, from, to, status: 'confirmed', hash: '0x…', nonce: 7, gasLimit: '55320', gasUsed: '46100', fee: '46100000000000', blockNumber: 123, error: null }
474
+ // batchTransfer 另有 token / native / amount / formatted / via / approvals(为走 Disperse 发出的 approve 交易);batchCollect 另有 token / native / amount / formatted
475
+ ```
476
+
477
+ | status | 含义 |
478
+ | --- | --- |
479
+ | `confirmed` | 已上链且执行成功 |
480
+ | `reverted` | 已上链但执行失败(手续费已扣) |
481
+ | `failed` | 没有发出去(预估 revert、余额不足、节点拒绝、用户在钱包里拒绝),不花手续费;`error` 是原因(能解析时带 revert 原因) |
482
+ | `sent` | 已广播,没等确认(`wait: false`,或等待中途取消)。广播结果不确定的交易也算 `sent`(超时 / 连不上节点,或前一个节点超时后另一个节点拒绝;浏览器钱包已广播、之后查询出错),可能已进交易池,不能当作失败重试,`error` 里有说明,等待期间会定期重发。节点明确拒绝的(给出了错误信息)是 `failed` |
483
+ | `pending` | 等到 `timeout` 还没确认,之后仍可能上链 |
484
+ | `skipped` | 没有执行:同一钱包前面的调用发送前失败(`batchCall` 默认 `continueOnError: false`;已发出、之后上链 revert 的拦不住后面已发出的交易)、已取消、同一笔 7702 交易里其他调用失败、余额为 0 等 |
485
+ | `simulated` | `dryRun: true` 时预估通过(不发交易) |
486
+
487
+ **依赖前一笔的调用**:预估 gas 失败且同一钱包还有未确认的交易时,先等它们确认再重新预估一次,所以“先 approve 再调用”可以直接写在一批里。`dryRun` 不会真的执行前一笔,这类调用预估会失败。
488
+
489
+ **归集流程**(`batchCollect`):一次 multicall 读出所有钱包的余额 → 预估每笔归集的手续费(gasLimit × maxFeePerGas,OP Stack / Scroll 加上 L1 数据费)→ 不够的钱包由 `gasWallet` 补上差额(`gasMode`,默认 `'disperse'` 一笔补齐,等确认)→ 重新预估、发代币归集(手续费价格沿用补 gas 时的那一个,补 gas 等确认期间节点报价上涨也不会超出补的数量)→ 包含主币时等代币归集确认,按最新余额(`minBlock` 不早于最后一笔交易的区块)扣掉手续费扫空。代币没有全部归集成功的钱包不扫主币(留着付重新归集的手续费);补的 gas 用剩的零头不够付扫尾手续费时,主币一项也为 `skipped`。余额为 0、低于 `minAmount`、钱包就是归集地址的项为 `skipped`。`dryRun: true` 返回计划(补多少 gas、每笔 gasLimit),不发交易。
490
+
491
+ Disperse / 7702 里同一笔交易的多个调用,`hash`、`fee`、`gasUsed` 都是整笔交易的值(汇总手续费时按 `hash` 去重)。
492
+
493
+ **nonce 被占用**:广播时节点说 nonce 已被用掉,先多查几次回执(节点可能落后):是这笔已上链就按已发出处理;确定没上链(钱包在别处发了交易)才换 nonce 重发;查询出错时不确定,按已发出跟踪,绝不重发。
494
+
495
+ **浏览器钱包**(ethers 的 `JsonRpcSigner`):先确认钱包当前所在的链与 Provider 一致,不一致时报错、不发送(否则会在另一条链上真的转账);交易里也带上 `chainId`,钱包会再校验一次。
496
+
497
+ **共同选项**(`SendOptions`):`wait`(默认 true,等上链确认)、`timeout`(默认 180 秒)、`pollInterval`(默认 2 秒,等待期间每 5 次重发一次原交易)、`concurrency`、`gasMultiplier`(gas 预估的放大倍数,默认 1.2)、`gasPrice` / `maxFeePerGas` / `maxPriorityFeePerGas`(不传按节点的 `getFeeData`)、`dryRun`、`signal`(取消:不再发新交易)、`onUpdate`(每个结果状态变化时回调,用于展示进度;回调抛错会被忽略,不影响发送)。
498
+
499
+ **Tron**:同样的 `batchCall` / `batchTransfer` / `batchCollect`,传 Tron 的 `Provider` 即可(地址可以用 T 开头的格式)。Tron 部分按需加载:打包工具做代码分割时(Vite / Rollup / webpack 默认如此),只用 EVM 不会带上它(约 17KB)。
500
+
501
+ ```ts
502
+ const tron = new Provider(TRON_CHAIN_ID.mainnet, 'https://api.trongrid.io', { tron: { apiKey } })
503
+ await batchTransfer(tron, privateKey, [{ to: 'T…', formatted: '1.5' }, { to: 'T…', token: USDT, formatted: '20' }])
504
+ await batchCollect(tron, [key1, key2], hotWallet, { tokens: [USDT, NATIVE_TOKEN], gasWallet: gasKey })
505
+ ```
506
+
507
+ - 交易在本地按 protobuf 编码(与 TronWeb 逐字节一致)、本地签名,通过 `/wallet/broadcasthex` 广播:不让节点代为构造交易,节点无法替换交易内容
508
+ - 每个调用一笔交易(Tron 上没有通用的 Disperse 合约,`mode` 不支持 `'7702'`,`gasMode` 和调用里的 `gasLimit` 不起作用);Tron 没有 nonce,交易互不阻塞
509
+ - 合约调用先用 `triggerconstantcontract` 模拟,revert 的不发送;`fee_limit` 默认按模拟的能量 × 能量单价 × 1.5(`feeLimit` 可以指定)
510
+ - **发送前检查 TRX 够不够**:Tron 上能量不够的合约调用照样上链、执行失败(OUT_OF_ENERGY)并烧掉 TRX,所以按每笔的金额 + 能量(× 1.2,扣掉质押的能量)+ 带宽 + 激活费累计,不够的那笔及之后在发送前就是 `failed`
511
+ - 给合约地址转 TRX 时用合约调用(空 calldata 带 `call_value`),主网禁止用普通转账给合约转 TRX
512
+ - 交易 60 秒过期(浏览器钱包 3 分钟)。过期判断按固化数据:同一个节点上固化区块的时间超过过期时间 + 60 秒、并且固化的交易信息里没有这笔,连续两次确认后才换新的参考区块重发,最多 `retries` 次(默认 2);查询出错时一律当作“不确定”,不会重发,避免重复执行
513
+ - 广播时只有交易本身的问题(签名、合约校验、带宽不够、交易太大)判为 `failed`;其他错误码(如 TAPOS_ERROR、节点忙)可能只是某个节点的问题,按 `sent` 继续跟踪
514
+ - 默认 `pollInterval` 3 秒,等待期间每 3 次重发一次原交易
515
+ - 带宽按 java-tron 的规则算:质押带宽或免费带宽有一项够这笔交易用时不收费,两者不能凑在一起用,都不够时整笔按字节烧 TRX
516
+ - 归集的手续费按上面的资源模型算;没激活的子钱包由补 gas 的转账激活(激活费约 1.1 TRX 由 `gasWallet` 付),补 gas 前先确认 `gasWallet` 付得起全部(含激活费),不够时什么都不发、直接报错;TRX 余额读不到的钱包不补 gas。扫空 TRX 时扣掉带宽费;归集地址是合约时还要预留能量,会剩一点零头
517
+ - 结果的 `hash` 是交易 ID(不带 0x),`gasLimit` 是模拟的能量,`gasUsed` 是实际消耗的能量,`fee` 是实际烧掉的 sun;`nonce` 为 null
518
+ - 钱包:私钥、ethers `Wallet`、自定义 `{ address, signDigest(digest) }`(KMS / 硬件钱包),或浏览器钱包:注入的 `window.tronWeb`(TronLink / OKX 等)、@tronweb3/tronwallet-adapter 的 adapter
519
+ - 浏览器钱包:每笔交易弹一次确认(Tron 钱包不支持一次签多笔),过期时间放宽到 3 分钟。钱包拿到的是 TronWeb 格式的交易 JSON(能通过 TronWeb 的 `txCheck`,和本地编码的 `raw_data_hex` 一致);签完后从签名恢复出地址核对,钱包切换了账户或改了交易时这笔失败。用户拒绝时 `error` 为 `'rejected by user'`
520
+
521
+ ```ts
522
+ await window.tronLink.request({ method: 'tron_requestAccounts' }) // 先连接(TronLink)
523
+ await batchTransfer(new Provider(window.tronWeb), window.tronWeb, recipients)
524
+ ```
525
+
363
526
  ## 主币余额与 deployless
364
527
 
365
528
  `getEthBalance`(以及 `balances` 里的主币)默认在两种模式下都和合约调用在同一次 `eth_call` 里:
@@ -74,6 +74,11 @@ export declare class FallbackRpc implements EthersLikeProvider {
74
74
  get nodes(): readonly EthersLikeProvider[];
75
75
  /** eth_call;validation.accept 返回 false 的结果视为这个节点不可用,换下一个节点(不冷却) */
76
76
  call(tx: TransactionRequest, validation?: CallValidation): Promise<string>;
77
+ /**
78
+ * 用任意方法请求节点,与 call / getBalance 相同的故障切换(写操作模块用:nonce、预估 gas、广播交易、查回执等)。
79
+ * fn 抛出的确定性错误(revert、参数错误等)直接抛出,不换节点
80
+ */
81
+ request<T>(method: string, fn: (node: EthersLikeProvider) => Promise<T>): Promise<T>;
77
82
  getBalance(address: Parameters<EthersLikeProvider['getBalance']>[0], blockTag?: Parameters<EthersLikeProvider['getBalance']>[1]): Promise<bigint>;
78
83
  /** 按节点顺序探测 chainId(节点需实现 getChainId,见 detect.ts) */
79
84
  getChainId(): Promise<number>;
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback.d.ts","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
package/dist/fallback.js CHANGED
@@ -121,6 +121,13 @@ export class FallbackRpc {
121
121
  throw err;
122
122
  }), accept ? (validation?.maxInvalid ?? 2) : Number.POSITIVE_INFINITY);
123
123
  }
124
+ /**
125
+ * 用任意方法请求节点,与 call / getBalance 相同的故障切换(写操作模块用:nonce、预估 gas、广播交易、查回执等)。
126
+ * fn 抛出的确定性错误(revert、参数错误等)直接抛出,不换节点
127
+ */
128
+ request(method, fn) {
129
+ return this.#run(method, fn);
130
+ }
124
131
  #health(index) {
125
132
  return healthOf(this.#healthKeys[index], this.#healthScopes[index]);
126
133
  }
@@ -1 +1 @@
1
- {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fallback.js","sourceRoot":"","sources":["../src/fallback.ts"],"names":[],"mappings":"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"}
package/dist/lp.d.ts ADDED
@@ -0,0 +1,149 @@
1
+ import type { CallOverrides } from './aggregate.js';
2
+ import { type LpV4Options } from './lpV4.js';
3
+ import { type PriceSource, type TokenSource } from './owner.js';
4
+ import type { Provider } from './provider.js';
5
+ export type LpVersion = 'v2' | 'v3' | 'v4';
6
+ /** 一个 DEX 在一条链上的部署 */
7
+ export interface LpProtocol {
8
+ /** 协议 id,如 'uniswap-v3'、'pancakeswap-v2' */
9
+ id: string;
10
+ /** 显示名,如 'Uniswap V3' */
11
+ name: string;
12
+ version: LpVersion;
13
+ chainId: number;
14
+ /** V2:工厂合约(getPair、识别 LP 代币属于哪个协议);V3:池子的工厂合约(getPool) */
15
+ factory?: string;
16
+ /** V3 / V4:仓位 NFT 合约(NonfungiblePositionManager / PositionManager) */
17
+ positionManager?: string;
18
+ /** V4:StateView(读池子和仓位的状态) */
19
+ stateView?: string;
20
+ /** V4:仓位合约的部署区块(深度扫描 Transfer 事件的默认起点;不知道时为 undefined) */
21
+ deployBlock?: number;
22
+ }
23
+ /**
24
+ * 内置的 DEX 部署(2026-10 在链上逐个核对:V3 的 name / factory、V2 的 allPairsLength)。
25
+ * 不在表里的 DEX / 链可以通过 `protocols` 选项传入自己的 LpProtocol。
26
+ */
27
+ export declare const LP_PROTOCOLS: readonly LpProtocol[];
28
+ /**
29
+ * 各链常见的计价币:查 V2 LP 时,用“传入的代币 × 计价币”(以及计价币之间)在工厂合约里查池子。
30
+ * 主流池子几乎都有一边是这些币
31
+ */
32
+ export declare const LP_QUOTE_TOKENS: Readonly<Record<number, readonly string[]>>;
33
+ export interface LpToken {
34
+ address: string;
35
+ /** 是否是主币(V4 的池子可以直接用主币,地址为零地址) */
36
+ native: boolean;
37
+ symbol: string | null;
38
+ /** 读不到精度时为 null(这时 formatted 字段也为 null) */
39
+ decimals: number | null;
40
+ }
41
+ interface LpPositionBase {
42
+ chainId: number;
43
+ /** 协议 id,如 'uniswap-v3';工厂不在协议表里的 V2 LP 为 'v2:<工厂地址>'(Tron 上是 T 地址;读不到工厂时为 'v2:unknown') */
44
+ protocol: string;
45
+ /** 协议显示名,如 'Uniswap V3';不认识的 V2 工厂为 'Unknown V2' */
46
+ protocolName: string;
47
+ /** 池子地址(V4 为 poolId) */
48
+ pool: string;
49
+ token0: LpToken;
50
+ token1: LpToken;
51
+ /** 这个仓位对应的 token0 / token1 数量(最小单位的十进制字符串;V3 / V4 是现在全部移除能拿到的数量,不含手续费) */
52
+ amount0: string;
53
+ amount1: string;
54
+ /** 按精度换算后的数量;读不到精度时为 null */
55
+ amount0Formatted: string | null;
56
+ amount1Formatted: string | null;
57
+ /** 开启 prices 时:这个仓位的美元价值(数量不为 0 的代币没有价格时为 null);没开启时不返回 */
58
+ valueUsd?: number | null;
59
+ }
60
+ /** V2(Uniswap V2 及其分叉):持有池子的 LP 代币,手续费已经计入份额,没有单独的未领取手续费 */
61
+ export interface LpV2Position extends LpPositionBase {
62
+ version: 'v2';
63
+ /** 持有的 LP 代币数量(最小单位) */
64
+ balance: string;
65
+ /** LP 代币总量 */
66
+ totalSupply: string;
67
+ /** 占池子的份额(0~1) */
68
+ share: number;
69
+ }
70
+ /** V3 / V4(集中流动性):一个仓位 NFT */
71
+ export interface LpConcentratedPosition extends LpPositionBase {
72
+ version: 'v3' | 'v4';
73
+ /** 仓位 NFT 的 tokenId(十进制字符串) */
74
+ tokenId: string;
75
+ /** 仓位 NFT 合约 */
76
+ positionManager: string;
77
+ /** 手续费档位(百万分之一:500 = 0.05%);V4 动态手续费池子为当前的 lpFee */
78
+ fee: number;
79
+ tickLower: number;
80
+ tickUpper: number;
81
+ /** 池子当前的 tick */
82
+ tick: number;
83
+ /** 当前价格是否在仓位的区间内(在区间内才赚手续费) */
84
+ inRange: boolean;
85
+ /** 仓位的流动性 L */
86
+ liquidity: string;
87
+ /** 价格都是 token1 / token0(按精度换算,只用于展示);读不到精度时为 null */
88
+ price: number | null;
89
+ priceLower: number | null;
90
+ priceUpper: number | null;
91
+ /** 未领取的手续费(最小单位) */
92
+ fees0: string;
93
+ fees1: string;
94
+ fees0Formatted: string | null;
95
+ fees1Formatted: string | null;
96
+ /** 开启 prices 时:未领取手续费的美元价值;没开启时不返回 */
97
+ feesUsd?: number | null;
98
+ /** V4:池子的 hooks 合约(没有时为零地址) */
99
+ hooks?: string;
100
+ }
101
+ export type LpPosition = LpV2Position | LpConcentratedPosition;
102
+ export interface LpPositionsOptions extends CallOverrides {
103
+ /**
104
+ * 查哪些协议:协议 id(如 ['uniswap-v3', 'pancakeswap-v2']),或自己的 LpProtocol(内置表里没有的 DEX / 链)。
105
+ * 默认这条链上内置的全部协议
106
+ */
107
+ protocols?: ReadonlyArray<string | LpProtocol>;
108
+ /** 只查这些类型,默认全部 */
109
+ versions?: readonly LpVersion[];
110
+ /** V2:直接指定要查的池子(LP 代币)地址,不限协议 */
111
+ pools?: readonly string[];
112
+ /** V2:用这些代币 × 计价币在工厂合约里找池子(如用户持有的代币,可以来自资产列表) */
113
+ tokens?: readonly string[];
114
+ /** V2:计价币,默认 LP_QUOTE_TOKENS 里这条链的 */
115
+ quoteTokens?: readonly string[];
116
+ /** V2:从代币来源发现 LP 代币(如 alchemy({ apiKey }) 能列出地址持有的全部 ERC20,包括 LP 代币) */
117
+ source?: TokenSource;
118
+ /**
119
+ * V4:怎么找仓位。V4 的仓位合约不能按地址列出 NFT:传已知的 tokenIds,或开启 scan 扫描 Transfer 事件。
120
+ * 两个都没有时不查 V4
121
+ */
122
+ v4?: LpV4Options;
123
+ /** V3 / V4:也返回已经撤出全部流动性、手续费也领完了的仓位(NFT 还在),默认不返回 */
124
+ includeClosed?: boolean;
125
+ /** V3 / V4:每个协议最多核对多少个仓位 NFT(超出时取最近的:V3 按持有顺序取最后的,V4 取 tokenId 最大的),默认 500 */
126
+ maxPositions?: number;
127
+ /** 美元价值(可选):true 用 DefiLlama,也可以传自己的 PriceSource。默认不查 */
128
+ prices?: boolean | PriceSource;
129
+ /**
130
+ * 价格源出错时调用(服务不可用、被拦截等):这时照样返回仓位,只是 valueUsd / feesUsd 为 null,
131
+ * 用它区分“价格服务出错”和“这个代币没有价格”。回调本身出错会被忽略
132
+ */
133
+ onPriceError?: (error: unknown) => void;
134
+ /** 自定义 fetch(价格、代币来源用) */
135
+ fetch?: typeof fetch;
136
+ }
137
+ /** 选出要查的协议 */
138
+ export declare function resolveLpProtocols(chainId: number, options?: Pick<LpPositionsOptions, 'protocols' | 'versions'>): LpProtocol[];
139
+ /**
140
+ * 查一个地址的 LP 仓位:V2(持有的 LP 代币)、V3 / V4(仓位 NFT)。所有合约读取都用 multicall 批量完成。
141
+ *
142
+ * ```ts
143
+ * await lpPositions(multi, user) // 这条链上内置的全部协议
144
+ * await lpPositions(multi, user, { tokens: heldTokens, prices: true }) // V2 用持有的代币找池子,带美元价值
145
+ * ```
146
+ */
147
+ export declare function lpPositions(provider: Provider, owner: string, options?: LpPositionsOptions): Promise<LpPosition[]>;
148
+ export {};
149
+ //# sourceMappingURL=lp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../src/lp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;AAInD,OAAO,EAAe,KAAK,WAAW,EAAE,MAAM,WAAW,CAAA;AACzD,OAAO,EAAmB,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAChF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAQ7C,MAAM,MAAM,SAAS,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAA;AAE1C,sBAAsB;AACtB,MAAM,WAAW,UAAU;IACzB,4CAA4C;IAC5C,EAAE,EAAE,MAAM,CAAA;IACV,yBAAyB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,OAAO,EAAE,SAAS,CAAA;IAClB,OAAO,EAAE,MAAM,CAAA;IACf,0DAA0D;IAC1D,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,sEAAsE;IACtE,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB,8BAA8B;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAoBD;;;GAGG;AACH,eAAO,MAAM,YAAY,EAAE,SAAS,UAAU,EA2C7C,CAAA;AAED;;;GAGG;AACH,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CA0CvE,CAAA;AAMD,MAAM,WAAW,OAAO;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,kCAAkC;IAClC,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;IACrB,2CAA2C;IAC3C,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxB;AAED,UAAU,cAAc;IACtB,OAAO,EAAE,MAAM,CAAA;IACf,4FAA4F;IAC5F,QAAQ,EAAE,MAAM,CAAA;IAChB,oDAAoD;IACpD,YAAY,EAAE,MAAM,CAAA;IACpB,wBAAwB;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,0EAA0E;IAC1E,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAA;IACf,6BAA6B;IAC7B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAA;IAC/B,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CACzB;AAED,4DAA4D;AAC5D,MAAM,WAAW,YAAa,SAAQ,cAAc;IAClD,OAAO,EAAE,IAAI,CAAA;IACb,wBAAwB;IACxB,OAAO,EAAE,MAAM,CAAA;IACf,cAAc;IACd,WAAW,EAAE,MAAM,CAAA;IACnB,kBAAkB;IAClB,KAAK,EAAE,MAAM,CAAA;CACd;AAED,8BAA8B;AAC9B,MAAM,WAAW,sBAAuB,SAAQ,cAAc;IAC5D,OAAO,EAAE,IAAI,GAAG,IAAI,CAAA;IACpB,+BAA+B;IAC/B,OAAO,EAAE,MAAM,CAAA;IACf,gBAAgB;IAChB,eAAe,EAAE,MAAM,CAAA;IACvB,oDAAoD;IACpD,GAAG,EAAE,MAAM,CAAA;IACX,SAAS,EAAE,MAAM,CAAA;IACjB,SAAS,EAAE,MAAM,CAAA;IACjB,iBAAiB;IACjB,IAAI,EAAE,MAAM,CAAA;IACZ,+BAA+B;IAC/B,OAAO,EAAE,OAAO,CAAA;IAChB,eAAe;IACf,SAAS,EAAE,MAAM,CAAA;IACjB,qDAAqD;IACrD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;IACzB,oBAAoB;IACpB,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,sCAAsC;IACtC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IACvB,+BAA+B;IAC/B,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,sBAAsB,CAAA;AAE9D,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;;OAGG;IACH,SAAS,CAAC,EAAE,aAAa,CAAC,MAAM,GAAG,UAAU,CAAC,CAAA;IAC9C,kBAAkB;IAClB,QAAQ,CAAC,EAAE,SAAS,SAAS,EAAE,CAAA;IAC/B,iCAAiC;IACjC,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB,iDAAiD;IACjD,MAAM,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC1B,sCAAsC;IACtC,WAAW,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IAC/B,wEAAwE;IACxE,MAAM,CAAC,EAAE,WAAW,CAAA;IACpB;;;OAGG;IACH,EAAE,CAAC,EAAE,WAAW,CAAA;IAChB,oDAAoD;IACpD,aAAa,CAAC,EAAE,OAAO,CAAA;IACvB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,yDAAyD;IACzD,MAAM,CAAC,EAAE,OAAO,GAAG,WAAW,CAAA;IAC9B;;;OAGG;IACH,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IACvC,0BAA0B;IAC1B,KAAK,CAAC,EAAE,OAAO,KAAK,CAAA;CACrB;AA4CD,cAAc;AACd,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,UAAU,CAAM,GAAG,UAAU,EAAE,CAelI;AAmXD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,kBAAuB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGtH"}