@etherisc/gif-next 0.0.2-e8ea5fe-337 → 0.0.2-e91c6be-472

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 (436) hide show
  1. package/README.md +28 -7
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +105 -65
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +67 -11
  7. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  8. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +60 -32
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +40 -3
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +19 -0
  14. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +1196 -0
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +68 -5
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  19. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +162 -327
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  21. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +82 -22
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  23. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +102 -243
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +180 -198
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +131 -107
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +92 -81
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +52 -0
  32. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  33. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  34. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  35. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1429 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +502 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +1979 -0
  40. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +470 -0
  42. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  44. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  45. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1430 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1177 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1606 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2281 -0
  52. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  53. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  54. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  55. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +53 -31
  56. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  57. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +31 -86
  58. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  59. package/artifacts/contracts/instance/Instance.sol/Instance.json +72 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +165 -138
  62. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  63. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +57 -97
  64. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  65. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +286 -83
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +96 -245
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +99 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +197 -116
  72. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  73. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  74. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  75. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  76. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  77. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  78. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +46 -5
  79. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  80. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  81. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  82. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  83. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  84. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  85. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  86. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  87. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  88. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  89. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +121 -286
  90. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  91. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +84 -24
  92. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  93. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  94. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +87 -76
  95. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  96. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +43 -9
  97. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  98. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +97 -238
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +107 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +99 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +115 -256
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +114 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +203 -208
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +135 -107
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +72 -15
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +107 -107
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +272 -185
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +115 -267
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +420 -366
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +128 -88
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +87 -144
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +96 -80
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +156 -251
  129. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  130. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +82 -22
  131. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  132. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +202 -200
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +136 -104
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +29 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +64 -8
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +147 -1
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +80 -51
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +146 -89
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  146. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +29 -0
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +267 -167
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +127 -91
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +170 -219
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +111 -91
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +154 -249
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +81 -138
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +93 -77
  161. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  162. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  163. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  164. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +309 -33
  165. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  166. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +114 -35
  167. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  168. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  169. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  170. package/artifacts/contracts/registry/Registry.sol/Registry.json +515 -94
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +296 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +94 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +91 -75
  177. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  178. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +47 -6
  179. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +131 -223
  181. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  182. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +66 -8
  183. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  184. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  185. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Component.sol/Component.json +76 -213
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +426 -263
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +140 -110
  191. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +47 -112
  193. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  194. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +111 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +66 -51
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +388 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +87 -76
  201. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  202. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +36 -0
  203. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  204. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +36 -0
  205. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  206. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +16 -0
  207. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  208. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  209. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  210. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +29 -0
  211. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  212. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  213. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  214. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  215. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -22
  216. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  217. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +97 -238
  218. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  219. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +42 -1
  220. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -1
  222. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  223. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  224. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  225. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +22 -57
  226. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  227. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  228. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  229. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +58 -89
  230. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  231. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  232. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  233. package/artifacts/contracts/shared/Service.sol/Service.json +47 -112
  234. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  235. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +388 -35
  236. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +395 -0
  238. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  239. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  240. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +84 -87
  242. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  243. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  244. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  245. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +2 -2
  246. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  247. package/artifacts/contracts/staking/Staking.sol/Staking.json +152 -311
  248. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  250. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +112 -97
  252. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +7 -12
  254. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +87 -165
  256. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +95 -79
  258. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  259. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +144 -103
  260. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  261. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +2 -2
  262. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  263. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  265. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  266. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  268. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  270. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  272. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  273. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  274. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  276. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  277. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  278. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  280. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  282. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  284. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  286. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  288. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  290. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  295. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  297. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  299. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +15 -2
  301. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  302. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  303. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  304. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  305. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +71 -70
  306. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  307. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  308. package/contracts/authorization/AccessAdmin.sol +64 -59
  309. package/contracts/authorization/Authorization.sol +111 -39
  310. package/contracts/authorization/IAccess.sol +1 -0
  311. package/contracts/authorization/IAccessAdmin.sol +4 -3
  312. package/contracts/authorization/IAuthorization.sol +13 -7
  313. package/contracts/authorization/IServiceAuthorization.sol +3 -1
  314. package/contracts/authorization/ReleaseAccessManager.sol +38 -0
  315. package/contracts/authorization/ServiceAuthorization.sol +26 -10
  316. package/contracts/distribution/BasicDistribution.sol +4 -3
  317. package/contracts/distribution/BasicDistributionAuthorization.sol +1 -1
  318. package/contracts/distribution/Distribution.sol +12 -23
  319. package/contracts/distribution/DistributionService.sol +78 -60
  320. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  321. package/contracts/distribution/IDistributionComponent.sol +1 -1
  322. package/contracts/distribution/IDistributionService.sol +5 -6
  323. package/contracts/examples/fire/DamageLevel.sol +59 -0
  324. package/contracts/examples/fire/FirePool.sol +86 -0
  325. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  326. package/contracts/examples/fire/FireProduct.sol +431 -0
  327. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  328. package/contracts/examples/fire/FireUSD.sol +26 -0
  329. package/contracts/examples/unpermissioned/SimpleDistribution.sol +58 -0
  330. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  331. package/contracts/examples/unpermissioned/SimplePool.sol +108 -0
  332. package/contracts/examples/unpermissioned/SimpleProduct.sol +345 -0
  333. package/contracts/instance/IInstance.sol +4 -1
  334. package/contracts/instance/IInstanceService.sol +2 -23
  335. package/contracts/instance/Instance.sol +22 -19
  336. package/contracts/instance/InstanceAdmin.sol +23 -31
  337. package/contracts/instance/InstanceAuthorizationV3.sol +9 -19
  338. package/contracts/instance/InstanceReader.sol +83 -18
  339. package/contracts/instance/InstanceService.sol +35 -88
  340. package/contracts/instance/InstanceServiceManager.sol +6 -7
  341. package/contracts/instance/module/IComponents.sol +10 -6
  342. package/contracts/instance/module/IPolicy.sol +4 -3
  343. package/contracts/oracle/BasicOracle.sol +0 -1
  344. package/contracts/oracle/IOracleService.sol +2 -1
  345. package/contracts/oracle/Oracle.sol +5 -16
  346. package/contracts/oracle/OracleService.sol +56 -43
  347. package/contracts/oracle/OracleServiceManager.sol +6 -6
  348. package/contracts/pool/BasicPool.sol +33 -24
  349. package/contracts/pool/BasicPoolAuthorization.sol +12 -2
  350. package/contracts/pool/BundleService.sol +96 -49
  351. package/contracts/pool/BundleServiceManager.sol +6 -6
  352. package/contracts/pool/IBundleService.sol +11 -5
  353. package/contracts/pool/IPoolComponent.sol +19 -15
  354. package/contracts/pool/IPoolService.sol +42 -30
  355. package/contracts/pool/Pool.sol +142 -123
  356. package/contracts/pool/PoolService.sol +254 -143
  357. package/contracts/pool/PoolServiceManager.sol +4 -4
  358. package/contracts/product/ApplicationService.sol +20 -9
  359. package/contracts/product/ApplicationServiceManager.sol +4 -4
  360. package/contracts/product/BasicProduct.sol +8 -12
  361. package/contracts/product/BasicProductAuthorization.sol +0 -1
  362. package/contracts/product/ClaimService.sol +235 -108
  363. package/contracts/product/ClaimServiceManager.sol +4 -4
  364. package/contracts/product/IClaimService.sol +3 -2
  365. package/contracts/product/IPolicyService.sol +13 -4
  366. package/contracts/product/IPricingService.sol +9 -9
  367. package/contracts/product/IProductComponent.sol +23 -3
  368. package/contracts/product/PolicyService.sol +169 -47
  369. package/contracts/product/PolicyServiceManager.sol +4 -4
  370. package/contracts/product/PricingService.sol +12 -13
  371. package/contracts/product/PricingServiceManager.sol +3 -3
  372. package/contracts/product/Product.sol +77 -70
  373. package/contracts/product/RiskService.sol +4 -5
  374. package/contracts/product/RiskServiceManager.sol +4 -4
  375. package/contracts/registry/ChainNft.sol +68 -38
  376. package/contracts/registry/IRegistry.sol +56 -17
  377. package/contracts/registry/IRegistryService.sol +5 -12
  378. package/contracts/registry/ITransferInterceptor.sol +1 -2
  379. package/contracts/registry/Registry.sol +349 -200
  380. package/contracts/registry/RegistryAdmin.sol +146 -58
  381. package/contracts/registry/RegistryService.sol +35 -46
  382. package/contracts/registry/RegistryServiceManager.sol +2 -2
  383. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  384. package/contracts/registry/ReleaseRegistry.sol +204 -204
  385. package/contracts/registry/ServiceAuthorizationV3.sol +24 -20
  386. package/contracts/shared/Component.sol +62 -101
  387. package/contracts/shared/ComponentService.sol +291 -153
  388. package/contracts/shared/ComponentServiceManager.sol +8 -5
  389. package/contracts/shared/ComponentVerifyingService.sol +27 -16
  390. package/contracts/shared/ContractLib.sol +54 -0
  391. package/contracts/shared/IComponent.sol +10 -13
  392. package/contracts/shared/IComponentService.sol +38 -16
  393. package/contracts/shared/IInstanceLinkedComponent.sol +3 -11
  394. package/contracts/shared/ILifecycle.sol +3 -1
  395. package/contracts/shared/INftOwnable.sol +2 -0
  396. package/contracts/shared/IPolicyHolder.sol +12 -22
  397. package/contracts/shared/IRegisterable.sol +11 -0
  398. package/contracts/shared/InitializableERC165.sol +2 -2
  399. package/contracts/shared/InstanceLinkedComponent.sol +70 -37
  400. package/contracts/shared/KeyValueStore.sol +1 -1
  401. package/contracts/shared/Lifecycle.sol +15 -4
  402. package/contracts/shared/NftOwnable.sol +26 -6
  403. package/contracts/shared/PolicyHolder.sol +15 -52
  404. package/contracts/shared/Registerable.sol +19 -11
  405. package/contracts/shared/RegistryLinked.sol +9 -14
  406. package/contracts/shared/Service.sol +20 -18
  407. package/contracts/shared/TokenHandler.sol +324 -66
  408. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  409. package/contracts/staking/IStaking.sol +9 -4
  410. package/contracts/staking/IStakingService.sol +0 -3
  411. package/contracts/staking/Staking.sol +34 -27
  412. package/contracts/staking/StakingManager.sol +8 -6
  413. package/contracts/staking/StakingReader.sol +12 -5
  414. package/contracts/staking/StakingService.sol +71 -25
  415. package/contracts/staking/StakingServiceManager.sol +2 -2
  416. package/contracts/type/Amount.sol +15 -0
  417. package/contracts/type/ClaimId.sol +6 -1
  418. package/contracts/type/NftId.sol +1 -0
  419. package/contracts/type/ObjectType.sol +1 -0
  420. package/contracts/type/PayoutId.sol +10 -10
  421. package/contracts/type/RiskId.sol +16 -2
  422. package/contracts/type/RoleId.sol +0 -12
  423. package/contracts/type/StateId.sol +14 -1
  424. package/contracts/type/UFixed.sol +4 -0
  425. package/contracts/upgradeability/ProxyManager.sol +68 -34
  426. package/contracts/upgradeability/Versionable.sol +2 -2
  427. package/package.json +4 -3
  428. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  429. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  430. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  431. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  432. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  433. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  434. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  435. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  436. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -5,13 +5,15 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
