@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.
- package/CHANGELOG.md +19 -0
- package/LICENSE-BUSL.md +82 -0
- package/LICENSE-GPL.md +470 -0
- package/LICENSE.md +9 -0
- package/README.md +81 -0
- package/artifacts/BobVaultShare.json +936 -0
- package/artifacts/SablierBob.json +1683 -0
- package/artifacts/SablierEscrow.json +1316 -0
- package/artifacts/SablierLidoAdapter.json +1649 -0
- package/artifacts/erc20/IERC20.json +226 -0
- package/artifacts/interfaces/IBobVaultShare.json +393 -0
- package/artifacts/interfaces/ISablierBob.json +1171 -0
- package/artifacts/interfaces/ISablierEscrow.json +999 -0
- package/artifacts/interfaces/ISablierLidoAdapter.json +1141 -0
- package/artifacts/interfaces/external/ICurveStETHPool.json +128 -0
- package/artifacts/interfaces/external/ILidoWithdrawalQueue.json +209 -0
- package/artifacts/interfaces/external/IStETH.json +262 -0
- package/artifacts/interfaces/external/IWETH9.json +259 -0
- package/artifacts/interfaces/external/IWstETH.json +311 -0
- package/artifacts/libraries/Errors.json +868 -0
- package/package.json +68 -0
- package/src/BobVaultShare.sol +119 -0
- package/src/SablierBob.sol +543 -0
- package/src/SablierEscrow.sol +288 -0
- package/src/SablierLidoAdapter.sol +549 -0
- package/src/abstracts/SablierBobState.sol +156 -0
- package/src/abstracts/SablierEscrowState.sol +159 -0
- package/src/interfaces/IBobVaultShare.sol +51 -0
- package/src/interfaces/ISablierBob.sol +261 -0
- package/src/interfaces/ISablierBobAdapter.sol +157 -0
- package/src/interfaces/ISablierBobState.sol +74 -0
- package/src/interfaces/ISablierEscrow.sol +148 -0
- package/src/interfaces/ISablierEscrowState.sol +77 -0
- package/src/interfaces/ISablierLidoAdapter.sol +110 -0
- package/src/interfaces/external/ICurveStETHPool.sol +31 -0
- package/src/interfaces/external/ILidoWithdrawalQueue.sol +67 -0
- package/src/interfaces/external/IStETH.sol +18 -0
- package/src/interfaces/external/IWETH9.sol +19 -0
- package/src/interfaces/external/IWstETH.sol +32 -0
- package/src/libraries/Errors.sol +189 -0
- package/src/types/Bob.sol +49 -0
- package/src/types/Escrow.sol +49 -0
|
@@ -0,0 +1,1171 @@
|
|
|
1
|
+
{
|
|
2
|
+
"abi": [
|
|
3
|
+
{
|
|
4
|
+
"type": "function",
|
|
5
|
+
"name": "calculateMinFeeWei",
|
|
6
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
7
|
+
"outputs": [{ "name": "minFeeWei", "type": "uint256", "internalType": "uint256" }],
|
|
8
|
+
"stateMutability": "view"
|
|
9
|
+
},
|
|
10
|
+
{
|
|
11
|
+
"type": "function",
|
|
12
|
+
"name": "comptroller",
|
|
13
|
+
"inputs": [],
|
|
14
|
+
"outputs": [{ "name": "", "type": "address", "internalType": "contract ISablierComptroller" }],
|
|
15
|
+
"stateMutability": "view"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"type": "function",
|
|
19
|
+
"name": "createVault",
|
|
20
|
+
"inputs": [
|
|
21
|
+
{ "name": "token", "type": "address", "internalType": "contract IERC20" },
|
|
22
|
+
{ "name": "oracle", "type": "address", "internalType": "contract AggregatorV3Interface" },
|
|
23
|
+
{ "name": "expiry", "type": "uint40", "internalType": "uint40" },
|
|
24
|
+
{ "name": "targetPrice", "type": "uint128", "internalType": "uint128" }
|
|
25
|
+
],
|
|
26
|
+
"outputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
27
|
+
"stateMutability": "nonpayable"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "function",
|
|
31
|
+
"name": "enter",
|
|
32
|
+
"inputs": [
|
|
33
|
+
{ "name": "vaultId", "type": "uint256", "internalType": "uint256" },
|
|
34
|
+
{ "name": "amount", "type": "uint128", "internalType": "uint128" }
|
|
35
|
+
],
|
|
36
|
+
"outputs": [],
|
|
37
|
+
"stateMutability": "nonpayable"
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
"type": "function",
|
|
41
|
+
"name": "enterWithNativeToken",
|
|
42
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
43
|
+
"outputs": [],
|
|
44
|
+
"stateMutability": "payable"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
"type": "function",
|
|
48
|
+
"name": "getAdapter",
|
|
49
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
50
|
+
"outputs": [{ "name": "adapter", "type": "address", "internalType": "contract ISablierBobAdapter" }],
|
|
51
|
+
"stateMutability": "view"
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
"type": "function",
|
|
55
|
+
"name": "getDefaultAdapterFor",
|
|
56
|
+
"inputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
|
|
57
|
+
"outputs": [{ "name": "adapter", "type": "address", "internalType": "contract ISablierBobAdapter" }],
|
|
58
|
+
"stateMutability": "view"
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
"type": "function",
|
|
62
|
+
"name": "getExpiry",
|
|
63
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
64
|
+
"outputs": [{ "name": "expiry", "type": "uint40", "internalType": "uint40" }],
|
|
65
|
+
"stateMutability": "view"
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
"type": "function",
|
|
69
|
+
"name": "getLastSyncedAt",
|
|
70
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
71
|
+
"outputs": [{ "name": "lastSyncedAt", "type": "uint40", "internalType": "uint40" }],
|
|
72
|
+
"stateMutability": "view"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"type": "function",
|
|
76
|
+
"name": "getLastSyncedPrice",
|
|
77
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
78
|
+
"outputs": [{ "name": "lastSyncedPrice", "type": "uint128", "internalType": "uint128" }],
|
|
79
|
+
"stateMutability": "view"
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
"type": "function",
|
|
83
|
+
"name": "getOracle",
|
|
84
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
85
|
+
"outputs": [{ "name": "oracle", "type": "address", "internalType": "contract AggregatorV3Interface" }],
|
|
86
|
+
"stateMutability": "view"
|
|
87
|
+
},
|
|
88
|
+
{
|
|
89
|
+
"type": "function",
|
|
90
|
+
"name": "getShareToken",
|
|
91
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
92
|
+
"outputs": [{ "name": "shareToken", "type": "address", "internalType": "contract IBobVaultShare" }],
|
|
93
|
+
"stateMutability": "view"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"type": "function",
|
|
97
|
+
"name": "getTargetPrice",
|
|
98
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
99
|
+
"outputs": [{ "name": "targetPrice", "type": "uint128", "internalType": "uint128" }],
|
|
100
|
+
"stateMutability": "view"
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
"type": "function",
|
|
104
|
+
"name": "getUnderlyingToken",
|
|
105
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
106
|
+
"outputs": [{ "name": "token", "type": "address", "internalType": "contract IERC20" }],
|
|
107
|
+
"stateMutability": "view"
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
"type": "function",
|
|
111
|
+
"name": "isStakedInAdapter",
|
|
112
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
113
|
+
"outputs": [{ "name": "stakedInAdapter", "type": "bool", "internalType": "bool" }],
|
|
114
|
+
"stateMutability": "view"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"type": "function",
|
|
118
|
+
"name": "nativeToken",
|
|
119
|
+
"inputs": [],
|
|
120
|
+
"outputs": [{ "name": "", "type": "address", "internalType": "address" }],
|
|
121
|
+
"stateMutability": "view"
|
|
122
|
+
},
|
|
123
|
+
{
|
|
124
|
+
"type": "function",
|
|
125
|
+
"name": "nextVaultId",
|
|
126
|
+
"inputs": [],
|
|
127
|
+
"outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
|
|
128
|
+
"stateMutability": "view"
|
|
129
|
+
},
|
|
130
|
+
{
|
|
131
|
+
"type": "function",
|
|
132
|
+
"name": "onShareTransfer",
|
|
133
|
+
"inputs": [
|
|
134
|
+
{ "name": "vaultId", "type": "uint256", "internalType": "uint256" },
|
|
135
|
+
{ "name": "from", "type": "address", "internalType": "address" },
|
|
136
|
+
{ "name": "to", "type": "address", "internalType": "address" },
|
|
137
|
+
{ "name": "amount", "type": "uint256", "internalType": "uint256" },
|
|
138
|
+
{ "name": "fromBalanceBefore", "type": "uint256", "internalType": "uint256" }
|
|
139
|
+
],
|
|
140
|
+
"outputs": [],
|
|
141
|
+
"stateMutability": "nonpayable"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"type": "function",
|
|
145
|
+
"name": "redeem",
|
|
146
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
147
|
+
"outputs": [
|
|
148
|
+
{ "name": "transferAmount", "type": "uint128", "internalType": "uint128" },
|
|
149
|
+
{ "name": "feeAmountDeductedFromYield", "type": "uint128", "internalType": "uint128" }
|
|
150
|
+
],
|
|
151
|
+
"stateMutability": "payable"
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
"type": "function",
|
|
155
|
+
"name": "setComptroller",
|
|
156
|
+
"inputs": [{ "name": "newComptroller", "type": "address", "internalType": "contract ISablierComptroller" }],
|
|
157
|
+
"outputs": [],
|
|
158
|
+
"stateMutability": "nonpayable"
|
|
159
|
+
},
|
|
160
|
+
{
|
|
161
|
+
"type": "function",
|
|
162
|
+
"name": "setDefaultAdapter",
|
|
163
|
+
"inputs": [
|
|
164
|
+
{ "name": "token", "type": "address", "internalType": "contract IERC20" },
|
|
165
|
+
{ "name": "newAdapter", "type": "address", "internalType": "contract ISablierBobAdapter" }
|
|
166
|
+
],
|
|
167
|
+
"outputs": [],
|
|
168
|
+
"stateMutability": "nonpayable"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"type": "function",
|
|
172
|
+
"name": "setNativeToken",
|
|
173
|
+
"inputs": [{ "name": "newNativeToken", "type": "address", "internalType": "address" }],
|
|
174
|
+
"outputs": [],
|
|
175
|
+
"stateMutability": "nonpayable"
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
"type": "function",
|
|
179
|
+
"name": "statusOf",
|
|
180
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
181
|
+
"outputs": [{ "name": "status", "type": "uint8", "internalType": "enum Bob.Status" }],
|
|
182
|
+
"stateMutability": "view"
|
|
183
|
+
},
|
|
184
|
+
{
|
|
185
|
+
"type": "function",
|
|
186
|
+
"name": "syncPriceFromOracle",
|
|
187
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
188
|
+
"outputs": [{ "name": "latestPrice", "type": "uint128", "internalType": "uint128" }],
|
|
189
|
+
"stateMutability": "nonpayable"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"type": "function",
|
|
193
|
+
"name": "transferFeesToComptroller",
|
|
194
|
+
"inputs": [],
|
|
195
|
+
"outputs": [],
|
|
196
|
+
"stateMutability": "nonpayable"
|
|
197
|
+
},
|
|
198
|
+
{
|
|
199
|
+
"type": "function",
|
|
200
|
+
"name": "unstakeTokensViaAdapter",
|
|
201
|
+
"inputs": [{ "name": "vaultId", "type": "uint256", "internalType": "uint256" }],
|
|
202
|
+
"outputs": [{ "name": "amountReceivedFromAdapter", "type": "uint128", "internalType": "uint128" }],
|
|
203
|
+
"stateMutability": "nonpayable"
|
|
204
|
+
},
|
|
205
|
+
{
|
|
206
|
+
"type": "event",
|
|
207
|
+
"name": "CreateVault",
|
|
208
|
+
"inputs": [
|
|
209
|
+
{ "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
|
|
210
|
+
{ "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
|
|
211
|
+
{ "name": "oracle", "type": "address", "indexed": true, "internalType": "contract AggregatorV3Interface" },
|
|
212
|
+
{ "name": "adapter", "type": "address", "indexed": false, "internalType": "contract ISablierBobAdapter" },
|
|
213
|
+
{ "name": "shareToken", "type": "address", "indexed": false, "internalType": "contract IBobVaultShare" },
|
|
214
|
+
{ "name": "targetPrice", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
215
|
+
{ "name": "expiry", "type": "uint40", "indexed": false, "internalType": "uint40" }
|
|
216
|
+
],
|
|
217
|
+
"anonymous": false
|
|
218
|
+
},
|
|
219
|
+
{
|
|
220
|
+
"type": "event",
|
|
221
|
+
"name": "Enter",
|
|
222
|
+
"inputs": [
|
|
223
|
+
{ "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
|
|
224
|
+
{ "name": "user", "type": "address", "indexed": true, "internalType": "address" },
|
|
225
|
+
{ "name": "amountReceived", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
226
|
+
{ "name": "sharesMinted", "type": "uint128", "indexed": false, "internalType": "uint128" }
|
|
227
|
+
],
|
|
228
|
+
"anonymous": false
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"type": "event",
|
|
232
|
+
"name": "Redeem",
|
|
233
|
+
"inputs": [
|
|
234
|
+
{ "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
|
|
235
|
+
{ "name": "user", "type": "address", "indexed": true, "internalType": "address" },
|
|
236
|
+
{ "name": "amountReceived", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
237
|
+
{ "name": "sharesBurned", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
238
|
+
{ "name": "fee", "type": "uint256", "indexed": false, "internalType": "uint256" }
|
|
239
|
+
],
|
|
240
|
+
"anonymous": false
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"type": "event",
|
|
244
|
+
"name": "SetComptroller",
|
|
245
|
+
"inputs": [
|
|
246
|
+
{
|
|
247
|
+
"name": "oldComptroller",
|
|
248
|
+
"type": "address",
|
|
249
|
+
"indexed": false,
|
|
250
|
+
"internalType": "contract ISablierComptroller"
|
|
251
|
+
},
|
|
252
|
+
{
|
|
253
|
+
"name": "newComptroller",
|
|
254
|
+
"type": "address",
|
|
255
|
+
"indexed": false,
|
|
256
|
+
"internalType": "contract ISablierComptroller"
|
|
257
|
+
}
|
|
258
|
+
],
|
|
259
|
+
"anonymous": false
|
|
260
|
+
},
|
|
261
|
+
{
|
|
262
|
+
"type": "event",
|
|
263
|
+
"name": "SetDefaultAdapter",
|
|
264
|
+
"inputs": [
|
|
265
|
+
{ "name": "token", "type": "address", "indexed": true, "internalType": "contract IERC20" },
|
|
266
|
+
{ "name": "adapter", "type": "address", "indexed": true, "internalType": "contract ISablierBobAdapter" }
|
|
267
|
+
],
|
|
268
|
+
"anonymous": false
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
"type": "event",
|
|
272
|
+
"name": "SetNativeToken",
|
|
273
|
+
"inputs": [
|
|
274
|
+
{ "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
|
|
275
|
+
{ "name": "nativeToken", "type": "address", "indexed": false, "internalType": "address" }
|
|
276
|
+
],
|
|
277
|
+
"anonymous": false
|
|
278
|
+
},
|
|
279
|
+
{
|
|
280
|
+
"type": "event",
|
|
281
|
+
"name": "SyncPriceFromOracle",
|
|
282
|
+
"inputs": [
|
|
283
|
+
{ "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
|
|
284
|
+
{ "name": "oracle", "type": "address", "indexed": true, "internalType": "contract AggregatorV3Interface" },
|
|
285
|
+
{ "name": "latestPrice", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
286
|
+
{ "name": "syncedAt", "type": "uint40", "indexed": false, "internalType": "uint40" }
|
|
287
|
+
],
|
|
288
|
+
"anonymous": false
|
|
289
|
+
},
|
|
290
|
+
{
|
|
291
|
+
"type": "event",
|
|
292
|
+
"name": "TransferFeesToComptroller",
|
|
293
|
+
"inputs": [
|
|
294
|
+
{ "name": "comptroller", "type": "address", "indexed": true, "internalType": "address" },
|
|
295
|
+
{ "name": "feeAmount", "type": "uint256", "indexed": false, "internalType": "uint256" }
|
|
296
|
+
],
|
|
297
|
+
"anonymous": false
|
|
298
|
+
},
|
|
299
|
+
{
|
|
300
|
+
"type": "event",
|
|
301
|
+
"name": "UnstakeFromAdapter",
|
|
302
|
+
"inputs": [
|
|
303
|
+
{ "name": "vaultId", "type": "uint256", "indexed": true, "internalType": "uint256" },
|
|
304
|
+
{ "name": "adapter", "type": "address", "indexed": true, "internalType": "contract ISablierBobAdapter" },
|
|
305
|
+
{ "name": "wrappedTokenUnstakedAmount", "type": "uint128", "indexed": false, "internalType": "uint128" },
|
|
306
|
+
{ "name": "amountReceivedFromAdapter", "type": "uint128", "indexed": false, "internalType": "uint128" }
|
|
307
|
+
],
|
|
308
|
+
"anonymous": false
|
|
309
|
+
}
|
|
310
|
+
],
|
|
311
|
+
"bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
|
|
312
|
+
"deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
|
|
313
|
+
"methodIdentifiers": {
|
|
314
|
+
"calculateMinFeeWei(uint256)": "cca138e5",
|
|
315
|
+
"comptroller()": "5fe3b567",
|
|
316
|
+
"createVault(address,address,uint40,uint128)": "50129dff",
|
|
317
|
+
"enter(uint256,uint128)": "c8d293b7",
|
|
318
|
+
"enterWithNativeToken(uint256)": "ef961229",
|
|
319
|
+
"getAdapter(uint256)": "ddeadbb6",
|
|
320
|
+
"getDefaultAdapterFor(address)": "a1538039",
|
|
321
|
+
"getExpiry(uint256)": "13c72608",
|
|
322
|
+
"getLastSyncedAt(uint256)": "009dd14f",
|
|
323
|
+
"getLastSyncedPrice(uint256)": "5645ed77",
|
|
324
|
+
"getOracle(uint256)": "10a9de60",
|
|
325
|
+
"getShareToken(uint256)": "65957bf5",
|
|
326
|
+
"getTargetPrice(uint256)": "46de071d",
|
|
327
|
+
"getUnderlyingToken(uint256)": "a4775772",
|
|
328
|
+
"isStakedInAdapter(uint256)": "8f4f8968",
|
|
329
|
+
"nativeToken()": "e1758bd8",
|
|
330
|
+
"nextVaultId()": "12ac1763",
|
|
331
|
+
"onShareTransfer(uint256,address,address,uint256,uint256)": "801837f6",
|
|
332
|
+
"redeem(uint256)": "db006a75",
|
|
333
|
+
"setComptroller(address)": "8bad38dd",
|
|
334
|
+
"setDefaultAdapter(address,address)": "b18c0adb",
|
|
335
|
+
"setNativeToken(address)": "6da1e102",
|
|
336
|
+
"statusOf(uint256)": "ad35efd4",
|
|
337
|
+
"syncPriceFromOracle(uint256)": "a06da630",
|
|
338
|
+
"transferFeesToComptroller()": "78f82ce7",
|
|
339
|
+
"unstakeTokensViaAdapter(uint256)": "7aca734b"
|
|
340
|
+
},
|
|
341
|
+
"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\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"contract IBobVaultShare\",\"name\":\"shareToken\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"}],\"name\":\"CreateVault\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"sharesMinted\",\"type\":\"uint128\"}],\"name\":\"Enter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"user\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceived\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"sharesBurned\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"fee\",\"type\":\"uint256\"}],\"name\":\"Redeem\",\"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\":true,\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"name\":\"SetDefaultAdapter\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"comptroller\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"address\",\"name\":\"nativeToken\",\"type\":\"address\"}],\"name\":\"SetNativeToken\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"indexed\":true,\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"latestPrice\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint40\",\"name\":\"syncedAt\",\"type\":\"uint40\"}],\"name\":\"SyncPriceFromOracle\",\"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\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"wrappedTokenUnstakedAmount\",\"type\":\"uint128\"},{\"indexed\":false,\"internalType\":\"uint128\",\"name\":\"amountReceivedFromAdapter\",\"type\":\"uint128\"}],\"name\":\"UnstakeFromAdapter\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"calculateMinFeeWei\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"minFeeWei\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"comptroller\",\"outputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"},{\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"},{\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"}],\"name\":\"createVault\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"uint128\",\"name\":\"amount\",\"type\":\"uint128\"}],\"name\":\"enter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"enterWithNativeToken\",\"outputs\":[],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getAdapter\",\"outputs\":[{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"name\":\"getDefaultAdapterFor\",\"outputs\":[{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"adapter\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getExpiry\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"expiry\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getLastSyncedAt\",\"outputs\":[{\"internalType\":\"uint40\",\"name\":\"lastSyncedAt\",\"type\":\"uint40\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getLastSyncedPrice\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"lastSyncedPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getOracle\",\"outputs\":[{\"internalType\":\"contract AggregatorV3Interface\",\"name\":\"oracle\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getShareToken\",\"outputs\":[{\"internalType\":\"contract IBobVaultShare\",\"name\":\"shareToken\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getTargetPrice\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"targetPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"getUnderlyingToken\",\"outputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"isStakedInAdapter\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"stakedInAdapter\",\"type\":\"bool\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nativeToken\",\"outputs\":[{\"internalType\":\"address\",\"name\":\"\",\"type\":\"address\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"nextVaultId\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"},{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"amount\",\"type\":\"uint256\"},{\"internalType\":\"uint256\",\"name\":\"fromBalanceBefore\",\"type\":\"uint256\"}],\"name\":\"onShareTransfer\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"redeem\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"transferAmount\",\"type\":\"uint128\"},{\"internalType\":\"uint128\",\"name\":\"feeAmountDeductedFromYield\",\"type\":\"uint128\"}],\"stateMutability\":\"payable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract ISablierComptroller\",\"name\":\"newComptroller\",\"type\":\"address\"}],\"name\":\"setComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"contract IERC20\",\"name\":\"token\",\"type\":\"address\"},{\"internalType\":\"contract ISablierBobAdapter\",\"name\":\"newAdapter\",\"type\":\"address\"}],\"name\":\"setDefaultAdapter\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"newNativeToken\",\"type\":\"address\"}],\"name\":\"setNativeToken\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"statusOf\",\"outputs\":[{\"internalType\":\"enum Bob.Status\",\"name\":\"status\",\"type\":\"uint8\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"syncPriceFromOracle\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"latestPrice\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"transferFeesToComptroller\",\"outputs\":[],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"uint256\",\"name\":\"vaultId\",\"type\":\"uint256\"}],\"name\":\"unstakeTokensViaAdapter\",\"outputs\":[{\"internalType\":\"uint128\",\"name\":\"amountReceivedFromAdapter\",\"type\":\"uint128\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"kind\":\"dev\",\"methods\":{\"calculateMinFeeWei(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\",\"params\":{\"vaultId\":\"The vault ID for the query.\"}},\"createVault(address,address,uint40,uint128)\":{\"details\":\"Emits a {CreateVault} event. Notes: - A new ERC-20 share token is deployed for each vault to represent user's share of deposits in the vault. - The default adapter for the token is copied as the vault adapter. Any change in the default adapter does not affect existing vaults. - Vault creator is responsible for choosing a valid oracle. They should use Chainlink oracles, as the integration is based on their API. Requirements: - `token` must not be the zero address. - `token` must implement `symbol()` and `decimals()` functions. - `expiry` must be in the future. - `oracle` must implement the Chainlink's {AggregatorV3Interface} interface. - `oracle` must return a positive price when `latestRoundData()` is called. - `oracle` must return a non-zero value no greater than 36 when `decimals()` is called. - `targetPrice` must not be zero or greater than the current price returned by the provided oracle.\",\"params\":{\"expiry\":\"The Unix timestamp when the vault expires.\",\"oracle\":\"The address of the price feed oracle for the deposit token.\",\"targetPrice\":\"The target price at which the vault settles, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\",\"token\":\"The address of the ERC-20 token that will be accepted for deposits.\"},\"returns\":{\"vaultId\":\"The ID of the newly created vault.\"}},\"enter(uint256,uint128)\":{\"details\":\"Emits an {Enter} event. Notes: - If an adapter is configured for the vault, tokens are automatically staked for yield using the adapter. - Share tokens are minted 1:1 with the deposited amount. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - `amount` must be greater than zero. - The caller must have approved this contract to transfer `amount` tokens.\",\"params\":{\"amount\":\"The amount of tokens to deposit.\",\"vaultId\":\"The ID of the vault to deposit into.\"}},\"enterWithNativeToken(uint256)\":{\"details\":\"Emits an {Enter} event. Notes: - `msg.value` is used as the deposit amount. - See notes for {enter}. Requirements: - See requirements for {enter}. - `msg.value` must be greater than zero and must not exceed `type(uint128).max`.\",\"params\":{\"vaultId\":\"The ID of the vault to deposit into.\"}},\"getAdapter(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getDefaultAdapterFor(address)\":{\"details\":\"Zero address means no adapter is set.\",\"params\":{\"token\":\"The ERC-20 token to query the default adapter for.\"},\"returns\":{\"adapter\":\"The default adapter for the token.\"}},\"getExpiry(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getLastSyncedAt(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getLastSyncedPrice(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getOracle(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getShareToken(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getTargetPrice(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"getUnderlyingToken(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"isStakedInAdapter(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"nativeToken()\":{\"details\":\"The native tokens on some chains have a dual interface as ERC-20. For example, on Polygon the $POL token is the native token and has an ERC-20 version at 0x0000000000000000000000000000000000001010. This means that `address(this).balance` returns the same value as `balanceOf(address(this))`. To avoid any unintended behavior, these tokens cannot be used in Sablier. As an alternative, users can use the Wrapped version of the token, i.e. WMATIC, which is a standard ERC-20 token.\"},\"onShareTransfer(uint256,address,address,uint256,uint256)\":{\"params\":{\"amount\":\"The number of share tokens being transferred.\",\"from\":\"The address transferring share tokens.\",\"fromBalanceBefore\":\"The number of share tokens the sender had before the transfer.\",\"to\":\"The address receiving share tokens.\",\"vaultId\":\"The ID of the vault.\"}},\"redeem(uint256)\":{\"details\":\"Emits a {Redeem} event. Notes: - If no adapter is configured for the vault, a fee in the native token is applied. - If an adapter is configured for the vault, a fee, in the deposit token, is deducted from yield generated by the adapter. - If unstake via Lido withdrawal queue contract is triggered, redeem will revert until the withdrawal from the Lido queue is finalized. Requirements: - `vaultId` must not reference a null vault. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The share balance of the caller must be greater than zero. - If no adapter is configured for the vault, `msg.value` must be greater than or equal to the min fee required in the native token.\",\"params\":{\"vaultId\":\"The ID of the vault to redeem from.\"},\"returns\":{\"feeAmountDeductedFromYield\":\"The fee amount deducted from the yield. Zero if no adapter is set.\",\"transferAmount\":\"The amount of tokens transferred to the caller, after fees are deducted (only applicable if adapter is set).\"}},\"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.\"}},\"setDefaultAdapter(address,address)\":{\"details\":\"Emits a {SetDefaultAdapter} event. Notes: - This only affects future vaults. Requirements: - The caller must be the comptroller. - If new adapter is not zero address, it must implement {ISablierBobAdapter} interface.\",\"params\":{\"newAdapter\":\"The address of the new adapter.\",\"token\":\"The token address to set the adapter for.\"}},\"setNativeToken(address)\":{\"details\":\"For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller. - `newNativeToken` must not be zero address. - The native token must not be already set.\",\"params\":{\"newNativeToken\":\"The address of the native token.\"}},\"statusOf(uint256)\":{\"details\":\"Reverts if `vaultId` references a null vault.\"},\"syncPriceFromOracle(uint256)\":{\"details\":\"Emits a {SyncPriceFromOracle} event. Notes: - Oracle staleness is not validated on-chain when calling this function. Any price returned by the oracle is accepted. - Useful for syncing the price from oracle without calling {redeem} or {enter}. This function can be called by anyone to settle vault when the price is above the target price. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - The oracle must return a positive price.\",\"params\":{\"vaultId\":\"The ID of the vault to sync.\"},\"returns\":{\"latestPrice\":\"The latest price fetched from the oracle, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.\"}},\"transferFeesToComptroller()\":{\"details\":\"Emits a {TransferFeesToComptroller} event.\"},\"unstakeTokensViaAdapter(uint256)\":{\"details\":\"Emits an {UnstakeFromAdapter} event. Requirements: - `vaultId` must not reference a null vault. - The adapter set in the vault must not be zero address. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The vault must not have been unstaked already. - The amount staked must be greater than zero.\",\"params\":{\"vaultId\":\"The ID of the vault.\"},\"returns\":{\"amountReceivedFromAdapter\":\"The amount of tokens received from the adapter.\"}}},\"title\":\"ISablierBob\",\"version\":1},\"userdoc\":{\"events\":{\"CreateVault(uint256,address,address,address,address,uint128,uint40)\":{\"notice\":\"Emitted when a new vault is created.\"},\"Enter(uint256,address,uint128,uint128)\":{\"notice\":\"Emitted when a user deposits tokens into a vault.\"},\"Redeem(uint256,address,uint128,uint128,uint256)\":{\"notice\":\"Emitted when a user redeems their shares from a settled vault.\"},\"SetComptroller(address,address)\":{\"notice\":\"Emitted when the comptroller address is set by the admin.\"},\"SetDefaultAdapter(address,address)\":{\"notice\":\"Emitted when the comptroller sets a new default adapter for a token.\"},\"SetNativeToken(address,address)\":{\"notice\":\"Emitted when the native token address is set by the comptroller.\"},\"SyncPriceFromOracle(uint256,address,uint128,uint40)\":{\"notice\":\"Emitted when a vault's price is synced from the oracle.\"},\"TransferFeesToComptroller(address,uint256)\":{\"notice\":\"Emitted when the fees are transferred to the comptroller contract.\"},\"UnstakeFromAdapter(uint256,address,uint128,uint128)\":{\"notice\":\"Emitted when tokens staked in the adapter for a given vault are unstaked.\"}},\"kind\":\"user\",\"methods\":{\"calculateMinFeeWei(uint256)\":{\"notice\":\"Calculates the minimum fee in wei required to redeem from the given vault ID. Returns 0 for vaults with an adapter, since the fee is taken from yield generated.\"},\"comptroller()\":{\"notice\":\"Retrieves the address of the comptroller contract.\"},\"createVault(address,address,uint40,uint128)\":{\"notice\":\"Creates a new vault with the specified parameters.\"},\"enter(uint256,uint128)\":{\"notice\":\"Enter into a vault by depositing tokens into it and minting share tokens to the caller.\"},\"enterWithNativeToken(uint256)\":{\"notice\":\"Enter into a vault by depositing native token (such as ETH, POL, etc.) into it and minting share tokens to the caller.\"},\"getAdapter(uint256)\":{\"notice\":\"Returns the adapter configured for a specific vault.\"},\"getDefaultAdapterFor(address)\":{\"notice\":\"Returns the default adapter for a given token.\"},\"getExpiry(uint256)\":{\"notice\":\"Returns the timestamp when the vault expires.\"},\"getLastSyncedAt(uint256)\":{\"notice\":\"Returns the timestamp when the oracle price was last synced for a vault.\"},\"getLastSyncedPrice(uint256)\":{\"notice\":\"Returns the oracle price stored for a vault.\"},\"getOracle(uint256)\":{\"notice\":\"Returns the oracle address set for a vault.\"},\"getShareToken(uint256)\":{\"notice\":\"Returns the address of the ERC-20 share token for a vault.\"},\"getTargetPrice(uint256)\":{\"notice\":\"Returns the target price at which the vault settles.\"},\"getUnderlyingToken(uint256)\":{\"notice\":\"Returns the ERC-20 token accepted for deposits in a vault.\"},\"isStakedInAdapter(uint256)\":{\"notice\":\"Returns whether the vault tokens are staked in an adapter.\"},\"nativeToken()\":{\"notice\":\"Retrieves the address of the ERC-20 interface of the native token, if it exists.\"},\"nextVaultId()\":{\"notice\":\"Counter for vault IDs, incremented every time a new vault is created.\"},\"onShareTransfer(uint256,address,address,uint256,uint256)\":{\"notice\":\"Called by adapter when share tokens for a given vault are transferred between users. This is required for accounting of the yield generated by the adapter. Requirements: - The caller must be the share token contract stored in the given vault. - The calculated wstETH transfer amount must not be zero.\"},\"redeem(uint256)\":{\"notice\":\"Redeem the tokens by burning user shares.\"},\"setComptroller(address)\":{\"notice\":\"Sets the comptroller to a new address.\"},\"setDefaultAdapter(address,address)\":{\"notice\":\"Sets the default adapter for a specific token.\"},\"setNativeToken(address)\":{\"notice\":\"Sets the native token address. Once set, it cannot be changed.\"},\"statusOf(uint256)\":{\"notice\":\"Returns the vault status.\"},\"syncPriceFromOracle(uint256)\":{\"notice\":\"Fetches the latest price from the oracle set for a vault and updates it in the vault storage.\"},\"transferFeesToComptroller()\":{\"notice\":\"Transfers the fees to the comptroller contract.\"},\"unstakeTokensViaAdapter(uint256)\":{\"notice\":\"Unstake all tokens from the adapter for a given vault.\"}},\"notice\":\"Price-gated vaults that unlock deposited tokens when the price returned by the oracle is greater than or equal to the target price set by the vault creator. The tokens are also unlocked if the vault expires. When a vault is configured with a adapter, the protocol automatically stakes the tokens via adapter and earns yield on the deposit amount.\",\"version\":1}},\"settings\":{\"compilationTarget\":{\"src/interfaces/ISablierBob.sol\":\"ISablierBob\"},\"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/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol\":{\"keccak256\":\"0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9\",\"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS\"]},\"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/token/ERC20/extensions/IERC20Metadata.sol\":{\"keccak256\":\"0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf\",\"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r\"]},\"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/IBobVaultShare.sol\":{\"keccak256\":\"0x7e91f71800b33ce26fa757b8d74d0e89aaf2de6ee50260a706c4c26029ae4c22\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://18e85a71eef03972eb19a277ca025c645b18aa768c03a2b1e7d81de9eeabe731\",\"dweb:/ipfs/QmbjGtkps9KvG6XBysNLB9eBoY5E47ixkTDtN8cYYRzA6b\"]},\"src/interfaces/ISablierBob.sol\":{\"keccak256\":\"0x2c21ee1f24d0443a9daf745ef2f5ccfe339120f19484565d31a46a1af09e8edc\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://1dce1fb1847e2c9fb562f9e5c8cb71d9a9d5a3b4a56ba9575ff0c7d5240b3af9\",\"dweb:/ipfs/QmZbFLtUYRV9TTw6PTsJmvhrD5BwautoUbLbj5WoVYiTPP\"]},\"src/interfaces/ISablierBobAdapter.sol\":{\"keccak256\":\"0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e\",\"dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK\"]},\"src/interfaces/ISablierBobState.sol\":{\"keccak256\":\"0xc216153d326b2b02f62fe2a02edea29a194bf850d6c5d4d1d1c618cd68bfdd5c\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://0e1c2c6b58098552b70febc6a4876c2b89fb894994049c840882c346d7e094ee\",\"dweb:/ipfs/QmWxBShVcnGCrjHfBhPH15cdLA7mtmN6QaSBSM7ZWae85Q\"]},\"src/types/Bob.sol\":{\"keccak256\":\"0xf156bfc6b369fd9006e47e3a2531108e515878f60977987def9069b6148cbba3\",\"license\":\"GPL-3.0-or-later\",\"urls\":[\"bzz-raw://5e2d1205de5dc31ffc76045c05b5fc9ad927346ff3a6be9ee7ee9dcd6c28bb1a\",\"dweb:/ipfs/QmeuUm54PyaS2NZ728zy3Cqnsm5BZxaGAZdQrBY85Tejdx\"]}},\"version\":1}",
|
|
342
|
+
"metadata": {
|
|
343
|
+
"compiler": { "version": "0.8.29+commit.ab55807c" },
|
|
344
|
+
"language": "Solidity",
|
|
345
|
+
"output": {
|
|
346
|
+
"abi": [
|
|
347
|
+
{
|
|
348
|
+
"inputs": [
|
|
349
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
|
|
350
|
+
{ "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
|
|
351
|
+
{ "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address", "indexed": true },
|
|
352
|
+
{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": false },
|
|
353
|
+
{ "internalType": "contract IBobVaultShare", "name": "shareToken", "type": "address", "indexed": false },
|
|
354
|
+
{ "internalType": "uint128", "name": "targetPrice", "type": "uint128", "indexed": false },
|
|
355
|
+
{ "internalType": "uint40", "name": "expiry", "type": "uint40", "indexed": false }
|
|
356
|
+
],
|
|
357
|
+
"type": "event",
|
|
358
|
+
"name": "CreateVault",
|
|
359
|
+
"anonymous": false
|
|
360
|
+
},
|
|
361
|
+
{
|
|
362
|
+
"inputs": [
|
|
363
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
|
|
364
|
+
{ "internalType": "address", "name": "user", "type": "address", "indexed": true },
|
|
365
|
+
{ "internalType": "uint128", "name": "amountReceived", "type": "uint128", "indexed": false },
|
|
366
|
+
{ "internalType": "uint128", "name": "sharesMinted", "type": "uint128", "indexed": false }
|
|
367
|
+
],
|
|
368
|
+
"type": "event",
|
|
369
|
+
"name": "Enter",
|
|
370
|
+
"anonymous": false
|
|
371
|
+
},
|
|
372
|
+
{
|
|
373
|
+
"inputs": [
|
|
374
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
|
|
375
|
+
{ "internalType": "address", "name": "user", "type": "address", "indexed": true },
|
|
376
|
+
{ "internalType": "uint128", "name": "amountReceived", "type": "uint128", "indexed": false },
|
|
377
|
+
{ "internalType": "uint128", "name": "sharesBurned", "type": "uint128", "indexed": false },
|
|
378
|
+
{ "internalType": "uint256", "name": "fee", "type": "uint256", "indexed": false }
|
|
379
|
+
],
|
|
380
|
+
"type": "event",
|
|
381
|
+
"name": "Redeem",
|
|
382
|
+
"anonymous": false
|
|
383
|
+
},
|
|
384
|
+
{
|
|
385
|
+
"inputs": [
|
|
386
|
+
{
|
|
387
|
+
"internalType": "contract ISablierComptroller",
|
|
388
|
+
"name": "oldComptroller",
|
|
389
|
+
"type": "address",
|
|
390
|
+
"indexed": false
|
|
391
|
+
},
|
|
392
|
+
{
|
|
393
|
+
"internalType": "contract ISablierComptroller",
|
|
394
|
+
"name": "newComptroller",
|
|
395
|
+
"type": "address",
|
|
396
|
+
"indexed": false
|
|
397
|
+
}
|
|
398
|
+
],
|
|
399
|
+
"type": "event",
|
|
400
|
+
"name": "SetComptroller",
|
|
401
|
+
"anonymous": false
|
|
402
|
+
},
|
|
403
|
+
{
|
|
404
|
+
"inputs": [
|
|
405
|
+
{ "internalType": "contract IERC20", "name": "token", "type": "address", "indexed": true },
|
|
406
|
+
{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": true }
|
|
407
|
+
],
|
|
408
|
+
"type": "event",
|
|
409
|
+
"name": "SetDefaultAdapter",
|
|
410
|
+
"anonymous": false
|
|
411
|
+
},
|
|
412
|
+
{
|
|
413
|
+
"inputs": [
|
|
414
|
+
{ "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
|
|
415
|
+
{ "internalType": "address", "name": "nativeToken", "type": "address", "indexed": false }
|
|
416
|
+
],
|
|
417
|
+
"type": "event",
|
|
418
|
+
"name": "SetNativeToken",
|
|
419
|
+
"anonymous": false
|
|
420
|
+
},
|
|
421
|
+
{
|
|
422
|
+
"inputs": [
|
|
423
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
|
|
424
|
+
{ "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address", "indexed": true },
|
|
425
|
+
{ "internalType": "uint128", "name": "latestPrice", "type": "uint128", "indexed": false },
|
|
426
|
+
{ "internalType": "uint40", "name": "syncedAt", "type": "uint40", "indexed": false }
|
|
427
|
+
],
|
|
428
|
+
"type": "event",
|
|
429
|
+
"name": "SyncPriceFromOracle",
|
|
430
|
+
"anonymous": false
|
|
431
|
+
},
|
|
432
|
+
{
|
|
433
|
+
"inputs": [
|
|
434
|
+
{ "internalType": "address", "name": "comptroller", "type": "address", "indexed": true },
|
|
435
|
+
{ "internalType": "uint256", "name": "feeAmount", "type": "uint256", "indexed": false }
|
|
436
|
+
],
|
|
437
|
+
"type": "event",
|
|
438
|
+
"name": "TransferFeesToComptroller",
|
|
439
|
+
"anonymous": false
|
|
440
|
+
},
|
|
441
|
+
{
|
|
442
|
+
"inputs": [
|
|
443
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256", "indexed": true },
|
|
444
|
+
{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address", "indexed": true },
|
|
445
|
+
{ "internalType": "uint128", "name": "wrappedTokenUnstakedAmount", "type": "uint128", "indexed": false },
|
|
446
|
+
{ "internalType": "uint128", "name": "amountReceivedFromAdapter", "type": "uint128", "indexed": false }
|
|
447
|
+
],
|
|
448
|
+
"type": "event",
|
|
449
|
+
"name": "UnstakeFromAdapter",
|
|
450
|
+
"anonymous": false
|
|
451
|
+
},
|
|
452
|
+
{
|
|
453
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
454
|
+
"stateMutability": "view",
|
|
455
|
+
"type": "function",
|
|
456
|
+
"name": "calculateMinFeeWei",
|
|
457
|
+
"outputs": [{ "internalType": "uint256", "name": "minFeeWei", "type": "uint256" }]
|
|
458
|
+
},
|
|
459
|
+
{
|
|
460
|
+
"inputs": [],
|
|
461
|
+
"stateMutability": "view",
|
|
462
|
+
"type": "function",
|
|
463
|
+
"name": "comptroller",
|
|
464
|
+
"outputs": [{ "internalType": "contract ISablierComptroller", "name": "", "type": "address" }]
|
|
465
|
+
},
|
|
466
|
+
{
|
|
467
|
+
"inputs": [
|
|
468
|
+
{ "internalType": "contract IERC20", "name": "token", "type": "address" },
|
|
469
|
+
{ "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address" },
|
|
470
|
+
{ "internalType": "uint40", "name": "expiry", "type": "uint40" },
|
|
471
|
+
{ "internalType": "uint128", "name": "targetPrice", "type": "uint128" }
|
|
472
|
+
],
|
|
473
|
+
"stateMutability": "nonpayable",
|
|
474
|
+
"type": "function",
|
|
475
|
+
"name": "createVault",
|
|
476
|
+
"outputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }]
|
|
477
|
+
},
|
|
478
|
+
{
|
|
479
|
+
"inputs": [
|
|
480
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256" },
|
|
481
|
+
{ "internalType": "uint128", "name": "amount", "type": "uint128" }
|
|
482
|
+
],
|
|
483
|
+
"stateMutability": "nonpayable",
|
|
484
|
+
"type": "function",
|
|
485
|
+
"name": "enter"
|
|
486
|
+
},
|
|
487
|
+
{
|
|
488
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
489
|
+
"stateMutability": "payable",
|
|
490
|
+
"type": "function",
|
|
491
|
+
"name": "enterWithNativeToken"
|
|
492
|
+
},
|
|
493
|
+
{
|
|
494
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
495
|
+
"stateMutability": "view",
|
|
496
|
+
"type": "function",
|
|
497
|
+
"name": "getAdapter",
|
|
498
|
+
"outputs": [{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address" }]
|
|
499
|
+
},
|
|
500
|
+
{
|
|
501
|
+
"inputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }],
|
|
502
|
+
"stateMutability": "view",
|
|
503
|
+
"type": "function",
|
|
504
|
+
"name": "getDefaultAdapterFor",
|
|
505
|
+
"outputs": [{ "internalType": "contract ISablierBobAdapter", "name": "adapter", "type": "address" }]
|
|
506
|
+
},
|
|
507
|
+
{
|
|
508
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
509
|
+
"stateMutability": "view",
|
|
510
|
+
"type": "function",
|
|
511
|
+
"name": "getExpiry",
|
|
512
|
+
"outputs": [{ "internalType": "uint40", "name": "expiry", "type": "uint40" }]
|
|
513
|
+
},
|
|
514
|
+
{
|
|
515
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
516
|
+
"stateMutability": "view",
|
|
517
|
+
"type": "function",
|
|
518
|
+
"name": "getLastSyncedAt",
|
|
519
|
+
"outputs": [{ "internalType": "uint40", "name": "lastSyncedAt", "type": "uint40" }]
|
|
520
|
+
},
|
|
521
|
+
{
|
|
522
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
523
|
+
"stateMutability": "view",
|
|
524
|
+
"type": "function",
|
|
525
|
+
"name": "getLastSyncedPrice",
|
|
526
|
+
"outputs": [{ "internalType": "uint128", "name": "lastSyncedPrice", "type": "uint128" }]
|
|
527
|
+
},
|
|
528
|
+
{
|
|
529
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
530
|
+
"stateMutability": "view",
|
|
531
|
+
"type": "function",
|
|
532
|
+
"name": "getOracle",
|
|
533
|
+
"outputs": [{ "internalType": "contract AggregatorV3Interface", "name": "oracle", "type": "address" }]
|
|
534
|
+
},
|
|
535
|
+
{
|
|
536
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
537
|
+
"stateMutability": "view",
|
|
538
|
+
"type": "function",
|
|
539
|
+
"name": "getShareToken",
|
|
540
|
+
"outputs": [{ "internalType": "contract IBobVaultShare", "name": "shareToken", "type": "address" }]
|
|
541
|
+
},
|
|
542
|
+
{
|
|
543
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
544
|
+
"stateMutability": "view",
|
|
545
|
+
"type": "function",
|
|
546
|
+
"name": "getTargetPrice",
|
|
547
|
+
"outputs": [{ "internalType": "uint128", "name": "targetPrice", "type": "uint128" }]
|
|
548
|
+
},
|
|
549
|
+
{
|
|
550
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
551
|
+
"stateMutability": "view",
|
|
552
|
+
"type": "function",
|
|
553
|
+
"name": "getUnderlyingToken",
|
|
554
|
+
"outputs": [{ "internalType": "contract IERC20", "name": "token", "type": "address" }]
|
|
555
|
+
},
|
|
556
|
+
{
|
|
557
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
558
|
+
"stateMutability": "view",
|
|
559
|
+
"type": "function",
|
|
560
|
+
"name": "isStakedInAdapter",
|
|
561
|
+
"outputs": [{ "internalType": "bool", "name": "stakedInAdapter", "type": "bool" }]
|
|
562
|
+
},
|
|
563
|
+
{
|
|
564
|
+
"inputs": [],
|
|
565
|
+
"stateMutability": "view",
|
|
566
|
+
"type": "function",
|
|
567
|
+
"name": "nativeToken",
|
|
568
|
+
"outputs": [{ "internalType": "address", "name": "", "type": "address" }]
|
|
569
|
+
},
|
|
570
|
+
{
|
|
571
|
+
"inputs": [],
|
|
572
|
+
"stateMutability": "view",
|
|
573
|
+
"type": "function",
|
|
574
|
+
"name": "nextVaultId",
|
|
575
|
+
"outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
|
|
576
|
+
},
|
|
577
|
+
{
|
|
578
|
+
"inputs": [
|
|
579
|
+
{ "internalType": "uint256", "name": "vaultId", "type": "uint256" },
|
|
580
|
+
{ "internalType": "address", "name": "from", "type": "address" },
|
|
581
|
+
{ "internalType": "address", "name": "to", "type": "address" },
|
|
582
|
+
{ "internalType": "uint256", "name": "amount", "type": "uint256" },
|
|
583
|
+
{ "internalType": "uint256", "name": "fromBalanceBefore", "type": "uint256" }
|
|
584
|
+
],
|
|
585
|
+
"stateMutability": "nonpayable",
|
|
586
|
+
"type": "function",
|
|
587
|
+
"name": "onShareTransfer"
|
|
588
|
+
},
|
|
589
|
+
{
|
|
590
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
591
|
+
"stateMutability": "payable",
|
|
592
|
+
"type": "function",
|
|
593
|
+
"name": "redeem",
|
|
594
|
+
"outputs": [
|
|
595
|
+
{ "internalType": "uint128", "name": "transferAmount", "type": "uint128" },
|
|
596
|
+
{ "internalType": "uint128", "name": "feeAmountDeductedFromYield", "type": "uint128" }
|
|
597
|
+
]
|
|
598
|
+
},
|
|
599
|
+
{
|
|
600
|
+
"inputs": [{ "internalType": "contract ISablierComptroller", "name": "newComptroller", "type": "address" }],
|
|
601
|
+
"stateMutability": "nonpayable",
|
|
602
|
+
"type": "function",
|
|
603
|
+
"name": "setComptroller"
|
|
604
|
+
},
|
|
605
|
+
{
|
|
606
|
+
"inputs": [
|
|
607
|
+
{ "internalType": "contract IERC20", "name": "token", "type": "address" },
|
|
608
|
+
{ "internalType": "contract ISablierBobAdapter", "name": "newAdapter", "type": "address" }
|
|
609
|
+
],
|
|
610
|
+
"stateMutability": "nonpayable",
|
|
611
|
+
"type": "function",
|
|
612
|
+
"name": "setDefaultAdapter"
|
|
613
|
+
},
|
|
614
|
+
{
|
|
615
|
+
"inputs": [{ "internalType": "address", "name": "newNativeToken", "type": "address" }],
|
|
616
|
+
"stateMutability": "nonpayable",
|
|
617
|
+
"type": "function",
|
|
618
|
+
"name": "setNativeToken"
|
|
619
|
+
},
|
|
620
|
+
{
|
|
621
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
622
|
+
"stateMutability": "view",
|
|
623
|
+
"type": "function",
|
|
624
|
+
"name": "statusOf",
|
|
625
|
+
"outputs": [{ "internalType": "enum Bob.Status", "name": "status", "type": "uint8" }]
|
|
626
|
+
},
|
|
627
|
+
{
|
|
628
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
629
|
+
"stateMutability": "nonpayable",
|
|
630
|
+
"type": "function",
|
|
631
|
+
"name": "syncPriceFromOracle",
|
|
632
|
+
"outputs": [{ "internalType": "uint128", "name": "latestPrice", "type": "uint128" }]
|
|
633
|
+
},
|
|
634
|
+
{ "inputs": [], "stateMutability": "nonpayable", "type": "function", "name": "transferFeesToComptroller" },
|
|
635
|
+
{
|
|
636
|
+
"inputs": [{ "internalType": "uint256", "name": "vaultId", "type": "uint256" }],
|
|
637
|
+
"stateMutability": "nonpayable",
|
|
638
|
+
"type": "function",
|
|
639
|
+
"name": "unstakeTokensViaAdapter",
|
|
640
|
+
"outputs": [{ "internalType": "uint128", "name": "amountReceivedFromAdapter", "type": "uint128" }]
|
|
641
|
+
}
|
|
642
|
+
],
|
|
643
|
+
"devdoc": {
|
|
644
|
+
"kind": "dev",
|
|
645
|
+
"methods": {
|
|
646
|
+
"calculateMinFeeWei(uint256)": {
|
|
647
|
+
"details": "Reverts if `vaultId` references a null vault.",
|
|
648
|
+
"params": { "vaultId": "The vault ID for the query." }
|
|
649
|
+
},
|
|
650
|
+
"createVault(address,address,uint40,uint128)": {
|
|
651
|
+
"details": "Emits a {CreateVault} event. Notes: - A new ERC-20 share token is deployed for each vault to represent user's share of deposits in the vault. - The default adapter for the token is copied as the vault adapter. Any change in the default adapter does not affect existing vaults. - Vault creator is responsible for choosing a valid oracle. They should use Chainlink oracles, as the integration is based on their API. Requirements: - `token` must not be the zero address. - `token` must implement `symbol()` and `decimals()` functions. - `expiry` must be in the future. - `oracle` must implement the Chainlink's {AggregatorV3Interface} interface. - `oracle` must return a positive price when `latestRoundData()` is called. - `oracle` must return a non-zero value no greater than 36 when `decimals()` is called. - `targetPrice` must not be zero or greater than the current price returned by the provided oracle.",
|
|
652
|
+
"params": {
|
|
653
|
+
"expiry": "The Unix timestamp when the vault expires.",
|
|
654
|
+
"oracle": "The address of the price feed oracle for the deposit token.",
|
|
655
|
+
"targetPrice": "The target price at which the vault settles, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1.",
|
|
656
|
+
"token": "The address of the ERC-20 token that will be accepted for deposits."
|
|
657
|
+
},
|
|
658
|
+
"returns": { "vaultId": "The ID of the newly created vault." }
|
|
659
|
+
},
|
|
660
|
+
"enter(uint256,uint128)": {
|
|
661
|
+
"details": "Emits an {Enter} event. Notes: - If an adapter is configured for the vault, tokens are automatically staked for yield using the adapter. - Share tokens are minted 1:1 with the deposited amount. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - `amount` must be greater than zero. - The caller must have approved this contract to transfer `amount` tokens.",
|
|
662
|
+
"params": {
|
|
663
|
+
"amount": "The amount of tokens to deposit.",
|
|
664
|
+
"vaultId": "The ID of the vault to deposit into."
|
|
665
|
+
}
|
|
666
|
+
},
|
|
667
|
+
"enterWithNativeToken(uint256)": {
|
|
668
|
+
"details": "Emits an {Enter} event. Notes: - `msg.value` is used as the deposit amount. - See notes for {enter}. Requirements: - See requirements for {enter}. - `msg.value` must be greater than zero and must not exceed `type(uint128).max`.",
|
|
669
|
+
"params": { "vaultId": "The ID of the vault to deposit into." }
|
|
670
|
+
},
|
|
671
|
+
"getAdapter(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
672
|
+
"getDefaultAdapterFor(address)": {
|
|
673
|
+
"details": "Zero address means no adapter is set.",
|
|
674
|
+
"params": { "token": "The ERC-20 token to query the default adapter for." },
|
|
675
|
+
"returns": { "adapter": "The default adapter for the token." }
|
|
676
|
+
},
|
|
677
|
+
"getExpiry(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
678
|
+
"getLastSyncedAt(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
679
|
+
"getLastSyncedPrice(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
680
|
+
"getOracle(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
681
|
+
"getShareToken(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
682
|
+
"getTargetPrice(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
683
|
+
"getUnderlyingToken(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
684
|
+
"isStakedInAdapter(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
685
|
+
"nativeToken()": {
|
|
686
|
+
"details": "The native tokens on some chains have a dual interface as ERC-20. For example, on Polygon the $POL token is the native token and has an ERC-20 version at 0x0000000000000000000000000000000000001010. This means that `address(this).balance` returns the same value as `balanceOf(address(this))`. To avoid any unintended behavior, these tokens cannot be used in Sablier. As an alternative, users can use the Wrapped version of the token, i.e. WMATIC, which is a standard ERC-20 token."
|
|
687
|
+
},
|
|
688
|
+
"onShareTransfer(uint256,address,address,uint256,uint256)": {
|
|
689
|
+
"params": {
|
|
690
|
+
"amount": "The number of share tokens being transferred.",
|
|
691
|
+
"from": "The address transferring share tokens.",
|
|
692
|
+
"fromBalanceBefore": "The number of share tokens the sender had before the transfer.",
|
|
693
|
+
"to": "The address receiving share tokens.",
|
|
694
|
+
"vaultId": "The ID of the vault."
|
|
695
|
+
}
|
|
696
|
+
},
|
|
697
|
+
"redeem(uint256)": {
|
|
698
|
+
"details": "Emits a {Redeem} event. Notes: - If no adapter is configured for the vault, a fee in the native token is applied. - If an adapter is configured for the vault, a fee, in the deposit token, is deducted from yield generated by the adapter. - If unstake via Lido withdrawal queue contract is triggered, redeem will revert until the withdrawal from the Lido queue is finalized. Requirements: - `vaultId` must not reference a null vault. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The share balance of the caller must be greater than zero. - If no adapter is configured for the vault, `msg.value` must be greater than or equal to the min fee required in the native token.",
|
|
699
|
+
"params": { "vaultId": "The ID of the vault to redeem from." },
|
|
700
|
+
"returns": {
|
|
701
|
+
"feeAmountDeductedFromYield": "The fee amount deducted from the yield. Zero if no adapter is set.",
|
|
702
|
+
"transferAmount": "The amount of tokens transferred to the caller, after fees are deducted (only applicable if adapter is set)."
|
|
703
|
+
}
|
|
704
|
+
},
|
|
705
|
+
"setComptroller(address)": {
|
|
706
|
+
"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}",
|
|
707
|
+
"params": { "newComptroller": "The address of the new comptroller contract." }
|
|
708
|
+
},
|
|
709
|
+
"setDefaultAdapter(address,address)": {
|
|
710
|
+
"details": "Emits a {SetDefaultAdapter} event. Notes: - This only affects future vaults. Requirements: - The caller must be the comptroller. - If new adapter is not zero address, it must implement {ISablierBobAdapter} interface.",
|
|
711
|
+
"params": {
|
|
712
|
+
"newAdapter": "The address of the new adapter.",
|
|
713
|
+
"token": "The token address to set the adapter for."
|
|
714
|
+
}
|
|
715
|
+
},
|
|
716
|
+
"setNativeToken(address)": {
|
|
717
|
+
"details": "For more information, see the documentation for {nativeToken}. Emits a {SetNativeToken} event. Requirements: - `msg.sender` must be the comptroller. - `newNativeToken` must not be zero address. - The native token must not be already set.",
|
|
718
|
+
"params": { "newNativeToken": "The address of the native token." }
|
|
719
|
+
},
|
|
720
|
+
"statusOf(uint256)": { "details": "Reverts if `vaultId` references a null vault." },
|
|
721
|
+
"syncPriceFromOracle(uint256)": {
|
|
722
|
+
"details": "Emits a {SyncPriceFromOracle} event. Notes: - Oracle staleness is not validated on-chain when calling this function. Any price returned by the oracle is accepted. - Useful for syncing the price from oracle without calling {redeem} or {enter}. This function can be called by anyone to settle vault when the price is above the target price. Requirements: - `vaultId` must not reference a null vault. - The vault must have ACTIVE status. - The oracle must return a positive price.",
|
|
723
|
+
"params": { "vaultId": "The ID of the vault to sync." },
|
|
724
|
+
"returns": {
|
|
725
|
+
"latestPrice": "The latest price fetched from the oracle, denominated in Chainlink's 8-decimal format for USD prices, where 1e8 is $1."
|
|
726
|
+
}
|
|
727
|
+
},
|
|
728
|
+
"transferFeesToComptroller()": { "details": "Emits a {TransferFeesToComptroller} event." },
|
|
729
|
+
"unstakeTokensViaAdapter(uint256)": {
|
|
730
|
+
"details": "Emits an {UnstakeFromAdapter} event. Requirements: - `vaultId` must not reference a null vault. - The adapter set in the vault must not be zero address. - Either block timestamp must be greater than or equal to the vault expiry or the latest price from the oracle must be greater than or equal to the target price. - The vault must not have been unstaked already. - The amount staked must be greater than zero.",
|
|
731
|
+
"params": { "vaultId": "The ID of the vault." },
|
|
732
|
+
"returns": { "amountReceivedFromAdapter": "The amount of tokens received from the adapter." }
|
|
733
|
+
}
|
|
734
|
+
},
|
|
735
|
+
"version": 1
|
|
736
|
+
},
|
|
737
|
+
"userdoc": {
|
|
738
|
+
"kind": "user",
|
|
739
|
+
"methods": {
|
|
740
|
+
"calculateMinFeeWei(uint256)": {
|
|
741
|
+
"notice": "Calculates the minimum fee in wei required to redeem from the given vault ID. Returns 0 for vaults with an adapter, since the fee is taken from yield generated."
|
|
742
|
+
},
|
|
743
|
+
"comptroller()": { "notice": "Retrieves the address of the comptroller contract." },
|
|
744
|
+
"createVault(address,address,uint40,uint128)": {
|
|
745
|
+
"notice": "Creates a new vault with the specified parameters."
|
|
746
|
+
},
|
|
747
|
+
"enter(uint256,uint128)": {
|
|
748
|
+
"notice": "Enter into a vault by depositing tokens into it and minting share tokens to the caller."
|
|
749
|
+
},
|
|
750
|
+
"enterWithNativeToken(uint256)": {
|
|
751
|
+
"notice": "Enter into a vault by depositing native token (such as ETH, POL, etc.) into it and minting share tokens to the caller."
|
|
752
|
+
},
|
|
753
|
+
"getAdapter(uint256)": { "notice": "Returns the adapter configured for a specific vault." },
|
|
754
|
+
"getDefaultAdapterFor(address)": { "notice": "Returns the default adapter for a given token." },
|
|
755
|
+
"getExpiry(uint256)": { "notice": "Returns the timestamp when the vault expires." },
|
|
756
|
+
"getLastSyncedAt(uint256)": {
|
|
757
|
+
"notice": "Returns the timestamp when the oracle price was last synced for a vault."
|
|
758
|
+
},
|
|
759
|
+
"getLastSyncedPrice(uint256)": { "notice": "Returns the oracle price stored for a vault." },
|
|
760
|
+
"getOracle(uint256)": { "notice": "Returns the oracle address set for a vault." },
|
|
761
|
+
"getShareToken(uint256)": { "notice": "Returns the address of the ERC-20 share token for a vault." },
|
|
762
|
+
"getTargetPrice(uint256)": { "notice": "Returns the target price at which the vault settles." },
|
|
763
|
+
"getUnderlyingToken(uint256)": { "notice": "Returns the ERC-20 token accepted for deposits in a vault." },
|
|
764
|
+
"isStakedInAdapter(uint256)": { "notice": "Returns whether the vault tokens are staked in an adapter." },
|
|
765
|
+
"nativeToken()": {
|
|
766
|
+
"notice": "Retrieves the address of the ERC-20 interface of the native token, if it exists."
|
|
767
|
+
},
|
|
768
|
+
"nextVaultId()": { "notice": "Counter for vault IDs, incremented every time a new vault is created." },
|
|
769
|
+
"onShareTransfer(uint256,address,address,uint256,uint256)": {
|
|
770
|
+
"notice": "Called by adapter when share tokens for a given vault are transferred between users. This is required for accounting of the yield generated by the adapter. Requirements: - The caller must be the share token contract stored in the given vault. - The calculated wstETH transfer amount must not be zero."
|
|
771
|
+
},
|
|
772
|
+
"redeem(uint256)": { "notice": "Redeem the tokens by burning user shares." },
|
|
773
|
+
"setComptroller(address)": { "notice": "Sets the comptroller to a new address." },
|
|
774
|
+
"setDefaultAdapter(address,address)": { "notice": "Sets the default adapter for a specific token." },
|
|
775
|
+
"setNativeToken(address)": { "notice": "Sets the native token address. Once set, it cannot be changed." },
|
|
776
|
+
"statusOf(uint256)": { "notice": "Returns the vault status." },
|
|
777
|
+
"syncPriceFromOracle(uint256)": {
|
|
778
|
+
"notice": "Fetches the latest price from the oracle set for a vault and updates it in the vault storage."
|
|
779
|
+
},
|
|
780
|
+
"transferFeesToComptroller()": { "notice": "Transfers the fees to the comptroller contract." },
|
|
781
|
+
"unstakeTokensViaAdapter(uint256)": { "notice": "Unstake all tokens from the adapter for a given vault." }
|
|
782
|
+
},
|
|
783
|
+
"version": 1
|
|
784
|
+
}
|
|
785
|
+
},
|
|
786
|
+
"settings": {
|
|
787
|
+
"remappings": [
|
|
788
|
+
"@arbitrum/=node_modules/@arbitrum/",
|
|
789
|
+
"@chainlink/=node_modules/@chainlink/",
|
|
790
|
+
"@eth-optimism/=node_modules/@eth-optimism/",
|
|
791
|
+
"@offchainlabs/=node_modules/@offchainlabs/",
|
|
792
|
+
"@openzeppelin/=node_modules/@openzeppelin/",
|
|
793
|
+
"@prb/=node_modules/@prb/",
|
|
794
|
+
"@sablier/=node_modules/@sablier/",
|
|
795
|
+
"@scroll-tech/=node_modules/@scroll-tech/",
|
|
796
|
+
"@zksync/=node_modules/@zksync/",
|
|
797
|
+
"forge-std/=node_modules/forge-std/"
|
|
798
|
+
],
|
|
799
|
+
"optimizer": { "enabled": true, "runs": 1000000 },
|
|
800
|
+
"metadata": { "bytecodeHash": "ipfs" },
|
|
801
|
+
"compilationTarget": { "src/interfaces/ISablierBob.sol": "ISablierBob" },
|
|
802
|
+
"evmVersion": "shanghai",
|
|
803
|
+
"libraries": {},
|
|
804
|
+
"viaIR": true
|
|
805
|
+
},
|
|
806
|
+
"sources": {
|
|
807
|
+
"node_modules/@chainlink/contracts/src/v0.8/shared/interfaces/AggregatorV3Interface.sol": {
|
|
808
|
+
"keccak256": "0x257a8d28fa83d3d942547c8e129ef465e4b5f3f31171e7be4739a4c98da6b4f0",
|
|
809
|
+
"urls": [
|
|
810
|
+
"bzz-raw://6d39e11b1dc7b9b8ccdabbc9be442ab7cda4a81c748f57e316dcb1bcb4a28bf9",
|
|
811
|
+
"dweb:/ipfs/QmaG6vz6W6iEUBsbHSBob5mdcitYxWjoygxREHpsJHfWrS"
|
|
812
|
+
],
|
|
813
|
+
"license": "MIT"
|
|
814
|
+
},
|
|
815
|
+
"node_modules/@openzeppelin/contracts/interfaces/draft-IERC1822.sol": {
|
|
816
|
+
"keccak256": "0xc42facb5094f2f35f066a7155bda23545e39a3156faef3ddc00185544443ba7d",
|
|
817
|
+
"urls": [
|
|
818
|
+
"bzz-raw://d3b36282ab029b46bd082619a308a2ea11c309967b9425b7b7a6eb0b0c1c3196",
|
|
819
|
+
"dweb:/ipfs/QmP2YVfDB2FoREax3vJu7QhDnyYRMw52WPrCD4vdT2kuDA"
|
|
820
|
+
],
|
|
821
|
+
"license": "MIT"
|
|
822
|
+
},
|
|
823
|
+
"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
|
|
824
|
+
"keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
|
|
825
|
+
"urls": [
|
|
826
|
+
"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
|
|
827
|
+
"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
|
|
828
|
+
],
|
|
829
|
+
"license": "MIT"
|
|
830
|
+
},
|
|
831
|
+
"node_modules/@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol": {
|
|
832
|
+
"keccak256": "0x70f2f713b13b7ce4610bcd0ac9fec0f3cc43693b043abcb8dc40a42a726eb330",
|
|
833
|
+
"urls": [
|
|
834
|
+
"bzz-raw://c13d13304ac79a83ab1c30168967d19e2203342ebbd6a9bbce4db7550522dcbf",
|
|
835
|
+
"dweb:/ipfs/QmeN5jKMN2vw5bhacr6tkg78afbTTZUeaacNHqjWt4Ew1r"
|
|
836
|
+
],
|
|
837
|
+
"license": "MIT"
|
|
838
|
+
},
|
|
839
|
+
"node_modules/@openzeppelin/contracts/utils/introspection/IERC165.sol": {
|
|
840
|
+
"keccak256": "0x79796192ec90263f21b464d5bc90b777a525971d3de8232be80d9c4f9fb353b8",
|
|
841
|
+
"urls": [
|
|
842
|
+
"bzz-raw://f6fda447a62815e8064f47eff0dd1cf58d9207ad69b5d32280f8d7ed1d1e4621",
|
|
843
|
+
"dweb:/ipfs/QmfDRc7pxfaXB2Dh9np5Uf29Na3pQ7tafRS684wd3GLjVL"
|
|
844
|
+
],
|
|
845
|
+
"license": "MIT"
|
|
846
|
+
},
|
|
847
|
+
"node_modules/@prb/math/src/Common.sol": {
|
|
848
|
+
"keccak256": "0x8225a3898d2f11f585da1fb82234800e9717fa080dbe53d450fd429a3a632e99",
|
|
849
|
+
"urls": [
|
|
850
|
+
"bzz-raw://2dcbf39ca575f68f32f0d1c66391de94082424956e7585e849813966f8c0fc05",
|
|
851
|
+
"dweb:/ipfs/QmYvk8vXFDUJHrmqbtutYXfoLomLBosYLyBzuPoYBxsQ42"
|
|
852
|
+
],
|
|
853
|
+
"license": "MIT"
|
|
854
|
+
},
|
|
855
|
+
"node_modules/@prb/math/src/UD60x18.sol": {
|
|
856
|
+
"keccak256": "0xb98c6f74275914d279e8af6c502c2b1f50d5f6e1ed418d3b0153f5a193206c48",
|
|
857
|
+
"urls": [
|
|
858
|
+
"bzz-raw://a750edde2955f160806a51083a12185fb04e20efca0e3a7ebd127dc1acc049a9",
|
|
859
|
+
"dweb:/ipfs/QmeAre3mThopoQPB9mSXZq6jck59QZ7JbDFR83urd2SLvp"
|
|
860
|
+
],
|
|
861
|
+
"license": "MIT"
|
|
862
|
+
},
|
|
863
|
+
"node_modules/@prb/math/src/sd1x18/Casting.sol": {
|
|
864
|
+
"keccak256": "0x5d365f655f01598926c5d4fe5cda277f2cc7736fe38f943c11a32009077ddd5c",
|
|
865
|
+
"urls": [
|
|
866
|
+
"bzz-raw://56b378bd6039819bc12e5f17dabd9492e1410b3281f9df496cf8210539101a11",
|
|
867
|
+
"dweb:/ipfs/QmcMaE64ZWMg9cFhYxdTuG8nfzeDdNuTRHMMoFXi6tSZGu"
|
|
868
|
+
],
|
|
869
|
+
"license": "MIT"
|
|
870
|
+
},
|
|
871
|
+
"node_modules/@prb/math/src/sd1x18/Constants.sol": {
|
|
872
|
+
"keccak256": "0xc14cc32061863d83912f9616de86f3c34f1ac58614b7d504c6ce07ee8efdb8e8",
|
|
873
|
+
"urls": [
|
|
874
|
+
"bzz-raw://22483b1282dda6a556b0232f008a5a3296bbfd76b1886e6b72bf351b7c554fab",
|
|
875
|
+
"dweb:/ipfs/QmYX9cYkrFxBbhZNKsb6uUxtrc2chmAj7vuc7UKRPGMwos"
|
|
876
|
+
],
|
|
877
|
+
"license": "MIT"
|
|
878
|
+
},
|
|
879
|
+
"node_modules/@prb/math/src/sd1x18/Errors.sol": {
|
|
880
|
+
"keccak256": "0xc3c8b1ab3d19889c356c222a3a2186d45dfc1d3a17b9ad88159bb64ee457baa6",
|
|
881
|
+
"urls": [
|
|
882
|
+
"bzz-raw://84fbe57569246403f778330bd7723018dfcb5f0ec50d7b1d82cc983c94a54bca",
|
|
883
|
+
"dweb:/ipfs/QmWssAAnovc2EVjt58rTnxraE9B1RMivwTvYCYgpnr6oSE"
|
|
884
|
+
],
|
|
885
|
+
"license": "MIT"
|
|
886
|
+
},
|
|
887
|
+
"node_modules/@prb/math/src/sd1x18/ValueType.sol": {
|
|
888
|
+
"keccak256": "0xaa9dc7b562faf45264390d80e2ea10c5295bb8a4f10d76261a3f9c04363734c0",
|
|
889
|
+
"urls": [
|
|
890
|
+
"bzz-raw://c6ca36acd15f5cb47cf124ddec289f84e1011f2d29056159e4570435629a3353",
|
|
891
|
+
"dweb:/ipfs/QmUKdiLmZpAkNCq2TKxrPbQPUhiRFXGfjGSnY1VeHVu4y6"
|
|
892
|
+
],
|
|
893
|
+
"license": "MIT"
|
|
894
|
+
},
|
|
895
|
+
"node_modules/@prb/math/src/sd21x18/Casting.sol": {
|
|
896
|
+
"keccak256": "0x4a16adddb9ab1f6939dd4567c77205015a11081cb840029b84bbb6fdaf78ee36",
|
|
897
|
+
"urls": [
|
|
898
|
+
"bzz-raw://5003b2f4cd2fc1413da36bc63107c6e83a88d29693e8f97b54f300fa78f9c6d2",
|
|
899
|
+
"dweb:/ipfs/QmaNJn91NLrZmeeGqnFQV1FTrLVSW852zHyWTrWJ5pf1pd"
|
|
900
|
+
],
|
|
901
|
+
"license": "MIT"
|
|
902
|
+
},
|
|
903
|
+
"node_modules/@prb/math/src/sd21x18/Constants.sol": {
|
|
904
|
+
"keccak256": "0x501c2d5cfdea9450422182059c8df1cb6a859901a07bd59631c3fa24edcc79d4",
|
|
905
|
+
"urls": [
|
|
906
|
+
"bzz-raw://4669a65001c92919671fd879d33ce0e5030b602a7ba4d36bd2308128d8d1f396",
|
|
907
|
+
"dweb:/ipfs/QmUC3bJ3qdkCmLMw3WHBcEqvuC4tExT2LXzUhgu5KQ3vi3"
|
|
908
|
+
],
|
|
909
|
+
"license": "MIT"
|
|
910
|
+
},
|
|
911
|
+
"node_modules/@prb/math/src/sd21x18/Errors.sol": {
|
|
912
|
+
"keccak256": "0xc5422ee47eb139274e538e758fb40177a1ba22c2113ef3b3446102f0150bfe0a",
|
|
913
|
+
"urls": [
|
|
914
|
+
"bzz-raw://a1981e052e9e86e1b0e4e55a057a7af4739aedd4ead2d60e3eaa40fb703594ee",
|
|
915
|
+
"dweb:/ipfs/QmPK5qSujnyk1R8ues4RhDMy1tRKKyjQ31YJTviTKq7GML"
|
|
916
|
+
],
|
|
917
|
+
"license": "MIT"
|
|
918
|
+
},
|
|
919
|
+
"node_modules/@prb/math/src/sd21x18/ValueType.sol": {
|
|
920
|
+
"keccak256": "0x532bba888370bed393464412f4ef3462d654802e71c953ad02d078e3d2701092",
|
|
921
|
+
"urls": [
|
|
922
|
+
"bzz-raw://922a4e8dd813602f72d165aa1dfdf2c29b971a2abe73bebca7cd81a32ee2c880",
|
|
923
|
+
"dweb:/ipfs/QmTBAJnx1r3sZpbQAuTgQtsTtvjZbpDwhCJRzkhzUumbdf"
|
|
924
|
+
],
|
|
925
|
+
"license": "MIT"
|
|
926
|
+
},
|
|
927
|
+
"node_modules/@prb/math/src/sd59x18/Casting.sol": {
|
|
928
|
+
"keccak256": "0xdf70d8e70c6d6325f3f7eb028c484bc7189ef902f1d4b5b220af2e550bb5fc39",
|
|
929
|
+
"urls": [
|
|
930
|
+
"bzz-raw://0b15bcd36129c5cb163d57a117435afb171182018dd6d1e766a5f49cf1f4b63d",
|
|
931
|
+
"dweb:/ipfs/QmbjzkMBH4FM2rdxGbx9LQ65wVERijNcu7R9C8dQmH3y4n"
|
|
932
|
+
],
|
|
933
|
+
"license": "MIT"
|
|
934
|
+
},
|
|
935
|
+
"node_modules/@prb/math/src/sd59x18/Constants.sol": {
|
|
936
|
+
"keccak256": "0x9bcb8dd6b3e886d140ad1c32747a4f6d29a492529ceb835be878ae837aa6cc3a",
|
|
937
|
+
"urls": [
|
|
938
|
+
"bzz-raw://c4045c633e3618e7e90a768d92415b2f20f781fe129b4f4e26fa88f7dbf9201f",
|
|
939
|
+
"dweb:/ipfs/Qmbet95pizwPno82cJ383wJtgQRSQKESmhVZ1vDrgAu7Si"
|
|
940
|
+
],
|
|
941
|
+
"license": "MIT"
|
|
942
|
+
},
|
|
943
|
+
"node_modules/@prb/math/src/sd59x18/Errors.sol": {
|
|
944
|
+
"keccak256": "0x0a79c28c85fc8a450b0801ff2e66114eac4ec565819f5d1d8738904658fe33e2",
|
|
945
|
+
"urls": [
|
|
946
|
+
"bzz-raw://9e0d4fd3c998019fb8555d9e26c03bec42a8513bdf4185aeac2da3a000abaebf",
|
|
947
|
+
"dweb:/ipfs/QmahFJHXcX4RwPxaQbUf6LVZEk8NSpjCV3Eif7i9iqC6Mk"
|
|
948
|
+
],
|
|
949
|
+
"license": "MIT"
|
|
950
|
+
},
|
|
951
|
+
"node_modules/@prb/math/src/sd59x18/Helpers.sol": {
|
|
952
|
+
"keccak256": "0x208570f1657cf730cb6c3d81aa14030e0d45cf906cdedea5059369d7df4bb716",
|
|
953
|
+
"urls": [
|
|
954
|
+
"bzz-raw://4c78ca900edafa9338d4e3649a55ab0c84f76468d8a22fb945ba6d01e70f8fed",
|
|
955
|
+
"dweb:/ipfs/QmeP4hQYfNxcATd1FsasdD4ebyu2vrC9K1N68swxUJzzZD"
|
|
956
|
+
],
|
|
957
|
+
"license": "MIT"
|
|
958
|
+
},
|
|
959
|
+
"node_modules/@prb/math/src/sd59x18/Math.sol": {
|
|
960
|
+
"keccak256": "0xd8e8b51db9b3e2fa31a60f6b8ce4ea0112c3364442ede5992aa0aa7a2c925c84",
|
|
961
|
+
"urls": [
|
|
962
|
+
"bzz-raw://3c56913970e34ee7b142047b21f1856a511cbdc3473b7c50418a8490e19cd462",
|
|
963
|
+
"dweb:/ipfs/QmfG1F9CBDjPYD7NXora9awFfdpvBMY9SCg5pMLCFRv9tD"
|
|
964
|
+
],
|
|
965
|
+
"license": "MIT"
|
|
966
|
+
},
|
|
967
|
+
"node_modules/@prb/math/src/sd59x18/ValueType.sol": {
|
|
968
|
+
"keccak256": "0x76597ba64d37d66e0178512bc9bbc1a031a7634c45e5d5c6e9da87f46952dc9d",
|
|
969
|
+
"urls": [
|
|
970
|
+
"bzz-raw://36148899ad874814e9292636fb974d2eec61f1bcc0875ec39cf444d70ba40919",
|
|
971
|
+
"dweb:/ipfs/QmadUe4kH2FPcdxvhCKy8yiezCvPWor4VcPzqLYSAaGDDb"
|
|
972
|
+
],
|
|
973
|
+
"license": "MIT"
|
|
974
|
+
},
|
|
975
|
+
"node_modules/@prb/math/src/ud21x18/Casting.sol": {
|
|
976
|
+
"keccak256": "0x3821aa57604f6e5b7c9c5c5cc97a6d71116e673cf3fee5f76fcd42b4cefded65",
|
|
977
|
+
"urls": [
|
|
978
|
+
"bzz-raw://a80399c6b38ab45cc10d0a6683d50340cd89d9a085b6d0dcfb81e7c4e5b3ce09",
|
|
979
|
+
"dweb:/ipfs/QmWNW2YD2LMkqrpAtJYeeuHN329Rx7mvfmrjsCo1p6akTL"
|
|
980
|
+
],
|
|
981
|
+
"license": "MIT"
|
|
982
|
+
},
|
|
983
|
+
"node_modules/@prb/math/src/ud21x18/Constants.sol": {
|
|
984
|
+
"keccak256": "0x0997574a1ced6c43bde6d9c9175edc5ad64cbb920a0969a9db68eea543747601",
|
|
985
|
+
"urls": [
|
|
986
|
+
"bzz-raw://c09f03345a6779b002b38ffc3954258accbb2b1d0d5506d42c3bd7f117304f60",
|
|
987
|
+
"dweb:/ipfs/QmTeBXRCE7H2HpqKUNsZN7Nk3rdBnFmbAUFom3E1PJeGuV"
|
|
988
|
+
],
|
|
989
|
+
"license": "MIT"
|
|
990
|
+
},
|
|
991
|
+
"node_modules/@prb/math/src/ud21x18/Errors.sol": {
|
|
992
|
+
"keccak256": "0x35a1fb789b90f8c90865884d3023deb17fcca5c7146b5ddef823496d835a5415",
|
|
993
|
+
"urls": [
|
|
994
|
+
"bzz-raw://0af359d07ba25bdc90de7c05ed6216833932caa75d4a02fcfc51ceeaba5a4e80",
|
|
995
|
+
"dweb:/ipfs/QmavBFw73Xfp1qJiN6P1gk2Dfr8ByWo3dyCPVgDHtko2gq"
|
|
996
|
+
],
|
|
997
|
+
"license": "MIT"
|
|
998
|
+
},
|
|
999
|
+
"node_modules/@prb/math/src/ud21x18/ValueType.sol": {
|
|
1000
|
+
"keccak256": "0x24838b2b1da371b9259d8ee21534a9f0cb5796aba75a4efca2374627952bee25",
|
|
1001
|
+
"urls": [
|
|
1002
|
+
"bzz-raw://897e6b79308651671c7f3c91a0069e778b47356c9ba3f86e238398ab7f2623af",
|
|
1003
|
+
"dweb:/ipfs/QmZbLw3tJVRZFQnV9jWQUmF43gna841adSG2TAiwDAifGU"
|
|
1004
|
+
],
|
|
1005
|
+
"license": "MIT"
|
|
1006
|
+
},
|
|
1007
|
+
"node_modules/@prb/math/src/ud2x18/Casting.sol": {
|
|
1008
|
+
"keccak256": "0x0f3141ed054e7c29dbe1acb4b88b18eb05d60e998fba6b4e503a6799faa356d6",
|
|
1009
|
+
"urls": [
|
|
1010
|
+
"bzz-raw://b1e2468fc4c458082aaf4aa2e35af9ba3702f207e3c8533dd1e7da11ad605eae",
|
|
1011
|
+
"dweb:/ipfs/QmSm7iRH1eo4cJCwcAiiXWRH9Hn1urSS4tMdbaFbFGuTyL"
|
|
1012
|
+
],
|
|
1013
|
+
"license": "MIT"
|
|
1014
|
+
},
|
|
1015
|
+
"node_modules/@prb/math/src/ud2x18/Constants.sol": {
|
|
1016
|
+
"keccak256": "0x29b0e050c865899e1fb9022b460a7829cdee248c44c4299f068ba80695eec3fc",
|
|
1017
|
+
"urls": [
|
|
1018
|
+
"bzz-raw://cbaef16b662fac235349bcf97bc980dd0cba15d4e6230caae61224cdac8ea6d9",
|
|
1019
|
+
"dweb:/ipfs/QmZQa5XBhi7k3yhtCd8wVpnwW8htfU4sjXxWhxRypMBYkC"
|
|
1020
|
+
],
|
|
1021
|
+
"license": "MIT"
|
|
1022
|
+
},
|
|
1023
|
+
"node_modules/@prb/math/src/ud2x18/Errors.sol": {
|
|
1024
|
+
"keccak256": "0x3b27e2a57438cd30d9c130f84aace24d547e5ed58e8689691d7d92ad2db38ddd",
|
|
1025
|
+
"urls": [
|
|
1026
|
+
"bzz-raw://841cf9fb45443899c6b659300bbf503c3fd2c1a1e83b7f0e28620eed457f7437",
|
|
1027
|
+
"dweb:/ipfs/QmUqg8WscP5yQPw3UMUCWaB9RLU6nryGzseuyhAjNnDc1i"
|
|
1028
|
+
],
|
|
1029
|
+
"license": "MIT"
|
|
1030
|
+
},
|
|
1031
|
+
"node_modules/@prb/math/src/ud2x18/ValueType.sol": {
|
|
1032
|
+
"keccak256": "0x975a2e69b48f34a4c0bd80e8a5609ac67b7264c91992c0944f9ebe7b9e3fc9d0",
|
|
1033
|
+
"urls": [
|
|
1034
|
+
"bzz-raw://65d012521c475295d7e70b7d526fcc0911d0f238ea938719d77251bba00c9b41",
|
|
1035
|
+
"dweb:/ipfs/QmexEvTQCCBPYRWAYnomZX5M7C2EkXQRAXqEYMNUZfazCs"
|
|
1036
|
+
],
|
|
1037
|
+
"license": "MIT"
|
|
1038
|
+
},
|
|
1039
|
+
"node_modules/@prb/math/src/ud60x18/Casting.sol": {
|
|
1040
|
+
"keccak256": "0x0803318ddc98b4ba8fbfe70e5ee08d78387fe6ae00982b9960518085a751d7b6",
|
|
1041
|
+
"urls": [
|
|
1042
|
+
"bzz-raw://2e68a2f780b2e33fa5416eb60f9daa81f014c2591119f4b67bed1217d5530780",
|
|
1043
|
+
"dweb:/ipfs/QmZe7JTWvbfKqMnu4sxUwWCtLcCay9hH71VZUpoFCdENcr"
|
|
1044
|
+
],
|
|
1045
|
+
"license": "MIT"
|
|
1046
|
+
},
|
|
1047
|
+
"node_modules/@prb/math/src/ud60x18/Constants.sol": {
|
|
1048
|
+
"keccak256": "0x2b80d26153d3fdcfb3a9ca772d9309d31ed1275f5b8b54c3ffb54d3652b37d90",
|
|
1049
|
+
"urls": [
|
|
1050
|
+
"bzz-raw://7e3a6673a156f635db94dc176baaa7274db8f9bec4461cd1152596253550ee3b",
|
|
1051
|
+
"dweb:/ipfs/Qmc9zT4kNSbMYaXcnbxNVqmb3P3m46ieaQxkwxqLwsvRA5"
|
|
1052
|
+
],
|
|
1053
|
+
"license": "MIT"
|
|
1054
|
+
},
|
|
1055
|
+
"node_modules/@prb/math/src/ud60x18/Conversions.sol": {
|
|
1056
|
+
"keccak256": "0xd486ecca97abe69acdb28230088f4c7097fbdae5b36c5ae45d5be2faac4c33f2",
|
|
1057
|
+
"urls": [
|
|
1058
|
+
"bzz-raw://6080870ec6955ff0f5278f9c480b218a68714daf5f2ee42da0276d08d7b82932",
|
|
1059
|
+
"dweb:/ipfs/QmQ1SERHdemJgPrt4USwY8j5r63jZ8fQuJAm1knjMEEQEY"
|
|
1060
|
+
],
|
|
1061
|
+
"license": "MIT"
|
|
1062
|
+
},
|
|
1063
|
+
"node_modules/@prb/math/src/ud60x18/Errors.sol": {
|
|
1064
|
+
"keccak256": "0xbab6b0e303d32f3a9d9e2fe881f0392b8c59a73051a4d34f21a403b3961b3044",
|
|
1065
|
+
"urls": [
|
|
1066
|
+
"bzz-raw://86a019bcf2510d0691287329dc057479cc0abc48a5e15f245e7f15c03052d2c8",
|
|
1067
|
+
"dweb:/ipfs/QmeXe5pbpDHvN5DZ8puXmH2RJ25zDHj55wpiStWtNQPvq6"
|
|
1068
|
+
],
|
|
1069
|
+
"license": "MIT"
|
|
1070
|
+
},
|
|
1071
|
+
"node_modules/@prb/math/src/ud60x18/Helpers.sol": {
|
|
1072
|
+
"keccak256": "0xf5faff881391d2c060029499a666cc5f0bea90a213150bb476fae8f02a5df268",
|
|
1073
|
+
"urls": [
|
|
1074
|
+
"bzz-raw://76105fa22bb1b5f1fa99abf9c4fbc9577a02c7bc204f271754c407f0d75489f5",
|
|
1075
|
+
"dweb:/ipfs/QmVNGZSTniDuZus5DdbFubqJXCLtTaZit7YPm4ntjr5Lgr"
|
|
1076
|
+
],
|
|
1077
|
+
"license": "MIT"
|
|
1078
|
+
},
|
|
1079
|
+
"node_modules/@prb/math/src/ud60x18/Math.sol": {
|
|
1080
|
+
"keccak256": "0xc4e51dfd9af62938e277e90fa724099f239d33727a35909ed48c292a76faf2fc",
|
|
1081
|
+
"urls": [
|
|
1082
|
+
"bzz-raw://d731537cbc50b852c21d28625aeb2c329729afc23a7b86ff9d8ee5878f47e9d6",
|
|
1083
|
+
"dweb:/ipfs/QmS7Cj4pAdPZcTp7RqYXyxBc9EYX92CT8icfkNigktUsLr"
|
|
1084
|
+
],
|
|
1085
|
+
"license": "MIT"
|
|
1086
|
+
},
|
|
1087
|
+
"node_modules/@prb/math/src/ud60x18/ValueType.sol": {
|
|
1088
|
+
"keccak256": "0x1b200baf25d01a8b91b97b42114248636f742b5b7028487ef4daef6621e378a3",
|
|
1089
|
+
"urls": [
|
|
1090
|
+
"bzz-raw://b5708ed017206bda2197654e80bea9f37b3a9993434bb066c903c2865e028f47",
|
|
1091
|
+
"dweb:/ipfs/QmTyotZk2J5YvWkNvB2qhXBMgRGWW2UgPqR4JPocrXSr8n"
|
|
1092
|
+
],
|
|
1093
|
+
"license": "MIT"
|
|
1094
|
+
},
|
|
1095
|
+
"node_modules/@sablier/evm-utils/src/interfaces/IAdminable.sol": {
|
|
1096
|
+
"keccak256": "0x3228d63e9b0b951030c73c42bb071e64f0ff0eadbcbeefad3f29a48366539c26",
|
|
1097
|
+
"urls": [
|
|
1098
|
+
"bzz-raw://acc90ad2bec0e84349b56611b35b56bfb75a5930fd1babb2bd638fbbb15bd126",
|
|
1099
|
+
"dweb:/ipfs/QmSLnHx6bo4BQeBKYferfEhZo1Z4xCXdDF1bzJoHUafHt4"
|
|
1100
|
+
],
|
|
1101
|
+
"license": "GPL-3.0-or-later"
|
|
1102
|
+
},
|
|
1103
|
+
"node_modules/@sablier/evm-utils/src/interfaces/IComptrollerable.sol": {
|
|
1104
|
+
"keccak256": "0xdbc32762b87590be38095a84789906fa7a23fd2c2c112859504549ef3be17522",
|
|
1105
|
+
"urls": [
|
|
1106
|
+
"bzz-raw://14ac13726bb7435ce310dd437a9b58852ca0c35640949e898c803a33a30dee8b",
|
|
1107
|
+
"dweb:/ipfs/QmeeKPApvBHbUF3S98qCnB26Aw67KTQF2GFyGQZCxykyMW"
|
|
1108
|
+
],
|
|
1109
|
+
"license": "GPL-3.0-or-later"
|
|
1110
|
+
},
|
|
1111
|
+
"node_modules/@sablier/evm-utils/src/interfaces/IRoleAdminable.sol": {
|
|
1112
|
+
"keccak256": "0x391cb4bd4bae01e3efdb84f63635644ed6329b72e8a5105ad53833551e8ba825",
|
|
1113
|
+
"urls": [
|
|
1114
|
+
"bzz-raw://ccca9da1c044c15cf0b647a4572c05f5d498fb18b3685a85a8836f7110cb1bc4",
|
|
1115
|
+
"dweb:/ipfs/QmfAKHqvgKQUgpC6VomTjTkc1tDnsbVJD5bLn8wL8KuTFV"
|
|
1116
|
+
],
|
|
1117
|
+
"license": "GPL-3.0-or-later"
|
|
1118
|
+
},
|
|
1119
|
+
"node_modules/@sablier/evm-utils/src/interfaces/ISablierComptroller.sol": {
|
|
1120
|
+
"keccak256": "0x5c52e70a6c083611d4b5518d17d025f70d322ee2c61d81f20f3fe50f4bd824ba",
|
|
1121
|
+
"urls": [
|
|
1122
|
+
"bzz-raw://5c07b2076065f1c65a59176ada3459be53f78e59a2055d9ae92b226edafa484c",
|
|
1123
|
+
"dweb:/ipfs/QmXYRDkBSWUBza1pi439ErzeLoaLUT8Zvj2yWcFZ5F1rgX"
|
|
1124
|
+
],
|
|
1125
|
+
"license": "GPL-3.0-or-later"
|
|
1126
|
+
},
|
|
1127
|
+
"src/interfaces/IBobVaultShare.sol": {
|
|
1128
|
+
"keccak256": "0x7e91f71800b33ce26fa757b8d74d0e89aaf2de6ee50260a706c4c26029ae4c22",
|
|
1129
|
+
"urls": [
|
|
1130
|
+
"bzz-raw://18e85a71eef03972eb19a277ca025c645b18aa768c03a2b1e7d81de9eeabe731",
|
|
1131
|
+
"dweb:/ipfs/QmbjGtkps9KvG6XBysNLB9eBoY5E47ixkTDtN8cYYRzA6b"
|
|
1132
|
+
],
|
|
1133
|
+
"license": "GPL-3.0-or-later"
|
|
1134
|
+
},
|
|
1135
|
+
"src/interfaces/ISablierBob.sol": {
|
|
1136
|
+
"keccak256": "0x2c21ee1f24d0443a9daf745ef2f5ccfe339120f19484565d31a46a1af09e8edc",
|
|
1137
|
+
"urls": [
|
|
1138
|
+
"bzz-raw://1dce1fb1847e2c9fb562f9e5c8cb71d9a9d5a3b4a56ba9575ff0c7d5240b3af9",
|
|
1139
|
+
"dweb:/ipfs/QmZbFLtUYRV9TTw6PTsJmvhrD5BwautoUbLbj5WoVYiTPP"
|
|
1140
|
+
],
|
|
1141
|
+
"license": "GPL-3.0-or-later"
|
|
1142
|
+
},
|
|
1143
|
+
"src/interfaces/ISablierBobAdapter.sol": {
|
|
1144
|
+
"keccak256": "0xeb24411e0d4be288e600b9893bcf5bcfd3e38d7f2313bb68b323b2ba19d97921",
|
|
1145
|
+
"urls": [
|
|
1146
|
+
"bzz-raw://0308e63f7a7d9af68f7109bf500e186cd06760f708242c11e4dcdf5baa14638e",
|
|
1147
|
+
"dweb:/ipfs/Qmdn9ViABMqhTbRMY9yHMneqD8dMY8ysqjUMVbsGJ3GVPK"
|
|
1148
|
+
],
|
|
1149
|
+
"license": "GPL-3.0-or-later"
|
|
1150
|
+
},
|
|
1151
|
+
"src/interfaces/ISablierBobState.sol": {
|
|
1152
|
+
"keccak256": "0xc216153d326b2b02f62fe2a02edea29a194bf850d6c5d4d1d1c618cd68bfdd5c",
|
|
1153
|
+
"urls": [
|
|
1154
|
+
"bzz-raw://0e1c2c6b58098552b70febc6a4876c2b89fb894994049c840882c346d7e094ee",
|
|
1155
|
+
"dweb:/ipfs/QmWxBShVcnGCrjHfBhPH15cdLA7mtmN6QaSBSM7ZWae85Q"
|
|
1156
|
+
],
|
|
1157
|
+
"license": "GPL-3.0-or-later"
|
|
1158
|
+
},
|
|
1159
|
+
"src/types/Bob.sol": {
|
|
1160
|
+
"keccak256": "0xf156bfc6b369fd9006e47e3a2531108e515878f60977987def9069b6148cbba3",
|
|
1161
|
+
"urls": [
|
|
1162
|
+
"bzz-raw://5e2d1205de5dc31ffc76045c05b5fc9ad927346ff3a6be9ee7ee9dcd6c28bb1a",
|
|
1163
|
+
"dweb:/ipfs/QmeuUm54PyaS2NZ728zy3Cqnsm5BZxaGAZdQrBY85Tejdx"
|
|
1164
|
+
],
|
|
1165
|
+
"license": "GPL-3.0-or-later"
|
|
1166
|
+
}
|
|
1167
|
+
},
|
|
1168
|
+
"version": 1
|
|
1169
|
+
},
|
|
1170
|
+
"id": 87
|
|
1171
|
+
}
|