@w3lib/evm-batch-call 0.5.0 → 0.7.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 (160) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +240 -4
  3. package/contracts/TokenProbe.sol +103 -0
  4. package/dist/aggregate.d.ts.map +1 -1
  5. package/dist/aggregate.js +114 -3
  6. package/dist/aggregate.js.map +1 -1
  7. package/dist/approvals.d.ts +169 -0
  8. package/dist/approvals.d.ts.map +1 -0
  9. package/dist/approvals.js +310 -0
  10. package/dist/approvals.js.map +1 -0
  11. package/dist/chains.d.ts.map +1 -1
  12. package/dist/chains.js +4 -0
  13. package/dist/chains.js.map +1 -1
  14. package/dist/fees.d.ts +97 -0
  15. package/dist/fees.d.ts.map +1 -0
  16. package/dist/fees.js +115 -0
  17. package/dist/fees.js.map +1 -0
  18. package/dist/http.d.ts +10 -0
  19. package/dist/http.d.ts.map +1 -0
  20. package/dist/http.js +30 -0
  21. package/dist/http.js.map +1 -0
  22. package/dist/liquidity/common.d.ts +72 -0
  23. package/dist/liquidity/common.d.ts.map +1 -0
  24. package/dist/liquidity/common.js +271 -0
  25. package/dist/liquidity/common.js.map +1 -0
  26. package/dist/liquidity/concentrated.d.ts +19 -0
  27. package/dist/liquidity/concentrated.d.ts.map +1 -0
  28. package/dist/liquidity/concentrated.js +106 -0
  29. package/dist/liquidity/concentrated.js.map +1 -0
  30. package/dist/liquidity/index.d.ts +42 -0
  31. package/dist/liquidity/index.d.ts.map +1 -0
  32. package/dist/liquidity/index.js +143 -0
  33. package/dist/liquidity/index.js.map +1 -0
  34. package/dist/liquidity/types.d.ts +182 -0
  35. package/dist/liquidity/types.d.ts.map +1 -0
  36. package/dist/liquidity/types.js +2 -0
  37. package/dist/liquidity/types.js.map +1 -0
  38. package/dist/liquidity/v2.d.ts +5 -0
  39. package/dist/liquidity/v2.d.ts.map +1 -0
  40. package/dist/liquidity/v2.js +342 -0
  41. package/dist/liquidity/v2.js.map +1 -0
  42. package/dist/liquidity/v3.d.ts +6 -0
  43. package/dist/liquidity/v3.d.ts.map +1 -0
  44. package/dist/liquidity/v3.js +310 -0
  45. package/dist/liquidity/v3.js.map +1 -0
  46. package/dist/liquidity/v4.d.ts +5 -0
  47. package/dist/liquidity/v4.d.ts.map +1 -0
  48. package/dist/liquidity/v4.js +279 -0
  49. package/dist/liquidity/v4.js.map +1 -0
  50. package/dist/lp.d.ts +10 -2
  51. package/dist/lp.d.ts.map +1 -1
  52. package/dist/lp.js +31 -19
  53. package/dist/lp.js.map +1 -1
  54. package/dist/lpMath.d.ts +55 -0
  55. package/dist/lpMath.d.ts.map +1 -1
  56. package/dist/lpMath.js +209 -0
  57. package/dist/lpMath.js.map +1 -1
  58. package/dist/multicall.d.ts.map +1 -1
  59. package/dist/multicall.js +3 -0
  60. package/dist/multicall.js.map +1 -1
  61. package/dist/names.d.ts +55 -0
  62. package/dist/names.d.ts.map +1 -0
  63. package/dist/names.js +93 -0
  64. package/dist/names.js.map +1 -0
  65. package/dist/owner.d.ts +4 -26
  66. package/dist/owner.d.ts.map +1 -1
  67. package/dist/owner.js +7 -112
  68. package/dist/owner.js.map +1 -1
  69. package/dist/portfolio.d.ts +54 -0
  70. package/dist/portfolio.d.ts.map +1 -0
  71. package/dist/portfolio.js +49 -0
  72. package/dist/portfolio.js.map +1 -0
  73. package/dist/price.d.ts +95 -0
  74. package/dist/price.d.ts.map +1 -0
  75. package/dist/price.js +329 -0
  76. package/dist/price.js.map +1 -0
  77. package/dist/risk.d.ts +42 -0
  78. package/dist/risk.d.ts.map +1 -0
  79. package/dist/risk.js +134 -0
  80. package/dist/risk.js.map +1 -0
  81. package/dist/rpcNodes.d.ts.map +1 -1
  82. package/dist/rpcNodes.js +18 -0
  83. package/dist/rpcNodes.js.map +1 -1
  84. package/dist/subpaths/approvals.d.ts +26 -0
  85. package/dist/subpaths/approvals.d.ts.map +1 -0
  86. package/dist/subpaths/approvals.js +27 -0
  87. package/dist/subpaths/approvals.js.map +1 -0
  88. package/dist/subpaths/fees.d.ts +23 -0
  89. package/dist/subpaths/fees.d.ts.map +1 -0
  90. package/dist/subpaths/fees.js +25 -0
  91. package/dist/subpaths/fees.js.map +1 -0
  92. package/dist/subpaths/liquidity.d.ts +24 -0
  93. package/dist/subpaths/liquidity.d.ts.map +1 -0
  94. package/dist/subpaths/liquidity.js +21 -0
  95. package/dist/subpaths/liquidity.js.map +1 -0
  96. package/dist/subpaths/lp.d.ts +1 -1
  97. package/dist/subpaths/lp.d.ts.map +1 -1
  98. package/dist/subpaths/lp.js +1 -1
  99. package/dist/subpaths/lp.js.map +1 -1
  100. package/dist/subpaths/names.d.ts +35 -0
  101. package/dist/subpaths/names.d.ts.map +1 -0
  102. package/dist/subpaths/names.js +39 -0
  103. package/dist/subpaths/names.js.map +1 -0
  104. package/dist/subpaths/price.d.ts +38 -0
  105. package/dist/subpaths/price.d.ts.map +1 -0
  106. package/dist/subpaths/price.js +40 -0
  107. package/dist/subpaths/price.js.map +1 -0
  108. package/dist/subpaths/risk.d.ts +19 -0
  109. package/dist/subpaths/risk.d.ts.map +1 -0
  110. package/dist/subpaths/risk.js +20 -0
  111. package/dist/subpaths/risk.js.map +1 -0
  112. package/dist/subpaths/swap.d.ts +19 -0
  113. package/dist/subpaths/swap.d.ts.map +1 -0
  114. package/dist/subpaths/swap.js +20 -0
  115. package/dist/subpaths/swap.js.map +1 -0
  116. package/dist/swap.d.ts +128 -0
  117. package/dist/swap.d.ts.map +1 -0
  118. package/dist/swap.js +291 -0
  119. package/dist/swap.js.map +1 -0
  120. package/dist/tokenProbe.d.ts +3 -0
  121. package/dist/tokenProbe.d.ts.map +1 -0
  122. package/dist/tokenProbe.js +4 -0
  123. package/dist/tokenProbe.js.map +1 -0
  124. package/dist/write/tron.d.ts +27 -0
  125. package/dist/write/tron.d.ts.map +1 -1
  126. package/dist/write/tron.js +30 -0
  127. package/dist/write/tron.js.map +1 -1
  128. package/package.json +32 -1
  129. package/src/aggregate.ts +110 -3
  130. package/src/approvals.ts +462 -0
  131. package/src/chains.ts +4 -0
  132. package/src/fees.ts +201 -0
  133. package/src/http.ts +34 -0
  134. package/src/liquidity/common.ts +314 -0
  135. package/src/liquidity/concentrated.ts +121 -0
  136. package/src/liquidity/index.ts +171 -0
  137. package/src/liquidity/types.ts +194 -0
  138. package/src/liquidity/v2.ts +371 -0
  139. package/src/liquidity/v3.ts +382 -0
  140. package/src/liquidity/v4.ts +348 -0
  141. package/src/lp.ts +39 -19
  142. package/src/lpMath.ts +223 -0
  143. package/src/multicall.ts +3 -0
  144. package/src/names.ts +141 -0
  145. package/src/owner.ts +7 -138
  146. package/src/portfolio.ts +91 -0
  147. package/src/price.ts +415 -0
  148. package/src/risk.ts +166 -0
  149. package/src/rpcNodes.ts +18 -0
  150. package/src/subpaths/approvals.ts +48 -0
  151. package/src/subpaths/fees.ts +43 -0
  152. package/src/subpaths/liquidity.ts +52 -0
  153. package/src/subpaths/lp.ts +20 -1
  154. package/src/subpaths/names.ts +43 -0
  155. package/src/subpaths/price.ts +60 -0
  156. package/src/subpaths/risk.ts +23 -0
  157. package/src/subpaths/swap.ts +36 -0
  158. package/src/swap.ts +413 -0
  159. package/src/tokenProbe.ts +5 -0
  160. package/src/write/tron.ts +48 -0
