@sablier/bob 1.0.1

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 (42) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE-BUSL.md +82 -0
  3. package/LICENSE-GPL.md +470 -0
  4. package/LICENSE.md +9 -0
  5. package/README.md +81 -0
  6. package/artifacts/BobVaultShare.json +936 -0
  7. package/artifacts/SablierBob.json +1683 -0
  8. package/artifacts/SablierEscrow.json +1316 -0
  9. package/artifacts/SablierLidoAdapter.json +1649 -0
  10. package/artifacts/erc20/IERC20.json +226 -0
  11. package/artifacts/interfaces/IBobVaultShare.json +393 -0
  12. package/artifacts/interfaces/ISablierBob.json +1171 -0
  13. package/artifacts/interfaces/ISablierEscrow.json +999 -0
  14. package/artifacts/interfaces/ISablierLidoAdapter.json +1141 -0
  15. package/artifacts/interfaces/external/ICurveStETHPool.json +128 -0
  16. package/artifacts/interfaces/external/ILidoWithdrawalQueue.json +209 -0
  17. package/artifacts/interfaces/external/IStETH.json +262 -0
  18. package/artifacts/interfaces/external/IWETH9.json +259 -0
  19. package/artifacts/interfaces/external/IWstETH.json +311 -0
  20. package/artifacts/libraries/Errors.json +868 -0
  21. package/package.json +68 -0
  22. package/src/BobVaultShare.sol +119 -0
  23. package/src/SablierBob.sol +543 -0
  24. package/src/SablierEscrow.sol +288 -0
  25. package/src/SablierLidoAdapter.sol +549 -0
  26. package/src/abstracts/SablierBobState.sol +156 -0
  27. package/src/abstracts/SablierEscrowState.sol +159 -0
  28. package/src/interfaces/IBobVaultShare.sol +51 -0
  29. package/src/interfaces/ISablierBob.sol +261 -0
  30. package/src/interfaces/ISablierBobAdapter.sol +157 -0
  31. package/src/interfaces/ISablierBobState.sol +74 -0
  32. package/src/interfaces/ISablierEscrow.sol +148 -0
  33. package/src/interfaces/ISablierEscrowState.sol +77 -0
  34. package/src/interfaces/ISablierLidoAdapter.sol +110 -0
  35. package/src/interfaces/external/ICurveStETHPool.sol +31 -0
  36. package/src/interfaces/external/ILidoWithdrawalQueue.sol +67 -0
  37. package/src/interfaces/external/IStETH.sol +18 -0
  38. package/src/interfaces/external/IWETH9.sol +19 -0
  39. package/src/interfaces/external/IWstETH.sol +32 -0
  40. package/src/libraries/Errors.sol +189 -0
  41. package/src/types/Bob.sol +49 -0
  42. package/src/types/Escrow.sol +49 -0
