@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,186 @@
1
+ /**
2
+ * 交易模拟(子路径 `@w3lib/evm-batch-call/simulate`):发送前先看会发生什么——成不成功、花多少 gas、哪些资产进出、给了什么授权、风险提示。
3
+ *
4
+ * - EVM:`eth_simulateV1`(公共节点 publicnode / drpc / mainnet.base.org / bsc-dataseed 等都支持):一次请求执行一串交易、状态逐笔延续,
5
+ * `traceTransfers` 把主币转账也变成日志;资产变化和授权变化都从日志里算(ERC20 / 721 / 1155 Transfer、WETH Deposit / Withdrawal、Approval、
6
+ * ApprovalForAll、Permit2 Approval)。不支持时退回 `eth_call` + `eth_estimateGas`:只能知道成不成功和 gas,资产变化只能按 calldata 估
7
+ * - Tron:`triggerconstantcontract`(能量、日志里的 TRC20 Transfer / Approval);TRX 的变化只有 call_value
8
+ */
9
+ import { type BigNumberish } from 'ethers';
10
+ import type { BlockTag } from './aggregate.js';
11
+ import type { Provider } from './provider.js';
12
+ import { type DecodedCall } from './simulateDecode.js';
13
+ export { decodeCalldata, decodeRevert, type DecodedCall, type DecodedType } from './simulateDecode.js';
14
+ /** 要模拟的交易,字段与 buildSwap / buildRevokes / 流动性构建的 transactions 里的一致(多出来的字段忽略) */
15
+ export interface SimulateTx {
16
+ from?: string;
17
+ to?: string;
18
+ data?: string;
19
+ /** 附带的主币(最小单位;Tron 是 sun) */
20
+ value?: BigNumberish;
21
+ gas?: BigNumberish;
22
+ }
23
+ /** 状态覆盖(eth_call / eth_simulateV1 的格式):改余额、nonce、代码、存储 */
24
+ export type StateOverrides = Record<string, {
25
+ balance?: string;
26
+ nonce?: string;
27
+ code?: string;
28
+ state?: Record<string, string>;
29
+ stateDiff?: Record<string, string>;
30
+ }>;
31
+ export interface SimulateOptions {
32
+ /** 发送者(交易里没有 from 时用),也是资产变化 / 授权变化的主体 */
33
+ from?: string;
34
+ /** 另外要统计资产变化、授权的地址(默认只有 from) */
35
+ watch?: readonly string[];
36
+ /** 按这个区块的状态模拟(默认最新) */
37
+ blockTag?: BlockTag;
38
+ stateOverrides?: StateOverrides;
39
+ /** 每笔交易的 gas 上限,默认 min(1000 万, 2500 万 / 笔数):不同节点限制一个模拟里的总 gas */
40
+ gas?: bigint;
41
+ /** 估算手续费(gasUsed × 当前 gas 价格;不含 L1 数据费),默认 true */
42
+ fee?: boolean;
43
+ /** 给资产变化带美元价值(用 /price,按需加载):true 用默认价格源,或传 tokenPrices 的 sources */
44
+ usd?: boolean | import('./price.js').TokenPricesOptions['sources'];
45
+ /** 对收到的代币做风险检查(用 /risk,按需加载,只支持 EVM 的 V2 池子能买卖的代币),有问题时加进 warnings */
46
+ risk?: boolean;
47
+ /** 不用 eth_simulateV1,直接 eth_call + estimateGas(调试 / 节点行为不一致时) */
48
+ forceCall?: boolean;
49
+ }
50
+ export type WarningSeverity = 'info' | 'warn' | 'danger';
51
+ export interface SimulationWarning {
52
+ severity: WarningSeverity;
53
+ /**
54
+ * unlimited-approval / unknown-spender / approve-to-eoa / unlimited-nft-approval / no-code / large-value /
55
+ * token-risk / unknown-method / no-logs / no-state / reverted
56
+ */
57
+ code: string;
58
+ message: string;
59
+ /** 相关地址:授权类提示是被授权方,token-risk 是代币 */
60
+ address?: string;
61
+ }
62
+ export interface BalanceChange {
63
+ address: string;
64
+ /** 代币地址;主币是 'native' */
65
+ asset: string;
66
+ symbol: string | null;
67
+ decimals: number;
68
+ /** 带符号的最小单位数量 */
69
+ delta: string;
70
+ formatted: string;
71
+ usd?: number | null;
72
+ /** NFT(721 / 1155):tokenId,数量是个数 */
73
+ tokenId?: string;
74
+ standard: 'native' | 'erc20' | 'erc721' | 'erc1155';
75
+ }
76
+ export interface ApprovalChange {
77
+ type: 'erc20' | 'permit2' | 'nft' | 'nft-token';
78
+ owner: string;
79
+ /** 代币 / NFT 合约 */
80
+ token: string;
81
+ symbol: string | null;
82
+ /** 被授权方(ERC20 的 spender、Permit2 的 spender、NFT 的 operator / approved) */
83
+ spender: string;
84
+ spenderName?: string;
85
+ /** 新的额度(最小单位);NFT 的 ApprovalForAll 是 '1' / '0',单个 NFT 是 tokenId */
86
+ amount: string;
87
+ unlimited: boolean;
88
+ /** 授权被取消(额度 0 / setApprovalForAll false) */
89
+ revoked: boolean;
90
+ /** Permit2:授权到期的时间(秒) */
91
+ expiration?: number;
92
+ }
93
+ /** 一条转账(所有地址之间的,不只是 from 的) */
94
+ export interface SimulatedTransfer {
95
+ asset: string;
96
+ from: string;
97
+ to: string;
98
+ amount: string;
99
+ tokenId?: string;
100
+ standard: BalanceChange['standard'];
101
+ }
102
+ export interface SimulationResult {
103
+ success: boolean;
104
+ /** 失败原因:解码后的 revert 原因(Error / Panic / 常见自定义错误)或节点给的错误信息 */
105
+ error?: string;
106
+ /** revert 的原始数据 */
107
+ revertData?: string;
108
+ /** 消耗的 gas(Tron 是能量) */
109
+ gasUsed: string;
110
+ /** 估算的手续费(wei),不含 L1 数据费;Tron 没有 */
111
+ fee?: string;
112
+ balanceChanges: BalanceChange[];
113
+ approvalChanges: ApprovalChange[];
114
+ decoded: {
115
+ type: DecodedCall['type'];
116
+ protocol?: string;
117
+ method?: string;
118
+ summary: string;
119
+ args?: Record<string, unknown>;
120
+ calls?: DecodedCall[];
121
+ };
122
+ warnings: SimulationWarning[];
123
+ transfers: SimulatedTransfer[];
124
+ /** 原始日志 */
125
+ logs?: Array<{
126
+ address: string;
127
+ topics: string[];
128
+ data: string;
129
+ }>;
130
+ /** 用的模拟方式:'simulateV1'(有日志)、'eth_call'(只有成败和 gas)、'tron' */
131
+ mode: 'simulateV1' | 'eth_call' | 'tron';
132
+ returnData?: string;
133
+ }
134
+ export interface BatchSimulationResult {
135
+ /** 全部成功 */
136
+ success: boolean;
137
+ /** 每笔交易的结果,与输入一一对应 */
138
+ results: SimulationResult[];
139
+ /** 第一笔失败的下标 */
140
+ failedIndex?: number;
141
+ gasUsed: string;
142
+ fee?: string;
143
+ /** 汇总(同一个资产、同一个地址的变化相加;授权取最后的状态) */
144
+ balanceChanges: BalanceChange[];
145
+ approvalChanges: ApprovalChange[];
146
+ warnings: SimulationWarning[];
147
+ mode: SimulationResult['mode'];
148
+ }
149
+ /**
150
+ * 模拟一笔交易(不签名、不发送)。可以直接传 `buildSwap` / `buildRevokes` / 流动性构建里的交易。
151
+ *
152
+ * ```ts
153
+ * const plan = await buildSwap(provider, user, { tokenIn, tokenOut, amountInFormatted: '1' })
154
+ * const sim = await simulate(provider, plan.transactions[1], { from: user }) // 兑换这一笔(授权在前,没发出去时用 simulateBatch)
155
+ * if (!sim.success) throw new Error(sim.error)
156
+ * sim.balanceChanges // [{ asset: 'native', delta: '-1000…', formatted: '-1', … }, { asset: USDC, formatted: '2300.5', … }]
157
+ * sim.warnings // [{ severity: 'warn', code: 'unknown-spender', … }]
158
+ * ```
159
+ */
160
+ export declare function simulate(provider: Provider, tx: SimulateTx, options?: SimulateOptions): Promise<SimulationResult>;
161
+ /**
162
+ * 按顺序模拟一串依赖前一笔的交易(如先 approve 再兑换:`plan.transactions`)。eth_simulateV1 在同一个区块里依次执行,状态延续;
163
+ * 不支持的节点退回单笔 eth_call,后面的交易看不到前面的结果(结果里有 `no-state` 提示;Tron 同理)。
164
+ *
165
+ * ```ts
166
+ * const sim = await simulateBatch(provider, plan.transactions, { from: user, usd: true })
167
+ * sim.success; sim.balanceChanges // 汇总:整个流程你付出 / 收到什么
168
+ * ```
169
+ */
170
+ export declare function simulateBatch(provider: Provider, txs: readonly SimulateTx[] | {
171
+ transactions: readonly SimulateTx[];
172
+ }, options?: SimulateOptions): Promise<BatchSimulationResult>;
173
+ /**
174
+ * 模拟通过才发送的一行守卫:`simulate` 失败或有 danger 级别的提示时抛错,否则返回模拟结果,由调用方继续发送。
175
+ *
176
+ * ```ts
177
+ * await assertSimulation(simulate(provider, tx, { from }))
178
+ * await batchCall(provider, key, [{ to: tx.to, data: tx.data, value: tx.value }])
179
+ * ```
180
+ */
181
+ export declare function assertSimulation<T extends Pick<SimulationResult, 'success' | 'error' | 'warnings'> | Pick<BatchSimulationResult, 'success' | 'warnings'> & {
182
+ results: Array<Pick<SimulationResult, 'error'>>;
183
+ }>(simulation: Promise<T> | T, options?: {
184
+ allowDanger?: boolean;
185
+ }): Promise<T>;
186
+ //# sourceMappingURL=simulate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"simulate.d.ts","sourceRoot":"","sources":["../src/simulate.ts"],"names":[],"mappings":"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"}