@etherisc/gif-next 0.0.2-84e1050-545 → 0.0.2-858f0b8-208

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 (695) hide show
  1. package/README.md +56 -18
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1253 -0
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1206 -0
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +358 -0
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  9. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/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 +1518 -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 +1196 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1557 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +854 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +943 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +945 -0
  36. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  37. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  38. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  39. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +265 -1337
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -228
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +417 -2548
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1626 -0
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +649 -397
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +557 -490
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +345 -147
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3469 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -49
  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 -144
  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 +1155 -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 +802 -0
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/{instance/service/IPolicyService.sol/IPolicyService.json → oracle/IOracleService.sol/IOracleService.json} +316 -305
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1055 -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 +1432 -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 +1534 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +842 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +927 -0
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +946 -0
  104. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1213 -0
  106. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  107. package/artifacts/contracts/pool/Pool.sol/Pool.json +1218 -0
  108. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1652 -0
  110. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +774 -0
  112. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  114. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  116. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  117. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1280 -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 +1315 -0
  122. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  123. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  124. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  125. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +224 -248
  126. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  127. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  128. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  129. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +805 -0
  130. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  131. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +283 -233
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +985 -0
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → product/IProductService.sol/IProductService.json} +135 -119
  136. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  137. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  138. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  139. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +782 -0
  140. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  141. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1017 -0
  142. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  143. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  144. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  145. package/artifacts/contracts/product/Product.sol/Product.json +1238 -0
  146. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  147. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  148. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  149. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  150. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  151. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  152. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  153. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +377 -112
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +290 -297
  156. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  157. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  158. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  159. package/artifacts/contracts/registry/Registry.sol/Registry.json +611 -189
  160. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  161. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1746 -0
  162. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  163. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +477 -318
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +337 -133
  166. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  167. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  168. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  169. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  170. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  171. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +214 -0
  172. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  173. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +351 -100
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +858 -0
  176. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1696 -0
  178. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  179. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +812 -0
  180. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +216 -198
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/IComponent.sol/IComponent.json} +277 -115
  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/{instance/service/IBundleService.sol/IBundleService.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +385 -317
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/IInstanceBase.sol/IInstanceBase.json → shared/IKeyValueStore.sol/IKeyValueStore.json} +60 -34
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -35
  198. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  199. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  200. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  201. package/artifacts/contracts/shared/IService.sol/IService.json +97 -172
  202. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  203. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  204. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  205. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  206. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  207. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +977 -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} +88 -20
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +115 -29
  216. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  217. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  218. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  219. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +132 -53
  220. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  221. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  222. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Service.sol/Service.json +201 -162
  224. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  225. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  226. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  228. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  229. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  230. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +470 -0
  232. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  233. package/artifacts/contracts/staking/Staking.sol/Staking.json +1975 -0
  234. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  236. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +765 -0
  238. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  240. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  242. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  244. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  245. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2242 -0
  246. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  247. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +576 -0
  248. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +10 -0
  250. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Amount.sol/AmountLib.json +374 -0
  252. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  254. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  256. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  258. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Fee.sol/FeeLib.json +317 -0
  260. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  261. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  262. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  264. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  265. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  266. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +239 -0
  268. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  270. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  272. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  274. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  276. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +369 -0
  278. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +222 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  282. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  283. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  284. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  285. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  286. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  288. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  289. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +312 -0
  290. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  291. package/artifacts/contracts/type/UFixed.sol/MathLib.json +16 -0
  292. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +535 -0
  294. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  296. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +68 -0
  298. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  299. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +55 -0
  300. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  301. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  302. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  303. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  304. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  305. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +78 -0
  306. package/contracts/authorization/AccessAdmin.sol +591 -0
  307. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  308. package/contracts/authorization/Authorization.sol +218 -0
  309. package/contracts/authorization/IAccess.sol +48 -0
  310. package/contracts/authorization/IAccessAdmin.sol +136 -0
  311. package/contracts/authorization/IAuthorization.sol +54 -0
  312. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  313. package/contracts/authorization/IServiceAuthorization.sol +38 -0
  314. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +90 -0
  316. package/contracts/distribution/BasicDistribution.sol +138 -0
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  318. package/contracts/distribution/Distribution.sol +295 -0
  319. package/contracts/distribution/DistributionService.sol +336 -0
  320. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  321. package/contracts/distribution/IDistributionComponent.sol +52 -0
  322. package/contracts/distribution/IDistributionService.sol +97 -0
  323. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +40 -43
  324. package/contracts/instance/IInstance.sol +77 -51
  325. package/contracts/instance/IInstanceService.sol +73 -23
  326. package/contracts/instance/Instance.sol +187 -209
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +173 -83
  330. package/contracts/instance/InstanceService.sol +352 -220
  331. package/contracts/instance/InstanceServiceManager.sol +13 -30
  332. package/contracts/instance/InstanceStore.sol +277 -0
  333. package/contracts/instance/base/BalanceStore.sol +123 -0
  334. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +4 -22
  335. package/contracts/instance/base/ObjectCounter.sol +21 -0
  336. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  337. package/contracts/instance/{ObjectManager.sol → base/ObjectSet.sol} +20 -42
  338. package/contracts/instance/module/IAccess.sol +20 -22
  339. package/contracts/instance/module/IBundle.sol +8 -8
  340. package/contracts/instance/module/IComponents.sol +47 -0
  341. package/contracts/instance/module/IDistribution.sol +6 -4
  342. package/contracts/instance/module/IPolicy.sol +56 -17
  343. package/contracts/instance/module/IRisk.sol +1 -1
  344. package/contracts/{test/Usdc.sol → mock/Dip.sol} +6 -6
  345. package/contracts/oracle/BasicOracle.sol +48 -0
  346. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  347. package/contracts/oracle/IOracle.sol +36 -0
  348. package/contracts/oracle/IOracleComponent.sol +33 -0
  349. package/contracts/oracle/IOracleService.sol +65 -0
  350. package/contracts/oracle/Oracle.sol +166 -0
  351. package/contracts/oracle/OracleService.sol +278 -0
  352. package/contracts/oracle/OracleServiceManager.sol +39 -0
  353. package/contracts/pool/BasicPool.sol +166 -0
  354. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  355. package/contracts/pool/BundleService.sol +437 -0
  356. package/contracts/pool/BundleServiceManager.sol +39 -0
  357. package/contracts/pool/IBundleService.sol +133 -0
  358. package/contracts/pool/IPoolComponent.sol +58 -0
  359. package/contracts/pool/IPoolService.sol +149 -0
  360. package/contracts/pool/Pool.sol +328 -0
  361. package/contracts/pool/PoolService.sol +525 -0
  362. package/contracts/pool/PoolServiceManager.sol +39 -0
  363. package/contracts/product/ApplicationService.sol +230 -0
  364. package/contracts/product/ApplicationServiceManager.sol +38 -0
  365. package/contracts/product/BasicProduct.sol +52 -0
  366. package/contracts/product/BasicProductAuthorization.sol +43 -0
  367. package/contracts/product/ClaimService.sol +417 -0
  368. package/contracts/product/ClaimServiceManager.sol +38 -0
  369. package/contracts/product/IApplicationService.sol +62 -0
  370. package/contracts/product/IClaimService.sol +99 -0
  371. package/contracts/product/IPolicyService.sol +84 -0
  372. package/contracts/product/IPricingService.sol +39 -0
  373. package/contracts/product/IProductComponent.sol +40 -0
  374. package/contracts/product/IProductService.sol +33 -0
  375. package/contracts/product/PolicyService.sol +529 -0
  376. package/contracts/product/PolicyServiceManager.sol +39 -0
  377. package/contracts/product/PricingService.sol +300 -0
  378. package/contracts/product/PricingServiceManager.sol +39 -0
  379. package/contracts/product/Product.sol +411 -0
  380. package/contracts/product/ProductService.sol +99 -0
  381. package/contracts/product/ProductServiceManager.sol +39 -0
  382. package/contracts/registry/ChainNft.sol +15 -0
  383. package/contracts/registry/IRegistry.sol +85 -32
  384. package/contracts/registry/IRegistryService.sol +47 -28
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +376 -248
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +111 -217
  389. package/contracts/registry/RegistryServiceManager.sol +26 -53
  390. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  391. package/contracts/registry/ReleaseRegistry.sol +485 -0
  392. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  393. package/contracts/registry/TokenRegistry.sol +261 -57
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +650 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +71 -0
  399. package/contracts/shared/IComponentService.sol +108 -0
  400. package/contracts/shared/IInstanceLinkedComponent.sol +56 -0
  401. package/contracts/{instance/base → shared}/IKeyValueStore.sol +16 -11
  402. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -4
  403. package/contracts/shared/INftOwnable.sol +13 -12
  404. package/contracts/shared/IPolicyHolder.sol +45 -0
  405. package/contracts/shared/IRegisterable.sol +4 -6
  406. package/contracts/shared/IRegistryLinked.sol +11 -0
  407. package/contracts/shared/IService.sol +16 -6
  408. package/contracts/shared/InitializableCustom.sol +177 -0
  409. package/contracts/shared/InitializableERC165.sol +27 -0
  410. package/contracts/shared/InstanceLinkedComponent.sol +172 -0
  411. package/contracts/shared/KeyValueStore.sol +131 -0
  412. package/contracts/shared/Lifecycle.sol +77 -0
  413. package/contracts/shared/NftIdSet.sol +65 -0
  414. package/contracts/shared/NftOwnable.sol +59 -86
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +26 -41
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +58 -31
  419. package/contracts/shared/TokenHandler.sol +37 -6
  420. package/contracts/staking/IStaking.sol +167 -0
  421. package/contracts/staking/IStakingService.sol +160 -0
  422. package/contracts/staking/StakeManagerLib.sol +231 -0
  423. package/contracts/staking/Staking.sol +516 -0
  424. package/contracts/staking/StakingLifecycle.sol +23 -0
  425. package/contracts/staking/StakingManager.sol +50 -0
  426. package/contracts/staking/StakingReader.sol +183 -0
  427. package/contracts/staking/StakingService.sol +407 -0
  428. package/contracts/staking/StakingServiceManager.sol +44 -0
  429. package/contracts/staking/StakingStore.sol +605 -0
  430. package/contracts/staking/TargetManagerLib.sol +207 -0
  431. package/contracts/{types → type}/AddressSet.sol +1 -1
  432. package/contracts/type/Amount.sol +135 -0
  433. package/contracts/{types → type}/Blocknumber.sol +27 -3
  434. package/contracts/type/ClaimId.sol +75 -0
  435. package/contracts/{types → type}/DistributorType.sol +2 -2
  436. package/contracts/{types → type}/Fee.sol +33 -23
  437. package/contracts/{types → type}/NftId.sol +21 -15
  438. package/contracts/{types → type}/NftIdSet.sol +2 -2
  439. package/contracts/type/ObjectType.sol +271 -0
  440. package/contracts/type/PayoutId.sol +82 -0
  441. package/contracts/{types → type}/Referral.sol +6 -1
  442. package/contracts/type/RequestId.sol +75 -0
  443. package/contracts/{types → type}/RiskId.sol +1 -1
  444. package/contracts/type/RoleId.sol +174 -0
  445. package/contracts/type/Seconds.sol +93 -0
  446. package/contracts/type/Selector.sol +102 -0
  447. package/contracts/{types → type}/StateId.sol +34 -4
  448. package/contracts/type/String.sol +53 -0
  449. package/contracts/{types → type}/Timestamp.sol +34 -15
  450. package/contracts/{types → type}/UFixed.sol +35 -9
  451. package/contracts/{types → type}/Version.sol +5 -2
  452. package/contracts/{shared → upgradeability}/IVersionable.sol +5 -48
  453. package/contracts/upgradeability/ProxyManager.sol +198 -0
  454. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  455. package/contracts/upgradeability/Versionable.sol +59 -0
  456. package/package.json +10 -7
  457. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -772
  460. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  463. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  465. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  466. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  467. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  468. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -967
  469. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  470. package/artifacts/contracts/components/Product.sol/Product.json +0 -883
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  472. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  473. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  474. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  475. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  477. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  479. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  481. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  483. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  485. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  486. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  487. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  489. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  491. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  493. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  494. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  496. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  498. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  500. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  501. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  502. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  503. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  504. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  505. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  506. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  507. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  508. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  509. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  510. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  511. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  512. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -788
  513. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  514. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  515. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  516. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1065
  517. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  518. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  519. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  520. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  521. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  522. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  523. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  524. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  525. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  526. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  527. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  528. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  529. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  530. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -923
  534. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  535. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -440
  536. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  537. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  538. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  539. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -684
  540. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  541. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -428
  542. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  543. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.json +0 -466
  545. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  546. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  547. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  548. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  549. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  551. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -984
  552. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -464
  554. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -718
  556. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  557. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -428
  558. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  559. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -768
  560. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  561. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  562. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  563. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  564. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  565. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  566. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  567. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  568. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -349
  570. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  571. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  572. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  573. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  574. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  575. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  576. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  578. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  580. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  582. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  583. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  584. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  585. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  586. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  587. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  588. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  589. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  590. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  591. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  592. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  593. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  594. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  595. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  596. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  598. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  600. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  602. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  603. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  604. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  606. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  607. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  608. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  610. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  612. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  614. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  615. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  616. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  617. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  618. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  619. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  620. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  621. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  622. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  623. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  624. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  625. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  626. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  627. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  628. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  629. package/contracts/components/BaseComponent.sol +0 -145
  630. package/contracts/components/Distribution.sol +0 -163
  631. package/contracts/components/IBaseComponent.sol +0 -32
  632. package/contracts/components/IDistributionComponent.sol +0 -44
  633. package/contracts/components/IPoolComponent.sol +0 -66
  634. package/contracts/components/IProductComponent.sol +0 -35
  635. package/contracts/components/Pool.sol +0 -271
  636. package/contracts/components/Product.sol +0 -292
  637. package/contracts/experiment/cloning/Cloner.sol +0 -47
  638. package/contracts/experiment/errors/Require.sol +0 -38
  639. package/contracts/experiment/errors/Revert.sol +0 -44
  640. package/contracts/experiment/inheritance/A.sol +0 -53
  641. package/contracts/experiment/inheritance/B.sol +0 -28
  642. package/contracts/experiment/inheritance/C.sol +0 -34
  643. package/contracts/experiment/inheritance/IA.sol +0 -13
  644. package/contracts/experiment/inheritance/IB.sol +0 -10
  645. package/contracts/experiment/inheritance/IC.sol +0 -12
  646. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  647. package/contracts/experiment/statemachine/ISM.sol +0 -25
  648. package/contracts/experiment/statemachine/SM.sol +0 -57
  649. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  650. package/contracts/experiment/types/TypeA.sol +0 -47
  651. package/contracts/experiment/types/TypeB.sol +0 -29
  652. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  653. package/contracts/instance/IInstanceBase.sol +0 -26
  654. package/contracts/instance/InstanceAccessManager.sol +0 -305
  655. package/contracts/instance/InstanceBase.sol +0 -41
  656. package/contracts/instance/base/ComponentServiceBase.sol +0 -72
  657. package/contracts/instance/base/IInstanceBase.sol +0 -23
  658. package/contracts/instance/base/KeyValueStore.sol +0 -172
  659. package/contracts/instance/base/Lifecycle.sol +0 -100
  660. package/contracts/instance/module/ISetup.sol +0 -46
  661. package/contracts/instance/module/ITreasury.sol +0 -23
  662. package/contracts/instance/service/BundleService.sol +0 -260
  663. package/contracts/instance/service/BundleServiceManager.sol +0 -54
  664. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  665. package/contracts/instance/service/DistributionService.sol +0 -118
  666. package/contracts/instance/service/DistributionServiceManager.sol +0 -54
  667. package/contracts/instance/service/IBundleService.sol +0 -45
  668. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  669. package/contracts/instance/service/IDistributionService.sol +0 -12
  670. package/contracts/instance/service/IPolicyService.sol +0 -87
  671. package/contracts/instance/service/IPoolService.sol +0 -20
  672. package/contracts/instance/service/IProductService.sol +0 -40
  673. package/contracts/instance/service/PolicyService.sol +0 -508
  674. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  675. package/contracts/instance/service/PoolService.sol +0 -124
  676. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  677. package/contracts/instance/service/ProductService.sol +0 -173
  678. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  679. package/contracts/shared/ContractDeployerLib.sol +0 -72
  680. package/contracts/shared/ERC165.sol +0 -25
  681. package/contracts/shared/ProxyManager.sol +0 -94
  682. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  683. package/contracts/shared/Versionable.sol +0 -147
  684. package/contracts/test/TestFee.sol +0 -25
  685. package/contracts/test/TestRegisterable.sol +0 -18
  686. package/contracts/test/TestRoleId.sol +0 -14
  687. package/contracts/test/TestService.sol +0 -24
  688. package/contracts/test/TestToken.sol +0 -26
  689. package/contracts/test/TestVersion.sol +0 -44
  690. package/contracts/test/TestVersionable.sol +0 -17
  691. package/contracts/types/ChainId.sol +0 -38
  692. package/contracts/types/NumberId.sol +0 -52
  693. package/contracts/types/ObjectType.sol +0 -152
  694. package/contracts/types/RoleId.sol +0 -93
  695. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,529 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IRegistry} from "../registry/IRegistry.sol";
