@etherisc/gif-next 0.0.2-de220d6-949 → 0.0.2-de7c770-422

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