@ensuro/core 1.2.7 → 2.0.0-beta1

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/README.md +44 -17
  2. package/build/contracts/EToken.sol/EToken.json +122 -177
  3. package/build/contracts/FlightDelayRiskModule.sol/FlightDelayRiskModule.json +101 -323
  4. package/build/contracts/LPManualWhitelist.sol/LPManualWhitelist.json +15 -2
  5. package/build/contracts/Policy.sol/Policy.json +2 -2
  6. package/build/contracts/PolicyNFT.sol/PolicyNFT.json +16 -3
  7. package/build/contracts/PolicyPool.sol/PolicyPool.json +105 -351
  8. package/build/contracts/PolicyPoolComponent.sol/PolicyPoolComponent.json +13 -0
  9. package/build/contracts/PolicyPoolConfig.sol/PolicyPoolConfig.json +77 -72
  10. package/build/contracts/PremiumsAccount.sol/PremiumsAccount.json +761 -0
  11. package/build/contracts/{BaseAssetManager.sol/BaseAssetManager.json → Reserve.sol/Reserve.json} +15 -202
  12. package/build/contracts/RiskModule.sol/RiskModule.json +83 -310
  13. package/build/contracts/TimeScaled.sol/TimeScaled.json +24 -0
  14. package/build/contracts/TrustfulRiskModule.sol/TrustfulRiskModule.json +131 -333
  15. package/build/contracts/dependencies/ChainlinkClientUpgradeable.sol/ChainlinkClientUpgradeable.json +15 -2
  16. package/build/contracts/dependencies/ERC1967Proxy.sol/ERC1967Proxy.json +64 -0
  17. package/build/{interfaces/IExchange.sol/IExchange.json → contracts/dependencies/IERC20Metadata.sol/IERC20Metadata.json} +83 -79
  18. package/build/{interfaces → contracts/interfaces}/IEToken.sol/IEToken.json +32 -97
  19. package/build/{interfaces → contracts/interfaces}/ILPWhitelist.sol/ILPWhitelist.json +1 -1
  20. package/build/{interfaces → contracts/interfaces}/IPolicyHolder.sol/IPolicyHolder.json +1 -1
  21. package/build/{interfaces → contracts/interfaces}/IPolicyNFT.sol/IPolicyNFT.json +1 -1
  22. package/build/{interfaces → contracts/interfaces}/IPolicyPool.sol/IPolicyPool.json +121 -108
  23. package/build/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol/IPolicyPoolComponent.json +1 -1
  24. package/build/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol/IPolicyPoolConfig.json +20 -36
  25. package/build/contracts/interfaces/IPremiumsAccount.sol/IPremiumsAccount.json +302 -0
  26. package/build/{interfaces → contracts/interfaces}/IRiskModule.sol/IRiskModule.json +58 -34
  27. package/build/contracts/mocks/ForwardProxy.sol/ForwardProxy.json +43 -0
  28. package/build/{interfaces/IInsolvencyHook.sol/IInsolvencyHook.json → contracts/mocks/IMintableERC20.sol/IMintableERC20.json} +13 -8
  29. package/build/contracts/mocks/LinkTokenMock.sol/LinkTokenMock.json +370 -0
  30. package/build/contracts/mocks/PolicyHolderMock.sol/PolicyHolderMock.json +202 -0
  31. package/build/contracts/mocks/PolicyPoolComponentMock.sol/PolicyPoolComponentMock.json +35 -0
  32. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMock.json +603 -0
  33. package/build/contracts/mocks/PolicyPoolMock.sol/PolicyPoolMockForward.json +92 -0
  34. package/build/contracts/mocks/TestCurrency.sol/TestCurrency.json +343 -0
  35. package/build/contracts/mocks/TestCurrencyUUPS.sol/TestCurrencyUUPS.json +353 -0
  36. package/build/contracts/mocks/TestNFT.sol/TestNFT.json +388 -0
  37. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1.json +16 -3
  38. package/build/contracts/upgraded/PolicyNFTv1.sol/PolicyNFTv1_Upgrade.json +16 -3
  39. package/contracts/EToken.sol +188 -269
  40. package/contracts/FlightDelayRiskModule.sol +30 -21
  41. package/contracts/LPManualWhitelist.sol +3 -3
  42. package/contracts/Policy.sol +48 -44
  43. package/contracts/PolicyNFT.sol +2 -2
  44. package/contracts/PolicyPool.sol +114 -467
  45. package/contracts/PolicyPoolComponent.sol +8 -3
  46. package/contracts/PolicyPoolConfig.sol +30 -73
  47. package/contracts/PremiumsAccount.sol +274 -0
  48. package/contracts/Reserve.sol +34 -0
  49. package/contracts/RiskModule.sol +216 -164
  50. package/contracts/TimeScaled.sol +134 -0
  51. package/contracts/TrustfulRiskModule.sol +23 -21
  52. package/contracts/dependencies/ERC1967Proxy.sol +19 -0
  53. package/contracts/dependencies/IERC20Metadata.sol +19 -0
  54. package/contracts/interfaces/IEToken.sol +172 -0
  55. package/{interfaces → contracts/interfaces}/ILPWhitelist.sol +0 -0
  56. package/{interfaces → contracts/interfaces}/IPolicyHolder.sol +0 -0
  57. package/{interfaces → contracts/interfaces}/IPolicyNFT.sol +0 -0
  58. package/contracts/interfaces/IPolicyPool.sol +138 -0
  59. package/{interfaces → contracts/interfaces}/IPolicyPoolComponent.sol +0 -0
  60. package/{interfaces → contracts/interfaces}/IPolicyPoolConfig.sol +29 -20
  61. package/contracts/interfaces/IPremiumsAccount.sol +71 -0
  62. package/contracts/interfaces/IRiskModule.sol +60 -0
  63. package/contracts/mocks/ForwardProxy.sol +66 -0
  64. package/contracts/mocks/IMintableERC20.sol +13 -0
  65. package/contracts/mocks/LinkTokenMock.sol +30 -0
  66. package/contracts/mocks/PolicyHolderMock.sol +68 -0
  67. package/contracts/mocks/PolicyPoolComponentMock.sol +17 -0
  68. package/contracts/mocks/PolicyPoolMock.sol +122 -0
  69. package/contracts/mocks/TestCurrency.sol +35 -0
  70. package/contracts/mocks/TestNFT.sol +23 -0
  71. package/contracts/upgraded/PolicyNFTv1.sol +1 -1
  72. package/js/test-utils.js +278 -0
  73. package/package.json +2 -2
  74. package/build/contracts/AaveAssetManager.sol/AaveAssetManager.json +0 -742
  75. package/build/contracts/DataTypes.sol/DataTypes.json +0 -10
  76. package/build/contracts/Exchange.sol/Exchange.json +0 -591
  77. package/build/contracts/extras/IPriceRiskModule.sol/IPriceRiskModule.json +0 -253
  78. package/build/contracts/extras/PriceRiskModule.sol/PriceRiskModule.json +0 -1055
  79. package/build/interfaces/IAssetManager.sol/IAssetManager.json +0 -31
  80. package/build/interfaces/IExchange.sol/IPriceOracle.json +0 -30
  81. package/contracts/AaveAssetManager.sol +0 -298
  82. package/contracts/BaseAssetManager.sol +0 -301
  83. package/contracts/DataTypes.sol +0 -287
  84. package/contracts/Exchange.sol +0 -189
  85. package/contracts/extras/IPriceRiskModule.sol +0 -41
  86. package/contracts/extras/PriceRiskModule.sol +0 -243
  87. package/interfaces/IAssetManager.sol +0 -23
  88. package/interfaces/IEToken.sol +0 -48
  89. package/interfaces/IExchange.sol +0 -59
  90. package/interfaces/IInsolvencyHook.sol +0 -27
  91. package/interfaces/IPolicyPool.sol +0 -44
  92. package/interfaces/IRiskModule.sol +0 -29