5
5
 
6
6
  import {Amount} from "../type/Amount.sol";
7
7
  import {BundleSet} from "./BundleSet.sol";
8
+ import {COMPONENT, INSTANCE} from "../type/ObjectType.sol";
8
9
  import {IInstance} from "./IInstance.sol";
10
+ import {IComponentService} from "../shared/IComponentService.sol";
9
11
  import {IInstanceService} from "./IInstanceService.sol";
10
12
  import {InstanceReader} from "./InstanceReader.sol";
11
13
  import {InstanceAdmin} from "./InstanceAdmin.sol";
12
14
  import {InstanceStore} from "./InstanceStore.sol";
13
- import {INSTANCE} from "../type/ObjectType.sol";
14
15
  import {IRegistry} from "../registry/IRegistry.sol";
16
+ import {NftId} from "../type/NftId.sol";
15
17
  import {Registerable} from "../shared/Registerable.sol";
16
18
  import {RoleId} from "../type/RoleId.sol";
17
19
  import {Seconds} from "../type/Seconds.sol";
@@ -23,10 +25,9 @@ contract Instance is
23
25
  AccessManagedUpgradeable,
24
26
  Registerable
25
27
  {
26
- uint256 public constant GIF_MAJOR_VERSION = 3;
27
-
28
28
  bool private _initialized;
29
29
 
30
+ IComponentService internal _componentService;
30
31
  IInstanceService internal _instanceService;
31
32
  InstanceAdmin internal _instanceAdmin;
32
33
  InstanceReader internal _instanceReader;
@@ -53,7 +54,6 @@ contract Instance is
53
54
  {
54
55
  _instanceAdmin = instanceAdmin;
55
56
  if(_instanceAdmin.authority() == address(0)) {
56
- // TODO rename error
57
57
  revert ErrorInstanceInstanceAdminZero();
58
58
  }
59
59
 
@@ -61,7 +61,7 @@ contract Instance is
61
61
  __AccessManaged_init(_instanceAdmin.authority());
62
62
 
63
63
  // setup instance object info
64
- initializeRegisterable(
64
+ _initializeRegisterable(
65
65
  address(registry),
66
66
  registry.getNftId(),
67
67
  INSTANCE(),
@@ -79,19 +79,32 @@ contract Instance is
79
79
  _bundleManager.initialize();
80
80
  _instanceReader.initialize();
81
81
 
82
+ _componentService = IComponentService(
83
+ getRegistry().getServiceAddress(
84
+ COMPONENT(),
85
+ getRelease()));
86
+
82
87
  _instanceService = IInstanceService(
83
88
  getRegistry().getServiceAddress(
84
89
  INSTANCE(),
85
- getMajorVersion()));
90
+ getRelease()));
86
91
 
87
- registerInterface(type(IInstance).interfaceId);
92
+ _registerInterface(type(IInstance).interfaceId);
93
+ }
94
+
95
+ //--- ProductRegistration ----------------------------------------------//
96
+ function registerProduct(address product)
97
+ external
98
+ onlyOwner()
99
+ returns (NftId productNftId)
100
+ {
101
+ return _componentService.registerProduct(product);
88
102
  }
89
103
 
90
104
  //--- Staking ----------------------------------------------------------//
91
105
 
92
106
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
93
107
  external
94
- // TODO decide if onlyOwner or restricted to instance owner role is better
95
108
  onlyOwner()
96
109
  {
97
110
  _instanceService.setStakingLockingPeriod(stakeLockingPeriod);
@@ -178,13 +191,7 @@ contract Instance is
178
191
 
179
192
  //--- ITransferInterceptor ----------------------------------------------//
180
193
 
181
- // TODO interception of child components nfts
182
- function nftMint(address to, uint256 tokenId) external onlyChainNft {
183
- // TODO refactor
184
- // _instanceAdmin.transferInstanceOwnerRole(address(0), to);
185
- }
186
-
187
- function nftTransferFrom(address from, address to, uint256 tokenId) external onlyChainNft {
194
+ function nftTransferFrom(address from, address to, uint256 tokenId, address operator) external onlyChainNft {
188
195
  // TODO refactor
189
196
  // _instanceAdmin.transferInstanceOwnerRole(from, to);
190
197
  }
@@ -221,9 +228,5 @@ contract Instance is
221
228
  return _instanceStore;
222
229
  }
223
230
 
224
- function getMajorVersion() public pure returns (VersionPart majorVersion) {
225
- return VersionPartLib.toVersionPart(GIF_MAJOR_VERSION);
226
- }
227
-
228
231
  //--- internal view/pure functions --------------------------------------//
229
232
  }
@@ -7,13 +7,13 @@ import {AccessAdmin} from "../authorization/AccessAdmin.sol";
7
7
  import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
8
  import {IAccessAdmin} from "../authorization/IAccessAdmin.sol";
9
9
  import {IAuthorization} from "../authorization/IAuthorization.sol";
10
- import {IComponent} from "../shared/IComponent.sol";
11
- import {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
10
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
11
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
12
12
  import {IRegistry} from "../registry/IRegistry.sol";
13
13
  import {IInstance} from "./IInstance.sol";
14
14
  import {IService} from "../shared/IService.sol";
15
15
  import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
16
- import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE} from "../type/RoleId.sol";
16
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
17
17
  import {Str, StrLib} from "../type/String.sol";
18
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
19
19
  import {VersionPart} from "../type/Version.sol";
@@ -38,16 +38,16 @@ contract InstanceAdmin is
38
38
  IRegistry internal _registry;
39
39
  uint64 _idNext;
40
40
 
41
- IModuleAuthorization _instanceAuthorization;
41
+ IAuthorization _instanceAuthorization;
42
42
 
43
43
  /// @dev Only used for master instance admin.
44
44
  /// Contracts created via constructor come with disabled initializers.
45
45
  constructor(
46
- IModuleAuthorization instanceAuthorization
46
+ address instanceAuthorization
47
47
  )
48
48
  AccessAdmin()
49
49
  {
50
- _instanceAuthorization = instanceAuthorization;
50
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
51
51
  }
52
52
 
53
53
  /// @dev Initializes this instance admin with the provided instances authorization specification.
@@ -56,7 +56,7 @@ contract InstanceAdmin is
56
56
  /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
57
57
  function initialize(
58
58
  AccessManagerCloneable accessManager,
59
- IModuleAuthorization instanceAuthorization
59
+ address instanceAuthorization
60
60
  )
61
61
  external
62
62
  initializer()
@@ -68,7 +68,7 @@ contract InstanceAdmin is
68
68
  _createAdminAndPublicRoles();
69
69
 
70
70
  // store instance authorization specification
71
- _instanceAuthorization = IModuleAuthorization(instanceAuthorization);
71
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
72
72
  }
