@etherisc/gif-next 0.0.2-edd8f00-238 → 0.0.2-edff8e2-153

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 (438) hide show
  1. package/README.md +37 -2
  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 +10 -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 +1548 -0
  24. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +410 -0
  26. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -228
  28. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +269 -90
  30. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +83 -55
  32. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +100 -132
  34. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +134 -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 +79 -207
  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 +1 -1
  62. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  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 +1185 -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 -0
  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 +43 -96
  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 +1470 -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 +437 -61
  94. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  95. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +119 -43
  96. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  97. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +224 -0
  98. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  99. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -252
  100. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  101. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +189 -54
  102. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  103. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -353
  104. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  105. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +289 -90
  106. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +68 -36
  108. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  109. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  110. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  111. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  112. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  113. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1318 -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 +72 -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/IClaimService.sol/IClaimService.dbg.json +1 -1
  122. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  123. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +86 -1
  124. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  125. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  126. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +32 -42
  127. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  129. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +169 -52
  130. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  131. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +59 -43
  132. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  133. package/artifacts/contracts/product/PricingService.sol/PricingService.json +63 -58
  134. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  136. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  137. package/artifacts/contracts/product/Product.sol/Product.json +32 -153
  138. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  139. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  140. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  141. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  142. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  143. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  144. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  145. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -46
  146. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  147. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  148. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  149. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  150. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -73
  151. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  152. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +234 -389
  153. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  154. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  155. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  157. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  158. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -29
  159. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  160. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  161. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +24 -16
  163. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  165. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  166. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +271 -86
  168. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  169. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -61
  170. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +32 -0
  176. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  177. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  182. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  184. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  185. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +73 -0
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +32 -53
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +4 -77
  190. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +0 -23
  192. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  193. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  194. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  196. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  198. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  199. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  200. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  201. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  202. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  203. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  204. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +42 -32
  209. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  211. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -29
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +135 -153
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +27 -22
  225. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  226. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  232. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  233. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/Fee.sol/FeeLib.json +17 -12
  237. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  241. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  242. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +55 -2
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  247. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  251. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  253. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +117 -14
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  257. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  259. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  261. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  263. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  265. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  267. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  269. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +58 -2
  271. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  272. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  273. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  275. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  276. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  277. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  278. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  279. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  280. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  281. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  282. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  283. package/contracts/{shared → authorization}/AccessAdmin.sol +135 -303
  284. package/contracts/authorization/AccessManagerCloneable.sol +16 -0
  285. package/contracts/authorization/Authorization.sol +218 -0
  286. package/contracts/authorization/IAccess.sol +48 -0
  287. package/contracts/{shared → authorization}/IAccessAdmin.sol +22 -54
  288. package/contracts/authorization/IAuthorization.sol +54 -0
  289. package/contracts/authorization/IModuleAuthorization.sol +21 -0
  290. package/contracts/{registry → authorization}/IServiceAuthorization.sol +5 -5
  291. package/contracts/authorization/ModuleAuthorization.sol +78 -0
  292. package/contracts/{registry → authorization}/ServiceAuthorization.sol +17 -17
  293. package/contracts/distribution/BasicDistribution.sol +138 -0
  294. package/contracts/distribution/BasicDistributionAuthorization.sol +47 -0
  295. package/contracts/distribution/Distribution.sol +144 -110
  296. package/contracts/distribution/DistributionService.sol +71 -31
  297. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  298. package/contracts/distribution/IDistributionComponent.sol +25 -39
  299. package/contracts/distribution/IDistributionService.sol +17 -1
  300. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  301. package/contracts/instance/IInstance.sol +8 -9
  302. package/contracts/instance/IInstanceService.sol +13 -18
  303. package/contracts/instance/Instance.sol +61 -70
  304. package/contracts/instance/InstanceAdmin.sol +202 -267
  305. package/contracts/instance/InstanceAuthorizationV3.sol +204 -0
  306. package/contracts/instance/InstanceReader.sol +30 -9
  307. package/contracts/instance/InstanceService.sol +74 -70
  308. package/contracts/instance/InstanceServiceManager.sol +2 -6
  309. package/contracts/instance/InstanceStore.sol +7 -2
  310. package/contracts/instance/base/ObjectLifecycle.sol +55 -45
  311. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +11 -12
  312. package/contracts/instance/module/IBundle.sol +1 -1
  313. package/contracts/instance/module/IComponents.sol +1 -7
  314. package/contracts/instance/module/IDistribution.sol +0 -1
  315. package/contracts/mock/Dip.sol +1 -1
  316. package/contracts/oracle/BasicOracle.sol +48 -0
  317. package/contracts/oracle/BasicOracleAuthorization.sol +46 -0
  318. package/contracts/oracle/IOracle.sol +16 -0
  319. package/contracts/oracle/IOracleComponent.sol +2 -1
  320. package/contracts/oracle/Oracle.sol +72 -51
  321. package/contracts/oracle/OracleServiceManager.sol +2 -5
  322. package/contracts/pool/BasicPool.sol +166 -0
  323. package/contracts/pool/BasicPoolAuthorization.sol +58 -0
  324. package/contracts/pool/BundleService.sol +182 -36
  325. package/contracts/pool/BundleServiceManager.sol +2 -5
  326. package/contracts/pool/IBundleService.sol +31 -4
  327. package/contracts/pool/IPoolComponent.sol +6 -60
  328. package/contracts/pool/IPoolService.sol +15 -16
  329. package/contracts/pool/Pool.sol +166 -137
  330. package/contracts/pool/PoolService.sol +157 -73
  331. package/contracts/pool/PoolServiceManager.sol +2 -5
  332. package/contracts/product/ApplicationService.sol +12 -36
  333. package/contracts/product/ApplicationServiceManager.sol +2 -2
  334. package/contracts/product/BasicProduct.sol +52 -0
  335. package/contracts/product/BasicProductAuthorization.sol +43 -0
  336. package/contracts/product/ClaimService.sol +7 -32
  337. package/contracts/product/ClaimServiceManager.sol +2 -2
  338. package/contracts/product/IPolicyService.sol +8 -2
  339. package/contracts/product/IProductComponent.sol +7 -9
  340. package/contracts/product/PolicyService.sol +72 -18
  341. package/contracts/product/PolicyServiceManager.sol +2 -5
  342. package/contracts/product/PricingServiceManager.sol +2 -5
  343. package/contracts/product/Product.sol +122 -88
  344. package/contracts/product/ProductService.sol +7 -32
  345. package/contracts/product/ProductServiceManager.sol +2 -5
  346. package/contracts/registry/IRegistry.sol +26 -16
  347. package/contracts/registry/IRegistryService.sol +6 -6
  348. package/contracts/registry/Registry.sol +81 -87
  349. package/contracts/registry/RegistryAdmin.sol +118 -86
  350. package/contracts/registry/RegistryService.sol +4 -18
  351. package/contracts/registry/RegistryServiceManager.sol +2 -2
  352. package/contracts/registry/ReleaseLifecycle.sol +8 -9
  353. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +97 -135
  354. package/contracts/registry/ServiceAuthorizationV3.sol +14 -14
  355. package/contracts/registry/TokenRegistry.sol +2 -2
  356. package/contracts/shared/Component.sol +13 -14
  357. package/contracts/shared/ComponentService.sol +101 -70
  358. package/contracts/shared/ComponentServiceManager.sol +2 -2
  359. package/contracts/shared/ComponentVerifyingService.sol +1 -1
  360. package/contracts/shared/IComponentService.sol +15 -9
  361. package/contracts/shared/IInstanceLinkedComponent.sol +10 -0
  362. package/contracts/shared/IService.sol +1 -1
  363. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  364. package/contracts/shared/InstanceLinkedComponent.sol +47 -19
  365. package/contracts/shared/KeyValueStore.sol +1 -1
  366. package/contracts/shared/Lifecycle.sol +16 -10
  367. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  368. package/contracts/shared/NftOwnable.sol +2 -2
  369. package/contracts/shared/PolicyHolder.sol +2 -5
  370. package/contracts/shared/Service.sol +3 -4
  371. package/contracts/staking/IStaking.sol +1 -2
  372. package/contracts/staking/IStakingService.sol +12 -5
  373. package/contracts/staking/Staking.sol +20 -17
  374. package/contracts/staking/StakingLifecycle.sol +5 -6
  375. package/contracts/staking/StakingManager.sol +2 -6
  376. package/contracts/staking/StakingReader.sol +12 -16
  377. package/contracts/staking/StakingServiceManager.sol +2 -2
  378. package/contracts/staking/StakingStore.sol +12 -22
  379. package/contracts/type/Amount.sol +12 -5
  380. package/contracts/type/Blocknumber.sol +7 -1
  381. package/contracts/type/ObjectType.sol +37 -7
  382. package/contracts/type/Referral.sol +1 -0
  383. package/contracts/type/RoleId.sol +55 -82
  384. package/contracts/type/Seconds.sol +13 -1
  385. package/contracts/type/Timestamp.sol +11 -1
  386. package/contracts/type/UFixed.sol +34 -9
  387. package/contracts/type/Version.sol +3 -1
  388. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  389. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  390. package/package.json +5 -3
  391. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  392. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  393. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  394. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  395. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  396. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  397. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  398. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  399. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1234
  400. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  401. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -190
  402. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  403. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  404. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  405. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  406. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  407. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  408. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  409. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  410. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  411. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  412. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  413. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  414. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  415. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  416. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  417. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  418. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  419. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  420. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  421. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  422. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  423. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  424. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  425. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  426. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  427. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  428. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  429. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  430. package/contracts/shared/AccessManagerCustom.sol +0 -741
  431. package/contracts/shared/AccessManagerExtended.sol +0 -481
  432. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  433. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  434. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  435. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  436. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  437. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  438. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -4,23 +4,16 @@ pragma solidity ^0.8.20;
