@etherisc/gif-next 0.0.2-868e698-559 → 0.0.2-86dae40-160

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 (457) hide show
  1. package/README.md +49 -4
  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/authorization/IAccess.sol/IAccess.json +10 -0
  10. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  11. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +95 -252
  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/{registry → authorization}/IServiceAuthorization.sol/IServiceAuthorization.json +29 -10
  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 +1500 -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 +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -292
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +214 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +71 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +91 -149
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +103 -16
  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 +6 -19
  40. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  41. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +32 -44
  42. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/Instance.sol/Instance.json +35 -96
  44. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  45. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1208 -290
  46. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  47. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +601 -0
  48. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +132 -140
  50. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +65 -125
  52. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -59
  54. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +90 -219
  56. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  58. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  59. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  60. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  61. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  63. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  64. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  65. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  66. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  68. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  71. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  72. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  73. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  74. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +1137 -0
  75. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  76. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +418 -0
  77. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  78. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  79. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  80. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +43 -26
  81. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  82. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  83. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +40 -157
  84. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  85. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  86. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  88. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  89. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1406 -0
  90. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  91. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +410 -0
  92. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  93. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -62
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +107 -43
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -278
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +158 -54
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -417
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +226 -90
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +52 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +33 -44
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +32 -40
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1254 -0
  114. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +410 -0
  116. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +88 -72
  118. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  119. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  120. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  122. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  124. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
  126. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  127. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  128. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -68
  129. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +260 -167
  132. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +59 -43
  134. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  135. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  136. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  137. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  138. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  139. package/artifacts/contracts/product/Product.sol/Product.json +32 -217
  140. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  141. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  142. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  143. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  144. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  145. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  146. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  148. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  149. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  150. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  151. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  152. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  153. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  154. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  155. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  156. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  157. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  158. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  159. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  160. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  161. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  162. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  163. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  164. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +43 -16
  165. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  166. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  167. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  168. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  169. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  170. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +327 -86
  171. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +105 -61
  173. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  176. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -26
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +11 -5
  182. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  183. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +0 -5
  184. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  186. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  187. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  188. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  189. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  190. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  191. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  192. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  193. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -117
  194. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  195. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +15 -89
  196. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  197. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +4 -65
  198. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  199. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  200. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  202. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  203. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  204. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  205. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  206. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  207. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  208. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  209. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  210. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +240 -16
  211. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  212. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  213. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  215. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  216. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  217. package/artifacts/contracts/staking/Staking.sol/Staking.json +127 -119
  218. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  221. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +82 -46
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  223. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  225. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  227. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  229. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +146 -165
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  231. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  233. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  241. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  245. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  249. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  264. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  266. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  268. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  270. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  272. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  274. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  276. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  278. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  280. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  282. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  283. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  284. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  285. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  286. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  287. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  288. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  289. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  290. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  291. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  292. package/contracts/authorization/Authorization.sol +218 -0
  293. package/contracts/authorization/IAccess.sol +48 -0
  294. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  295. package/contracts/authorization/IAuthorization.sol +54 -0
  296. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  297. package/contracts/{registry → authorization}/IServiceAuthorization.sol +8 -5
  298. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  299. package/contracts/{registry → authorization}/ServiceAuthorization.sol +21 -17
  300. package/contracts/distribution/BasicDistribution.sol +138 -0
  301. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  302. package/contracts/distribution/Distribution.sol +144 -110
  303. package/contracts/distribution/DistributionService.sol +57 -32
  304. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  305. package/contracts/distribution/IDistributionComponent.sol +25 -39
  306. package/contracts/distribution/IDistributionService.sol +15 -1
  307. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  308. package/contracts/instance/IInstance.sol +8 -9
  309. package/contracts/instance/IInstanceService.sol +13 -18
  310. package/contracts/instance/Instance.sol +61 -70
  311. package/contracts/instance/InstanceAdmin.sol +202 -267
  312. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  313. package/contracts/instance/InstanceReader.sol +32 -16
  314. package/contracts/instance/InstanceService.sol +104 -76
  315. package/contracts/instance/InstanceServiceManager.sol +2 -6
  316. package/contracts/instance/InstanceStore.sol +13 -5
  317. package/contracts/instance/base/ObjectLifecycle.sol +105 -0
  318. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  319. package/contracts/instance/module/IBundle.sol +1 -1
  320. package/contracts/instance/module/IComponents.sol +1 -7
  321. package/contracts/instance/module/IDistribution.sol +0 -1
  322. package/contracts/instance/module/IPolicy.sol +1 -1
  323. package/contracts/mock/Dip.sol +1 -1
  324. package/contracts/oracle/BasicOracle.sol +48 -0
  325. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  326. package/contracts/oracle/IOracle.sol +16 -0
  327. package/contracts/oracle/IOracleComponent.sol +2 -1
  328. package/contracts/oracle/Oracle.sol +72 -51
  329. package/contracts/oracle/OracleServiceManager.sol +2 -5
  330. package/contracts/pool/BasicPool.sol +166 -0
  331. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  332. package/contracts/pool/BundleService.sol +181 -41
  333. package/contracts/pool/BundleServiceManager.sol +2 -5
  334. package/contracts/pool/IBundleService.sol +32 -5
  335. package/contracts/pool/IPoolComponent.sol +6 -60
  336. package/contracts/pool/IPoolService.sol +14 -17
  337. package/contracts/pool/Pool.sol +166 -137
  338. package/contracts/pool/PoolService.sol +152 -86
  339. package/contracts/pool/PoolServiceManager.sol +2 -5
  340. package/contracts/product/ApplicationService.sol +49 -53
  341. package/contracts/product/ApplicationServiceManager.sol +2 -2
  342. package/contracts/product/BasicProduct.sol +52 -0
  343. package/contracts/product/BasicProductAuthorization.sol +43 -0
  344. package/contracts/product/ClaimService.sol +13 -39
  345. package/contracts/product/ClaimServiceManager.sol +2 -2
  346. package/contracts/product/IApplicationService.sol +1 -0
  347. package/contracts/product/IClaimService.sol +1 -0
  348. package/contracts/product/IPolicyService.sol +23 -17
  349. package/contracts/product/IProductComponent.sol +7 -9
  350. package/contracts/product/IProductService.sol +1 -0
  351. package/contracts/product/PolicyService.sol +242 -131
  352. package/contracts/product/PolicyServiceManager.sol +2 -5
  353. package/contracts/product/PricingService.sol +5 -1
  354. package/contracts/product/PricingServiceManager.sol +2 -5
  355. package/contracts/product/Product.sol +128 -92
  356. package/contracts/product/ProductService.sol +7 -32
  357. package/contracts/product/ProductServiceManager.sol +2 -5
  358. package/contracts/registry/IRegistry.sol +26 -16
  359. package/contracts/registry/IRegistryService.sol +6 -6
  360. package/contracts/registry/Registry.sol +81 -87
  361. package/contracts/registry/RegistryAdmin.sol +118 -86
  362. package/contracts/registry/RegistryService.sol +4 -18
  363. package/contracts/registry/RegistryServiceManager.sol +2 -2
  364. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  365. package/contracts/registry/ReleaseRegistry.sol +485 -0
  366. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  367. package/contracts/registry/TokenRegistry.sol +2 -2
  368. package/contracts/shared/Component.sol +24 -37
  369. package/contracts/shared/ComponentService.sol +92 -70
  370. package/contracts/shared/ComponentServiceManager.sol +2 -2
  371. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  372. package/contracts/shared/IComponent.sol +4 -4
  373. package/contracts/shared/IComponentService.sol +15 -9
  374. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  375. package/contracts/shared/IKeyValueStore.sol +1 -0
  376. package/contracts/shared/ILifecycle.sol +1 -2
  377. package/contracts/shared/IService.sol +1 -1
  378. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  379. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  380. package/contracts/shared/KeyValueStore.sol +6 -2
  381. package/contracts/shared/Lifecycle.sol +16 -69
  382. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  383. package/contracts/shared/NftOwnable.sol +2 -2
  384. package/contracts/shared/PolicyHolder.sol +2 -5
  385. package/contracts/shared/Service.sol +3 -4
  386. package/contracts/shared/TokenHandler.sol +91 -17
  387. package/contracts/staking/IStaking.sol +1 -2
  388. package/contracts/staking/IStakingService.sol +12 -5
  389. package/contracts/staking/StakeManagerLib.sol +0 -25
  390. package/contracts/staking/Staking.sol +19 -36
  391. package/contracts/staking/StakingLifecycle.sol +23 -0
  392. package/contracts/staking/StakingManager.sol +2 -6
  393. package/contracts/staking/StakingReader.sol +12 -16
  394. package/contracts/staking/StakingService.sol +8 -12
  395. package/contracts/staking/StakingServiceManager.sol +2 -2
  396. package/contracts/staking/StakingStore.sol +15 -23
  397. package/contracts/type/Amount.sol +12 -5
  398. package/contracts/type/Blocknumber.sol +7 -1
  399. package/contracts/type/ObjectType.sol +37 -7
  400. package/contracts/type/Referral.sol +1 -0
  401. package/contracts/type/RoleId.sol +55 -82
  402. package/contracts/type/Seconds.sol +13 -1
  403. package/contracts/type/Timestamp.sol +11 -1
  404. package/contracts/type/UFixed.sol +34 -9
  405. package/contracts/type/Version.sol +3 -1
  406. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  407. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  408. package/package.json +6 -3
  409. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  410. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  411. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  412. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  413. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  414. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  415. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  416. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  417. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  418. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  419. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  420. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  421. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  422. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  423. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  424. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  425. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  426. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  427. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  428. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  429. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  430. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  431. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  432. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  433. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  434. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  435. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  436. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  437. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  438. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  439. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  440. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  441. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  442. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  443. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  444. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  445. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  446. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  447. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  448. package/contracts/registry/ReleaseManager.sol +0 -527
  449. package/contracts/shared/AccessManagerCustom.sol +0 -741
  450. package/contracts/shared/AccessManagerExtended.sol +0 -481
  451. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  452. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  453. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  454. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  455. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  456. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  457. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -9,6 +9,7 @@ import {InstanceLinkedComponent} from "../shared/InstanceLinkedComponent.sol";