package/dist/risk.js ADDED
@@ -0,0 +1,134 @@
1
+ /**
2
+ * 代币风险检查(子路径 `@w3lib/evm-batch-call/risk`):在 eth_call 里模拟“买入 → 转账 → 卖出”(deployless 的探测合约,不部署、不发交易),
3
+ * 算出买入税、转账税、卖出税,判断能不能卖(貔貅盘);另外看合约是不是可升级的代理、owner 有没有放弃。
4
+ * 只能检查在内置 V2 协议里有 代币 / 包装主币 池子的代币;Tron 不支持
5
+ */
6
+ import { AbiCoder, Interface, concat } from 'ethers';
7
+ import { LP_PROTOCOLS, LP_QUOTE_TOKENS } from './lp.js';
8
+ import { TOKEN_PROBE_BYTECODE } from './tokenProbe.js';
9
+ import { isExecutionError } from './errors.js';
10
+ import { isTronChain } from './tron.js';
11
+ const coder = AbiCoder.defaultAbiCoder();
12
+ const factoryInterface = new Interface(['function getPair(address tokenA, address tokenB) view returns (address)']);
13
+ const pairInterface = new Interface(['function token0() view returns (address)', 'function getReserves() view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast)']);
14
+ const ownerInterface = new Interface(['function owner() view returns (address)']);
15
+ /** EIP-1967 的实现合约槽位:bytes32(uint256(keccak256('eip1967.proxy.implementation')) - 1) */
16
+ const IMPLEMENTATION_SLOT = '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc';
17
+ const STAGES = ['ok', 'buy-failed', 'transfer-failed', 'approve-failed', 'sell-failed'];
18
+ const ZERO = '0x0000000000000000000000000000000000000000';
19
+ /**
20
+ * 检查代币的风险(每个代币一次模拟的 eth_call,加上一次 multicall 找池子、读 owner)。
21
+ *
22
+ * ```ts
23
+ * const [risk] = await tokenRisks(provider, [token])
24
+ * // { stage: 'ok', honeypot: false, buyTax: 0.05, sellTax: 0.05, transferTax: 0, flags: ['has-tax', 'owned'], … }
25
+ * ```
26
+ */
27
+ export async function tokenRisks(provider, tokens, options = {}) {
28
+ const chainId = await provider.getChainId();
29
+ if (isTronChain(chainId))
30
+ throw new Error('tokenRisks is not supported on Tron');
31
+ const wrapped = LP_QUOTE_TOKENS[chainId]?.[0];
32
+ const protocols = (options.protocols ?? LP_PROTOCOLS.filter((p) => p.chainId === chainId)).filter((p) => p.version === 'v2' && p.router && p.factory);
33
+ if (!wrapped || !protocols.length)
34
+ throw new Error(`No V2 protocol with a router on chain ${chainId}`);
35
+ // 1. 每个代币在每个 V2 协议里和包装主币的池子,以及 owner()
36
+ const pairCalls = tokens.flatMap((t) => protocols.map((p) => provider.contract(p.factory, factoryInterface).getPair(t, wrapped)));
37
+ const ownerCalls = tokens.map((t) => provider.contract(t, ownerInterface).owner());
38
+ const first = await provider.tryAll([...pairCalls, ...ownerCalls]);
39
+ const pairs = first.slice(0, pairCalls.length);
40
+ const owners = first.slice(pairCalls.length);
41
+ const found = pairs.flatMap((pair, i) => (pair && pair.toLowerCase() !== ZERO ? [{ i, pair }] : []));
42
+ const reserves = found.length
43
+ ? await provider.tryAll(found.flatMap(({ pair }) => [provider.contract(pair, pairInterface).token0(), provider.contract(pair, pairInterface).getReserves()]))
44
+ : [];
45
+ // 每个代币:包装主币一侧最深的池子
46
+ const best = tokens.map(() => null);
47
+ found.forEach(({ i, pair }, k) => {
48
+ const token0 = reserves[k * 2];
49
+ const r = reserves[k * 2 + 1];
50
+ if (!token0 || !r)
51
+ return;
52
+ const wrappedReserve = token0.toLowerCase() === wrapped.toLowerCase() ? r[0] : r[1];
53
+ const t = Math.floor(i / protocols.length);
54
+ const current = best[t];
55
+ if (wrappedReserve > 0n && (!current || wrappedReserve > current.wrappedReserve))
56
+ best[t] = { protocol: protocols[i % protocols.length], pair, wrappedReserve };
57
+ });
58
+ const { runOnNodes } = await import('./write/rpc.js');
59
+ const node = (method, fn, isFinal) => runOnNodes(provider.rpc, method, (n) => fn(n), isFinal);
60
+ const ONE = 10n ** 18n;
61
+ return Promise.all(tokens.map(async (token, t) => {
62
+ const pick = best[t];
63
+ const owner = owners[t] ?? null;
64
+ const implementation = await node('getStorage', (n) => (n.getStorage ? n.getStorage(token, IMPLEMENTATION_SLOT) : Promise.resolve('0x')))
65
+ .then((slot) => (slot && BigInt(slot) !== 0n ? `0x${slot.slice(-40)}` : null))
66
+ .catch(() => null);
67
+ const base = { token, implementation, owner, buyTax: null, sellTax: null, transferTax: null, buyGas: null, sellGas: null };
68
+ if (!pick)
69
+ return { ...base, protocol: null, pool: null, stage: null, honeypot: null, flags: flagsOf({ ...base, stage: null, honeypot: null }, true) };
70
+ const amount = options.amount ?? min(pick.wrappedReserve / 1000n, ONE);
71
+ // deployless:没有 to 的 eth_call 执行构造函数;从包装主币合约发起(它持有大量主币,eth_call 不需要签名)
72
+ const data = concat([TOKEN_PROBE_BYTECODE, coder.encode(['address', 'address', 'address'], [pick.protocol.router, token, pick.pair])]);
73
+ let decoded = null;
74
+ try {
75
+ // 探测合约自己不会 revert(每一步都 try);执行出错(如买入时代币合约把调用方拒之门外导致整体 revert)算买不进,
76
+ // 节点、网络、限频的错误照常抛出,不当成代币的风险
77
+ const out = await node('call', (n) => n.call({ from: wrapped, data, value: amount }), isExecutionError);
78
+ decoded = coder.decode(new Array(11).fill('uint256'), out).toArray();
79
+ }
80
+ catch (err) {
81
+ if (!isExecutionError(err))
82
+ throw err;
83
+ decoded = null;
84
+ }
85
+ if (!decoded) {
86
+ const failed = { ...base, protocol: pick.protocol.id, pool: pick.pair, stage: 'buy-failed', honeypot: null };
87
+ return { ...failed, flags: flagsOf(failed, false) };
88
+ }
89
+ const [stageIndex, buyQuote, bought, transferSent, transferReceived, sellAmount, sellQuote, sold, buyGas, sellGas, pairReceived] = decoded;
90
+ const stage = STAGES[Number(stageIndex)] ?? 'buy-failed';
91
+ const tax = (actual, expected) => (expected > 0n ? Math.max(0, 1 - Number((actual * 1000000n) / expected) / 1_000_000) : null);
92
+ const result = {
93
+ ...base,
94
+ protocol: pick.protocol.id,
95
+ pool: pick.pair,
96
+ stage,
97
+ buyTax: stage === 'buy-failed' ? null : tax(bought, buyQuote),
98
+ transferTax: stage === 'ok' || stage === 'approve-failed' || stage === 'sell-failed' ? tax(transferReceived, transferSent) : null,
99
+ // 卖出税:池子实际收到的代币(转账时扣的税,精确),和实际换回的主币比报价少多少(有的代币卖出时顺便把收来的税也卖进同一个池子,
100
+ // 池子那边看不出来),取较大的
101
+ sellTax: stage === 'ok' ? Math.max(tax(pairReceived, sellAmount) ?? 0, tax(sold, sellQuote) ?? 0) : null,
102
+ buyGas: stage === 'buy-failed' ? null : Number(buyGas),
103
+ sellGas: stage === 'ok' ? Number(sellGas) : null,
104
+ honeypot: stage === 'sell-failed' || stage === 'transfer-failed' || stage === 'approve-failed' ? true : stage === 'ok' ? (tax(sold, sellQuote) ?? 0) >= 0.9 : null,
105
+ };
106
+ return { ...result, flags: flagsOf(result, false) };
107
+ }));
108
+ }
109
+ const min = (a, b) => (a < b ? a : b);
110
+ function flagsOf(r, noPool) {
111
+ const flags = [];
112
+ if (noPool)
113
+ flags.push('no-pool');
114
+ if (r.honeypot)
115
+ flags.push('honeypot');
116
+ if (r.stage === 'buy-failed')
117
+ flags.push('cannot-buy');
118
+ for (const [name, value] of [
119
+ ['buy', r.buyTax],
120
+ ['sell', r.sellTax],
121
+ ['transfer', r.transferTax],
122
+ ]) {
123
+ if (value !== null && value > 0.1)
124
+ flags.push(`high-${name}-tax`);
125
+ }
126
+ if ([r.buyTax, r.sellTax, r.transferTax].some((v) => v !== null && v > 0.005))
127
+ flags.push('has-tax');
128
+ if (r.implementation)
129
+ flags.push('proxy');
130
+ if (r.owner && r.owner.toLowerCase() !== ZERO)
131
+ flags.push('owned');
132
+ return flags;
133
+ }
134
+ //# sourceMappingURL=risk.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"risk.js","sourceRoot":"","sources":["../src/risk.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"rpcNodes.d.ts","sourceRoot":"","sources":["../src/rpcNodes.ts"],"names":[],"mappings":"AAGA,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAqLxE,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAK/C,CAAA"}
1
+ {"version":3,"file":"rpcNodes.d.ts","sourceRoot":"","sources":["../src/rpcNodes.ts"],"names":[],"mappings":"AAGA,gCAAgC;AAChC,eAAO,MAAM,gBAAgB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAuMxE,CAAA;AAED,6CAA6C;AAC7C,eAAO,MAAM,kBAAkB,EAAE,SAAS,MAAM,EAK/C,CAAA"}
package/dist/rpcNodes.js CHANGED
@@ -182,6 +182,24 @@ export const DEFAULT_RPC_URLS = {
182
182
  'https://rpc-qnd.inkonchain.com',
183
183
  'https://ink.api.pocket.network',
184
184
  ],