73
73
 
74
74
  function _checkTargetIsReadyForAuthorization(address target)
@@ -96,7 +96,7 @@ contract InstanceAdmin is
96
96
  _registry = _instance.getRegistry();
97
97
 
98
98
  // check matching releases
99
- if (_instanceAuthorization.getRelease() != _instance.getMajorVersion()) {
99
+ if (_instanceAuthorization.getRelease() != _instance.getRelease()) {
100
100
  revert ErrorInstanceAdminReleaseMismatch();
101
101
  }
102
102
 
@@ -104,22 +104,22 @@ contract InstanceAdmin is
104
104
  _createRoles(_instanceAuthorization);
105
105
  _createModuleTargetsWithRoles();
106
106
  _createTargetAuthorizations(_instanceAuthorization);
107
-
108
- // grant component owner roles to instance owner
109
- _grantComponentOwnerRoles();
110
107
  }
111
108
 
112
109
 
113
110
  /// @dev Initializes the authorization for the specified component.
114
111
  /// Important: The component MUST be registered.
115
112
  function initializeComponentAuthorization(
116
- IComponent component,
117
- IAuthorization authorization
113
+ IInstanceLinkedComponent component
118
114
  )
119
115
  external
120
116
  {
121
117
  _checkTargetIsReadyForAuthorization(address(component));
122
118
 
119
+ // get authorization specification
120
+ IAuthorization authorization = component.getAuthorization();
121
+
122
+ // create roles
123
123
  _createRoles(authorization);
124
124
 
125
125
  // create component target
@@ -135,12 +135,12 @@ contract InstanceAdmin is
135
135
  true,
136
136
  false);
