@sablier/bob 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/LICENSE-BUSL.md +82 -0
  3. package/LICENSE-GPL.md +470 -0
  4. package/LICENSE.md +9 -0
  5. package/README.md +81 -0
  6. package/artifacts/BobVaultShare.json +936 -0
  7. package/artifacts/SablierBob.json +1683 -0
  8. package/artifacts/SablierEscrow.json +1316 -0
  9. package/artifacts/SablierLidoAdapter.json +1649 -0
  10. package/artifacts/erc20/IERC20.json +226 -0
  11. package/artifacts/interfaces/IBobVaultShare.json +393 -0
  12. package/artifacts/interfaces/ISablierBob.json +1171 -0
  13. package/artifacts/interfaces/ISablierEscrow.json +999 -0
  14. package/artifacts/interfaces/ISablierLidoAdapter.json +1141 -0
  15. package/artifacts/interfaces/external/ICurveStETHPool.json +128 -0
  16. package/artifacts/interfaces/external/ILidoWithdrawalQueue.json +209 -0
  17. package/artifacts/interfaces/external/IStETH.json +262 -0
  18. package/artifacts/interfaces/external/IWETH9.json +259 -0
  19. package/artifacts/interfaces/external/IWstETH.json +311 -0
  20. package/artifacts/libraries/Errors.json +868 -0
  21. package/package.json +68 -0
  22. package/src/BobVaultShare.sol +119 -0
  23. package/src/SablierBob.sol +543 -0
  24. package/src/SablierEscrow.sol +288 -0
  25. package/src/SablierLidoAdapter.sol +549 -0
  26. package/src/abstracts/SablierBobState.sol +156 -0
  27. package/src/abstracts/SablierEscrowState.sol +159 -0
  28. package/src/interfaces/IBobVaultShare.sol +51 -0
  29. package/src/interfaces/ISablierBob.sol +261 -0
  30. package/src/interfaces/ISablierBobAdapter.sol +157 -0
  31. package/src/interfaces/ISablierBobState.sol +74 -0
  32. package/src/interfaces/ISablierEscrow.sol +148 -0
  33. package/src/interfaces/ISablierEscrowState.sol +77 -0
  34. package/src/interfaces/ISablierLidoAdapter.sol +110 -0
  35. package/src/interfaces/external/ICurveStETHPool.sol +31 -0
  36. package/src/interfaces/external/ILidoWithdrawalQueue.sol +67 -0
  37. package/src/interfaces/external/IStETH.sol +18 -0
  38. package/src/interfaces/external/IWETH9.sol +19 -0
  39. package/src/interfaces/external/IWstETH.sol +32 -0
  40. package/src/libraries/Errors.sol +189 -0
  41. package/src/types/Bob.sol +49 -0
  42. package/src/types/Escrow.sol +49 -0
