@etherisc/gif-next 0.0.2-9b434da-265 → 0.0.2-9b4e378-274

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 (618) hide show
  1. package/README.md +227 -17
  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 +4 -0
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +652 -0
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +757 -0
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +416 -3032
  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 +4 -0
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1836 -0
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1073 -30
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  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/oracle/IOracleComponent.sol/IOracleComponent.json +765 -0
  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/product/IApplicationService.sol/IApplicationService.json +517 -0
  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/product/IPricingService.sol/IPricingService.json +549 -0
  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/{instance/base/IService.sol/IService.json → product/IRiskService.sol/IRiskService.json} +145 -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 +60 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +405 -59
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +389 -194
  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 +567 -150
  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 +698 -259
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +368 -123
  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 +4 -0
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  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/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +605 -0
  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/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  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 +4 -0
  201. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/IService.sol/IService.json} +134 -29
  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/{instance/base/IKeyValueStore.sol/IKeyValueStore.json → shared/KeyValueStore.sol/KeyValueStore.json} +78 -87
  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 +4 -0
  223. package/artifacts/contracts/{instance/base/ServiceBase.sol/ServiceBase.json → shared/Service.sol/Service.json} +203 -164
  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 +1438 -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 +440 -0
  234. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  235. package/artifacts/contracts/staking/Staking.sol/Staking.json +1975 -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 +765 -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 +63 -0
  327. package/contracts/instance/IInstanceService.sol +92 -0
  328. package/contracts/instance/Instance.sol +164 -325
  329. package/contracts/instance/InstanceAdmin.sol +285 -0
  330. package/contracts/instance/InstanceAuthorizationV3.sol +203 -0
  331. package/contracts/instance/InstanceReader.sol +422 -0
  332. package/contracts/instance/InstanceService.sol +446 -24
  333. package/contracts/instance/InstanceServiceManager.sol +40 -0
  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 +30 -22
  341. package/contracts/instance/module/IBundle.sol +8 -7
  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/TestToken.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 +55 -25
  385. package/contracts/registry/IRegistry.sol +92 -31
  386. package/contracts/registry/IRegistryService.sol +56 -16
  387. package/contracts/registry/ITransferInterceptor.sol +1 -0
  388. package/contracts/registry/Registry.sol +411 -326
  389. package/contracts/registry/RegistryAdmin.sol +374 -0
  390. package/contracts/registry/RegistryService.sol +155 -272
  391. package/contracts/registry/RegistryServiceManager.sol +29 -19
  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 +315 -0
  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 +20 -14
  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 +25 -0
  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 +60 -89
  417. package/contracts/shared/PolicyHolder.sol +99 -0
  418. package/contracts/shared/Registerable.sol +27 -41
  419. package/contracts/shared/RegistryLinked.sol +43 -0
  420. package/contracts/shared/Service.sol +82 -0
  421. package/contracts/shared/TokenHandler.sol +124 -12
  422. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  423. package/contracts/staking/IStaking.sol +168 -0
  424. package/contracts/staking/IStakingService.sol +160 -0
  425. package/contracts/staking/StakeManagerLib.sol +224 -0
  426. package/contracts/staking/Staking.sol +498 -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/type/Fee.sol +66 -0
  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 +38 -4
  451. package/contracts/type/String.sol +53 -0
  452. package/contracts/{types → type}/Timestamp.sol +34 -15
  453. package/contracts/type/UFixed.sol +351 -0
  454. package/contracts/{types → type}/Version.sol +8 -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 +2 -4
  458. package/contracts/upgradeability/Versionable.sol +59 -0
  459. package/package.json +11 -7
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  462. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  463. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  464. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  465. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  467. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  468. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  469. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  470. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  471. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  473. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  475. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  478. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  480. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  482. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  485. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  487. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  489. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  491. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  493. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  494. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  495. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1119
  496. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  497. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  498. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -917
  499. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  500. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  502. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  503. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -736
  504. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  505. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  506. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  507. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  508. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  509. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  510. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -457
  511. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  512. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  513. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  514. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  515. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  516. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  517. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  518. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  519. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  520. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  521. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  522. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  523. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  524. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  525. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  526. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  527. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  528. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -10
  529. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  530. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  531. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  532. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  533. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  534. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  535. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  537. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  538. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  539. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  540. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  541. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  542. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  543. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  544. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  545. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  546. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  547. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  549. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  550. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  553. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  554. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  555. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  557. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  558. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  559. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  561. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  562. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  563. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  565. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  566. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  567. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  568. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  569. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -479
  570. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  571. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  572. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  574. package/contracts/components/IBaseComponent.sol +0 -19
  575. package/contracts/experiment/errors/Require.sol +0 -38
  576. package/contracts/experiment/errors/Revert.sol +0 -44
  577. package/contracts/experiment/inheritance/A.sol +0 -53
  578. package/contracts/experiment/inheritance/B.sol +0 -28
  579. package/contracts/experiment/inheritance/C.sol +0 -34
  580. package/contracts/experiment/inheritance/IA.sol +0 -13
  581. package/contracts/experiment/inheritance/IB.sol +0 -10
  582. package/contracts/experiment/inheritance/IC.sol +0 -12
  583. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  584. package/contracts/experiment/statemachine/ISM.sol +0 -25
  585. package/contracts/experiment/statemachine/SM.sol +0 -57
  586. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  587. package/contracts/experiment/types/TypeA.sol +0 -47
  588. package/contracts/experiment/types/TypeB.sol +0 -29
  589. package/contracts/instance/AccessManagedSimple.sol +0 -114
  590. package/contracts/instance/AccessManagerSimple.sol +0 -682
  591. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  592. package/contracts/instance/InstanceAccessManager.sol +0 -288
  593. package/contracts/instance/base/IService.sol +0 -15
  594. package/contracts/instance/base/KeyValueStore.sol +0 -188
  595. package/contracts/instance/base/Lifecycle.sol +0 -100
  596. package/contracts/instance/base/ServiceBase.sol +0 -44
  597. package/contracts/instance/module/ISetup.sol +0 -41
  598. package/contracts/instance/module/ITreasury.sol +0 -23
  599. package/contracts/registry/IChainNft.sol +0 -22
  600. package/contracts/shared/ContractDeployerLib.sol +0 -72
  601. package/contracts/shared/ERC165.sol +0 -21
  602. package/contracts/shared/ProxyManager.sol +0 -94
  603. package/contracts/shared/Versionable.sol +0 -147
  604. package/contracts/test/TestFee.sol +0 -25
  605. package/contracts/test/TestRegisterable.sol +0 -18
  606. package/contracts/test/TestRoleId.sol +0 -14
  607. package/contracts/test/TestService.sol +0 -26
  608. package/contracts/test/TestVersion.sol +0 -44
  609. package/contracts/test/TestVersionable.sol +0 -17
  610. package/contracts/test/Usdc.sol +0 -26
  611. package/contracts/types/ChainId.sol +0 -38
  612. package/contracts/types/Fee.sol +0 -56
  613. package/contracts/types/NftIdSet.sol +0 -60
  614. package/contracts/types/NumberId.sol +0 -52
  615. package/contracts/types/ObjectType.sol +0 -152
  616. package/contracts/types/RoleId.sol +0 -75
  617. package/contracts/types/UFixed.sol +0 -209
  618. /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
+ }