9
9
  import {Fee, FeeLib} from "../type/Fee.sol";
10
10
  import {IRisk} from "../instance/module/IRisk.sol";
11
11
  import {IApplicationService} from "./IApplicationService.sol";
12
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
13
  import {IComponentService} from "../shared/IComponentService.sol";
13
14
  import {IPolicyService} from "./IPolicyService.sol";
14
15
  import {IProductService} from "./IProductService.sol";
@@ -52,9 +53,92 @@ abstract contract Product is
52
53
  Distribution _distribution;
53
54
  }
54
55
 
55
- function initializeProduct(
56
+
57
+ function calculatePremium(
58
+ Amount sumInsuredAmount,
59
+ RiskId riskId,
60
+ Seconds lifetime,
61
+ bytes memory applicationData,
62
+ NftId bundleNftId,
63
+ ReferralId referralId
64
+ )
65
+ public
66
+ view
67
+ override
68
+ returns (Amount premiumAmount)
69
+ {
70
+ IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
71
+ getNftId(),
72
+ riskId,
73
+ sumInsuredAmount,
74
+ lifetime,
75
+ applicationData,
76
+ bundleNftId,
77
+ referralId
78
+ );
79
+
80
+ return AmountLib.toAmount(premium.premiumAmount);
81
+ }
82
+
83
+ function calculateNetPremium(
84
+ Amount sumInsuredAmount,
85
+ RiskId riskId,
86
+ Seconds lifetime,
87
+ bytes memory applicationData
88
+ )
89
+ external
90
+ view
91
+ virtual override
92
+ returns (Amount netPremiumAmount)
93
+ {
94
+ // default 10% of sum insured
95
+ return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
96
+ }
97
+
98
+
99
+ function register()
100
+ external
101
+ virtual
102
+ onlyOwner()
103
+ {
104
+ _getProductStorage()._componentService.registerProduct();
105
+ _approveTokenHandler(type(uint256).max);
106
+ }
107
+
108
+
109
+ function getInitialProductInfo()
110
+ public
111
+ virtual
112
+ view
113
+ returns (IComponents.ProductInfo memory poolInfo)
114
+ {
115
+ ProductStorage storage $ = _getProductStorage();
116
+
117
+ return IComponents.ProductInfo({
118
+ distributionNftId: $._distributionNftId,
119
+ poolNftId: $._poolNftId,
120
+ productFee: FeeLib.zero(),
121
+ processingFee: FeeLib.zero(),
122
+ distributionFee: FeeLib.zero(),
123
+ minDistributionOwnerFee: FeeLib.zero(),
124
+ poolFee: FeeLib.zero(),
125
+ stakingFee: FeeLib.zero(),
126
+ performanceFee: FeeLib.zero()
127
+ });
128
+ }
129
+
130
+ function getPoolNftId() external view override returns (NftId poolNftId) {
131
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
132
+ }
133
+
134
+ function getDistributionNftId() external view override returns (NftId distributionNftId) {
135
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
136
+ }
137
+
138
+ function _initializeProduct(
56
139
  address registry,
57
140
  NftId instanceNftId,
141
+ IAuthorization authorization,
58
142
  address initialOwner,
59
143
  string memory name,
60
144
  address token,
@@ -64,11 +148,21 @@ abstract contract Product is
64
148
  bytes memory registryData, // writeonly data that will saved in the object info record of the registry
65
149
  bytes memory componentData // writeonly data that will saved in the object info record of the registry
66
150
  )
