@etherisc/gif-next 0.0.2-e5ea33d → 0.0.2-e63124b-662

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 (585) hide show
  1. package/README.md +376 -20
  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 +1505 -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 +1191 -0
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1394 -0
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +900 -0
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +843 -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 +289 -529
  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 +446 -609
  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 +1735 -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 +3591 -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/{component/IComponent.sol/IComponent.json → module/IComponents.sol/IComponents.json} +2 -2
  72. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  73. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  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/module/IRisk.sol/IRisk.json +10 -0
  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 +1155 -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 +772 -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 +1063 -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 +1477 -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 +1134 -0
  102. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  103. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  104. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  105. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  106. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  107. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +959 -0
  108. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  109. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  110. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  111. package/artifacts/contracts/pool/Pool.sol/Pool.json +1269 -0
  112. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  113. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  114. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -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 +1299 -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 +966 -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 +1012 -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 +1257 -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 +733 -102
  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 +1031 -120
  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 +1487 -0
  182. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  183. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +784 -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/ERC165.sol/ERC165.dbg.json +4 -0
  187. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +73 -0
  188. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  189. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  190. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  191. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  192. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  193. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +718 -0
  194. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  195. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +474 -0
  196. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  197. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +110 -0
  198. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  199. package/artifacts/contracts/{registry/Registry.sol/Registerable.json → shared/INftOwnable.sol/INftOwnable.json} +42 -77
  200. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  201. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  202. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +4 -0
  203. package/artifacts/contracts/{instance/pool/PoolModule.sol/PoolModule.json → shared/IRegisterable.sol/IRegisterable.json} +98 -79
  204. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  205. package/artifacts/contracts/{instance/access/IAccess.sol/IAccessCheckRole.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +11 -11
  206. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  207. package/artifacts/contracts/shared/IService.sol/IService.json +346 -0
  208. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  209. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  210. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  211. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +996 -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/shared/Lifecycle.sol/Lifecycle.json +133 -0
  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 +460 -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 +2237 -0
  250. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  251. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -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 +345 -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 +312 -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 +198 -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 +10 -0
  296. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  297. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +498 -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 +149 -0
  321. package/contracts/distribution/BasicDistributionAuthorization.sol +43 -0
  322. package/contracts/distribution/Distribution.sol +283 -0
  323. package/contracts/distribution/DistributionService.sol +288 -0
  324. package/contracts/distribution/DistributionServiceManager.sol +39 -0
  325. package/contracts/distribution/IDistributionComponent.sol +48 -0
  326. package/contracts/distribution/IDistributionService.sol +85 -0
  327. package/contracts/instance/BundleSet.sol +126 -0
  328. package/contracts/instance/IInstance.sol +85 -17
  329. package/contracts/instance/IInstanceService.sol +92 -0
  330. package/contracts/instance/Instance.sol +246 -56
  331. package/contracts/instance/InstanceAdmin.sol +266 -0
  332. package/contracts/instance/InstanceAuthorizationV3.sol +202 -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 +276 -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 +52 -0
  345. package/contracts/instance/module/IDistribution.sol +42 -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 +32 -0
  353. package/contracts/oracle/IOracleService.sol +65 -0
  354. package/contracts/oracle/Oracle.sol +157 -0
  355. package/contracts/oracle/OracleService.sol +278 -0
  356. package/contracts/oracle/OracleServiceManager.sol +39 -0
  357. package/contracts/pool/BasicPool.sol +164 -0
  358. package/contracts/pool/BasicPoolAuthorization.sol +49 -0
  359. package/contracts/pool/BundleService.sol +284 -0
  360. package/contracts/pool/BundleServiceManager.sol +39 -0
  361. package/contracts/pool/IBundleService.sol +106 -0
  362. package/contracts/pool/IPoolComponent.sol +52 -0
  363. package/contracts/pool/IPoolService.sol +150 -0
  364. package/contracts/pool/Pool.sol +311 -0
  365. package/contracts/pool/PoolService.sol +436 -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 +40 -0
  371. package/contracts/product/ClaimService.sol +416 -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 +39 -0
  378. package/contracts/product/IProductService.sol +33 -0
  379. package/contracts/product/PolicyService.sol +475 -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 +105 -51
  388. package/contracts/registry/IRegistryService.sol +69 -0
  389. package/contracts/registry/ITransferInterceptor.sol +7 -0
  390. package/contracts/registry/Registry.sol +509 -142
  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 +487 -0
  396. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  397. package/contracts/registry/TokenRegistry.sol +315 -0
  398. package/contracts/shared/Component.sol +281 -0
  399. package/contracts/shared/ComponentService.sol +581 -0
  400. package/contracts/shared/ComponentServiceManager.sol +35 -0
  401. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  402. package/contracts/shared/ERC165.sol +27 -0
  403. package/contracts/shared/IComponent.sol +70 -0
  404. package/contracts/shared/IComponentService.sol +102 -0
  405. package/contracts/shared/IInstanceLinkedComponent.sol +50 -0
  406. package/contracts/shared/IKeyValueStore.sol +54 -0
  407. package/contracts/shared/ILifecycle.sol +29 -0
  408. package/contracts/shared/INftOwnable.sol +23 -0
  409. package/contracts/shared/IPolicyHolder.sol +45 -0
  410. package/contracts/shared/IRegisterable.sol +15 -0
  411. package/contracts/shared/IRegistryLinked.sol +11 -0
  412. package/contracts/shared/IService.sol +25 -0
  413. package/contracts/shared/InitializableCustom.sol +177 -0
  414. package/contracts/shared/InstanceLinkedComponent.sol +151 -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 +102 -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 +510 -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 +128 -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 +89 -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 +81 -0
  451. package/contracts/type/Selector.sol +102 -0
  452. package/contracts/type/StateId.sol +135 -0
  453. package/contracts/type/String.sol +53 -0
  454. package/contracts/{types → type}/Timestamp.sol +41 -7
  455. package/contracts/type/UFixed.sol +332 -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 +21 -8
  462. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  463. package/artifacts/contracts/components/Component.sol/Component.json +0 -179
  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 -179
  468. package/artifacts/contracts/components/IProduct.sol/IProductComponent.dbg.json +0 -4
  469. package/artifacts/contracts/components/IProduct.sol/IProductComponent.json +0 -192
  470. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  471. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -213
  472. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  473. package/artifacts/contracts/components/Product.sol/Product.json +0 -231
  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/types/TypeA.sol/TypeALib.dbg.json +0 -4
  495. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  496. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  497. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  498. package/artifacts/contracts/instance/access/Access.sol/AccessModule.dbg.json +0 -4
  499. package/artifacts/contracts/instance/access/Access.sol/AccessModule.json +0 -400
  500. package/artifacts/contracts/instance/access/IAccess.sol/IAccess.dbg.json +0 -4
  501. package/artifacts/contracts/instance/access/IAccess.sol/IAccessCheckRole.dbg.json +0 -4
  502. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.dbg.json +0 -4
  503. package/artifacts/contracts/instance/access/IAccess.sol/IAccessComponentTypeRoles.json +0 -50
  504. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/access/IAccess.sol/IAccessModule.json +0 -336
  506. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentModule.json +0 -327
  508. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.dbg.json +0 -4
  509. package/artifacts/contracts/instance/component/ComponentModule.sol/ComponentOwnerService.json +0 -147
  510. package/artifacts/contracts/instance/component/IComponent.sol/IComponent.dbg.json +0 -4
  511. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.dbg.json +0 -4
  512. package/artifacts/contracts/instance/component/IComponent.sol/IComponentContract.json +0 -179
  513. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  514. package/artifacts/contracts/instance/component/IComponent.sol/IComponentModule.json +0 -245
  515. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.dbg.json +0 -4
  516. package/artifacts/contracts/instance/component/IComponent.sol/IComponentOwnerService.json +0 -94
  517. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.dbg.json +0 -4
  518. package/artifacts/contracts/instance/component/IComponent.sol/IInstanceLinked.json +0 -24
  519. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  520. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  521. package/artifacts/contracts/instance/policy/IPolicy.sol/IPolicyModule.json +0 -231
  522. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  523. package/artifacts/contracts/instance/policy/PolicyModule.sol/PolicyModule.json +0 -231
  524. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  525. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  526. package/artifacts/contracts/instance/pool/IPoolModule.sol/IPoolModule.json +0 -149
  527. package/artifacts/contracts/instance/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  528. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/product/IProductService.sol/IProductModule.json +0 -75
  530. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.dbg.json +0 -4
  531. package/artifacts/contracts/instance/product/IProductService.sol/IProductService.json +0 -114
  532. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/product/ProductService.sol/ProductModule.json +0 -75
  534. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.dbg.json +0 -4
  535. package/artifacts/contracts/instance/product/ProductService.sol/ProductService.json +0 -167
  536. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  537. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  538. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.dbg.json +0 -4
  539. package/artifacts/contracts/registry/IRegistry.sol/IOwnable.json +0 -24
  540. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.dbg.json +0 -4
  541. package/artifacts/contracts/registry/IRegistry.sol/IRegisterable.json +0 -166
  542. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.dbg.json +0 -4
  543. package/artifacts/contracts/registry/IRegistry.sol/IRegistryLinked.json +0 -49
  544. package/artifacts/contracts/registry/Registry.sol/Registerable.dbg.json +0 -4
  545. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.dbg.json +0 -4
  546. package/artifacts/contracts/registry/Registry.sol/RegistryLinked.json +0 -60
  547. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  548. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  549. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  550. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  551. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  552. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -92
  553. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  554. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -174
  555. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  556. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.json +0 -453
  557. package/contracts/components/Component.sol +0 -60
  558. package/contracts/components/IPool.sol +0 -9
  559. package/contracts/components/IProduct.sol +0 -9
  560. package/contracts/components/Pool.sol +0 -22
  561. package/contracts/components/Product.sol +0 -55
  562. package/contracts/experiment/errors/Require.sol +0 -38
  563. package/contracts/experiment/errors/Revert.sol +0 -44
  564. package/contracts/experiment/inheritance/A.sol +0 -53
  565. package/contracts/experiment/inheritance/B.sol +0 -28
  566. package/contracts/experiment/inheritance/C.sol +0 -34
  567. package/contracts/experiment/inheritance/IA.sol +0 -13
  568. package/contracts/experiment/inheritance/IB.sol +0 -10
  569. package/contracts/experiment/inheritance/IC.sol +0 -12
  570. package/contracts/experiment/types/TypeA.sol +0 -47
  571. package/contracts/experiment/types/TypeB.sol +0 -29
  572. package/contracts/instance/access/Access.sol +0 -165
  573. package/contracts/instance/access/IAccess.sol +0 -63
  574. package/contracts/instance/component/ComponentModule.sol +0 -213
  575. package/contracts/instance/component/IComponent.sol +0 -73
  576. package/contracts/instance/policy/IPolicy.sol +0 -51
  577. package/contracts/instance/policy/PolicyModule.sol +0 -91
  578. package/contracts/instance/pool/IPoolModule.sol +0 -29
  579. package/contracts/instance/pool/PoolModule.sol +0 -73
  580. package/contracts/instance/product/IProductService.sol +0 -36
  581. package/contracts/instance/product/ProductService.sol +0 -112
  582. package/contracts/registry/IChainNft.sol +0 -21
  583. package/contracts/types/ChainId.sol +0 -38
  584. package/contracts/types/NftId.sol +0 -51
  585. package/contracts/types/UFixed.sol +0 -205
@@ -1,213 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {RegistryLinked} from "../../registry/Registry.sol";
5
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
6
- import {IAccessComponentTypeRoles, IAccessCheckRole} from "../access/IAccess.sol";
7
- import {IInstance} from "../IInstance.sol";
8
-
9
- import {IComponent, IComponentContract, IComponentModule, IComponentOwnerService} from "./IComponent.sol";
10
- import {IProductComponent} from "../../components/IProduct.sol";
11
- import {IPoolModule} from "../pool/IPoolModule.sol";
12
- import {NftId, NftIdLib} from "../../types/NftId.sol";
13
-
14
- abstract contract ComponentModule is
15
- IRegistryLinked,
16
- IAccessComponentTypeRoles,
17
- IAccessCheckRole,
18
- IComponentModule
19
- {
20
- using NftIdLib for NftId;
21
-
22
- mapping(NftId nftId => ComponentInfo info) private _componentInfo;
23
- mapping(NftId nftId => NftId poolNftId) private _poolNftIdForProduct;
24
- mapping(address cAddress => NftId nftId) private _nftIdByAddress;
25
- NftId[] private _nftIds;
26
-
27
- mapping(uint256 cType => bytes32 role) private _componentOwnerRole;
28
-
29
- IComponentOwnerService private _componentOwnerService;
30
-
31
- modifier onlyComponentOwnerService() {
32
- require(
33
- address(_componentOwnerService) == msg.sender,
34
- "ERROR:CMP-001:NOT_OWNER_SERVICE"
35
- );
36
- _;
37
- }
38
-
39
- constructor(address componentOwnerService) {
40
- _componentOwnerService = ComponentOwnerService(componentOwnerService);
41
- }
42
-
43
- function registerComponent(
44
- IComponentContract component
45
- ) external override onlyComponentOwnerService returns (NftId nftId) {
46
- bytes32 typeRole = getRoleForType(component.getType());
47
- require(
48
- this.hasRole(typeRole, component.getInitialOwner()),
49
- "ERROR:CMP-004:TYPE_ROLE_MISSING"
50
- );
51
-
52
- nftId = this.getRegistry().register(address(component));
53
-
54
- _componentInfo[nftId] = ComponentInfo(nftId, CState.Active);
55
-
56
- // special case product -> persist product - pool assignment
57
- if (component.getType() == this.getRegistry().PRODUCT()) {
58
- IProductComponent product = IProductComponent(address(component));
59
- NftId poolNftId = product.getPoolNftId();
60
- require(poolNftId.gtz(), "ERROR:CMP-005:POOL_UNKNOWN");
61
- // add more validation (type, token, ...)
62
-
63
- _poolNftIdForProduct[nftId] = poolNftId;
64
-
65
- // add creation of productInfo
66
- } else if (component.getType() == this.getRegistry().POOL()) {
67
- IPoolModule poolModule = IPoolModule(address(this));
68
- poolModule.createPoolInfo(
69
- nftId,
70
- address(component), // set pool as its wallet
71
- address(0) // don't deal with token yet
72
- );
73
- }
74
-
75
- _nftIdByAddress[address(component)] = nftId;
76
- _nftIds.push(nftId);
77
-
78
- // add logging
79
- }
80
-
81
- function getPoolNftId(
82
- NftId productNftId
83
- ) external view override returns (NftId poolNftId) {
84
- poolNftId = _poolNftIdForProduct[productNftId];
85
- }
86
-
87
- function getComponentOwnerService()
88
- external
89
- view
90
- override
91
- returns (IComponentOwnerService)
92
- {
93
- return _componentOwnerService;
94
- }
95
-
96
- function setComponentInfo(
97
- ComponentInfo memory info
98
- ) external onlyComponentOwnerService returns (NftId nftId) {
99
- nftId = info.nftId;
100
- require(
101
- nftId.gtz() && _componentInfo[nftId].nftId.eq(nftId),
102
- "ERROR:CMP-006:COMPONENT_UNKNOWN"
103
- );
104
-
105
- _componentInfo[nftId] = info;
106
-
107
- // add logging
108
- }
109
-
110
- function getComponentInfo(
111
- NftId nftId
112
- ) external view override returns (ComponentInfo memory) {
113
- return _componentInfo[nftId];
114
- }
115
-
116
- function getComponentOwner(
117
- NftId nftId
118
- ) external view returns (address owner) {}
119
-
120
- function getComponentId(
121
- address componentAddress
122
- ) external view returns (NftId componentNftId) {
123
- return _nftIdByAddress[componentAddress];
124
- }
125
-
126
- function getComponentId(
127
- uint256 idx
128
- ) external view override returns (NftId componentNftId) {
129
- return _nftIds[idx];
130
- }
131
-
132
- function components()
133
- external
134
- view
135
- override
136
- returns (uint256 numberOfCompnents)
137
- {
138
- return _nftIds.length;
139
- }
140
-
141
- function getRoleForType(uint256 cType) public view returns (bytes32 role) {
142
- if (cType == this.getRegistry().PRODUCT()) {
143
- return this.PRODUCT_OWNER_ROLE();
144
- }
145
- if (cType == this.getRegistry().POOL()) {
146
- return this.POOL_OWNER_ROLE();
147
- }
148
- if (cType == this.getRegistry().ORACLE()) {
149
- return this.ORACLE_OWNER_ROLE();
150
- }
151
- }
152
- }
153
-
154
- // this is actually the component owner service
155
- contract ComponentOwnerService is
156
- RegistryLinked,
157
- IComponent,
158
- IComponentOwnerService
159
- {
160
- using NftIdLib for NftId;
161
-
162
- modifier onlyComponentOwner(IComponentContract component) {
163
- NftId nftId = _registry.getNftId(address(component));
164
- require(nftId.gtz(), "ERROR:COS-001:COMPONENT_UNKNOWN");
165
- require(
166
- msg.sender == _registry.getOwner(nftId),
167
- "ERROR:COS-002:NOT_OWNER"
168
- );
169
- _;
170
- }
171
-
172
- constructor(address registry) RegistryLinked(registry) {}
173
-
174
- function register(
175
- IComponentContract component
176
- ) external override returns (NftId nftId) {
177
- require(
178
- msg.sender == component.getInitialOwner(),
179
- "ERROR:COS-003:NOT_OWNER"
180
- );
181
-
182
- IInstance instance = component.getInstance();
183
- nftId = instance.registerComponent(component);
184
- }
185
-
186
- function lock(
187
- IComponentContract component
188
- ) external override onlyComponentOwner(component) {
189
- IInstance instance = component.getInstance();
190
- ComponentInfo memory info = instance.getComponentInfo(
191
- component.getNftId()
192
- );
193
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
194
- // TODO add state change validation
195
-
196
- info.state = CState.Locked;
197
- instance.setComponentInfo(info);
198
- }
199
-
200
- function unlock(
201
- IComponentContract component
202
- ) external override onlyComponentOwner(component) {
203
- IInstance instance = component.getInstance();
204
- ComponentInfo memory info = instance.getComponentInfo(
205
- component.getNftId()
206
- );
207
- require(info.nftId.gtz(), "ERROR_COMPONENT_UNKNOWN");
208
- // TODO state change validation
209
-
210
- info.state = CState.Active;
211
- instance.setComponentInfo(info);
212
- }
213
- }
@@ -1,73 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
-
8
- interface IComponent {
9
- // TODO decide if enum or uints with constants (as in IRegistry.PRODUCT())
10
- enum CState {
11
- Undefined,
12
- Active,
13
- Locked
14
- }
15
-
16
- // component dynamic info (static info kept in registry)
17
- struct ComponentInfo {
18
- NftId nftId;
19
- CState state;
20
- }
21
- }
22
-
23
- interface IInstanceLinked {
24
- // function setInstance(address instance) external;
25
- function getInstance() external view returns (IInstance instance);
26
- }
27
-
28
- interface IComponentContract is IRegisterable, IInstanceLinked, IComponent {}
29
-
30
- interface IComponentOwnerService is IRegistryLinked {
31
- function register(
32
- IComponentContract component
33
- ) external returns (NftId nftId);
34
-
35
- function lock(IComponentContract component) external;
36
-
37
- function unlock(IComponentContract component) external;
38
- }
39
-
40
- interface IComponentModule is IOwnable, IRegistryLinked, IComponent {
41
- function registerComponent(
42
- IComponentContract component
43
- ) external returns (NftId nftId);
44
-
45
- function setComponentInfo(
46
- ComponentInfo memory info
47
- ) external returns (NftId componentNftId);
48
-
49
- function getComponentInfo(
50
- NftId nftId
51
- ) external view returns (ComponentInfo memory info);
52
-
53
- function getComponentOwner(
54
- NftId nftId
55
- ) external view returns (address owner);
56
-
57
- function getComponentId(
58
- address componentAddress
59
- ) external view returns (NftId nftId);
60
-
61
- function getComponentId(uint256 idx) external view returns (NftId nftId);
62
-
63
- function getPoolNftId(
64
- NftId productNftId
65
- ) external view returns (NftId poolNftId);
66
-
67
- function components() external view returns (uint256 numberOfCompnents);
68
-
69
- function getComponentOwnerService()
70
- external
71
- view
72
- returns (IComponentOwnerService);
73
- }
@@ -1,51 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {IProductService} from "../product/IProductService.sol";
7
- import {NftId} from "../../types/NftId.sol";
8
-
9
- // TODO check if there is value to introuce IContract and let IPolicy derive from IContract
10
- interface IPolicy {
11
- enum PolicyState {
12
- Undefined,
13
- Applied,
14
- Rejected,
15
- Active,
16
- Closed
17
- }
18
-
19
- struct PolicyInfo {
20
- NftId nftId;
21
- PolicyState state; // applied, withdrawn, rejected, active, closed
22
- uint256 sumInsuredAmount;
23
- uint256 premiumAmount;
24
- uint256 lifetime; // activatedAt + lifetime >= expiredAt
25
- uint256 createdAt;
26
- uint256 activatedAt; // time of underwriting
27
- uint256 expiredAt; // no new claims
28
- uint256 closedAt; // no locked capital
29
- }
30
- }
31
-
32
- interface IPolicyModule is IOwnable, IRegistryLinked, IPolicy {
33
- function createApplication(
34
- IRegistry.RegistryInfo memory productInfo,
35
- address applicationOwner,
36
- uint256 sumInsuredAmount,
37
- uint256 premiumAmount,
38
- uint256 lifetime,
39
- NftId bundleNftId
40
- ) external returns (NftId nftId);
41
-
42
- function activate(NftId nftId) external;
43
-
44
- function getBundleNftForPolicy(
45
- NftId nftId
46
- ) external view returns (NftId bundleNft);
47
-
48
- function getPolicyInfo(
49
- NftId nftId
50
- ) external view returns (PolicyInfo memory info);
51
- }
@@ -1,91 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
6
-
7
- import {IProductService} from "../product/IProductService.sol";
8
- import {IPolicy, IPolicyModule} from "./IPolicy.sol";
9
- import {NftId, NftIdLib} from "../../types/NftId.sol";
10
-
11
- abstract contract PolicyModule is IRegistryLinked, IPolicyModule {
12
- using NftIdLib for NftId;
13
-
14
- mapping(NftId nftId => PolicyInfo info) private _policyInfo;
15
- mapping(NftId nftId => NftId bundleNftId) private _bundleForPolicy;
16
-
17
- IProductService private _productService;
18
-
19
- // TODO find a better place to avoid dupliation
20
- modifier onlyProductService2() {
21
- require(
22
- address(_productService) == msg.sender,
23
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
24
- );
25
- _;
26
- }
27
-
28
- constructor(address productService) {
29
- _productService = IProductService(productService);
30
- }
31
-
32
- function createApplication(
33
- IRegistry.RegistryInfo memory productInfo,
34
- address applicationOwner,
35
- uint256 sumInsuredAmount,
36
- uint256 premiumAmount,
37
- uint256 lifetime,
38
- NftId bundleNftId
39
- ) external override onlyProductService2 returns (NftId nftId) {
40
- // TODO add parameter validation
41
- if (bundleNftId.gtz()) {
42
- IRegistry.RegistryInfo memory bundleInfo = this
43
- .getRegistry()
44
- .getInfo(bundleNftId);
45
- // IRegistry.RegistryInfo memory poolInfo = this.getRegistry().getInfo(bundleInfo.parentNftId);
46
- }
47
-
48
- nftId = this.getRegistry().registerObjectForInstance(
49
- productInfo.nftId,
50
- this.getRegistry().POLICY(),
51
- applicationOwner
52
- );
53
-
54
- _policyInfo[nftId] = PolicyInfo(
55
- nftId,
56
- PolicyState.Applied,
57
- sumInsuredAmount,
58
- premiumAmount,
59
- lifetime,
60
- block.timestamp,
61
- 0, // activatedAt
62
- 0, // expiredAt
63
- 0 // closedAt
64
- );
65
-
66
- _bundleForPolicy[nftId] = bundleNftId;
67
-
68
- // add logging
69
- }
70
-
71
- function activate(NftId nftId) external override onlyProductService2 {
72
- PolicyInfo storage info = _policyInfo[nftId];
73
- info.activatedAt = block.timestamp;
74
- info.expiredAt = block.timestamp + info.lifetime;
75
- info.state = PolicyState.Active;
76
-
77
- // add logging
78
- }
79
-
80
- function getBundleNftForPolicy(
81
- NftId nftId
82
- ) external view returns (NftId bundleNft) {
83
- return _bundleForPolicy[nftId];
84
- }
85
-
86
- function getPolicyInfo(
87
- NftId nftId
88
- ) external view returns (PolicyInfo memory info) {
89
- return _policyInfo[nftId];
90
- }
91
- }
@@ -1,29 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {NftId} from "../../types/NftId.sol";
6
-
7
- interface IPool {
8
- struct PoolInfo {
9
- NftId nftId;
10
- address wallet;
11
- address token;
12
- uint256 capital;
13
- uint256 lockedCapital;
14
- }
15
- }
16
-
17
- interface IPoolModule is IOwnable, IRegistryLinked, IPool {
18
- function underwrite(NftId poolNftId, NftId policyNftId) external;
19
-
20
- function createPoolInfo(
21
- NftId nftId,
22
- address wallet,
23
- address token
24
- ) external;
25
-
26
- function getPoolInfo(
27
- NftId nftId
28
- ) external view returns (PoolInfo memory info);
29
- }
@@ -1,73 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistry, IRegistryLinked} from "../../registry/IRegistry.sol";
5
- import {IProductService} from "../product/IProductService.sol";
6
- import {IPolicy, IPolicyModule} from "../policy/IPolicy.sol";
7
- import {IPoolModule} from "./IPoolModule.sol";
8
- import {NftId, NftIdLib} from "../../types/NftId.sol";
9
-
10
- abstract contract PoolModule is IPoolModule {
11
- using NftIdLib for NftId;
12
-
13
- uint256 public constant INITIAL_CAPITAL = 10000 * 10 ** 6;
14
-
15
- mapping(NftId nftId => PoolInfo info) private _poolInfo;
16
-
17
- IProductService private _productService;
18
-
19
- modifier onlyProductService() {
20
- require(
21
- address(_productService) == msg.sender,
22
- "ERROR:POL-001:NOT_PRODUCT_SERVICE"
23
- );
24
- _;
25
- }
26
-
27
- constructor(address productService) {
28
- _productService = IProductService(productService);
29
- }
30
-
31
- function createPoolInfo(
32
- NftId nftId,
33
- address wallet,
34
- address token
35
- ) public override {
36
- require(_poolInfo[nftId].nftId.eqz(), "ERROR:PL-001:ALREADY_CREATED");
37
-
38
- _poolInfo[nftId] = PoolInfo(
39
- nftId,
40
- wallet,
41
- token,
42
- INITIAL_CAPITAL,
43
- 0 // locked capital
44
- );
45
- }
46
-
47
- function underwrite(
48
- NftId poolNftId,
49
- NftId policyNftId
50
- ) external override onlyProductService {
51
- PoolInfo storage poolInfo = _poolInfo[poolNftId];
52
- require(poolInfo.nftId == poolNftId, "ERROR:PL-002:POOL_UNKNOWN");
53
-
54
- IPolicyModule policyModule = IPolicyModule(address(this));
55
- IPolicy.PolicyInfo memory policyInfo = policyModule.getPolicyInfo(
56
- policyNftId
57
- );
58
-
59
- require(
60
- poolInfo.capital - poolInfo.lockedCapital >=
61
- policyInfo.sumInsuredAmount,
62
- "ERROR:PL-003:CAPACITY_TOO_LOW"
63
- );
64
-
65
- poolInfo.lockedCapital += policyInfo.sumInsuredAmount;
66
- }
67
-
68
- function getPoolInfo(
69
- NftId nftId
70
- ) external view override returns (PoolInfo memory info) {
71
- info = _poolInfo[nftId];
72
- }
73
- }
@@ -1,36 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- import {IOwnable, IRegistryLinked, IRegisterable} from "../../registry/IRegistry.sol";
5
- import {IInstance} from "../IInstance.sol";
6
- import {NftId} from "../../types/NftId.sol";
7
-
8
- // TODO or name this IProtectionService to have Product be something more generic (loan, savings account, ...)
9
- interface IProductService is IRegistryLinked {
10
- function createApplication(
11
- address applicationOwner,
12
- uint256 sumInsuredAmount,
13
- uint256 premiumAmount,
14
- uint256 lifetime,
15
- NftId bundleNftId
16
- ) external returns (NftId nftId);
17
-
18
- // function revoke(unit256 nftId) external;
19
-
20
- function underwrite(NftId nftId) external;
21
-
22
- // function decline(uint256 nftId) external;
23
- // function expire(uint256 nftId) external;
24
- function close(NftId nftId) external;
25
-
26
- // function collectPremium(uint256 nftId, uint256 premiumAmount) external;
27
-
28
- // function createClaim(uint256 nftId, uint256 claimAmount) external;
29
- // function confirmClaim(uint256 nftId, uint256 claimId, uint256 claimAmount) external;
30
- // function declineClaim(uint256 nftId, uint256 claimId) external;
31
- // function closeClaim(uint256 nftId, uint256 claimId) external;
32
- }
33
-
34
- interface IProductModule is IOwnable, IRegistryLinked {
35
- function getProductService() external view returns (IProductService);
36
- }
@@ -1,112 +0,0 @@
1
- // SPDX-License-Identifier: Apache-2.0
2
- pragma solidity ^0.8.19;
3
-
4
- // import {IProduct} from "../../components/IProduct.sol";
5
- // import {IOwnable, IRegistryLinked, IRegisterable, IRegistry} from "../../registry/IRegistry.sol";
6
- // import {IInstance} from "../IInstance.sol";
7
- import {IRegistry} from "../../registry/IRegistry.sol";
8
- import {IPolicyModule} from "../policy/IPolicy.sol";
9
- import {RegistryLinked} from "../../registry/Registry.sol";
10
- import {IProductService, IProductModule} from "./IProductService.sol";
11
- import {IComponentModule} from "../../instance/component/IComponent.sol";
12
- import {IPoolModule} from "../../instance/pool/IPoolModule.sol";
13
- import {NftId, NftIdLib} from "../../types/NftId.sol";
14
-
15
- // TODO or name this ProtectionService to have Product be something more generic (loan, savings account, ...)
16
- contract ProductService is RegistryLinked, IProductService {
17
- using NftIdLib for NftId;
18
-
19
- constructor(address registry) RegistryLinked(registry) {}
20
-
21
- function createApplication(
22
- address applicationOwner,
23
- uint256 sumInsuredAmount,
24
- uint256 premiumAmount,
25
- uint256 lifetime,
26
- NftId bundleNftId
27
- ) external override returns (NftId nftId) {
28
- // same as only registered product
29
- NftId productNftId = _registry.getNftId(msg.sender);
30
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
31
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
32
- productNftId
33
- );
34
- require(
35
- productInfo.objectType == _registry.PRODUCT(),
36
- "ERROR_NOT_PRODUCT"
37
- );
38
-
39
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
40
- productInfo.parentNftId
41
- );
42
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
43
- require(
44
- instanceInfo.objectType == _registry.INSTANCE(),
45
- "ERROR_NOT_INSTANCE"
46
- );
47
-
48
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
49
- nftId = policyModule.createApplication(
50
- productInfo,
51
- applicationOwner,
52
- sumInsuredAmount,
53
- premiumAmount,
54
- lifetime,
55
- bundleNftId
56
- );
57
-
58
- // add logging
59
- }
60
-
61
- function underwrite(NftId nftId) external override {
62
- // same as only registered product
63
- NftId productNftId = _registry.getNftId(msg.sender);
64
- require(productNftId.gtz(), "ERROR_PRODUCT_UNKNOWN");
65
- IRegistry.RegistryInfo memory productInfo = _registry.getInfo(
66
- productNftId
67
- );
68
- require(
69
- productInfo.objectType == _registry.PRODUCT(),
70
- "ERROR_NOT_PRODUCT"
71
- );
72
-
73
- IRegistry.RegistryInfo memory instanceInfo = _registry.getInfo(
74
- productInfo.parentNftId
75
- );
76
- require(instanceInfo.nftId.gtz(), "ERROR_INSTANCE_UNKNOWN");
77
- require(
78
- instanceInfo.objectType == _registry.INSTANCE(),
79
- "ERROR_NOT_INSTANCE"
80
- );
81
-
82
- // get responsible pool
83
- IComponentModule componentModule = IComponentModule(
84
- instanceInfo.objectAddress
85
- );
86
- NftId poolNftId = componentModule.getPoolNftId(productNftId);
87
-
88
- // lock capital (and update pool accounting)
89
- IPoolModule poolModule = IPoolModule(instanceInfo.objectAddress);
90
- poolModule.underwrite(poolNftId, nftId);
91
-
92
- // activate policy
93
- IPolicyModule policyModule = IPolicyModule(instanceInfo.objectAddress);
94
- policyModule.activate(nftId);
95
-
96
- // add logging
97
- }
98
-
99
- function close(NftId nftId) external override {}
100
- }
101
-
102
- abstract contract ProductModule is IProductModule {
103
- IProductService private _productService;
104
-
105
- constructor(address productService) {
106
- _productService = IProductService(productService);
107
- }
108
-
109
- function getProductService() external view returns (IProductService) {
110
- return _productService;
111
- }
112
- }