@rev-net/core-v6 0.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +65 -0
  3. package/REVNET_SECURITY_CHECKLIST.md +164 -0
  4. package/SECURITY.md +68 -0
  5. package/SKILLS.md +166 -0
  6. package/deployments/revnet-core-v5/arbitrum/REVDeployer.json +2821 -0
  7. package/deployments/revnet-core-v5/arbitrum/REVLoans.json +2260 -0
  8. package/deployments/revnet-core-v5/arbitrum_sepolia/REVDeployer.json +2821 -0
  9. package/deployments/revnet-core-v5/arbitrum_sepolia/REVLoans.json +2260 -0
  10. package/deployments/revnet-core-v5/base/REVDeployer.json +2825 -0
  11. package/deployments/revnet-core-v5/base/REVLoans.json +2264 -0
  12. package/deployments/revnet-core-v5/base_sepolia/REVDeployer.json +2825 -0
  13. package/deployments/revnet-core-v5/base_sepolia/REVLoans.json +2264 -0
  14. package/deployments/revnet-core-v5/ethereum/REVDeployer.json +2825 -0
  15. package/deployments/revnet-core-v5/ethereum/REVLoans.json +2264 -0
  16. package/deployments/revnet-core-v5/optimism/REVDeployer.json +2821 -0
  17. package/deployments/revnet-core-v5/optimism/REVLoans.json +2260 -0
  18. package/deployments/revnet-core-v5/optimism_sepolia/REVDeployer.json +2825 -0
  19. package/deployments/revnet-core-v5/optimism_sepolia/REVLoans.json +2264 -0
  20. package/deployments/revnet-core-v5/sepolia/REVDeployer.json +2825 -0
  21. package/deployments/revnet-core-v5/sepolia/REVLoans.json +2264 -0
  22. package/docs/book.css +13 -0
  23. package/docs/book.toml +13 -0
  24. package/docs/solidity.min.js +74 -0
  25. package/docs/src/README.md +88 -0
  26. package/docs/src/SUMMARY.md +20 -0
  27. package/docs/src/src/README.md +7 -0
  28. package/docs/src/src/REVDeployer.sol/contract.REVDeployer.md +968 -0
  29. package/docs/src/src/REVLoans.sol/contract.REVLoans.md +1047 -0
  30. package/docs/src/src/interfaces/IREVDeployer.sol/interface.IREVDeployer.md +243 -0
  31. package/docs/src/src/interfaces/IREVLoans.sol/interface.IREVLoans.md +296 -0
  32. package/docs/src/src/interfaces/README.md +5 -0
  33. package/docs/src/src/structs/README.md +14 -0
  34. package/docs/src/src/structs/REVAutoIssuance.sol/struct.REVAutoIssuance.md +19 -0
  35. package/docs/src/src/structs/REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md +19 -0
  36. package/docs/src/src/structs/REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md +21 -0
  37. package/docs/src/src/structs/REVConfig.sol/struct.REVConfig.md +35 -0
  38. package/docs/src/src/structs/REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md +28 -0
  39. package/docs/src/src/structs/REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md +34 -0
  40. package/docs/src/src/structs/REVDescription.sol/struct.REVDescription.md +23 -0
  41. package/docs/src/src/structs/REVLoan.sol/struct.REVLoan.md +28 -0
  42. package/docs/src/src/structs/REVLoanSource.sol/struct.REVLoanSource.md +16 -0
  43. package/docs/src/src/structs/REVStageConfig.sol/struct.REVStageConfig.md +44 -0
  44. package/docs/src/src/structs/REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md +16 -0
  45. package/foundry.lock +11 -0
  46. package/foundry.toml +23 -0
  47. package/package.json +31 -0
  48. package/remappings.txt +1 -0
  49. package/script/Deploy.s.sol +350 -0
  50. package/script/helpers/RevnetCoreDeploymentLib.sol +72 -0
  51. package/slither-ci.config.json +10 -0
  52. package/sphinx.lock +507 -0
  53. package/src/REVDeployer.sol +1257 -0
  54. package/src/REVLoans.sol +1333 -0
  55. package/src/interfaces/IREVDeployer.sol +198 -0
  56. package/src/interfaces/IREVLoans.sol +241 -0
  57. package/src/structs/REVAutoIssuance.sol +11 -0
  58. package/src/structs/REVConfig.sol +17 -0
  59. package/src/structs/REVCroptopAllowedPost.sol +20 -0
  60. package/src/structs/REVDeploy721TiersHookConfig.sol +25 -0
  61. package/src/structs/REVDescription.sol +14 -0
  62. package/src/structs/REVLoan.sol +19 -0
  63. package/src/structs/REVLoanSource.sol +11 -0
  64. package/src/structs/REVStageConfig.sol +34 -0
  65. package/src/structs/REVSuckerDeploymentConfig.sol +11 -0
  66. package/test/REV.integrations.t.sol +420 -0
  67. package/test/REVAutoIssuanceFuzz.t.sol +276 -0
  68. package/test/REVDeployerAuditRegressions.t.sol +328 -0
  69. package/test/REVInvincibility.t.sol +1275 -0
  70. package/test/REVInvincibilityHandler.sol +357 -0
  71. package/test/REVLifecycle.t.sol +364 -0
  72. package/test/REVLoans.invariants.t.sol +642 -0
  73. package/test/REVLoansAttacks.t.sol +739 -0
  74. package/test/REVLoansAuditRegressions.t.sol +314 -0
  75. package/test/REVLoansFeeRecovery.t.sol +704 -0
  76. package/test/REVLoansSourced.t.sol +1732 -0
  77. package/test/REVLoansUnSourced.t.sol +331 -0
  78. package/test/TestPR09_ConversionDocumentation.t.sol +304 -0
  79. package/test/TestPR10_LiquidationBehavior.t.sol +340 -0
  80. package/test/TestPR11_LowFindings.t.sol +571 -0
  81. package/test/TestPR12_FlashLoanSurplus.t.sol +305 -0
  82. package/test/TestPR13_CrossSourceReallocation.t.sol +302 -0
  83. package/test/TestPR15_CashOutCallerValidation.t.sol +320 -0
  84. package/test/TestPR16_ZeroRepayment.t.sol +297 -0
  85. package/test/TestPR21_Uint112Overflow.t.sol +251 -0
  86. package/test/TestPR22_HookArrayOOB.t.sol +221 -0
  87. package/test/TestPR26_BurnHeldTokens.t.sol +331 -0
  88. package/test/TestPR27_CEIPattern.t.sol +448 -0
  89. package/test/TestPR29_SwapTerminalPermission.t.sol +206 -0
  90. package/test/TestPR32_MixedFixes.t.sol +529 -0
  91. package/test/helpers/MaliciousContracts.sol +233 -0
  92. package/test/mock/MockBuybackDataHook.sol +61 -0