67
- public
151
+ internal
68
152
  virtual
69
153
  onlyInitializing()
70
154
  {
71
- initializeInstanceLinkedComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, registryData, componentData);
155
+ _initializeInstanceLinkedComponent(
156
+ registry,
157
+ instanceNftId,
158
+ name,
159
+ token,
160
+ PRODUCT(),
161
+ authorization,
162
+ isInterceptor,
163
+ initialOwner,
164
+ registryData,
165
+ componentData);
72
166
 
73
167
  ProductStorage storage $ = _getProductStorage();
74
168
  // TODO add validation
@@ -88,27 +182,17 @@ abstract contract Product is
88
182
  }
89
183
 
90
184
 
91
- function register()
92
- external
93
- virtual
94
- onlyOwner()
95
- {
96
- _getProductStorage()._componentService.registerProduct();
97
- }
98
-
99
-
100
- function setFees(
185
+ function _setFees(
101
186
  Fee memory productFee,
102
187
  Fee memory processingFee
103
188
  )
104
- external
105
- onlyOwner
106
- restricted()
107
- override
189
+ internal
190
+ virtual
108
191
  {
109
192
  _getProductStorage()._componentService.setProductFees(productFee, processingFee);
110
193
  }
111
194
 
195
+
112
196
  function _createRisk(
113
197
  RiskId id,
114
198
  bytes memory data
@@ -139,14 +223,17 @@ abstract contract Product is
139
223
  );
140
224
  }