@@ -78,87 +78,25 @@
78
78
  "inputs": [
79
79
  {
80
80
  "indexed": false,
81
- "internalType": "address",
82
- "name": "account",
83
- "type": "address"
84
- }
85
- ],
86
- "name": "Paused",
87
- "type": "event"
88
- },
89
- {
90
- "anonymous": false,
91
- "inputs": [
92
- {
93
- "indexed": true,
94
- "internalType": "bytes32",
95
- "name": "role",
96
- "type": "bytes32"
97
- },
98
- {
99
- "indexed": true,
100
- "internalType": "bytes32",
101
- "name": "previousAdminRole",
102
- "type": "bytes32"
103
- },
104
- {
105
- "indexed": true,
106
- "internalType": "bytes32",
107
- "name": "newAdminRole",
108
- "type": "bytes32"
109
- }
110
- ],
111
- "name": "RoleAdminChanged",
112
- "type": "event"
113
- },
114
- {
115
- "anonymous": false,
116
- "inputs": [
117
- {
118
- "indexed": true,
119
- "internalType": "bytes32",
120
- "name": "role",
121
- "type": "bytes32"
122
- },
123
- {
124
- "indexed": true,
125
- "internalType": "address",
126
- "name": "account",
127
- "type": "address"
128
- },
129
- {
130
- "indexed": true,
131
- "internalType": "address",
132
- "name": "sender",
133
- "type": "address"
81
+ "internalType": "uint8",
82
+ "name": "version",
83
+ "type": "uint8"
134
84
  }
135
85
  ],
136
- "name": "RoleGranted",
86
+ "name": "Initialized",
137
87
  "type": "event"
138
88
  },
