@etherisc/gif-next 0.0.2-a733491-751 → 0.0.2-a755cba-731

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 (703) hide show
  1. package/README.md +83 -93
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1000 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +746 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +767 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1293 -0
  10. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +24 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +414 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1060 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +295 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +167 -0
  24. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  26. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  27. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +253 -0
  28. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1292 -0
  30. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +470 -0
  32. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +986 -0
  34. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1494 -0
  36. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +862 -0
  38. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  39. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +309 -367
  40. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  41. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +984 -0
  42. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  44. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1441 -0
  46. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  48. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1991 -0
  50. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  52. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  53. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1429 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +470 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1145 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1605 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +502 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2329 -0
  66. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  67. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +470 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +808 -0
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +343 -2120
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +278 -99
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +406 -2903
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1684 -0
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +574 -0
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1382 -482
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +351 -362
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +159 -114
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  87. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3668 -0
  88. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +810 -0
  90. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  92. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  93. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  100. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +12 -115
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  104. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  105. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  108. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  109. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  110. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +929 -0
  112. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +478 -0
  114. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  116. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +744 -0
  118. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  119. package/artifacts/contracts/{instance/service/IBundleService.sol/IBundleService.json → oracle/IOracleService.sol/IOracleService.json} +370 -283
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/{components/Component.sol/Component.json → oracle/Oracle.sol/Oracle.json} +305 -313
  122. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +990 -0
  124. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  125. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +766 -0
  126. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  127. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/BasicPool.sol/BasicPool.json} +450 -550
  128. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +502 -0
  130. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1360 -0
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  133. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +922 -0
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  137. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +392 -402
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  139. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1285 -0
  140. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  141. package/artifacts/contracts/pool/Pool.sol/Pool.json +997 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1619 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +794 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +806 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/{components/Product.sol/Product.json → product/BasicProduct.sol/BasicProduct.json} +387 -517
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +470 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1555 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +858 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → product/IApplicationService.sol/IApplicationService.json} +203 -202
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1058 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +944 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +253 -137
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +439 -272
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IRiskService.sol/IRiskService.json} +120 -64
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1313 -0
  172. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +810 -0
  174. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.json +923 -0
  176. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  178. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  179. package/artifacts/contracts/product/Product.sol/Product.json +1074 -0
  180. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.json +638 -0
  182. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +718 -0
  184. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +457 -27
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +263 -123
  190. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +949 -128
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1899 -0
  196. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +349 -253
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +161 -94
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1067 -0
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +272 -0
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  209. package/artifacts/contracts/shared/Component.sol/Component.json +677 -0
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1574 -0
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +818 -0
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  215. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +118 -185
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +488 -0
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  222. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  223. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +227 -138
  224. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  225. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1197 -0
  226. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  227. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +679 -0
  228. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  229. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -14
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -10
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +59 -13
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +28 -6
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  240. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IService.sol/IService.json +135 -18
  242. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  243. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  244. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  245. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +767 -0
  246. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  247. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  248. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  249. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  250. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  251. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  252. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  253. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +28 -70
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  255. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +35 -85
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +69 -99
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  259. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -28
  260. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Service.sol/Service.json +136 -108
  262. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  263. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +734 -8
  264. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  265. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  266. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  267. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  268. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  269. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → staking/IStaking.sol/IStaking.json} +707 -679
  270. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  271. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1043 -0
  272. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  273. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +440 -0
  274. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  275. package/artifacts/contracts/staking/Staking.sol/Staking.json +1816 -0
  276. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  277. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +205 -0
  278. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  279. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +780 -0
  280. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  281. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +587 -0
  282. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  283. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1265 -0
  284. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +734 -0
  286. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2283 -0
  288. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  289. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  290. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  291. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  292. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  294. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  296. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  298. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  300. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  301. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  302. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  304. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  305. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  306. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  308. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  309. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  310. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  312. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  314. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  316. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  317. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  318. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +180 -0
  320. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  321. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  322. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  324. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  326. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  328. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  330. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  332. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  334. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +548 -0
  336. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  338. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  340. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  341. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  342. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  343. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +618 -0
  344. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  345. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  346. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  347. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  348. package/contracts/accounting/AccountingService.sol +263 -0
  349. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  350. package/contracts/accounting/IAccountingService.sol +45 -0
  351. package/contracts/authorization/AccessAdmin.sol +615 -0
  352. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  353. package/contracts/authorization/Authorization.sol +289 -0
  354. package/contracts/authorization/IAccess.sol +49 -0
  355. package/contracts/authorization/IAccessAdmin.sol +137 -0
  356. package/contracts/authorization/IAuthorization.sol +60 -0
  357. package/contracts/authorization/IServiceAuthorization.sol +40 -0
  358. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  359. package/contracts/authorization/ServiceAuthorization.sol +106 -0
  360. package/contracts/distribution/BasicDistribution.sol +139 -0
  361. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  362. package/contracts/distribution/Distribution.sol +287 -0
  363. package/contracts/distribution/DistributionService.sol +357 -0
  364. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  365. package/contracts/distribution/IDistributionComponent.sol +52 -0
  366. package/contracts/distribution/IDistributionService.sol +100 -0
  367. package/contracts/examples/fire/DamageLevel.sol +59 -0
  368. package/contracts/examples/fire/FirePool.sol +90 -0
  369. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  370. package/contracts/examples/fire/FireProduct.sol +436 -0
  371. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  372. package/contracts/examples/fire/FireUSD.sol +26 -0
  373. package/contracts/examples/unpermissioned/SimpleDistribution.sol +57 -0
  374. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  375. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  376. package/contracts/examples/unpermissioned/SimplePool.sol +107 -0
  377. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  378. package/contracts/examples/unpermissioned/SimpleProduct.sol +366 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +50 -73
  382. package/contracts/instance/IInstanceService.sol +38 -33
  383. package/contracts/instance/Instance.sol +171 -228
  384. package/contracts/instance/InstanceAdmin.sol +288 -0
  385. package/contracts/instance/InstanceAuthorizationV3.sol +223 -0
  386. package/contracts/instance/InstanceReader.sol +351 -63
  387. package/contracts/instance/InstanceService.sol +261 -336
  388. package/contracts/instance/InstanceServiceManager.sol +14 -29
  389. package/contracts/instance/InstanceStore.sol +287 -0
  390. package/contracts/instance/RiskSet.sol +119 -0
  391. package/contracts/instance/base/BalanceStore.sol +123 -0
  392. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  393. package/contracts/instance/base/ObjectCounter.sol +20 -0
  394. package/contracts/instance/base/ObjectLifecycle.sol +112 -0
  395. package/contracts/instance/base/ObjectSet.sol +78 -0
  396. package/contracts/instance/module/IAccess.sol +6 -14
  397. package/contracts/instance/module/IBundle.sol +8 -8
  398. package/contracts/instance/module/IComponents.sol +50 -0
  399. package/contracts/instance/module/IDistribution.sol +6 -4
  400. package/contracts/instance/module/IPolicy.sol +56 -18
  401. package/contracts/instance/module/IRisk.sol +2 -1
  402. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  403. package/contracts/oracle/BasicOracle.sol +47 -0
  404. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  405. package/contracts/oracle/IOracle.sol +36 -0
  406. package/contracts/oracle/IOracleComponent.sol +33 -0
  407. package/contracts/oracle/IOracleService.sol +66 -0
  408. package/contracts/oracle/Oracle.sol +156 -0
  409. package/contracts/oracle/OracleService.sol +309 -0
  410. package/contracts/oracle/OracleServiceManager.sol +39 -0
  411. package/contracts/pool/BasicPool.sol +175 -0
  412. package/contracts/pool/BasicPoolAuthorization.sol +68 -0
  413. package/contracts/pool/BundleService.sol +425 -0
  414. package/contracts/pool/BundleServiceManager.sol +39 -0
  415. package/contracts/pool/IBundleService.sol +121 -0
  416. package/contracts/pool/IPoolComponent.sol +62 -0
  417. package/contracts/pool/IPoolService.sol +153 -0
  418. package/contracts/pool/Pool.sol +345 -0
  419. package/contracts/pool/PoolService.sol +615 -0
  420. package/contracts/pool/PoolServiceManager.sol +39 -0
  421. package/contracts/product/ApplicationService.sol +259 -0
  422. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +12 -9
  423. package/contracts/product/BasicProduct.sol +49 -0
  424. package/contracts/product/BasicProductAuthorization.sol +41 -0
  425. package/contracts/product/ClaimService.sol +683 -0
  426. package/contracts/{instance/service → product}/ClaimServiceManager.sol +12 -9
  427. package/contracts/{instance/service → product}/IApplicationService.sol +20 -36
  428. package/contracts/product/IClaimService.sol +136 -0
  429. package/contracts/product/IPolicyService.sol +90 -0
  430. package/contracts/product/IPricingService.sol +39 -0
  431. package/contracts/product/IProductComponent.sol +59 -0
  432. package/contracts/product/IRiskService.sol +33 -0
  433. package/contracts/product/PolicyService.sol +736 -0
  434. package/contracts/product/PolicyServiceManager.sol +39 -0
  435. package/contracts/product/PricingService.sol +300 -0
  436. package/contracts/product/PricingServiceManager.sol +39 -0
  437. package/contracts/product/Product.sol +451 -0
  438. package/contracts/product/RiskService.sol +107 -0
  439. package/contracts/product/RiskServiceManager.sol +39 -0
  440. package/contracts/registry/ChainNft.sol +83 -36
  441. package/contracts/registry/IRegistry.sol +98 -26
  442. package/contracts/registry/IRegistryService.sol +36 -41
  443. package/contracts/registry/ITransferInterceptor.sol +1 -1
  444. package/contracts/registry/Registry.sol +454 -198
  445. package/contracts/registry/RegistryAdmin.sol +457 -0
  446. package/contracts/registry/RegistryService.sol +87 -129
  447. package/contracts/registry/RegistryServiceManager.sol +23 -32
  448. package/contracts/registry/ReleaseLifecycle.sol +30 -0
  449. package/contracts/registry/ReleaseRegistry.sol +486 -0
  450. package/contracts/registry/ServiceAuthorizationV3.sol +207 -0
  451. package/contracts/registry/TokenRegistry.sol +261 -62
  452. package/contracts/shared/Component.sol +219 -0
  453. package/contracts/shared/ComponentService.sol +696 -0
  454. package/contracts/shared/ComponentServiceManager.sol +38 -0
  455. package/contracts/shared/ComponentVerifyingService.sol +128 -0
  456. package/contracts/shared/ContractLib.sol +224 -0
  457. package/contracts/shared/IComponent.sol +62 -0
  458. package/contracts/shared/IComponentService.sol +116 -0
  459. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  460. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  461. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  462. package/contracts/shared/INftOwnable.sol +4 -2
  463. package/contracts/shared/IPolicyHolder.sol +23 -14
  464. package/contracts/shared/IRegisterable.sol +11 -0
  465. package/contracts/shared/IRegistryLinked.sol +0 -1
  466. package/contracts/shared/IService.sol +15 -6
  467. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +4 -4
  468. package/contracts/shared/InstanceLinkedComponent.sol +197 -0
  469. package/contracts/shared/KeyValueStore.sol +131 -0
  470. package/contracts/shared/Lifecycle.sol +88 -0
  471. package/contracts/shared/NftIdSet.sol +65 -0
  472. package/contracts/shared/NftOwnable.sol +32 -25
  473. package/contracts/shared/PolicyHolder.sol +22 -41
  474. package/contracts/shared/Registerable.sol +31 -22
  475. package/contracts/shared/RegistryLinked.sol +9 -19
  476. package/contracts/shared/Service.sol +55 -29
  477. package/contracts/shared/TokenHandler.sol +374 -12
  478. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  479. package/contracts/staking/IStaking.sol +173 -0
  480. package/contracts/staking/IStakingService.sol +157 -0
  481. package/contracts/staking/StakeManagerLib.sol +224 -0
  482. package/contracts/staking/Staking.sol +515 -0
  483. package/contracts/staking/StakingLifecycle.sol +23 -0
  484. package/contracts/staking/StakingManager.sol +52 -0
  485. package/contracts/staking/StakingReader.sol +190 -0
  486. package/contracts/staking/StakingService.sol +440 -0
  487. package/contracts/staking/StakingServiceManager.sol +44 -0
  488. package/contracts/staking/StakingStore.sol +605 -0
  489. package/contracts/staking/TargetManagerLib.sol +211 -0
  490. package/contracts/{types → type}/AddressSet.sol +1 -1
  491. package/contracts/type/Amount.sol +150 -0
  492. package/contracts/{types → type}/Blocknumber.sol +27 -3
  493. package/contracts/{types → type}/ClaimId.sol +31 -3
  494. package/contracts/{types → type}/Fee.sol +33 -23
  495. package/contracts/{types → type}/Key32.sol +2 -2
  496. package/contracts/type/Key32Set.sol +62 -0
  497. package/contracts/{types → type}/NftId.sol +28 -15
  498. package/contracts/{types → type}/NftIdSet.sol +2 -2
  499. package/contracts/type/ObjectType.sol +286 -0
  500. package/contracts/type/PayoutId.sol +82 -0
  501. package/contracts/{types → type}/Referral.sol +6 -1
  502. package/contracts/type/RequestId.sol +75 -0
  503. package/contracts/{types → type}/RiskId.sol +31 -5
  504. package/contracts/type/RoleId.sol +162 -0
  505. package/contracts/type/Seconds.sol +101 -0
  506. package/contracts/type/Selector.sol +102 -0
  507. package/contracts/{types → type}/StateId.sol +48 -4
  508. package/contracts/type/String.sol +53 -0
  509. package/contracts/{types → type}/Timestamp.sol +34 -15
  510. package/contracts/{types → type}/UFixed.sol +41 -121
  511. package/contracts/{types → type}/Version.sol +5 -2
  512. package/contracts/{shared → upgradeability}/IVersionable.sol +1 -1
  513. package/contracts/{shared → upgradeability}/ProxyManager.sol +93 -30
  514. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  515. package/contracts/{shared → upgradeability}/Versionable.sol +3 -3
  516. package/package.json +11 -7
  517. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  518. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  519. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  520. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  521. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  522. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  523. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  524. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  525. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  526. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  527. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  528. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  529. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  530. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  531. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1221
  532. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  533. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  534. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  536. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  537. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  538. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  539. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  540. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  541. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -858
  545. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  547. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1085
  549. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  551. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -743
  553. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  554. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  555. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -943
  557. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -681
  559. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  560. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  562. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -398
  563. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  564. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -480
  565. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  566. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  567. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -336
  568. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  569. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  570. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1109
  571. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  572. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  573. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  574. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -724
  575. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  576. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -653
  577. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  578. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -766
  579. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  580. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  581. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  582. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  583. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  584. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  585. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  586. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  587. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  588. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  589. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  590. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  591. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -582
  592. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  593. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  594. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  595. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  596. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  597. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  598. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  599. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  600. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  601. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  602. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -510
  603. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  604. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  605. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  606. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  607. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  608. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  609. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  610. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  611. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  612. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  613. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  614. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  615. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  616. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  617. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  618. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  619. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  621. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  623. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  624. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  625. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  627. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  628. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  629. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  630. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  631. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  632. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  633. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  634. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  635. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  636. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  637. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  638. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  639. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  640. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  641. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  642. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  643. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  644. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  645. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  646. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  647. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  648. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  649. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  650. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  651. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  652. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  653. package/contracts/components/Component.sol +0 -241
  654. package/contracts/components/Distribution.sol +0 -308
  655. package/contracts/components/IComponent.sol +0 -54
  656. package/contracts/components/IDistributionComponent.sol +0 -100
  657. package/contracts/components/IPoolComponent.sol +0 -87
  658. package/contracts/components/IProductComponent.sol +0 -39
  659. package/contracts/components/Pool.sol +0 -254
  660. package/contracts/components/Product.sol +0 -285
  661. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  662. package/contracts/instance/BundleManager.sol +0 -125
  663. package/contracts/instance/InstanceAccessManager.sol +0 -580
  664. package/contracts/instance/ObjectManager.sol +0 -84
  665. package/contracts/instance/base/ComponentService.sol +0 -134
  666. package/contracts/instance/base/KeyValueStore.sol +0 -172
  667. package/contracts/instance/base/Lifecycle.sol +0 -100
  668. package/contracts/instance/module/ISetup.sol +0 -47
  669. package/contracts/instance/module/ITreasury.sol +0 -23
  670. package/contracts/instance/service/ApplicationService.sol +0 -268
  671. package/contracts/instance/service/BundleService.sol +0 -298
  672. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  673. package/contracts/instance/service/ClaimService.sol +0 -151
  674. package/contracts/instance/service/DistributionService.sol +0 -295
  675. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  676. package/contracts/instance/service/IBundleService.sol +0 -54
  677. package/contracts/instance/service/IClaimService.sol +0 -61
  678. package/contracts/instance/service/IDistributionService.sol +0 -65
  679. package/contracts/instance/service/IPolicyService.sol +0 -89
  680. package/contracts/instance/service/IPoolService.sol +0 -20
  681. package/contracts/instance/service/IProductService.sol +0 -40
  682. package/contracts/instance/service/PolicyService.sol +0 -474
  683. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  684. package/contracts/instance/service/PoolService.sol +0 -125
  685. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  686. package/contracts/instance/service/ProductService.sol +0 -241
  687. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  688. package/contracts/registry/RegistryAccessManager.sol +0 -216
  689. package/contracts/registry/ReleaseManager.sol +0 -322
  690. package/contracts/shared/ContractDeployerLib.sol +0 -72
  691. package/contracts/test/TestFee.sol +0 -25
  692. package/contracts/test/TestRegisterable.sol +0 -18
  693. package/contracts/test/TestRoleId.sol +0 -14
  694. package/contracts/test/TestService.sol +0 -25
  695. package/contracts/test/TestToken.sol +0 -26
  696. package/contracts/test/TestVersion.sol +0 -44
  697. package/contracts/test/TestVersionable.sol +0 -17
  698. package/contracts/types/ChainId.sol +0 -38
  699. package/contracts/types/NumberId.sol +0 -52
  700. package/contracts/types/ObjectType.sol +0 -156
  701. package/contracts/types/PayoutId.sol +0 -54
  702. package/contracts/types/RoleId.sol +0 -93
  703. /package/contracts/{types → type}/DistributorType.sol +0 -0
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount, AmountLib} from "../../type/Amount.sol";
7
+ import {BasicPool} from "../../pool/BasicPool.sol";
8
+ import {Fee} from "../../type/Fee.sol";
9
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
10
+ import {IComponents} from "../../instance/module/IComponents.sol";
11
+ import {NftId} from "../../type/NftId.sol";
12
+ import {Seconds} from "../../type/Timestamp.sol";
13
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
14
+
15
+ contract FirePool is
16
+ BasicPool
17
+ {
18
+ constructor(
19
+ address registry,
20
+ NftId fireProductNftId,
21
+ string memory componentName,
22
+ address token,
23
+ IAuthorization authorization
24
+ )
25
+ {
26
+ address initialOwner = msg.sender;
27
+ _intialize(
28
+ registry,
29
+ fireProductNftId,
30
+ componentName,
31
+ token,
32
+ IComponents.PoolInfo({
33
+ maxBalanceAmount: AmountLib.max(),
34
+ isInterceptingBundleTransfers: false,
35
+ isProcessingConfirmedClaims: false,
36
+ isExternallyManaged: false,
37
+ isVerifyingApplications: false,
38
+ collateralizationLevel: UFixedLib.one(),
39
+ retentionLevel: UFixedLib.one()
40
+ }),
41
+ authorization,
42
+ initialOwner);
43
+ }
44
+
45
+ function _intialize(
46
+ address registry,
47
+ NftId fireProductNftId,
48
+ string memory componentName,
49
+ address token,
50
+ IComponents.PoolInfo memory poolInfo,
51
+ IAuthorization authorization,
52
+ address initialOwner
53
+ )
54
+ internal
55
+ initializer
56
+ {
57
+ _initializeBasicPool(
58
+ registry,
59
+ fireProductNftId,
60
+ componentName,
61
+ token,
62
+ poolInfo,
63
+ authorization,
64
+ initialOwner);
65
+ }
66
+
67
+ function createBundle(
68
+ Fee memory fee,
69
+ Amount initialAmount,
70
+ Seconds lifetime
71
+ )
72
+ external
73
+ virtual
74
+ restricted()
75
+ returns(NftId bundleNftId, Amount netStakedAmount)
76
+ {
77
+ address owner = msg.sender;
78
+ bundleNftId = _createBundle(
79
+ owner,
80
+ fee,
81
+ lifetime,
82
+ "" // filter
83
+ );
84
+ netStakedAmount = _stake(bundleNftId, initialAmount);
85
+ }
86
+
87
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
88
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
89
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
90
+ }
@@ -0,0 +1,35 @@
1
+
2
+
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ pragma solidity ^0.8.20;
5
+
6
+ import {BasicPoolAuthorization} from "../../pool/BasicPoolAuthorization.sol";
7
+ import {FirePool} from "./FirePool.sol";
8
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
9
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
10
+
11
+ contract FirePoolAuthorization
12
+ is BasicPoolAuthorization
13
+ {
14
+
15
+ constructor(string memory poolName)
16
+ BasicPoolAuthorization(poolName)
17
+ {}
18
+
19
+
20
+ function _setupTargetAuthorizations()
21
+ internal
22
+ virtual override
23
+ {
24
+ super._setupTargetAuthorizations();
25
+ IAccess.FunctionInfo[] storage functions;
26
+
27
+ // authorize public role (open access to any account, only allows to lock target)
28
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
29
+ // TODO: FirePool.createBundle must require a custom role (e.g. INVESTOR) instead of PUBLIC_ROLE
30
+ _authorize(functions, FirePool.approveTokenHandler.selector, "approveTokenHandler");
31
+ _authorize(functions, FirePool.createBundle.selector, "createBundle");
32
+ }
33
+
34
+ }
35
+
@@ -0,0 +1,436 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {ACTIVE, PAUSED} from "../../type/StateId.sol";
7
+ import {Amount, AmountLib} from "../../type/Amount.sol";
8
+ import {BasicProduct} from "../../product/BasicProduct.sol";
9
+ import {ClaimId} from "../../type/ClaimId.sol";
10
+ import {DamageLevel, DAMAGE_SMALL, DAMAGE_MEDIUM, DAMAGE_LARGE} from "./DamageLevel.sol";
11
+ import {FeeLib} from "../../type/Fee.sol";
12
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
13
+ import {IComponents} from "../../instance/module/IComponents.sol";
14
+ import {IPolicy} from "../../instance/module/IPolicy.sol";
15
+ import {NftId, NftIdLib} from "../../type/NftId.sol";
16
+ import {PayoutId} from "../../type/PayoutId.sol";
17
+ import {POLICY, BUNDLE} from "../../type/ObjectType.sol";
18
+ import {ReferralLib} from "../../type/Referral.sol";
19
+ import {RiskId, RiskIdLib} from "../../type/RiskId.sol";
20
+ import {Seconds} from "../../type/Seconds.sol";
21
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
22
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
23
+
24
+ // solhint-disable-next-line func-name-mixedcase
25
+ function HALF_YEAR() pure returns (Seconds) {
26
+ return Seconds.wrap(180 * 86400);
27
+ }
28
+
29
+ // solhint-disable-next-line func-name-mixedcase
30
+ function ONE_YEAR() pure returns (Seconds) {
31
+ return Seconds.wrap(360 * 86400);
32
+ }
33
+
34
+ /// @dev This is the product component for the fire insurance example.
35
+ /// It show how to insure a house for a given suminsured in a city.
36
+ /// The risk is based on the city.
37
+ /// If a fire is reported in the city, the policy holder is able to submit a claim and get a payout.
38
+ contract FireProduct is
39
+ BasicProduct
40
+ {
41
+ struct Fire {
42
+ string cityName;
43
+ DamageLevel damageLevel;
44
+ Timestamp reportedAt;
45
+ }
46
+
47
+ error ErrorFireProductCityUnknown(string cityName);
48
+ error ErrorFireProductTimestampInFuture();
49
+ error ErrorFireProductFireAlreadyReported();
50
+ error ErrorFireProductAlreadyClaimed();
51
+ error ErrorFireProductPolicyNotActive(NftId policyNftId);
52
+ error ErrorFireProductPolicyNotYetActive(NftId policyNftId, Timestamp activateAt);
53
+ error ErrorFireProductPolicyExpired(NftId policyNftId, Timestamp expiredAt);
54
+ error ErrorFireProductUnknownDamageLevel(DamageLevel damageLevel);
55
+ error ErrorFireProductFireUnknown(uint256 fireId);
56
+ error ErrorFireProductNotPolicyOwner(NftId nftId, address owner);
57
+ error ErrorFireProductFireNotInCoveredCity(uint256 fireId, string cityName);
58
+
59
+ string[] private _cities;
60
+ // map from city name to the RiskId
61
+ mapping(string cityName => RiskId risk) private _riskMapping;
62
+
63
+ // map from city name to the damage level and the time of the report
64
+ mapping(uint256 fireId => Fire) private _fires;
65
+ mapping(uint256 fireId => mapping (NftId policyId => bool claimed)) private _claimed;
66
+
67
+ constructor(
68
+ address registry,
69
+ NftId instanceNftid,
70
+ string memory componentName,
71
+ address token,
72
+ IAuthorization authorization
73
+ )
74
+ {
75
+ address initialOwner = msg.sender;
76
+
77
+ _initialize(
78
+ registry,
79
+ instanceNftid,
80
+ componentName,
81
+ token,
82
+ authorization,
83
+ initialOwner);
84
+ }
85
+
86
+ function _initialize(
87
+ address registry,
88
+ NftId instanceNftId,
89
+ string memory componentName,
90
+ address token,
91
+ IAuthorization authorization,
92
+ address initialOwner
93
+ )
94
+ internal
95
+ initializer
96
+ {
97
+ _initializeBasicProduct(
98
+ registry,
99
+ instanceNftId,
100
+ componentName,
101
+ token,
102
+ IComponents.ProductInfo({
103
+ isProcessingFundedClaims: false,
104
+ isInterceptingPolicyTransfers: false,
105
+ hasDistribution: false,
106
+ expectedNumberOfOracles: 0,
107
+ numberOfOracles: 0,
108
+ poolNftId: NftIdLib.zero(),
109
+ distributionNftId: NftIdLib.zero(),
110
+ oracleNftId: new NftId[](0),
111
+ productFee: FeeLib.zero(),
112
+ processingFee: FeeLib.zero(),
113
+ distributionFee: FeeLib.zero(),
114
+ minDistributionOwnerFee: FeeLib.zero(),
115
+ poolFee: FeeLib.zero(),
116
+ stakingFee: FeeLib.zero(),
117
+ performanceFee: FeeLib.zero()
118
+ }),
119
+ authorization,
120
+ initialOwner); // number of oracles
121
+ }
122
+
123
+ function cities() public view returns (uint256) {
124
+ return _cities.length;
125
+ }
126
+
127
+ function city(uint256 idx) public view returns (string memory) {
128
+ return _cities[idx];
129
+ }
130
+
131
+ function riskId(string memory cityName) public view returns (RiskId) {
132
+ return _riskMapping[cityName];
133
+ }
134
+
135
+ function pauseCity(
136
+ string memory cityName
137
+ )
138
+ public
139
+ restricted()
140
+ {
141
+ if (_riskMapping[cityName].eqz()) {
142
+ revert ErrorFireProductCityUnknown(cityName);
143
+ }
144
+
145
+ _updateRiskState(
146
+ _riskMapping[cityName],
147
+ PAUSED()
148
+ );
149
+ }
150
+
151
+ function unpauseCity(
152
+ string memory cityName
153
+ )
154
+ public
155
+ restricted()
156
+ {
157
+ if (_riskMapping[cityName].eqz()) {
158
+ revert ErrorFireProductCityUnknown(cityName);
159
+ }
160
+
161
+ _updateRiskState(
162
+ _riskMapping[cityName],
163
+ ACTIVE()
164
+ );
165
+ }
166
+
167
+ function calculatePremium(
168
+ string memory cityName,
169
+ Amount sumInsured,
170
+ Seconds lifetime,
171
+ NftId bundleNftId
172
+ )
173
+ public
174
+ view
175
+ onlyNftOfType(bundleNftId, BUNDLE())
176
+ returns (Amount premiumAmount)
177
+ {
178
+ RiskId risk = _riskMapping[cityName];
179
+ if (risk.eqz()) {
180
+ revert ErrorFireProductCityUnknown(cityName);
181
+ }
182
+ premiumAmount = calculatePremium(
183
+ sumInsured,
184
+ risk,
185
+ lifetime,
186
+ "",
187
+ bundleNftId,
188
+ ReferralLib.zero());
189
+ }
190
+
191
+ function calculateNetPremium(
192
+ Amount sumInsured,
193
+ RiskId,
194
+ Seconds lifetime,
195
+ bytes memory
196
+ )
197
+ external
198
+ view
199
+ virtual override
200
+ returns (Amount netPremiumAmount)
201
+ {
202
+ UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
203
+ // to simplify time calculation we assume 360 days per year
204
+ UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
205
+ Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
206
+ return premiumPerYear.multiplyWith(pctOfYear);
207
+ }
208
+
209
+ function createApplication(
210
+ string memory cityName,
211
+ Amount sumInsured,
212
+ Seconds lifetime,
213
+ NftId bundleNftId
214
+ )
215
+ public
216
+ restricted()
217
+ onlyNftOfType(bundleNftId, BUNDLE())
218
+ returns (NftId policyNftId)
219
+ {
220
+ address applicationOwner = msg.sender;
221
+ RiskId risk = initializeCity(cityName);
222
+
223
+ Amount premiumAmount = calculatePremium(
224
+ sumInsured,
225
+ risk,
226
+ lifetime,
227
+ "",
228
+ bundleNftId,
229
+ ReferralLib.zero());
230
+
231
+ return _createApplication(
232
+ applicationOwner,
233
+ risk,
234
+ sumInsured,
235
+ premiumAmount,
236
+ lifetime,
237
+ bundleNftId,
238
+ ReferralLib.zero(),
239
+ ""
240
+ );
241
+ }
242
+
243
+ function initializeCity(
244
+ string memory cityName
245
+ )
246
+ public
247
+ returns (RiskId risk)
248
+ {
249
+ if (! _riskMapping[cityName].eqz()) {
250
+ return _riskMapping[cityName];
251
+ }
252
+ _cities.push(cityName);
253
+ risk = RiskIdLib.toRiskId(cityName);
254
+ _createRisk(risk, "");
255
+ _riskMapping[cityName] = risk;
256
+ }
257
+
258
+ /// @dev Calling this method will lock the sum insured amount in the pool and activate the policy at the given time.
259
+ /// It will also collect the tokens payment for the premium. An approval with the correct amount towards the TokenHandler of the product is therefor required.
260
+ function createPolicy(
261
+ NftId policyNftId,
262
+ Timestamp activateAt
263
+ )
264
+ public
265
+ restricted()
266
+ onlyOwner()
267
+ onlyNftOfType(policyNftId, POLICY())
268
+ {
269
+ _createPolicy(policyNftId, activateAt);
270
+ _collectPremium(policyNftId, activateAt);
271
+ }
272
+
273
+ /// @dev Decline the policy application
274
+ function decline(
275
+ NftId policyNftId
276
+ )
277
+ public
278
+ restricted()
279
+ onlyOwner()
280
+ onlyNftOfType(policyNftId, POLICY())
281
+ {
282
+ _decline(policyNftId);
283
+ }
284
+
285
+ function expire(
286
+ NftId policyNftId,
287
+ Timestamp expireAt
288
+ )
289
+ public
290
+ restricted()
291
+ onlyOwner()
292
+ onlyNftOfType(policyNftId, POLICY())
293
+ returns (Timestamp)
294
+ {
295
+ return _expire(policyNftId, expireAt);
296
+ }
297
+
298
+ function close(
299
+ NftId policyNftId
300
+ )
301
+ public
302
+ restricted()
303
+ onlyOwner()
304
+ onlyNftOfType(policyNftId, POLICY())
305
+ {
306
+ _close(policyNftId);
307
+ }
308
+
309
+ function reportFire(
310
+ uint256 fireId,
311
+ string memory cityName,
312
+ DamageLevel damageLevel,
313
+ Timestamp reportedAt
314
+ )
315
+ public
316
+ restricted()
317
+ {
318
+ if (_riskMapping[cityName].eqz()) {
319
+ revert ErrorFireProductCityUnknown(cityName);
320
+ }
321
+
322
+ if (reportedAt > TimestampLib.blockTimestamp()) {
323
+ revert ErrorFireProductTimestampInFuture();
324
+ }
325
+
326
+ if (! _fires[fireId].reportedAt.eqz()) {
327
+ revert ErrorFireProductFireAlreadyReported();
328
+ }
329
+
330
+ _fires[fireId] = Fire({
331
+ cityName: cityName,
332
+ damageLevel: damageLevel,
333
+ reportedAt: reportedAt
334
+ });
335
+ }
336
+
337
+ function fire(uint256 fireId) public view returns (Fire memory) {
338
+ return _fires[fireId];
339
+ }
340
+
341
+ function submitClaim(
342
+ NftId policyNftId,
343
+ uint256 fireId
344
+ )
345
+ public
346
+ restricted()
347
+ onlyNftOwner(policyNftId)
348
+ onlyNftOfType(policyNftId, POLICY())
349
+ returns (ClaimId claimId, PayoutId payoutId)
350
+ {
351
+ IPolicy.PolicyInfo memory policyInfo = _getInstanceReader().getPolicyInfo(policyNftId);
352
+ _checkClaimConditions(policyNftId, policyInfo, fireId);
353
+
354
+ Fire memory theFire = _fires[fireId];
355
+ _claimed[fireId][policyNftId] = true;
356
+
357
+ Amount claimAmount = _getClaimAmount(policyNftId, policyInfo.sumInsuredAmount, theFire.damageLevel);
358
+
359
+ claimId = _submitClaim(policyNftId, claimAmount, abi.encodePacked(fireId));
360
+ _confirmClaim(policyNftId, claimId, claimAmount, "");
361
+
362
+ payoutId = _createPayout(policyNftId, claimId, claimAmount, "");
363
+ _processPayout(policyNftId, payoutId);
364
+ }
365
+
366
+ function _checkClaimConditions(
367
+ NftId policyNftId,
368
+ IPolicy.PolicyInfo memory policyInfo,
369
+ uint256 fireId
370
+ )
371
+ internal
372
+ view
373
+ {
374
+ // check fire exists
375
+ if (_fires[fireId].reportedAt.eqz()) {
376
+ revert ErrorFireProductFireUnknown(fireId);
377
+ }
378
+
379
+ // check fire is in same city as policy coverage
380
+ if (_riskMapping[_fires[fireId].cityName] != policyInfo.riskId) {
381
+ revert ErrorFireProductFireNotInCoveredCity(fireId, _fires[fireId].cityName);
382
+ }
383
+
384
+ // check policy has not been claimed yet for this fire
385
+ if (_claimed[fireId][policyNftId]) {
386
+ revert ErrorFireProductAlreadyClaimed();
387
+ }
388
+
389
+ Fire memory theFire = _fires[fireId];
390
+
391
+ // check fire is during policy lifetime
392
+ if (theFire.reportedAt < policyInfo.activatedAt) {
393
+ revert ErrorFireProductPolicyNotYetActive(policyNftId, policyInfo.activatedAt);
394
+ }
395
+
396
+ if (theFire.reportedAt >= policyInfo.expiredAt) {
397
+ revert ErrorFireProductPolicyExpired(policyNftId, policyInfo.expiredAt);
398
+ }
399
+ }
400
+
401
+ function _getClaimAmount(
402
+ NftId policyNftId,
403
+ Amount sumInsured,
404
+ DamageLevel damageLevel
405
+ )
406
+ internal
407
+ view
408
+ returns (Amount)
409
+ {
410
+ Amount claimAmount = sumInsured.multiplyWith(_damageLevelToPayoutPercentage(damageLevel));
411
+ Amount maxPayoutRemaining = _getInstanceReader().getRemainingClaimableAmount(policyNftId);
412
+
413
+ // if payout is higher than the remaining maximum payout, then claim what is remaining
414
+ if (maxPayoutRemaining < claimAmount) {
415
+ return maxPayoutRemaining;
416
+ }
417
+
418
+ return claimAmount;
419
+ }
420
+
421
+ function _damageLevelToPayoutPercentage(DamageLevel damageLevel) internal pure returns (UFixed) {
422
+ if (damageLevel.eq(DAMAGE_SMALL())) {
423
+ return UFixedLib.toUFixed(25, -2);
424
+ } else if (damageLevel.eq(DAMAGE_MEDIUM())) {
425
+ return UFixedLib.toUFixed(5, -1);
426
+ } else if (damageLevel.eq(DAMAGE_LARGE())) {
427
+ return UFixedLib.toUFixed(1);
428
+ } else {
429
+ revert ErrorFireProductUnknownDamageLevel(damageLevel);
430
+ }
431
+ }
432
+
433
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
434
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
435
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
436
+ }
@@ -0,0 +1,45 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
5
+ import {FireProduct} from "./FireProduct.sol";
6
+ import {IAccess} from "../../../contracts/authorization/IAccess.sol";
7
+ import {PUBLIC_ROLE} from "../../../contracts/type/RoleId.sol";
8
+
9
+
10
+ contract FireProductAuthorization
11
+ is BasicProductAuthorization
12
+ {
13
+
14
+ constructor(string memory poolName)
15
+ BasicProductAuthorization(poolName)
16
+ {}
17
+
18
+ function _setupTargetAuthorizations()
19
+ internal
20
+ virtual override
21
+ {
22
+ super._setupTargetAuthorizations();
23
+ IAccess.FunctionInfo[] storage functions;
24
+
25
+ // authorize public role (open access to any account, only allows to lock target)
26
+ functions = _authorizeForTarget(getTargetName(), PUBLIC_ROLE());
27
+ // fully public functions
28
+ _authorize(functions, FireProduct.approveTokenHandler.selector, "approveTokenHandler");
29
+ _authorize(functions, FireProduct.createApplication.selector, "createApplication");
30
+
31
+ // only owner
32
+ _authorize(functions, FireProduct.createPolicy.selector, "createPolicy");
33
+ _authorize(functions, FireProduct.decline.selector, "decline");
34
+ _authorize(functions, FireProduct.expire.selector, "expire");
35
+ _authorize(functions, FireProduct.close.selector, "close");
36
+
37
+ // only policy nft owner
38
+ _authorize(functions, FireProduct.submitClaim.selector, "submitClaim");
39
+
40
+ // TODO: add custom role for fire reporter
41
+ _authorize(functions, FireProduct.reportFire.selector, "reportFire");
42
+ }
43
+
44
+ }
45
+
@@ -0,0 +1,26 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ERC20} from "@openzeppelin/contracts/token/ERC20/ERC20.sol";
5
+
6
+ /// @dev FireUSD is a stablecoin with 6 decimals and an initial supply of 1 Billion tokens.
7
+ contract FireUSD is ERC20 {
8
+
9
+ string public constant NAME = "FireUSD";
10
+ string public constant SYMBOL = "HOT";
11
+ uint8 public constant DECIMALS = 6;
12
+ uint256 public constant INITIAL_SUPPLY = 10**12 * 10**DECIMALS; // 1'000'000'000'000
13
+
14
+ constructor()
15
+ ERC20(NAME, SYMBOL)
16
+ {
17
+ _mint(
18
+ _msgSender(),
19
+ INITIAL_SUPPLY
20
+ );
21
+ }
22
+
23
+ function decimals() public pure override returns(uint8) {
24
+ return DECIMALS;
25
+ }
26
+ }
@@ -0,0 +1,57 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
6
+ import {Amount} from "../../type/Amount.sol";
7
+ import {BasicDistribution} from "../../distribution/BasicDistribution.sol";
8
+ import {IAuthorization} from "../../authorization/IAuthorization.sol";
9
+ import {NftId} from "../../type/NftId.sol";
10
+
11
+
12
+ contract SimpleDistribution is
13
+ BasicDistribution
14
+ {
15
+
16
+ constructor(
17
+ address registry,
18
+ NftId productNftId,
19
+ IAuthorization authorization,
20
+ address initialOwner,
21
+ address token
22
+ )
23
+ {
24
+ initialize(
25
+ registry,
26
+ productNftId,
27
+ authorization,
28
+ initialOwner,
29
+ "SimpleDistribution",
30
+ token);
31
+ }
32
+
33
+ function initialize(
34
+ address registry,
35
+ NftId productNftId,
36
+ IAuthorization authorization,
37
+ address initialOwner,
38
+ string memory name,
39
+ address token
40
+ )
41
+ public
42
+ virtual
43
+ initializer()
44
+ {
45
+ _initializeBasicDistribution(
46
+ registry,
47
+ productNftId,
48
+ authorization,
49
+ initialOwner,
50
+ name,
51
+ token);
52
+ }
53
+
54
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
55
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
56
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
57
+ }