141
225
 
226
+
142
227
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
143
228
  return getInstance().getInstanceReader().getRiskInfo(id);
144
229
  }
145
230
 
231
+
146
232
  function _createApplication(
147
233
  address applicationOwner,
148
234
  RiskId riskId,
149
235
  Amount sumInsuredAmount,
236
+ Amount premiumAmount,
150
237
  Seconds lifetime,
151
238
  NftId bundleNftId,
152
239
  ReferralId referralId,
@@ -159,6 +246,7 @@ abstract contract Product is
159
246
  applicationOwner,
160
247
  riskId,
161
248
  sumInsuredAmount,
249
+ premiumAmount,
162
250
  lifetime,
163
251
  bundleNftId,
164
252
  referralId,
@@ -166,19 +254,38 @@ abstract contract Product is
166
254
  );
167
255
  }
168
256
 
169
- function _collateralize(
170
- NftId policyNftId,
257
+ function _createPolicy(
258
+ NftId applicationNftId,
171
259
  bool requirePremiumPayment,
172
260
  Timestamp activateAt
173
261
  )
174
262
  internal
175
263
  {
176
- _getProductStorage()._policyService.collateralize(
177
- policyNftId,
264
+ _getProductStorage()._policyService.createPolicy(
265
+ applicationNftId,
178
266
  requirePremiumPayment,
179
267
  activateAt);
180
268
  }
181
269
 
270
+ function _decline(
271
+ NftId policyNftId
272
+ )
273
+ internal
274
+ {
275
+ _getProductStorage()._policyService.decline(
276
+ policyNftId);
277
+ }
278
+
279
+ function _expire(
280
+ NftId policyNftId,
281
+ Timestamp expireAt
282
+ )
283
+ internal
284
+ returns (Timestamp expiredAt)
285
+ {
286
+ expiredAt = _getProductStorage()._policyService.expire(policyNftId, expireAt);
287
+ }
288
+
182
289
  function _collectPremium(
183
290
  NftId policyNftId,
184
291
  Timestamp activateAt
@@ -290,77 +397,6 @@ abstract contract Product is
290
397
  payoutId);
291
398
  }
292
399
 
293
- function calculatePremium(
294
- Amount sumInsuredAmount,
295
- RiskId riskId,
296
- Seconds lifetime,
297
- bytes memory applicationData,
298
- NftId bundleNftId,
299
- ReferralId referralId
300
- )
301
- external
302
- view
303
- override
304
- returns (Amount premiumAmount)
305
- {
306
- IPolicy.Premium memory premium = _getProductStorage()._pricingService.calculatePremium(
307
- getNftId(),
308
- riskId,
309
- sumInsuredAmount,
310
- lifetime,
311
- applicationData,
312
- bundleNftId,
313
- referralId
314
- );
315
-
316
- return AmountLib.toAmount(premium.premiumAmount);
317
- }
318
-
319
- function calculateNetPremium(
320
- Amount sumInsuredAmount,
321
- RiskId riskId,
322
- Seconds lifetime,
323
- bytes memory applicationData
324
- )
325
- external
326
- view
327
- virtual override
328
- returns (Amount netPremiumAmount)
329
- {
330
- // default 10% of sum insured
331
- return AmountLib.toAmount(sumInsuredAmount.toInt() / 10);
332
- }
333
-
334
-
335
- function getInitialProductInfo()
336
- public
337
- virtual
338
- view
339
- returns (IComponents.ProductInfo memory poolInfo)
340
- {
341
- ProductStorage storage $ = _getProductStorage();
342
-
343
- return IComponents.ProductInfo({
344
- distributionNftId: $._distributionNftId,
345
- poolNftId: $._poolNftId,
346
- productFee: FeeLib.zero(),
347
- processingFee: FeeLib.zero(),
348
- distributionFee: FeeLib.zero(),
349
- minDistributionOwnerFee: FeeLib.zero(),
350
- poolFee: FeeLib.zero(),
351
- stakingFee: FeeLib.zero(),
352
- performanceFee: FeeLib.zero()
353
- });
354
- }
355
-
356
- function getPoolNftId() external view override returns (NftId poolNftId) {
357
- return getRegistry().getNftId(address(_getProductStorage()._pool));
358
- }
359
-
360
- function getDistributionNftId() external view override returns (NftId distributionNftId) {
361
- return getRegistry().getNftId(address(_getProductStorage()._distribution));
362
- }
363
-
364
400
  function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
365
401
  return RiskIdLib.toRiskId(riskName);
366
402
  }
