@etherisc/gif-next 0.0.2-ce8407f-016 → 0.0.2-ce86487-031

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