@w3lib/evm-batch-call 0.7.0 → 0.8.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 (159) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/README.md +206 -1
  3. package/dist/dividends.d.ts +135 -0
  4. package/dist/dividends.d.ts.map +1 -0
  5. package/dist/dividends.js +253 -0
  6. package/dist/dividends.js.map +1 -0
  7. package/dist/history.d.ts +154 -0
  8. package/dist/history.d.ts.map +1 -0
  9. package/dist/history.js +247 -0
  10. package/dist/history.js.map +1 -0
  11. package/dist/historySources.d.ts +32 -0
  12. package/dist/historySources.d.ts.map +1 -0
  13. package/dist/historySources.js +319 -0
  14. package/dist/historySources.js.map +1 -0
  15. package/dist/liquidity/v3.d.ts +2 -0
  16. package/dist/liquidity/v3.d.ts.map +1 -1
  17. package/dist/liquidity/v3.js +1 -1
  18. package/dist/liquidity/v3.js.map +1 -1
  19. package/dist/liquidity/v4.d.ts +21 -0
  20. package/dist/liquidity/v4.d.ts.map +1 -1
  21. package/dist/liquidity/v4.js +4 -3
  22. package/dist/liquidity/v4.js.map +1 -1
  23. package/dist/lp.d.ts +8 -0
  24. package/dist/lp.d.ts.map +1 -1
  25. package/dist/lp.js +17 -1
  26. package/dist/lp.js.map +1 -1
  27. package/dist/lpV4.d.ts +4 -0
  28. package/dist/lpV4.d.ts.map +1 -1
  29. package/dist/lpV4.js +27 -3
  30. package/dist/lpV4.js.map +1 -1
  31. package/dist/permit.d.ts +137 -0
  32. package/dist/permit.d.ts.map +1 -0
  33. package/dist/permit.js +355 -0
  34. package/dist/permit.js.map +1 -0
  35. package/dist/portfolio.d.ts +2 -0
  36. package/dist/portfolio.d.ts.map +1 -1
  37. package/dist/portfolio.js +9 -4
  38. package/dist/portfolio.js.map +1 -1
  39. package/dist/rewards/farms.d.ts +26 -0
  40. package/dist/rewards/farms.d.ts.map +1 -0
  41. package/dist/rewards/farms.js +210 -0
  42. package/dist/rewards/farms.js.map +1 -0
  43. package/dist/rewards/index.d.ts +42 -0
  44. package/dist/rewards/index.d.ts.map +1 -0
  45. package/dist/rewards/index.js +382 -0
  46. package/dist/rewards/index.js.map +1 -0
  47. package/dist/rewards/types.d.ts +170 -0
  48. package/dist/rewards/types.d.ts.map +1 -0
  49. package/dist/rewards/types.js +2 -0
  50. package/dist/rewards/types.js.map +1 -0
  51. package/dist/simulate.d.ts +186 -0
  52. package/dist/simulate.d.ts.map +1 -0
  53. package/dist/simulate.js +559 -0
  54. package/dist/simulate.js.map +1 -0
  55. package/dist/simulateDecode.d.ts +33 -0
  56. package/dist/simulateDecode.d.ts.map +1 -0
  57. package/dist/simulateDecode.js +321 -0
  58. package/dist/simulateDecode.js.map +1 -0
  59. package/dist/smartAccount/account.d.ts +31 -0
  60. package/dist/smartAccount/account.d.ts.map +1 -0
  61. package/dist/smartAccount/account.js +33 -0
  62. package/dist/smartAccount/account.js.map +1 -0
  63. package/dist/smartAccount/clients.d.ts +77 -0
  64. package/dist/smartAccount/clients.d.ts.map +1 -0
  65. package/dist/smartAccount/clients.js +122 -0
  66. package/dist/smartAccount/clients.js.map +1 -0
  67. package/dist/smartAccount/eip5792.d.ts +77 -0
  68. package/dist/smartAccount/eip5792.d.ts.map +1 -0
  69. package/dist/smartAccount/eip5792.js +152 -0
  70. package/dist/smartAccount/eip5792.js.map +1 -0
  71. package/dist/smartAccount/send.d.ts +40 -0
  72. package/dist/smartAccount/send.d.ts.map +1 -0
  73. package/dist/smartAccount/send.js +271 -0
  74. package/dist/smartAccount/send.js.map +1 -0
  75. package/dist/smartAccount/userOp.d.ts +91 -0
  76. package/dist/smartAccount/userOp.d.ts.map +1 -0
  77. package/dist/smartAccount/userOp.js +124 -0
  78. package/dist/smartAccount/userOp.js.map +1 -0
  79. package/dist/subpaths/dividends.d.ts +28 -0
  80. package/dist/subpaths/dividends.d.ts.map +1 -0
  81. package/dist/subpaths/dividends.js +29 -0
  82. package/dist/subpaths/dividends.js.map +1 -0
  83. package/dist/subpaths/history.d.ts +22 -0
  84. package/dist/subpaths/history.d.ts.map +1 -0
  85. package/dist/subpaths/history.js +23 -0
  86. package/dist/subpaths/history.js.map +1 -0
  87. package/dist/subpaths/permit.d.ts +14 -0
  88. package/dist/subpaths/permit.d.ts.map +1 -0
  89. package/dist/subpaths/permit.js +14 -0
  90. package/dist/subpaths/permit.js.map +1 -0
  91. package/dist/subpaths/price.js +2 -2
  92. package/dist/subpaths/price.js.map +1 -1
  93. package/dist/subpaths/rewards.d.ts +27 -0
  94. package/dist/subpaths/rewards.d.ts.map +1 -0
  95. package/dist/subpaths/rewards.js +25 -0
  96. package/dist/subpaths/rewards.js.map +1 -0
  97. package/dist/subpaths/simulate.d.ts +25 -0
  98. package/dist/subpaths/simulate.d.ts.map +1 -0
  99. package/dist/subpaths/simulate.js +28 -0
  100. package/dist/subpaths/simulate.js.map +1 -0
  101. package/dist/subpaths/smart-account.d.ts +24 -0
  102. package/dist/subpaths/smart-account.d.ts.map +1 -0
  103. package/dist/subpaths/smart-account.js +24 -0
  104. package/dist/subpaths/smart-account.js.map +1 -0
  105. package/dist/swap.d.ts +45 -5
  106. package/dist/swap.d.ts.map +1 -1
  107. package/dist/swap.js +108 -12
  108. package/dist/swap.js.map +1 -1
  109. package/dist/write/batch.d.ts +34 -2
  110. package/dist/write/batch.d.ts.map +1 -1
  111. package/dist/write/batch.js +22 -3
  112. package/dist/write/batch.js.map +1 -1
  113. package/dist/write/collect.d.ts +9 -0
  114. package/dist/write/collect.d.ts.map +1 -1
  115. package/dist/write/collect.js +41 -1
  116. package/dist/write/collect.js.map +1 -1
  117. package/dist/write/send.d.ts +4 -0
  118. package/dist/write/send.d.ts.map +1 -1
  119. package/dist/write/send.js.map +1 -1
  120. package/dist/write/signer.d.ts +5 -1
  121. package/dist/write/signer.d.ts.map +1 -1
  122. package/dist/write/signer.js.map +1 -1
  123. package/dist/write/transfer.d.ts +5 -3
  124. package/dist/write/transfer.d.ts.map +1 -1
  125. package/dist/write/transfer.js +12 -6
  126. package/dist/write/transfer.js.map +1 -1
  127. package/package.json +35 -1
  128. package/src/dividends.ts +360 -0
  129. package/src/history.ts +367 -0
  130. package/src/historySources.ts +360 -0
  131. package/src/liquidity/v3.ts +1 -1
  132. package/src/liquidity/v4.ts +4 -3
  133. package/src/lp.ts +18 -1
  134. package/src/lpV4.ts +32 -2
  135. package/src/permit.ts +457 -0
  136. package/src/portfolio.ts +11 -4
  137. package/src/rewards/farms.ts +229 -0
  138. package/src/rewards/index.ts +431 -0
  139. package/src/rewards/types.ts +179 -0
  140. package/src/simulate.ts +727 -0
  141. package/src/simulateDecode.ts +352 -0
  142. package/src/smartAccount/account.ts +63 -0
  143. package/src/smartAccount/clients.ts +180 -0
  144. package/src/smartAccount/eip5792.ts +187 -0
  145. package/src/smartAccount/send.ts +341 -0
  146. package/src/smartAccount/userOp.ts +180 -0
  147. package/src/subpaths/dividends.ts +47 -0
  148. package/src/subpaths/history.ts +41 -0
  149. package/src/subpaths/permit.ts +39 -0
  150. package/src/subpaths/price.ts +2 -2
  151. package/src/subpaths/rewards.ts +46 -0
  152. package/src/subpaths/simulate.ts +51 -0
  153. package/src/subpaths/smart-account.ts +40 -0
  154. package/src/swap.ts +139 -18
  155. package/src/write/batch.ts +44 -5
  156. package/src/write/collect.ts +60 -1
  157. package/src/write/send.ts +4 -0
  158. package/src/write/signer.ts +5 -1
  159. package/src/write/transfer.ts +17 -10
