@etherisc/gif-next 0.0.2-f4f92b3-338 → 0.0.2-f575800-762

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 (675) 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 +1548 -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 +1234 -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 +237 -1565
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +389 -197
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +442 -2597
  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 +689 -377
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +545 -349
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +369 -108
  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 +25 -150
  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 +1185 -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/{components/Distribution.sol/Distribution.json → oracle/IOracleComponent.sol/IOracleComponent.json} +246 -293
  84. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  85. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  86. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  87. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1093 -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 +1470 -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 +1510 -0
  98. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +830 -0
  100. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +477 -265
  102. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  103. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +424 -293
  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 +1256 -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/{components/IProductComponent.sol/IProductComponent.json → product/BasicProduct.sol/BasicProduct.json} +784 -214
  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} +211 -230
  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/{instance/service → product}/IPolicyService.sol/IPolicyService.json +329 -290
  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} +270 -215
  132. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +363 -327
  134. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  135. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +126 -167
  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 +1276 -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 +205 -19
  154. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  155. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +226 -267
  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 +467 -35
  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 +506 -254
  164. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  165. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +352 -95
  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 +349 -82
  174. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  175. package/artifacts/contracts/shared/Component.sol/Component.json +896 -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/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +178 -242
  182. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  183. package/artifacts/contracts/{components/Component.sol/Component.json → shared/IComponent.sol/IComponent.json} +192 -217
  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/{components/IDistributionComponent.sol/IDistributionComponent.json → shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json} +274 -185
  188. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +59 -14
  190. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  192. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  193. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +34 -30
  194. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  196. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  197. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +15 -30
  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 +84 -154
  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/{components/Pool.sol/Pool.json → shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json} +390 -391
  208. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  209. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  210. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  211. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  212. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  214. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  215. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +108 -35
  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 +131 -60
  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 +188 -157
  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 +2005 -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 +761 -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 +337 -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} +33 -32
  324. package/contracts/instance/IInstance.sol +61 -47
  325. package/contracts/instance/IInstanceService.sol +73 -21
  326. package/contracts/instance/Instance.sol +178 -193
  327. package/contracts/instance/InstanceAdmin.sol +266 -0
  328. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  329. package/contracts/instance/InstanceReader.sol +181 -61
  330. package/contracts/instance/InstanceService.sol +334 -253
  331. package/contracts/instance/InstanceServiceManager.sol +13 -27
  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} +19 -24
  338. package/contracts/instance/module/IAccess.sol +19 -21
  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/TestToken.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 +442 -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 +528 -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 +16 -1
  383. package/contracts/registry/IRegistry.sol +62 -26
  384. package/contracts/registry/IRegistryService.sol +47 -43
  385. package/contracts/registry/ITransferInterceptor.sol +1 -0
  386. package/contracts/registry/Registry.sol +264 -140
  387. package/contracts/registry/RegistryAdmin.sol +365 -0
  388. package/contracts/registry/RegistryService.sol +105 -115
  389. package/contracts/registry/RegistryServiceManager.sol +24 -33
  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 +263 -60
  394. package/contracts/shared/Component.sol +280 -0
  395. package/contracts/shared/ComponentService.sol +651 -0
  396. package/contracts/shared/ComponentServiceManager.sol +35 -0
  397. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  398. package/contracts/shared/IComponent.sol +70 -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 +3 -3
  406. package/contracts/shared/IRegistryLinked.sol +11 -0
  407. package/contracts/shared/IService.sol +15 -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 -91
  415. package/contracts/shared/PolicyHolder.sol +99 -0
  416. package/contracts/shared/Registerable.sol +19 -30
  417. package/contracts/shared/RegistryLinked.sol +43 -0
  418. package/contracts/shared/Service.sol +54 -32
  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 +411 -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/Component.sol/Component.dbg.json +0 -4
  458. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  459. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  460. package/artifacts/contracts/components/IComponent.sol/IComponent.json +0 -455
  461. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  462. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  463. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  464. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  465. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  466. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  468. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  470. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  472. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  474. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  476. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  477. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  478. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  479. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  480. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  481. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  482. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  483. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  484. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  485. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  486. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  487. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  488. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  489. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  490. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  491. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  492. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  493. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  494. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  496. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  498. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  499. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  500. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  501. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  502. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  503. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  504. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  505. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -764
  506. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  507. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  508. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1034
  509. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  510. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  511. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  512. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  513. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  514. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  515. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  516. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  517. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  518. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  519. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  520. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  521. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1102
  522. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  523. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -449
  524. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -772
  526. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -437
  528. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  529. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  532. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  533. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  534. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1227
  535. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  536. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -505
  537. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  538. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -806
  539. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  540. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -437
  541. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  542. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -856
  543. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  544. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -437
  545. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  546. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  547. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  548. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -547
  549. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  550. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  551. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  552. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -35
  553. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  554. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +0 -205
  555. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  556. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -362
  557. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  558. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  559. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  560. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +0 -228
  561. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  562. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  563. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  564. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -313
  565. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  566. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  567. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  568. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -608
  569. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  570. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  571. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  572. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  573. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  574. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  575. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  576. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  577. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  578. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.json +0 -10
  579. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  580. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  581. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  582. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  583. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  584. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +0 -104
  585. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  587. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -125
  589. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  590. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  591. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  592. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -33
  593. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  594. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  595. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  597. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  598. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  599. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  600. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +0 -86
  601. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -156
  603. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -249
  606. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/UFixed.sol/MathLib.json +0 -10
  608. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  609. package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +0 -479
  610. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  611. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -177
  612. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  613. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -49
  614. package/contracts/components/Component.sol +0 -222
  615. package/contracts/components/Distribution.sol +0 -144
  616. package/contracts/components/IComponent.sol +0 -43
  617. package/contracts/components/IDistributionComponent.sol +0 -47
  618. package/contracts/components/IPoolComponent.sol +0 -70
  619. package/contracts/components/IProductComponent.sol +0 -39
  620. package/contracts/components/Pool.sol +0 -241
  621. package/contracts/components/Product.sol +0 -258
  622. package/contracts/experiment/cloning/Cloner.sol +0 -47
  623. package/contracts/experiment/errors/Require.sol +0 -38
  624. package/contracts/experiment/errors/Revert.sol +0 -44
  625. package/contracts/experiment/inheritance/A.sol +0 -53
  626. package/contracts/experiment/inheritance/B.sol +0 -28
  627. package/contracts/experiment/inheritance/C.sol +0 -34
  628. package/contracts/experiment/inheritance/IA.sol +0 -13
  629. package/contracts/experiment/inheritance/IB.sol +0 -10
  630. package/contracts/experiment/inheritance/IC.sol +0 -12
  631. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  632. package/contracts/experiment/statemachine/ISM.sol +0 -25
  633. package/contracts/experiment/statemachine/SM.sol +0 -57
  634. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  635. package/contracts/experiment/types/TypeA.sol +0 -47
  636. package/contracts/experiment/types/TypeB.sol +0 -29
  637. package/contracts/instance/InstanceAccessManager.sol +0 -298
  638. package/contracts/instance/base/ComponentService.sol +0 -134
  639. package/contracts/instance/base/KeyValueStore.sol +0 -172
  640. package/contracts/instance/base/Lifecycle.sol +0 -100
  641. package/contracts/instance/module/ISetup.sol +0 -46
  642. package/contracts/instance/module/ITreasury.sol +0 -23
  643. package/contracts/instance/service/BundleService.sol +0 -293
  644. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  645. package/contracts/instance/service/DistributionService.sol +0 -106
  646. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  647. package/contracts/instance/service/IBundleService.sol +0 -44
  648. package/contracts/instance/service/IDistributionService.sol +0 -12
  649. package/contracts/instance/service/IPolicyService.sol +0 -94
  650. package/contracts/instance/service/IPoolService.sol +0 -20
  651. package/contracts/instance/service/IProductService.sol +0 -40
  652. package/contracts/instance/service/PolicyService.sol +0 -538
  653. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  654. package/contracts/instance/service/PoolService.sol +0 -109
  655. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  656. package/contracts/instance/service/ProductService.sol +0 -232
  657. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  658. package/contracts/registry/RegistryAccessManager.sol +0 -216
  659. package/contracts/registry/ReleaseManager.sol +0 -332
  660. package/contracts/shared/ContractDeployerLib.sol +0 -72
  661. package/contracts/shared/ERC165.sol +0 -25
  662. package/contracts/shared/ProxyManager.sol +0 -94
  663. package/contracts/shared/Versionable.sol +0 -147
  664. package/contracts/test/TestFee.sol +0 -25
  665. package/contracts/test/TestRegisterable.sol +0 -18
  666. package/contracts/test/TestRoleId.sol +0 -14
  667. package/contracts/test/TestService.sol +0 -25
  668. package/contracts/test/TestVersion.sol +0 -44
  669. package/contracts/test/TestVersionable.sol +0 -17
  670. package/contracts/test/Usdc.sol +0 -26
  671. package/contracts/types/ChainId.sol +0 -38
  672. package/contracts/types/NumberId.sol +0 -52
  673. package/contracts/types/ObjectType.sol +0 -152
  674. package/contracts/types/RoleId.sol +0 -90
  675. /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
+ }