4
4
  import {IRegistry} from "../registry/IRegistry.sol";
5
5
  import {Product} from "./Product.sol";
6
6
  import {IComponents} from "../instance/module/IComponents.sol";
7
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
8
7
  import {IInstance} from "../instance/IInstance.sol";
9
8
  import {IPolicy} from "../instance/module/IPolicy.sol";
10
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
11
- import {IRisk} from "../instance/module/IRisk.sol";
12
- import {IBundle} from "../instance/module/IBundle.sol";
13
9
 
14
10
  import {TokenHandler} from "../shared/TokenHandler.sol";
15
11
 
16
12
  import {Amount, AmountLib} from "../type/Amount.sol";
17
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
18
13
  import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
19
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
20
14
  import {ObjectType, APPLICATION, COMPONENT, DISTRIBUTION, PRODUCT, POOL, POLICY, BUNDLE, CLAIM, PRICE} from "../type/ObjectType.sol";
21
- import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED, CONFIRMED} from "../type/StateId.sol";
15
+ import {APPLIED, COLLATERALIZED, ACTIVE, KEEP_STATE, CLOSED, DECLINED} from "../type/StateId.sol";
22
16
  import {NftId, NftIdLib} from "../type/NftId.sol";
23
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
24
17
  import {ReferralId} from "../type/Referral.sol";