137
137
 
138
- // FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
139
138
  FunctionInfo[] memory functions = new FunctionInfo[](3);
140
139
  functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
141
140
  functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
142
141
  functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
143
142
 
143
+ // FIXME: make this a bit nicer and work with IAuthorization. Use a specific role, not public - access to TokenHandler must be restricted
144
144
  _authorizeTargetFunctions(
145
145
  address(component.getTokenHandler()),
146
146
  getPublicRole(),
@@ -148,23 +148,12 @@ contract InstanceAdmin is
148
148
 
149
149
  _grantRoleToAccount(
150
150
  authorization.getTargetRole(
151
- authorization.getTarget()),
151
+ authorization.getMainTarget()),
152
152
  address(component));
153
153
 
154
154
  _createTargetAuthorizations(authorization);
155
155
  }
156
156
 
157
-
158
- function _grantComponentOwnerRoles()
159
- internal
160
- {
161
- address instanceOwner = _registry.ownerOf(_instance.getNftId());
162
- _grantRoleToAccount(DISTRIBUTION_OWNER_ROLE(), instanceOwner);
163
- _grantRoleToAccount(ORACLE_OWNER_ROLE(), instanceOwner);
164
- _grantRoleToAccount(POOL_OWNER_ROLE(), instanceOwner);
165
- _grantRoleToAccount(PRODUCT_OWNER_ROLE(), instanceOwner);
166
- }
167
-
168
157
  /// @dev Creates a custom role