@@ -0,0 +1,382 @@
1
+ import { MAX_UINT128, createCtx, evm, fmt, out } from '../liquidity/common.js';
2
+ import { npmInterface } from '../liquidity/v3.js';
3
+ import { Actions, Planner, pmInterface } from '../liquidity/v4.js';
4
+ import { LP_PROTOCOLS, lpPositions } from '../lp.js';
5
+ import { tokenPrices } from '../price.js';
6
+ import { withSignal } from '../util.js';
7
+ import { batchCall, tronModule } from '../write/batch.js';
8
+ import { resolveSigner } from '../write/signer.js';
9
+ import { mapPool } from '../write/send.js';
10
+ import { FARM_PROTOCOLS, gaugeInterface, masterChefInterface, readGauges, readMasterChef } from './farms.js';
11
+ export { FARM_PROTOCOLS } from './farms.js';
12
+ const lower = (s) => s.toLowerCase();
13
+ /** 同一个代币的数量合并 */
14
+ function sumAmounts(items) {
15
+ const sum = new Map();
16
+ for (const { amounts } of items) {
17
+ for (const a of amounts) {
18
+ const key = lower(a.token.address);
19
+ const entry = sum.get(key) ?? { amount: a, raw: 0n, usd: undefined };
20
+ entry.raw += BigInt(a.amount);
21
+ if (a.usd !== undefined) {
22
+ entry.usd = a.usd === null ? (entry.usd ?? null) : (entry.usd ?? 0) + a.usd;
23
+ }
24
+ sum.set(key, entry);
25
+ }
26
+ }
27
+ return [...sum.values()]
28
+ .filter((e) => e.raw > 0n)
29
+ .map(({ amount, raw, usd }) => ({ token: amount.token, amount: raw.toString(), formatted: fmt(raw, amount.token), ...(usd === undefined ? {} : { usd }) }));
30
+ }
31
+ const usdOf = (amounts) => {
32
+ if (amounts.every((a) => a.usd === undefined)) {
33
+ return undefined;
34
+ }
35
+ const known = amounts.filter((a) => a.usd != null && BigInt(a.amount) > 0n);
36
+ return known.length ? known.reduce((s, a) => s + a.usd, 0) : null;
37
+ };
38
+ /** 给每一项的数量加美元价值(价格源出错时全部为 null) */
39
+ async function applyPrices(provider, items, options) {
40
+ const tokens = [...new Set(items.flatMap((i) => i.amounts).filter((a) => BigInt(a.amount) > 0n).map((a) => a.token.address))];
41
+ if (!tokens.length) {
42
+ return;
43
+ }
44
+ let prices = tokens.map(() => null);
45
+ try {
46
+ const found = await tokenPrices(provider, tokens, {
47
+ ...(options.prices === true ? {} : { sources: options.prices }),
48
+ ...(options.fetch ? { fetch: options.fetch } : {}),
49
+ });
50
+ prices = found.map((p) => p.price);
51
+ }
52
+ catch (err) {
53
+ try {
54
+ options.onPriceError?.(err);
55
+ }
56
+ catch {
57
+ // 回调出错不影响查询结果
58
+ }
59
+ }
60
+ const priceOf = new Map(tokens.map((t, i) => [lower(t), prices[i]]));
61
+ for (const item of items) {
62
+ for (const a of item.amounts) {
63
+ const price = priceOf.get(lower(a.token.address)) ?? null;
64
+ a.usd = a.formatted !== null && price !== null ? Number(a.formatted) * price : BigInt(a.amount) === 0n ? 0 : null;
65
+ }
66
+ item.usd = usdOf(item.amounts) ?? null;
67
+ }
68
+ }
69
+ /** 选出要查的 LP 协议 / 挖矿合约 */
70
+ function selectProtocols(chainId, options) {
71
+ const farmTable = [...(options.farms ?? []), ...FARM_PROTOCOLS].filter((f) => f.chainId === chainId);
72
+ const custom = (options.protocols ?? []).filter((p) => typeof p !== 'string' && p.chainId === chainId);
73
+ const lpAll = [...custom, ...LP_PROTOCOLS.filter((p) => p.chainId === chainId)];
74
+ if (!options.protocols) {
75
+ return { lp: undefined, farms: farmTable, lpAll };
76
+ }
77
+ const lp = [];
78
+ const farms = [];
79
+ for (const p of options.protocols) {
80
+ if (typeof p !== 'string') {
81
+ if (p.chainId === chainId && p.version !== 'v2')
82
+ lp.push(p);
83
+ continue;
84
+ }
85
+ const inLp = lpAll.filter((x) => x.id === p);
86
+ const inFarm = farmTable.filter((f) => f.id === p);
87
+ if (!inLp.length && !inFarm.length) {
88
+ throw new Error(`Unknown protocol ${p} on chain ${chainId}; pass an LpProtocol / FarmProtocol object for protocols that are not built in`);
89
+ }
90
+ // V2 的手续费计入 LP 份额,没有单独领取的
91
+ if (inLp.some((x) => x.version !== 'v2'))
92
+ lp.push(p);
93
+ farms.push(...inFarm);
94
+ }
95
+ return { lp, farms, lpAll };
96
+ }
97
+ /**
98
+ * 查一个地址能领取的全部内容(只读):V3 / V4 仓位未领取的手续费、质押在 MasterChef / gauge 里的仓位的挖矿奖励,
99
+ * 数量按精度换算,可选美元价值。每个来源单独读取,某个来源出错只记进 `errors`
100
+ *
101
+ * ```ts
102
+ * const c = await claimable(multi, user, { prices: true })
103
+ * c.items // [{ kind: 'fees', protocol: 'uniswap-v3', tokenId: '123', amounts: [{ token: USDC, formatted: '12.3', usd: 12.3 }, …], usd: 20.1 }, { kind: 'farm', amounts: [CAKE …] }, …]
104
+ * c.totals // 按代币汇总
105
+ * ```
106
+ */
107
+ export function claimable(provider, owner, options = {}) {
108
+ return withSignal(options.signal, () => queryClaimable(provider, owner, options));
109
+ }
110
+ async function queryClaimable(provider, owner, options) {
111
+ const ctx = await createCtx(provider, owner, {});
112
+ const { chainId } = ctx;
113
+ const wantFees = options.fees ?? true;
114
+ const wantRewards = options.rewards ?? true;
115
+ const maxPositions = Math.max(1, Math.floor(options.maxPositions ?? 500));
116
+ const overrides = {
117
+ ...(options.blockTag !== undefined ? { blockTag: options.blockTag } : {}),
118
+ ...(options.minBlock !== undefined ? { minBlock: options.minBlock } : {}),
119
+ ...(options.signal ? { signal: options.signal } : {}),
120
+ };
121
+ const { lp, farms, lpAll } = selectProtocols(chainId, options);
122
+ const errors = [];
123
+ const items = [];
124
+ const task = async (source, run) => {
125
+ try {
126
+ items.push(...(await run()));
127
+ }
128
+ catch (err) {
129
+ errors.push({ source, error: err instanceof Error ? err.message : String(err) });
130
+ }
131
+ };
132
+ const source = { ctx, owner: ctx.owner, overrides, maxPositions, lpProtocols: lpAll };
133
+ await Promise.all([
134
+ wantFees && (lp === undefined || lp.length)
135
+ ? task('positions', async () => {
136
+ const positions = await lpPositions(provider, owner, { ...overrides, ...(lp ? { protocols: lp } : {}), versions: ['v3', 'v4'], v4: options.v4, maxPositions });
137
+ return positions
138
+ .filter((p) => BigInt(p.fees0) + BigInt(p.fees1) > 0n)
139
+ .map((p) => ({
140
+ id: `fees:${p.protocol}:${p.tokenId}`,
141
+ kind: 'fees',
142
+ protocol: p.protocol,
143
+ protocolName: p.protocolName,
144
+ version: p.version,
145
+ tokenId: p.tokenId,
146
+ pool: p.pool,
147
+ staked: false,
148
+ target: p.positionManager,
149
+ amounts: [
150
+ { token: p.token0, amount: p.fees0, formatted: p.fees0Formatted },
151
+ { token: p.token1, amount: p.fees1, formatted: p.fees1Formatted },
152
+ ],
153
+ }));
154
+ })
155
+ : null,
156
+ ...farms.map((farm) => farm.kind === 'masterchef-v3'
157
+ ? wantFees || wantRewards
158
+ ? task(farm.id, () => readMasterChef(source, farm, wantFees, wantRewards))
159
+ : null
160
+ : wantRewards
161
+ ? task(farm.id, () => readGauges(source, farm, options.gauges))
162
+ : null),
163
+ ]);
164
+ if (options.prices) {
165
+ await applyPrices(provider, items, options);
166
+ }
167
+ if (options.prices) {
168
+ items.sort((a, b) => (b.usd ?? -1) - (a.usd ?? -1));
169
+ }
170
+ const totals = sumAmounts(items);
171
+ const usd = usdOf(totals);
172
+ return { chainId, owner: out(ctx, ctx.owner), items, totals, ...(usd === undefined ? {} : { usd }), errors };
173
+ }
174
+ function groupOf(items) {
175
+ const groups = new Map();
176
+ for (const item of items) {
177
+ const [type, kind, key] = item.kind === 'gauge'
178
+ ? ['gauge', 'gauge', item.id]
179
+ : item.staked
180
+ ? ['masterchef', 'farm', item.target]
181
+ : item.version === 'v4'
182
+ ? ['v4', 'fees', item.target]
183
+ : ['v3', 'fees', item.target];
184
+ const k = `${type}:${key}`;
185
+ const group = groups.get(k) ?? { kind, type, target: item.target, items: [] };
186
+ group.items.push(item);
187
+ groups.set(k, group);
188
+ }
189
+ return [...groups.values()];
190
+ }
191
+ const wrap = (iface, calls) => (calls.length === 1 ? calls[0] : iface.encodeFunctionData('multicall', [calls]));
192
+ /** 一组(同一个合约)里的若干项 → 一笔交易的 calldata */
193
+ function encodeGroup(ctx, type, items) {
194
+ const recipient = ctx.recipient;
195
+ if (type === 'v3') {
196
+ return wrap(npmInterface, items.map((i) => npmInterface.encodeFunctionData('collect', [{ tokenId: i.tokenId, recipient, amount0Max: MAX_UINT128, amount1Max: MAX_UINT128 }])));
197
+ }
198
+ if (type === 'masterchef') {
199
+ return wrap(masterChefInterface, items.map((i) => i.kind === 'farm'
200
+ ? masterChefInterface.encodeFunctionData('harvest', [i.tokenId, recipient])
201
+ : masterChefInterface.encodeFunctionData('collectTo', [{ tokenId: i.tokenId, recipient, amount0Max: MAX_UINT128, amount1Max: MAX_UINT128 }, recipient])));
202
+ }
203
+ if (type === 'gauge') {
204
+ return gaugeInterface.encodeFunctionData('getReward', [items[0].tokenId]);
205
+ }
206
+ // V4:每个仓位 DECREASE_LIQUIDITY(0) 结算手续费,再把涉及的每个币整个取出(TAKE 的数量 0 = 全部)
207
+ const planner = new Planner();
208
+ const hookData = ctx.options.hookData ?? '0x';
209
+ for (const i of items) {
210
+ planner.add(Actions.DECREASE_LIQUIDITY, ['uint256', 'uint256', 'uint128', 'uint128', 'bytes'], [i.tokenId, 0n, 0n, 0n, hookData]);
211
+ }
212
+ const currencies = new Set(items.flatMap((i) => i.amounts.map((a) => evm(a.token.address))));
213
+ for (const currency of currencies) {
214
+ planner.add(Actions.TAKE, ['address', 'address', 'uint256'], [currency, recipient, 0n]);
215
+ }
216
+ return pmInterface.encodeFunctionData('modifyLiquidities', [planner.encode(), ctx.deadline]);
217
+ }
218
+ function buildTxs(ctx, items, batchSize) {
219
+ return groupOf(items).flatMap((group) => {
220
+ // gauge 的 getReward 一次只能领一个仓位
221
+ const size = group.type === 'gauge' ? 1 : batchSize;
222
+ const txs = [];
223
+ for (let i = 0; i < group.items.length; i += size) {
224
+ const part = group.items.slice(i, i + size);
225
+ txs.push({ kind: group.kind, to: out(ctx, group.target), data: encodeGroup(ctx, group.type, part), value: '0', itemIds: part.map((x) => x.id) });
226
+ }
227
+ return txs;
228
+ });
229
+ }
230
+ /**
231
+ * 领取计划(不签名、不发送):把要领取的项合并成尽量少的交易——同一个仓位合约的 V3 仓位用它的 `multicall`、
232
+ * V4 仓位合并成一次 `modifyLiquidities`、MasterChef 的挖矿奖励和质押仓位手续费用它的 `multicall`、每个 gauge 的仓位各一笔。
233
+ * 交易之间互不依赖,可以交给 `batchCall` 的 '7702' / '4337' / '5792' 模式合成一笔原子交易,或者逐笔发送。
234
+ *
235
+ * 默认先模拟(/simulate):某一笔失败时逐项再试,会失败的项放进 `skipped`,不拖累其他仓位。
236
+ *
237
+ * ```ts
238
+ * const plan = await buildClaimAll(multi, user, { prices: true, minUsd: 1 })
239
+ * plan.transactions // [{ kind: 'fees', to: npm, data, itemIds: [...] }, { kind: 'farm', … }]
240
+ * plan.skipped // [{ item, reason: 'below minUsd' }]
241
+ * ```
242
+ */
243
+ export async function buildClaimAll(provider, owner, options = {}) {
244
+ const ctx = await createCtx(provider, owner, { recipient: options.recipient, hookData: options.hookData });
245
+ const batchSize = Math.floor(options.batchSize ?? 20);
246
+ if (!(batchSize >= 1)) {
247
+ throw new RangeError(`batchSize must be at least 1: ${options.batchSize}`);
248
+ }
249
+ if (options.minUsd !== undefined && !(options.minUsd >= 0)) {
250
+ throw new RangeError(`minUsd must not be negative: ${options.minUsd}`);
251
+ }
252
+ const found = options.items ? undefined : await claimable(provider, owner, options);
253
+ const candidates = options.items ? [...options.items] : found.items;
254
+ const skipped = [];
255
+ const seen = new Set();
256
+ let included = candidates.filter((item) => {
257
+ const skip = (reason) => {
258
+ skipped.push({ item, reason });
259
+ return false;
260
+ };
261
+ if (seen.has(item.id))
262
+ return false;
263
+ seen.add(item.id);
264
+ if (item.amounts.every((a) => BigInt(a.amount) === 0n))
265
+ return skip('nothing to claim');
266
+ // 有一个要领的币没有价格就当价值未知(usd 只是已知部分的合计),不跳过
267
+ const unknownValue = item.amounts.some((a) => BigInt(a.amount) > 0n && a.usd === null);
268
+ if (options.minUsd !== undefined && item.usd != null && !unknownValue && item.usd < options.minUsd)
269
+ return skip(`below minUsd (${item.usd})`);
270
+ if (item.kind === 'gauge' && ctx.recipient !== ctx.owner)
271
+ return skip('gauge rewards are always paid to the owner, recipient is not supported');
272
+ return true;
273
+ });
274
+ let transactions = buildTxs(ctx, included, batchSize);
275
+ if (options.simulate !== false && transactions.length) {
276
+ const checked = await preflight(provider, ctx, included, transactions, skipped, options.signal);
277
+ included = checked.items;
278
+ transactions = checked.transactions;
279
+ }
280
+ const totals = sumAmounts(included);
281
+ const usd = usdOf(totals);
282
+ return { chainId: ctx.chainId, owner: out(ctx, ctx.owner), recipient: out(ctx, ctx.recipient), items: included, skipped, totals, ...(usd === undefined ? {} : { usd }), transactions };
283
+ }
284
+ /**
285
+ * 模拟每一笔;失败的逐项再试,去掉会失败的项后重新构建。逐项都通过、只有合并后的那一笔失败时(gas / multicall 的相互影响)
286
+ * 对半拆开再模拟,直到通过或拆成单项。返回的交易模拟都没有失败;模拟本身出错(节点不支持等)时不拦,照常发送;取消(signal)时抛出
287
+ */
288
+ async function preflight(provider, ctx, items, transactions, skipped, signal) {
289
+ const { simulate } = await import('../simulate.js');
290
+ const run = async (tx) => {
291
+ signal?.throwIfAborted();
292
+ try {
293
+ tx.simulation = await simulate(provider, { from: ctx.owner, to: tx.to, data: tx.data, value: 0n }, { from: ctx.owner, fee: false });
294
+ return tx.simulation.success ? null : (tx.simulation.error ?? 'execution reverted');
295
+ }
296
+ catch (err) {
297
+ if (signal?.aborted || (err instanceof Error && err.name === 'AbortError'))
298
+ throw err;
299
+ return null;
300
+ }
301
+ };
302
+ const byId = new Map(items.map((i) => [i.id, i]));
303
+ const failed = new Map();
304
+ const settle = async (tx) => {
305
+ const error = await run(tx);
306
+ if (error === null)
307
+ return [tx];
308
+ const list = tx.itemIds.map((id) => byId.get(id));
309
+ if (list.length === 1) {
310
+ failed.set(tx.itemIds[0], error);
311
+ return [];
312
+ }
313
+ // 逐项再试,找出是哪几个仓位失败
314
+ const singles = await mapPool(list, 4, async (item) => {
315
+ const single = buildTxs(ctx, [item], 1)[0];
316
+ return { item, single, error: await run(single) };
317
+ });
318
+ const good = singles.filter((s) => s.error === null);
319
+ for (const s of singles) {
320
+ if (s.error !== null)
321
+ failed.set(s.item.id, s.error);
322
+ }
323
+ if (good.length === singles.length) {
324
+ // 单项都能过、合并的失败:对半拆开
325
+ const half = Math.ceil(list.length / 2);
326
+ const parts = [list.slice(0, half), list.slice(half)].flatMap((part) => buildTxs(ctx, part, part.length));
327
+ return (await Promise.all(parts.map(settle))).flat();
328
+ }
329
+ if (good.length === 1)
330
+ return [good[0].single];
331
+ return (await Promise.all(buildTxs(ctx, good.map((s) => s.item), list.length).map(settle))).flat();
332
+ };
333
+ const settled = [];
334
+ await mapPool(transactions, 4, async (tx, i) => {
335
+ settled[i] = await settle(tx);
336
+ });
337
+ if (!failed.size) {
338
+ return { items, transactions: settled.flat() };
339
+ }
340
+ for (const item of items) {
341
+ if (failed.has(item.id))
342
+ skipped.push({ item, reason: `simulation failed: ${failed.get(item.id)}` });
343
+ }
344
+ return { items: items.filter((i) => !failed.has(i.id)), transactions: settled.flat() };
345
+ }
346
+ /**
347
+ * 领取全部手续费和挖矿奖励:构建计划(同 buildClaimAll)后用 from 签名发送,每笔独立,某一笔失败不影响后面的。
348
+ * from 与 /write 的 batchCall 相同;`mode: '7702' | '4337' | '5792'` 时合成一笔原子交易(一个仓位失败整笔回滚,所以先模拟、剔除会失败的项)。
349
+ *
350
+ * ```ts
351
+ * const { status, plan, claimed } = await claimAll(multi, privateKey, { minUsd: 1 })
352
+ * await claimAll(multi, privateKey, { mode: '7702' }) // 一笔交易领完
353
+ * await claimAll(multi, privateKey, { items: picked }) // 只领 getClaimable / claimable 结果里挑出来的
354
+ * ```
355
+ */
356
+ export async function claimAll(provider, from, options = {}) {
357
+ const tron = await tronModule(provider);
358
+ const owner = tron ? await tron.tronSignerAddress(from) : (await resolveSigner(from)).address;
359
+ const plan = await buildClaimAll(provider, owner, options);
360
+ if (!plan.transactions.length) {
361
+ return { plan, results: [], status: 'skipped', claimed: [], failed: [] };
362
+ }
363
+ const { items: _items, protocols: _protocols, fees: _fees, rewards: _rewards, v4: _v4, farms: _farms, gauges: _gauges, maxPositions: _max, prices: _prices, onPriceError: _onPriceError, fetch: _fetch, recipient: _recipient, hookData: _hookData, minUsd: _minUsd, batchSize: _batchSize, simulate: _simulate, blockTag: _blockTag, from: _from, minBlock: _minBlock, ...send } = options;
364
+ const written = await batchCall(provider, plan.transactions.map((tx) => ({ from, to: tx.to, data: tx.data, value: 0n })), { ...send, continueOnError: options.continueOnError ?? true });
365
+ const results = written.map((r, i) => ({ ...r, kind: plan.transactions[i].kind, itemIds: plan.transactions[i].itemIds }));
366
+ if (options.dryRun) {
367
+ // 只预估:没有领取任何东西。预估通过的项放进 simulated,预估失败的才算 failed
368
+ const ok = new Set(results.filter((r) => r.status === 'simulated').flatMap((r) => r.itemIds));
369
+ const badRun = results.find((r) => r.status !== 'simulated');
370
+ return { plan, results, status: badRun ? badRun.status : 'simulated', claimed: [], failed: plan.items.filter((i) => !ok.has(i.id)), simulated: plan.items.filter((i) => ok.has(i.id)) };
371
+ }
372
+ const confirmed = new Set(results.filter((r) => r.status === 'confirmed').flatMap((r) => r.itemIds));
373
+ const bad = results.find((r) => r.status !== 'confirmed');
374
+ return {
375
+ plan,
376
+ results,
377
+ status: bad ? bad.status : 'confirmed',
378
+ claimed: plan.items.filter((i) => confirmed.has(i.id)),
379
+ failed: plan.items.filter((i) => !confirmed.has(i.id)),
380
+ };
381
+ }
382
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/rewards/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,170 @@
1
+ import type { CallOverrides } from '../aggregate.js';
2
+ import type { LpProtocol, LpToken } from '../lp.js';
3
+ import type { LpV4Options } from '../lpV4.js';
4
+ import type { TokenPricesOptions } from '../price.js';
5
+ import type { SimulationResult } from '../simulate.js';
6
+ import type { BatchCallOptions } from '../write/batch.js';
7
+ import type { WriteResult, WriteStatus } from '../write/send.js';
8
+ /** 内置表之外的挖矿合约(自己的 FarmProtocol) */
9
+ export interface FarmProtocol {
10
+ /** 协议 id:与 LP 协议同名时(如 'pancakeswap-v3')选这个协议会同时查它的挖矿奖励 */
11
+ id: string;
12
+ name: string;
13
+ /**
14
+ * - masterchef-v3:PancakeSwap V3 的 MasterChefV3,仓位 NFT 存在合约里,按 `balanceOf` / `tokenOfOwnerByIndex` 列出用户质押的仓位,
15
+ * `pendingCake` 是待领取的 CAKE,质押中的仓位手续费也由它代为领取
16
+ * - gauge:Aerodrome / Velodrome Slipstream 的 CLGauge(经 Voter 找到每个池子的 gauge),`stakedValues` / `earned` / `getReward`
17
+ */
18
+ kind: 'masterchef-v3' | 'gauge';
19
+ chainId: number;
20
+ /** 仓位 NFT 合约(质押的仓位属于它) */
21
+ positionManager: string;
22
+ /** masterchef-v3:MasterChefV3 合约 */
23
+ masterChef?: string;
24
+ /** gauge:Voter 合约(pools / gauges) */
25
+ voter?: string;
26
+ }
27
+ /**
28
+ * 领取的内容:
29
+ * - fees:V3 / V4 仓位未领取的手续费(token0 / token1),质押在 MasterChef 里的仓位也有
30
+ * - farm:MasterChef 的挖矿奖励(CAKE)
31
+ * - gauge:Slipstream gauge 的奖励(AERO / VELO)
32
+ */
33
+ export type ClaimKind = 'fees' | 'farm' | 'gauge';
34
+ export interface ClaimAmount {
35
+ token: LpToken;
36
+ /** 最小单位 */
37
+ amount: string;
38
+ /** 按精度换算;读不到精度时为 null */
39
+ formatted: string | null;
40
+ /** 开启 prices 时:美元价值(没有价格或读不到精度时为 null) */
41
+ usd?: number | null;
42
+ }
43
+ /** 一项可领取的内容:一个仓位的手续费,或一个质押仓位的挖矿奖励 */
44
+ export interface ClaimItem {
45
+ /** `<kind>:<协议 id>:<tokenId>`,在一次查询里唯一 */
46
+ id: string;
47
+ kind: ClaimKind;
48
+ protocol: string;
49
+ protocolName: string;
50
+ /** fees:仓位的版本 */
51
+ version?: 'v3' | 'v4';
52
+ tokenId: string;
53
+ /** 池子地址(V4 为 poolId);gauge 为 null */
54
+ pool: string | null;
55
+ /** 仓位 NFT 质押在挖矿合约里 */
56
+ staked: boolean;
57
+ /** 领取时调用的合约:仓位合约 / MasterChef / gauge */
58
+ target: string;
59
+ /** fees 固定是 [token0, token1](可能有一边为 0);farm / gauge 是奖励代币 */
60
+ amounts: ClaimAmount[];
61
+ /** 开启 prices 时:这一项的美元价值(已知部分的合计;全部未知时为 null) */
62
+ usd?: number | null;
63
+ /** 数量是估计值(MasterChef 的 harvest 预执行失败,退回 pendingCake,实际领到的可能更多) */
64
+ approximate?: boolean;
65
+ }
66
+ export interface Claimable {
67
+ chainId: number;
68
+ owner: string;
69
+ /** 有东西可领的项,开启 prices 时按美元价值从大到小排 */
70
+ items: ClaimItem[];
71
+ /** 按代币汇总 */
72
+ totals: ClaimAmount[];
73
+ usd?: number | null;
74
+ /** 某个来源读取失败(节点出错等)时的说明,其他来源的结果照常返回 */
75
+ errors: Array<{
76
+ source: string;
77
+ error: string;
78
+ }>;
79
+ }
80
+ export interface ClaimableOptions extends CallOverrides {
81
+ /**
82
+ * 查哪些协议:LP 协议 id('uniswap-v3'、'pancakeswap-v3'、'uniswap-v4' …)或自己的 LpProtocol、挖矿协议 id('aerodrome-slipstream' …)。
83
+ * 'pancakeswap-v3' 同时包含它的 MasterChef 挖矿。默认这条链上内置的全部
84
+ */
85
+ protocols?: ReadonlyArray<string | LpProtocol>;
86
+ /** 查手续费(V3 / V4 仓位,含质押在 MasterChef 里的),默认 true */
87
+ fees?: boolean;
88
+ /** 查挖矿奖励(MasterChef / gauge),默认 true */
89
+ rewards?: boolean;
90
+ /** V4:怎么找仓位(已知 tokenIds 或扫描 Transfer 事件,同 getLpPositions),两个都没有时不查 V4 */
91
+ v4?: LpV4Options;
92
+ /** 内置表里没有的挖矿合约 */
93
+ farms?: readonly FarmProtocol[];
94
+ /** gauge:直接指定要查的 gauge 地址,不再通过 Voter 枚举全部池子(Aerodrome 有两千多个,枚举要几千次读取) */
95
+ gauges?: readonly string[];
96
+ /** 每个协议最多核对多少个仓位,默认 500 */
97
+ maxPositions?: number;
98
+ /** 美元价值(可选):true 用 DefiLlama + 链上池子,也可以传 tokenPrices 的 sources。默认不查 */
99
+ prices?: boolean | TokenPricesOptions['sources'];
100
+ /** 价格源出错时调用:照样返回结果,usd 为 null */
101
+ onPriceError?: (error: unknown) => void;
102
+ /** 自定义 fetch(价格用) */
103
+ fetch?: typeof fetch;
104
+ }
105
+ export interface ClaimAllOptions extends ClaimableOptions {
106
+ /** 要领取的项(getClaimable 的结果里挑),默认领取查到的全部 */
107
+ items?: readonly ClaimItem[];
108
+ /** 领取的代币收到哪个地址,默认 owner。gauge 的奖励只能发给 owner,传了别的地址时这些项会被跳过 */
109
+ recipient?: string;
110
+ /** V4:传给 hooks 的 hookData,默认 '0x' */
111
+ hookData?: string;
112
+ /** 美元价值低于这个值的项跳过(不够付 gas 的零头);价值未知的不跳过。需要 prices */
113
+ minUsd?: number;
114
+ /** 一笔交易最多合并多少个仓位,默认 20 */
115
+ batchSize?: number;
116
+ /**
117
+ * 构建后先模拟(用 /simulate,按需加载):某一笔失败时逐项再试,把会失败的项放进 skipped,其余照常领取。默认 true;
118
+ * 设为 false 时不模拟(某一项失败会让它所在的那一笔整体失败)
119
+ */
120
+ simulate?: boolean;
121
+ }
122
+ export interface ClaimTx {
123
+ kind: ClaimKind;
124
+ to: string;
125
+ data: string;
126
+ value: '0';
127
+ /** 这一笔里包含的项(ClaimItem.id) */
128
+ itemIds: string[];
129
+ /** 模拟的结果(simulate 不为 false 时):资产变化就是实际会收到的数量 */
130
+ simulation?: SimulationResult;
131
+ }
132
+ export interface ClaimSkipped {
133
+ item: ClaimItem;
134
+ reason: string;
135
+ }
136
+ /** 领取计划:要按顺序发送的交易(每笔独立,互不依赖)。只读取、不签名 */
137
+ export interface ClaimPlan {
138
+ chainId: number;
139
+ owner: string;
140
+ recipient: string;
141
+ /** 会领取的项 */
142
+ items: ClaimItem[];
143
+ /** 跳过的项和原因(没东西可领、低于 minUsd、模拟失败、地址不允许 …) */
144
+ skipped: ClaimSkipped[];
145
+ /** 按代币汇总的预计数量(用的是查询时的数量,挖矿奖励随时间还会增加一点) */
146
+ totals: ClaimAmount[];
147
+ usd?: number | null;
148
+ transactions: ClaimTx[];
149
+ }
150
+ export interface ClaimAllSendOptions extends ClaimAllOptions, Omit<BatchCallOptions, 'continueOnError'> {
151
+ /** 某一笔发送前失败后,后面的是否继续,默认 true(每一笔都是独立的领取) */
152
+ continueOnError?: boolean;
153
+ }
154
+ export interface ClaimTxResult extends WriteResult {
155
+ kind: ClaimKind;
156
+ itemIds: string[];
157
+ }
158
+ export interface ClaimResult {
159
+ plan: ClaimPlan;
160
+ /** 与 plan.transactions 一一对应 */
161
+ results: ClaimTxResult[];
162
+ /** 全部确认为 'confirmed';dryRun 全部预估通过为 'simulated';没有东西可领为 'skipped';否则是第一笔没成功的状态 */
163
+ status: WriteStatus;
164
+ /** 已确认的交易里的项 / 其他交易里的项(dryRun 时 claimed 为空,failed 只含预估失败的项) */
165
+ claimed: ClaimItem[];
166
+ failed: ClaimItem[];
167
+ /** dryRun:预估通过的项(没有真正发送) */
168
+ simulated?: ClaimItem[];
169
+ }
170
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/rewards/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/rewards/types.ts"],"names":[],"mappings":""}