@etherisc/gif-next 0.0.2-be8b468-276 → 0.0.2-bf51045-496

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 (724) hide show
  1. package/README.md +146 -22
  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/{instance/service/IProductService.sol/IProductService.json → accounting/IAccountingService.sol/IAccountingService.json} +368 -352
  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/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json} +125 -11
  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/distribution/IDistributionComponent.sol/IDistributionComponent.json +885 -0
  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 +2293 -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 +585 -309
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +400 -171
  74. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  75. package/artifacts/contracts/instance/Instance.sol/Instance.json +399 -3011
  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 +1541 -538
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +506 -275
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +383 -85
  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/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  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 +30 -112
  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/oracle/IOracleService.sol/IOracleService.json +709 -0
  120. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  121. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +845 -0
  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/pool/BasicPool.sol/BasicPool.json +1222 -0
  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/pool/IPoolComponent.sol/IPoolComponent.json +877 -0
  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/product/BasicProduct.sol/BasicProduct.json +1116 -0
  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 +1439 -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/IPoolService.sol/IPoolService.json → product/IApplicationService.sol/IApplicationService.json} +268 -256
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +942 -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/product/IPricingService.sol/IPricingService.json +578 -0
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  167. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +973 -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} +150 -187
  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 +606 -173
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +371 -205
  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 +938 -206
  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 +347 -322
  198. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +340 -128
  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 +351 -100
  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/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +182 -189
  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/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +328 -172
  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 +46 -26
  234. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  235. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +175 -0
  236. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +40 -31
  238. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  239. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  240. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IService.sol/IService.json +119 -165
  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 +81 -30
  254. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  255. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +198 -0
  256. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  257. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +96 -48
  258. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  259. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +58 -0
  260. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  261. package/artifacts/contracts/shared/Service.sol/Service.json +150 -176
  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/staking/IStaking.sol/IStaking.json +1417 -0
  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/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  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/upgradeability/Versionable.sol/Versionable.json +78 -0
  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 +352 -0
  379. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  380. package/contracts/instance/BundleSet.sol +130 -0
  381. package/contracts/instance/IInstance.sol +57 -19
  382. package/contracts/instance/IInstanceService.sol +57 -17
  383. package/contracts/instance/Instance.sol +169 -373
  384. package/contracts/instance/InstanceAdmin.sol +288 -0
  385. package/contracts/instance/InstanceAuthorizationV3.sol +222 -0
  386. package/contracts/instance/InstanceReader.sol +364 -73
  387. package/contracts/instance/InstanceService.sol +335 -105
  388. package/contracts/instance/InstanceServiceManager.sol +14 -31
  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/base/Cloneable.sol +28 -0
  393. package/contracts/instance/base/ObjectCounter.sol +20 -0
  394. package/contracts/instance/base/ObjectLifecycle.sol +111 -0
  395. package/contracts/instance/base/ObjectSet.sol +78 -0
  396. package/contracts/instance/module/IAccess.sol +29 -21
  397. package/contracts/instance/module/IBundle.sol +8 -7
  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 +59 -19
  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/product/ApplicationServiceManager.sol +38 -0
  423. package/contracts/product/BasicProduct.sol +49 -0
  424. package/contracts/product/BasicProductAuthorization.sol +41 -0
  425. package/contracts/product/ClaimService.sol +614 -0
  426. package/contracts/product/ClaimServiceManager.sol +38 -0
  427. package/contracts/product/IApplicationService.sol +66 -0
  428. package/contracts/product/IClaimService.sol +123 -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 +427 -0
  438. package/contracts/product/RiskService.sol +107 -0
  439. package/contracts/product/RiskServiceManager.sol +39 -0
  440. package/contracts/registry/ChainNft.sol +82 -35
  441. package/contracts/registry/IRegistry.sol +127 -48
  442. package/contracts/registry/IRegistryService.sol +45 -16
  443. package/contracts/registry/ITransferInterceptor.sol +1 -1
  444. package/contracts/registry/Registry.sol +540 -304
  445. package/contracts/registry/RegistryAdmin.sol +457 -0
  446. package/contracts/registry/RegistryService.sol +126 -284
  447. package/contracts/registry/RegistryServiceManager.sol +26 -53
  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 -57
  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 +15 -12
  463. package/contracts/shared/IPolicyHolder.sol +35 -0
  464. package/contracts/shared/IRegisterable.sol +15 -6
  465. package/contracts/shared/IRegistryLinked.sol +11 -0
  466. package/contracts/shared/IService.sol +16 -6
  467. package/contracts/shared/InitializableERC165.sol +27 -0
  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 +75 -84
  473. package/contracts/shared/PolicyHolder.sol +62 -0
  474. package/contracts/shared/Registerable.sol +34 -41
  475. package/contracts/shared/RegistryLinked.sol +38 -0
  476. package/contracts/shared/Service.sol +61 -31
  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/type/ClaimId.sol +80 -0
  494. package/contracts/{types → type}/DistributorType.sol +2 -2
  495. package/contracts/{types → type}/Fee.sol +33 -23
  496. package/contracts/{types → type}/Key32.sol +2 -2
  497. package/contracts/type/Key32Set.sol +62 -0
  498. package/contracts/{types → type}/NftId.sol +28 -15
  499. package/contracts/type/NftIdSet.sol +62 -0
  500. package/contracts/type/ObjectType.sol +286 -0
  501. package/contracts/type/PayoutId.sol +82 -0
  502. package/contracts/{types → type}/Referral.sol +6 -1
  503. package/contracts/type/RequestId.sol +75 -0
  504. package/contracts/{types → type}/RiskId.sol +31 -5
  505. package/contracts/type/RoleId.sol +162 -0
  506. package/contracts/type/Seconds.sol +101 -0
  507. package/contracts/type/Selector.sol +102 -0
  508. package/contracts/{types → type}/StateId.sol +48 -4
  509. package/contracts/type/String.sol +53 -0
  510. package/contracts/{types → type}/Timestamp.sol +34 -15
  511. package/contracts/{types → type}/UFixed.sol +41 -121
  512. package/contracts/{types → type}/Version.sol +5 -2
  513. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  514. package/contracts/upgradeability/ProxyManager.sol +232 -0
  515. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  516. package/contracts/upgradeability/Versionable.sol +59 -0
  517. package/package.json +11 -7
  518. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  519. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  520. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  521. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  522. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  523. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  524. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  525. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  526. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  527. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  528. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  529. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  530. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  531. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -790
  532. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  533. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  534. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  535. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  536. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  537. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  538. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  539. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  540. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  541. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  542. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  543. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  544. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  545. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  546. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  547. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  548. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  549. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  550. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  551. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  552. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  553. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  554. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  555. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  556. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  557. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  558. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  559. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  560. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  561. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  562. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  563. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  564. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  565. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  566. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  567. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  568. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  569. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  570. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  571. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  572. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  573. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  574. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  575. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  576. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  577. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  578. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  579. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  580. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  581. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  582. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  583. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  584. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  585. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  586. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  587. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  588. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  589. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  590. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  591. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  592. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  593. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -641
  594. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  595. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  596. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  597. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  598. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  599. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  600. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  601. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  602. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  603. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  604. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  605. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  606. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  607. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  608. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  609. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  610. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  611. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  612. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  613. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  614. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  615. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  616. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  617. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  618. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  619. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  620. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  621. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  622. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  623. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  624. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  625. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  626. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  627. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  628. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  629. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  630. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  631. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  632. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  633. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  634. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  635. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  636. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  637. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  638. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  639. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  640. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  641. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  642. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  643. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  644. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  645. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  646. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  647. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  648. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  649. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  650. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  651. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  652. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  653. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  654. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  655. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  656. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  657. package/artifacts/contracts/types/StateId.sol/StateIdLib.json +0 -92
  658. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  659. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  660. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  661. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  662. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  663. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  664. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  665. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  666. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  667. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  668. package/contracts/components/BaseComponent.sol +0 -91
  669. package/contracts/components/Distribution.sol +0 -166
  670. package/contracts/components/IBaseComponent.sol +0 -25
  671. package/contracts/components/IDistributionComponent.sol +0 -46
  672. package/contracts/components/IPoolComponent.sol +0 -62
  673. package/contracts/components/IProductComponent.sol +0 -35
  674. package/contracts/components/Pool.sol +0 -258
  675. package/contracts/components/Product.sol +0 -297
  676. package/contracts/experiment/cloning/Cloner.sol +0 -47
  677. package/contracts/experiment/errors/Require.sol +0 -38
  678. package/contracts/experiment/errors/Revert.sol +0 -44
  679. package/contracts/experiment/inheritance/A.sol +0 -53
  680. package/contracts/experiment/inheritance/B.sol +0 -28
  681. package/contracts/experiment/inheritance/C.sol +0 -34
  682. package/contracts/experiment/inheritance/IA.sol +0 -13
  683. package/contracts/experiment/inheritance/IB.sol +0 -10
  684. package/contracts/experiment/inheritance/IC.sol +0 -12
  685. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  686. package/contracts/experiment/statemachine/ISM.sol +0 -25
  687. package/contracts/experiment/statemachine/SM.sol +0 -57
  688. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  689. package/contracts/experiment/types/TypeA.sol +0 -47
  690. package/contracts/experiment/types/TypeB.sol +0 -29
  691. package/contracts/instance/AccessManagedSimple.sol +0 -115
  692. package/contracts/instance/AccessManagerSimple.sol +0 -692
  693. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  694. package/contracts/instance/InstanceAccessManager.sol +0 -288
  695. package/contracts/instance/base/ComponentServiceBase.sol +0 -39
  696. package/contracts/instance/base/IInstanceBase.sol +0 -23
  697. package/contracts/instance/base/KeyValueStore.sol +0 -172
  698. package/contracts/instance/base/Lifecycle.sol +0 -100
  699. package/contracts/instance/module/ISetup.sol +0 -43
  700. package/contracts/instance/module/ITreasury.sol +0 -23
  701. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  702. package/contracts/instance/service/DistributionService.sol +0 -96
  703. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  704. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  705. package/contracts/instance/service/IDistributionService.sol +0 -12
  706. package/contracts/instance/service/IPoolService.sol +0 -37
  707. package/contracts/instance/service/IProductService.sol +0 -107
  708. package/contracts/shared/ContractDeployerLib.sol +0 -72
  709. package/contracts/shared/ERC165.sol +0 -25
  710. package/contracts/shared/ProxyManager.sol +0 -94
  711. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  712. package/contracts/shared/Versionable.sol +0 -147
  713. package/contracts/test/TestFee.sol +0 -25
  714. package/contracts/test/TestRegisterable.sol +0 -18
  715. package/contracts/test/TestRoleId.sol +0 -14
  716. package/contracts/test/TestService.sol +0 -24
  717. package/contracts/test/TestToken.sol +0 -26
  718. package/contracts/test/TestVersion.sol +0 -44
  719. package/contracts/test/TestVersionable.sol +0 -17
  720. package/contracts/types/ChainId.sol +0 -38
  721. package/contracts/types/NftIdSet.sol +0 -60
  722. package/contracts/types/NumberId.sol +0 -52
  723. package/contracts/types/ObjectType.sol +0 -152
  724. package/contracts/types/RoleId.sol +0 -88
