@ensuro/core 2.8.3 → 2.9.0

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 (44) hide show
  1. package/README.md +2 -3
  2. package/build/contracts/AccessManager.sol/AccessManager.json +2 -15
  3. package/build/contracts/ERC4626AssetManager.sol/ERC4626AssetManager.json +2 -2
  4. package/build/contracts/ERC4626PlusVaultAssetManager.sol/ERC4626PlusVaultAssetManager.json +2 -2
  5. package/build/contracts/EToken.sol/EToken.json +7 -85
  6. package/build/contracts/FullSignedBucketRiskModule.sol/FullSignedBucketRiskModule.json +1484 -0
  7. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +7 -85
  8. package/build/contracts/Policy.sol/Policy.json +2 -2
  9. package/build/contracts/PolicyPool.sol/PolicyPool.json +2 -15
  10. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +5 -83
  11. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +7 -85
  12. package/build/contracts/Reserve.sol/Reserve.json +5 -83
  13. package/build/contracts/RiskModule.sol/RiskModule.json +5 -96
  14. package/build/contracts/SignedBucketRiskModule.sol/SignedBucketRiskModule.json +7 -150
  15. package/build/contracts/SignedQuoteRiskModule.sol/SignedQuoteRiskModule.json +7 -98
  16. package/build/contracts/TimeScaled.sol/TimeScaled.json +2 -2
  17. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +7 -98
  18. package/build/contracts/dependencies/WadRayMath.sol/WadRayMath.json +2 -2
  19. package/build/contracts/migration/LPManualWhitelistV20.sol/LPManualWhitelistV20.json +5 -83
  20. package/build/contracts/migration/LPManualWhitelistV20Upgraded.sol/LPManualWhitelistV20Upgraded.json +7 -85
  21. package/build/contracts/mocks/FixedRateVault.sol/FixedRateVault.json +2 -2
  22. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +2 -2
  23. package/build/contracts/mocks/InterfaceIdCalculator.sol/InterfaceIdCalculator.json +2 -2
  24. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +2 -2
  25. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +2 -2
  26. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +2 -2
  27. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +2 -2
  28. package/build/contracts/mocks/RiskModuleMock.sol/RiskModuleMock.json +7 -98
  29. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +2 -2
  30. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +2 -2
  31. package/contracts/AccessManager.sol +0 -1
  32. package/contracts/EToken.sol +2 -20
  33. package/contracts/FullSignedBucketRiskModule.sol +204 -0
  34. package/contracts/PolicyPool.sol +0 -1
  35. package/contracts/PolicyPoolComponent.sol +7 -44
  36. package/contracts/PremiumsAccount.sol +3 -3
  37. package/contracts/RiskModule.sol +10 -21
  38. package/contracts/SignedBucketRiskModule.sol +15 -9
  39. package/contracts/SignedQuoteRiskModule.sol +7 -4
  40. package/js/test-utils.js +1 -2
  41. package/js/utils.js +65 -0
  42. package/package.json +1 -1
  43. package/scripts/deploySmokeTest-fork.sh +1 -1
  44. package/scripts/deploySmokeTest.sh +1 -1
package/js/test-utils.js CHANGED
@@ -227,7 +227,6 @@ async function deployPool(options) {
227
227
  if (options.dontGrantL123Roles === undefined) {
228
228
  await grantRole(hre, accessManager, "LEVEL1_ROLE");
229
229
  await grantRole(hre, accessManager, "LEVEL2_ROLE");
230
- await grantRole(hre, accessManager, "LEVEL3_ROLE");
231
230
  }
232
231
 
233
232
  return policyPool;
@@ -304,7 +303,7 @@ const fork = {
304
303
  },
305
304
  };
306
305
 
307
- if (process.env.ENABLE_HH_WARNINGS !== "yes") hre.upgrades.silenceWarnings();
306
+ if (process.env.ENABLE_HH_WARNINGS !== "yes" && hre.upgrades !== undefined) hre.upgrades.silenceWarnings();
308
307
 
