@etherisc/gif-next 0.0.2-e4b632c-016 → 0.0.2-e4d7e1c-013

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 (751) hide show
  1. package/README.md +205 -21
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -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 +1372 -0
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +949 -0
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1809 -0
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +930 -0
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +848 -0
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +1284 -0
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  68. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +1037 -329
  70. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +741 -139
  72. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/Instance.sol/Instance.json +561 -2778
  74. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2349 -0
  76. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +902 -0
  78. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1997 -634
  80. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +789 -216
  82. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +413 -73
  84. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3792 -0
  86. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  87. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  88. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  89. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  90. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  91. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +31 -8
  92. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  93. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  94. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  96. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  97. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  98. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  100. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  101. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  102. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  103. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  106. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  107. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  117. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  119. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  125. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  127. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1438 -0
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +866 -0
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +1033 -0
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +905 -0
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1449 -0
  138. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  139. package/artifacts/contracts/pool/Pool.sol/Pool.json +1025 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  141. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  143. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1833 -0
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +866 -0
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +1036 -0
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +790 -0
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  153. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  155. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1536 -0
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  157. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +886 -0
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  159. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +404 -351
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +1104 -0
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +1036 -0
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  165. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +652 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +1016 -0
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IRiskService.sol/IRiskService.json} +372 -173
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1404 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  173. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  175. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +854 -0
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  177. package/artifacts/contracts/product/PricingService.sol/PricingService.json +932 -0
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +814 -0
  180. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  181. package/artifacts/contracts/product/Product.sol/Product.json +1117 -0
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  186. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  187. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +72 -16
  188. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +931 -154
  190. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  191. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +409 -209
  192. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  193. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  194. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  195. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -0
  196. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  197. package/artifacts/contracts/registry/Registry.sol/Registry.json +1259 -258
  198. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  200. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  201. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  202. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +360 -323
  204. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  205. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +384 -115
  206. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  207. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  208. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  209. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  210. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  212. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  214. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +721 -0
  216. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  217. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/Component.sol/Component.json} +374 -150
  218. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1551 -0
  220. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  224. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  225. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  226. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  230. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  231. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +319 -250
  232. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  233. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  234. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  236. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  237. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +101 -20
  238. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  239. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  240. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  241. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +61 -22
  242. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  243. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  244. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +162 -15
  246. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  247. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  248. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IService.sol/IService.json +161 -154
  250. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  251. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  252. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  254. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  255. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +538 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +98 -28
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +178 -55
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +177 -163
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +635 -8
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2757 -0
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1147 -0
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +3185 -0
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +847 -0
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1344 -0
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +766 -0
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +398 -0
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +251 -0
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +203 -0
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +373 -0
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +228 -0
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +241 -0
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +204 -0
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +254 -0
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +289 -0
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +105 -0
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +572 -0
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +158 -0
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +167 -0
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +65 -0
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +88 -0
  360. package/contracts/accounting/AccountingService.sol +274 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +47 -0
  363. package/contracts/authorization/AccessAdmin.sol +780 -0
  364. package/contracts/authorization/AccessAdminLib.sol +396 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +169 -0
  367. package/contracts/authorization/IAccess.sol +67 -0
  368. package/contracts/authorization/IAccessAdmin.sol +144 -0
  369. package/contracts/authorization/IAuthorization.sol +26 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  374. package/contracts/distribution/Distribution.sol +247 -0
  375. package/contracts/distribution/DistributionService.sol +448 -0
  376. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  377. package/contracts/distribution/IDistributionComponent.sol +45 -0
  378. package/contracts/distribution/IDistributionService.sol +115 -0
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BundleSet.sol +130 -0
  393. package/contracts/instance/IInstance.sol +131 -19
  394. package/contracts/instance/IInstanceService.sol +104 -17
  395. package/contracts/instance/Instance.sol +246 -341
  396. package/contracts/instance/InstanceAdmin.sol +383 -0
  397. package/contracts/instance/InstanceAuthorizationV3.sol +266 -0
  398. package/contracts/instance/InstanceReader.sol +531 -189
  399. package/contracts/instance/InstanceService.sol +451 -89
  400. package/contracts/instance/InstanceServiceManager.sol +14 -31
  401. package/contracts/instance/InstanceStore.sol +298 -0
  402. package/contracts/instance/RiskSet.sol +126 -0
  403. package/contracts/instance/base/BalanceStore.sol +121 -0
  404. package/contracts/instance/base/Cloneable.sol +28 -0
  405. package/contracts/instance/base/ObjectCounter.sol +20 -0
  406. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  407. package/contracts/instance/base/ObjectSet.sol +77 -0
  408. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  409. package/contracts/instance/module/IBundle.sol +10 -8
  410. package/contracts/instance/module/IComponents.sol +62 -0
  411. package/contracts/instance/module/IDistribution.sol +25 -10
  412. package/contracts/instance/module/IPolicy.sol +81 -21
  413. package/contracts/instance/module/IRisk.sol +6 -1
  414. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  415. package/contracts/oracle/BasicOracle.sol +45 -0
  416. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  417. package/contracts/oracle/IOracle.sol +41 -0
  418. package/contracts/oracle/IOracleComponent.sol +33 -0
  419. package/contracts/oracle/IOracleService.sol +66 -0
  420. package/contracts/oracle/Oracle.sol +154 -0
  421. package/contracts/oracle/OracleService.sol +310 -0
  422. package/contracts/oracle/OracleServiceManager.sol +39 -0
  423. package/contracts/pool/BasicPool.sol +162 -0
  424. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  425. package/contracts/pool/BundleService.sol +386 -0
  426. package/contracts/pool/BundleServiceManager.sol +39 -0
  427. package/contracts/pool/IBundleService.sol +116 -0
  428. package/contracts/pool/IPoolComponent.sol +62 -0
  429. package/contracts/pool/IPoolService.sol +170 -0
  430. package/contracts/pool/Pool.sol +333 -0
  431. package/contracts/pool/PoolLib.sol +341 -0
  432. package/contracts/pool/PoolService.sol +614 -0
  433. package/contracts/pool/PoolServiceManager.sol +39 -0
  434. package/contracts/product/ApplicationService.sol +327 -0
  435. package/contracts/product/ApplicationServiceManager.sol +38 -0
  436. package/contracts/product/BasicProduct.sol +49 -0
  437. package/contracts/product/BasicProductAuthorization.sol +63 -0
  438. package/contracts/product/ClaimService.sol +630 -0
  439. package/contracts/product/ClaimServiceManager.sol +38 -0
  440. package/contracts/product/IApplicationService.sol +88 -0
  441. package/contracts/product/IClaimService.sol +136 -0
  442. package/contracts/product/IPolicyService.sol +102 -0
  443. package/contracts/product/IPricingService.sol +40 -0
  444. package/contracts/product/IProductComponent.sol +62 -0
  445. package/contracts/product/IRiskService.sol +48 -0
  446. package/contracts/product/PolicyService.sol +645 -0
  447. package/contracts/product/PolicyServiceLib.sol +139 -0
  448. package/contracts/product/PolicyServiceManager.sol +39 -0
  449. package/contracts/product/PricingService.sol +306 -0
  450. package/contracts/product/PricingServiceManager.sol +39 -0
  451. package/contracts/product/Product.sol +493 -0
  452. package/contracts/product/RiskService.sol +190 -0
  453. package/contracts/product/RiskServiceManager.sol +39 -0
  454. package/contracts/registry/ChainNft.sol +82 -35
  455. package/contracts/registry/IRegistry.sol +134 -20
  456. package/contracts/registry/IRegistryService.sol +44 -17
  457. package/contracts/registry/IRelease.sol +29 -0
  458. package/contracts/registry/ITransferInterceptor.sol +1 -1
  459. package/contracts/registry/Registry.sol +580 -267
  460. package/contracts/registry/RegistryAdmin.sol +191 -0
  461. package/contracts/registry/RegistryAuthorization.sol +336 -0
  462. package/contracts/registry/RegistryService.sol +123 -326
  463. package/contracts/registry/RegistryServiceManager.sol +27 -38
  464. package/contracts/registry/ReleaseAdmin.sol +195 -0
  465. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  466. package/contracts/registry/ReleaseRegistry.sol +525 -0
  467. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  468. package/contracts/registry/TokenRegistry.sol +317 -0
  469. package/contracts/shared/Component.sol +214 -0
  470. package/contracts/shared/ComponentService.sol +687 -0
  471. package/contracts/shared/ComponentServiceManager.sol +38 -0
  472. package/contracts/shared/ContractLib.sol +312 -0
  473. package/contracts/shared/IComponent.sol +58 -0
  474. package/contracts/shared/IComponentService.sol +111 -0
  475. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  476. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  477. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  478. package/contracts/shared/INftOwnable.sol +17 -12
  479. package/contracts/shared/IPolicyHolder.sol +35 -0
  480. package/contracts/shared/IRegisterable.sol +24 -5
  481. package/contracts/shared/IRegistryLinked.sol +11 -0
  482. package/contracts/shared/IService.sol +13 -5
  483. package/contracts/shared/InitializableERC165.sol +35 -0
  484. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  485. package/contracts/shared/KeyValueStore.sol +131 -0
  486. package/contracts/shared/Lifecycle.sol +88 -0
  487. package/contracts/shared/NftIdSet.sol +65 -0
  488. package/contracts/shared/NftOwnable.sol +77 -84
  489. package/contracts/shared/PolicyHolder.sol +63 -0
  490. package/contracts/shared/Registerable.sol +54 -37
  491. package/contracts/shared/RegistryLinked.sol +38 -0
  492. package/contracts/shared/Service.sol +46 -33
  493. package/contracts/shared/TokenHandler.sol +327 -12
  494. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  495. package/contracts/staking/IStaking.sol +367 -0
  496. package/contracts/staking/IStakingService.sol +127 -0
  497. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  498. package/contracts/staking/Staking.sol +798 -0
  499. package/contracts/staking/StakingLib.sol +195 -0
  500. package/contracts/staking/StakingManager.sol +53 -0
  501. package/contracts/staking/StakingReader.sol +171 -0
  502. package/contracts/staking/StakingService.sol +321 -0
  503. package/contracts/staking/StakingServiceManager.sol +46 -0
  504. package/contracts/staking/StakingStore.sol +1368 -0
  505. package/contracts/staking/TargetHandler.sol +132 -0
  506. package/contracts/staking/TargetManagerLib.sol +234 -0
  507. package/contracts/{types → type}/AddressSet.sol +1 -1
  508. package/contracts/type/Amount.sol +154 -0
  509. package/contracts/{types → type}/Blocknumber.sol +36 -12
  510. package/contracts/type/ChainId.sol +101 -0
  511. package/contracts/type/ClaimId.sol +80 -0
  512. package/contracts/{types → type}/DistributorType.sol +2 -2
  513. package/contracts/type/Fee.sol +66 -0
  514. package/contracts/{types → type}/Key32.sol +2 -2
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/{types → type}/NftId.sol +28 -15
  517. package/contracts/type/NftIdSet.sol +62 -0
  518. package/contracts/type/ObjectType.sol +307 -0
  519. package/contracts/type/PayoutId.sol +82 -0
  520. package/contracts/{types → type}/Referral.sol +6 -1
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +75 -0
  523. package/contracts/type/RoleId.sol +180 -0
  524. package/contracts/type/Seconds.sol +120 -0
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/{types → type}/StateId.sol +48 -4
  527. package/contracts/type/String.sol +65 -0
  528. package/contracts/{types → type}/Timestamp.sol +36 -20
  529. package/contracts/type/UFixed.sol +263 -0
  530. package/contracts/{types → type}/Version.sol +61 -6
  531. package/contracts/{shared → upgradeability}/IVersionable.sol +7 -47
  532. package/contracts/upgradeability/ProxyManager.sol +246 -0
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  534. package/contracts/upgradeability/Versionable.sol +62 -0
  535. package/package.json +12 -8
  536. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  537. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -314
  538. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  539. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -610
  540. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  541. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -267
  542. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  543. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  544. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  545. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  546. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  547. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  548. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  549. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -774
  550. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  551. package/artifacts/contracts/components/Product.sol/Product.json +0 -754
  552. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  554. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  556. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  557. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  558. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  559. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  560. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  561. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  562. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  563. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  564. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  565. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  566. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  567. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  568. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  569. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  570. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  571. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  572. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  573. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  574. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  575. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  576. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  577. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  578. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  579. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  580. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  581. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  582. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  583. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  584. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  585. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  586. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  587. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  588. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  589. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  590. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  591. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  592. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  593. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  594. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  595. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  596. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  597. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -930
  598. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  599. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  600. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  601. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  602. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  603. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  604. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  605. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  606. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  607. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  608. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -211
  609. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  610. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  611. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  612. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  613. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  614. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -604
  615. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  616. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  617. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  618. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  619. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  620. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  621. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  622. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  623. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  624. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  625. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  626. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  628. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  629. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  630. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  631. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  632. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  633. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  634. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  635. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  636. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  637. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  638. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  639. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  640. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  641. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  642. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  643. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  644. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  645. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  646. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  647. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  648. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  649. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  650. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  651. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  652. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  653. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  654. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  656. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  658. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  660. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  662. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  663. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  664. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  666. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  667. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  668. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  669. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  670. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  671. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  672. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  673. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  674. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  675. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  676. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  677. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  678. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  679. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  680. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  681. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  682. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  683. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  684. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  685. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  686. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  687. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  688. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  689. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  690. package/contracts/components/BaseComponent.sol +0 -86
  691. package/contracts/components/Distribution.sol +0 -166
  692. package/contracts/components/IBaseComponent.sol +0 -24
  693. package/contracts/components/IDistributionComponent.sol +0 -43
  694. package/contracts/components/IPoolComponent.sol +0 -62
  695. package/contracts/components/IProductComponent.sol +0 -35
  696. package/contracts/components/Pool.sol +0 -259
  697. package/contracts/components/Product.sol +0 -297
  698. package/contracts/experiment/cloning/Cloner.sol +0 -47
  699. package/contracts/experiment/errors/Require.sol +0 -38
  700. package/contracts/experiment/errors/Revert.sol +0 -44
  701. package/contracts/experiment/inheritance/A.sol +0 -53
  702. package/contracts/experiment/inheritance/B.sol +0 -28
  703. package/contracts/experiment/inheritance/C.sol +0 -34
  704. package/contracts/experiment/inheritance/IA.sol +0 -13
  705. package/contracts/experiment/inheritance/IB.sol +0 -10
  706. package/contracts/experiment/inheritance/IC.sol +0 -12
  707. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  708. package/contracts/experiment/statemachine/ISM.sol +0 -25
  709. package/contracts/experiment/statemachine/SM.sol +0 -57
  710. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  711. package/contracts/experiment/types/TypeA.sol +0 -47
  712. package/contracts/experiment/types/TypeB.sol +0 -29
  713. package/contracts/instance/AccessManagedSimple.sol +0 -122
  714. package/contracts/instance/AccessManagerSimple.sol +0 -692
  715. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  716. package/contracts/instance/InstanceAccessManager.sol +0 -288
  717. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  718. package/contracts/instance/base/IInstanceBase.sol +0 -23
  719. package/contracts/instance/base/KeyValueStore.sol +0 -172
  720. package/contracts/instance/base/Lifecycle.sol +0 -100
  721. package/contracts/instance/module/IAccess.sol +0 -38
  722. package/contracts/instance/module/ISetup.sol +0 -43
  723. package/contracts/instance/module/ITreasury.sol +0 -23
  724. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  725. package/contracts/instance/service/DistributionService.sol +0 -70
  726. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  727. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  728. package/contracts/instance/service/IDistributionService.sol +0 -12
  729. package/contracts/instance/service/IPoolService.sol +0 -37
  730. package/contracts/instance/service/IProductService.sol +0 -107
  731. package/contracts/shared/ContractDeployerLib.sol +0 -72
  732. package/contracts/shared/ERC165.sol +0 -21
  733. package/contracts/shared/ProxyManager.sol +0 -94
  734. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  735. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  736. package/contracts/shared/Versionable.sol +0 -147
  737. package/contracts/test/TestFee.sol +0 -25
  738. package/contracts/test/TestRegisterable.sol +0 -18
  739. package/contracts/test/TestRoleId.sol +0 -14
  740. package/contracts/test/TestService.sol +0 -24
  741. package/contracts/test/TestToken.sol +0 -26
  742. package/contracts/test/TestVersion.sol +0 -44
  743. package/contracts/test/TestVersionable.sol +0 -17
  744. package/contracts/types/ChainId.sol +0 -38
  745. package/contracts/types/Fee.sol +0 -56
  746. package/contracts/types/NftIdSet.sol +0 -60
  747. package/contracts/types/NumberId.sol +0 -52
  748. package/contracts/types/ObjectType.sol +0 -152
  749. package/contracts/types/RiskId.sol +0 -43
  750. package/contracts/types/RoleId.sol +0 -82
  751. package/contracts/types/UFixed.sol +0 -325