139
89
  {
140
90
  "anonymous": false,
141
91
  "inputs": [
142
92
  {
143
- "indexed": true,
144
- "internalType": "bytes32",
145
- "name": "role",
146
- "type": "bytes32"
147
- },
148
- {
149
- "indexed": true,
93
+ "indexed": false,
150
94
  "internalType": "address",
151
95
  "name": "account",
152
96
  "type": "address"
153
- },
154
- {
155
- "indexed": true,
156
- "internalType": "address",
157
- "name": "sender",
158
- "type": "address"
159
97
  }
160
98
  ],
161
- "name": "RoleRevoked",
99
+ "name": "Paused",
162
100
  "type": "event"
163
101
  },
164
102
  {
@@ -189,7 +127,7 @@
189
127
  },
190
128
  {
191
129
  "inputs": [],
192
- "name": "DEFAULT_ADMIN_ROLE",
130
+ "name": "GUARDIAN_ROLE",
193
131
  "outputs": [
194
132
  {
195
133
  "internalType": "bytes32",
@@ -202,7 +140,7 @@
202
140
  },
203
141
  {
204
142
  "inputs": [],
205
- "name": "GUARDIAN_ROLE",
143
+ "name": "LEVEL1_ROLE",
206
144
  "outputs": [
207
145
  {
208
146
  "internalType": "bytes32",
@@ -215,7 +153,7 @@
215
153
  },
216
154
  {
217
155
  "inputs": [],
218
- "name": "LEVEL1_ROLE",
156
+ "name": "LEVEL2_ROLE",
219
157
  "outputs": [
220
158
  {
221
159
  "internalType": "bytes32",
@@ -228,7 +166,7 @@
228
166
  },
229
167
  {
230
168
  "inputs": [],
231
- "name": "LEVEL2_ROLE",
169
+ "name": "LEVEL3_ROLE",
232
170
  "outputs": [
233
171
  {
234
172
  "internalType": "bytes32",
@@ -241,7 +179,7 @@
241
179
  },
242
180
  {
243
181
  "inputs": [],
244
- "name": "LEVEL3_ROLE",
182
+ "name": "RM_PROVIDER_ROLE",
245
183
  "outputs": [
246
184
  {
247
185
  "internalType": "bytes32",
@@ -254,12 +192,12 @@
254
192
  },
255
193
  {
256
194
  "inputs": [],
257
- "name": "RM_PROVIDER_ROLE",
195
+ "name": "TWEAK_EXPIRATION",
258
196
  "outputs": [
259
197
  {
260
- "internalType": "bytes32",
198
+ "internalType": "uint40",
261
199
  "name": "",
262
- "type": "bytes32"
200
+ "type": "uint40"
263
201
  }
264
202
  ],
265
203
  "stateMutability": "view",
@@ -267,12 +205,12 @@
267
205
  },
268
206
  {
269
207
  "inputs": [],
270
- "name": "TWEAK_EXPIRATION",
208
+ "name": "activeExposure",
271
209
  "outputs": [
272
210
  {
273
- "internalType": "uint40",
211
+ "internalType": "uint256",
274
212
  "name": "",
275
- "type": "uint40"
213
+ "type": "uint256"
276
214
  }
277
215
  ],
278
216
  "stateMutability": "view",
@@ -293,7 +231,7 @@
293
231
  },
294
232
  {
295
233
  "inputs": [],
296
- "name": "ensuroFee",
234
+ "name": "exposureLimit",
297
235
  "outputs": [
298
236
  {
299
237
  "internalType": "uint256",
@@ -333,67 +271,6 @@
333
271
  "stateMutability": "view",
334
272
  "type": "function"
335
273
  },
336
- {
337
- "inputs": [
338
- {
339
- "internalType": "bytes32",
340
- "name": "role",
341
- "type": "bytes32"
342
- }
343
- ],
344
- "name": "getRoleAdmin",
345
- "outputs": [
346
- {
347
- "internalType": "bytes32",
348
- "name": "",
349
- "type": "bytes32"
350
- }
351
- ],
352
- "stateMutability": "view",
353
- "type": "function"
354
- },
355
- {
356
- "inputs": [
357
- {
358
- "internalType": "bytes32",
359
- "name": "role",
360
- "type": "bytes32"
361
- },
362
- {
363
- "internalType": "address",
364
- "name": "account",
365
- "type": "address"
366
- }
367
- ],
368
- "name": "grantRole",
369
- "outputs": [],
370
- "stateMutability": "nonpayable",
371
- "type": "function"
372
- },
373
- {
374
- "inputs": [
375
- {
376
- "internalType": "bytes32",
377
- "name": "role",
378
- "type": "bytes32"
379
- },
380
- {
381
- "internalType": "address",
382
- "name": "account",
383
- "type": "address"
384
- }
385
- ],
386
- "name": "hasRole",
387
- "outputs": [
388
- {
389
- "internalType": "bool",
390
- "name": "",
391
- "type": "bool"
392
- }
393
- ],
394
- "stateMutability": "view",
395
- "type": "function"
396
- },
397
274
  {
398
275
  "inputs": [],
399
276
  "name": "lastTweak",
@@ -414,7 +291,7 @@
414
291
  },
415
292
  {
416
293
  "inputs": [],
417
- "name": "maxScrPerPolicy",
294
+ "name": "maxDuration",
418
295
  "outputs": [
419
296
  {
420
297
  "internalType": "uint256",
@@ -427,7 +304,7 @@
427
304
  },
428
305
  {
429
306
  "inputs": [],
430
- "name": "moc",
307
+ "name": "maxPayoutPerPolicy",
431
308
  "outputs": [
432
309
  {
433
310
  "internalType": "uint256",
@@ -451,6 +328,56 @@
451
328
  "stateMutability": "view",
452
329
  "type": "function"
453
330
  },
331
+ {
332
+ "inputs": [],
333
+ "name": "params",
334
+ "outputs": [
335
+ {
336
+ "components": [
337
+ {
338
+ "internalType": "uint256",
339
+ "name": "moc",
340
+ "type": "uint256"
341
+ },
342
+ {
343
+ "internalType": "uint256",
344
+ "name": "jrCollRatio",
345
+ "type": "uint256"
346
+ },
347
+ {
348
+ "internalType": "uint256",
349
+ "name": "collRatio",
350
+ "type": "uint256"
351
+ },
352
+ {
353
+ "internalType": "uint256",
354
+ "name": "ensuroPpFee",
355
+ "type": "uint256"
356
+ },
357
+ {
358
+ "internalType": "uint256",
359
+ "name": "ensuroCocFee",
360
+ "type": "uint256"
361
+ },
362
+ {
363
+ "internalType": "uint256",
364
+ "name": "jrRoc",
365
+ "type": "uint256"
366
+ },
367
+ {
368
+ "internalType": "uint256",
369
+ "name": "srRoc",
370
+ "type": "uint256"
371
+ }
372
+ ],
373
+ "internalType": "struct IRiskModule.Params",
374
+ "name": "ret",
375
+ "type": "tuple"
376
+ }
377
+ ],
378
+ "stateMutability": "view",
379
+ "type": "function"
380
+ },
454
381
  {
455
382
  "inputs": [],
456
383
  "name": "pause",
@@ -486,100 +413,25 @@
486
413
  },
487
414
  {
488
415
  "inputs": [],
489
- "name": "proxiableUUID",
416
+ "name": "premiumsAccount",
490
417
  "outputs": [
491
418
  {
492
- "internalType": "bytes32",
419
+ "internalType": "contract IPremiumsAccount",
493
420
  "name": "",
494
- "type": "bytes32"
495
- }
496
- ],
497
- "stateMutability": "view",
498
- "type": "function"
499
- },
500
- {
501
- "inputs": [
502
- {
503
- "internalType": "uint256",
504
- "name": "scrAmount",
505
- "type": "uint256"
506
- }
507
- ],
508
- "name": "releaseScr",
509
- "outputs": [],
510
- "stateMutability": "nonpayable",
511
- "type": "function"
512
- },
513
- {
514
- "inputs": [
515
- {
516
- "internalType": "bytes32",
517
- "name": "role",
518
- "type": "bytes32"
519
- },
520
- {
521
- "internalType": "address",
522
- "name": "account",
523
421
  "type": "address"
524
422
  }
525
423
  ],
526
- "name": "renounceRole",
527
- "outputs": [],
528
- "stateMutability": "nonpayable",
529
- "type": "function"
530
- },
531
- {
532
- "inputs": [
533
- {
534
- "internalType": "bytes32",
535
- "name": "role",
536
- "type": "bytes32"
537
- },
538
- {
539
- "internalType": "address",
540
- "name": "account",
541
- "type": "address"
542
- }
543
- ],
544
- "name": "revokeRole",
545
- "outputs": [],
546
- "stateMutability": "nonpayable",
547
- "type": "function"
548
- },
549
- {
550
- "inputs": [],
551
- "name": "scrInterestRate",
552
- "outputs": [
553
- {
554
- "internalType": "uint256",
555
- "name": "",
556
- "type": "uint256"
557
- }
558
- ],
559
- "stateMutability": "view",
560
- "type": "function"
561
- },
562
- {
563
- "inputs": [],
564
- "name": "scrLimit",
565
- "outputs": [
566
- {
567
- "internalType": "uint256",
568
- "name": "",
569
- "type": "uint256"
570
- }
571
- ],
572
424
  "stateMutability": "view",
573
425
  "type": "function"
574
426
  },
575
427
  {
576
428
  "inputs": [],
577
- "name": "scrPercentage",
429
+ "name": "proxiableUUID",
578
430
  "outputs": [
579
431
  {
580
- "internalType": "uint256",
432
+ "internalType": "bytes32",
581
433
  "name": "",
582
- "type": "uint256"
434
+ "type": "bytes32"
583
435
  }
584
436
  ],
585
437
  "stateMutability": "view",
@@ -589,50 +441,11 @@
589
441
  "inputs": [
590
442
  {
591
443
  "internalType": "uint256",
592
- "name": "newEnsuroFee",
593
- "type": "uint256"
594
- }
595
- ],
596
- "name": "setEnsuroFee",
597
- "outputs": [],
598
- "stateMutability": "nonpayable",
599
- "type": "function"
600
- },
601
- {
602
- "inputs": [
603
- {
604
- "internalType": "uint256",
605
- "name": "newMaxScrPerPolicy",
606
- "type": "uint256"
607
- }
608
- ],
609
- "name": "setMaxScrPerPolicy",
610
- "outputs": [],
611
- "stateMutability": "nonpayable",
612
- "type": "function"
613
- },
614
- {
615
- "inputs": [
616
- {
617
- "internalType": "uint256",
618
- "name": "newMoc",
619
- "type": "uint256"
620
- }
621
- ],
622
- "name": "setMoc",
623
- "outputs": [],
624
- "stateMutability": "nonpayable",
625
- "type": "function"
626
- },
627
- {
628
- "inputs": [
629
- {
630
- "internalType": "uint256",
631
- "name": "newScrInterestRate",
444
+ "name": "payout",
632
445
  "type": "uint256"
633
446
  }
634
447
  ],
635
- "name": "setScrInterestRate",
448
+ "name": "releaseExposure",
636
449
  "outputs": [],
637
450
  "stateMutability": "nonpayable",
638
451
  "type": "function"
@@ -640,25 +453,17 @@
640
453
  {
641
454
  "inputs": [
642
455
  {
643
- "internalType": "uint256",
644
- "name": "newScrLimit",
645
- "type": "uint256"
646
- }
647
- ],
648
- "name": "setScrLimit",
649
- "outputs": [],
650
- "stateMutability": "nonpayable",
651
- "type": "function"
652
- },
653
- {
654
- "inputs": [
456
+ "internalType": "enum IRiskModule.Parameter",
457
+ "name": "param",
458
+ "type": "uint8"
459
+ },
655
460
  {
656
461
  "internalType": "uint256",
657
- "name": "newScrPercentage",
462
+ "name": "newValue",
658
463
  "type": "uint256"
659
464
  }
660
465
  ],
661
- "name": "setScrPercentage",
466
+ "name": "setParam",
662
467
  "outputs": [],
663
468
  "stateMutability": "nonpayable",
664
469
  "type": "function"
@@ -676,38 +481,6 @@
676
481
  "stateMutability": "nonpayable",
677
482
  "type": "function"
678
483
  },
679
- {
680
- "inputs": [
681
- {
682
- "internalType": "bytes4",
683
- "name": "interfaceId",
684
- "type": "bytes4"
685
- }
686
- ],
687
- "name": "supportsInterface",
688
- "outputs": [
689
- {
690
- "internalType": "bool",
691
- "name": "",
692
- "type": "bool"
693
- }
694
- ],
695
- "stateMutability": "view",
696
- "type": "function"
697
- },
698
- {
699
- "inputs": [],
700
- "name": "totalScr",
701
- "outputs": [
702
- {
703
- "internalType": "uint256",
704
- "name": "",
705
- "type": "uint256"
706
- }
707
- ],
708
- "stateMutability": "view",
709
- "type": "function"
710
- },
711
484
  {
712
485
  "inputs": [],
713
486
  "name": "unpause",
@@ -0,0 +1,24 @@
1
+ {
2
+ "_format": "hh-sol-artifact-1",
3
+ "contractName": "TimeScaled",
4
+ "sourceName": "contracts/TimeScaled.sol",
5
+ "abi": [
6
+ {
7
+ "inputs": [],
8
+ "name": "MIN_SCALE",
9
+ "outputs": [
10
+ {
11
+ "internalType": "uint128",
12
+ "name": "",
13
+ "type": "uint128"
14
+ }
15
+ ],
16
+ "stateMutability": "view",
17
+ "type": "function"
18
+ }
19
+ ],
20
+ "bytecode": "0x60a1610038600b82828239805160001a607314602b57634e487b7160e01b600052600060045260246000fd5b30600052607381538281f3fe730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063706ad35d146038575b600080fd5b604667016345785d8a000081565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212208cead7e828e4f994415fca1d3dda81eec6eab85574afadc579c72c913bc7b35964736f6c63430008060033",
21
+ "deployedBytecode": "0x730000000000000000000000000000000000000000301460806040526004361060335760003560e01c8063706ad35d146038575b600080fd5b604667016345785d8a000081565b6040516fffffffffffffffffffffffffffffffff909116815260200160405180910390f3fea26469706673582212208cead7e828e4f994415fca1d3dda81eec6eab85574afadc579c72c913bc7b35964736f6c63430008060033",
22
+ "linkReferences": {},
23
+ "deployedLinkReferences": {}
24
+ }