@@ -0,0 +1,243 @@
1
+ # IREVDeployer
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/interfaces/IREVDeployer.sol)
3
+
4
+
5
+ ## Functions
6
+ ### CASH_OUT_DELAY
7
+
8
+
9
+ ```solidity
10
+ function CASH_OUT_DELAY() external view returns (uint256);
11
+ ```
12
+
13
+ ### CONTROLLER
14
+
15
+
16
+ ```solidity
17
+ function CONTROLLER() external view returns (IJBController);
18
+ ```
19
+
20
+ ### DIRECTORY
21
+
22
+
23
+ ```solidity
24
+ function DIRECTORY() external view returns (IJBDirectory);
25
+ ```
26
+
27
+ ### PROJECTS
28
+
29
+
30
+ ```solidity
31
+ function PROJECTS() external view returns (IJBProjects);
32
+ ```
33
+
34
+ ### PERMISSIONS
35
+
36
+
37
+ ```solidity
38
+ function PERMISSIONS() external view returns (IJBPermissions);
39
+ ```
40
+
41
+ ### FEE
42
+
43
+
44
+ ```solidity
45
+ function FEE() external view returns (uint256);
46
+ ```
47
+
48
+ ### SUCKER_REGISTRY
49
+
50
+
51
+ ```solidity
52
+ function SUCKER_REGISTRY() external view returns (IJBSuckerRegistry);
53
+ ```
54
+
55
+ ### FEE_REVNET_ID
56
+
57
+
58
+ ```solidity
59
+ function FEE_REVNET_ID() external view returns (uint256);
60
+ ```
61
+
62
+ ### PUBLISHER
63
+
64
+
65
+ ```solidity
66
+ function PUBLISHER() external view returns (CTPublisher);
67
+ ```
68
+
69
+ ### HOOK_DEPLOYER
70
+
71
+
72
+ ```solidity
73
+ function HOOK_DEPLOYER() external view returns (IJB721TiersHookDeployer);
74
+ ```
75
+
76
+ ### amountToAutoIssue
77
+
78
+
79
+ ```solidity
80
+ function amountToAutoIssue(uint256 revnetId, uint256 stageId, address beneficiary) external view returns (uint256);
81
+ ```
82
+
83
+ ### buybackHookOf
84
+
85
+
86
+ ```solidity
87
+ function buybackHookOf(uint256 revnetId) external view returns (IJBRulesetDataHook);
88
+ ```
89
+
90
+ ### cashOutDelayOf
91
+
92
+
93
+ ```solidity
94
+ function cashOutDelayOf(uint256 revnetId) external view returns (uint256);
95
+ ```
96
+
97
+ ### deploySuckersFor
98
+
99
+
100
+ ```solidity
101
+ function deploySuckersFor(
102
+ uint256 revnetId,
103
+ REVSuckerDeploymentConfig calldata suckerDeploymentConfiguration
104
+ )
105
+ external
106
+ returns (address[] memory suckers);
107
+ ```
108
+
109
+ ### hashedEncodedConfigurationOf
110
+
111
+
112
+ ```solidity
113
+ function hashedEncodedConfigurationOf(uint256 revnetId) external view returns (bytes32);
114
+ ```
115
+
116
+ ### isSplitOperatorOf
117
+
118
+
119
+ ```solidity
120
+ function isSplitOperatorOf(uint256 revnetId, address addr) external view returns (bool);
121
+ ```
122
+
123
+ ### loansOf
124
+
125
+
126
+ ```solidity
127
+ function loansOf(uint256 revnetId) external view returns (address);
128
+ ```
129
+
130
+ ### tiered721HookOf
131
+
132
+
133
+ ```solidity
134
+ function tiered721HookOf(uint256 revnetId) external view returns (IJB721TiersHook);
135
+ ```
136
+
137
+ ### autoIssueFor
138
+
139
+
140
+ ```solidity
141
+ function autoIssueFor(uint256 revnetId, uint256 stageId, address beneficiary) external;
142
+ ```
143
+
144
+ ### deployFor
145
+
146
+
147
+ ```solidity
148
+ function deployFor(
149
+ uint256 revnetId,
150
+ REVConfig memory configuration,
151
+ JBTerminalConfig[] memory terminalConfigurations,
152
+ REVBuybackHookConfig memory buybackHookConfiguration,
153
+ REVSuckerDeploymentConfig memory suckerDeploymentConfiguration
154
+ )
155
+ external
156
+ returns (uint256);
157
+ ```
158
+
159
+ ### deployWith721sFor
160
+
161
+
162
+ ```solidity
163
+ function deployWith721sFor(
164
+ uint256 revnetId,
165
+ REVConfig calldata configuration,
166
+ JBTerminalConfig[] memory terminalConfigurations,
167
+ REVBuybackHookConfig memory buybackHookConfiguration,
168
+ REVSuckerDeploymentConfig memory suckerDeploymentConfiguration,
169
+ REVDeploy721TiersHookConfig memory tiered721HookConfiguration,
170
+ REVCroptopAllowedPost[] memory allowedPosts
171
+ )
172
+ external
173
+ returns (uint256, IJB721TiersHook hook);
174
+ ```
175
+
176
+ ### setSplitOperatorOf
177
+
178
+
179
+ ```solidity
180
+ function setSplitOperatorOf(uint256 revnetId, address newSplitOperator) external;
181
+ ```
182
+
183
+ ## Events
184
+ ### ReplaceSplitOperator
185
+
186
+ ```solidity
187
+ event ReplaceSplitOperator(uint256 indexed revnetId, address indexed newSplitOperator, address caller);
188
+ ```
189
+
190
+ ### DeploySuckers
191
+
192
+ ```solidity
193
+ event DeploySuckers(
194
+ uint256 indexed revnetId,
195
+ bytes32 encodedConfigurationHash,
196
+ REVSuckerDeploymentConfig suckerDeploymentConfiguration,
197
+ address caller
198
+ );
199
+ ```
200
+
201
+ ### DeployRevnet
202
+
203
+ ```solidity
204
+ event DeployRevnet(
205
+ uint256 indexed revnetId,
206
+ REVConfig configuration,
207
+ JBTerminalConfig[] terminalConfigurations,
208
+ REVBuybackHookConfig buybackHookConfiguration,
209
+ REVSuckerDeploymentConfig suckerDeploymentConfiguration,
210
+ JBRulesetConfig[] rulesetConfigurations,
211
+ bytes32 encodedConfigurationHash,
212
+ address caller
213
+ );
214
+ ```
215
+
216
+ ### SetCashOutDelay
217
+
218
+ ```solidity
219
+ event SetCashOutDelay(uint256 indexed revnetId, uint256 cashOutDelay, address caller);
220
+ ```
221
+
222
+ ### AutoIssue
223
+
224
+ ```solidity
225
+ event AutoIssue(
226
+ uint256 indexed revnetId, uint256 indexed stageId, address indexed beneficiary, uint256 count, address caller
227
+ );
228
+ ```
229
+
230
+ ### StoreAutoIssuanceAmount
231
+
232
+ ```solidity
233
+ event StoreAutoIssuanceAmount(
234
+ uint256 indexed revnetId, uint256 indexed stageId, address indexed beneficiary, uint256 count, address caller
235
+ );
236
+ ```
237
+
238
+ ### SetAdditionalOperator
239
+
240
+ ```solidity
241
+ event SetAdditionalOperator(uint256 revnetId, address additionalOperator, uint256[] permissionIds, address caller);
242
+ ```
243
+
@@ -0,0 +1,296 @@
1
+ # IREVLoans
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/interfaces/IREVLoans.sol)
3
+
4
+
5
+ ## Functions
6
+ ### LOAN_LIQUIDATION_DURATION
7
+
8
+
9
+ ```solidity
10
+ function LOAN_LIQUIDATION_DURATION() external view returns (uint256);
11
+ ```
12
+
13
+ ### PERMIT2
14
+
15
+
16
+ ```solidity
17
+ function PERMIT2() external view returns (IPermit2);
18
+ ```
19
+
20
+ ### CONTROLLER
21
+
22
+
23
+ ```solidity
24
+ function CONTROLLER() external view returns (IJBController);
25
+ ```
26
+
27
+ ### REVNETS
28
+
29
+
30
+ ```solidity
31
+ function REVNETS() external view returns (IREVDeployer);
32
+ ```
33
+
34
+ ### DIRECTORY
35
+
36
+
37
+ ```solidity
38
+ function DIRECTORY() external view returns (IJBDirectory);
39
+ ```
40
+
41
+ ### PRICES
42
+
43
+
44
+ ```solidity
45
+ function PRICES() external view returns (IJBPrices);
46
+ ```
47
+
48
+ ### PROJECTS
49
+
50
+
51
+ ```solidity
52
+ function PROJECTS() external view returns (IJBProjects);
53
+ ```
54
+
55
+ ### REV_ID
56
+
57
+
58
+ ```solidity
59
+ function REV_ID() external view returns (uint256);
60
+ ```
61
+
62
+ ### REV_PREPAID_FEE_PERCENT
63
+
64
+
65
+ ```solidity
66
+ function REV_PREPAID_FEE_PERCENT() external view returns (uint256);
67
+ ```
68
+
69
+ ### MIN_PREPAID_FEE_PERCENT
70
+
71
+
72
+ ```solidity
73
+ function MIN_PREPAID_FEE_PERCENT() external view returns (uint256);
74
+ ```
75
+
76
+ ### MAX_PREPAID_FEE_PERCENT
77
+
78
+
79
+ ```solidity
80
+ function MAX_PREPAID_FEE_PERCENT() external view returns (uint256);
81
+ ```
82
+
83
+ ### borrowableAmountFrom
84
+
85
+
86
+ ```solidity
87
+ function borrowableAmountFrom(
88
+ uint256 revnetId,
89
+ uint256 collateral,
90
+ uint256 decimals,
91
+ uint256 currency
92
+ )
93
+ external
94
+ view
95
+ returns (uint256);
96
+ ```
97
+
98
+ ### determineSourceFeeAmount
99
+
100
+
101
+ ```solidity
102
+ function determineSourceFeeAmount(
103
+ REVLoan memory loan,
104
+ uint256 amount
105
+ )
106
+ external
107
+ view
108
+ returns (uint256 sourceFeeAmount);
109
+ ```
110
+
111
+ ### isLoanSourceOf
112
+
113
+
114
+ ```solidity
115
+ function isLoanSourceOf(uint256 revnetId, IJBPayoutTerminal terminal, address token) external view returns (bool);
116
+ ```
117
+
118
+ ### loanOf
119
+
120
+
121
+ ```solidity
122
+ function loanOf(uint256 loanId) external view returns (REVLoan memory);
123
+ ```
124
+
125
+ ### loanSourcesOf
126
+
127
+
128
+ ```solidity
129
+ function loanSourcesOf(uint256 revnetId) external view returns (REVLoanSource[] memory);
130
+ ```
131
+
132
+ ### numberOfLoansFor
133
+
134
+
135
+ ```solidity
136
+ function numberOfLoansFor(uint256 revnetId) external view returns (uint256);
137
+ ```
138
+
139
+ ### revnetIdOfLoanWith
140
+
141
+
142
+ ```solidity
143
+ function revnetIdOfLoanWith(uint256 loanId) external view returns (uint256);
144
+ ```
145
+
146
+ ### tokenUriResolver
147
+
148
+
149
+ ```solidity
150
+ function tokenUriResolver() external view returns (IJBTokenUriResolver);
151
+ ```
152
+
153
+ ### totalBorrowedFrom
154
+
155
+
156
+ ```solidity
157
+ function totalBorrowedFrom(
158
+ uint256 revnetId,
159
+ IJBPayoutTerminal terminal,
160
+ address token
161
+ )
162
+ external
163
+ view
164
+ returns (uint256);
165
+ ```
166
+
167
+ ### totalCollateralOf
168
+
169
+
170
+ ```solidity
171
+ function totalCollateralOf(uint256 revnetId) external view returns (uint256);
172
+ ```
173
+
174
+ ### borrowFrom
175
+
176
+
177
+ ```solidity
178
+ function borrowFrom(
179
+ uint256 revnetId,
180
+ REVLoanSource calldata source,
181
+ uint256 minBorrowAmount,
182
+ uint256 collateral,
183
+ address payable beneficiary,
184
+ uint256 prepaidFeePercent
185
+ )
186
+ external
187
+ returns (uint256 loanId, REVLoan memory loan);
188
+ ```
189
+
190
+ ### liquidateExpiredLoansFrom
191
+
192
+
193
+ ```solidity
194
+ function liquidateExpiredLoansFrom(uint256 revnetId, uint256 startingLoanId, uint256 count) external;
195
+ ```
196
+
197
+ ### repayLoan
198
+
199
+
200
+ ```solidity
201
+ function repayLoan(
202
+ uint256 loanId,
203
+ uint256 maxRepayBorrowAmount,
204
+ uint256 collateralCountToReturn,
205
+ address payable beneficiary,
206
+ JBSingleAllowance calldata allowance
207
+ )
208
+ external
209
+ payable
210
+ returns (uint256 paidOffLoanId, REVLoan memory loan);
211
+ ```
212
+
213
+ ### reallocateCollateralFromLoan
214
+
215
+
216
+ ```solidity
217
+ function reallocateCollateralFromLoan(
218
+ uint256 loanId,
219
+ uint256 collateralToTransfer,
220
+ REVLoanSource calldata source,
221
+ uint256 minBorrowAmount,
222
+ uint256 collateralToAdd,
223
+ address payable beneficiary,
224
+ uint256 prepaidFeePercent
225
+ )
226
+ external
227
+ payable
228
+ returns (uint256 reallocatedLoanId, uint256 newLoanId, REVLoan memory reallocatedLoan, REVLoan memory newLoan);
229
+ ```
230
+
231
+ ### setTokenUriResolver
232
+
233
+
234
+ ```solidity
235
+ function setTokenUriResolver(IJBTokenUriResolver resolver) external;
236
+ ```
237
+
238
+ ## Events
239
+ ### Borrow
240
+
241
+ ```solidity
242
+ event Borrow(
243
+ uint256 indexed loanId,
244
+ uint256 indexed revnetId,
245
+ REVLoan loan,
246
+ REVLoanSource source,
247
+ uint256 borrowAmount,
248
+ uint256 collateralCount,
249
+ uint256 sourceFeeAmount,
250
+ address payable beneficiary,
251
+ address caller
252
+ );
253
+ ```
254
+
255
+ ### Liquidate
256
+
257
+ ```solidity
258
+ event Liquidate(uint256 indexed loanId, uint256 indexed revnetId, REVLoan loan, address caller);
259
+ ```
260
+
261
+ ### RepayLoan
262
+
263
+ ```solidity
264
+ event RepayLoan(
265
+ uint256 indexed loanId,
266
+ uint256 indexed revnetId,
267
+ uint256 indexed paidOffLoanId,
268
+ REVLoan loan,
269
+ REVLoan paidOffLoan,
270
+ uint256 repayBorrowAmount,
271
+ uint256 sourceFeeAmount,
272
+ uint256 collateralCountToReturn,
273
+ address payable beneficiary,
274
+ address caller
275
+ );
276
+ ```
277
+
278
+ ### ReallocateCollateral
279
+
280
+ ```solidity
281
+ event ReallocateCollateral(
282
+ uint256 indexed loanId,
283
+ uint256 indexed revnetId,
284
+ uint256 indexed reallocatedLoanId,
285
+ REVLoan reallocatedLoan,
286
+ uint256 removedcollateralCount,
287
+ address caller
288
+ );
289
+ ```
290
+
291
+ ### SetTokenUriResolver
292
+
293
+ ```solidity
294
+ event SetTokenUriResolver(IJBTokenUriResolver indexed resolver, address caller);
295
+ ```
296
+
@@ -0,0 +1,5 @@
1
+
2
+
3
+ # Contents
4
+ - [IREVDeployer](IREVDeployer.sol/interface.IREVDeployer.md)
5
+ - [IREVLoans](IREVLoans.sol/interface.IREVLoans.md)
@@ -0,0 +1,14 @@
1
+
2
+
3
+ # Contents
4
+ - [REVAutoIssuance](REVAutoIssuance.sol/struct.REVAutoIssuance.md)
5
+ - [REVBuybackHookConfig](REVBuybackHookConfig.sol/struct.REVBuybackHookConfig.md)
6
+ - [REVBuybackPoolConfig](REVBuybackPoolConfig.sol/struct.REVBuybackPoolConfig.md)
7
+ - [REVConfig](REVConfig.sol/struct.REVConfig.md)
8
+ - [REVCroptopAllowedPost](REVCroptopAllowedPost.sol/struct.REVCroptopAllowedPost.md)
9
+ - [REVDeploy721TiersHookConfig](REVDeploy721TiersHookConfig.sol/struct.REVDeploy721TiersHookConfig.md)
10
+ - [REVDescription](REVDescription.sol/struct.REVDescription.md)
11
+ - [REVLoan](REVLoan.sol/struct.REVLoan.md)
12
+ - [REVLoanSource](REVLoanSource.sol/struct.REVLoanSource.md)
13
+ - [REVStageConfig](REVStageConfig.sol/struct.REVStageConfig.md)
14
+ - [REVSuckerDeploymentConfig](REVSuckerDeploymentConfig.sol/struct.REVSuckerDeploymentConfig.md)
@@ -0,0 +1,19 @@
1
+ # REVAutoIssuance
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVAutoIssuance.sol)
3
+
4
+ **Notes:**
5
+ - member: chainId The ID of the chain on which the mint should be honored.
6
+
7
+ - member: count The number of tokens that should be minted.
8
+
9
+ - member: beneficiary The address that will receive the minted tokens.
10
+
11
+
12
+ ```solidity
13
+ struct REVAutoIssuance {
14
+ uint32 chainId;
15
+ uint104 count;
16
+ address beneficiary;
17
+ }
18
+ ```
19
+
@@ -0,0 +1,19 @@
1
+ # REVBuybackHookConfig
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVBuybackHookConfig.sol)
3
+
4
+ **Notes:**
5
+ - member: dataHook The data hook to use.
6
+
7
+ - member: hookToConfigure The buyback hook to configure.
8
+
9
+ - member: poolConfigurations The pools to setup on the given buyback contract.
10
+
11
+
12
+ ```solidity
13
+ struct REVBuybackHookConfig {
14
+ IJBRulesetDataHook dataHook;
15
+ IJBBuybackHook hookToConfigure;
16
+ REVBuybackPoolConfig[] poolConfigurations;
17
+ }
18
+ ```
19
+
@@ -0,0 +1,21 @@
1
+ # REVBuybackPoolConfig
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVBuybackPoolConfig.sol)
3
+
4
+ **Notes:**
5
+ - member: token The token to setup a pool for.
6
+
7
+ - member: poolFee The fee of the pool in which swaps occur when seeking the best price for a new participant.
8
+ This incentivizes liquidity providers. Out of 1_000_000. A common value is 1%, or 10_000. Other passible values are
9
+ 0.3% and 0.1%.
10
+
11
+ - member: twapWindow The time window to take into account when quoting a price based on TWAP.
12
+
13
+
14
+ ```solidity
15
+ struct REVBuybackPoolConfig {
16
+ address token;
17
+ uint24 fee;
18
+ uint32 twapWindow;
19
+ }
20
+ ```
21
+
@@ -0,0 +1,35 @@
1
+ # REVConfig
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVConfig.sol)
3
+
4
+ **Notes:**
5
+ - member: description The description of the revnet.
6
+
7
+ - member: baseCurrency The currency that the issuance is based on.
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
+ - member: splitOperator The address that will receive the token premint and initial production split,
16
+ and who is allowed to change who the operator is. Only the operator can replace itself after deployment.
17
+
18
+ - member: stageConfigurations The periods of changing constraints.
19
+
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
+
25
+ ```solidity
26
+ struct REVConfig {
27
+ REVDescription description;
28
+ uint32 baseCurrency;
29
+ address splitOperator;
30
+ REVStageConfig[] stageConfigurations;
31
+ REVLoanSource[] loanSources;
32
+ address loans;
33
+ }
34
+ ```
35
+
@@ -0,0 +1,28 @@
1
+ # REVCroptopAllowedPost
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVCroptopAllowedPost.sol)
3
+
4
+ Criteria for allowed posts.
5
+
6
+ **Notes:**
7
+ - member: category A category that should allow posts.
8
+
9
+ - member: minimumPrice The minimum price that a post to the specified category should cost.
10
+
11
+ - member: minimumTotalSupply The minimum total supply of NFTs that can be made available when minting.
12
+
13
+ - member: maxTotalSupply The max total supply of NFTs that can be made available when minting. Leave as 0 for
14
+ max.
15
+
16
+ - member: allowedAddresses A list of addresses that are allowed to post on the category through Croptop.
17
+
18
+
19
+ ```solidity
20
+ struct REVCroptopAllowedPost {
21
+ uint24 category;
22
+ uint104 minimumPrice;
23
+ uint32 minimumTotalSupply;
24
+ uint32 maximumTotalSupply;
25
+ address[] allowedAddresses;
26
+ }
27
+ ```
28
+
@@ -0,0 +1,34 @@
1
+ # REVDeploy721TiersHookConfig
2
+ [Git Source](https://github.com/rev-net/revnet-core-v5/blob/364afaae78a8f60af2b98252dc96af1c2e4760d3/src/structs/REVDeploy721TiersHookConfig.sol)
3
+
4
+ **Notes:**
5
+ - member: baseline721HookConfiguration The baseline config.
6
+
7
+ - member: salt The salt to base the collection's address on.
8
+
9
+ - member: splitOperatorCanAdjustTiers A flag indicating if the revnet's split operator can add tiers and remove
10
+ tiers if
11
+ the tier is allowed to be removed
12
+
13
+ - member: splitOperatorCanUpdateMetadata A flag indicating if the revnet's split operator can update the 721's
14
+ metadata.
15
+
16
+ - member: splitOperatorCanMint A flag indicating if the revnet's split operator can mint 721's from tiers that
17
+ allow it.
18
+
19
+ - member: splitOperatorCanIncreaseDiscountPercent A flag indicating if the revnet's split operator can increase
20
+ the
21
+ discount of a tier.
22
+
23
+
24
+ ```solidity
25
+ struct REVDeploy721TiersHookConfig {
26
+ JBDeploy721TiersHookConfig baseline721HookConfiguration;
27
+ bytes32 salt;
28
+ bool splitOperatorCanAdjustTiers;
29
+ bool splitOperatorCanUpdateMetadata;
30
+ bool splitOperatorCanMint;
31
+ bool splitOperatorCanIncreaseDiscountPercent;
32
+ }
33
+ ```
34
+