@@ -1,45 +1,20 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IRegistry} from "../registry/IRegistry.sol";
5
- import {IProductComponent} from "./IProductComponent.sol";
6
- import {Product} from "./Product.sol";
7
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
8
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
9
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
10
4
  import {IInstance} from "../instance/IInstance.sol";
11
- import {IPolicy} from "../instance/module/IPolicy.sol";
12
- import {IRisk} from "../instance/module/IRisk.sol";
13
- import {IBundle} from "../instance/module/IBundle.sol";
5
+ import {IInstanceService} from "../instance/IInstanceService.sol";
6
+ import {IPoolService} from "../pool/PoolService.sol";
14
7
  import {IProductService} from "./IProductService.sol";
15
- import {IComponents} from "../instance/module/IComponents.sol";
16
-
17
- import {TokenHandler} from "../shared/TokenHandler.sol";
18
-
19
- import {IVersionable} from "../shared/IVersionable.sol";
20
- import {Versionable} from "../shared/Versionable.sol";
8
+ import {IRegistryService} from "../registry/IRegistryService.sol";
9
+ import {IRisk} from "../instance/module/IRisk.sol";
21
10
 
22
- import {Timestamp, zeroTimestamp} from "../type/Timestamp.sol";
23
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
24
- import {Blocknumber, blockNumber} from "../type/Blocknumber.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
25
12
  import {ObjectType, INSTANCE, PRODUCT, POOL, POLICY, REGISTRY} from "../type/ObjectType.sol";