309
308
  module.exports = {
310
309
  addEToken,
package/js/utils.js CHANGED
@@ -203,6 +203,31 @@ function makeQuoteMessage({ rmAddress, payout, premium, lossProb, expiration, po
203
203
  );
204
204
  }
205
205
 
206
+ function paramsAsUint256(params) {
207
+ /* eslint no-bitwise: "off" */
208
+ return (
209
+ (params.moc << 240n) |
210
+ (params.jrCollRatio << 224n) |
211
+ (params.collRatio << 208n) |
212
+ (params.ensuroPpFee << 192n) |
213
+ (params.ensuroCocFee << 176n) |
214
+ (params.jrRoc << 160n) |
215
+ (params.srRoc << 144n)
216
+ );
217
+ }
218
+
219
+ /**
220
+ * Create a packed quote message for later signing or hashing.
221
+ *
222
+ * Mimics the behaviour of the FullSignedBucketRiskModule._checkFullSignature method.
223
+ */
224
+ function makeFullQuoteMessage({ rmAddress, payout, premium, lossProb, expiration, policyData, params, validUntil }) {
225
+ return ethers.solidityPacked(
226
+ ["address", "uint256", "uint256", "uint256", "uint40", "bytes32", "uint256", "uint40"],
227
+ [rmAddress, payout, premium, lossProb, expiration, policyData, paramsAsUint256(params), validUntil]
228
+ );
229
+ }
230
+
206
231
  /**
207
232
  * Create a packed quote message for later signing or hashing.
208
233
  *
@@ -263,6 +288,42 @@ async function defaultPolicyParams(
263
288
  };
264
289
  }
265
290
 
291
+ async function defaultPolicyParamsWithBucket(opts, _A = amountFunction(6)) {
292
+ const ret = await defaultPolicyParams(opts, _A);
293
+ return { bucketId: opts.bucketId || 0, ...ret };
294
+ }
295
+
296
+ async function defaultPolicyParamsWithParams(opts, _A = amountFunction(6)) {
297
+ const ret = await defaultPolicyParams(opts, _A);
298
+ // struct PackedParams {
299
+ // uint16 moc; // Margin Of Conservativism - factor that multiplies lossProb - 4 decimals
300
+ // uint16 jrCollRatio; // Collateralization Ratio to compute Junior solvency as % of payout - 4 decimals
301
+ // uint16 collRatio; // Collateralization Ratio to compute solvency requirement as % of payout - 4 decimals
302
+ // uint16 ensuroPpFee; // % of pure premium that will go for Ensuro treasury - 4 decimals
303
+ // uint16 ensuroCocFee; // % of CoC that will go for Ensuro treasury - 4 decimals
304
+ // uint16 jrRoc; // Return on Capital paid to Junior LPs - Annualized Percentage - 4 decimals
305
+ // uint16 srRoc; // Return on Capital paid to Senior LPs - Annualized Percentage - 4 decimals
306
+ // uint32 maxPayoutPerPolicy; // Max Payout per Policy - 2 decimals
307
+ // uint32 exposureLimit; // Max exposure (sum of payouts) to be allocated to this module - 0 decimals
308
+ // uint16 maxDuration; // Max policy duration (in hours)
309
+ // }
310
+ const optsParams = opts.params || {};
311
+ const wadTo4Decimals = 10n ** 14n;
312
+ const params = {
313
+ moc: (optsParams.moc || _W(1)) / wadTo4Decimals,
314
+ jrCollRatio: (optsParams.jrCollRatio || 0n) / wadTo4Decimals,
315
+ collRatio: (optsParams.collRatio || _W(1)) / wadTo4Decimals,
316
+ ensuroPpFee: (optsParams.ensuroPpFee || 0n) / wadTo4Decimals,
317
+ ensuroCocFee: (optsParams.ensuroCocFee || 0n) / wadTo4Decimals,
318
+ jrRoc: (optsParams.jrRoc || 0n) / wadTo4Decimals,
319
+ srRoc: (optsParams.srRoc || _W("0.1")) / wadTo4Decimals, // 10%
320
+ maxPayoutPerPolicy: 0n, // Not used
321
+ exposureLimit: 0n, // Not used
322
+ maxDuration: 0n, // Not used
323
+ };
324
+ return { params, ...ret };
325
+ }
326
+
266
327
  function defaultBucketParams({ moc, jrCollRatio, collRatio, ensuroPpFee, ensuroCocFee, jrRoc, srRoc }) {
267
328
  return {
268
329
  moc: moc !== undefined ? moc : _W("1.1"),
@@ -299,6 +360,8 @@ module.exports = {
299
360
  accessControlMessage,
300
361
  amountFunction,
301
362
  defaultPolicyParams,
363
+ defaultPolicyParamsWithBucket,
364
+ defaultPolicyParamsWithParams,
302
365
  defaultBucketParams,
303
366
  getAddress,
304
367
  getComponentRole,
@@ -309,6 +372,8 @@ module.exports = {
309
372
  grantComponentRole,
310
373
  grantRole,
311
374
  makeBucketQuoteMessage,
375
+ makeFullQuoteMessage,
376
+ paramsAsUint256,
312
377
  makePolicyId,
313
378
  makeQuoteMessage,
314
379
  makeSignedQuote,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ensuro/core",
3
3
  "description": "Ensuro - Decentralized insurance protocol",
4
- "version": "2.8.3",
4
+ "version": "2.9.0",
5
5
  "files": [
6
6
  "**/*.sol",
7
7
  "/build",
@@ -26,7 +26,7 @@ POOL=`readAddress POOL`
26
26
  ACCESSMANAGER=`readAddress ACCESSMANAGER`
27
27
  echo "PolicyPool = $POOL / AccessManager = $ACCESSMANAGER"
28
28
 
29
- for ROLE in LEVEL1 LEVEL2 LEVEL3; do
29
+ for ROLE in LEVEL1 LEVEL2; do
30
30
  npx hardhat --network $NETWORK ens:grantRole --contract-address $ACCESSMANAGER \
31
31
  --role ${ROLE}_ROLE || die "Error granting ${ROLE}_ROLE"
32
32
  done
@@ -17,7 +17,7 @@ POOL=`readAddress POOL`
17
17
  ACCESSMANAGER=`readAddress ACCESSMANAGER`
18
18
  echo "PolicyPool = $POOL / AccessManager = $ACCESSMANAGER"
19
19
 
20
- for ROLE in LEVEL1 LEVEL2 LEVEL3; do
20
+ for ROLE in LEVEL1 LEVEL2; do
21
21
  npx hardhat --network $NETWORK ens:grantRole --contract-address $ACCESSMANAGER \
22
22
  --role ${ROLE}_ROLE || die "Error granting ${ROLE}_ROLE"
23
23
  done