@etherisc/gif-next 0.0.2-f99f1d2-109 → 0.0.2-fa85e58-736

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