26
- import {APPLIED, ACTIVE, KEEP_STATE} from "../type/StateId.sol";
27
- import {NftId, NftIdLib} from "../type/NftId.sol";
28
- import {Fee, FeeLib} from "../type/Fee.sol";
29
- import {ReferralId} from "../type/Referral.sol";
13
+ import {KEEP_STATE} from "../type/StateId.sol";
14
+ import {NftId} from "../type/NftId.sol";
30
15
  import {RiskId} from "../type/RiskId.sol";
31
16
  import {StateId} from "../type/StateId.sol";
32
- import {Version, VersionLib} from "../type/Version.sol";
33
- import {RoleId, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
34
-
35
- import {IService} from "../shared/IService.sol";
36
- import {Service} from "../shared/Service.sol";
37
17
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
38
- import {IInstanceService} from "../instance/IInstanceService.sol";
39
- import {IProductService} from "./IProductService.sol";
40
- import {IRegistryService} from "../registry/IRegistryService.sol";
41
- import {InstanceReader} from "../instance/InstanceReader.sol";
42
- import {IPoolService} from "../pool/PoolService.sol";
43
18
 
44
19
  contract ProductService is
45
20
  ComponentVerifyingService,
@@ -1,12 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "../shared/IVersionable.sol";
5
- import {ProxyManager} from "../shared/ProxyManager.sol";
4
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
5
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
6
6
  import {ProductService} from "./ProductService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {VersionLib} from "../type/Version.sol";
10
7
 
11
8
  contract ProductServiceManager is ProxyManager {
12
9
 
@@ -7,21 +7,29 @@ import {NftId} from "../type/NftId.sol";
7
7
  import {ObjectType} from "../type/ObjectType.sol";
8
8
  import {VersionPart} from "../type/Version.sol";
9
9
  import {Timestamp} from "../type/Timestamp.sol";
10
- import {RoleId} from "../type/RoleId.sol";
11
10
 
11
+ /// @title Chain Registry interface.
12
+ /// A chain registry holds all protocol relevant objects with basic metadata.
13
+ /// Registered objects include services, instances, products, pools, policies, bundles, stakes and more.
14
+ /// Registered objects are represented by NFTs.
12
15
  interface IRegistry is IERC165 {
13
16
 
14
17
  event LogRegistration(NftId nftId, NftId parentNftId, ObjectType objectType, bool isInterceptor, address objectAddress, address initialOwner);
15
18
  event LogServiceRegistration(VersionPart majorVersion, ObjectType domain);
16
19
 
20
+ // register()
21
+ error ErrorRegistryCallerNotRegistryService();
22
+ error ErrorRegistryService(address service);
23
+
17
24
  // registerService()
18
- error ErrorRegistryCallerNotReleaseManager();
25
+ error ErrorRegistryCallerNotReleaseRegistry();
26
+ error ErrorRegistryServiceAddressZero();
27
+ error ErrorRegistryServiceVersionZero();
28
+ error ErrorRegistryNotService(address service, ObjectType objectType);
29
+ error ErrorRegistryServiceParentNotRegistry(NftId parentNftId);
19
30
  error ErrorRegistryDomainZero(address service);
20
31
  error ErrorRegistryDomainAlreadyRegistered(address service, VersionPart version, ObjectType domain);
21
32
 
22
- // register()
23
- error ErrorRegistryCallerNotRegistryService();
24
-
25
33
  // registerWithCustomTypes()
26
34
  error ErrorRegistryCoreTypeRegistration();
27
35
 
@@ -40,30 +48,34 @@ interface IRegistry is IERC165 {
40
48
  bytes data;
41
49
  }
42
50
 
43
-
44
51
  struct ReleaseInfo {
45
52
  VersionPart version;
46
53
  bytes32 salt;
47
54
  address[] addresses;
48
55
  string[] names;
49
- RoleId[][] serviceRoles;
50
- string[][] serviceRoleNames;
51
- RoleId[][] functionRoles;
52
- string[][] functionRoleNames;
53
- bytes4[][][] selectors;
54
56
  ObjectType[] domains;
55
57
  Timestamp activatedAt;
56
58
  Timestamp disabledAt;
57
59
  }
58
60
 
61
+ /// @dev Register an object with a known core type.
62
+ /// The function returns a newly minted object NFT ID.
63
+ /// May not be used to register services.
64
+ function register(ObjectInfo memory info) external returns (NftId nftId);
65
+
66
+ /// @dev Register a service with using the provided domain and version.
67
+ /// The function returns a newly minted service NFT ID.
68
+ /// May only be used to register services.
59
69
  function registerService(
60
70
  ObjectInfo memory serviceInfo,
61
71
  VersionPart serviceVersion,
62
72
  ObjectType serviceDomain
63
73
  ) external returns(NftId nftId);
64
74
 
65
- function register(ObjectInfo memory info) external returns (NftId nftId);
66
-
75
+ /// @dev Register an object with a custom type.
76
+ /// The function returns a newly minted object NFT ID.
77
+ /// This function is reserved for GIF releases > 3.
78
+ /// May not be used to register known core types.
67
79
  function registerWithCustomType(ObjectInfo memory info) external returns (NftId nftId);
68
80
 
69
81
  function getInitialVersion() external view returns (VersionPart);
@@ -110,9 +122,7 @@ interface IRegistry is IERC165 {
110
122
  // TODO refactor the address getters below to contract getters
111
123
  function getChainNftAddress() external view returns (address);
112
124
 
113
- function getReleaseManagerAddress() external view returns (address);
114
-
115
- function getReleaseAccessManagerAddress(VersionPart version) external view returns (address);
125
+ function getReleaseRegistryAddress() external view returns (address);
116
126
 
117
127
  function getStakingAddress() external view returns (address);
118
128
 
@@ -50,14 +50,14 @@ interface IRegistryService is
50
50
  function registerComponent(IComponent component, ObjectType objectType, address owner)
51
51
  external returns(IRegistry.ObjectInfo memory info);
52
52
 
53
- function registerProduct(IComponent product, address owner)
54
- external returns(IRegistry.ObjectInfo memory info);
53
+ // function registerProduct(IComponent product, address owner)
54
+ // external returns(IRegistry.ObjectInfo memory info);
55
55
 
56
- function registerPool(IComponent pool, address owner)
57
- external returns(IRegistry.ObjectInfo memory info);
56
+ // function registerPool(IComponent pool, address owner)
57
+ // external returns(IRegistry.ObjectInfo memory info);
58
58
 
59
- function registerDistribution(IComponent distribution, address owner)
60
- external returns(IRegistry.ObjectInfo memory info);
59
+ // function registerDistribution(IComponent distribution, address owner)
60
+ // external returns(IRegistry.ObjectInfo memory info);
61
61
 
62
62
  function registerDistributor(IRegistry.ObjectInfo memory info) external returns(NftId nftId);
63
63