@@ -0,0 +1,226 @@
1
+ {
2
+ "abi": [
3
+ {
4
+ "type": "function",
5
+ "name": "allowance",
6
+ "inputs": [
7
+ { "name": "owner", "type": "address", "internalType": "address" },
8
+ { "name": "spender", "type": "address", "internalType": "address" }
9
+ ],
10
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
11
+ "stateMutability": "view"
12
+ },
13
+ {
14
+ "type": "function",
15
+ "name": "approve",
16
+ "inputs": [
17
+ { "name": "spender", "type": "address", "internalType": "address" },
18
+ { "name": "value", "type": "uint256", "internalType": "uint256" }
19
+ ],
20
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
21
+ "stateMutability": "nonpayable"
22
+ },
23
+ {
24
+ "type": "function",
25
+ "name": "balanceOf",
26
+ "inputs": [{ "name": "account", "type": "address", "internalType": "address" }],
27
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
28
+ "stateMutability": "view"
29
+ },
30
+ {
31
+ "type": "function",
32
+ "name": "totalSupply",
33
+ "inputs": [],
34
+ "outputs": [{ "name": "", "type": "uint256", "internalType": "uint256" }],
35
+ "stateMutability": "view"
36
+ },
37
+ {
38
+ "type": "function",
39
+ "name": "transfer",
40
+ "inputs": [
41
+ { "name": "to", "type": "address", "internalType": "address" },
42
+ { "name": "value", "type": "uint256", "internalType": "uint256" }
43
+ ],
44
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
45
+ "stateMutability": "nonpayable"
46
+ },
47
+ {
48
+ "type": "function",
49
+ "name": "transferFrom",
50
+ "inputs": [
51
+ { "name": "from", "type": "address", "internalType": "address" },
52
+ { "name": "to", "type": "address", "internalType": "address" },
53
+ { "name": "value", "type": "uint256", "internalType": "uint256" }
54
+ ],
55
+ "outputs": [{ "name": "", "type": "bool", "internalType": "bool" }],
56
+ "stateMutability": "nonpayable"
57
+ },
58
+ {
59
+ "type": "event",
60
+ "name": "Approval",
61
+ "inputs": [
62
+ { "name": "owner", "type": "address", "indexed": true, "internalType": "address" },
63
+ { "name": "spender", "type": "address", "indexed": true, "internalType": "address" },
64
+ { "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
65
+ ],
66
+ "anonymous": false
67
+ },
68
+ {
69
+ "type": "event",
70
+ "name": "Transfer",
71
+ "inputs": [
72
+ { "name": "from", "type": "address", "indexed": true, "internalType": "address" },
73
+ { "name": "to", "type": "address", "indexed": true, "internalType": "address" },
74
+ { "name": "value", "type": "uint256", "indexed": false, "internalType": "uint256" }
75
+ ],
76
+ "anonymous": false
77
+ }
78
+ ],
79
+ "bytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
80
+ "deployedBytecode": { "object": "0x", "sourceMap": "", "linkReferences": {} },
81
+ "methodIdentifiers": {
82
+ "allowance(address,address)": "dd62ed3e",
83
+ "approve(address,uint256)": "095ea7b3",
84
+ "balanceOf(address)": "70a08231",
85
+ "totalSupply()": "18160ddd",
86
+ "transfer(address,uint256)": "a9059cbb",
87
+ "transferFrom(address,address,uint256)": "23b872dd"
88
+ },
89
+ "rawMetadata": "{\"compiler\":{\"version\":\"0.8.29+commit.ab55807c\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Approval\",\"type\":\"event\"},{\"anonymous\":false,\"inputs\":[{\"indexed\":true,\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"indexed\":true,\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"indexed\":false,\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"Transfer\",\"type\":\"event\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"owner\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"}],\"name\":\"allowance\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"spender\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"approve\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"account\",\"type\":\"address\"}],\"name\":\"balanceOf\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[],\"name\":\"totalSupply\",\"outputs\":[{\"internalType\":\"uint256\",\"name\":\"\",\"type\":\"uint256\"}],\"stateMutability\":\"view\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transfer\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"inputs\":[{\"internalType\":\"address\",\"name\":\"from\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"to\",\"type\":\"address\"},{\"internalType\":\"uint256\",\"name\":\"value\",\"type\":\"uint256\"}],\"name\":\"transferFrom\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"details\":\"Interface of the ERC-20 standard as defined in the ERC.\",\"events\":{\"Approval(address,address,uint256)\":{\"details\":\"Emitted when the allowance of a `spender` for an `owner` is set by a call to {approve}. `value` is the new allowance.\"},\"Transfer(address,address,uint256)\":{\"details\":\"Emitted when `value` tokens are moved from one account (`from`) to another (`to`). Note that `value` may be zero.\"}},\"kind\":\"dev\",\"methods\":{\"allowance(address,address)\":{\"details\":\"Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called.\"},\"approve(address,uint256)\":{\"details\":\"Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event.\"},\"balanceOf(address)\":{\"details\":\"Returns the value of tokens owned by `account`.\"},\"totalSupply()\":{\"details\":\"Returns the value of tokens in existence.\"},\"transfer(address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"},\"transferFrom(address,address,uint256)\":{\"details\":\"Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event.\"}},\"version\":1},\"userdoc\":{\"kind\":\"user\",\"methods\":{},\"version\":1}},\"settings\":{\"compilationTarget\":{\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":\"IERC20\"},\"evmVersion\":\"shanghai\",\"libraries\":{},\"metadata\":{\"bytecodeHash\":\"ipfs\"},\"optimizer\":{\"enabled\":true,\"runs\":1000000},\"remappings\":[\":@arbitrum/=node_modules/@arbitrum/\",\":@chainlink/=node_modules/@chainlink/\",\":@eth-optimism/=node_modules/@eth-optimism/\",\":@offchainlabs/=node_modules/@offchainlabs/\",\":@openzeppelin/=node_modules/@openzeppelin/\",\":@prb/=node_modules/@prb/\",\":@sablier/=node_modules/@sablier/\",\":@scroll-tech/=node_modules/@scroll-tech/\",\":@zksync/=node_modules/@zksync/\",\":forge-std/=node_modules/forge-std/\"],\"viaIR\":true},\"sources\":{\"node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol\":{\"keccak256\":\"0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7\",\"license\":\"MIT\",\"urls\":[\"bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db\",\"dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9\"]}},\"version\":1}",
90
+ "metadata": {
91
+ "compiler": { "version": "0.8.29+commit.ab55807c" },
92
+ "language": "Solidity",
93
+ "output": {
94
+ "abi": [
95
+ {
96
+ "inputs": [
97
+ { "internalType": "address", "name": "owner", "type": "address", "indexed": true },
98
+ { "internalType": "address", "name": "spender", "type": "address", "indexed": true },
99
+ { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false }
100
+ ],
101
+ "type": "event",
102
+ "name": "Approval",
103
+ "anonymous": false
104
+ },
105
+ {
106
+ "inputs": [
107
+ { "internalType": "address", "name": "from", "type": "address", "indexed": true },
108
+ { "internalType": "address", "name": "to", "type": "address", "indexed": true },
109
+ { "internalType": "uint256", "name": "value", "type": "uint256", "indexed": false }
110
+ ],
111
+ "type": "event",
112
+ "name": "Transfer",
113
+ "anonymous": false
114
+ },
115
+ {
116
+ "inputs": [
117
+ { "internalType": "address", "name": "owner", "type": "address" },
118
+ { "internalType": "address", "name": "spender", "type": "address" }
119
+ ],
120
+ "stateMutability": "view",
121
+ "type": "function",
122
+ "name": "allowance",
123
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
124
+ },
125
+ {
126
+ "inputs": [
127
+ { "internalType": "address", "name": "spender", "type": "address" },
128
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
129
+ ],
130
+ "stateMutability": "nonpayable",
131
+ "type": "function",
132
+ "name": "approve",
133
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
134
+ },
135
+ {
136
+ "inputs": [{ "internalType": "address", "name": "account", "type": "address" }],
137
+ "stateMutability": "view",
138
+ "type": "function",
139
+ "name": "balanceOf",
140
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
141
+ },
142
+ {
143
+ "inputs": [],
144
+ "stateMutability": "view",
145
+ "type": "function",
146
+ "name": "totalSupply",
147
+ "outputs": [{ "internalType": "uint256", "name": "", "type": "uint256" }]
148
+ },
149
+ {
150
+ "inputs": [
151
+ { "internalType": "address", "name": "to", "type": "address" },
152
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
153
+ ],
154
+ "stateMutability": "nonpayable",
155
+ "type": "function",
156
+ "name": "transfer",
157
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
158
+ },
159
+ {
160
+ "inputs": [
161
+ { "internalType": "address", "name": "from", "type": "address" },
162
+ { "internalType": "address", "name": "to", "type": "address" },
163
+ { "internalType": "uint256", "name": "value", "type": "uint256" }
164
+ ],
165
+ "stateMutability": "nonpayable",
166
+ "type": "function",
167
+ "name": "transferFrom",
168
+ "outputs": [{ "internalType": "bool", "name": "", "type": "bool" }]
169
+ }
170
+ ],
171
+ "devdoc": {
172
+ "kind": "dev",
173
+ "methods": {
174
+ "allowance(address,address)": {
175
+ "details": "Returns the remaining number of tokens that `spender` will be allowed to spend on behalf of `owner` through {transferFrom}. This is zero by default. This value changes when {approve} or {transferFrom} are called."
176
+ },
177
+ "approve(address,uint256)": {
178
+ "details": "Sets a `value` amount of tokens as the allowance of `spender` over the caller's tokens. Returns a boolean value indicating whether the operation succeeded. IMPORTANT: Beware that changing an allowance with this method brings the risk that someone may use both the old and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards: https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729 Emits an {Approval} event."
179
+ },
180
+ "balanceOf(address)": { "details": "Returns the value of tokens owned by `account`." },
181
+ "totalSupply()": { "details": "Returns the value of tokens in existence." },
182
+ "transfer(address,uint256)": {
183
+ "details": "Moves a `value` amount of tokens from the caller's account to `to`. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
184
+ },
185
+ "transferFrom(address,address,uint256)": {
186
+ "details": "Moves a `value` amount of tokens from `from` to `to` using the allowance mechanism. `value` is then deducted from the caller's allowance. Returns a boolean value indicating whether the operation succeeded. Emits a {Transfer} event."
187
+ }
188
+ },
189
+ "version": 1
190
+ },
191
+ "userdoc": { "kind": "user", "methods": {}, "version": 1 }
192
+ },
193
+ "settings": {
194
+ "remappings": [
195
+ "@arbitrum/=node_modules/@arbitrum/",
196
+ "@chainlink/=node_modules/@chainlink/",
197
+ "@eth-optimism/=node_modules/@eth-optimism/",
198
+ "@offchainlabs/=node_modules/@offchainlabs/",
199
+ "@openzeppelin/=node_modules/@openzeppelin/",
200
+ "@prb/=node_modules/@prb/",
201
+ "@sablier/=node_modules/@sablier/",
202
+ "@scroll-tech/=node_modules/@scroll-tech/",
203
+ "@zksync/=node_modules/@zksync/",
204
+ "forge-std/=node_modules/forge-std/"
205
+ ],
206
+ "optimizer": { "enabled": true, "runs": 1000000 },
207
+ "metadata": { "bytecodeHash": "ipfs" },
208
+ "compilationTarget": { "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": "IERC20" },
209
+ "evmVersion": "shanghai",
210
+ "libraries": {},
211
+ "viaIR": true
212
+ },
213
+ "sources": {
214
+ "node_modules/@openzeppelin/contracts/token/ERC20/IERC20.sol": {
215
+ "keccak256": "0xe06a3f08a987af6ad2e1c1e774405d4fe08f1694b67517438b467cecf0da0ef7",
216
+ "urls": [
217
+ "bzz-raw://df6f0c459663c9858b6cba2cda1d14a7d05a985bed6d2de72bd8e78c25ee79db",
218
+ "dweb:/ipfs/QmeTTxZ7qVk9rjEv2R4CpCwdf8UMCcRqDNMvzNxHc3Fnn9"
219
+ ],
220
+ "license": "MIT"
221
+ }
222
+ },
223
+ "version": 1
224
+ },
225
+ "id": 7
226
+ }