25
18
  import {StateId} from "../type/StateId.sol";
26
19
  import {VersionPart} from "../type/Version.sol";
@@ -36,8 +29,6 @@ import {InstanceStore} from "../instance/InstanceStore.sol";
36
29
  import {IPolicyService} from "./IPolicyService.sol";
37
30
  import {IPoolService} from "../pool/IPoolService.sol";
38
31
  import {IPricingService} from "./IPricingService.sol";
39
- import {IService} from "../shared/IService.sol";
40
- import {Service} from "../shared/Service.sol";
41
32
 
42
33
  contract PolicyService is
43
34
  ComponentVerifyingService,
@@ -90,15 +81,38 @@ contract PolicyService is
90
81
  (, productInfo,) = _getAndVerifyActiveComponent(PRODUCT());
91
82
  product = Product(productInfo.objectAddress);
92
83
  }
93
-
84
+
94
85
 
95
86
  function decline(
96
- NftId policyNftId
87
+ NftId applicationNftId // = policyNftId
97
88
  )
98
89
  external
99
- override
90
+ virtual override
100
91
  {
101
- revert();
92
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
93
+ InstanceReader instanceReader = instance.getInstanceReader();
94
+
95
+ // check policy is in state applied
96
+ if (instanceReader.getPolicyState(applicationNftId) != APPLIED()) {
97
+ revert ErrorPolicyServicePolicyStateNotApplied(applicationNftId);
98
+ }
99
+
100
+ // check policy matches with calling product
101
+ IPolicy.PolicyInfo memory applicationInfo = instanceReader.getPolicyInfo(applicationNftId);
102
+ if(applicationInfo.productNftId != productNftId) {
103
+ revert ErrorPolicyServicePolicyProductMismatch(
104
+ applicationNftId,
105
+ applicationInfo.productNftId,
106
+ productNftId);
107
+ }
108
+
109
+
110
+ // store updated policy info
111
+ instance.getInstanceStore().updatePolicyState(
112
+ applicationNftId,
113
+ DECLINED());
114
+
115
+ emit LogPolicyServicePolicyDeclined(applicationNftId);
102
116
  }
103
117
 
104
118
  event LogDebug(uint idx, string message);