@@ -0,0 +1,1141 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "function",
5
+ "name": "CURVE_POOL",
6
+ "inputs": [],
7
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
8
+ "stateMutability": "view"
9
+ },
10
+ {
11
+ "type": "function",
12
+ "name": "LIDO_WITHDRAWAL_QUEUE",
13
+ "inputs": [],
14
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
15
+ "stateMutability": "view"
16
+ },
17
+ {
18
+ "type": "function",
19
+ "name": "MAX_FEE",
20
+ "inputs": [],
21
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "UD60x18" }],
22
+ "stateMutability": "view"
23
+ },
24
+ {
25
+ "type": "function",
26
+ "name": "MAX_SLIPPAGE_TOLERANCE",
27
+ "inputs": [],
28
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "UD60x18" }],
29
+ "stateMutability": "view"
30
+ },
31
+ {
32
+ "type": "function",
33
+ "name": "SABLIER_BOB",
34
+ "inputs": [],
35
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
36
+ "stateMutability": "view"
37
+ },
38
+ {
39
+ "type": "function",
40
+ "name": "STETH",
41
+ "inputs": [],
42
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
43
+ "stateMutability": "view"
44
+ },
45
+ {
46
+ "type": "function",
47
+ "name": "STETH_ETH_ORACLE",
48
+ "inputs": [],
49
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
50
+ "stateMutability": "view"
51
+ },
52
+ {
53
+ "type": "function",
54
+ "name": "WETH",
55
+ "inputs": [],
56
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
57
+ "stateMutability": "view"
58
+ },
59
+ {
60
+ "type": "function",
61
+ "name": "WSTETH",
62
+ "inputs": [],
63
+ "outputs": [{ "name": "", "type": "address", "internalType": "address" }],
64
+ "stateMutability": "view"
65
+ },
66
+ {
67
+ "type": "function",
68
+ "name": "comptroller",
69
+ "inputs": [],
70
+ "outputs": [{ "name": "", "type": "address", "internalType": "contract ISablierComptroller" }],
71
+ "stateMutability": "view"
72
+ },
73
+ {
74
+ "type": "function",
75
+ "name": "feeOnYield",
76
+ "inputs": [],
77
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "UD60x18" }],
78
+ "stateMutability": "view"
79
+ },
80
+ {
81
+ "type": "function",
82
+ "name": "getLidoWithdrawalRequestIds",
83
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
84
+ "outputs": [{ "name": "", "type": "uint256[]", "internalType": "uint256[]" }],
85
+ "stateMutability": "view"
86
+ },
87
+ {
88
+ "type": "function",
89
+ "name": "getTotalYieldBearingTokenBalance",
90
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
91
+ "outputs": [{ "name": "", "type": "uint128", "internalType": "uint128" }],
92
+ "stateMutability": "view"
93
+ },
94
+ {
95
+ "type": "function",
96
+ "name": "getVaultYieldFee",
97
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
98
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "UD60x18" }],
99
+ "stateMutability": "view"
100
+ },
101
+ {
102
+ "type": "function",
103
+ "name": "getWethReceivedAfterUnstaking",
104
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
105
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
106
+ "stateMutability": "view"
107
+ },
108
+ {
109
+ "type": "function",
110
+ "name": "getYieldBearingTokenBalanceFor",
111
+ "inputs": [
112
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
113
+ { "name": "user", "type": "address", "internalType": "address" }
114
+ ],
115
+ "outputs": [{ "name": "", "type": "uint128", "internalType": "uint128" }],
116
+ "stateMutability": "view"
117
+ },
118
+ {
119
+ "type": "function",
120
+ "name": "processRedemption",
121
+ "inputs": [
122
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
123
+ { "name": "user", "type": "address", "internalType": "address" },
124
+ { "name": "shareBalance", "type": "uint128", "internalType": "uint128" }
125
+ ],
126
+ "outputs": [
127
+ { "name": "transferAmount", "type": "uint128", "internalType": "uint128" },
128
+ { "name": "feeAmountDeductedFromYield", "type": "uint128", "internalType": "uint128" }
129
+ ],
130
+ "stateMutability": "nonpayable"
131
+ },
132
+ {
133
+ "type": "function",
134
+ "name": "registerVault",
135
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
136
+ "outputs": [],
137
+ "stateMutability": "nonpayable"
138
+ },
139
+ {
140
+ "type": "function",
141
+ "name": "requestLidoWithdrawal",
142
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
143
+ "outputs": [],
144
+ "stateMutability": "nonpayable"
145
+ },
146
+ {
147
+ "type": "function",
148
+ "name": "setComptroller",
149
+ "inputs": [{ "name": "newComptroller", "type": "address", "internalType": "contract ISablierComptroller" }],
150
+ "outputs": [],
151
+ "stateMutability": "nonpayable"
152
+ },
153
+ {
154
+ "type": "function",
155
+ "name": "setSlippageTolerance",
156
+ "inputs": [{ "name": "newTolerance", "type": "uint256", "internalType": "UD60x18" }],
157
+ "outputs": [],
158
+ "stateMutability": "nonpayable"
159
+ },
160
+ {
161
+ "type": "function",
162
+ "name": "setYieldFee",
163
+ "inputs": [{ "name": "newFee", "type": "uint256", "internalType": "UD60x18" }],
164
+ "outputs": [],
165
+ "stateMutability": "nonpayable"
166
+ },
167
+ {
168
+ "type": "function",
169
+ "name": "slippageTolerance",
170
+ "inputs": [],
171
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "UD60x18" }],
172
+ "stateMutability": "view"
173
+ },
174
+ {
175
+ "type": "function",
176
+ "name": "stake",
177
+ "inputs": [
178
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
179
+ { "name": "user", "type": "address", "internalType": "address" },
180
+ { "name": "amount", "type": "uint256", "internalType": "uint256" }
181
+ ],
182
+ "outputs": [],
183
+ "stateMutability": "nonpayable"
184
+ },
185
+ {
186
+ "type": "function",
187
+ "name": "supportsInterface",
188
+ "inputs": [{ "name": "interfaceId", "type": "bytes4", "internalType": "bytes4" }],
189
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
190
+ "stateMutability": "view"
191
+ },
192
+ {
193
+ "type": "function",
194
+ "name": "transferFeesToComptroller",
195
+ "inputs": [],
196
+ "outputs": [],
197
+ "stateMutability": "nonpayable"
198
+ },
199
+ {
200
+ "type": "function",
201
+ "name": "unstakeFullAmount",
202
+ "inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
203
+ "outputs": [
204
+ { "name": "wrappedTokenBalance", "type": "uint128", "internalType": "uint128" },
205
+ { "name": "amountReceivedFromUnstaking", "type": "uint128", "internalType": "uint128" }
206
+ ],
207
+ "stateMutability": "nonpayable"
208
+ },
209
+ {
210
+ "type": "function",
211
+ "name": "updateStakedTokenBalance",
212
+ "inputs": [
213
+ { "name": "vaultId", "type": "uint256", "internalType": "uint256" },
214
+ { "name": "from", "type": "address", "internalType": "address" },
215
+ { "name": "to", "type": "address", "internalType": "address" },
216
+ { "name": "shareAmountTransferred", "type": "uint256", "internalType": "uint256" },
217
+ { "name": "userShareBalanceBeforeTransfer", "type": "uint256", "internalType": "uint256" }
218
+ ],
219
+ "outputs": [],
220
+ "stateMutability": "nonpayable"
221
+ },
222
+ {
223
+ "type": "event",
224
+ "name": "RequestLidoWithdrawal",
225
+ "inputs": [
226
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
227
+ { "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
228
+ { "name": "wstETHAmount", "type": "uint256", "indexed": false, "internalType": "uint256" },
229
+ { "name": "stETHAmount", "type": "uint256", "indexed": false, "internalType": "uint256" },
230
+ { "name": "withdrawalRequestIds", "type": "uint256[]", "indexed": false, "internalType": "uint256[]" }
231
+ ],
232
+ "anonymous": false
233
+ },
234
+ {
235
+ "type": "event",
236
+ "name": "SetComptroller",
237
+ "inputs": [
238
+ {
239
+ "name": "oldComptroller",
240
+ "type": "address",
241
+ "indexed": false,
242
+ "internalType": "contract ISablierComptroller"
243
+ },
244
+ {
245
+ "name": "newComptroller",
246
+ "type": "address",
247
+ "indexed": false,
248
+ "internalType": "contract ISablierComptroller"
249
+ }
250
+ ],
251
+ "anonymous": false
252
+ },
253
+ {
254
+ "type": "event",
255
+ "name": "SetSlippageTolerance",
256
+ "inputs": [
257
+ { "name": "previousTolerance", "type": "uint256", "indexed": false, "internalType": "UD60x18" },
258
+ { "name": "newTolerance", "type": "uint256", "indexed": false, "internalType": "UD60x18" }
259
+ ],
260
+ "anonymous": false
261
+ },
262
+ {
263
+ "type": "event",
264
+ "name": "SetYieldFee",
265
+ "inputs": [
266
+ { "name": "previousFee", "type": "uint256", "indexed": false, "internalType": "UD60x18" },
267
+ { "name": "newFee", "type": "uint256", "indexed": false, "internalType": "UD60x18" }
268
+ ],
269
+ "anonymous": false
270
+ },
271
+ {
272
+ "type": "event",
273
+ "name": "Stake",
274
+ "inputs": [
275
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
276
+ { "name": "user", "type": "address", "indexed": true, "internalType": "address" },
277
+ { "name": "depositAmount", "type": "uint256", "indexed": false, "internalType": "uint256" },
278
+ { "name": "wrappedStakedAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
279
+ ],
280
+ "anonymous": false
281
+ },
282
+ {
283
+ "type": "event",
284
+ "name": "TransferFeesToComptroller",
285
+ "inputs": [
286
+ { "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
287
+ { "name": "feeAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
288
+ ],
289
+ "anonymous": false
290
+ },
291
+ {
292
+ "type": "event",
293
+ "name": "TransferStakedTokens",
294
+ "inputs": [
295
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
296
+ { "name": "from", "type": "address", "indexed": true, "internalType": "address" },
297
+ { "name": "to", "type": "address", "indexed": true, "internalType": "address" },
298
+ { "name": "amount", "type": "uint256", "indexed": false, "internalType": "uint256" }
299
+ ],
300
+ "anonymous": false
301
+ },
302
+ {
303
+ "type": "event",
304
+ "name": "UnstakeFullAmount",
305
+ "inputs": [
306
+ { "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
307
+ { "name": "totalStakedAmount", "type": "uint128", "indexed": false, "internalType": "uint128" },
308
+ { "name": "amountReceivedFromUnstaking", "type": "uint128", "indexed": false, "internalType": "uint128" }
309
+ ],
310
+ "anonymous": false
311
+ }
312
+ ],
313
+ "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
314
+ "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
315
+ "methodIdentifiers": {
316
+ "CURVE_POOL()": "86a8b4b5",
317
+ "LIDO_WITHDRAWAL_QUEUE()": "b8c77774",
318
+ "MAX_FEE()": "bc063e1a",
319
+ "MAX_SLIPPAGE_TOLERANCE()": "c30e659b",
320
+ "SABLIER_BOB()": "aa2e3b98",
321
+ "STETH()": "e00bfe50",
322
+ "STETH_ETH_ORACLE()": "59abff0e",
323
+ "WETH()": "ad5c4648",
324
+ "WSTETH()": "d9fb643a",
325
+ "comptroller()": "5fe3b567",
326
+ "feeOnYield()": "11f8a8b5",
327
+ "getLidoWithdrawalRequestIds(uint256)": "de9629d1",
328
+ "getTotalYieldBearingTokenBalance(uint256)": "a59c665d",
329
+ "getVaultYieldFee(uint256)": "642c07c7",
330
+ "getWethReceivedAfterUnstaking(uint256)": "9a00a934",
331
+ "getYieldBearingTokenBalanceFor(uint256,address)": "004e8a46",
332
+ "processRedemption(uint256,address,uint128)": "e5eefedd",
333
+ "registerVault(uint256)": "c6405ffb",
334
+ "requestLidoWithdrawal(uint256)": "cc8d9e87",
335
+ "setComptroller(address)": "8bad38dd",
336
+ "setSlippageTolerance(uint256)": "117da1ee",
337
+ "setYieldFee(uint256)": "794b8e02",
338
+ "slippageTolerance()": "d03153aa",
339
+ "stake(uint256,address,uint256)": "6e9c931c",
340
+ "supportsInterface(bytes4)": "01ffc9a7",
341
+ "transferFeesToComptroller()": "78f82ce7",
342
+ "unstakeFullAmount(uint256)": "d0ff74fa",
343
+ "updateStakedTokenBalance(uint256,address,address,uint256,uint256)": "3527687f"
344
+ },
345
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wstETHAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"stETHAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256[]\",\"name\":\"withdrawalRequestIds\",\"type\":\"uint256[]\"}],\"name\":\"RequestLidoWithdrawal\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"oldComptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"SetComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"previousTolerance\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"newTolerance\",\"type\":\"uint256\"}],\"name\":\"SetSlippageTolerance\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"previousFee\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"UD60x18\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"SetYieldFee\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"depositAmount\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"wrappedStakedAmount\",\"type\":\"uint256\"}],\"name\":\"Stake\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"feeAmount\",\"type\":\"uint256\"}],\"name\":\"TransferFeesToComptroller\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"TransferStakedTokens\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"totalStakedAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceivedFromUnstaking\",\"type\":\"uint128\"}],\"name\":\"UnstakeFullAmount\",\"type\":\"event\"},{\"inputs\":[],\"name\":\"CURVE_POOL\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"LIDO_WITHDRAWAL_QUEUE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_FEE\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"MAX_SLIPPAGE_TOLERANCE\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"SABLIER_BOB\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"STETH_ETH_ORACLE\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"WSTETH\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"feeOnYield\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getLidoWithdrawalRequestIds\",\"outputs\":[{\"internalType\":\"uint256[]\",\"name\":\"\",\"type\":\"uint256[]\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getTotalYieldBearingTokenBalance\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getVaultYieldFee\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getWethReceivedAfterUnstaking\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"}],\"name\":\"getYieldBearingTokenBalanceFor\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint128\",\"name\":\"shareBalance\",\"type\":\"uint128\"}],\"name\":\"processRedemption\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"transferAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feeAmountDeductedFromYield\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"registerVault\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"requestLidoWithdrawal\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"setComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"UD60x18\",\"name\":\"newTolerance\",\"type\":\"uint256\"}],\"name\":\"setSlippageTolerance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"UD60x18\",\"name\":\"newFee\",\"type\":\"uint256\"}],\"name\":\"setYieldFee\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"slippageTolerance\",\"outputs\":[{\"internalType\":\"UD60x18\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"}],\"name\":\"stake\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"bytes4\",\"name\":\"interfaceId\",\"type\":\"bytes4\"}],\"name\":\"supportsInterface\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferFeesToComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"unstakeFullAmount\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"wrappedTokenBalance\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"amountReceivedFromUnstaking\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"shareAmountTransferred\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"userShareBalanceBeforeTransfer\",\"type\":\"uint256\"}],\"name\":\"updateStakedTokenBalance\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Extends the base adapter interface with Lido and Curve specific functionalities.\",\"kind\":\"dev\",\"methods\":{\"CURVE_POOL()\":{\"details\":\"This is an immutable state variable.\"},\"LIDO_WITHDRAWAL_QUEUE()\":{\"details\":\"This is an immutable state variable.\"},\"MAX_FEE()\":{\"details\":\"This is a constant state variable.\"},\"MAX_SLIPPAGE_TOLERANCE()\":{\"details\":\"This is a constant state variable.\"},\"SABLIER_BOB()\":{\"details\":\"This is an immutable state variable.\"},\"STETH()\":{\"details\":\"This is an immutable state variable.\"},\"STETH_ETH_ORACLE()\":{\"details\":\"This is an immutable state variable.\"},\"WETH()\":{\"details\":\"This is an immutable state variable.\"},\"WSTETH()\":{\"details\":\"This is an immutable state variable.\"},\"getLidoWithdrawalRequestIds(uint256)\":{\"details\":\"Multiple request IDs may be generated for a vault if the total amount exceeds the Lido enforced per-withdrawal limit.\"},\"getTotalYieldBearingTokenBalance(uint256)\":{\"params\":{\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"_0\":\"The total amount of yield-bearing tokens in the vault.\"}},\"getVaultYieldFee(uint256)\":{\"params\":{\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"_0\":\"The yield fee for the vault denominated in UD60x18, where 1e18 = 100%.\"}},\"getWethReceivedAfterUnstaking(uint256)\":{\"params\":{\"vaultId\":\"The ID of the vault.\"}},\"getYieldBearingTokenBalanceFor(uint256,address)\":{\"params\":{\"user\":\"The address of the user.\",\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"_0\":\"The amount of yield-bearing tokens the user has claim to.\"}},\"processRedemption(uint256,address,uint128)\":{\"params\":{\"shareBalance\":\"The user's share balance in the vault.\",\"user\":\"The address of the user.\",\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"feeAmountDeductedFromYield\":\"The fee amount taken from the yield.\",\"transferAmount\":\"The amount to transfer to the user.\"}},\"registerVault(uint256)\":{\"params\":{\"vaultId\":\"The ID of the newly created vault.\"}},\"requestLidoWithdrawal(uint256)\":{\"details\":\"Emits a {RequestLidoWithdrawal} event. Notes: - This unwraps the vault's wstETH to stETH and submits it to Lido's withdrawal queue. - Once called, the Curve swap is permanently disabled for `vaultId`. - After the queue finalizes the withdrawal, ETH can be redeemed by calling {unstakeFullAmount}. - Large amounts are automatically split into multiple requests to comply with Lido's per-request limit. Requirements: - The caller must be the comptroller. - The status of the vault must not be ACTIVE. - The vault must still be staked in the adapter (not already unstaked via Curve). - A withdrawal request must not have already been requested for this vault. - The vault must have wstETH to withdraw. - The total amount to withdraw must not be less than the minimum amount per request.\",\"params\":{\"vaultId\":\"The ID of the vault.\"}},\"setComptroller(address)\":{\"details\":\"Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}\",\"params\":{\"newComptroller\":\"The address of the new comptroller contract.\"}},\"setSlippageTolerance(uint256)\":{\"details\":\"Emits a {SetSlippageTolerance} event. Notes: - This affects all vaults. Requirements: - The caller must be the comptroller. - `newSlippageTolerance` must not exceed MAX_SLIPPAGE_TOLERANCE.\",\"params\":{\"newTolerance\":\"The new slippage tolerance as UD60x18.\"}},\"setYieldFee(uint256)\":{\"details\":\"Emits a {SetYieldFee} event. Notes: - This only affects future vaults, fee is not updated for existing vaults. Requirements: - The caller must be the comptroller. - `newFee` must not exceed MAX_FEE.\",\"params\":{\"newFee\":\"The new yield fee as UD60x18 where 1e18 = 100%.\"}},\"stake(uint256,address,uint256)\":{\"details\":\"Emits a {Stake} event. Requirements: - The caller must be the SablierBob contract. - The tokens must have been transferred to this contract.\",\"params\":{\"amount\":\"The amount of tokens to stake.\",\"user\":\"The address of the user depositing the tokens.\",\"vaultId\":\"The ID of the vault.\"}},\"supportsInterface(bytes4)\":{\"details\":\"Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas.\"},\"transferFeesToComptroller()\":{\"details\":\"Emits a {TransferFeesToComptroller} event.\"},\"unstakeFullAmount(uint256)\":{\"details\":\"Emits an {UnstakeFullAmount} event. Notes: - This should only be called once per vault after settlement. Requirements: - The caller must be the SablierBob contract.\",\"params\":{\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"amountReceivedFromUnstaking\":\"The total amount of tokens received from unstaking the yield-bearing tokens.\",\"wrappedTokenBalance\":\"The total amount of yield-bearing tokens that were in the vault.\"}},\"updateStakedTokenBalance(uint256,address,address,uint256,uint256)\":{\"params\":{\"from\":\"The address transferring vault shares.\",\"shareAmountTransferred\":\"The number of vault shares being transferred.\",\"to\":\"The address receiving vault shares.\",\"userShareBalanceBeforeTransfer\":\"The sender's vault share balance before the transfer.\",\"vaultId\":\"The ID of the vault.\"}}},\"title\":\"ISablierLidoAdapter\",\"version\":1},\"userdoc\":{\"events\":{\"RequestLidoWithdrawal(uint256,address,uint256,uint256,uint256[])\":{\"notice\":\"Emitted when the comptroller requests a Lido native withdrawal for a vault.\"},\"SetComptroller(address,address)\":{\"notice\":\"Emitted when the comptroller address is set by the admin.\"},\"SetSlippageTolerance(uint256,uint256)\":{\"notice\":\"Emitted when the comptroller sets a new slippage tolerance.\"},\"SetYieldFee(uint256,uint256)\":{\"notice\":\"Emitted when the comptroller sets a new yield fee.\"},\"Stake(uint256,address,uint256,uint256)\":{\"notice\":\"Emitted when tokens are staked for a user in a vault.\"},\"TransferFeesToComptroller(address,uint256)\":{\"notice\":\"Emitted when the fees are transferred to the comptroller contract.\"},\"TransferStakedTokens(uint256,address,address,uint256)\":{\"notice\":\"Emitted when staked token attribution is transferred between users.\"},\"UnstakeFullAmount(uint256,uint128,uint128)\":{\"notice\":\"Emitted when all staked tokens in a vault are converted back to the deposit token.\"}},\"kind\":\"user\",\"methods\":{\"CURVE_POOL()\":{\"notice\":\"Returns the address of the Curve stETH/ETH pool.\"},\"LIDO_WITHDRAWAL_QUEUE()\":{\"notice\":\"Returns the address of the Lido withdrawal queue contract.\"},\"MAX_FEE()\":{\"notice\":\"Returns the maximum yield fee, denominated in UD60x18, where 1e18 = 100%.\"},\"MAX_SLIPPAGE_TOLERANCE()\":{\"notice\":\"Returns the maximum slippage tolerance that can be set, denominated in UD60x18, where 1e18 = 100%.\"},\"SABLIER_BOB()\":{\"notice\":\"Returns the address of the SablierBob contract.\"},\"STETH()\":{\"notice\":\"Returns the address of the stETH contract.\"},\"STETH_ETH_ORACLE()\":{\"notice\":\"Returns the address of the Chainlink stETH/ETH oracle used in the calculation of `minEthOut` slippage.\"},\"WETH()\":{\"notice\":\"Returns the address of the WETH contract.\"},\"WSTETH()\":{\"notice\":\"Returns the address of the wstETH contract.\"},\"comptroller()\":{\"notice\":\"Retrieves the address of the comptroller contract.\"},\"feeOnYield()\":{\"notice\":\"Returns the current global fee on yield for new vaults, denominated in UD60x18, where 1e18 = 100%.\"},\"getLidoWithdrawalRequestIds(uint256)\":{\"notice\":\"Returns the Lido withdrawal request IDs for a vault.\"},\"getTotalYieldBearingTokenBalance(uint256)\":{\"notice\":\"Returns the total amount of yield-bearing tokens held in a vault.\"},\"getVaultYieldFee(uint256)\":{\"notice\":\"Returns the yield fee stored for a specific vault.\"},\"getWethReceivedAfterUnstaking(uint256)\":{\"notice\":\"Returns the total WETH received after unstaking for a vault.\"},\"getYieldBearingTokenBalanceFor(uint256,address)\":{\"notice\":\"Returns the amount of yield-bearing tokens held for a specific user in a vault.\"},\"processRedemption(uint256,address,uint128)\":{\"notice\":\"Processes a user's token redemption by calculating the transfer amount, clearing the user's yield-bearing token balance, and returning the amounts. Notes: - The user's yield-bearing token balance is decremented after calculating the transfer amount. This does not decrement the vault total as it is used in the calculation of the transfer amount for other users. Requirements: - The caller must be the SablierBob contract.\"},\"registerVault(uint256)\":{\"notice\":\"Register a new vault with the adapter and snapshot the current fee on yield. Requirements: - The caller must be the SablierBob contract.\"},\"requestLidoWithdrawal(uint256)\":{\"notice\":\"Requests a native Lido withdrawal for a vault's staked tokens, bypassing the Curve swap.\"},\"setComptroller(address)\":{\"notice\":\"Sets the comptroller to a new address.\"},\"setSlippageTolerance(uint256)\":{\"notice\":\"Sets the slippage tolerance for Curve swaps.\"},\"setYieldFee(uint256)\":{\"notice\":\"Sets the fee on yield for future vaults.\"},\"slippageTolerance()\":{\"notice\":\"Returns the current slippage tolerance for Curve swaps, denominated in UD60x18, where 1e18 = 100%.\"},\"stake(uint256,address,uint256)\":{\"notice\":\"Stakes tokens deposited by a user in a vault, converting them to yield-bearing tokens.\"},\"transferFeesToComptroller()\":{\"notice\":\"Transfers the fees to the comptroller contract.\"},\"unstakeFullAmount(uint256)\":{\"notice\":\"Converts all yield-bearing tokens in a vault back to deposit tokens after settlement.\"},\"updateStakedTokenBalance(uint256,address,address,uint256,uint256)\":{\"notice\":\"Updates staked token balance of a user when vault shares are transferred. Requirements: - The caller must be the SablierBob contract. - `userShareBalanceBeforeTransfer` must not be zero. - The calculated wstETH transfer amount must not be zero.\"}},\"notice\":\"Interface for the Lido yield adapter that stakes WETH as wstETH and unstakes it via Curve.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISablierLidoAdapter.sol\":\"ISablierLidoAdapter\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@arbitrum/=node_modules/@arbitrum/\",\":@chainlink/=node_modules/@chainlink/\",\":@eth-optimism/=node_modules/@eth-optimism/\",\":@offchainlabs/=node_modules/@offchainlabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@prb/=node_modules/@prb/\",\":@sablier/=node_modules/@sablier/\",\":@scroll-tech/=node_modules/@scroll-tech/\",\":@zksync/=node_modules/@zksync/\",\":forge-std/=node_modules/forge-std/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol\":{\"keccak256\":\"0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196\",\"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA\"]},\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]},\"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol\":{\"keccak256\":\"0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621\",\"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL\"]},\"node_modules/@prb/math/src/Common.sol\":{\"keccak256\":\"0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05\",\"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42\"]},\"node_modules/@prb/math/src/UD60x18.sol\":{\"keccak256\":\"0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9\",\"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp\"]},\"node_modules/@prb/math/src/sd1x18/Casting.sol\":{\"keccak256\":\"0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11\",\"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu\"]},\"node_modules/@prb/math/src/sd1x18/Constants.sol\":{\"keccak256\":\"0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab\",\"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos\"]},\"node_modules/@prb/math/src/sd1x18/Errors.sol\":{\"keccak256\":\"0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca\",\"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE\"]},\"node_modules/@prb/math/src/sd1x18/ValueType.sol\":{\"keccak256\":\"0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353\",\"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6\"]},\"node_modules/@prb/math/src/sd21x18/Casting.sol\":{\"keccak256\":\"0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2\",\"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd\"]},\"node_modules/@prb/math/src/sd21x18/Constants.sol\":{\"keccak256\":\"0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396\",\"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3\"]},\"node_modules/@prb/math/src/sd21x18/Errors.sol\":{\"keccak256\":\"0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee\",\"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML\"]},\"node_modules/@prb/math/src/sd21x18/ValueType.sol\":{\"keccak256\":\"0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880\",\"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf\"]},\"node_modules/@prb/math/src/sd59x18/Casting.sol\":{\"keccak256\":\"0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d\",\"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n\"]},\"node_modules/@prb/math/src/sd59x18/Constants.sol\":{\"keccak256\":\"0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f\",\"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si\"]},\"node_modules/@prb/math/src/sd59x18/Errors.sol\":{\"keccak256\":\"0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf\",\"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk\"]},\"node_modules/@prb/math/src/sd59x18/Helpers.sol\":{\"keccak256\":\"0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed\",\"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD\"]},\"node_modules/@prb/math/src/sd59x18/Math.sol\":{\"keccak256\":\"0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462\",\"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD\"]},\"node_modules/@prb/math/src/sd59x18/ValueType.sol\":{\"keccak256\":\"0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919\",\"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb\"]},\"node_modules/@prb/math/src/ud21x18/Casting.sol\":{\"keccak256\":\"0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09\",\"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL\"]},\"node_modules/@prb/math/src/ud21x18/Constants.sol\":{\"keccak256\":\"0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60\",\"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV\"]},\"node_modules/@prb/math/src/ud21x18/Errors.sol\":{\"keccak256\":\"0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80\",\"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq\"]},\"node_modules/@prb/math/src/ud21x18/ValueType.sol\":{\"keccak256\":\"0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af\",\"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU\"]},\"node_modules/@prb/math/src/ud2x18/Casting.sol\":{\"keccak256\":\"0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae\",\"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL\"]},\"node_modules/@prb/math/src/ud2x18/Constants.sol\":{\"keccak256\":\"0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9\",\"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC\"]},\"node_modules/@prb/math/src/ud2x18/Errors.sol\":{\"keccak256\":\"0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437\",\"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i\"]},\"node_modules/@prb/math/src/ud2x18/ValueType.sol\":{\"keccak256\":\"0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41\",\"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs\"]},\"node_modules/@prb/math/src/ud60x18/Casting.sol\":{\"keccak256\":\"0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780\",\"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr\"]},\"node_modules/@prb/math/src/ud60x18/Constants.sol\":{\"keccak256\":\"0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b\",\"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5\"]},\"node_modules/@prb/math/src/ud60x18/Conversions.sol\":{\"keccak256\":\"0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932\",\"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY\"]},\"node_modules/@prb/math/src/ud60x18/Errors.sol\":{\"keccak256\":\"0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8\",\"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6\"]},\"node_modules/@prb/math/src/ud60x18/Helpers.sol\":{\"keccak256\":\"0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5\",\"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr\"]},\"node_modules/@prb/math/src/ud60x18/Math.sol\":{\"keccak256\":\"0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6\",\"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr\"]},\"node_modules/@prb/math/src/ud60x18/ValueType.sol\":{\"keccak256\":\"0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47\",\"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol\":{\"keccak256\":\"0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126\",\"dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol\":{\"keccak256\":\"0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b\",\"dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW\"]},\"node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol\":{\"keccak256\":\"0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4\",\"dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV\"]},\"node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol\":{\"keccak256\":\"0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c\",\"dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX\"]},\"src/interfaces/ISablierBobAdapter.sol\":{\"keccak256\":\"0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e\",\"dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK\"]},\"src/interfaces/ISablierLidoAdapter.sol\":{\"keccak256\":\"0xc2a3d5c6d05e2075c1ede792d8cfe610136a01b64485d37fcf1cb39d5f80a022\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://a95f4ebed1ec39c1e72c8fafb8d3aecd25d24afd18cc472b19cb48ab1f0673f0\",\"dweb:/ipfs/Qmc46CJR1jGRroqG6e9xLwnhGUMgZ6mJof5VYW4ebEqeKP\"]}},\"version\":1}",
346
+ "metadata": {
347
+ "compiler": { "version": "0.8.29+commit.ab55807c" },
348
+ "language": "Solidity",
349
+ "output": {
350
+ "abi": [
351
+ {
352
+ "inputs": [
353
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
354
+ { "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
355
+ { "internalType": "uint256", "name": "wstETHAmount", "type": "uint256", "indexed": false },
356
+ { "internalType": "uint256", "name": "stETHAmount", "type": "uint256", "indexed": false },
357
+ { "internalType": "uint256[]", "name": "withdrawalRequestIds", "type": "uint256[]", "indexed": false }
358
+ ],
359
+ "type": "event",
360
+ "name": "RequestLidoWithdrawal",
361
+ "anonymous": false
362
+ },
363
+ {
364
+ "inputs": [
365
+ {
366
+ "internalType": "contract ISablierComptroller",
367
+ "name": "oldComptroller",
368
+ "type": "address",
369
+ "indexed": false
370
+ },
371
+ {
372
+ "internalType": "contract ISablierComptroller",
373
+ "name": "newComptroller",
374
+ "type": "address",
375
+ "indexed": false
376
+ }
377
+ ],
378
+ "type": "event",
379
+ "name": "SetComptroller",
380
+ "anonymous": false
381
+ },
382
+ {
383
+ "inputs": [
384
+ { "internalType": "UD60x18", "name": "previousTolerance", "type": "uint256", "indexed": false },
385
+ { "internalType": "UD60x18", "name": "newTolerance", "type": "uint256", "indexed": false }
386
+ ],
387
+ "type": "event",
388
+ "name": "SetSlippageTolerance",
389
+ "anonymous": false
390
+ },
391
+ {
392
+ "inputs": [
393
+ { "internalType": "UD60x18", "name": "previousFee", "type": "uint256", "indexed": false },
394
+ { "internalType": "UD60x18", "name": "newFee", "type": "uint256", "indexed": false }
395
+ ],
396
+ "type": "event",
397
+ "name": "SetYieldFee",
398
+ "anonymous": false
399
+ },
400
+ {
401
+ "inputs": [
402
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
403
+ { "internalType": "address", "name": "user", "type": "address", "indexed": true },
404
+ { "internalType": "uint256", "name": "depositAmount", "type": "uint256", "indexed": false },
405
+ { "internalType": "uint256", "name": "wrappedStakedAmount", "type": "uint256", "indexed": false }
406
+ ],
407
+ "type": "event",
408
+ "name": "Stake",
409
+ "anonymous": false
410
+ },
411
+ {
412
+ "inputs": [
413
+ { "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
414
+ { "internalType": "uint256", "name": "feeAmount", "type": "uint256", "indexed": false }
415
+ ],
416
+ "type": "event",
417
+ "name": "TransferFeesToComptroller",
418
+ "anonymous": false
419
+ },
420
+ {
421
+ "inputs": [
422
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
423
+ { "internalType": "address", "name": "from", "type": "address", "indexed": true },
424
+ { "internalType": "address", "name": "to", "type": "address", "indexed": true },
425
+ { "internalType": "uint256", "name": "amount", "type": "uint256", "indexed": false }
426
+ ],
427
+ "type": "event",
428
+ "name": "TransferStakedTokens",
429
+ "anonymous": false
430
+ },
431
+ {
432
+ "inputs": [
433
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
434
+ { "internalType": "uint128", "name": "totalStakedAmount", "type": "uint128", "indexed": false },
435
+ { "internalType": "uint128", "name": "amountReceivedFromUnstaking", "type": "uint128", "indexed": false }
436
+ ],
437
+ "type": "event",
438
+ "name": "UnstakeFullAmount",
439
+ "anonymous": false
440
+ },
441
+ {
442
+ "inputs": [],
443
+ "stateMutability": "view",
444
+ "type": "function",
445
+ "name": "CURVE_POOL",
446
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
447
+ },
448
+ {
449
+ "inputs": [],
450
+ "stateMutability": "view",
451
+ "type": "function",
452
+ "name": "LIDO_WITHDRAWAL_QUEUE",
453
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
454
+ },
455
+ {
456
+ "inputs": [],
457
+ "stateMutability": "view",
458
+ "type": "function",
459
+ "name": "MAX_FEE",
460
+ "outputs": [{ "internalType": "UD60x18", "name": "", "type": "uint256" }]
461
+ },
462
+ {
463
+ "inputs": [],
464
+ "stateMutability": "view",
465
+ "type": "function",
466
+ "name": "MAX_SLIPPAGE_TOLERANCE",
467
+ "outputs": [{ "internalType": "UD60x18", "name": "", "type": "uint256" }]
468
+ },
469
+ {
470
+ "inputs": [],
471
+ "stateMutability": "view",
472
+ "type": "function",
473
+ "name": "SABLIER_BOB",
474
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
475
+ },
476
+ {
477
+ "inputs": [],
478
+ "stateMutability": "view",
479
+ "type": "function",
480
+ "name": "STETH",
481
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
482
+ },
483
+ {
484
+ "inputs": [],
485
+ "stateMutability": "view",
486
+ "type": "function",
487
+ "name": "STETH_ETH_ORACLE",
488
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
489
+ },
490
+ {
491
+ "inputs": [],
492
+ "stateMutability": "view",
493
+ "type": "function",
494
+ "name": "WETH",
495
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
496
+ },
497
+ {
498
+ "inputs": [],
499
+ "stateMutability": "view",
500
+ "type": "function",
501
+ "name": "WSTETH",
502
+ "outputs": [{ "internalType": "address", "name": "", "type": "address" }]
503
+ },
504
+ {
505
+ "inputs": [],
506
+ "stateMutability": "view",
507
+ "type": "function",
508
+ "name": "comptroller",
509
+ "outputs": [{ "internalType": "contract ISablierComptroller", "name": "", "type": "address" }]
510
+ },
511
+ {
512
+ "inputs": [],
513
+ "stateMutability": "view",
514
+ "type": "function",
515
+ "name": "feeOnYield",
516
+ "outputs": [{ "internalType": "UD60x18", "name": "", "type": "uint256" }]
517
+ },
518
+ {
519
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
520
+ "stateMutability": "view",
521
+ "type": "function",
522
+ "name": "getLidoWithdrawalRequestIds",
523
+ "outputs": [{ "internalType": "uint256[]", "name": "", "type": "uint256[]" }]
524
+ },
525
+ {
526
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
527
+ "stateMutability": "view",
528
+ "type": "function",
529
+ "name": "getTotalYieldBearingTokenBalance",
530
+ "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }]
531
+ },
532
+ {
533
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
534
+ "stateMutability": "view",
535
+ "type": "function",
536
+ "name": "getVaultYieldFee",
537
+ "outputs": [{ "internalType": "UD60x18", "name": "", "type": "uint256" }]
538
+ },
539
+ {
540
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
541
+ "stateMutability": "view",
542
+ "type": "function",
543
+ "name": "getWethReceivedAfterUnstaking",
544
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
545
+ },
546
+ {
547
+ "inputs": [
548
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
549
+ { "internalType": "address", "name": "user", "type": "address" }
550
+ ],
551
+ "stateMutability": "view",
552
+ "type": "function",
553
+ "name": "getYieldBearingTokenBalanceFor",
554
+ "outputs": [{ "internalType": "uint128", "name": "", "type": "uint128" }]
555
+ },
556
+ {
557
+ "inputs": [
558
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
559
+ { "internalType": "address", "name": "user", "type": "address" },
560
+ { "internalType": "uint128", "name": "shareBalance", "type": "uint128" }
561
+ ],
562
+ "stateMutability": "nonpayable",
563
+ "type": "function",
564
+ "name": "processRedemption",
565
+ "outputs": [
566
+ { "internalType": "uint128", "name": "transferAmount", "type": "uint128" },
567
+ { "internalType": "uint128", "name": "feeAmountDeductedFromYield", "type": "uint128" }
568
+ ]
569
+ },
570
+ {
571
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
572
+ "stateMutability": "nonpayable",
573
+ "type": "function",
574
+ "name": "registerVault"
575
+ },
576
+ {
577
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
578
+ "stateMutability": "nonpayable",
579
+ "type": "function",
580
+ "name": "requestLidoWithdrawal"
581
+ },
582
+ {
583
+ "inputs": [{ "internalType": "contract ISablierComptroller", "name": "newComptroller", "type": "address" }],
584
+ "stateMutability": "nonpayable",
585
+ "type": "function",
586
+ "name": "setComptroller"
587
+ },
588
+ {
589
+ "inputs": [{ "internalType": "UD60x18", "name": "newTolerance", "type": "uint256" }],
590
+ "stateMutability": "nonpayable",
591
+ "type": "function",
592
+ "name": "setSlippageTolerance"
593
+ },
594
+ {
595
+ "inputs": [{ "internalType": "UD60x18", "name": "newFee", "type": "uint256" }],
596
+ "stateMutability": "nonpayable",
597
+ "type": "function",
598
+ "name": "setYieldFee"
599
+ },
600
+ {
601
+ "inputs": [],
602
+ "stateMutability": "view",
603
+ "type": "function",
604
+ "name": "slippageTolerance",
605
+ "outputs": [{ "internalType": "UD60x18", "name": "", "type": "uint256" }]
606
+ },
607
+ {
608
+ "inputs": [
609
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
610
+ { "internalType": "address", "name": "user", "type": "address" },
611
+ { "internalType": "uint256", "name": "amount", "type": "uint256" }
612
+ ],
613
+ "stateMutability": "nonpayable",
614
+ "type": "function",
615
+ "name": "stake"
616
+ },
617
+ {
618
+ "inputs": [{ "internalType": "bytes4", "name": "interfaceId", "type": "bytes4" }],
619
+ "stateMutability": "view",
620
+ "type": "function",
621
+ "name": "supportsInterface",
622
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
623
+ },
624
+ { "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "transferFeesToComptroller" },
625
+ {
626
+ "inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
627
+ "stateMutability": "nonpayable",
628
+ "type": "function",
629
+ "name": "unstakeFullAmount",
630
+ "outputs": [
631
+ { "internalType": "uint128", "name": "wrappedTokenBalance", "type": "uint128" },
632
+ { "internalType": "uint128", "name": "amountReceivedFromUnstaking", "type": "uint128" }
633
+ ]
634
+ },
635
+ {
636
+ "inputs": [
637
+ { "internalType": "uint256", "name": "vaultId", "type": "uint256" },
638
+ { "internalType": "address", "name": "from", "type": "address" },
639
+ { "internalType": "address", "name": "to", "type": "address" },
640
+ { "internalType": "uint256", "name": "shareAmountTransferred", "type": "uint256" },
641
+ { "internalType": "uint256", "name": "userShareBalanceBeforeTransfer", "type": "uint256" }
642
+ ],
643
+ "stateMutability": "nonpayable",
644
+ "type": "function",
645
+ "name": "updateStakedTokenBalance"
646
+ }
647
+ ],
648
+ "devdoc": {
649
+ "kind": "dev",
650
+ "methods": {
651
+ "CURVE_POOL()": { "details": "This is an immutable state variable." },
652
+ "LIDO_WITHDRAWAL_QUEUE()": { "details": "This is an immutable state variable." },
653
+ "MAX_FEE()": { "details": "This is a constant state variable." },
654
+ "MAX_SLIPPAGE_TOLERANCE()": { "details": "This is a constant state variable." },
655
+ "SABLIER_BOB()": { "details": "This is an immutable state variable." },
656
+ "STETH()": { "details": "This is an immutable state variable." },
657
+ "STETH_ETH_ORACLE()": { "details": "This is an immutable state variable." },
658
+ "WETH()": { "details": "This is an immutable state variable." },
659
+ "WSTETH()": { "details": "This is an immutable state variable." },
660
+ "getLidoWithdrawalRequestIds(uint256)": {
661
+ "details": "Multiple request IDs may be generated for a vault if the total amount exceeds the Lido enforced per-withdrawal limit."
662
+ },
663
+ "getTotalYieldBearingTokenBalance(uint256)": {
664
+ "params": { "vaultId": "The ID of the vault." },
665
+ "returns": { "_0": "The total amount of yield-bearing tokens in the vault." }
666
+ },
667
+ "getVaultYieldFee(uint256)": {
668
+ "params": { "vaultId": "The ID of the vault." },
669
+ "returns": { "_0": "The yield fee for the vault denominated in UD60x18, where 1e18 = 100%." }
670
+ },
671
+ "getWethReceivedAfterUnstaking(uint256)": { "params": { "vaultId": "The ID of the vault." } },
672
+ "getYieldBearingTokenBalanceFor(uint256,address)": {
673
+ "params": { "user": "The address of the user.", "vaultId": "The ID of the vault." },
674
+ "returns": { "_0": "The amount of yield-bearing tokens the user has claim to." }
675
+ },
676
+ "processRedemption(uint256,address,uint128)": {
677
+ "params": {
678
+ "shareBalance": "The user's share balance in the vault.",
679
+ "user": "The address of the user.",
680
+ "vaultId": "The ID of the vault."
681
+ },
682
+ "returns": {
683
+ "feeAmountDeductedFromYield": "The fee amount taken from the yield.",
684
+ "transferAmount": "The amount to transfer to the user."
685
+ }
686
+ },
687
+ "registerVault(uint256)": { "params": { "vaultId": "The ID of the newly created vault." } },
688
+ "requestLidoWithdrawal(uint256)": {
689
+ "details": "Emits a {RequestLidoWithdrawal} event. Notes: - This unwraps the vault's wstETH to stETH and submits it to Lido's withdrawal queue. - Once called, the Curve swap is permanently disabled for `vaultId`. - After the queue finalizes the withdrawal, ETH can be redeemed by calling {unstakeFullAmount}. - Large amounts are automatically split into multiple requests to comply with Lido's per-request limit. Requirements: - The caller must be the comptroller. - The status of the vault must not be ACTIVE. - The vault must still be staked in the adapter (not already unstaked via Curve). - A withdrawal request must not have already been requested for this vault. - The vault must have wstETH to withdraw. - The total amount to withdraw must not be less than the minimum amount per request.",
690
+ "params": { "vaultId": "The ID of the vault." }
691
+ },
692
+ "setComptroller(address)": {
693
+ "details": "Emits a {SetComptroller} event. Requirements: - `msg.sender` must be the current comptroller. - The new comptroller must return `true` from {supportsInterface} with the comptroller's minimal interface ID which is defined as the XOR of the following function selectors: 1. {calculateMinFeeWeiFor} 2. {convertUSDFeeToWei} 3. {execute} 4. {getMinFeeUSDFor}",
694
+ "params": { "newComptroller": "The address of the new comptroller contract." }
695
+ },
696
+ "setSlippageTolerance(uint256)": {
697
+ "details": "Emits a {SetSlippageTolerance} event. Notes: - This affects all vaults. Requirements: - The caller must be the comptroller. - `newSlippageTolerance` must not exceed MAX_SLIPPAGE_TOLERANCE.",
698
+ "params": { "newTolerance": "The new slippage tolerance as UD60x18." }
699
+ },
700
+ "setYieldFee(uint256)": {
701
+ "details": "Emits a {SetYieldFee} event. Notes: - This only affects future vaults, fee is not updated for existing vaults. Requirements: - The caller must be the comptroller. - `newFee` must not exceed MAX_FEE.",
702
+ "params": { "newFee": "The new yield fee as UD60x18 where 1e18 = 100%." }
703
+ },
704
+ "stake(uint256,address,uint256)": {
705
+ "details": "Emits a {Stake} event. Requirements: - The caller must be the SablierBob contract. - The tokens must have been transferred to this contract.",
706
+ "params": {
707
+ "amount": "The amount of tokens to stake.",
708
+ "user": "The address of the user depositing the tokens.",
709
+ "vaultId": "The ID of the vault."
710
+ }
711
+ },
712
+ "supportsInterface(bytes4)": {
713
+ "details": "Returns true if this contract implements the interface defined by `interfaceId`. See the corresponding https://eips.ethereum.org/EIPS/eip-165#how-interfaces-are-identified[ERC section] to learn more about how these ids are created. This function call must use less than 30 000 gas."
714
+ },
715
+ "transferFeesToComptroller()": { "details": "Emits a {TransferFeesToComptroller} event." },
716
+ "unstakeFullAmount(uint256)": {
717
+ "details": "Emits an {UnstakeFullAmount} event. Notes: - This should only be called once per vault after settlement. Requirements: - The caller must be the SablierBob contract.",
718
+ "params": { "vaultId": "The ID of the vault." },
719
+ "returns": {
720
+ "amountReceivedFromUnstaking": "The total amount of tokens received from unstaking the yield-bearing tokens.",
721
+ "wrappedTokenBalance": "The total amount of yield-bearing tokens that were in the vault."
722
+ }
723
+ },
724
+ "updateStakedTokenBalance(uint256,address,address,uint256,uint256)": {
725
+ "params": {
726
+ "from": "The address transferring vault shares.",
727
+ "shareAmountTransferred": "The number of vault shares being transferred.",
728
+ "to": "The address receiving vault shares.",
729
+ "userShareBalanceBeforeTransfer": "The sender's vault share balance before the transfer.",
730
+ "vaultId": "The ID of the vault."
731
+ }
732
+ }
733
+ },
734
+ "version": 1
735
+ },
736
+ "userdoc": {
737
+ "kind": "user",
738
+ "methods": {
739
+ "CURVE_POOL()": { "notice": "Returns the address of the Curve stETH/ETH pool." },
740
+ "LIDO_WITHDRAWAL_QUEUE()": { "notice": "Returns the address of the Lido withdrawal queue contract." },
741
+ "MAX_FEE()": { "notice": "Returns the maximum yield fee, denominated in UD60x18, where 1e18 = 100%." },
742
+ "MAX_SLIPPAGE_TOLERANCE()": {
743
+ "notice": "Returns the maximum slippage tolerance that can be set, denominated in UD60x18, where 1e18 = 100%."
744
+ },
745
+ "SABLIER_BOB()": { "notice": "Returns the address of the SablierBob contract." },
746
+ "STETH()": { "notice": "Returns the address of the stETH contract." },
747
+ "STETH_ETH_ORACLE()": {
748
+ "notice": "Returns the address of the Chainlink stETH/ETH oracle used in the calculation of `minEthOut` slippage."
749
+ },
750
+ "WETH()": { "notice": "Returns the address of the WETH contract." },
751
+ "WSTETH()": { "notice": "Returns the address of the wstETH contract." },
752
+ "comptroller()": { "notice": "Retrieves the address of the comptroller contract." },
753
+ "feeOnYield()": {
754
+ "notice": "Returns the current global fee on yield for new vaults, denominated in UD60x18, where 1e18 = 100%."
755
+ },
756
+ "getLidoWithdrawalRequestIds(uint256)": { "notice": "Returns the Lido withdrawal request IDs for a vault." },
757
+ "getTotalYieldBearingTokenBalance(uint256)": {
758
+ "notice": "Returns the total amount of yield-bearing tokens held in a vault."
759
+ },
760
+ "getVaultYieldFee(uint256)": { "notice": "Returns the yield fee stored for a specific vault." },
761
+ "getWethReceivedAfterUnstaking(uint256)": {
762
+ "notice": "Returns the total WETH received after unstaking for a vault."
763
+ },
764
+ "getYieldBearingTokenBalanceFor(uint256,address)": {
765
+ "notice": "Returns the amount of yield-bearing tokens held for a specific user in a vault."
766
+ },
767
+ "processRedemption(uint256,address,uint128)": {
768
+ "notice": "Processes a user's token redemption by calculating the transfer amount, clearing the user's yield-bearing token balance, and returning the amounts. Notes: - The user's yield-bearing token balance is decremented after calculating the transfer amount. This does not decrement the vault total as it is used in the calculation of the transfer amount for other users. Requirements: - The caller must be the SablierBob contract."
769
+ },
770
+ "registerVault(uint256)": {
771
+ "notice": "Register a new vault with the adapter and snapshot the current fee on yield. Requirements: - The caller must be the SablierBob contract."
772
+ },
773
+ "requestLidoWithdrawal(uint256)": {
774
+ "notice": "Requests a native Lido withdrawal for a vault's staked tokens, bypassing the Curve swap."
775
+ },
776
+ "setComptroller(address)": { "notice": "Sets the comptroller to a new address." },
777
+ "setSlippageTolerance(uint256)": { "notice": "Sets the slippage tolerance for Curve swaps." },
778
+ "setYieldFee(uint256)": { "notice": "Sets the fee on yield for future vaults." },
779
+ "slippageTolerance()": {
780
+ "notice": "Returns the current slippage tolerance for Curve swaps, denominated in UD60x18, where 1e18 = 100%."
781
+ },
782
+ "stake(uint256,address,uint256)": {
783
+ "notice": "Stakes tokens deposited by a user in a vault, converting them to yield-bearing tokens."
784
+ },
785
+ "transferFeesToComptroller()": { "notice": "Transfers the fees to the comptroller contract." },
786
+ "unstakeFullAmount(uint256)": {
787
+ "notice": "Converts all yield-bearing tokens in a vault back to deposit tokens after settlement."
788
+ },
789
+ "updateStakedTokenBalance(uint256,address,address,uint256,uint256)": {
790
+ "notice": "Updates staked token balance of a user when vault shares are transferred. Requirements: - The caller must be the SablierBob contract. - `userShareBalanceBeforeTransfer` must not be zero. - The calculated wstETH transfer amount must not be zero."
791
+ }
792
+ },
793
+ "version": 1
794
+ }
795
+ },
796
+ "settings": {
797
+ "remappings": [
798
+ "@arbitrum/=node_modules/@arbitrum/",
799
+ "@chainlink/=node_modules/@chainlink/",
800
+ "@eth-optimism/=node_modules/@eth-optimism/",
801
+ "@offchainlabs/=node_modules/@offchainlabs/",
802
+ "@openzeppelin/=node_modules/@openzeppelin/",
803
+ "@prb/=node_modules/@prb/",
804
+ "@sablier/=node_modules/@sablier/",
805
+ "@scroll-tech/=node_modules/@scroll-tech/",
806
+ "@zksync/=node_modules/@zksync/",
807
+ "forge-std/=node_modules/forge-std/"
808
+ ],
809
+ "optimizer": { "enabled": true, "runs": 1000000 },
810
+ "metadata": { "bytecodeHash": "ipfs" },
811
+ "compilationTarget": { "src/interfaces/ISablierLidoAdapter.sol": "ISablierLidoAdapter" },
812
+ "evmVersion": "shanghai",
813
+ "libraries": {},
814
+ "viaIR": true
815
+ },
816
+ "sources": {
817
+ "node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
818
+ "keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
819
+ "urls": [
820
+ "bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
821
+ "dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
822
+ ],
823
+ "license": "MIT"
824
+ },
825
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
826
+ "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
827
+ "urls": [
828
+ "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
829
+ "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
830
+ ],
831
+ "license": "MIT"
832
+ },
833
+ "node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
834
+ "keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8",
835
+ "urls": [
836
+ "bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621",
837
+ "dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"
838
+ ],
839
+ "license": "MIT"
840
+ },
841
+ "node_modules/@prb/math/src/Common.sol": {
842
+ "keccak256": "0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99",
843
+ "urls": [
844
+ "bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05",
845
+ "dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42"
846
+ ],
847
+ "license": "MIT"
848
+ },
849
+ "node_modules/@prb/math/src/UD60x18.sol": {
850
+ "keccak256": "0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48",
851
+ "urls": [
852
+ "bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9",
853
+ "dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp"
854
+ ],
855
+ "license": "MIT"
856
+ },
857
+ "node_modules/@prb/math/src/sd1x18/Casting.sol": {
858
+ "keccak256": "0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c",
859
+ "urls": [
860
+ "bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11",
861
+ "dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu"
862
+ ],
863
+ "license": "MIT"
864
+ },
865
+ "node_modules/@prb/math/src/sd1x18/Constants.sol": {
866
+ "keccak256": "0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8",
867
+ "urls": [
868
+ "bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab",
869
+ "dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos"
870
+ ],
871
+ "license": "MIT"
872
+ },
873
+ "node_modules/@prb/math/src/sd1x18/Errors.sol": {
874
+ "keccak256": "0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6",
875
+ "urls": [
876
+ "bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca",
877
+ "dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE"
878
+ ],
879
+ "license": "MIT"
880
+ },
881
+ "node_modules/@prb/math/src/sd1x18/ValueType.sol": {
882
+ "keccak256": "0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0",
883
+ "urls": [
884
+ "bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353",
885
+ "dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6"
886
+ ],
887
+ "license": "MIT"
888
+ },
889
+ "node_modules/@prb/math/src/sd21x18/Casting.sol": {
890
+ "keccak256": "0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36",
891
+ "urls": [
892
+ "bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2",
893
+ "dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd"
894
+ ],
895
+ "license": "MIT"
896
+ },
897
+ "node_modules/@prb/math/src/sd21x18/Constants.sol": {
898
+ "keccak256": "0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4",
899
+ "urls": [
900
+ "bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396",
901
+ "dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3"
902
+ ],
903
+ "license": "MIT"
904
+ },
905
+ "node_modules/@prb/math/src/sd21x18/Errors.sol": {
906
+ "keccak256": "0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a",
907
+ "urls": [
908
+ "bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee",
909
+ "dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML"
910
+ ],
911
+ "license": "MIT"
912
+ },
913
+ "node_modules/@prb/math/src/sd21x18/ValueType.sol": {
914
+ "keccak256": "0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092",
915
+ "urls": [
916
+ "bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880",
917
+ "dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf"
918
+ ],
919
+ "license": "MIT"
920
+ },
921
+ "node_modules/@prb/math/src/sd59x18/Casting.sol": {
922
+ "keccak256": "0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39",
923
+ "urls": [
924
+ "bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d",
925
+ "dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n"
926
+ ],
927
+ "license": "MIT"
928
+ },
929
+ "node_modules/@prb/math/src/sd59x18/Constants.sol": {
930
+ "keccak256": "0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a",
931
+ "urls": [
932
+ "bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f",
933
+ "dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si"
934
+ ],
935
+ "license": "MIT"
936
+ },
937
+ "node_modules/@prb/math/src/sd59x18/Errors.sol": {
938
+ "keccak256": "0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2",
939
+ "urls": [
940
+ "bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf",
941
+ "dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk"
942
+ ],
943
+ "license": "MIT"
944
+ },
945
+ "node_modules/@prb/math/src/sd59x18/Helpers.sol": {
946
+ "keccak256": "0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716",
947
+ "urls": [
948
+ "bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed",
949
+ "dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD"
950
+ ],
951
+ "license": "MIT"
952
+ },
953
+ "node_modules/@prb/math/src/sd59x18/Math.sol": {
954
+ "keccak256": "0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84",
955
+ "urls": [
956
+ "bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462",
957
+ "dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD"
958
+ ],
959
+ "license": "MIT"
960
+ },
961
+ "node_modules/@prb/math/src/sd59x18/ValueType.sol": {
962
+ "keccak256": "0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d",
963
+ "urls": [
964
+ "bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919",
965
+ "dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb"
966
+ ],
967
+ "license": "MIT"
968
+ },
969
+ "node_modules/@prb/math/src/ud21x18/Casting.sol": {
970
+ "keccak256": "0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65",
971
+ "urls": [
972
+ "bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09",
973
+ "dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL"
974
+ ],
975
+ "license": "MIT"
976
+ },
977
+ "node_modules/@prb/math/src/ud21x18/Constants.sol": {
978
+ "keccak256": "0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601",
979
+ "urls": [
980
+ "bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60",
981
+ "dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV"
982
+ ],
983
+ "license": "MIT"
984
+ },
985
+ "node_modules/@prb/math/src/ud21x18/Errors.sol": {
986
+ "keccak256": "0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415",
987
+ "urls": [
988
+ "bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80",
989
+ "dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq"
990
+ ],
991
+ "license": "MIT"
992
+ },
993
+ "node_modules/@prb/math/src/ud21x18/ValueType.sol": {
994
+ "keccak256": "0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25",
995
+ "urls": [
996
+ "bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af",
997
+ "dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU"
998
+ ],
999
+ "license": "MIT"
1000
+ },
1001
+ "node_modules/@prb/math/src/ud2x18/Casting.sol": {
1002
+ "keccak256": "0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6",
1003
+ "urls": [
1004
+ "bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae",
1005
+ "dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL"
1006
+ ],
1007
+ "license": "MIT"
1008
+ },
1009
+ "node_modules/@prb/math/src/ud2x18/Constants.sol": {
1010
+ "keccak256": "0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc",
1011
+ "urls": [
1012
+ "bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9",
1013
+ "dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC"
1014
+ ],
1015
+ "license": "MIT"
1016
+ },
1017
+ "node_modules/@prb/math/src/ud2x18/Errors.sol": {
1018
+ "keccak256": "0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd",
1019
+ "urls": [
1020
+ "bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437",
1021
+ "dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i"
1022
+ ],
1023
+ "license": "MIT"
1024
+ },
1025
+ "node_modules/@prb/math/src/ud2x18/ValueType.sol": {
1026
+ "keccak256": "0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0",
1027
+ "urls": [
1028
+ "bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41",
1029
+ "dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs"
1030
+ ],
1031
+ "license": "MIT"
1032
+ },
1033
+ "node_modules/@prb/math/src/ud60x18/Casting.sol": {
1034
+ "keccak256": "0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6",
1035
+ "urls": [
1036
+ "bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780",
1037
+ "dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr"
1038
+ ],
1039
+ "license": "MIT"
1040
+ },
1041
+ "node_modules/@prb/math/src/ud60x18/Constants.sol": {
1042
+ "keccak256": "0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90",
1043
+ "urls": [
1044
+ "bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b",
1045
+ "dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5"
1046
+ ],
1047
+ "license": "MIT"
1048
+ },
1049
+ "node_modules/@prb/math/src/ud60x18/Conversions.sol": {
1050
+ "keccak256": "0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2",
1051
+ "urls": [
1052
+ "bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932",
1053
+ "dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY"
1054
+ ],
1055
+ "license": "MIT"
1056
+ },
1057
+ "node_modules/@prb/math/src/ud60x18/Errors.sol": {
1058
+ "keccak256": "0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044",
1059
+ "urls": [
1060
+ "bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8",
1061
+ "dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6"
1062
+ ],
1063
+ "license": "MIT"
1064
+ },
1065
+ "node_modules/@prb/math/src/ud60x18/Helpers.sol": {
1066
+ "keccak256": "0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268",
1067
+ "urls": [
1068
+ "bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5",
1069
+ "dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr"
1070
+ ],
1071
+ "license": "MIT"
1072
+ },
1073
+ "node_modules/@prb/math/src/ud60x18/Math.sol": {
1074
+ "keccak256": "0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc",
1075
+ "urls": [
1076
+ "bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6",
1077
+ "dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr"
1078
+ ],
1079
+ "license": "MIT"
1080
+ },
1081
+ "node_modules/@prb/math/src/ud60x18/ValueType.sol": {
1082
+ "keccak256": "0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3",
1083
+ "urls": [
1084
+ "bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47",
1085
+ "dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n"
1086
+ ],
1087
+ "license": "MIT"
1088
+ },
1089
+ "node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol": {
1090
+ "keccak256": "0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26",
1091
+ "urls": [
1092
+ "bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126",
1093
+ "dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4"
1094
+ ],
1095
+ "license": "GPL-3.0-or-later"
1096
+ },
1097
+ "node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol": {
1098
+ "keccak256": "0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522",
1099
+ "urls": [
1100
+ "bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b",
1101
+ "dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW"
1102
+ ],
1103
+ "license": "GPL-3.0-or-later"
1104
+ },
1105
+ "node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol": {
1106
+ "keccak256": "0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825",
1107
+ "urls": [
1108
+ "bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4",
1109
+ "dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV"
1110
+ ],
1111
+ "license": "GPL-3.0-or-later"
1112
+ },
1113
+ "node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol": {
1114
+ "keccak256": "0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba",
1115
+ "urls": [
1116
+ "bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c",
1117
+ "dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX"
1118
+ ],
1119
+ "license": "GPL-3.0-or-later"
1120
+ },
1121
+ "src/interfaces/ISablierBobAdapter.sol": {
1122
+ "keccak256": "0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921",
1123
+ "urls": [
1124
+ "bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e",
1125
+ "dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK"
1126
+ ],
1127
+ "license": "GPL-3.0-or-later"
1128
+ },
1129
+ "src/interfaces/ISablierLidoAdapter.sol": {
1130
+ "keccak256": "0xc2a3d5c6d05e2075c1ede792d8cfe610136a01b64485d37fcf1cb39d5f80a022",
1131
+ "urls": [
1132
+ "bzz-raw://a95f4ebed1ec39c1e72c8fafb8d3aecd25d24afd18cc472b19cb48ab1f0673f0",
1133
+ "dweb:/ipfs/Qmc46CJR1jGRroqG6e9xLwnhGUMgZ6mJof5VYW4ebEqeKP"
1134
+ ],
1135
+ "license": "GPL-3.0-or-later"
1136
+ }
1137
+ },
1138
+ "version": 1
1139
+ },
1140
+ "id": 92
1141
+ }