@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.
- package/CHANGELOG.md +30 -0
- package/README.md +206 -1
- package/dist/dividends.d.ts +135 -0
- package/dist/dividends.d.ts.map +1 -0
- package/dist/dividends.js +253 -0
- package/dist/dividends.js.map +1 -0
- package/dist/history.d.ts +154 -0
- package/dist/history.d.ts.map +1 -0
- package/dist/history.js +247 -0
- package/dist/history.js.map +1 -0
- package/dist/historySources.d.ts +32 -0
- package/dist/historySources.d.ts.map +1 -0
- package/dist/historySources.js +319 -0
- package/dist/historySources.js.map +1 -0
- package/dist/liquidity/v3.d.ts +2 -0
- package/dist/liquidity/v3.d.ts.map +1 -1
- package/dist/liquidity/v3.js +1 -1
- package/dist/liquidity/v3.js.map +1 -1
- package/dist/liquidity/v4.d.ts +21 -0
- package/dist/liquidity/v4.d.ts.map +1 -1
- package/dist/liquidity/v4.js +4 -3
- package/dist/liquidity/v4.js.map +1 -1
- package/dist/lp.d.ts +8 -0
- package/dist/lp.d.ts.map +1 -1
- package/dist/lp.js +17 -1
- package/dist/lp.js.map +1 -1
- package/dist/lpV4.d.ts +4 -0
- package/dist/lpV4.d.ts.map +1 -1
- package/dist/lpV4.js +27 -3
- package/dist/lpV4.js.map +1 -1
- package/dist/permit.d.ts +137 -0
- package/dist/permit.d.ts.map +1 -0
- package/dist/permit.js +355 -0
- package/dist/permit.js.map +1 -0
- package/dist/portfolio.d.ts +2 -0
- package/dist/portfolio.d.ts.map +1 -1
- package/dist/portfolio.js +9 -4
- package/dist/portfolio.js.map +1 -1
- package/dist/rewards/farms.d.ts +26 -0
- package/dist/rewards/farms.d.ts.map +1 -0
- package/dist/rewards/farms.js +210 -0
- package/dist/rewards/farms.js.map +1 -0
- package/dist/rewards/index.d.ts +42 -0
- package/dist/rewards/index.d.ts.map +1 -0
- package/dist/rewards/index.js +382 -0
- package/dist/rewards/index.js.map +1 -0
- package/dist/rewards/types.d.ts +170 -0
- package/dist/rewards/types.d.ts.map +1 -0
- package/dist/rewards/types.js +2 -0
- package/dist/rewards/types.js.map +1 -0
- package/dist/simulate.d.ts +186 -0
- package/dist/simulate.d.ts.map +1 -0
- package/dist/simulate.js +559 -0
- package/dist/simulate.js.map +1 -0
- package/dist/simulateDecode.d.ts +33 -0
- package/dist/simulateDecode.d.ts.map +1 -0
- package/dist/simulateDecode.js +321 -0
- package/dist/simulateDecode.js.map +1 -0
- package/dist/smartAccount/account.d.ts +31 -0
- package/dist/smartAccount/account.d.ts.map +1 -0
- package/dist/smartAccount/account.js +33 -0
- package/dist/smartAccount/account.js.map +1 -0
- package/dist/smartAccount/clients.d.ts +77 -0
- package/dist/smartAccount/clients.d.ts.map +1 -0
- package/dist/smartAccount/clients.js +122 -0
- package/dist/smartAccount/clients.js.map +1 -0
- package/dist/smartAccount/eip5792.d.ts +77 -0
- package/dist/smartAccount/eip5792.d.ts.map +1 -0
- package/dist/smartAccount/eip5792.js +152 -0
- package/dist/smartAccount/eip5792.js.map +1 -0
- package/dist/smartAccount/send.d.ts +40 -0
- package/dist/smartAccount/send.d.ts.map +1 -0
- package/dist/smartAccount/send.js +271 -0
- package/dist/smartAccount/send.js.map +1 -0
- package/dist/smartAccount/userOp.d.ts +91 -0
- package/dist/smartAccount/userOp.d.ts.map +1 -0
- package/dist/smartAccount/userOp.js +124 -0
- package/dist/smartAccount/userOp.js.map +1 -0
- package/dist/subpaths/dividends.d.ts +28 -0
- package/dist/subpaths/dividends.d.ts.map +1 -0
- package/dist/subpaths/dividends.js +29 -0
- package/dist/subpaths/dividends.js.map +1 -0
- package/dist/subpaths/history.d.ts +22 -0
- package/dist/subpaths/history.d.ts.map +1 -0
- package/dist/subpaths/history.js +23 -0
- package/dist/subpaths/history.js.map +1 -0
- package/dist/subpaths/permit.d.ts +14 -0
- package/dist/subpaths/permit.d.ts.map +1 -0
- package/dist/subpaths/permit.js +14 -0
- package/dist/subpaths/permit.js.map +1 -0
- package/dist/subpaths/price.js +2 -2
- package/dist/subpaths/price.js.map +1 -1
- package/dist/subpaths/rewards.d.ts +27 -0
- package/dist/subpaths/rewards.d.ts.map +1 -0
- package/dist/subpaths/rewards.js +25 -0
- package/dist/subpaths/rewards.js.map +1 -0
- package/dist/subpaths/simulate.d.ts +25 -0
- package/dist/subpaths/simulate.d.ts.map +1 -0
- package/dist/subpaths/simulate.js +28 -0
- package/dist/subpaths/simulate.js.map +1 -0
- package/dist/subpaths/smart-account.d.ts +24 -0
- package/dist/subpaths/smart-account.d.ts.map +1 -0
- package/dist/subpaths/smart-account.js +24 -0
- package/dist/subpaths/smart-account.js.map +1 -0
- package/dist/swap.d.ts +45 -5
- package/dist/swap.d.ts.map +1 -1
- package/dist/swap.js +108 -12
- package/dist/swap.js.map +1 -1
- package/dist/write/batch.d.ts +34 -2
- package/dist/write/batch.d.ts.map +1 -1
- package/dist/write/batch.js +22 -3
- package/dist/write/batch.js.map +1 -1
- package/dist/write/collect.d.ts +9 -0
- package/dist/write/collect.d.ts.map +1 -1
- package/dist/write/collect.js +41 -1
- package/dist/write/collect.js.map +1 -1
- package/dist/write/send.d.ts +4 -0
- package/dist/write/send.d.ts.map +1 -1
- package/dist/write/send.js.map +1 -1
- package/dist/write/signer.d.ts +5 -1
- package/dist/write/signer.d.ts.map +1 -1
- package/dist/write/signer.js.map +1 -1
- package/dist/write/transfer.d.ts +5 -3
- package/dist/write/transfer.d.ts.map +1 -1
- package/dist/write/transfer.js +12 -6
- package/dist/write/transfer.js.map +1 -1
- package/package.json +35 -1
- package/src/dividends.ts +360 -0
- package/src/history.ts +367 -0
- package/src/historySources.ts +360 -0
- package/src/liquidity/v3.ts +1 -1
- package/src/liquidity/v4.ts +4 -3
- package/src/lp.ts +18 -1
- package/src/lpV4.ts +32 -2
- package/src/permit.ts +457 -0
- package/src/portfolio.ts +11 -4
- package/src/rewards/farms.ts +229 -0
- package/src/rewards/index.ts +431 -0
- package/src/rewards/types.ts +179 -0
- package/src/simulate.ts +727 -0
- package/src/simulateDecode.ts +352 -0
- package/src/smartAccount/account.ts +63 -0
- package/src/smartAccount/clients.ts +180 -0
- package/src/smartAccount/eip5792.ts +187 -0
- package/src/smartAccount/send.ts +341 -0
- package/src/smartAccount/userOp.ts +180 -0
- package/src/subpaths/dividends.ts +47 -0
- package/src/subpaths/history.ts +41 -0
- package/src/subpaths/permit.ts +39 -0
- package/src/subpaths/price.ts +2 -2
- package/src/subpaths/rewards.ts +46 -0
- package/src/subpaths/simulate.ts +51 -0
- package/src/subpaths/smart-account.ts +40 -0
- package/src/swap.ts +139 -18
- package/src/write/batch.ts +44 -5
- package/src/write/collect.ts +60 -1
- package/src/write/send.ts +4 -0
- package/src/write/signer.ts +5 -1
- 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
|
+
}
|