@etherisc/gif-next 0.0.2-7143611-252 → 0.0.2-7177fd8-761

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