@etherisc/gif-next 0.0.2-ef935e0-790 → 0.0.2-efc2128-633

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 (670) hide show
  1. package/README.md +121 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/IAccessManagerSimple.sol/IAccessManagerSimple.json → authorization/IAccessAdmin.sol/IAccessAdmin.json} +499 -549
  12. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +258 -0
  14. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +290 -0
  16. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  18. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +390 -0
  20. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  22. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  23. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1489 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1159 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1512 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +838 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +906 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +932 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -555
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +447 -170
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +403 -3038
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +855 -407
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +603 -334
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +352 -106
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3722 -0
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  59. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +38 -2
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  61. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  63. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  65. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +30 -112
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  70. package/artifacts/contracts/instance/module/{ITreasury.sol/ITreasury.json → IComponents.sol/IComponents.json} +2 -2
  71. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  74. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  75. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  76. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  77. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1126 -0
  78. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  79. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  80. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  81. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  82. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → oracle/IOracleComponent.sol/IOracleComponent.json} +384 -370
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1018 -0
  88. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  89. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  90. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  92. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  93. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1395 -0
  94. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  95. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  96. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  97. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1474 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +822 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +907 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +909 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1208 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1181 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1591 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +746 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +852 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1243 -0
  118. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  119. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  120. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  121. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1437 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +826 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +241 -190
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +886 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +795 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IPricingService.sol/IPricingService.json} +290 -187
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +948 -0
  134. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  135. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → product/IRiskService.sol/IRiskService.json} +124 -166
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1226 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +972 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +766 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1201 -0
  146. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  147. package/artifacts/contracts/product/RiskService.sol/RiskService.json +695 -0
  148. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +397 -113
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +764 -315
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -129
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +832 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1680 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +804 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +208 -209
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → shared/IComponent.sol/IComponent.json} +300 -256
  184. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  185. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1033 -0
  186. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +700 -0
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +940 -0
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +382 -9
  226. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  228. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1422 -0
  230. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  231. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  232. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +387 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1951 -0
  236. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  238. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  240. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  242. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  244. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  246. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  247. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  248. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  249. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +607 -0
  250. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  251. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  252. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  254. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  256. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  258. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  260. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  262. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  264. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  266. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  267. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  268. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  270. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  272. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  274. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  276. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  278. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  280. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +246 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  284. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  286. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  287. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  288. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  290. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  292. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  294. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  296. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  298. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  299. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  300. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  302. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  304. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  306. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  308. package/contracts/authorization/AccessAdmin.sol +591 -0
  309. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  310. package/contracts/authorization/Authorization.sol +217 -0
  311. package/contracts/authorization/IAccess.sol +48 -0
  312. package/contracts/authorization/IAccessAdmin.sol +136 -0
  313. package/contracts/authorization/IAuthorization.sol +54 -0
  314. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  315. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  316. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  317. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  318. package/contracts/distribution/BasicDistribution.sol +138 -0
  319. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  320. package/contracts/distribution/Distribution.sol +295 -0
  321. package/contracts/distribution/DistributionService.sol +336 -0
  322. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  323. package/contracts/distribution/IDistributionComponent.sol +52 -0
  324. package/contracts/distribution/IDistributionService.sol +101 -0
  325. package/contracts/instance/BundleSet.sol +126 -0
  326. package/contracts/instance/IInstance.sol +56 -32
  327. package/contracts/instance/IInstanceService.sol +78 -16
  328. package/contracts/instance/Instance.sol +159 -373
  329. package/contracts/instance/InstanceAdmin.sol +285 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
  331. package/contracts/instance/InstanceReader.sol +201 -85
  332. package/contracts/instance/InstanceService.sol +407 -123
  333. package/contracts/instance/InstanceServiceManager.sol +13 -30
  334. package/contracts/instance/InstanceStore.sol +291 -0
  335. package/contracts/instance/base/BalanceStore.sol +123 -0
  336. package/contracts/instance/base/Cloneable.sol +28 -0
  337. package/contracts/instance/base/ObjectCounter.sol +21 -0
  338. package/contracts/instance/base/ObjectLifecycle.sol +110 -0
  339. package/contracts/instance/base/ObjectSet.sol +79 -0
  340. package/contracts/instance/module/IAccess.sol +29 -21
  341. package/contracts/instance/module/IBundle.sol +8 -8
  342. package/contracts/instance/module/IComponents.sol +46 -0
  343. package/contracts/instance/module/IDistribution.sol +6 -4
  344. package/contracts/instance/module/IPolicy.sol +59 -19
  345. package/contracts/instance/module/IRisk.sol +1 -1
  346. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  347. package/contracts/oracle/BasicOracle.sol +48 -0
  348. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  349. package/contracts/oracle/IOracle.sol +36 -0
  350. package/contracts/oracle/IOracleComponent.sol +33 -0
  351. package/contracts/oracle/IOracleService.sol +65 -0
  352. package/contracts/oracle/Oracle.sol +167 -0
  353. package/contracts/oracle/OracleService.sol +279 -0
  354. package/contracts/oracle/OracleServiceManager.sol +39 -0
  355. package/contracts/pool/BasicPool.sol +166 -0
  356. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  357. package/contracts/pool/BundleService.sol +438 -0
  358. package/contracts/pool/BundleServiceManager.sol +39 -0
  359. package/contracts/pool/IBundleService.sol +134 -0
  360. package/contracts/pool/IPoolComponent.sol +58 -0
  361. package/contracts/pool/IPoolService.sol +160 -0
  362. package/contracts/pool/Pool.sol +326 -0
  363. package/contracts/pool/PoolService.sol +509 -0
  364. package/contracts/pool/PoolServiceManager.sol +39 -0
  365. package/contracts/product/ApplicationService.sol +249 -0
  366. package/contracts/product/ApplicationServiceManager.sol +38 -0
  367. package/contracts/product/BasicProduct.sol +53 -0
  368. package/contracts/product/BasicProductAuthorization.sol +43 -0
  369. package/contracts/product/ClaimService.sol +487 -0
  370. package/contracts/product/ClaimServiceManager.sol +38 -0
  371. package/contracts/product/IApplicationService.sol +63 -0
  372. package/contracts/product/IClaimService.sol +122 -0
  373. package/contracts/product/IPolicyService.sol +73 -0
  374. package/contracts/product/IPricingService.sol +39 -0
  375. package/contracts/product/IProductComponent.sol +39 -0
  376. package/contracts/product/IRiskService.sol +33 -0
  377. package/contracts/product/PolicyService.sol +574 -0
  378. package/contracts/product/PolicyServiceManager.sol +39 -0
  379. package/contracts/product/PricingService.sol +301 -0
  380. package/contracts/product/PricingServiceManager.sol +39 -0
  381. package/contracts/product/Product.sol +425 -0
  382. package/contracts/product/RiskService.sol +97 -0
  383. package/contracts/product/RiskServiceManager.sol +39 -0
  384. package/contracts/registry/ChainNft.sol +15 -0
  385. package/contracts/registry/IRegistry.sol +88 -33
  386. package/contracts/registry/IRegistryService.sol +47 -28
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +378 -246
  389. package/contracts/registry/RegistryAdmin.sol +374 -0
  390. package/contracts/registry/RegistryService.sol +111 -217
  391. package/contracts/registry/RegistryServiceManager.sol +26 -53
  392. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  393. package/contracts/registry/ReleaseRegistry.sol +485 -0
  394. package/contracts/registry/ServiceAuthorizationV3.sol +199 -0
  395. package/contracts/registry/TokenRegistry.sol +261 -57
  396. package/contracts/shared/Component.sol +268 -0
  397. package/contracts/shared/ComponentService.sol +641 -0
  398. package/contracts/shared/ComponentServiceManager.sol +35 -0
  399. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  400. package/contracts/shared/IComponent.sol +70 -0
  401. package/contracts/shared/IComponentService.sol +108 -0
  402. package/contracts/shared/IInstanceLinkedComponent.sol +49 -0
  403. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  404. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  405. package/contracts/shared/INftOwnable.sol +13 -12
  406. package/contracts/shared/IPolicyHolder.sol +45 -0
  407. package/contracts/shared/IRegisterable.sol +4 -6
  408. package/contracts/shared/IRegistryLinked.sol +11 -0
  409. package/contracts/shared/IService.sol +16 -6
  410. package/contracts/shared/InitializableCustom.sol +177 -0
  411. package/contracts/shared/InitializableERC165.sol +27 -0
  412. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  413. package/contracts/shared/KeyValueStore.sol +131 -0
  414. package/contracts/shared/Lifecycle.sol +77 -0
  415. package/contracts/shared/NftIdSet.sol +65 -0
  416. package/contracts/shared/NftOwnable.sol +59 -86
  417. package/contracts/shared/PolicyHolder.sol +99 -0
  418. package/contracts/shared/Registerable.sol +26 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +58 -31
  421. package/contracts/shared/TokenHandler.sol +122 -10
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +167 -0
  424. package/contracts/staking/IStakingService.sol +160 -0
  425. package/contracts/staking/StakeManagerLib.sol +206 -0
  426. package/contracts/staking/Staking.sol +497 -0
  427. package/contracts/staking/StakingLifecycle.sol +23 -0
  428. package/contracts/staking/StakingManager.sol +50 -0
  429. package/contracts/staking/StakingReader.sol +183 -0
  430. package/contracts/staking/StakingService.sol +407 -0
  431. package/contracts/staking/StakingServiceManager.sol +44 -0
  432. package/contracts/staking/StakingStore.sol +605 -0
  433. package/contracts/staking/TargetManagerLib.sol +211 -0
  434. package/contracts/{types → type}/AddressSet.sol +1 -1
  435. package/contracts/type/Amount.sol +135 -0
  436. package/contracts/{types → type}/Blocknumber.sol +27 -3
  437. package/contracts/type/ClaimId.sol +75 -0
  438. package/contracts/{types → type}/DistributorType.sol +2 -2
  439. package/contracts/{types → type}/Fee.sol +33 -23
  440. package/contracts/{types → type}/NftId.sol +21 -15
  441. package/contracts/type/NftIdSet.sol +62 -0
  442. package/contracts/type/ObjectType.sol +275 -0
  443. package/contracts/type/PayoutId.sol +82 -0
  444. package/contracts/{types → type}/Referral.sol +6 -1
  445. package/contracts/type/RequestId.sol +75 -0
  446. package/contracts/{types → type}/RiskId.sol +1 -1
  447. package/contracts/type/RoleId.sol +174 -0
  448. package/contracts/type/Seconds.sol +101 -0
  449. package/contracts/type/Selector.sol +102 -0
  450. package/contracts/{types → type}/StateId.sol +34 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +34 -15
  453. package/contracts/{types → type}/UFixed.sol +35 -9
  454. package/contracts/{types → type}/Version.sol +5 -2
  455. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  456. package/contracts/upgradeability/ProxyManager.sol +198 -0
  457. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  458. package/contracts/upgradeability/Versionable.sol +59 -0
  459. package/package.json +10 -7
  460. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
  462. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  463. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  464. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  465. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  466. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  467. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  468. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  470. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  471. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  472. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  473. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -782
  474. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  475. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  478. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  480. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  482. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  484. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  486. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  488. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  489. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  490. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  491. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  492. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  494. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  496. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  498. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  499. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  501. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  503. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  505. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  506. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  507. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  508. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  509. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  510. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  511. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  512. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  513. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  514. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  515. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  516. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  517. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  518. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  519. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  520. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  521. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  523. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  524. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  527. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  528. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  529. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  530. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  533. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  535. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  537. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -839
  543. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  545. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  546. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  547. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  548. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  549. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  550. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  551. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  553. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  554. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  555. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  556. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  557. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  558. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  559. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  560. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  561. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  562. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  563. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  564. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  566. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  568. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  570. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  572. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  573. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  574. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  575. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  576. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  577. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  578. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  579. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  580. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  581. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  582. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  583. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  584. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  585. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  586. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  587. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  588. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  589. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  590. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  591. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  592. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  594. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  596. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  598. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  600. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  603. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  605. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  606. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  607. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  608. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  609. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  610. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  611. package/contracts/components/BaseComponent.sol +0 -91
  612. package/contracts/components/Distribution.sol +0 -160
  613. package/contracts/components/IBaseComponent.sol +0 -25
  614. package/contracts/components/IDistributionComponent.sol +0 -44
  615. package/contracts/components/IPoolComponent.sol +0 -62
  616. package/contracts/components/IProductComponent.sol +0 -35
  617. package/contracts/components/Pool.sol +0 -243
  618. package/contracts/components/Product.sol +0 -297
  619. package/contracts/experiment/cloning/Cloner.sol +0 -47
  620. package/contracts/experiment/errors/Require.sol +0 -38
  621. package/contracts/experiment/errors/Revert.sol +0 -44
  622. package/contracts/experiment/inheritance/A.sol +0 -53
  623. package/contracts/experiment/inheritance/B.sol +0 -28
  624. package/contracts/experiment/inheritance/C.sol +0 -34
  625. package/contracts/experiment/inheritance/IA.sol +0 -13
  626. package/contracts/experiment/inheritance/IB.sol +0 -10
  627. package/contracts/experiment/inheritance/IC.sol +0 -12
  628. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  629. package/contracts/experiment/statemachine/ISM.sol +0 -25
  630. package/contracts/experiment/statemachine/SM.sol +0 -57
  631. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  632. package/contracts/experiment/types/TypeA.sol +0 -47
  633. package/contracts/experiment/types/TypeB.sol +0 -29
  634. package/contracts/instance/AccessManagedSimple.sol +0 -115
  635. package/contracts/instance/AccessManagerSimple.sol +0 -692
  636. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  637. package/contracts/instance/InstanceAccessManager.sol +0 -288
  638. package/contracts/instance/base/ComponentServiceBase.sol +0 -124
  639. package/contracts/instance/base/IInstanceBase.sol +0 -23
  640. package/contracts/instance/base/KeyValueStore.sol +0 -172
  641. package/contracts/instance/base/Lifecycle.sol +0 -100
  642. package/contracts/instance/module/ISetup.sol +0 -44
  643. package/contracts/instance/module/ITreasury.sol +0 -23
  644. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  645. package/contracts/instance/service/DistributionService.sol +0 -88
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  647. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  648. package/contracts/instance/service/IDistributionService.sol +0 -12
  649. package/contracts/instance/service/IPoolService.sol +0 -37
  650. package/contracts/instance/service/IProductService.sol +0 -107
  651. package/contracts/instance/service/PoolService.sol +0 -194
  652. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  653. package/contracts/shared/ContractDeployerLib.sol +0 -72
  654. package/contracts/shared/ERC165.sol +0 -25
  655. package/contracts/shared/ProxyManager.sol +0 -94
  656. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  657. package/contracts/shared/Versionable.sol +0 -147
  658. package/contracts/test/TestFee.sol +0 -25
  659. package/contracts/test/TestRegisterable.sol +0 -18
  660. package/contracts/test/TestRoleId.sol +0 -14
  661. package/contracts/test/TestService.sol +0 -24
  662. package/contracts/test/TestToken.sol +0 -26
  663. package/contracts/test/TestVersion.sol +0 -44
  664. package/contracts/test/TestVersionable.sol +0 -17
  665. package/contracts/types/ChainId.sol +0 -38
  666. package/contracts/types/NftIdSet.sol +0 -60
  667. package/contracts/types/NumberId.sol +0 -52
  668. package/contracts/types/ObjectType.sol +0 -152
  669. package/contracts/types/RoleId.sol +0 -89
  670. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,574 @@
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 {IRegistry} from "../registry/IRegistry.sol";
7
+ import {Product} from "./Product.sol";
8
+ import {IComponents} from "../instance/module/IComponents.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
10
+ import {IPolicy} from "../instance/module/IPolicy.sol";
11
+
12
+ import {TokenHandler} from "../shared/TokenHandler.sol";
13
+
14
+ import {Amount, AmountLib} from "../type/Amount.sol";
15
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
16
+ import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
17
+ import {APPLIED, COLLATERALIZED, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
18
+ import {NftId, NftIdLib} from "../type/NftId.sol";
19
+ import {ReferralId} from "../type/Referral.sol";
20
+ import {StateId} from "../type/StateId.sol";
21
+ import {VersionPart} from "../type/Version.sol";
22
+
23
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
24
+ import {IApplicationService} from "./IApplicationService.sol";
25
+ import {IBundleService} from "../pool/IBundleService.sol";
26
+ import {IClaimService} from "./IClaimService.sol";
27
+ import {IComponentService} from "../shared/IComponentService.sol";
28
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
29
+ import {InstanceReader} from "../instance/InstanceReader.sol";
30
+ import {InstanceStore} from "../instance/InstanceStore.sol";
31
+ import {IPolicyService} from "./IPolicyService.sol";
32
+ import {IPoolService} from "../pool/IPoolService.sol";
33
+ import {IPricingService} from "./IPricingService.sol";
34
+
35
+ contract PolicyService is
36
+ ComponentVerifyingService,
37
+ IPolicyService
38
+ {
39
+ using NftIdLib for NftId;
40
+ using TimestampLib for Timestamp;
41
+
42
+ IApplicationService internal _applicationService;
43
+ IComponentService internal _componentService;
44
+ IBundleService internal _bundleService;
45
+ IClaimService internal _claimService;
46
+ IDistributionService internal _distributionService;
47
+ IPoolService internal _poolService;
48
+ IPricingService internal _pricingService;
49
+
50
+ function _initialize(
51
+ address owner,
52
+ bytes memory data
53
+ )
54
+ internal
55
+ virtual override
56
+ initializer
57
+ {
58
+ (
59
+ address registryAddress,,
60
+ //address managerAddress
61
+ address authority
62
+ ) = abi.decode(data, (address, address, address));
63
+
64
+ initializeService(registryAddress, authority, owner);
65
+
66
+ VersionPart majorVersion = getVersion().toMajorPart();
67
+ _applicationService = IApplicationService(getRegistry().getServiceAddress(APPLICATION(), majorVersion));
68
+ _bundleService = IBundleService(getRegistry().getServiceAddress(BUNDLE(), majorVersion));
69
+ _componentService = IComponentService(getRegistry().getServiceAddress(COMPONENT(), majorVersion));
70
+ _claimService = IClaimService(getRegistry().getServiceAddress(CLAIM(), majorVersion));
71
+ _poolService = IPoolService(getRegistry().getServiceAddress(POOL(), majorVersion));
72
+ _distributionService = IDistributionService(getRegistry().getServiceAddress(DISTRIBUTION(), majorVersion));
73
+ _pricingService = IPricingService(getRegistry().getServiceAddress(PRICE(), majorVersion));
74
+
75
+ registerInterface(type(IPolicyService).interfaceId);
76
+ }
77
+
78
+
79
+ function decline(
80
+ NftId applicationNftId // = policyNftId
81
+ )
82
+ external
83
+ virtual override
84
+ {
85
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
86
+ InstanceReader instanceReader = instance.getInstanceReader();
87
+
88
+ // check policy is in state applied
89
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
90
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
91
+ }
92
+
93
+ // check policy matches with calling product
94
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
95
+ if(applicationInfo.productNftId != productNftId) {
96
+ revert ErrorPolicyServicePolicyProductMismatch(
97
+ applicationNftId,
98
+ applicationInfo.productNftId,
99
+ productNftId);
100
+ }
101
+
102
+
103
+ // store updated policy info
104
+ instance.getInstanceStore().updatePolicyState(
105
+ applicationNftId,
106
+ DECLINED());
107
+
108
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
109
+ }
110
+
111
+
112
+ /// @inheritdoc IPolicyService
113
+ function createPolicy(
114
+ NftId applicationNftId, // = policyNftId
115
+ Timestamp activateAt
116
+ )
117
+ external
118
+ virtual override
119
+ {
120
+ // check caller is registered product
121
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
122
+ InstanceReader instanceReader = instance.getInstanceReader();
123
+
124
+ // check policy is in state applied
125
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
126
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
127
+ }
128
+
129
+ // check policy matches with calling product
130
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
131
+ if(applicationInfo.productNftId != productNftId) {
132
+ revert ErrorPolicyServicePolicyProductMismatch(
133
+ applicationNftId,
134
+ applicationInfo.productNftId,
135
+ productNftId);
136
+ }
137
+
138
+ // actual collateralizaion
139
+ _poolService.lockCollateral(
140
+ instance,
141
+ address(instanceReader.getComponentInfo(productNftId).token),
142
+ productNftId,
143
+ applicationNftId,
144
+ applicationInfo.bundleNftId,
145
+ applicationInfo.sumInsuredAmount);
146
+
147
+ // optional activation of policy
148
+ if(activateAt > zeroTimestamp()) {
149
+ applicationInfo = _activate(
150
+ applicationNftId,
151
+ applicationInfo,
152
+ activateAt);
153
+ }
154
+
155
+ // update policy and set state to collateralized
156
+ instance.getInstanceStore().updatePolicy(
157
+ applicationNftId,
158
+ applicationInfo,
159
+ COLLATERALIZED());
160
+
161
+ // calculate and store premium
162
+ IPolicy.PremiumInfo memory premium = _pricingService.calculatePremium(
163
+ productNftId,
164
+ applicationInfo.riskId,
165
+ applicationInfo.sumInsuredAmount,
166
+ applicationInfo.lifetime,
167
+ applicationInfo.applicationData,
168
+ applicationInfo.bundleNftId,
169
+ applicationInfo.referralId);
170
+
171
+ instance.getInstanceStore().createPremium(
172
+ applicationNftId,
173
+ premium);
174
+
175
+ // update referral counter
176
+ {
177
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
178
+ _distributionService.processReferral(
179
+ productInfo.distributionNftId,
180
+ applicationInfo.referralId);
181
+ }
182
+
183
+ // TODO add calling pool contract if it needs to validate application
184
+
185
+ // TODO: add logging
186
+
187
+ // TODO: add callback IPolicyHolder.policyActivated() if applicable
188
+ }
189
+
190
+
191
+ /// @inheritdoc IPolicyService
192
+ function collectPremium(
193
+ NftId policyNftId,
194
+ Timestamp activateAt
195
+ )
196
+ external
197
+ virtual
198
+ {
199
+ // check caller is registered product
200
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
201
+ InstanceReader instanceReader = instance.getInstanceReader();
202
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
203
+
204
+ // check policy is in state collateralized or active
205
+ if (!(stateId == COLLATERALIZED())) {
206
+ revert ErrorPolicyServicePolicyStateNotCollateralized(policyNftId);
207
+ }
208
+
209
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
210
+
211
+ // check if premium is already collected
212
+ if (policyInfo.premiumPaidAmount.gtz()) {
213
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
214
+ }
215
+
216
+ IPolicy.PremiumInfo memory premium = instanceReader.getPremiumInfo(policyNftId);
217
+ policyInfo.premiumPaidAmount = premium.premiumAmount;
218
+
219
+ _processPremium(
220
+ instance,
221
+ policyNftId,
222
+ policyInfo,
223
+ premium);
224
+
225
+ // optionally activate policy
226
+ if(activateAt.gtz()) {
227
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
228
+ }
229
+
230
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
231
+
232
+ // TODO: add logging
233
+
234
+ _transferFunds(instanceReader, policyNftId, policyInfo.productNftId, premium);
235
+
236
+ // TODO: add callback IPolicyHolder.policyActivated() if applicable
237
+ }
238
+
239
+ /// @inheritdoc IPolicyService
240
+ function activate(NftId policyNftId, Timestamp activateAt) public override {
241
+ // check caller is registered product
242
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
243
+ InstanceReader instanceReader = instance.getInstanceReader();
244
+
245
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
246
+ policyInfo = _activate(policyNftId, policyInfo, activateAt);
247
+
248
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
249
+
250
+ // TODO: add logging
251
+
252
+ // TODO: add callback IPolicyHolder.policyActivated() if applicable
253
+ }
254
+
255
+
256
+ /// @inheritdoc IPolicyService
257
+ function expire(
258
+ NftId policyNftId,
259
+ Timestamp expireAt
260
+ )
261
+ external
262
+ override
263
+ virtual
264
+ returns (Timestamp expiredAt)
265
+ {
266
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
267
+ InstanceReader instanceReader = instance.getInstanceReader();
268
+
269
+ // check policy matches with calling product
270
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
271
+ if(policyInfo.productNftId != productNftId) {
272
+ revert ErrorPolicyServicePolicyProductMismatch(
273
+ policyNftId,
274
+ policyInfo.productNftId,
275
+ productNftId);
276
+ }
277
+
278
+ // check policy is active
279
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
280
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
281
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
282
+ }
283
+
284
+ // set return value to provided timestamp
285
+ expiredAt = expireAt;
286
+
287
+ // update expiredAt to current block timestamp if not set
288
+ if (expiredAt.eqz()) {
289
+ expiredAt = TimestampLib.blockTimestamp();
290
+ }
291
+
292
+ // check expiredAt represents a valid expiry time
293
+ if (expiredAt >= policyInfo.expiredAt) {
294
+ revert ErrorPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
295
+ }
296
+ if (expiredAt < TimestampLib.blockTimestamp()) {
297
+ revert ErrorPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
298
+ }
299
+
300
+ // update policyInfo with new expiredAt timestamp
301
+ policyInfo.expiredAt = expiredAt;
302
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
303
+
304
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expiredAt);
305
+
306
+ // TODO: add callback IPolicyHolder.policyExpired() if applicable
307
+ }
308
+
309
+
310
+ function close(
311
+ NftId policyNftId
312
+ )
313
+ external
314
+ override
315
+ {
316
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
317
+ InstanceReader instanceReader = instance.getInstanceReader();
318
+
319
+ // check that policy has been activated
320
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
321
+ StateId policyState = instanceReader.getPolicyState(policyNftId);
322
+ if (!_policyHasBeenActivated(policyState, policyInfo)) {
323
+ revert ErrorPolicyServicePolicyNotActive(policyNftId, policyState);
324
+ }
325
+
326
+ // check that policy has not already been closed
327
+ if (policyInfo.closedAt.gtz()) {
328
+ revert ErrorPolicyServicePolicyAlreadyClosed(policyNftId);
329
+ }
330
+
331
+ // check that policy does not have any open claims
332
+ if (policyInfo.openClaimsCount > 0) {
333
+ revert ErrorPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
334
+ }
335
+
336
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
337
+ // TODO consider to remove requirement for fully paid premiums altogether
338
+ if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
339
+ revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
340
+ }
341
+
342
+ // release (remaining) collateral that was blocked by policy
343
+ _poolService.releaseCollateral(
344
+ instance,
345
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
346
+ policyNftId,
347
+ policyInfo);
348
+
349
+ // TODO consider to also set expiredAt to current block timestamp if that timestamp is still in the futue
350
+
351
+ // update policy state to closed
352
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
353
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
354
+
355
+ // TODO add logging
356
+ }
357
+
358
+
359
+ /// @dev calculates the premium and updates all counters in the other services
360
+ function _processPremium(
361
+ IInstance instance,
362
+ NftId applicationNftId,
363
+ IPolicy.PolicyInfo memory applicationInfo,
364
+ IPolicy.PremiumInfo memory premium
365
+ )
366
+ internal
367
+ virtual
368
+ {
369
+ NftId productNftId = applicationInfo.productNftId;
370
+ InstanceReader instanceReader = instance.getInstanceReader();
371
+
372
+ // check if premium balance and allowance of policy holder is sufficient
373
+ {
374
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
375
+ address policyHolder = getRegistry().ownerOf(applicationNftId);
376
+
377
+ _checkPremiumBalanceAndAllowance(
378
+ tokenHandler.getToken(),
379
+ address(tokenHandler),
380
+ policyHolder,
381
+ premium.premiumAmount);
382
+ }
383
+
384
+ // update the counters
385
+ _processSale(
386
+ instanceReader,
387
+ instance.getInstanceStore(),
388
+ productNftId,
389
+ applicationInfo.bundleNftId,
390
+ applicationInfo.referralId,
391
+ premium);
392
+ }
393
+
394
+ function _activate(
395
+ NftId policyNftId,
396
+ IPolicy.PolicyInfo memory policyInfo,
397
+ Timestamp activateAt
398
+ )
399
+ internal
400
+ virtual
401
+ view
402
+ returns (IPolicy.PolicyInfo memory)
403
+ {
404
+ // fail if policy has already been activated and activateAt is different
405
+ if(! policyInfo.activatedAt.eqz() && activateAt != policyInfo.activatedAt) {
406
+ revert ErrorPolicyServicePolicyAlreadyActivated(policyNftId);
407
+ }
408
+
409
+ // ignore if policy has already been activated and activateAt is the same
410
+ if (policyInfo.activatedAt == activateAt) {
411
+ return policyInfo;
412
+ }
413
+
414
+ policyInfo.activatedAt = activateAt;
415
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
416
+
417
+ return policyInfo;
418
+ }
419
+
420
+ /// @dev update counters by calling the involved services
421
+ function _processSale(
422
+ InstanceReader instanceReader,
423
+ InstanceStore instanceStore,
424
+ NftId productNftId,
425
+ NftId bundleNftId,
426
+ ReferralId referralId,
427
+ IPolicy.PremiumInfo memory premium
428
+ )
429
+ internal
430
+ virtual
431
+ {
432
+ (NftId distributionNftId, , , ) = _getDistributionNftAndWallets(
433
+ instanceReader,
434
+ productNftId);
435
+
436
+ // update product fees, distribution and pool fees
437
+ _componentService.increaseProductFees(
438
+ instanceStore,
439
+ productNftId,
440
+ premium.productFeeVarAmount + premium.productFeeFixAmount);
441
+
442
+ // update distribution fees and distributor commission and pool fees
443
+ _distributionService.processSale(
444
+ distributionNftId,
445
+ referralId,
446
+ premium);
447
+
448
+ // update pool and bundle fees
449
+ _poolService.processSale(
450
+ bundleNftId,
451
+ premium);
452
+ }
453
+
454
+
455
+ /// @dev transfer the premium to the wallets the premium is distributed to
456
+ function _transferFunds(
457
+ InstanceReader instanceReader,
458
+ NftId policyNftId,
459
+ NftId productNftId,
460
+ IPolicy.PremiumInfo memory premium
461
+ )
462
+ internal
463
+ virtual
464
+ {
465
+ TokenHandler tokenHandler = _getTokenHandler(instanceReader, productNftId);
466
+ address policyHolder = getRegistry().ownerOf(policyNftId);
467
+
468
+ (
469
+ ,
470
+ address distributionWallet,
471
+ address poolWallet,
472
+ address productWallet
473
+ ) = _getDistributionNftAndWallets(
474
+ instanceReader,
475
+ productNftId);
476
+
477
+ tokenHandler.collectTokensToThreeRecipients(
478
+ policyHolder,
479
+ productWallet,
480
+ premium.productFeeAmount,
481
+ distributionWallet,
482
+ premium.distributionFeeAndCommissionAmount,
483
+ poolWallet,
484
+ premium.poolPremiumAndFeeAmount);
485
+ }
486
+
487
+
488
+ /// @dev checks that policy has been collateralized and has been activated.
489
+ /// does not check if policy has been expired or closed.
490
+ function _policyHasBeenActivated(
491
+ StateId policyState,
492
+ IPolicy.PolicyInfo memory policyInfo
493
+ )
494
+ internal
495
+ view
496
+ returns (bool)
497
+ {
498
+ if (policyState != COLLATERALIZED()) { return false; }
499
+ if (TimestampLib.blockTimestamp() < policyInfo.activatedAt) { return false; }
500
+ return true;
501
+ }
502
+
503
+
504
+ /// @dev checks the balance and allowance of the policy holder
505
+ function _checkPremiumBalanceAndAllowance(
506
+ IERC20Metadata token,
507
+ address tokenHandlerAddress,
508
+ address policyHolder,
509
+ Amount premiumAmount
510
+ )
511
+ internal
512
+ virtual
513
+ view
514
+ {
515
+ uint256 premium = premiumAmount.toInt();
516
+ uint256 balance = token.balanceOf(policyHolder);
517
+ uint256 allowance = token.allowance(policyHolder, tokenHandlerAddress);
518
+
519
+ if (balance < premium) {
520
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premium, balance);
521
+ }
522
+
523
+ if (allowance < premium) {
524
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, tokenHandlerAddress, premium, allowance);
525
+ }
526
+ }
527
+
528
+
529
+ function _getTokenHandler(
530
+ InstanceReader instanceReader,
531
+ NftId productNftId
532
+ )
533
+ internal
534
+ virtual
535
+ view
536
+ returns (
537
+ TokenHandler tokenHandler
538
+ )
539
+ {
540
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
541
+ }
542
+
543
+ function _getDistributionNftAndWallets(
544
+ InstanceReader instanceReader,
545
+ NftId productNftId
546
+ )
547
+ internal
548
+ virtual
549
+ view returns (
550
+ NftId distributionNftId,
551
+ address distributionWallet,
552
+ address poolWallet,
553
+ address productWallet
554
+ )
555
+ {
556
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
557
+ distributionNftId = productInfo.distributionNftId;
558
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
559
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
560
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
561
+ }
562
+
563
+
564
+ function _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
565
+ IRegistry.ObjectInfo memory productInfo;
566
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
567
+ product = Product(productInfo.objectAddress);
568
+ }
569
+
570
+
571
+ function _getDomain() internal pure override returns(ObjectType) {
572
+ return POLICY();
573
+ }
574
+ }
@@ -0,0 +1,39 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
+ import {PolicyService} from "./PolicyService.sol";
7
+
8
+ contract PolicyServiceManager is ProxyManager {
9
+
10
+ PolicyService private _policyService;
11
+
12
+ /// @dev initializes proxy manager with product service implementation
13
+ constructor(
14
+ address authority,
15
+ address registryAddress,
16
+ bytes32 salt
17
+ )
18
+ ProxyManager(registryAddress)
19
+ {
20
+ PolicyService svc = new PolicyService{salt: salt}();
21
+ bytes memory data = abi.encode(registryAddress, address(this), authority);
22
+ IVersionable versionable = deployDetermenistic(
23
+ address(svc),
24
+ data,
25
+ salt);
26
+
27
+ _policyService = PolicyService(address(versionable));
28
+ }
29
+
30
+ //--- view functions ----------------------------------------------------//
31
+ function getPolicyService()
32
+ external
33
+ view
34
+ returns (PolicyService policyService)
35
+ {
36
+ return _policyService;
37
+ }
38
+
39
+ }