5
+ import {Product} from "./Product.sol";
6
+ import {IComponents} from "../instance/module/IComponents.sol";
7
+ import {IInstance} from "../instance/IInstance.sol";
8
+ import {IPolicy} from "../instance/module/IPolicy.sol";
9
+
10
+ import {TokenHandler} from "../shared/TokenHandler.sol";
11
+
12
+ import {Amount, AmountLib} from "../type/Amount.sol";
13
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
14
+ import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
15
+ import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
16
+ import {NftId, NftIdLib} from "../type/NftId.sol";
17
+ import {ReferralId} from "../type/Referral.sol";
18
+ import {StateId} from "../type/StateId.sol";
19
+ import {VersionPart} from "../type/Version.sol";
20
+
21
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
22
+ import {IApplicationService} from "./IApplicationService.sol";
23
+ import {IBundleService} from "../pool/IBundleService.sol";
24
+ import {IClaimService} from "./IClaimService.sol";
25
+ import {IComponentService} from "../shared/IComponentService.sol";
26
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
27
+ import {InstanceReader} from "../instance/InstanceReader.sol";
28
+ import {InstanceStore} from "../instance/InstanceStore.sol";
29
+ import {IPolicyService} from "./IPolicyService.sol";
30
+ import {IPoolService} from "../pool/IPoolService.sol";
31
+ import {IPricingService} from "./IPricingService.sol";
32
+
33
+ contract PolicyService is
34
+ ComponentVerifyingService,
35
+ IPolicyService
36
+ {
37
+ using NftIdLib for NftId;
38
+ using TimestampLib for Timestamp;
39
+
40
+ IApplicationService internal _applicationService;
41
+ IComponentService internal _componentService;
42
+ IBundleService internal _bundleService;
43
+ IClaimService internal _claimService;
44
+ IDistributionService internal _distributionService;
45
+ IPoolService internal _poolService;
46
+ IPricingService internal _pricingService;
47
+
48
+ event LogProductServiceSender(address sender);
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 _getAndVerifyInstanceAndProduct() internal view returns (Product product) {
80
+ IRegistry.ObjectInfo memory productInfo;
81
+ (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
82
+ product = Product(productInfo.objectAddress);
83
+ }
84
+
85
+
86
+ function decline(
87
+ NftId applicationNftId // = policyNftId
88
+ )
89
+ external
90
+ virtual override
91
+ {
92
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
93
+ InstanceReader instanceReader = instance.getInstanceReader();
94
+
95
+ // check policy is in state applied
96
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
97
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
98
+ }
99
+
100
+ // check policy matches with calling product
101
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
102
+ if(applicationInfo.productNftId != productNftId) {
103
+ revert ErrorPolicyServicePolicyProductMismatch(
104
+ applicationNftId,
105
+ applicationInfo.productNftId,
106
+ productNftId);
107
+ }
108
+
109
+
110
+ // store updated policy info
111
+ instance.getInstanceStore().updatePolicyState(
112
+ applicationNftId,
113
+ DECLINED());
114
+
115
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
116
+ }
117
+
118
+ event LogDebug(uint idx, string message);
119
+
120
+ /// @dev underwites application which includes the locking of the required collateral from the pool.
121
+ function collateralize(
122
+ NftId applicationNftId, // = policyNftId
123
+ bool requirePremiumPayment,
124
+ Timestamp activateAt
125
+ )
126
+ external
127
+ virtual override
128
+ {
129
+ // check caller is registered product
130
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
131
+ InstanceReader instanceReader = instance.getInstanceReader();
132
+
133
+ // check policy is in state applied
134
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
135
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
136
+ }
137
+
138
+ // check policy matches with calling product
139
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
140
+ if(applicationInfo.productNftId != productNftId) {
141
+ revert ErrorPolicyServicePolicyProductMismatch(
142
+ applicationNftId,
143
+ applicationInfo.productNftId,
144
+ productNftId);
145
+ }
146
+
147
+ StateId newPolicyState = COLLATERALIZED();
148
+
149
+ // actual collateralizaion
150
+ (
151
+ Amount localCollateralAmount,
152
+ Amount totalCollateralAmount
153
+ ) = _poolService.lockCollateral(
154
+ instance,
155
+ address(instanceReader.getComponentInfo(productNftId).token),
156
+ productNftId,
157
+ applicationNftId,
158
+ applicationInfo.bundleNftId,
159
+ applicationInfo.sumInsuredAmount);
160
+
161
+ // optional activation of policy
162
+ if(activateAt > zeroTimestamp()) {
163
+ newPolicyState = ACTIVE();
164
+ applicationInfo.activatedAt = activateAt;
165
+ applicationInfo.expiredAt = activateAt.addSeconds(applicationInfo.lifetime);
166
+ }
167
+
168
+ // optional collection of premium
169
+ if(requirePremiumPayment) {
170
+ Amount premiumPaidAmount = _calculateAndCollectPremium(
171
+ instance,
172
+ applicationNftId,
173
+ applicationInfo);
174
+
175
+ applicationInfo.premiumPaidAmount = premiumPaidAmount;
176
+ }
177
+
178
+ // store updated policy info
179
+ instance.getInstanceStore().updatePolicy(
180
+ applicationNftId,
181
+ applicationInfo,
182
+ newPolicyState);
183
+
184
+ // TODO add calling pool contract if it needs to validate application
185
+
186
+ // TODO: add logging
187
+ }
188
+
189
+
190
+ function collectPremium(
191
+ NftId policyNftId,
192
+ Timestamp activateAt
193
+ )
194
+ external
195
+ virtual
196
+ {
197
+ // check caller is registered product
198
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
199
+ InstanceReader instanceReader = instance.getInstanceReader();
200
+ StateId stateId = instanceReader.getPolicyState(policyNftId);
201
+
202
+ // check policy is in state collateralized or active
203
+ if (!(stateId == COLLATERALIZED() || stateId == ACTIVE())) {
204
+ revert ErrorPolicyServicePolicyStateNotCollateralizedOrApplied(policyNftId);
205
+ }
206
+
207
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
208
+
209
+ // check if premium is already collected
210
+ if (policyInfo.premiumPaidAmount.gtz()) {
211
+ revert ErrorPolicyServicePremiumAlreadyPaid(policyNftId, policyInfo.premiumPaidAmount);
212
+ }
213
+
214
+ policyInfo.premiumPaidAmount = _calculateAndCollectPremium(
215
+ instance,
216
+ policyNftId,
217
+ policyInfo);
218
+
219
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
220
+
221
+ if(activateAt.gtz() && policyInfo.activatedAt.eqz()) {
222
+ activate(policyNftId, activateAt);
223
+ }
224
+
225
+ // TODO: add logging
226
+ }
227
+
228
+ function activate(NftId policyNftId, Timestamp activateAt) public override {
229
+ // check caller is registered product
230
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
231
+ InstanceReader instanceReader = instance.getInstanceReader();
232
+
233
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
234
+
235
+ require(
236
+ policyInfo.activatedAt.eqz(),
237
+ "ERROR:PRS-020:ALREADY_ACTIVATED");
238
+
239
+ policyInfo.activatedAt = activateAt;
240
+ policyInfo.expiredAt = activateAt.addSeconds(policyInfo.lifetime);
241
+
242
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, ACTIVE());
243
+
244
+ // TODO: add logging
245
+ }
246
+
247
+ /// @inheritdoc IPolicyService
248
+ function expire(
249
+ NftId policyNftId,
250
+ Timestamp expireAt
251
+ )
252
+ external
253
+ override
254
+ virtual
255
+ returns (Timestamp)
256
+ {
257
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
258
+ InstanceReader instanceReader = instance.getInstanceReader();
259
+
260
+ // check policy is in state applied
261
+ if (instanceReader.getPolicyState(policyNftId) != ACTIVE()) {
262
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, instanceReader.getPolicyState(policyNftId));
263
+ }
264
+
265
+ // check policy matches with calling product
266
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
267
+ if(policyInfo.productNftId != productNftId) {
268
+ revert ErrorPolicyServicePolicyProductMismatch(
269
+ policyNftId,
270
+ policyInfo.productNftId,
271
+ productNftId);
272
+ }
273
+
274
+ if (expireAt.eqz()) {
275
+ expireAt = TimestampLib.blockTimestamp();
276
+ }
277
+
278
+ // check preconditions
279
+ if (expireAt >= policyInfo.expiredAt) {
280
+ revert ErrorIPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
281
+ }
282
+ if (expireAt < TimestampLib.blockTimestamp()) {
283
+ revert ErrorIPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
284
+ }
285
+ if (policyInfo.openClaimsCount > 0) {
286
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
287
+ }
288
+
289
+ policyInfo.expiredAt = expireAt;
290
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
291
+
292
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
293
+
294
+ return expireAt;
295
+ }
296
+
297
+ function close(
298
+ NftId policyNftId
299
+ )
300
+ external
301
+ override
302
+ {
303
+ (,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
304
+ InstanceReader instanceReader = instance.getInstanceReader();
305
+
306
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
307
+
308
+ if (policyInfo.activatedAt.eqz()) {
309
+ revert ErrorIPolicyServicePolicyNotActivated(policyNftId);
310
+ }
311
+
312
+ StateId state = instanceReader.getPolicyState(policyNftId);
313
+ if (state != ACTIVE()) {
314
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, state);
315
+ }
316
+
317
+ if (policyInfo.closedAt.gtz()) {
318
+ revert ErrorIPolicyServicePolicyAlreadyClosed(policyNftId);
319
+ }
320
+
321
+ // TODO consider to allow for underpaid premiums (with the effects of reducing max payouts accordingly)
322
+ if (!(policyInfo.premiumAmount == policyInfo.premiumPaidAmount)) {
323
+ revert ErrorPolicyServicePremiumNotFullyPaid(policyNftId, policyInfo.premiumAmount, policyInfo.premiumPaidAmount);
324
+ }
325
+
326
+ if (policyInfo.openClaimsCount > 0) {
327
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
328
+ }
329
+
330
+ policyInfo.closedAt = TimestampLib.blockTimestamp();
331
+
332
+ _poolService.releaseCollateral(
333
+ instance,
334
+ address(instanceReader.getComponentInfo(policyInfo.productNftId).token),
335
+ policyNftId,
336
+ policyInfo);
337
+
338
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, CLOSED());
339
+ }
340
+
341
+
342
+ function _calculateAndCollectPremium(
343
+ IInstance instance,
344
+ NftId applicationNftId,
345
+ IPolicy.PolicyInfo memory applicationInfo
346
+ )
347
+ internal
348
+ virtual
349
+ returns (
350
+ Amount premiumPaidAmount
351
+ )
352
+ {
353
+ NftId productNftId = applicationInfo.productNftId;
354
+
355
+ // calculate premium details
356
+ IPolicy.Premium memory premium = _pricingService.calculatePremium(
357
+ productNftId,
358
+ applicationInfo.riskId,
359
+ applicationInfo.sumInsuredAmount,
360
+ applicationInfo.lifetime,
361
+ applicationInfo.applicationData,
362
+ applicationInfo.bundleNftId,
363
+ applicationInfo.referralId);
364
+
365
+
366
+ // update financials and transfer premium tokens
367
+ premiumPaidAmount = _processAndCollect(
368
+ instance,
369
+ productNftId,
370
+ applicationNftId,
371
+ applicationInfo.premiumAmount,
372
+ applicationInfo.bundleNftId,
373
+ applicationInfo.referralId,
374
+ premium);
375
+ }
376
+
377
+
378
+ function _processAndCollect(
379
+ IInstance instance,
380
+ NftId productNftId,
381
+ NftId policyNftId,
382
+ Amount premiumExpectedAmount,
383
+ NftId bundleNftId,
384
+ ReferralId referralId,
385
+ IPolicy.Premium memory premium
386
+ )
387
+ internal
388
+ virtual
389
+ returns (Amount premiumPaidAmount)
390
+ {
391
+ InstanceReader instanceReader = instance.getInstanceReader();
392
+ TokenHandler tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
393
+ address policyHolder = getRegistry().ownerOf(policyNftId);
394
+ premiumPaidAmount = AmountLib.toAmount(premium.premiumAmount);
395
+
396
+ _checkPremiumBalanceAndAllowance(
397
+ tokenHandler,
398
+ policyHolder,
399
+ premiumExpectedAmount,
400
+ premiumPaidAmount);
401
+
402
+ _processSaleAndTransferFunds(
403
+ instanceReader,
404
+ instance.getInstanceStore(),
405
+ tokenHandler,
406
+ policyHolder,
407
+ productNftId,
408
+ bundleNftId,
409
+ referralId,
410
+ premium);
411
+ }
412
+
413
+
414
+ function _checkPremiumBalanceAndAllowance(
415
+ TokenHandler tokenHandler,
416
+ address policyHolder,
417
+ Amount premiumExpectedAmount,
418
+ Amount premiumPaidAmount
419
+ )
420
+ internal
421
+ virtual
422
+ view
423
+ {
424
+ // TODO decide how to handle this properly
425
+ // not clear if this is the best way to handle this
426
+ if (premiumExpectedAmount < premiumPaidAmount) {
427
+ revert ErrorPolicyServicePremiumHigherThanExpected(premiumExpectedAmount, premiumPaidAmount);
428
+ }
429
+
430
+ uint256 premiumAmount = premiumPaidAmount.toInt();
431
+ uint256 balance = tokenHandler.getToken().balanceOf(policyHolder);
432
+ uint256 allowance = tokenHandler.getToken().allowance(policyHolder, address(tokenHandler));
433
+
434
+ if (balance < premiumAmount) {
435
+ revert ErrorPolicyServiceBalanceInsufficient(policyHolder, premiumAmount, balance);
436
+ }
437
+
438
+ if (allowance < premiumAmount) {
439
+ revert ErrorPolicyServiceAllowanceInsufficient(policyHolder, address(tokenHandler), premiumAmount, allowance);
440
+ }
441
+ }
442
+
443
+
444
+ function _processSaleAndTransferFunds(
445
+ InstanceReader instanceReader,
446
+ InstanceStore instanceStore,
447
+ TokenHandler tokenHandler,
448
+ address policyHolder,
449
+ NftId productNftId,
450
+ NftId bundleNftId,
451
+ ReferralId referralId,
452
+ IPolicy.Premium memory premium
453
+ )
454
+ internal
455
+ virtual
456
+ {
457
+ (
458
+ NftId distributionNftId,
459
+ address distributionWallet,
460
+ address poolWallet,
461
+ address productWallet
462
+ ) = _getDistributionNftAndWallets(
463
+ instanceReader,
464
+ productNftId);
465
+
466
+ // update product fees, distribution and pool fees
467
+ _componentService.increaseProductFees(
468
+ instanceStore,
469
+ productNftId,
470
+ AmountLib.toAmount(premium.productFeeVarAmount + premium.productFeeFixAmount));
471
+
472
+ // update distribution fees and distributor commission and pool fees
473
+ _distributionService.processSale(
474
+ distributionNftId,
475
+ referralId,
476
+ premium);
477
+
478
+ // update pool and bundle fees
479
+ _poolService.processSale(
480
+ bundleNftId,
481
+ premium);
482
+
483
+ // TODO: centralize token handling (issue #471)
484
+ // transfer premium amounts to target wallets
485
+ tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
486
+ tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
487
+ tokenHandler.transfer(policyHolder, poolWallet, premium.poolPremiumAndFeeAmount);
488
+ }
489
+
490
+
491
+ function _getTokenHandlerAndProductWallet(
492
+ InstanceReader instanceReader,
493
+ NftId productNftId
494
+ )
495
+ internal
496
+ virtual
497
+ view
498
+ returns (
499
+ TokenHandler tokenHandler
500
+ )
501
+ {
502
+ tokenHandler = instanceReader.getComponentInfo(productNftId).tokenHandler;
503
+ }
504
+
505
+ function _getDistributionNftAndWallets(
506
+ InstanceReader instanceReader,
507
+ NftId productNftId
508
+ )
509
+ internal
510
+ virtual
511
+ view returns (
512
+ NftId distributionNftId,
513
+ address distributionWallet,
514
+ address poolWallet,
515
+ address productWallet
516
+ )
517
+ {
518
+ IComponents.ProductInfo memory productInfo = instanceReader.getProductInfo(productNftId);
519
+ distributionNftId = productInfo.distributionNftId;
520
+ distributionWallet = instanceReader.getComponentInfo(distributionNftId).wallet;
521
+ poolWallet = instanceReader.getComponentInfo(productInfo.poolNftId).wallet;
522
+ productWallet = instanceReader.getComponentInfo(productNftId).wallet;
523
+ }
524
+
525
+
526
+ function _getDomain() internal pure override returns(ObjectType) {
527
+ return POLICY();
528
+ }
529
+ }
@@ -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
+ }