169
158
  // TODO implement
170
159
  // function createRole()
@@ -188,7 +177,7 @@ contract InstanceAdmin is
188
177
  function getInstanceAuthorization()
189
178
  external
190
179
  view
191
- returns (IModuleAuthorization instanceAuthorizaion)
180
+ returns (IAuthorization instanceAuthorizaion)
192
181
  {
193
182
  return _instanceAuthorization;
194
183
  }
@@ -203,9 +192,12 @@ contract InstanceAdmin is
203
192
 
204
193
  for(uint256 i = 0; i < roles.length; i++) {
205
194
  roleId = roles[i];
206
- _createRole(
207
- roleId,
208
- authorization.getRoleInfo(roleId));
195
+
196
+ if (!roleExists(roleId)) {
197
+ _createRole(
198
+ roleId,
199
+ authorization.getRoleInfo(roleId));
200
+ }
209
201
  }
210
202
  }
211
203
 
@@ -5,44 +5,33 @@ import {
5
5
  PRODUCT, ORACLE, POOL, INSTANCE, COMPONENT, DISTRIBUTION, APPLICATION, POLICY, CLAIM, BUNDLE
6
6
  } from "../../contracts/type/ObjectType.sol";
7
7
 
8
- import {
9
- DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE
10
- } from "../../contracts/type/RoleId.sol";
11
-
12
8
  import {BundleSet} from "../instance/BundleSet.sol";