@@ -0,0 +1,736 @@
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 {IAccountingService} from "../accounting/IAccountingService.sol";
7
+ import {IComponentService} from "../shared/IComponentService.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
10
+ import {InstanceReader} from "../instance/InstanceReader.sol";
11
+ import {InstanceStore} from "../instance/InstanceStore.sol";
12
+ import {IInstance} from "../instance/IInstance.sol";
13
+ import {IPolicy} from "../instance/module/IPolicy.sol";
14
+ import {IPolicyHolder} from "../shared/IPolicyHolder.sol";
15
+ import {IPolicyService} from "./IPolicyService.sol";
16
+ import {IPoolService} from "../pool/IPoolService.sol";
17
+ import {IPricingService} from "./IPricingService.sol";
18
+ import {IRegistry} from "../registry/IRegistry.sol";
19
+
20
+ import {Amount} from "../type/Amount.sol";
21
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED, PAID} from "../type/StateId.sol";
22
+ import {ContractLib} from "../shared/ContractLib.sol";
23
+ import {NftId} from "../type/NftId.sol";
24
+ import {ObjectType, ACCOUNTING, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, PRICE} from "../type/ObjectType.sol";
25
+ import {ReferralId} from "../type/Referral.sol";
26
+ import {RiskId} from "../type/RiskId.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {StateId} from "../type/StateId.sol";
29
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
30
+ import {TokenHandler} from "../shared/TokenHandler.sol";
31
+ import {VersionPart} from "../type/Version.sol";
32
+
33
+
34
+ contract PolicyService is
35
+ Service,
36
+ IPolicyService
37
+ {
38
+ IAccountingService private _accountingService;
39
+ IComponentService internal _componentService;
40
+ IDistributionService internal _distributionService;
41
+ IPoolService internal _poolService;
42
+ IPricingService internal _pricingService;
43
+
44
+ function _initialize(
45
+ address owner,
46
+ bytes memory data
47
+ )
48
+ internal
49
+ virtual override
50
+ initializer
51
+ {
52
+ (
53
+ address registryAddress,
54
+ address authority
55
+ ) = abi.decode(data, (address, address));
56
+
57
+ _initializeService(registryAddress, authority, owner);
58
+
59
+ VersionPart majorVersion = getVersion().toMajorPart();
60
+ _accountingService = IAccountingService(getRegistry().getServiceAddress(ACCOUNTING(), majorVersion));
61
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
62
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
63
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
64
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
65
+
66
+ _registerInterface(type(IPolicyService).interfaceId);
67
+ }
68
+
69
+
70
+ function decline(
71
+ NftId applicationNftId // = policyNftId
72
+ )
73
+ external
74
+ virtual
75
+ nonReentrant()
76
+ {
77
+ // checks
78
+ (IInstance instance,,) = _getAndVerifyCallerForPolicy(applicationNftId);
79
+
80
+ // check policy is in state applied
81
+ if (instance.getInstanceReader().getPolicyState(applicationNftId) != APPLIED()) {
82
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
83
+ }
84
+
85
+ // effects
86
+ // store updated policy info
87
+ instance.getInstanceStore().updatePolicyState(
88
+ applicationNftId,
89
+ DECLINED());
90
+
91
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
92
+ }
93
+
94
+
95
+ /// @inheritdoc IPolicyService
96
+ function createPolicy(
97
+ NftId applicationNftId, // = policyNftId
98
+ Timestamp activateAt
99
+ )
100
+ external
101
+ virtual
102
+ nonReentrant()
103
+ returns (Amount premiumAmount)
104
+ {
105
+ // checks
106
+ (
107
+ IInstance instance,
108
+ NftId productNftId,
109
+ IPolicy.PolicyInfo memory applicationInfo
110
+ ) = _getAndVerifyCallerForPolicy(applicationNftId);
111
+
112
+ // check policy is in state applied
113
+ InstanceReader instanceReader = instance.getInstanceReader();
114
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
115
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
116
+ }
117
+
118
+ // effects
119
+ // actual collateralizaion
120
+ _poolService.lockCollateral(
121
+ instance,
122
+ address(instanceReader.getComponentInfo(productNftId).token),
123
+ productNftId,
124
+ applicationNftId,
125
+ applicationInfo.bundleNftId,
126
+ applicationInfo.sumInsuredAmount);
127
+
128
+ // optional activation of policy
129
+ if(activateAt > TimestampLib.zero()) {
130
+ applicationInfo = _activate(applicationNftId, applicationInfo, activateAt);
131
+ }
132
+
133
+ // update policy and set state to collateralized
134
+ instance.getInstanceStore().updatePolicy(
135
+ applicationNftId,
136
+ applicationInfo,
137
+ COLLATERALIZED());
138
+
139
+ // calculate and store premium
140
+ RiskId riskId = applicationInfo.riskId;
141
+ NftId bundleNftId = applicationInfo.bundleNftId;
142
+
143
+ IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
144
+ productNftId,
145
+ riskId,
146
+ applicationInfo.sumInsuredAmount,
147
+ applicationInfo.lifetime,
148
+ applicationInfo.applicationData,
149
+ bundleNftId,
150
+ applicationInfo.referralId);
151
+
152
+ premiumAmount = premium.fullPremiumAmount;
153
+ instance.getInstanceStore().createPremium(
154
+ applicationNftId,
155
+ premium);
156
+
157
+ // update referral counter if product has linked distributino component
158
+ {
159
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
160
+ if (productInfo.hasDistribution) {
161
+ _distributionService.processReferral(
162
+ productInfo.distributionNftId,
163
+ applicationInfo.referralId);
164
+ }
165
+ }
166
+
167
+ // link policy to risk and bundle
168
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
169
+ instance.getRiskSet().linkPolicy(productNftId, riskId, applicationNftId);
170
+ instance.getBundleSet().linkPolicy(poolNftId, bundleNftId, applicationNftId);
171
+
172
+ // log policy creation before interactions with token and policy holder
173
+ emit LogPolicyServicePolicyCreated(applicationNftId, premium.premiumAmount, activateAt);
174
+
175
+ // interactions
176
+ // callback to policy holder if applicable
177
+ _policyHolderPolicyActivated(applicationNftId, activateAt);
178
+ }
179
+
180
+
181
+ /// @inheritdoc IPolicyService
182
+ function collectPremium(
183
+ NftId policyNftId,
184
+ Timestamp activateAt
185
+ )
186
+ external
187
+ virtual
188
+ nonReentrant()
189
+ {
190
+ // checks
191
+ (
192
+ IInstance instance,
193
+ NftId productNftId,
194
+ IPolicy.PolicyInfo memory policyInfo
195
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
196
+
197
+ // check policy is in state collateralized
198
+ InstanceReader instanceReader = instance.getInstanceReader();
199
+ if (instanceReader.getPolicyState(policyNftId) != COLLATERALIZED()) {
200
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
201
+ }
202
+
203
+ // check if premium has already been collected
204
+ if (instanceReader.getPremiumInfoState(policyNftId) == PAID()) {
205
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId);
206
+ }
207
+
208
+ // check funds and allowance of policy holder
209
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
210
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, policyInfo.productNftId);
211
+ _checkPremiumBalanceAndAllowance(
212
+ tokenHandler.TOKEN(),
213
+ address(tokenHandler),
214
+ getRegistry().ownerOf(policyNftId),
215
+ premium.premiumAmount);
216
+
217
+ // effects
218
+ _processSale(
219
+ instanceReader,
220
+ instance.getInstanceStore(),
221
+ productNftId,
222
+ policyInfo.bundleNftId,
223
+ policyInfo.referralId,
224
+ premium);
225
+
226
+ // optionally activate policy
227
+ if(activateAt.gtz()) {
228
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
229
+ }
230
+
231
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
232
+ instance.getInstanceStore().updatePremiumState(policyNftId, PAID());
233
+
234
+ // log premium collection before interactions with token
235
+ emit LogPolicyServicePolicyPremiumCollected(policyNftId, premium.premiumAmount);
236
+
237
+ // interactions
238
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
239
+ }
240
+
241
+
242
+ /// @inheritdoc IPolicyService
243
+ function activate(NftId policyNftId, Timestamp activateAt)
244
+ external
245
+ virtual
246
+ nonReentrant()
247
+ {
248
+ // checks
249
+ (
250
+ IInstance instance,,
251
+ IPolicy.PolicyInfo memory policyInfo
252
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
253
+
254
+ // effects
255
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
256
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
257
+
258
+ // log policy activation before interactions with policy holder
259
+ emit LogPolicyServicePolicyActivated(policyNftId, activateAt);
260
+
261
+ // interactions
262
+ // callback to policy holder if applicable
263
+ _policyHolderPolicyActivated(policyNftId, activateAt);
264
+ }
265
+
266
+
267
+ /// @inheritdoc IPolicyService
268
+ function expire(
269
+ NftId policyNftId,
270
+ Timestamp expireAt
271
+ )
272
+ external
273
+ virtual
274
+ nonReentrant()
275
+ returns (Timestamp expiredAt)
276
+ {
277
+ // checks
278
+ (
279
+ IInstance instance,,
280
+ IPolicy.PolicyInfo memory policyInfo
281
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
282
+
283
+ // more checks, effects + interactions
284
+ return _expire(
285
+ instance,
286
+ policyNftId,
287
+ policyInfo,
288
+ expireAt
289
+ );
290
+ }
291
+
292
+
293
+ /// @inheritdoc IPolicyService
294
+ function expirePolicy(
295
+ IInstance instance,
296
+ NftId policyNftId,
297
+ Timestamp expireAt
298
+ )
299
+ external
300
+ virtual
301
+ nonReentrant()
302
+ returns (Timestamp expiredAt)
303
+ {
304
+ // checks
305
+ _checkNftType(policyNftId, POLICY());
306
+ IPolicy.PolicyInfo memory policyInfo = instance.getInstanceReader().getPolicyInfo(
307
+ policyNftId);
308
+
309
+ // more checks, effects + interactions
310
+ return _expire(
311
+ instance,
312
+ policyNftId,
313
+ policyInfo,
314
+ expireAt
315
+ );
316
+ }
317
+
318
+
319
+ /// @inheritdoc IPolicyService
320
+ function close(
321
+ NftId policyNftId
322
+ )
323
+ external
324
+ virtual
325
+ nonReentrant()
326
+ {
327
+ // checks
328
+ (
329
+ IInstance instance,
330
+ NftId productNftId,
331
+ IPolicy.PolicyInfo memory policyInfo
332
+ ) = _getAndVerifyCallerForPolicy(policyNftId);
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+
335
+ // check policy is in a closeable state
336
+ if (!policyIsCloseable(instanceReader, policyNftId)) {
337
+ revert ErrorPolicyServicePolicyNotCloseable(policyNftId);
338
+ }
339
+
340
+ // check that policy has been activated
341
+ RiskId riskId = policyInfo.riskId;
342
+ NftId bundleNftId = policyInfo.bundleNftId;
343
+
344
+ if (instanceReader.getPremiumInfoState(policyNftId) != PAID()) {
345
+ revert ErrorPolicyServicePremiumNotPaid(policyNftId, policyInfo.premiumAmount);
346
+ }
347
+
348
+ // effects
349
+ // release (remaining) collateral that was blocked by policy
350
+ _poolService.releaseCollateral(
351
+ instance,
352
+ address(instanceReader.getComponentInfo(productNftId).token),
353
+ policyNftId,
354
+ policyInfo);
355
+
356
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
357
+
358
+ // update policy state to closed
359
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
360
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
361
+
362
+ // unlink policy from risk and bundle
363
+ NftId poolNftId = getRegistry().getObjectInfo(bundleNftId).parentNftId;
364
+ instance.getRiskSet().unlinkPolicy(productNftId, riskId, policyNftId);
365
+ instance.getBundleSet().unlinkPolicy(poolNftId, bundleNftId, policyNftId);
366
+
367
+ emit LogPolicyServicePolicyClosed(policyNftId);
368
+ }
369
+
370
+
371
+ function policyIsCloseable(InstanceReader instanceReader, NftId policyNftId)
372
+ public
373
+ view
374
+ returns (bool isCloseable)
375
+ {
376
+ // policy already closed
377
+ if (instanceReader.getPolicyState(policyNftId) == CLOSED()) {
378
+ return false;
379
+ }
380
+
381
+ IPolicy.PolicyInfo memory info = instanceReader.getPolicyInfo(policyNftId);
382
+
383
+ if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
384
+ if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
385
+ if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
386
+
387
+ // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
388
+ if (info.claimAmount == info.sumInsuredAmount) { return true; }
389
+
390
+ // not closeable: not yet expired
391
+ if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
392
+
393
+ // all conditions to close the policy are met
394
+ return true;
395
+ }
396
+
397
+ /// @dev shared functionality for expire() and policyExpire().
398
+ function _expire(
399
+ IInstance instance,
400
+ NftId policyNftId,
401
+ IPolicy.PolicyInfo memory policyInfo,
402
+ Timestamp expireAt
403
+ )
404
+ internal
405
+ returns (Timestamp expiredAt)
406
+ {
407
+ // checks
408
+ // check policy is active
409
+ StateId policyState = instance.getInstanceReader().getPolicyState(policyNftId);
410
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
411
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
412
+ }
413
+
414
+ // set return value to provided timestamp
415
+ expiredAt = expireAt;
416
+
417
+ // update expiredAt to current block timestamp if not set
418
+ if (expiredAt.eqz()) {
419
+ expiredAt = TimestampLib.blockTimestamp();
420
+ }
421
+
422
+ // check expiredAt represents a valid expiry time
423
+ if (expiredAt >= policyInfo.expiredAt) {
424
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
425
+ }
426
+
427
+ if (expiredAt < TimestampLib.blockTimestamp()) {
428
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
429
+ }
430
+
431
+ // effects
432
+ // update policyInfo with new expiredAt timestamp
433
+ Timestamp originalExpiredAt = policyInfo.expiredAt;
434
+ policyInfo.expiredAt = expiredAt;
435
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
436
+
437
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, originalExpiredAt, expiredAt);
438
+
439
+ // interactions
440
+ // callback to policy holder if applicable
441
+ _policyHolderPolicyExpired(policyNftId, expiredAt);
442
+ }
443
+
444
+ // TODO cleanup
445
+ // /// @dev Calculates the premium and updates all counters in the other services.
446
+ // /// Only book keeping, no token transfers.
447
+ // function _processPremium(
448
+ // IInstance instance,
449
+ // NftId applicationNftId,
450
+ // IPolicy.PolicyInfo memory applicationInfo,
451
+ // IPolicy.PremiumInfo memory premium
452
+ // )
453
+ // internal
454
+ // virtual
455
+ // {
456
+ // // update the counters
457
+ // _processSale(
458
+ // instanceReader,
459
+ // instance.getInstanceStore(),
460
+ // productNftId,
461
+ // applicationInfo.bundleNftId,
462
+ // applicationInfo.referralId,
463
+ // premium);
464
+ // }
465
+
466
+
467
+ function _activate(
468
+ NftId policyNftId,
469
+ IPolicy.PolicyInfo memory policyInfo,
470
+ Timestamp activateAt
471
+ )
472
+ internal
473
+ virtual
474
+ view
475
+ returns (IPolicy.PolicyInfo memory)
476
+ {
477
+ // fail if policy has already been activated and activateAt is different
478
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
479
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
480
+ }
481
+
482
+ // ignore if policy has already been activated and activateAt is the same
483
+ if (policyInfo.activatedAt == activateAt) {
484
+ return policyInfo;
485
+ }
486
+
487
+ policyInfo.activatedAt = activateAt;
488
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
489
+
490
+ return policyInfo;
491
+ }
492
+
493
+ /// @dev update counters by calling the involved services
494
+ function _processSale(
495
+ InstanceReader instanceReader,
496
+ InstanceStore instanceStore,
497
+ NftId productNftId,
498
+ NftId bundleNftId,
499
+ ReferralId referralId,
500
+ IPolicy.PremiumInfo memory premium
501
+ )
502
+ internal
503
+ virtual
504
+ {
505
+ (NftId distributionNftId,,,) = _getDistributionNftAndWallets(
506
+ instanceReader,
507
+ productNftId);
508
+
509
+ // update product fees, distribution and pool fees
510
+ _accountingService.increaseProductFees(
511
+ instanceStore,
512
+ productNftId,
513
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
514
+
515
+ // update distribution fees and distributor commission and pool fees
516
+ if (!distributionNftId.eqz()) { // only call distribution service if a distribution component is connected to the product
517
+ _distributionService.processSale(
518
+ distributionNftId,
519
+ referralId,
520
+ premium);
521
+ }
522
+
523
+ // update pool and bundle fees
524
+ _poolService.processSale(
525
+ bundleNftId,
526
+ premium);
527
+ }
528
+
529
+
530
+ /// @dev transfer the premium to the wallets the premium is distributed to
531
+ function _transferFunds(
532
+ InstanceReader instanceReader,
533
+ NftId policyNftId,
534
+ NftId productNftId,
535
+ IPolicy.PremiumInfo memory premium
536
+ )
537
+ internal
538
+ virtual
539
+ {
540
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
541
+ address policyHolder = getRegistry().ownerOf(policyNftId);
542
+
543
+ (
544
+ ,
545
+ address distributionWallet,
546
+ address poolWallet,
547
+ address productWallet
548
+ ) = _getDistributionNftAndWallets(
549
+ instanceReader,
550
+ productNftId);
551
+
552
+ tokenHandler.collectTokensToThreeRecipients(
553
+ policyHolder,
554
+ productWallet,
555
+ premium.productFeeAmount,
556
+ distributionWallet,
557
+ premium.distributionFeeAndCommissionAmount,
558
+ poolWallet,
559
+ premium.poolPremiumAndFeeAmount);
560
+ }
561
+
562
+
563
+ /// @dev checks that policy has been collateralized and has been activated.
564
+ /// does not check if policy has been expired or closed.
565
+ function _policyHasBeenActivated(
566
+ StateId policyState,
567
+ IPolicy.PolicyInfo memory policyInfo
568
+ )
569
+ internal
570
+ view
571
+ returns (bool)
572
+ {
573
+ if (policyState != COLLATERALIZED()) { return false; }
574
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
575
+ return true;
576
+ }
577
+
578
+
579
+ /// @dev checks the balance and allowance of the policy holder
580
+ function _checkPremiumBalanceAndAllowance(
581
+ IERC20Metadata token,
582
+ address tokenHandlerAddress,
583
+ address policyHolder,
584
+ Amount premiumAmount
585
+ )
586
+ internal
587
+ virtual
588
+ view
589
+ {
590
+ uint256 premium = premiumAmount.toInt();
591
+ uint256 balance = token.balanceOf(policyHolder);
592
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
593
+
594
+ if (balance < premium) {
595
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
596
+ }
597
+
598
+ if (allowance < premium) {
599
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
600
+ }
601
+ }
602
+
603
+
604
+ function _policyHolderPolicyActivated(
605
+ NftId policyNftId,
606
+ Timestamp activateAt
607
+ )
608
+ internal
609
+ virtual
610
+ {
611
+ // immediately return if policy is not activated
612
+ if (activateAt.eqz()) {
613
+ return;
614
+ }
615
+
616
+ // get policy holder address
617
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
618
+
619
+ // execute callback if policy holder implements IPolicyHolder
620
+ if (address(policyHolder) != address(0)) {
621
+ policyHolder.policyActivated(policyNftId, activateAt);
622
+ }
623
+ }
624
+
625
+
626
+ function _policyHolderPolicyExpired(
627
+ NftId policyNftId,
628
+ Timestamp expiredAt
629
+ )
630
+ internal
631
+ virtual
632
+ {
633
+ // immediately return if policy is not activated
634
+ if (expiredAt.eqz()) {
635
+ return;
636
+ }
637
+
638
+ // get policy holder address
639
+ IPolicyHolder policyHolder = _getPolicyHolder(policyNftId);
640
+
641
+ // execute callback if policy holder implements IPolicyHolder
642
+ if (address(policyHolder) != address(0)) {
643
+ policyHolder.policyExpired(policyNftId, expiredAt);
644
+ }
645
+ }
646
+
647
+
648
+ function _getPolicyHolder(NftId policyNftId)
649
+ internal
650
+ view
651
+ returns (IPolicyHolder policyHolder)
652
+ {
653
+ address policyHolderAddress = getRegistry().ownerOf(policyNftId);
654
+ policyHolder = IPolicyHolder(policyHolderAddress);
655
+
656
+ if (!ContractLib.isPolicyHolder(policyHolderAddress)) {
657
+ policyHolder = IPolicyHolder(address(0));
658
+ }
659
+ }
660
+
661
+
662
+ function _getTokenHandler(
663
+ InstanceReader instanceReader,
664
+ NftId productNftId
665
+ )
666
+ internal
667
+ virtual
668
+ view
669
+ returns (
670
+ TokenHandler tokenHandler
671
+ )
672
+ {
673
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
674
+ }
675
+
676
+
677
+ function _getDistributionNftAndWallets(
678
+ InstanceReader instanceReader,
679
+ NftId productNftId
680
+ )
681
+ internal
682
+ virtual
683
+ view returns (
684
+ NftId distributionNftId,
685
+ address distributionWallet,
686
+ address poolWallet,
687
+ address productWallet
688
+ )
689
+ {
690
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
691
+ productWallet = instanceReader.getComponentInfo(productNftId).tokenHandler.getWallet();
692
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).tokenHandler.getWallet();
693
+
694
+ if (productInfo.hasDistribution) {
695
+ distributionNftId = productInfo.distributionNftId;
696
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).tokenHandler.getWallet();
697
+ }
698
+ }
699
+
700
+
701
+ function _getAndVerifyCallerForPolicy(NftId policyNftId)
702
+ internal
703
+ virtual
704
+ view
705
+ returns (
706
+ IInstance instance,
707
+ NftId productNftId,
708
+ IPolicy.PolicyInfo memory policyInfo
709
+ )
710
+ {
711
+ (
712
+ IRegistry.ObjectInfo memory productInfo,
713
+ address instanceAddress
714
+ ) = ContractLib.getAndVerifyComponent(
715
+ getRegistry(),
716
+ msg.sender, // caller contract
717
+ PRODUCT(), // caller must be product
718
+ true); // only active caller
719
+
720
+ productNftId = productInfo.nftId;
721
+ instance = IInstance(instanceAddress);
722
+ policyInfo = instance.getInstanceReader().getPolicyInfo(policyNftId);
723
+
724
+ if (policyInfo.productNftId != productNftId) {
725
+ revert ErrorPolicyServicePolicyProductMismatch(
726
+ policyNftId,
727
+ productNftId,
728
+ policyInfo.productNftId);
729
+ }
730
+ }
731
+
732
+
733
+ function _getDomain() internal pure override returns(ObjectType) {
734
+ return POLICY();
735
+ }
736
+ }