@@ -230,15 +244,54 @@ contract PolicyService is
230
244
  // TODO: add logging
231
245
  }
232
246
 
233
-
247
+ /// @inheritdoc IPolicyService
234
248
  function expire(
235
- NftId policyNftId
249
+ NftId policyNftId,
250
+ Timestamp expireAt
236
251
  )
237
252
  external
238
253
  override
239
- // solhint-disable-next-line no-empty-blocks
254
+ virtual
255
+ returns (Timestamp)
240
256
  {
241
-
257
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
258
+ InstanceReader instanceReader = instance.getInstanceReader();
259
+
260
+ // check policy is in state applied
261
+ if (instanceReader.getPolicyState(policyNftId) != ACTIVE()) {
262
+ revert ErrorIPolicyServicePolicyNotActive(policyNftId, instanceReader.getPolicyState(policyNftId));
263
+ }
264
+
265
+ // check policy matches with calling product
266
+ IPolicy.PolicyInfo memory policyInfo = instanceReader.getPolicyInfo(policyNftId);
267
+ if(policyInfo.productNftId != productNftId) {
268
+ revert ErrorPolicyServicePolicyProductMismatch(
269
+ policyNftId,
270
+ policyInfo.productNftId,
271
+ productNftId);
272
+ }
273
+
274
+ if (expireAt.eqz()) {
275
+ expireAt = TimestampLib.blockTimestamp();
276
+ }
277
+
278
+ // check preconditions
279
+ if (expireAt >= policyInfo.expiredAt) {
280
+ revert ErrorIPolicyServicePolicyExpirationTooLate(policyNftId, policyInfo.expiredAt, expireAt);
281
+ }
282
+ if (expireAt < TimestampLib.blockTimestamp()) {
283
+ revert ErrorIPolicyServicePolicyExpirationTooEarly(policyNftId, TimestampLib.blockTimestamp(), expireAt);
284
+ }
285
+ if (policyInfo.openClaimsCount > 0) {
286
+ revert ErrorIPolicyServiceOpenClaims(policyNftId, policyInfo.openClaimsCount);
287
+ }
288
+
289
+ policyInfo.expiredAt = expireAt;
290
+ instance.getInstanceStore().updatePolicy(policyNftId, policyInfo, KEEP_STATE());
291
+
292
+ emit LogPolicyServicePolicyExpirationUpdated(policyNftId, expireAt);
293
+
294
+ return expireAt;
242
295
  }
243
296
 
244
297
  function close(
@@ -427,6 +480,7 @@ contract PolicyService is
427
480
  bundleNftId,
428
481
  premium);
429
482
 
483
+ // TODO: centralize token handling (issue #471)
430
484
  // transfer premium amounts to target wallets
431
485
  tokenHandler.transfer(policyHolder, productWallet, premium.productFeeAmount);
432
486
  tokenHandler.transfer(policyHolder, distributionWallet, premium.distributionFeeAndCommissionAmount);
@@ -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 {PolicyService} from "./PolicyService.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 PolicyServiceManager is ProxyManager {
12
9
 
@@ -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 {PricingService} from "./PricingService.sol";
7
- import {Registry} from "../registry/Registry.sol";
8
- import {RegistryService} from "../registry/RegistryService.sol";
9
- import {REGISTRY} from "../type/ObjectType.sol";
10
7
 
11
8
  contract PricingServiceManager is ProxyManager {
12
9
 
@@ -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
+ external
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,10 +223,12 @@ 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,
@@ -179,6 +265,25 @@ abstract contract Product is
179
265
  activateAt);
180
266
  }
181
267
 
268
+ function _decline(
269
+ NftId policyNftId
270
+ )
271
+ internal
272
+ {
273
+ _getProductStorage()._policyService.decline(
274
+ policyNftId);
275
+ }
276
+
277
+ function _expire(
278
+ NftId policyNftId,
279
+ Timestamp expireAt
280
+ )
281
+ internal
282
+ returns (Timestamp)
283
+ {
284
+ return _getProductStorage()._policyService.expire(policyNftId, expireAt);
285
+ }
286
+
182
287
  function _collectPremium(
183
288
  NftId policyNftId,
184
289
  Timestamp activateAt
@@ -290,77 +395,6 @@ abstract contract Product is
290
395
  payoutId);
291
396
  }
292
397
 
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
398
  function _toRiskId(string memory riskName) internal pure returns (RiskId riskId) {
365
399
  return RiskIdLib.toRiskId(riskName);
366
400
  }
@@ -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