13
9
  import {IAccess} from "../authorization/IAccess.sol";
14
10
  import {Instance} from "../instance/Instance.sol";
15
11
  import {InstanceAdmin} from "../instance/InstanceAdmin.sol";
16
12
  import {InstanceStore} from "../instance/InstanceStore.sol";
17
- import {ModuleAuthorization} from "../authorization/ModuleAuthorization.sol";
13
+ import {Authorization} from "../authorization/Authorization.sol";
18
14
 
19
15
 
20
16
  contract InstanceAuthorizationV3
21
- is ModuleAuthorization
17
+ is Authorization
22
18
  {
23
19
 
20
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
21
+
24
22
  string public constant INSTANCE_TARGET_NAME = "Instance";
25
23
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
26
24
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
27
25
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
28
26
 
29
- string public constant INSTANCE_ROLE_NAME = "InstanceRole";
30
- string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
31
- string public constant ORACLE_OWNER_ROLE_NAME = "OracleOwnerRole";
32
- string public constant POOL_OWNER_ROLE_NAME = "PoolOwnerRole";
33
- string public constant PRODUCT_OWNER_ROLE_NAME = "ProductOwnerRole";
34
-
35
- constructor() ModuleAuthorization(INSTANCE_TARGET_NAME) {}
27
+ constructor() Authorization(INSTANCE_TARGET_NAME) {}
36
28
 
37
29
 
38
30
  function _setupRoles()
39
31
  internal
40
32
  override
41
33
  {
42
- _addGifRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME);
43
- _addGifRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME);
44
- _addGifRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME);
45
- _addGifRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME);
34
+ // empty implementation
46
35
  }
