@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,179 @@
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
+
9
+ /** 内置表之外的挖矿合约(自己的 FarmProtocol) */
10
+ export interface FarmProtocol {
11
+ /** 协议 id:与 LP 协议同名时(如 'pancakeswap-v3')选这个协议会同时查它的挖矿奖励 */
12
+ id: string
13
+ name: string
14
+ /**
15
+ * - masterchef-v3:PancakeSwap V3 的 MasterChefV3,仓位 NFT 存在合约里,按 `balanceOf` / `tokenOfOwnerByIndex` 列出用户质押的仓位,
16
+ * `pendingCake` 是待领取的 CAKE,质押中的仓位手续费也由它代为领取
17
+ * - gauge:Aerodrome / Velodrome Slipstream 的 CLGauge(经 Voter 找到每个池子的 gauge),`stakedValues` / `earned` / `getReward`
18
+ */
19
+ kind: 'masterchef-v3' | 'gauge'
20
+ chainId: number
21
+ /** 仓位 NFT 合约(质押的仓位属于它) */
22
+ positionManager: string
23
+ /** masterchef-v3:MasterChefV3 合约 */
24
+ masterChef?: string
25
+ /** gauge:Voter 合约(pools / gauges) */
26
+ voter?: string
27
+ }
28
+
29
+ /**
30
+ * 领取的内容:
31
+ * - fees:V3 / V4 仓位未领取的手续费(token0 / token1),质押在 MasterChef 里的仓位也有
32
+ * - farm:MasterChef 的挖矿奖励(CAKE)
33
+ * - gauge:Slipstream gauge 的奖励(AERO / VELO)
34
+ */
35
+ export type ClaimKind = 'fees' | 'farm' | 'gauge'
36
+
37
+ export interface ClaimAmount {
38
+ token: LpToken
39
+ /** 最小单位 */
40
+ amount: string
41
+ /** 按精度换算;读不到精度时为 null */
42
+ formatted: string | null
43
+ /** 开启 prices 时:美元价值(没有价格或读不到精度时为 null) */
44
+ usd?: number | null
45
+ }
46
+
47
+ /** 一项可领取的内容:一个仓位的手续费,或一个质押仓位的挖矿奖励 */
48
+ export interface ClaimItem {
49
+ /** `<kind>:<协议 id>:<tokenId>`,在一次查询里唯一 */
50
+ id: string
51
+ kind: ClaimKind
52
+ protocol: string
53
+ protocolName: string
54
+ /** fees:仓位的版本 */
55
+ version?: 'v3' | 'v4'
56
+ tokenId: string
57
+ /** 池子地址(V4 为 poolId);gauge 为 null */
58
+ pool: string | null
59
+ /** 仓位 NFT 质押在挖矿合约里 */
60
+ staked: boolean
61
+ /** 领取时调用的合约:仓位合约 / MasterChef / gauge */
62
+ target: string
63
+ /** fees 固定是 [token0, token1](可能有一边为 0);farm / gauge 是奖励代币 */
64
+ amounts: ClaimAmount[]
65
+ /** 开启 prices 时:这一项的美元价值(已知部分的合计;全部未知时为 null) */
66
+ usd?: number | null
67
+ /** 数量是估计值(MasterChef 的 harvest 预执行失败,退回 pendingCake,实际领到的可能更多) */
68
+ approximate?: boolean
69
+ }
70
+
71
+ export interface Claimable {
72
+ chainId: number
73
+ owner: string
74
+ /** 有东西可领的项,开启 prices 时按美元价值从大到小排 */
75
+ items: ClaimItem[]
76
+ /** 按代币汇总 */
77
+ totals: ClaimAmount[]
78
+ usd?: number | null
79
+ /** 某个来源读取失败(节点出错等)时的说明,其他来源的结果照常返回 */
80
+ errors: Array<{ source: string; error: string }>
81
+ }
82
+
83
+ export interface ClaimableOptions extends CallOverrides {
84
+ /**
85
+ * 查哪些协议:LP 协议 id('uniswap-v3'、'pancakeswap-v3'、'uniswap-v4' …)或自己的 LpProtocol、挖矿协议 id('aerodrome-slipstream' …)。
86
+ * 'pancakeswap-v3' 同时包含它的 MasterChef 挖矿。默认这条链上内置的全部
87
+ */
88
+ protocols?: ReadonlyArray<string | LpProtocol>
89
+ /** 查手续费(V3 / V4 仓位,含质押在 MasterChef 里的),默认 true */
90
+ fees?: boolean
91
+ /** 查挖矿奖励(MasterChef / gauge),默认 true */
92
+ rewards?: boolean
93
+ /** V4:怎么找仓位(已知 tokenIds 或扫描 Transfer 事件,同 getLpPositions),两个都没有时不查 V4 */
94
+ v4?: LpV4Options
95
+ /** 内置表里没有的挖矿合约 */
96
+ farms?: readonly FarmProtocol[]
97
+ /** gauge:直接指定要查的 gauge 地址,不再通过 Voter 枚举全部池子(Aerodrome 有两千多个,枚举要几千次读取) */
98
+ gauges?: readonly string[]
99
+ /** 每个协议最多核对多少个仓位,默认 500 */
100
+ maxPositions?: number
101
+ /** 美元价值(可选):true 用 DefiLlama + 链上池子,也可以传 tokenPrices 的 sources。默认不查 */
102
+ prices?: boolean | TokenPricesOptions['sources']
103
+ /** 价格源出错时调用:照样返回结果,usd 为 null */
104
+ onPriceError?: (error: unknown) => void
105
+ /** 自定义 fetch(价格用) */
106
+ fetch?: typeof fetch
107
+ }
108
+
109
+ export interface ClaimAllOptions extends ClaimableOptions {
110
+ /** 要领取的项(getClaimable 的结果里挑),默认领取查到的全部 */
111
+ items?: readonly ClaimItem[]
112
+ /** 领取的代币收到哪个地址,默认 owner。gauge 的奖励只能发给 owner,传了别的地址时这些项会被跳过 */
113
+ recipient?: string
114
+ /** V4:传给 hooks 的 hookData,默认 '0x' */
115
+ hookData?: string
116
+ /** 美元价值低于这个值的项跳过(不够付 gas 的零头);价值未知的不跳过。需要 prices */
117
+ minUsd?: number
118
+ /** 一笔交易最多合并多少个仓位,默认 20 */
119
+ batchSize?: number
120
+ /**
121
+ * 构建后先模拟(用 /simulate,按需加载):某一笔失败时逐项再试,把会失败的项放进 skipped,其余照常领取。默认 true;
122
+ * 设为 false 时不模拟(某一项失败会让它所在的那一笔整体失败)
123
+ */
124
+ simulate?: boolean
125
+ }
126
+
127
+ export interface ClaimTx {
128
+ kind: ClaimKind
129
+ to: string
130
+ data: string
131
+ value: '0'
132
+ /** 这一笔里包含的项(ClaimItem.id) */
133
+ itemIds: string[]
134
+ /** 模拟的结果(simulate 不为 false 时):资产变化就是实际会收到的数量 */
135
+ simulation?: SimulationResult
136
+ }
137
+
138
+ export interface ClaimSkipped {
139
+ item: ClaimItem
140
+ reason: string
141
+ }
142
+
143
+ /** 领取计划:要按顺序发送的交易(每笔独立,互不依赖)。只读取、不签名 */
144
+ export interface ClaimPlan {
145
+ chainId: number
146
+ owner: string
147
+ recipient: string
148
+ /** 会领取的项 */
149
+ items: ClaimItem[]
150
+ /** 跳过的项和原因(没东西可领、低于 minUsd、模拟失败、地址不允许 …) */
151
+ skipped: ClaimSkipped[]
152
+ /** 按代币汇总的预计数量(用的是查询时的数量,挖矿奖励随时间还会增加一点) */
153
+ totals: ClaimAmount[]
154
+ usd?: number | null
155
+ transactions: ClaimTx[]
156
+ }
157
+
158
+ export interface ClaimAllSendOptions extends ClaimAllOptions, Omit<BatchCallOptions, 'continueOnError'> {
159
+ /** 某一笔发送前失败后,后面的是否继续,默认 true(每一笔都是独立的领取) */
160
+ continueOnError?: boolean
161
+ }
162
+
163
+ export interface ClaimTxResult extends WriteResult {
164
+ kind: ClaimKind
165
+ itemIds: string[]
166
+ }
167
+
168
+ export interface ClaimResult {
169
+ plan: ClaimPlan
170
+ /** 与 plan.transactions 一一对应 */
171
+ results: ClaimTxResult[]
172
+ /** 全部确认为 'confirmed';dryRun 全部预估通过为 'simulated';没有东西可领为 'skipped';否则是第一笔没成功的状态 */
173
+ status: WriteStatus
174
+ /** 已确认的交易里的项 / 其他交易里的项(dryRun 时 claimed 为空,failed 只含预估失败的项) */
175
+ claimed: ClaimItem[]
176
+ failed: ClaimItem[]
177
+ /** dryRun:预估通过的项(没有真正发送) */
178
+ simulated?: ClaimItem[]
179
+ }