@rev-net/core-v6 0.0.6 → 0.0.7
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/SKILLS.md +1 -1
- package/docs/book.toml +1 -1
- package/docs/src/README.md +151 -54
- package/docs/src/SUMMARY.md +0 -2
- package/docs/src/src/REVDeployer.sol/contract.REVDeployer.md +148 -117
- package/docs/src/src/REVLoans.sol/contract.REVLoans.md +120 -59
- package/docs/src/src/interfaces/IREVDeployer.sol/interface.IREVDeployer.md +296 -14
- package/docs/src/src/interfaces/IREVLoans.sol/interface.IREVLoans.md +318 -16
- package/docs/src/src/structs/README.md +0 -2
- package/docs/src/src/structs/REVAutoIssuance.sol/struct.REVAutoIssuance.md +4 -4
- package/docs/src/src/structs/REVConfig.sol/struct.REVConfig.md +5 -17
- package/docs/src/src/structs/REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md +10 -6
- package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md +7 -7
- package/docs/src/src/structs/REVDescription.sol/struct.REVDescription.md +5 -5
- package/docs/src/src/structs/REVLoan.sol/struct.REVLoan.md +7 -7
- package/docs/src/src/structs/REVLoanSource.sol/struct.REVLoanSource.md +3 -3
- package/docs/src/src/structs/REVStageConfig.sol/struct.REVStageConfig.md +10 -10
- package/docs/src/src/structs/REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md +3 -3
- package/package.json +6 -6
- package/slither-ci.config.json +1 -1
- package/src/REVLoans.sol +20 -9
- package/src/interfaces/IREVDeployer.sol +0 -2
- package/src/interfaces/IREVLoans.sol +10 -4
- package/test/TestPR27_CEIPattern.t.sol +2 -2
- package/test/TestPR32_MixedFixes.t.sol +1 -1
- package/test/regression/TestI20_CumulativeLoanCounter.t.sol +303 -0
- package/test/regression/TestL27_LiquidateGapHandling.t.sol +334 -0
|
@@ -1,92 +1,167 @@
|
|
|
1
1
|
# IREVLoans
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/interfaces/IREVLoans.sol)
|
|
3
3
|
|
|
4
4
|
|
|
5
5
|
## Functions
|
|
6
6
|
### LOAN_LIQUIDATION_DURATION
|
|
7
7
|
|
|
8
|
+
The duration after which a loan expires and its collateral is permanently lost.
|
|
9
|
+
|
|
8
10
|
|
|
9
11
|
```solidity
|
|
10
12
|
function LOAN_LIQUIDATION_DURATION() external view returns (uint256);
|
|
11
13
|
```
|
|
14
|
+
**Returns**
|
|
15
|
+
|
|
16
|
+
|Name|Type|Description|
|
|
17
|
+
|----|----|-----------|
|
|
18
|
+
|`<none>`|`uint256`|The loan liquidation duration in seconds.|
|
|
19
|
+
|
|
12
20
|
|
|
13
21
|
### PERMIT2
|
|
14
22
|
|
|
23
|
+
The permit2 utility used for token transfers.
|
|
24
|
+
|
|
15
25
|
|
|
16
26
|
```solidity
|
|
17
27
|
function PERMIT2() external view returns (IPermit2);
|
|
18
28
|
```
|
|
29
|
+
**Returns**
|
|
30
|
+
|
|
31
|
+
|Name|Type|Description|
|
|
32
|
+
|----|----|-----------|
|
|
33
|
+
|`<none>`|`IPermit2`|The permit2 contract.|
|
|
34
|
+
|
|
19
35
|
|
|
20
36
|
### CONTROLLER
|
|
21
37
|
|
|
38
|
+
The controller that manages revnets using this loans contract.
|
|
39
|
+
|
|
22
40
|
|
|
23
41
|
```solidity
|
|
24
42
|
function CONTROLLER() external view returns (IJBController);
|
|
25
43
|
```
|
|
44
|
+
**Returns**
|
|
26
45
|
|
|
27
|
-
|
|
46
|
+
|Name|Type|Description|
|
|
47
|
+
|----|----|-----------|
|
|
48
|
+
|`<none>`|`IJBController`|The controller contract.|
|
|
28
49
|
|
|
29
50
|
|
|
30
|
-
```solidity
|
|
31
|
-
function REVNETS() external view returns (IREVDeployer);
|
|
32
|
-
```
|
|
33
|
-
|
|
34
51
|
### DIRECTORY
|
|
35
52
|
|
|
53
|
+
The directory of terminals and controllers for revnets.
|
|
54
|
+
|
|
36
55
|
|
|
37
56
|
```solidity
|
|
38
57
|
function DIRECTORY() external view returns (IJBDirectory);
|
|
39
58
|
```
|
|
59
|
+
**Returns**
|
|
60
|
+
|
|
61
|
+
|Name|Type|Description|
|
|
62
|
+
|----|----|-----------|
|
|
63
|
+
|`<none>`|`IJBDirectory`|The directory contract.|
|
|
64
|
+
|
|
40
65
|
|
|
41
66
|
### PRICES
|
|
42
67
|
|
|
68
|
+
The contract that stores prices for each revnet.
|
|
69
|
+
|
|
43
70
|
|
|
44
71
|
```solidity
|
|
45
72
|
function PRICES() external view returns (IJBPrices);
|
|
46
73
|
```
|
|
74
|
+
**Returns**
|
|
75
|
+
|
|
76
|
+
|Name|Type|Description|
|
|
77
|
+
|----|----|-----------|
|
|
78
|
+
|`<none>`|`IJBPrices`|The prices contract.|
|
|
79
|
+
|
|
47
80
|
|
|
48
81
|
### PROJECTS
|
|
49
82
|
|
|
83
|
+
The contract that mints ERC-721s representing project ownership.
|
|
84
|
+
|
|
50
85
|
|
|
51
86
|
```solidity
|
|
52
87
|
function PROJECTS() external view returns (IJBProjects);
|
|
53
88
|
```
|
|
89
|
+
**Returns**
|
|
90
|
+
|
|
91
|
+
|Name|Type|Description|
|
|
92
|
+
|----|----|-----------|
|
|
93
|
+
|`<none>`|`IJBProjects`|The projects contract.|
|
|
94
|
+
|
|
54
95
|
|
|
55
96
|
### REV_ID
|
|
56
97
|
|
|
98
|
+
The ID of the REV revnet that receives protocol fees from loans.
|
|
99
|
+
|
|
57
100
|
|
|
58
101
|
```solidity
|
|
59
102
|
function REV_ID() external view returns (uint256);
|
|
60
103
|
```
|
|
104
|
+
**Returns**
|
|
105
|
+
|
|
106
|
+
|Name|Type|Description|
|
|
107
|
+
|----|----|-----------|
|
|
108
|
+
|`<none>`|`uint256`|The REV revnet ID.|
|
|
109
|
+
|
|
61
110
|
|
|
62
111
|
### REV_PREPAID_FEE_PERCENT
|
|
63
112
|
|
|
113
|
+
The fee percent charged by the REV revnet on each loan, in terms of `JBConstants.MAX_FEE`.
|
|
114
|
+
|
|
64
115
|
|
|
65
116
|
```solidity
|
|
66
117
|
function REV_PREPAID_FEE_PERCENT() external view returns (uint256);
|
|
67
118
|
```
|
|
119
|
+
**Returns**
|
|
120
|
+
|
|
121
|
+
|Name|Type|Description|
|
|
122
|
+
|----|----|-----------|
|
|
123
|
+
|`<none>`|`uint256`|The REV prepaid fee percent.|
|
|
124
|
+
|
|
68
125
|
|
|
69
126
|
### MIN_PREPAID_FEE_PERCENT
|
|
70
127
|
|
|
128
|
+
The minimum fee percent that must be prepaid when borrowing, in terms of `JBConstants.MAX_FEE`.
|
|
129
|
+
|
|
71
130
|
|
|
72
131
|
```solidity
|
|
73
132
|
function MIN_PREPAID_FEE_PERCENT() external view returns (uint256);
|
|
74
133
|
```
|
|
134
|
+
**Returns**
|
|
135
|
+
|
|
136
|
+
|Name|Type|Description|
|
|
137
|
+
|----|----|-----------|
|
|
138
|
+
|`<none>`|`uint256`|The minimum prepaid fee percent.|
|
|
139
|
+
|
|
75
140
|
|
|
76
141
|
### MAX_PREPAID_FEE_PERCENT
|
|
77
142
|
|
|
143
|
+
The maximum fee percent that can be prepaid when borrowing, in terms of `JBConstants.MAX_FEE`.
|
|
144
|
+
|
|
78
145
|
|
|
79
146
|
```solidity
|
|
80
147
|
function MAX_PREPAID_FEE_PERCENT() external view returns (uint256);
|
|
81
148
|
```
|
|
149
|
+
**Returns**
|
|
150
|
+
|
|
151
|
+
|Name|Type|Description|
|
|
152
|
+
|----|----|-----------|
|
|
153
|
+
|`<none>`|`uint256`|The maximum prepaid fee percent.|
|
|
154
|
+
|
|
82
155
|
|
|
83
156
|
### borrowableAmountFrom
|
|
84
157
|
|
|
158
|
+
The amount that can be borrowed from a revnet given a certain amount of collateral.
|
|
159
|
+
|
|
85
160
|
|
|
86
161
|
```solidity
|
|
87
162
|
function borrowableAmountFrom(
|
|
88
163
|
uint256 revnetId,
|
|
89
|
-
uint256
|
|
164
|
+
uint256 collateralCount,
|
|
90
165
|
uint256 decimals,
|
|
91
166
|
uint256 currency
|
|
92
167
|
)
|
|
@@ -94,9 +169,26 @@ function borrowableAmountFrom(
|
|
|
94
169
|
view
|
|
95
170
|
returns (uint256);
|
|
96
171
|
```
|
|
172
|
+
**Parameters**
|
|
173
|
+
|
|
174
|
+
|Name|Type|Description|
|
|
175
|
+
|----|----|-----------|
|
|
176
|
+
|`revnetId`|`uint256`|The ID of the revnet to check for borrowable assets from.|
|
|
177
|
+
|`collateralCount`|`uint256`|The amount of collateral used to secure the loan.|
|
|
178
|
+
|`decimals`|`uint256`|The decimals the resulting fixed point value will include.|
|
|
179
|
+
|`currency`|`uint256`|The currency that the resulting amount should be in terms of.|
|
|
180
|
+
|
|
181
|
+
**Returns**
|
|
182
|
+
|
|
183
|
+
|Name|Type|Description|
|
|
184
|
+
|----|----|-----------|
|
|
185
|
+
|`<none>`|`uint256`|The amount that can be borrowed from the revnet.|
|
|
186
|
+
|
|
97
187
|
|
|
98
188
|
### determineSourceFeeAmount
|
|
99
189
|
|
|
190
|
+
Determines the source fee amount for a loan being paid off a certain amount.
|
|
191
|
+
|
|
100
192
|
|
|
101
193
|
```solidity
|
|
102
194
|
function determineSourceFeeAmount(
|
|
@@ -107,51 +199,154 @@ function determineSourceFeeAmount(
|
|
|
107
199
|
view
|
|
108
200
|
returns (uint256 sourceFeeAmount);
|
|
109
201
|
```
|
|
202
|
+
**Parameters**
|
|
203
|
+
|
|
204
|
+
|Name|Type|Description|
|
|
205
|
+
|----|----|-----------|
|
|
206
|
+
|`loan`|`REVLoan`|The loan having its source fee amount determined.|
|
|
207
|
+
|`amount`|`uint256`|The amount being paid off.|
|
|
208
|
+
|
|
209
|
+
**Returns**
|
|
210
|
+
|
|
211
|
+
|Name|Type|Description|
|
|
212
|
+
|----|----|-----------|
|
|
213
|
+
|`sourceFeeAmount`|`uint256`|The source fee amount for the loan.|
|
|
214
|
+
|
|
110
215
|
|
|
111
216
|
### isLoanSourceOf
|
|
112
217
|
|
|
218
|
+
Whether a revnet currently has outstanding loans from the specified terminal in the specified token.
|
|
219
|
+
|
|
113
220
|
|
|
114
221
|
```solidity
|
|
115
222
|
function isLoanSourceOf(uint256 revnetId, IJBPayoutTerminal terminal, address token) external view returns (bool);
|
|
116
223
|
```
|
|
224
|
+
**Parameters**
|
|
225
|
+
|
|
226
|
+
|Name|Type|Description|
|
|
227
|
+
|----|----|-----------|
|
|
228
|
+
|`revnetId`|`uint256`|The ID of the revnet issuing the loan.|
|
|
229
|
+
|`terminal`|`IJBPayoutTerminal`|The terminal that the loan is issued from.|
|
|
230
|
+
|`token`|`address`|The token being loaned.|
|
|
231
|
+
|
|
232
|
+
**Returns**
|
|
233
|
+
|
|
234
|
+
|Name|Type|Description|
|
|
235
|
+
|----|----|-----------|
|
|
236
|
+
|`<none>`|`bool`|A flag indicating if the revnet has an active loan source.|
|
|
237
|
+
|
|
117
238
|
|
|
118
239
|
### loanOf
|
|
119
240
|
|
|
241
|
+
Get a loan's details.
|
|
242
|
+
|
|
120
243
|
|
|
121
244
|
```solidity
|
|
122
245
|
function loanOf(uint256 loanId) external view returns (REVLoan memory);
|
|
123
246
|
```
|
|
247
|
+
**Parameters**
|
|
248
|
+
|
|
249
|
+
|Name|Type|Description|
|
|
250
|
+
|----|----|-----------|
|
|
251
|
+
|`loanId`|`uint256`|The ID of the loan to retrieve.|
|
|
252
|
+
|
|
253
|
+
**Returns**
|
|
254
|
+
|
|
255
|
+
|Name|Type|Description|
|
|
256
|
+
|----|----|-----------|
|
|
257
|
+
|`<none>`|`REVLoan`|The loan data.|
|
|
258
|
+
|
|
124
259
|
|
|
125
260
|
### loanSourcesOf
|
|
126
261
|
|
|
262
|
+
The sources of each revnet's loans.
|
|
263
|
+
|
|
264
|
+
This array only grows -- sources are appended when a new (terminal, token) pair is first used for
|
|
265
|
+
borrowing, but are never removed. Gas cost scales linearly with the number of distinct sources, though this is
|
|
266
|
+
practically bounded to a small number of unique (terminal, token) pairs.
|
|
267
|
+
|
|
127
268
|
|
|
128
269
|
```solidity
|
|
129
270
|
function loanSourcesOf(uint256 revnetId) external view returns (REVLoanSource[] memory);
|
|
130
271
|
```
|
|
272
|
+
**Parameters**
|
|
273
|
+
|
|
274
|
+
|Name|Type|Description|
|
|
275
|
+
|----|----|-----------|
|
|
276
|
+
|`revnetId`|`uint256`|The ID of the revnet to get the loan sources for.|
|
|
277
|
+
|
|
278
|
+
**Returns**
|
|
279
|
+
|
|
280
|
+
|Name|Type|Description|
|
|
281
|
+
|----|----|-----------|
|
|
282
|
+
|`<none>`|`REVLoanSource[]`|The array of loan sources.|
|
|
283
|
+
|
|
284
|
+
|
|
285
|
+
### totalLoansBorrowedFor
|
|
286
|
+
|
|
287
|
+
The cumulative number of loans ever created for a revnet, used as a loan ID sequence counter.
|
|
131
288
|
|
|
132
|
-
|
|
289
|
+
This counter only increments and never decrements. It does NOT represent the count of currently active
|
|
290
|
+
loans -- repaid and liquidated loans leave permanent gaps in the sequence. Do not use this value to determine
|
|
291
|
+
how many loans are currently outstanding.
|
|
133
292
|
|
|
134
293
|
|
|
135
294
|
```solidity
|
|
136
|
-
function
|
|
295
|
+
function totalLoansBorrowedFor(uint256 revnetId) external view returns (uint256);
|
|
137
296
|
```
|
|
297
|
+
**Parameters**
|
|
298
|
+
|
|
299
|
+
|Name|Type|Description|
|
|
300
|
+
|----|----|-----------|
|
|
301
|
+
|`revnetId`|`uint256`|The ID of the revnet to get the cumulative loan count for.|
|
|
302
|
+
|
|
303
|
+
**Returns**
|
|
304
|
+
|
|
305
|
+
|Name|Type|Description|
|
|
306
|
+
|----|----|-----------|
|
|
307
|
+
|`<none>`|`uint256`|The cumulative number of loans ever created.|
|
|
308
|
+
|
|
138
309
|
|
|
139
310
|
### revnetIdOfLoanWith
|
|
140
311
|
|
|
312
|
+
The revnet ID for the loan with the provided loan ID.
|
|
313
|
+
|
|
141
314
|
|
|
142
315
|
```solidity
|
|
143
316
|
function revnetIdOfLoanWith(uint256 loanId) external view returns (uint256);
|
|
144
317
|
```
|
|
318
|
+
**Parameters**
|
|
319
|
+
|
|
320
|
+
|Name|Type|Description|
|
|
321
|
+
|----|----|-----------|
|
|
322
|
+
|`loanId`|`uint256`|The loan ID to get the revnet ID of.|
|
|
323
|
+
|
|
324
|
+
**Returns**
|
|
325
|
+
|
|
326
|
+
|Name|Type|Description|
|
|
327
|
+
|----|----|-----------|
|
|
328
|
+
|`<none>`|`uint256`|The ID of the revnet.|
|
|
329
|
+
|
|
145
330
|
|
|
146
331
|
### tokenUriResolver
|
|
147
332
|
|
|
333
|
+
The contract resolving each loan ID to its ERC-721 URI.
|
|
334
|
+
|
|
148
335
|
|
|
149
336
|
```solidity
|
|
150
337
|
function tokenUriResolver() external view returns (IJBTokenUriResolver);
|
|
151
338
|
```
|
|
339
|
+
**Returns**
|
|
340
|
+
|
|
341
|
+
|Name|Type|Description|
|
|
342
|
+
|----|----|-----------|
|
|
343
|
+
|`<none>`|`IJBTokenUriResolver`|The token URI resolver.|
|
|
344
|
+
|
|
152
345
|
|
|
153
346
|
### totalBorrowedFrom
|
|
154
347
|
|
|
348
|
+
The total amount loaned out by a revnet from a specified terminal in a specified token.
|
|
349
|
+
|
|
155
350
|
|
|
156
351
|
```solidity
|
|
157
352
|
function totalBorrowedFrom(
|
|
@@ -163,39 +358,99 @@ function totalBorrowedFrom(
|
|
|
163
358
|
view
|
|
164
359
|
returns (uint256);
|
|
165
360
|
```
|
|
361
|
+
**Parameters**
|
|
362
|
+
|
|
363
|
+
|Name|Type|Description|
|
|
364
|
+
|----|----|-----------|
|
|
365
|
+
|`revnetId`|`uint256`|The ID of the revnet issuing the loan.|
|
|
366
|
+
|`terminal`|`IJBPayoutTerminal`|The terminal that the loan is issued from.|
|
|
367
|
+
|`token`|`address`|The token being loaned.|
|
|
368
|
+
|
|
369
|
+
**Returns**
|
|
370
|
+
|
|
371
|
+
|Name|Type|Description|
|
|
372
|
+
|----|----|-----------|
|
|
373
|
+
|`<none>`|`uint256`|The total amount borrowed.|
|
|
374
|
+
|
|
166
375
|
|
|
167
376
|
### totalCollateralOf
|
|
168
377
|
|
|
378
|
+
The total amount of collateral supporting a revnet's loans.
|
|
379
|
+
|
|
169
380
|
|
|
170
381
|
```solidity
|
|
171
382
|
function totalCollateralOf(uint256 revnetId) external view returns (uint256);
|
|
172
383
|
```
|
|
384
|
+
**Parameters**
|
|
385
|
+
|
|
386
|
+
|Name|Type|Description|
|
|
387
|
+
|----|----|-----------|
|
|
388
|
+
|`revnetId`|`uint256`|The ID of the revnet.|
|
|
389
|
+
|
|
390
|
+
**Returns**
|
|
391
|
+
|
|
392
|
+
|Name|Type|Description|
|
|
393
|
+
|----|----|-----------|
|
|
394
|
+
|`<none>`|`uint256`|The total collateral count.|
|
|
395
|
+
|
|
173
396
|
|
|
174
397
|
### borrowFrom
|
|
175
398
|
|
|
399
|
+
Open a loan by borrowing from a revnet. Collateral tokens are burned and only re-minted upon repayment.
|
|
400
|
+
|
|
176
401
|
|
|
177
402
|
```solidity
|
|
178
403
|
function borrowFrom(
|
|
179
404
|
uint256 revnetId,
|
|
180
405
|
REVLoanSource calldata source,
|
|
181
406
|
uint256 minBorrowAmount,
|
|
182
|
-
uint256
|
|
407
|
+
uint256 collateralCount,
|
|
183
408
|
address payable beneficiary,
|
|
184
409
|
uint256 prepaidFeePercent
|
|
185
410
|
)
|
|
186
411
|
external
|
|
187
|
-
returns (uint256 loanId, REVLoan memory
|
|
412
|
+
returns (uint256 loanId, REVLoan memory);
|
|
188
413
|
```
|
|
414
|
+
**Parameters**
|
|
415
|
+
|
|
416
|
+
|Name|Type|Description|
|
|
417
|
+
|----|----|-----------|
|
|
418
|
+
|`revnetId`|`uint256`|The ID of the revnet being borrowed from.|
|
|
419
|
+
|`source`|`REVLoanSource`|The source of the loan (terminal and token).|
|
|
420
|
+
|`minBorrowAmount`|`uint256`|The minimum amount to borrow, denominated in the source's token.|
|
|
421
|
+
|`collateralCount`|`uint256`|The amount of tokens to use as collateral for the loan.|
|
|
422
|
+
|`beneficiary`|`address payable`|The address that will receive the borrowed funds and fee payment tokens.|
|
|
423
|
+
|`prepaidFeePercent`|`uint256`|The fee percent to charge upfront, in terms of `JBConstants.MAX_FEE`.|
|
|
424
|
+
|
|
425
|
+
**Returns**
|
|
426
|
+
|
|
427
|
+
|Name|Type|Description|
|
|
428
|
+
|----|----|-----------|
|
|
429
|
+
|`loanId`|`uint256`|The ID of the loan created from borrowing.|
|
|
430
|
+
|`<none>`|`REVLoan`|The loan created from borrowing.|
|
|
431
|
+
|
|
189
432
|
|
|
190
433
|
### liquidateExpiredLoansFrom
|
|
191
434
|
|
|
435
|
+
Liquidates loans that have exceeded the liquidation duration, permanently destroying their collateral.
|
|
436
|
+
|
|
192
437
|
|
|
193
438
|
```solidity
|
|
194
439
|
function liquidateExpiredLoansFrom(uint256 revnetId, uint256 startingLoanId, uint256 count) external;
|
|
195
440
|
```
|
|
441
|
+
**Parameters**
|
|
442
|
+
|
|
443
|
+
|Name|Type|Description|
|
|
444
|
+
|----|----|-----------|
|
|
445
|
+
|`revnetId`|`uint256`|The ID of the revnet to liquidate loans from.|
|
|
446
|
+
|`startingLoanId`|`uint256`|The loan number to start iterating from.|
|
|
447
|
+
|`count`|`uint256`|The number of loans to iterate over.|
|
|
448
|
+
|
|
196
449
|
|
|
197
450
|
### repayLoan
|
|
198
451
|
|
|
452
|
+
Repay a loan or return excess collateral no longer needed to support the loan.
|
|
453
|
+
|
|
199
454
|
|
|
200
455
|
```solidity
|
|
201
456
|
function repayLoan(
|
|
@@ -207,33 +462,80 @@ function repayLoan(
|
|
|
207
462
|
)
|
|
208
463
|
external
|
|
209
464
|
payable
|
|
210
|
-
returns (uint256 paidOffLoanId, REVLoan memory
|
|
465
|
+
returns (uint256 paidOffLoanId, REVLoan memory paidOffloan);
|
|
211
466
|
```
|
|
467
|
+
**Parameters**
|
|
468
|
+
|
|
469
|
+
|Name|Type|Description|
|
|
470
|
+
|----|----|-----------|
|
|
471
|
+
|`loanId`|`uint256`|The ID of the loan being repaid.|
|
|
472
|
+
|`maxRepayBorrowAmount`|`uint256`|The maximum amount to repay, denominated in the source's token.|
|
|
473
|
+
|`collateralCountToReturn`|`uint256`|The amount of collateral to return from the loan.|
|
|
474
|
+
|`beneficiary`|`address payable`|The address receiving the returned collateral and fee payment tokens.|
|
|
475
|
+
|`allowance`|`JBSingleAllowance`|A permit2 allowance to facilitate the repayment transfer.|
|
|
476
|
+
|
|
477
|
+
**Returns**
|
|
478
|
+
|
|
479
|
+
|Name|Type|Description|
|
|
480
|
+
|----|----|-----------|
|
|
481
|
+
|`paidOffLoanId`|`uint256`|The ID of the loan after it has been paid off.|
|
|
482
|
+
|`paidOffloan`|`REVLoan`|The loan after it has been paid off.|
|
|
483
|
+
|
|
212
484
|
|
|
213
485
|
### reallocateCollateralFromLoan
|
|
214
486
|
|
|
487
|
+
Refinance a loan by transferring extra collateral from an existing loan to a new loan.
|
|
488
|
+
|
|
215
489
|
|
|
216
490
|
```solidity
|
|
217
491
|
function reallocateCollateralFromLoan(
|
|
218
492
|
uint256 loanId,
|
|
219
|
-
uint256
|
|
493
|
+
uint256 collateralCountToTransfer,
|
|
220
494
|
REVLoanSource calldata source,
|
|
221
495
|
uint256 minBorrowAmount,
|
|
222
|
-
uint256
|
|
496
|
+
uint256 collateralCountToAdd,
|
|
223
497
|
address payable beneficiary,
|
|
224
498
|
uint256 prepaidFeePercent
|
|
225
499
|
)
|
|
226
500
|
external
|
|
227
|
-
payable
|
|
228
501
|
returns (uint256 reallocatedLoanId, uint256 newLoanId, REVLoan memory reallocatedLoan, REVLoan memory newLoan);
|
|
229
502
|
```
|
|
503
|
+
**Parameters**
|
|
504
|
+
|
|
505
|
+
|Name|Type|Description|
|
|
506
|
+
|----|----|-----------|
|
|
507
|
+
|`loanId`|`uint256`|The ID of the loan to reallocate collateral from.|
|
|
508
|
+
|`collateralCountToTransfer`|`uint256`|The amount of collateral to transfer from the original loan.|
|
|
509
|
+
|`source`|`REVLoanSource`|The source of the new loan (terminal and token). Must match the existing loan's source.|
|
|
510
|
+
|`minBorrowAmount`|`uint256`|The minimum amount to borrow for the new loan.|
|
|
511
|
+
|`collateralCountToAdd`|`uint256`|Additional collateral to add to the new loan from the caller's balance.|
|
|
512
|
+
|`beneficiary`|`address payable`|The address that will receive the borrowed funds and fee payment tokens.|
|
|
513
|
+
|`prepaidFeePercent`|`uint256`|The fee percent to charge upfront for the new loan.|
|
|
514
|
+
|
|
515
|
+
**Returns**
|
|
516
|
+
|
|
517
|
+
|Name|Type|Description|
|
|
518
|
+
|----|----|-----------|
|
|
519
|
+
|`reallocatedLoanId`|`uint256`|The ID of the reallocated (reduced) loan.|
|
|
520
|
+
|`newLoanId`|`uint256`|The ID of the newly created loan.|
|
|
521
|
+
|`reallocatedLoan`|`REVLoan`|The reallocated loan data.|
|
|
522
|
+
|`newLoan`|`REVLoan`|The new loan data.|
|
|
523
|
+
|
|
230
524
|
|
|
231
525
|
### setTokenUriResolver
|
|
232
526
|
|
|
527
|
+
Sets the address of the resolver used to retrieve the token URI of loans.
|
|
528
|
+
|
|
233
529
|
|
|
234
530
|
```solidity
|
|
235
531
|
function setTokenUriResolver(IJBTokenUriResolver resolver) external;
|
|
236
532
|
```
|
|
533
|
+
**Parameters**
|
|
534
|
+
|
|
535
|
+
|Name|Type|Description|
|
|
536
|
+
|----|----|-----------|
|
|
537
|
+
|`resolver`|`IJBTokenUriResolver`|The new token URI resolver.|
|
|
538
|
+
|
|
237
539
|
|
|
238
540
|
## Events
|
|
239
541
|
### Borrow
|
|
@@ -283,7 +585,7 @@ event ReallocateCollateral(
|
|
|
283
585
|
uint256 indexed revnetId,
|
|
284
586
|
uint256 indexed reallocatedLoanId,
|
|
285
587
|
REVLoan reallocatedLoan,
|
|
286
|
-
uint256
|
|
588
|
+
uint256 removedCollateralCount,
|
|
287
589
|
address caller
|
|
288
590
|
);
|
|
289
591
|
```
|
|
@@ -2,8 +2,6 @@
|
|
|
2
2
|
|
|
3
3
|
# Contents
|
|
4
4
|
- [REVAutoIssuance](REVAutoIssuance.sol/struct.REVAutoIssuance.md)
|
|
5
|
-
- [REVBuybackHookConfig](REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md)
|
|
6
|
-
- [REVBuybackPoolConfig](REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md)
|
|
7
5
|
- [REVConfig](REVConfig.sol/struct.REVConfig.md)
|
|
8
6
|
- [REVCroptopAllowedPost](REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md)
|
|
9
7
|
- [REVDeploy721TiersHookConfig](REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# REVAutoIssuance
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/structs/REVAutoIssuance.sol)
|
|
3
3
|
|
|
4
4
|
**Notes:**
|
|
5
5
|
- member: chainId The ID of the chain on which the mint should be honored.
|
|
@@ -11,9 +11,9 @@
|
|
|
11
11
|
|
|
12
12
|
```solidity
|
|
13
13
|
struct REVAutoIssuance {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
14
|
+
uint32 chainId;
|
|
15
|
+
uint104 count;
|
|
16
|
+
address beneficiary;
|
|
17
17
|
}
|
|
18
18
|
```
|
|
19
19
|
|
|
@@ -1,35 +1,23 @@
|
|
|
1
1
|
# REVConfig
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/structs/REVConfig.sol)
|
|
3
3
|
|
|
4
4
|
**Notes:**
|
|
5
5
|
- member: description The description of the revnet.
|
|
6
6
|
|
|
7
7
|
- member: baseCurrency The currency that the issuance is based on.
|
|
8
8
|
|
|
9
|
-
- member: premintTokenAmount The number of tokens that should be preminted to the initial operator.
|
|
10
|
-
|
|
11
|
-
- member: premintChainId The ID of the chain on which the premint should be honored.
|
|
12
|
-
|
|
13
|
-
- member: premintStage The stage during which the premint should be honored.
|
|
14
|
-
|
|
15
9
|
- member: splitOperator The address that will receive the token premint and initial production split,
|
|
16
10
|
and who is allowed to change who the operator is. Only the operator can replace itself after deployment.
|
|
17
11
|
|
|
18
12
|
- member: stageConfigurations The periods of changing constraints.
|
|
19
13
|
|
|
20
|
-
- member: loanSources The sources for loans.
|
|
21
|
-
|
|
22
|
-
- member: loans The loans contract, which can mint the revnet's tokens and use the revnet's balance.
|
|
23
|
-
|
|
24
14
|
|
|
25
15
|
```solidity
|
|
26
16
|
struct REVConfig {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
REVLoanSource[] loanSources;
|
|
32
|
-
address loans;
|
|
17
|
+
REVDescription description;
|
|
18
|
+
uint32 baseCurrency;
|
|
19
|
+
address splitOperator;
|
|
20
|
+
REVStageConfig[] stageConfigurations;
|
|
33
21
|
}
|
|
34
22
|
```
|
|
35
23
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# REVCroptopAllowedPost
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/structs/REVCroptopAllowedPost.sol)
|
|
3
3
|
|
|
4
4
|
Criteria for allowed posts.
|
|
5
5
|
|
|
@@ -13,16 +13,20 @@ Criteria for allowed posts.
|
|
|
13
13
|
- member: maxTotalSupply The max total supply of NFTs that can be made available when minting. Leave as 0 for
|
|
14
14
|
max.
|
|
15
15
|
|
|
16
|
+
- member: maximumSplitPercent The maximum split percent (out of JBConstants.SPLITS_TOTAL_PERCENT) that a
|
|
17
|
+
poster can set. 0 means splits are not allowed.
|
|
18
|
+
|
|
16
19
|
- member: allowedAddresses A list of addresses that are allowed to post on the category through Croptop.
|
|
17
20
|
|
|
18
21
|
|
|
19
22
|
```solidity
|
|
20
23
|
struct REVCroptopAllowedPost {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
24
|
+
uint24 category;
|
|
25
|
+
uint104 minimumPrice;
|
|
26
|
+
uint32 minimumTotalSupply;
|
|
27
|
+
uint32 maximumTotalSupply;
|
|
28
|
+
uint32 maximumSplitPercent;
|
|
29
|
+
address[] allowedAddresses;
|
|
26
30
|
}
|
|
27
31
|
```
|
|
28
32
|
|
package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# REVDeploy721TiersHookConfig
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/structs/REVDeploy721TiersHookConfig.sol)
|
|
3
3
|
|
|
4
4
|
**Notes:**
|
|
5
5
|
- member: baseline721HookConfiguration The baseline config.
|
|
@@ -23,12 +23,12 @@ discount of a tier.
|
|
|
23
23
|
|
|
24
24
|
```solidity
|
|
25
25
|
struct REVDeploy721TiersHookConfig {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
26
|
+
JBDeploy721TiersHookConfig baseline721HookConfiguration;
|
|
27
|
+
bytes32 salt;
|
|
28
|
+
bool splitOperatorCanAdjustTiers;
|
|
29
|
+
bool splitOperatorCanUpdateMetadata;
|
|
30
|
+
bool splitOperatorCanMint;
|
|
31
|
+
bool splitOperatorCanIncreaseDiscountPercent;
|
|
32
32
|
}
|
|
33
33
|
```
|
|
34
34
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# REVDescription
|
|
2
|
-
[Git Source](https://github.com/rev-net/revnet-core-
|
|
2
|
+
[Git Source](https://github.com/rev-net/revnet-core-v6/blob/94c003a3a16de2bd012d63cccedd6bd38d21f6e7/src/structs/REVDescription.sol)
|
|
3
3
|
|
|
4
4
|
**Notes:**
|
|
5
5
|
- member: name The name of the ERC-20 token being create for the revnet.
|
|
@@ -14,10 +14,10 @@ address.
|
|
|
14
14
|
|
|
15
15
|
```solidity
|
|
16
16
|
struct REVDescription {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
string name;
|
|
18
|
+
string ticker;
|
|
19
|
+
string uri;
|
|
20
|
+
bytes32 salt;
|
|
21
21
|
}
|
|
22
22
|
```
|
|
23
23
|
|