47
36
 
48
37
 
@@ -53,7 +42,7 @@ contract InstanceAuthorizationV3
53
42
  // instance target
54
43
  _addTargetWithRole(
55
44
  INSTANCE_TARGET_NAME,
56
- _getTargetRoleId(INSTANCE()),
45
+ _toTargetRoleId(INSTANCE()),
57
46
  INSTANCE_ROLE_NAME);
58
47
 
59
48
  // instance supporting targets
@@ -83,6 +72,7 @@ contract InstanceAuthorizationV3
83
72
  _setupInstanceAdminAuthorization();
84
73
  _setupInstanceStoreAuthorization();
85
74
  _setupBundleSetAuthorization();
75
+
86
76
  }
87
77
 
88
78
 
@@ -118,7 +108,7 @@ contract InstanceAuthorizationV3
118
108
  IAccess.FunctionInfo[] storage functions;
119
109
 
120
110
  // authorize instance role
121
- functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
111
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _toTargetRoleId(INSTANCE()));
122
112
  _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
123
113
 
124
114
  // authorize instance service role
@@ -2,12 +2,12 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
- import {ClaimId} from "../type/ClaimId.sol";
5
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
6
6
  import {DistributorType} from "../type/DistributorType.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
- import {PayoutId} from "../type/PayoutId.sol";
10
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
11
11
  import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
12
12
  import {RequestId} from "../type/RequestId.sol";
13
13
  import {RiskId} from "../type/RiskId.sol";
@@ -26,6 +26,7 @@ import {IRisk} from "../instance/module/IRisk.sol";
26
26
  import {TimestampLib} from "../type/Timestamp.sol";
27
27
 
28
28
  import {InstanceStore} from "./InstanceStore.sol";
29
+ import {BundleSet} from "./BundleSet.sol";
29
30
 
30
31
 