@@ -0,0 +1,433 @@
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
+ IAuthorization authorization
72
+ )
73
+ {
74
+ address initialOwner = msg.sender;
75
+
76
+ _initialize(
77
+ registry,
78
+ instanceNftid,
79
+ componentName,
80
+ authorization,
81
+ initialOwner);
82
+ }
83
+
84
+ function _initialize(
85
+ address registry,
86
+ NftId instanceNftId,
87
+ string memory componentName,
88
+ IAuthorization authorization,
89
+ address initialOwner
90
+ )
91
+ internal
92
+ initializer
93
+ {
94
+ _initializeBasicProduct(
95
+ registry,
96
+ instanceNftId,
97
+ componentName,
98
+ IComponents.ProductInfo({
99
+ isProcessingFundedClaims: false,
100
+ isInterceptingPolicyTransfers: false,
101
+ hasDistribution: false,
102
+ expectedNumberOfOracles: 0,
103
+ numberOfOracles: 0,
104
+ poolNftId: NftIdLib.zero(),
105
+ distributionNftId: NftIdLib.zero(),
106
+ oracleNftId: new NftId[](0)
107
+ }),
108
+ IComponents.FeeInfo({
109
+ productFee: FeeLib.zero(),
110
+ processingFee: FeeLib.zero(),
111
+ distributionFee: FeeLib.zero(),
112
+ minDistributionOwnerFee: FeeLib.zero(),
113
+ poolFee: FeeLib.zero(),
114
+ stakingFee: FeeLib.zero(),
115
+ performanceFee: FeeLib.zero()
116
+ }),
117
+ authorization,
118
+ initialOwner); // number of oracles
119
+ }
120
+
121
+ function cities() public view returns (uint256) {
122
+ return _cities.length;
123
+ }
124
+
125
+ function city(uint256 idx) public view returns (string memory) {
126
+ return _cities[idx];
127
+ }
128
+
129
+ function riskId(string memory cityName) public view returns (RiskId) {
130
+ return _riskMapping[cityName];
131
+ }
132
+
133
+ function pauseCity(
134
+ string memory cityName
135
+ )
136
+ public
137
+ restricted()
138
+ {
139
+ if (_riskMapping[cityName].eqz()) {
140
+ revert ErrorFireProductCityUnknown(cityName);
141
+ }
142
+
143
+ _setRiskLocked(
144
+ _riskMapping[cityName],
145
+ true
146
+ );
147
+ }
148
+
149
+ function unpauseCity(
150
+ string memory cityName
151
+ )
152
+ public
153
+ restricted()
154
+ {
155
+ if (_riskMapping[cityName].eqz()) {
156
+ revert ErrorFireProductCityUnknown(cityName);
157
+ }
158
+
159
+ _setRiskLocked(
160
+ _riskMapping[cityName],
161
+ false
162
+ );
163
+ }
164
+
165
+ function calculatePremium(
166
+ string memory cityName,
167
+ Amount sumInsured,
168
+ Seconds lifetime,
169
+ NftId bundleNftId
170
+ )
171
+ public
172
+ view
173
+ onlyNftOfType(bundleNftId, BUNDLE())
174
+ returns (Amount premiumAmount)
175
+ {
176
+ RiskId risk = _riskMapping[cityName];
177
+ if (risk.eqz()) {
178
+ revert ErrorFireProductCityUnknown(cityName);
179
+ }
180
+ premiumAmount = calculatePremium(
181
+ sumInsured,
182
+ risk,
183
+ lifetime,
184
+ "",
185
+ bundleNftId,
186
+ ReferralLib.zero());
187
+ }
188
+
189
+ function calculateNetPremium(
190
+ Amount sumInsured,
191
+ RiskId,
192
+ Seconds lifetime,
193
+ bytes memory
194
+ )
195
+ external
196
+ view
197
+ virtual override
198
+ returns (Amount netPremiumAmount)
199
+ {
200
+ UFixed numDays = UFixedLib.toUFixed(lifetime.toInt() / 86400);
201
+ // to simplify time calculation we assume 360 days per year
202
+ UFixed pctOfYear = numDays / UFixedLib.toUFixed(360);
203
+ Amount premiumPerYear = AmountLib.toAmount(sumInsured.toInt() / 20);
204
+ return premiumPerYear.multiplyWith(pctOfYear);
205
+ }
206
+
207
+ function createApplication(
208
+ string memory cityName,
209
+ Amount sumInsured,
210
+ Seconds lifetime,
211
+ NftId bundleNftId
212
+ )
213
+ public
214
+ restricted()
215
+ onlyNftOfType(bundleNftId, BUNDLE())
216
+ returns (NftId policyNftId)
217
+ {
218
+ address applicationOwner = msg.sender;
219
+ RiskId risk = initializeCity(cityName);
220
+
221
+ Amount premiumAmount = calculatePremium(
222
+ sumInsured,
223
+ risk,
224
+ lifetime,
225
+ "",
226
+ bundleNftId,
227
+ ReferralLib.zero());
228
+
229
+ return _createApplication(
230
+ applicationOwner,
231
+ risk,
232
+ sumInsured,
233
+ premiumAmount,
234
+ lifetime,
235
+ bundleNftId,
236
+ ReferralLib.zero(),
237
+ ""
238
+ );
239
+ }
240
+
241
+ function initializeCity(
242
+ string memory cityName
243
+ )
244
+ public
245
+ returns (RiskId risk)
246
+ {
247
+ if (! _riskMapping[cityName].eqz()) {
248
+ return _riskMapping[cityName];
249
+ }
250
+ _cities.push(cityName);
251
+ risk = _createRisk(bytes32(abi.encodePacked(cityName)), "");
252
+ _riskMapping[cityName] = risk;
253
+ }
254
+
255
+ /// @dev Calling this method will lock the sum insured amount in the pool and activate the policy at the given time.
256
+ /// 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.
257
+ function createPolicy(
258
+ NftId policyNftId,
259
+ Timestamp activateAt
260
+ )
261
+ public
262
+ restricted()
263
+ onlyOwner()
264
+ onlyNftOfType(policyNftId, POLICY())
265
+ {
266
+ _createPolicy(policyNftId, activateAt, AmountLib.max());
267
+ _collectPremium(policyNftId, activateAt);
268
+ }
269
+
270
+ /// @dev Decline the policy application
271
+ function decline(
272
+ NftId policyNftId
273
+ )
274
+ public
275
+ restricted()
276
+ onlyOwner()
277
+ onlyNftOfType(policyNftId, POLICY())
278
+ {
279
+ _decline(policyNftId);
280
+ }
281
+
282
+ function expire(
283
+ NftId policyNftId,
284
+ Timestamp expireAt
285
+ )
286
+ public
287
+ restricted()
288
+ onlyOwner()
289
+ onlyNftOfType(policyNftId, POLICY())
290
+ returns (Timestamp)
291
+ {
292
+ return _expire(policyNftId, expireAt);
293
+ }
294
+
295
+ function close(
296
+ NftId policyNftId
297
+ )
298
+ public
299
+ restricted()
300
+ onlyOwner()
301
+ onlyNftOfType(policyNftId, POLICY())
302
+ {
303
+ _close(policyNftId);
304
+ }
305
+
306
+ function reportFire(
307
+ uint256 fireId,
308
+ string memory cityName,
309
+ DamageLevel damageLevel,
310
+ Timestamp reportedAt
311
+ )
312
+ public
313
+ restricted()
314
+ {
315
+ if (_riskMapping[cityName].eqz()) {
316
+ revert ErrorFireProductCityUnknown(cityName);
317
+ }
318
+
319
+ if (reportedAt > TimestampLib.current()) {
320
+ revert ErrorFireProductTimestampInFuture();
321
+ }
322
+
323
+ if (! _fires[fireId].reportedAt.eqz()) {
324
+ revert ErrorFireProductFireAlreadyReported();
325
+ }
326
+
327
+ _fires[fireId] = Fire({
328
+ cityName: cityName,
329
+ damageLevel: damageLevel,
330
+ reportedAt: reportedAt
331
+ });
332
+ }
333
+
334
+ function fire(uint256 fireId) public view returns (Fire memory) {
335
+ return _fires[fireId];
336
+ }
337
+
338
+ function submitClaim(
339
+ NftId policyNftId,
340
+ uint256 fireId
341
+ )
342
+ public
343
+ restricted()
344
+ onlyNftOwner(policyNftId)
345
+ onlyNftOfType(policyNftId, POLICY())
346
+ returns (ClaimId claimId, PayoutId payoutId)
347
+ {
348
+ IPolicy.PolicyInfo memory policyInfo = _getInstanceReader().getPolicyInfo(policyNftId);
349
+ _checkClaimConditions(policyNftId, policyInfo, fireId);
350
+
351
+ Fire memory theFire = _fires[fireId];
352
+ _claimed[fireId][policyNftId] = true;
353
+
354
+ Amount claimAmount = _getClaimAmount(policyNftId, policyInfo.sumInsuredAmount, theFire.damageLevel);
355
+
356
+ claimId = _submitClaim(policyNftId, claimAmount, abi.encodePacked(fireId));
357
+ _confirmClaim(policyNftId, claimId, claimAmount, "");
358
+
359
+ payoutId = _createPayout(policyNftId, claimId, claimAmount, "");
360
+ _processPayout(policyNftId, payoutId);
361
+ }
362
+
363
+ function _checkClaimConditions(
364
+ NftId policyNftId,
365
+ IPolicy.PolicyInfo memory policyInfo,
366
+ uint256 fireId
367
+ )
368
+ internal
369
+ view
370
+ {
371
+ // check fire exists
372
+ if (_fires[fireId].reportedAt.eqz()) {
373
+ revert ErrorFireProductFireUnknown(fireId);
374
+ }
375
+
376
+ // check fire is in same city as policy coverage
377
+ if (_riskMapping[_fires[fireId].cityName] != policyInfo.riskId) {
378
+ revert ErrorFireProductFireNotInCoveredCity(fireId, _fires[fireId].cityName);
379
+ }
380
+
381
+ // check policy has not been claimed yet for this fire
382
+ if (_claimed[fireId][policyNftId]) {
383
+ revert ErrorFireProductAlreadyClaimed();
384
+ }
385
+
386
+ Fire memory theFire = _fires[fireId];
387
+
388
+ // check fire is during policy lifetime
389
+ if (theFire.reportedAt < policyInfo.activatedAt) {
390
+ revert ErrorFireProductPolicyNotYetActive(policyNftId, policyInfo.activatedAt);
391
+ }
392
+
393
+ if (theFire.reportedAt >= policyInfo.expiredAt) {
394
+ revert ErrorFireProductPolicyExpired(policyNftId, policyInfo.expiredAt);
395
+ }
396
+ }
397
+
398
+ function _getClaimAmount(
399
+ NftId policyNftId,
400
+ Amount sumInsured,
401
+ DamageLevel damageLevel
402
+ )
403
+ internal
404
+ view
405
+ returns (Amount)
406
+ {
407
+ Amount claimAmount = sumInsured.multiplyWith(_damageLevelToPayoutPercentage(damageLevel));
408
+ Amount maxPayoutRemaining = _getInstanceReader().getRemainingClaimableAmount(policyNftId);
409
+
410
+ // if payout is higher than the remaining maximum payout, then claim what is remaining
411
+ if (maxPayoutRemaining < claimAmount) {
412
+ return maxPayoutRemaining;
413
+ }
414
+
415
+ return claimAmount;
416
+ }
417
+
418
+ function _damageLevelToPayoutPercentage(DamageLevel damageLevel) internal pure returns (UFixed) {
419
+ if (damageLevel.eq(DAMAGE_SMALL())) {
420
+ return UFixedLib.toUFixed(25, -2);
421
+ } else if (damageLevel.eq(DAMAGE_MEDIUM())) {
422
+ return UFixedLib.toUFixed(5, -1);
423
+ } else if (damageLevel.eq(DAMAGE_LARGE())) {
424
+ return UFixedLib.toUFixed(1);
425
+ } else {
426
+ revert ErrorFireProductUnknownDamageLevel(damageLevel);
427
+ }
428
+ }
429
+
430
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
431
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
432
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
433
+ }
@@ -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(getMainTargetName(), 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,81 @@
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
+ import {ReferralId} from "../../type/Referral.sol";
11
+ import {Timestamp, TimestampLib} from "../../type/Timestamp.sol";
12
+ import {UFixed, UFixedLib} from "../../type/UFixed.sol";
13
+
14
+
15
+ contract SimpleDistribution is
16
+ BasicDistribution
17
+ {
18
+
19
+ constructor(
20
+ address registry,
21
+ NftId productNftId,
22
+ IAuthorization authorization,
23
+ address initialOwner
24
+ )
25
+ {
26
+ initialize(
27
+ registry,
28
+ productNftId,
29
+ authorization,
30
+ initialOwner,
31
+ "SimpleDistribution");
32
+ }
33
+
34
+ function initialize(
35
+ address registry,
36
+ NftId productNftId,
37
+ IAuthorization authorization,
38
+ address initialOwner,
39
+ string memory name
40
+ )
41
+ public
42
+ virtual
43
+ initializer()
44
+ {
45
+ _initializeBasicDistribution(
46
+ registry,
47
+ productNftId,
48
+ authorization,
49
+ initialOwner,
50
+ name);
51
+ }
52
+
53
+ function approveTokenHandler(IERC20Metadata token, Amount amount) external restricted() onlyOwner() { _approveTokenHandler(token, amount); }
54
+ function setLocked(bool locked) external onlyOwner() { _setLocked(locked); }
55
+ function setWallet(address newWallet) external restricted() onlyOwner() { _setWallet(newWallet); }
56
+
57
+ /**
58
+ * @dev create referral codes. This is required for testing only to provide a distributor that is not the message sender.
59
+ */
60
+ function createReferral2(
61
+ NftId distributorNftId,
62
+ string memory code,
63
+ UFixed discountPercentage,
64
+ uint32 maxReferrals,
65
+ Timestamp expiryAt,
66
+ bytes memory data
67
+ )
68
+ external
69
+ virtual
70
+ returns (ReferralId referralId)
71
+ {
72
+ return _createReferral(
73
+ distributorNftId,
74
+ code,
75
+ discountPercentage,
76
+ maxReferrals,
77
+ expiryAt,
78
+ data); // data
79
+ }
80
+
81
+ }
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicDistributionAuthorization} from "../../distribution/BasicDistributionAuthorization.sol";
5
+ import {IAccess} from "../../authorization/IAccess.sol";
6
+ import {PUBLIC_ROLE} from "../../type/RoleId.sol";
7
+ import {SimpleDistribution} from "./SimpleDistribution.sol";
8
+
9
+ contract SimpleDistributionAuthorization
10
+ is BasicDistributionAuthorization
11
+ {
12
+ constructor(string memory componentName)
13
+ BasicDistributionAuthorization(componentName)
14
+ {}
15
+
16
+ function _setupTargetAuthorizations()
17
+ internal
18
+ virtual override
19
+ {
20
+ super._setupTargetAuthorizations();
21
+
22
+ // authorize public role (open access to any account, only allows to lock target)
23
+ IAccess.FunctionInfo[] storage functions;
24
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
25
+ _authorize(functions, SimpleDistribution.approveTokenHandler.selector, "approveTokenHandler");
26
+ _authorize(functions, SimpleDistribution.setWallet.selector, "setWallet");
27
+ }
28
+ }