185
+ // 星空链(Starry)
186
+ 202308: [
187
+ 'https://rpc.starryscan.com',
188
+ ],
189
+ // conflux
190
+ 1030: [
191
+ 'https://evm.confluxrpc.com',
192
+ ],
193
+ // injective
194
+ 1776: [
195
+ 'https://sentry.evm-rpc.injective.network',
196
+ 'https://injectiveevm-rpc.polkachu.com',
197
+ ],
198
+ // pharos
199
+ 1672: [
200
+ 'https://rpc.pharos.xyz',
201
+ 'https://infra.originstake.com/pharos/evm',
202
+ ],
185
203
  };
186
204
  /** Tron 主网全节点 HTTP API(均支持跨域与 deployless) */
187
205
  export const DEFAULT_TRON_HOSTS = [
@@ -1 +1 @@
1
- {"version":3,"file":"rpcNodes.js","sourceRoot":"","sources":["../src/rpcNodes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"rpcNodes.js","sourceRoot":"","sources":["../src/rpcNodes.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,26 @@
1
+ /**
2
+ * 授权管理(子路径 `@w3lib/evm-batch-call/approvals`):批量查地址给出的授权(ERC20、Permit2、NFT 的 setApprovalForAll),
3
+ * 按 Approval 事件发现授权过的代币,批量撤销。不放在主入口,不用时打包不会带上这部分代码;发送的代码按需加载。
4
+ *
5
+ * ```ts
6
+ * import { getApprovals, revokeApprovals } from '@w3lib/evm-batch-call/approvals'
7
+ *
8
+ * const list = await getApprovals(user, { chainId: 56, tokens: [USDT, CAKE] })
9
+ * await revokeApprovals(provider, key, list.filter((a) => a.type !== 'nft' && a.unlimited))
10
+ * ```
11
+ */
12
+ import { type Approval, type ApprovalsQuery } from '../approvals.js';
13
+ import { type ShortcutProviderOptions } from '../shortcuts.js';
14
+ export { PERMIT2_ADDRESS, approvals, buildRevokes, knownSpenders, revokeApprovals, scanApprovals, type Approval, type ApprovalScanOptions, type ApprovalScanProgress, type ApprovalScanResult, type ApprovalsQuery, type Erc20Approval, type KnownSpender, type NftApproval, type Permit2Approval, type RevokeResult, type RevokeTx, } from '../approvals.js';
15
+ export interface GetApprovalsOptions extends ApprovalsQuery, ShortcutProviderOptions {
16
+ }
17
+ /**
18
+ * 查地址给出的授权,节点参数与 getBalances 相同。默认检查已知的 Router / 聚合器 / NFT 市场。
19
+ *
20
+ * ```ts
21
+ * await getApprovals(user, { chainId: 56, tokens: [USDT, CAKE] })
22
+ * // [{ type: 'erc20', token: USDT, symbol: 'USDT', spender: '0x1111…', spenderName: '1inch Router v6', amount: '…', unlimited: true }, …]
23
+ * ```
24
+ */
25
+ export declare function getApprovals(owner: string, options: GetApprovalsOptions): Promise<Approval[]>;
26
+ //# sourceMappingURL=approvals.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.d.ts","sourceRoot":"","sources":["../../src/subpaths/approvals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,KAAK,QAAQ,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,EACb,KAAK,QAAQ,EACb,KAAK,mBAAmB,EACxB,KAAK,oBAAoB,EACzB,KAAK,kBAAkB,EACvB,KAAK,cAAc,EACnB,KAAK,aAAa,EAClB,KAAK,YAAY,EACjB,KAAK,WAAW,EAChB,KAAK,eAAe,EACpB,KAAK,YAAY,EACjB,KAAK,QAAQ,GACd,MAAM,iBAAiB,CAAA;AAExB,MAAM,WAAW,mBAAoB,SAAQ,cAAc,EAAE,uBAAuB;CAAG;AAEvF;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC,CAG7F"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * 授权管理(子路径 `@w3lib/evm-batch-call/approvals`):批量查地址给出的授权(ERC20、Permit2、NFT 的 setApprovalForAll),
3
+ * 按 Approval 事件发现授权过的代币,批量撤销。不放在主入口,不用时打包不会带上这部分代码;发送的代码按需加载。
4
+ *
5
+ * ```ts
6
+ * import { getApprovals, revokeApprovals } from '@w3lib/evm-batch-call/approvals'
7
+ *
8
+ * const list = await getApprovals(user, { chainId: 56, tokens: [USDT, CAKE] })
9
+ * await revokeApprovals(provider, key, list.filter((a) => a.type !== 'nft' && a.unlimited))
10
+ * ```
11
+ */
12
+ import { approvals } from '../approvals.js';
13
+ import { resolve } from '../shortcuts.js';
14
+ export { PERMIT2_ADDRESS, approvals, buildRevokes, knownSpenders, revokeApprovals, scanApprovals, } from '../approvals.js';
15
+ /**
16
+ * 查地址给出的授权,节点参数与 getBalances 相同。默认检查已知的 Router / 聚合器 / NFT 市场。
17
+ *
18
+ * ```ts
19
+ * await getApprovals(user, { chainId: 56, tokens: [USDT, CAKE] })
20
+ * // [{ type: 'erc20', token: USDT, symbol: 'USDT', spender: '0x1111…', spenderName: '1inch Router v6', amount: '…', unlimited: true }, …]
21
+ * ```
22
+ */
23
+ export function getApprovals(owner, options) {
24
+ const { provider, own } = resolve(options, ['tokens', 'spenders', 'pairs', 'permit2', 'nfts', 'operators', 'nftPairs', 'includeZero']);
25
+ return approvals(provider, owner, own);
26
+ }
27
+ //# sourceMappingURL=approvals.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"approvals.js","sourceRoot":"","sources":["../../src/subpaths/approvals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAsC,MAAM,iBAAiB,CAAA;AAC/E,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,eAAe,EACf,SAAS,EACT,YAAY,EACZ,aAAa,EACb,eAAe,EACf,aAAa,GAYd,MAAM,iBAAiB,CAAA;AAIxB;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAA4B;IACtE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;IACtI,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AACxC,CAAC"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * 手续费估算(子路径 `@w3lib/evm-batch-call/fees`):EIP-1559 的三档费用建议、一笔交易的手续费(含 L1 数据费),
3
+ * Tron 按能量 / 带宽和账户剩余的资源算要烧的 TRX。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getCostEstimate, getFeeEstimate } from '@w3lib/evm-batch-call/fees'
7
+ *
8
+ * await getFeeEstimate({ chainId: 1 })
9
+ * await getCostEstimate({ from: user, to: USDT, data }, { chainId: 728126428 })
10
+ * ```
11
+ */
12
+ import { type CostCall, type CostEstimate, type EstimateCostOptions, type EstimateFeesOptions, type FeeEstimate } from '../fees.js';
13
+ import { type ShortcutProviderOptions } from '../shortcuts.js';
14
+ export { estimateCost, estimateFees, type CostCall, type CostEstimate, type EstimateCostOptions, type EstimateFeesOptions, type EvmCostEstimate, type FeeEstimate, type FeeLevel, type FeeLevelEstimate, type TronCost, } from '../fees.js';
15
+ export interface GetFeeEstimateOptions extends EstimateFeesOptions, ShortcutProviderOptions {
16
+ }
17
+ /** 当前的三档手续费建议(EVM 链),节点参数与 getBalances 相同 */
18
+ export declare function getFeeEstimate(options?: GetFeeEstimateOptions): Promise<FeeEstimate>;
19
+ export interface GetCostEstimateOptions extends EstimateCostOptions, ShortcutProviderOptions {
20
+ }
21
+ /** 一笔交易的手续费(EVM:gas × 价格 + L1 数据费;Tron:要烧的 TRX) */
22
+ export declare function getCostEstimate(call: CostCall, options?: GetCostEstimateOptions): Promise<CostEstimate>;
23
+ //# sourceMappingURL=fees.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.d.ts","sourceRoot":"","sources":["../../src/subpaths/fees.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAA8B,KAAK,QAAQ,EAAE,KAAK,YAAY,EAAE,KAAK,mBAAmB,EAAE,KAAK,mBAAmB,EAAE,KAAK,WAAW,EAAE,MAAM,YAAY,CAAA;AAC/J,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,KAAK,QAAQ,EACb,KAAK,YAAY,EACjB,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,EACxB,KAAK,eAAe,EACpB,KAAK,WAAW,EAChB,KAAK,QAAQ,EACb,KAAK,gBAAgB,EACrB,KAAK,QAAQ,GACd,MAAM,YAAY,CAAA;AAEnB,MAAM,WAAW,qBAAsB,SAAQ,mBAAmB,EAAE,uBAAuB;CAAG;AAE9F,6CAA6C;AAC7C,wBAAgB,cAAc,CAAC,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,WAAW,CAAC,CAGxF;AAED,MAAM,WAAW,sBAAuB,SAAQ,mBAAmB,EAAE,uBAAuB;CAAG;AAE/F,mDAAmD;AACnD,wBAAgB,eAAe,CAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAE,sBAA2B,GAAG,OAAO,CAAC,YAAY,CAAC,CAG3G"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * 手续费估算(子路径 `@w3lib/evm-batch-call/fees`):EIP-1559 的三档费用建议、一笔交易的手续费(含 L1 数据费),
3
+ * Tron 按能量 / 带宽和账户剩余的资源算要烧的 TRX。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getCostEstimate, getFeeEstimate } from '@w3lib/evm-batch-call/fees'
7
+ *
8
+ * await getFeeEstimate({ chainId: 1 })
9
+ * await getCostEstimate({ from: user, to: USDT, data }, { chainId: 728126428 })
10
+ * ```
11
+ */
12
+ import { estimateCost, estimateFees } from '../fees.js';
13
+ import { resolve } from '../shortcuts.js';
14
+ export { estimateCost, estimateFees, } from '../fees.js';
15
+ /** 当前的三档手续费建议(EVM 链),节点参数与 getBalances 相同 */
16
+ export function getFeeEstimate(options = {}) {
17
+ const { provider, own } = resolve(options, ['blocks', 'percentiles', 'baseFeeMultiplier']);
18
+ return estimateFees(provider, own);
19
+ }
20
+ /** 一笔交易的手续费(EVM:gas × 价格 + L1 数据费;Tron:要烧的 TRX) */
21
+ export function getCostEstimate(call, options = {}) {
22
+ const { provider, own } = resolve(options, ['blocks', 'percentiles', 'baseFeeMultiplier', 'level', 'fees']);
23
+ return estimateCost(provider, call, own);
24
+ }
25
+ //# sourceMappingURL=fees.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fees.js","sourceRoot":"","sources":["../../src/subpaths/fees.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,YAAY,EAAE,YAAY,EAA0G,MAAM,YAAY,CAAA;AAC/J,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,YAAY,GAUb,MAAM,YAAY,CAAA;AAInB,6CAA6C;AAC7C,MAAM,UAAU,cAAc,CAAC,UAAiC,EAAE;IAChE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,mBAAmB,CAAC,CAAC,CAAA;IAC1F,OAAO,YAAY,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAA;AACpC,CAAC;AAID,mDAAmD;AACnD,MAAM,UAAU,eAAe,CAAC,IAAc,EAAE,UAAkC,EAAE;IAClF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,aAAa,EAAE,mBAAmB,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAA;IAC3G,OAAO,YAAY,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAA;AAC1C,CAAC"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * 添加 / 移除流动性(子路径 `@w3lib/evm-batch-call/liquidity`):V2(Router)、V3(仓位 NFT)、Uniswap V4(PositionManager + Permit2),
3
+ * 包括 Tron 上的 SunSwap V2 / V3。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * - build*:只读取、不签名,返回预计的数量和要按顺序发送的交易(授权在前),可以当作报价,也可以交给钱包自己发送
6
+ * - addLiquidity / removeLiquidity / collectFees:构建后用私钥 / ethers Signer / 浏览器钱包签名发送(同 /write 的 batchCall)
7
+ *
8
+ * ```ts
9
+ * import { getLpPositions } from '@w3lib/evm-batch-call/lp'
10
+ * import { addLiquidity, buildAddLiquidity, removeLiquidity } from '@w3lib/evm-batch-call/liquidity'
11
+ *
12
+ * const plan = await buildAddLiquidity(multi, owner, { protocol: 'pancakeswap-v3', tokenA: WBNB, tokenB: USDT, fee: 500, priceLower: 550, priceUpper: 650, amountAFormatted: '1' })
13
+ * await addLiquidity(multi, privateKey, { protocol: 'pancakeswap-v2', tokenA: NATIVE_TOKEN, tokenB: USDT, amountAFormatted: '0.1' })
14
+ * const [position] = await getLpPositions(owner, { chainId: 56 })
15
+ * await removeLiquidity(multi, privateKey, { position, percent: 50 })
16
+ * ```
17
+ */
18
+ export { addLiquidity, buildAddLiquidity, buildCollectFees, buildRemoveLiquidity, collectFees, removeLiquidity, } from '../liquidity/index.js';
19
+ export { PERMIT2_ADDRESS } from '../liquidity/common.js';
20
+ export type { AddLiquidityParams, CollectFeesParams, IncreaseLiquidityParams, LiquidityOptions, LiquidityPlan, LiquidityResult, LiquiditySendOptions, LiquidityTx, LiquidityTxResult, NewPositionParams, PositionRef, RemoveLiquidityParams, } from '../liquidity/types.js';
21
+ export { getLiquidityForAmounts, getMaxAmounts, getMinAmounts, getMintAmounts, getTickAtSqrtRatio, nearestUsableTick, priceToSqrtPriceX96, priceToTick, } from '../lpMath.js';
22
+ export type { LpPosition, LpProtocol, LpToken } from '../lp.js';
23
+ export type { SignerInput, WriteResult, WriteStatus } from '../subpaths/write.js';
24
+ //# sourceMappingURL=liquidity.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidity.d.ts","sourceRoot":"","sources":["../../src/subpaths/liquidity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,uBAAuB,EACvB,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,iBAAiB,EACjB,iBAAiB,EACjB,WAAW,EACX,qBAAqB,GACtB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,UAAU,CAAA;AAC/D,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 添加 / 移除流动性(子路径 `@w3lib/evm-batch-call/liquidity`):V2(Router)、V3(仓位 NFT)、Uniswap V4(PositionManager + Permit2),
3
+ * 包括 Tron 上的 SunSwap V2 / V3。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * - build*:只读取、不签名,返回预计的数量和要按顺序发送的交易(授权在前),可以当作报价,也可以交给钱包自己发送
6
+ * - addLiquidity / removeLiquidity / collectFees:构建后用私钥 / ethers Signer / 浏览器钱包签名发送(同 /write 的 batchCall)
7
+ *
8
+ * ```ts
9
+ * import { getLpPositions } from '@w3lib/evm-batch-call/lp'
10
+ * import { addLiquidity, buildAddLiquidity, removeLiquidity } from '@w3lib/evm-batch-call/liquidity'
11
+ *
12
+ * const plan = await buildAddLiquidity(multi, owner, { protocol: 'pancakeswap-v3', tokenA: WBNB, tokenB: USDT, fee: 500, priceLower: 550, priceUpper: 650, amountAFormatted: '1' })
13
+ * await addLiquidity(multi, privateKey, { protocol: 'pancakeswap-v2', tokenA: NATIVE_TOKEN, tokenB: USDT, amountAFormatted: '0.1' })
14
+ * const [position] = await getLpPositions(owner, { chainId: 56 })
15
+ * await removeLiquidity(multi, privateKey, { position, percent: 50 })
16
+ * ```
17
+ */
18
+ export { addLiquidity, buildAddLiquidity, buildCollectFees, buildRemoveLiquidity, collectFees, removeLiquidity, } from '../liquidity/index.js';
19
+ export { PERMIT2_ADDRESS } from '../liquidity/common.js';
20
+ export { getLiquidityForAmounts, getMaxAmounts, getMinAmounts, getMintAmounts, getTickAtSqrtRatio, nearestUsableTick, priceToSqrtPriceX96, priceToTick, } from '../lpMath.js';
21
+ //# sourceMappingURL=liquidity.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"liquidity.js","sourceRoot":"","sources":["../../src/subpaths/liquidity.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EACL,YAAY,EACZ,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EACpB,WAAW,EACX,eAAe,GAChB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AAexD,OAAO,EACL,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,GACZ,MAAM,cAAc,CAAA"}
@@ -13,7 +13,7 @@ import { type LpPosition, type LpPositionsOptions } from '../lp.js';
13
13
  import { type ShortcutProviderOptions } from '../shortcuts.js';
14
14
  export { LP_PROTOCOLS, LP_QUOTE_TOKENS, lpPositions, resolveLpProtocols, type LpConcentratedPosition, type LpPosition, type LpPositionsOptions, type LpProtocol, type LpToken, type LpV2Position, type LpVersion, } from '../lp.js';
15
15
  export { decodePositionInfo, keyValueLpScanStorage, memoryLpScanStorage, poolIdOf, type LpScanStorage, type LpV4Options, type V4ScanOptions, type V4ScanProgress, } from '../lpV4.js';
16
- export { MAX_TICK, MIN_TICK, getAmountsForLiquidity, getFeeGrowthInside, getFeesEarned, getSqrtRatioAtTick, sqrtPriceToPrice, tickToPrice } from '../lpMath.js';
16
+ export { MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, getAmountsForLiquidity, getFeeGrowthInside, getFeesEarned, getLiquidityForAmounts, getMaxAmounts, getMinAmounts, getMintAmounts, getSqrtRatioAtTick, getTickAtSqrtRatio, nearestUsableTick, priceToSqrtPriceX96, priceToTick, sqrtPriceToPrice, tickToPrice, } from '../lpMath.js';
17
17
  export { defillamaPrices, type PriceSource } from '../owner.js';
18
18
  export interface GetLpPositionsOptions extends LpPositionsOptions, ShortcutProviderOptions {
19
19
  }
@@ -1 +1 @@
1
- {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../../src/subpaths/lp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAChF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/J,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,EAAE,uBAAuB;CAAG;AAE7F;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgBxG"}
1
+ {"version":3,"file":"lp.d.ts","sourceRoot":"","sources":["../../src/subpaths/lp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,UAAU,CAAA;AAChF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,EAClB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,SAAS,GACf,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,EACR,KAAK,aAAa,EAClB,KAAK,WAAW,EAChB,KAAK,aAAa,EAClB,KAAK,cAAc,GACpB,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,eAAe,EAAE,KAAK,WAAW,EAAE,MAAM,aAAa,CAAA;AAE/D,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,EAAE,uBAAuB;CAAG;AAE7F;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAgBxG"}
@@ -13,7 +13,7 @@ import { lpPositions } from '../lp.js';
13
13
  import { resolve } from '../shortcuts.js';
14
14
  export { LP_PROTOCOLS, LP_QUOTE_TOKENS, lpPositions, resolveLpProtocols, } from '../lp.js';
15
15
  export { decodePositionInfo, keyValueLpScanStorage, memoryLpScanStorage, poolIdOf, } from '../lpV4.js';
16
- export { MAX_TICK, MIN_TICK, getAmountsForLiquidity, getFeeGrowthInside, getFeesEarned, getSqrtRatioAtTick, sqrtPriceToPrice, tickToPrice } from '../lpMath.js';
16
+ export { MAX_SQRT_RATIO, MAX_TICK, MIN_SQRT_RATIO, MIN_TICK, getAmountsForLiquidity, getFeeGrowthInside, getFeesEarned, getLiquidityForAmounts, getMaxAmounts, getMinAmounts, getMintAmounts, getSqrtRatioAtTick, getTickAtSqrtRatio, nearestUsableTick, priceToSqrtPriceX96, priceToTick, sqrtPriceToPrice, tickToPrice, } from '../lpMath.js';
17
17
  export { defillamaPrices } from '../owner.js';
18
18
  /**
19
19
  * 查一个地址的 LP 仓位(V2 LP 代币、V3 仓位 NFT;V4 仓位 NFT 需要传 v4.tokenIds 或开启 v4.scan),所有合约读取用 multicall 批量完成。
@@ -1 +1 @@
1
- {"version":3,"file":"lp.js","sourceRoot":"","sources":["../../src/subpaths/lp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAA4C,MAAM,UAAU,CAAA;AAChF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,GAQnB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,GAKT,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,sBAAsB,EAAE,kBAAkB,EAAE,aAAa,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAC/J,OAAO,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAA;AAI/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,UAAiC,EAAE;IAC/E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QACpD,WAAW;QACX,UAAU;QACV,OAAO;QACP,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,cAAc;QACd,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,OAAO;KACR,CAAC,CAAA;IACF,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAC/D,CAAC"}
1
+ {"version":3,"file":"lp.js","sourceRoot":"","sources":["../../src/subpaths/lp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,WAAW,EAA4C,MAAM,UAAU,CAAA;AAChF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EACL,YAAY,EACZ,eAAe,EACf,WAAW,EACX,kBAAkB,GAQnB,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,mBAAmB,EACnB,QAAQ,GAKT,MAAM,YAAY,CAAA;AACnB,OAAO,EACL,cAAc,EACd,QAAQ,EACR,cAAc,EACd,QAAQ,EACR,sBAAsB,EACtB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,aAAa,EACb,aAAa,EACb,cAAc,EACd,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EACjB,mBAAmB,EACnB,WAAW,EACX,gBAAgB,EAChB,WAAW,GACZ,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,eAAe,EAAoB,MAAM,aAAa,CAAA;AAI/D;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,UAAiC,EAAE;IAC/E,MAAM,EAAE,QAAQ,EAAE,SAAS,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE;QACpD,WAAW;QACX,UAAU;QACV,OAAO;QACP,QAAQ;QACR,aAAa;QACb,QAAQ;QACR,eAAe;QACf,cAAc;QACd,IAAI;QACJ,QAAQ;QACR,cAAc;QACd,OAAO;KACR,CAAC,CAAA;IACF,OAAO,WAAW,CAAC,QAAQ,EAAE,KAAK,EAAE,EAAE,GAAG,SAAS,EAAE,GAAG,GAAG,EAAE,CAAC,CAAA;AAC/D,CAAC"}
@@ -0,0 +1,35 @@
1
+ /**
2
+ * 域名解析(子路径 `@w3lib/evm-batch-call/names`):ENS、SPACE ID(.bnb)、Basenames(.base.eth),名字 → 地址、地址 → 名字。
3
+ * 不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getAddressNames, getNameAddresses } from '@w3lib/evm-batch-call/names'
7
+ *
8
+ * await getNameAddresses(['vitalik.eth'], { chainId: 1 })
9
+ * await getAddressNames([user], { chainId: 56 })
10
+ * ```
11
+ */
12
+ import { type AddressName, type NamesOptions, type ResolvedName } from '../names.js';
13
+ import { type ShortcutProviderOptions } from '../shortcuts.js';
14
+ export { NAME_SERVICES, lookupAddresses, resolveNames, type AddressName, type NameService, type NamesOptions, type ResolvedName } from '../names.js';
15
+ export interface GetNamesOptions extends NamesOptions, ShortcutProviderOptions {
16
+ }
17
+ /**
18
+ * 名字 → 地址,节点参数与 getBalances 相同(用这条链的域名服务:Ethereum 是 ENS,BSC 是 SPACE ID,Base 是 Basenames)。
19
+ *
20
+ * ```ts
21
+ * await getNameAddresses(['vitalik.eth', 'nick.eth'], { chainId: 1 })
22
+ * // [{ name: 'vitalik.eth', normalized: 'vitalik.eth', address: '0xd8dA…6045', service: 'ens' }, …]
23
+ * ```
24
+ */
25
+ export declare function getNameAddresses(names: readonly string[], options?: GetNamesOptions): Promise<ResolvedName[]>;
26
+ /**
27
+ * 地址 → 名字(反查的主名字,正查核对过)。
28
+ *
29
+ * ```ts
30
+ * await getAddressNames(['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'], { chainId: 1 })
31
+ * // [{ address: '0xd8dA…', name: 'vitalik.eth', service: 'ens' }]
32
+ * ```
33
+ */
34
+ export declare function getAddressNames(addresses: readonly string[], options?: GetNamesOptions): Promise<AddressName[]>;
35
+ //# sourceMappingURL=names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.d.ts","sourceRoot":"","sources":["../../src/subpaths/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAiC,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AACnH,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAAE,KAAK,WAAW,EAAE,KAAK,WAAW,EAAE,KAAK,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,aAAa,CAAA;AAEpJ,MAAM,WAAW,eAAgB,SAAQ,YAAY,EAAE,uBAAuB;CAAG;AAEjF;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC,CAGjH;AAED;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,eAAoB,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGnH"}
@@ -0,0 +1,39 @@
1
+ /**
2
+ * 域名解析(子路径 `@w3lib/evm-batch-call/names`):ENS、SPACE ID(.bnb)、Basenames(.base.eth),名字 → 地址、地址 → 名字。
3
+ * 不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getAddressNames, getNameAddresses } from '@w3lib/evm-batch-call/names'
7
+ *
8
+ * await getNameAddresses(['vitalik.eth'], { chainId: 1 })
9
+ * await getAddressNames([user], { chainId: 56 })
10
+ * ```
11
+ */
12
+ import { lookupAddresses, resolveNames } from '../names.js';
13
+ import { resolve } from '../shortcuts.js';
14
+ export { NAME_SERVICES, lookupAddresses, resolveNames } from '../names.js';
15
+ /**
16
+ * 名字 → 地址,节点参数与 getBalances 相同(用这条链的域名服务:Ethereum 是 ENS,BSC 是 SPACE ID,Base 是 Basenames)。
17
+ *
18
+ * ```ts
19
+ * await getNameAddresses(['vitalik.eth', 'nick.eth'], { chainId: 1 })
20
+ * // [{ name: 'vitalik.eth', normalized: 'vitalik.eth', address: '0xd8dA…6045', service: 'ens' }, …]
21
+ * ```
22
+ */
23
+ export function getNameAddresses(names, options = {}) {
24
+ const { provider, own } = resolve(options, ['services']);
25
+ return resolveNames(provider, names, own);
26
+ }
27
+ /**
28
+ * 地址 → 名字(反查的主名字,正查核对过)。
29
+ *
30
+ * ```ts
31
+ * await getAddressNames(['0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045'], { chainId: 1 })
32
+ * // [{ address: '0xd8dA…', name: 'vitalik.eth', service: 'ens' }]
33
+ * ```
34
+ */
35
+ export function getAddressNames(addresses, options = {}) {
36
+ const { provider, own } = resolve(options, ['services']);
37
+ return lookupAddresses(provider, addresses, own);
38
+ }
39
+ //# sourceMappingURL=names.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"names.js","sourceRoot":"","sources":["../../src/subpaths/names.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,eAAe,EAAE,YAAY,EAA0D,MAAM,aAAa,CAAA;AACnH,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,YAAY,EAA4E,MAAM,aAAa,CAAA;AAIpJ;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAwB,EAAE,UAA2B,EAAE;IACtF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,YAAY,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,eAAe,CAAC,SAA4B,EAAE,UAA2B,EAAE;IACzF,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,UAAU,CAAC,CAAC,CAAA;IACxD,OAAO,eAAe,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,38 @@
1
+ /**
2
+ * 价格(子路径 `@w3lib/evm-batch-call/price`):代币的美元价格(DefiLlama 当前 / 历史价格,没有收录的从链上 V2 / V3 池子算)、
3
+ * 组合价格源、地址的资产总值。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getTokenPrices, getPortfolio } from '@w3lib/evm-batch-call/price'
7
+ *
8
+ * await getTokenPrices([NATIVE_TOKEN, USDT, newToken], { chainId: 56 })
9
+ * await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT], lp: true })
10
+ * ```
11
+ */
12
+ import { type Portfolio, type PortfolioOptions } from '../portfolio.js';
13
+ import { type TokenPrice, type TokenPricesOptions } from '../price.js';
14
+ import { type ShortcutProviderOptions } from '../shortcuts.js';
15
+ export { portfolio, type Portfolio, type PortfolioOptions, type PortfolioToken } from '../portfolio.js';
16
+ export { DEFILLAMA_CHAINS, STABLECOINS, combinePrices, defillamaPrices, onchainPrices, priceKeyOf, tokenPrices, type DefillamaPriceOptions, type OnchainPriceOptions, type PriceSource, type PriceSourceContext, type TokenPrice, type TokenPricesOptions, } from '../price.js';
17
+ export interface GetTokenPricesOptions extends TokenPricesOptions, ShortcutProviderOptions {
18
+ }
19
+ /**
20
+ * 查代币的美元价格(主币用 NATIVE_TOKEN),节点参数与 getBalances 相同。
21
+ *
22
+ * ```ts
23
+ * await getTokenPrices([NATIVE_TOKEN, USDT], { chainId: 56 })
24
+ * // [{ token: '0xEeee…', native: true, price: 612.3, source: 'defillama' }, { token: USDT, …, price: 1, source: 'defillama' }]
25
+ * ```
26
+ */
27
+ export declare function getTokenPrices(tokens: readonly string[], options?: GetTokenPricesOptions): Promise<TokenPrice[]>;
28
+ export interface GetPortfolioOptions extends PortfolioOptions, ShortcutProviderOptions {
29
+ }
30
+ /**
31
+ * 地址的资产总值:传入代币的余额 × 价格,可选加上 LP 仓位(lp: true)。
32
+ *
33
+ * ```ts
34
+ * const p = await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT, CAKE], lp: true })
35
+ * ```
36
+ */
37
+ export declare function getPortfolio(owner: string, options: GetPortfolioOptions): Promise<Portfolio>;
38
+ //# sourceMappingURL=price.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price.d.ts","sourceRoot":"","sources":["../../src/subpaths/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAa,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAe,KAAK,UAAU,EAAE,KAAK,kBAAkB,EAAE,MAAM,aAAa,CAAA;AACnF,OAAO,EAAW,KAAK,uBAAuB,EAAE,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAAE,KAAK,SAAS,EAAE,KAAK,gBAAgB,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACvG,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,EACX,KAAK,qBAAqB,EAC1B,KAAK,mBAAmB,EACxB,KAAK,WAAW,EAChB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EACf,KAAK,kBAAkB,GACxB,MAAM,aAAa,CAAA;AAEpB,MAAM,WAAW,qBAAsB,SAAQ,kBAAkB,EAAE,uBAAuB;CAAG;AAE7F;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,GAAE,qBAA0B,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC,CAGpH;AAED,MAAM,WAAW,mBAAoB,SAAQ,gBAAgB,EAAE,uBAAuB;CAAG;AAEzF;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAG5F"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * 价格(子路径 `@w3lib/evm-batch-call/price`):代币的美元价格(DefiLlama 当前 / 历史价格,没有收录的从链上 V2 / V3 池子算)、
3
+ * 组合价格源、地址的资产总值。不放在主入口,不用时打包不会带上这部分代码。
4
+ *
5
+ * ```ts
6
+ * import { getTokenPrices, getPortfolio } from '@w3lib/evm-batch-call/price'
7
+ *
8
+ * await getTokenPrices([NATIVE_TOKEN, USDT, newToken], { chainId: 56 })
9
+ * await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT], lp: true })
10
+ * ```
11
+ */
12
+ import { portfolio } from '../portfolio.js';
13
+ import { tokenPrices } from '../price.js';
14
+ import { resolve } from '../shortcuts.js';
15
+ export { portfolio } from '../portfolio.js';
16
+ export { DEFILLAMA_CHAINS, STABLECOINS, combinePrices, defillamaPrices, onchainPrices, priceKeyOf, tokenPrices, } from '../price.js';
17
+ /**
18
+ * 查代币的美元价格(主币用 NATIVE_TOKEN),节点参数与 getBalances 相同。
19
+ *
20
+ * ```ts
21
+ * await getTokenPrices([NATIVE_TOKEN, USDT], { chainId: 56 })
22
+ * // [{ token: '0xEeee…', native: true, price: 612.3, source: 'defillama' }, { token: USDT, …, price: 1, source: 'defillama' }]
23
+ * ```
24
+ */
25
+ export function getTokenPrices(tokens, options = {}) {
26
+ const { provider, own } = resolve(options, ['sources', 'onError', 'fetch']);
27
+ return tokenPrices(provider, tokens, own);
28
+ }
29
+ /**
30
+ * 地址的资产总值:传入代币的余额 × 价格,可选加上 LP 仓位(lp: true)。
31
+ *
32
+ * ```ts
33
+ * const p = await getPortfolio(user, { chainId: 56, tokens: [NATIVE_TOKEN, USDT, CAKE], lp: true })
34
+ * ```
35
+ */
36
+ export function getPortfolio(owner, options) {
37
+ const { provider, own } = resolve(options, ['tokens', 'sources', 'lp', 'minUsd', 'onPriceError', 'fetch']);
38
+ return portfolio(provider, owner, own);
39
+ }
40
+ //# sourceMappingURL=price.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"price.js","sourceRoot":"","sources":["../../src/subpaths/price.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,EAAE,SAAS,EAAyC,MAAM,iBAAiB,CAAA;AAClF,OAAO,EAAE,WAAW,EAA4C,MAAM,aAAa,CAAA;AACnF,OAAO,EAAE,OAAO,EAAgC,MAAM,iBAAiB,CAAA;AAEvE,OAAO,EAAE,SAAS,EAA8D,MAAM,iBAAiB,CAAA;AACvG,OAAO,EACL,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,UAAU,EACV,WAAW,GAOZ,MAAM,aAAa,CAAA;AAIpB;;;;;;;GAOG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,EAAE,UAAiC,EAAE;IAC3F,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;IAC3E,OAAO,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,GAAG,CAAC,CAAA;AAC3C,CAAC;AAID;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,OAA4B;IACtE,MAAM,EAAE,QAAQ,EAAE,GAAG,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,cAAc,EAAE,OAAO,CAAC,CAAC,CAAA;IAC1G,OAAO,SAAS,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAuB,CAAC,CAAA;AAC5D,CAAC"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * 代币风险检查(子路径 `@w3lib/evm-batch-call/risk`):模拟买入 / 转账 / 卖出,算出买卖税、判断貔貅盘,看是不是可升级代理、owner 有没有放弃。
3
+ * 不放在主入口,不用时打包不会带上这部分代码(含约 2.7KB 的探测合约字节码)。
4
+ *
5
+ * ```ts
6
+ * import { getTokenRisks } from '@w3lib/evm-batch-call/risk'
7
+ *
8
+ * const [risk] = await getTokenRisks([token], { chainId: 56 })
9
+ * if (risk.honeypot) alert('卖不出')
10
+ * ```
11
+ */
12
+ import { type TokenRisk, type TokenRiskOptions } from '../risk.js';
13
+ import { type ShortcutProviderOptions } from '../shortcuts.js';
14
+ export { tokenRisks, type ProbeStage, type TokenRisk, type TokenRiskOptions } from '../risk.js';
15
+ export interface GetTokenRisksOptions extends TokenRiskOptions, ShortcutProviderOptions {
16
+ }
17
+ /** 检查代币的风险,节点参数与 getBalances 相同 */
18
+ export declare function getTokenRisks(tokens: readonly string[], options?: GetTokenRisksOptions): Promise<TokenRisk[]>;
19
+ //# sourceMappingURL=risk.d.ts.map