31
32
  contract InstanceReader {
@@ -37,6 +38,7 @@ contract InstanceReader {
37
38
 
38
39
  IInstance internal _instance;
39
40
  InstanceStore internal _store;
41
+ BundleSet internal _bundleSet;
40
42
 
41
43
  /// @dev This initializer needs to be called from the instance itself.
42
44
  function initialize() public {
@@ -56,6 +58,7 @@ contract InstanceReader {
56
58
  _initialized = true;
57
59
  _instance = IInstance(instanceAddress);
58
60
  _store = _instance.getInstanceStore();
61
+ _bundleSet = _instance.getBundleSet();
59
62
  }
60
63
 
61
64
 
@@ -99,6 +102,22 @@ contract InstanceReader {
99
102
  return _store.getState(toPremiumKey(policyNftId));
100
103
  }
101
104
 
105
+ function activeBundles(NftId poolNftId)
106
+ public
107
+ view
108
+ returns (uint256 bundles)
109
+ {
110
+ return _bundleSet.activeBundles(poolNftId);
111
+ }
112
+
113
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx)
114
+ public
115
+ view
116
+ returns (NftId bundleNftId)
117
+ {
118
+ return _bundleSet.getActiveBundleNftId(poolNftId, idx);
119
+ }
120
+
102
121
  function getBundleState(NftId bundleNftId)
103
122
  public
104
123
  view
@@ -107,14 +126,8 @@ contract InstanceReader {
107
126
  return _store.getState(toBundleKey(bundleNftId));
108
127
  }
109
128
 
110
- /// @dev returns true iff policy may be closed
111
- /// a policy can be closed all conditions below are met
112
- /// - policy exists
113
- /// - has been activated
114
- /// - is not yet closed
115
- /// - has no open claims
116
- /// - claim amount matches sum insured amount or is expired
117
- function policyIsCloseable(NftId policyNftId)
129
+ /// @dev Returns true iff policy is active.
130
+ function policyIsActive(NftId policyNftId)
118
131
  public
119
132
  view
120
133
  returns (bool isCloseable)
@@ -123,17 +136,27 @@ contract InstanceReader {
123
136
 
124
137
  if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
125
138
  if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
126
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
127
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
139
+ if (info.activatedAt > TimestampLib.blockTimestamp()) { return false; } // not yet active
140
+ if (info.expiredAt <= TimestampLib.blockTimestamp()) { return false; } // already expired
128
141
 
129
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
130
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
142
+ return true;
143
+ }
144
+
145
+ function claims(NftId policyNftId)
146
+ public
147
+ view
148
+ returns (uint16 claims)
149
+ {
150
+ return getPolicyInfo(policyNftId).claimsCount;
151
+ }
131
152
 
132
- // not closeable: not yet expired
133
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
134
153
 
135
- // all conditionsl to close the policy are met
136
- return true;
154
+ function getClaimId(uint idx)
155
+ public
156
+ view
157
+ returns (ClaimId claimId)
158
+ {
159
+ return ClaimIdLib.toClaimId(idx + 1);
137
160
  }
138
161
 
139
162
  function getClaimInfo(NftId policyNftId, ClaimId claimId)
@@ -147,6 +170,7 @@ contract InstanceReader {
147
170
  }
148
171
  }
149
172
 
173
+
150
174
  function getClaimState(NftId policyNftId, ClaimId claimId)
151
175
  public
152
176
  view
@@ -155,6 +179,34 @@ contract InstanceReader {
155
179
  return _store.getState(claimId.toKey32(policyNftId));
156
180
  }
157
181
 
182
+
183
+ function payouts(NftId policyNftId, ClaimId claimId)
184
+ public
185
+ view
186
+ returns (uint24 payouts)
187
+ {
188
+ return getClaimInfo(policyNftId, claimId).payoutsCount;
189
+ }
190
+
191
+
192
+ function getPayoutId(ClaimId claimId, uint24 idx)
193
+ public
194
+ view
195
+ returns (PayoutId payoutId)
196
+ {
197
+ return PayoutIdLib.toPayoutId(claimId, idx + 1);
198
+ }
199
+
200
+
201
+ function getRemainingClaimableAmount(NftId policyNftId)
202
+ public
203
+ view
204
+ returns (Amount remainingClaimableAmount)
205
+ {
206
+ IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
207
+ return info.sumInsuredAmount - info.claimAmount;
208
+ }
209
+
158
210
  function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
159
211
  public
160
212
  view
@@ -185,6 +237,19 @@ contract InstanceReader {
185
237
  }
186
238
  }
187
239
 
240
+ function getWallet(NftId componentNftId)
241
+ public
242
+ view
243
+ returns (address tokenHandler)
244
+ {
245
+ bytes memory data = _store.getData(toComponentKey(componentNftId));
246
+
247
+ if (data.length > 0) {
248
+ IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
249
+ return info.tokenHandler.getWallet();
250
+ }
251
+ }
252
+
188
253
  function getTokenHandler(NftId componentNftId)
189
254
  public
190
255
  view