@etherisc/gif-next 0.0.2-f7d1200-068 → 0.0.2-f7fa064-035

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 (448) hide show
  1. package/README.md +5 -2
  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 +157 -273
  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 +91 -239
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  25. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +190 -292
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  27. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +107 -123
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  29. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +78 -92
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +78 -62
  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 +1519 -0
  36. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  37. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +470 -0
  38. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  39. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2072 -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 +1471 -0
  46. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  47. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1231 -0
  48. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  49. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1573 -0
  50. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  51. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2095 -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 +56 -123
  60. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  61. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +166 -139
  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 +446 -81
  66. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  67. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +80 -245
  68. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  69. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +75 -87
  70. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  71. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +335 -126
  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 +131 -247
  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 +66 -80
  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 +79 -227
  99. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  100. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +91 -159
  101. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +75 -83
  103. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  104. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +102 -254
  105. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  106. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +82 -22
  107. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  108. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +172 -228
  109. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  110. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +114 -110
  111. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  112. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +53 -31
  113. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  114. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +91 -77
  115. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  116. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +221 -151
  117. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/Pool.sol/Pool.json +102 -241
  119. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  120. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +299 -374
  121. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +93 -125
  123. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  124. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +76 -168
  125. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  126. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +72 -92
  127. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  128. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +136 -243
  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 +282 -190
  133. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  134. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +116 -104
  135. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  136. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +34 -0
  137. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  138. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +161 -7
  139. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  140. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +144 -35
  141. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  142. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +114 -85
  143. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  144. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +124 -97
  145. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  146. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +31 -2
  147. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  148. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +231 -264
  149. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +107 -119
  151. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  152. package/artifacts/contracts/product/PricingService.sol/PricingService.json +199 -309
  153. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +96 -120
  155. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  156. package/artifacts/contracts/product/Product.sol/Product.json +136 -243
  157. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  158. package/artifacts/contracts/product/RiskService.sol/RiskService.json +622 -0
  159. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  160. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +694 -0
  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 +286 -34
  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 +492 -95
  171. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  172. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +283 -143
  173. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  174. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +78 -284
  175. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  176. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +67 -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 +129 -221
  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 +68 -201
  187. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  188. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +355 -299
  189. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  190. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +122 -128
  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 +92 -0
  195. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  196. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +55 -54
  197. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  198. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +321 -19
  199. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  200. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +66 -80
  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 +79 -227
  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 +288 -16
  236. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  237. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  238. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  239. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +82 -55
  240. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  241. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +29 -21
  242. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  243. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +63 -93
  244. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  245. package/artifacts/contracts/staking/Staking.sol/Staking.json +167 -270
  246. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  247. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +46 -5
  248. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  249. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +100 -97
  250. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  251. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -11
  252. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  253. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +71 -165
  254. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  255. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +71 -79
  256. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  257. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +169 -128
  258. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  259. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +54 -23
  260. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  261. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  263. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  266. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  268. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Fee.sol/FeeLib.json +2 -2
  270. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  271. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  272. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  273. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  274. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  275. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  276. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  277. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  278. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  279. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  280. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  281. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  282. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  283. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  284. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  285. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +60 -4
  286. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  288. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  290. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  291. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  293. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  294. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  295. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  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 +55 -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 -40
  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 +2 -1
  317. package/contracts/distribution/Distribution.sol +7 -17
  318. package/contracts/distribution/DistributionService.sol +84 -65
  319. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  320. package/contracts/distribution/IDistributionComponent.sol +1 -1
  321. package/contracts/distribution/IDistributionService.sol +9 -5
  322. package/contracts/examples/fire/DamageLevel.sol +59 -0
  323. package/contracts/examples/fire/FirePool.sol +73 -0
  324. package/contracts/examples/fire/FirePoolAuthorization.sol +34 -0
  325. package/contracts/examples/fire/FireProduct.sol +415 -0
  326. package/contracts/examples/fire/FireProductAuthorization.sol +44 -0
  327. package/contracts/examples/fire/FireUSD.sol +26 -0
  328. package/contracts/examples/unpermissioned/SimpleDistribution.sol +50 -0
  329. package/contracts/examples/unpermissioned/SimpleOracle.sol +137 -0
  330. package/contracts/examples/unpermissioned/SimplePool.sol +76 -0
  331. package/contracts/examples/unpermissioned/SimpleProduct.sol +351 -0
  332. package/contracts/instance/IInstance.sol +10 -30
  333. package/contracts/instance/IInstanceService.sol +2 -23
  334. package/contracts/instance/Instance.sol +29 -51
  335. package/contracts/instance/InstanceAdmin.sol +43 -32
  336. package/contracts/instance/InstanceAuthorizationV3.sol +11 -21
  337. package/contracts/instance/InstanceReader.sol +106 -19
  338. package/contracts/instance/InstanceService.sol +75 -104
  339. package/contracts/instance/InstanceServiceManager.sol +6 -7
  340. package/contracts/instance/InstanceStore.sol +11 -1
  341. package/contracts/instance/base/ObjectLifecycle.sol +8 -1
  342. package/contracts/instance/module/IComponents.sol +10 -5
  343. package/contracts/instance/module/IPolicy.sol +23 -23
  344. package/contracts/oracle/BasicOracle.sol +0 -1
  345. package/contracts/oracle/IOracleService.sol +2 -1
  346. package/contracts/oracle/Oracle.sol +6 -16
  347. package/contracts/oracle/OracleService.sol +47 -34
  348. package/contracts/oracle/OracleServiceManager.sol +6 -6
  349. package/contracts/pool/BasicPool.sol +14 -26
  350. package/contracts/pool/BasicPoolAuthorization.sol +0 -1
  351. package/contracts/pool/BundleService.sol +93 -50
  352. package/contracts/pool/BundleServiceManager.sol +6 -6
  353. package/contracts/pool/IBundleService.sol +11 -3
  354. package/contracts/pool/IPoolComponent.sol +18 -8
  355. package/contracts/pool/IPoolService.sol +49 -31
  356. package/contracts/pool/Pool.sol +53 -51
  357. package/contracts/pool/PoolService.sol +159 -174
  358. package/contracts/pool/PoolServiceManager.sol +4 -4
  359. package/contracts/product/ApplicationService.sol +59 -30
  360. package/contracts/product/ApplicationServiceManager.sol +4 -4
  361. package/contracts/product/BasicProduct.sol +7 -6
  362. package/contracts/product/BasicProductAuthorization.sol +0 -1
  363. package/contracts/product/ClaimService.sol +309 -121
  364. package/contracts/product/ClaimServiceManager.sol +4 -4
  365. package/contracts/product/IApplicationService.sol +1 -0
  366. package/contracts/product/IClaimService.sol +30 -7
  367. package/contracts/product/IPolicyService.sol +21 -26
  368. package/contracts/product/IPricingService.sol +10 -10
  369. package/contracts/product/IProductComponent.sol +23 -4
  370. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  371. package/contracts/product/PolicyService.sol +309 -174
  372. package/contracts/product/PolicyServiceManager.sol +4 -4
  373. package/contracts/product/PricingService.sol +54 -54
  374. package/contracts/product/PricingServiceManager.sol +3 -3
  375. package/contracts/product/Product.sol +117 -73
  376. package/contracts/product/{ProductService.sol → RiskService.sol} +7 -10
  377. package/contracts/product/RiskServiceManager.sol +39 -0
  378. package/contracts/registry/ChainNft.sol +68 -38
  379. package/contracts/registry/IRegistry.sol +55 -18
  380. package/contracts/registry/IRegistryService.sol +5 -12
  381. package/contracts/registry/ITransferInterceptor.sol +1 -2
  382. package/contracts/registry/Registry.sol +342 -201
  383. package/contracts/registry/RegistryAdmin.sol +134 -51
  384. package/contracts/registry/RegistryService.sol +35 -46
  385. package/contracts/registry/RegistryServiceManager.sol +2 -2
  386. package/contracts/registry/ReleaseLifecycle.sol +6 -3
  387. package/contracts/registry/ReleaseRegistry.sol +204 -188
  388. package/contracts/registry/ServiceAuthorizationV3.sol +16 -22
  389. package/contracts/shared/Component.sol +36 -52
  390. package/contracts/shared/ComponentService.sol +246 -151
  391. package/contracts/shared/ComponentServiceManager.sol +8 -5
  392. package/contracts/shared/ComponentVerifyingService.sol +23 -14
  393. package/contracts/shared/ContractLib.sol +38 -0
  394. package/contracts/shared/IComponent.sol +6 -3
  395. package/contracts/shared/IComponentService.sol +25 -13
  396. package/contracts/shared/IInstanceLinkedComponent.sol +2 -17
  397. package/contracts/shared/ILifecycle.sol +3 -1
  398. package/contracts/shared/INftOwnable.sol +2 -0
  399. package/contracts/shared/IPolicyHolder.sol +12 -22
  400. package/contracts/shared/IRegisterable.sol +11 -0
  401. package/contracts/shared/InitializableERC165.sol +2 -2
  402. package/contracts/shared/InstanceLinkedComponent.sol +72 -31
  403. package/contracts/shared/KeyValueStore.sol +1 -1
  404. package/contracts/shared/Lifecycle.sol +15 -4
  405. package/contracts/shared/NftOwnable.sol +27 -7
  406. package/contracts/shared/PolicyHolder.sol +15 -52
  407. package/contracts/shared/Registerable.sol +19 -9
  408. package/contracts/shared/RegistryLinked.sol +3 -2
  409. package/contracts/shared/Service.sol +20 -18
  410. package/contracts/shared/TokenHandler.sol +99 -22
  411. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  412. package/contracts/staking/IStaking.sol +2 -1
  413. package/contracts/staking/IStakingService.sol +0 -3
  414. package/contracts/staking/StakeManagerLib.sol +18 -25
  415. package/contracts/staking/Staking.sol +13 -32
  416. package/contracts/staking/StakingManager.sol +8 -6
  417. package/contracts/staking/StakingReader.sol +12 -5
  418. package/contracts/staking/StakingService.sol +17 -17
  419. package/contracts/staking/StakingServiceManager.sol +2 -2
  420. package/contracts/staking/TargetManagerLib.sol +7 -3
  421. package/contracts/type/Amount.sol +15 -0
  422. package/contracts/type/ClaimId.sol +6 -1
  423. package/contracts/type/NftId.sol +1 -0
  424. package/contracts/type/ObjectType.sol +16 -11
  425. package/contracts/type/PayoutId.sol +10 -10
  426. package/contracts/type/RiskId.sol +15 -1
  427. package/contracts/type/RoleId.sol +0 -12
  428. package/contracts/type/Seconds.sol +8 -0
  429. package/contracts/type/StateId.sol +15 -1
  430. package/contracts/type/UFixed.sol +4 -0
  431. package/contracts/upgradeability/ProxyManager.sol +68 -34
  432. package/contracts/upgradeability/Versionable.sol +2 -2
  433. package/package.json +3 -2
  434. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +0 -4
  435. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.json +0 -290
  436. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +0 -4
  437. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +0 -390
  438. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  439. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  440. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  441. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  442. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  443. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  444. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  445. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  446. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  447. package/contracts/product/ProductServiceManager.sol +0 -39
  448. package/contracts/shared/InitializableCustom.sol +0 -177
@@ -7,13 +7,15 @@ 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 {IModuleAuthorization} from "../authorization/IModuleAuthorization.sol";
10
+ import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
11
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
11
12
  import {IRegistry} from "../registry/IRegistry.sol";
12
13
  import {IInstance} from "./IInstance.sol";
13
14
  import {IService} from "../shared/IService.sol";
14
15
  import {ObjectType, ObjectTypeLib, ALL, POOL, RELEASE} from "../type/ObjectType.sol";
15
- 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";
16
17
  import {Str, StrLib} from "../type/String.sol";
18
+ import {TokenHandler} from "../shared/TokenHandler.sol";
17
19
  import {VersionPart} from "../type/Version.sol";
18
20
 
19
21
 
@@ -36,16 +38,16 @@ contract InstanceAdmin is
36
38
  IRegistry internal _registry;
37
39
  uint64 _idNext;
38
40
 
39
- IModuleAuthorization _instanceAuthorization;
41
+ IAuthorization _instanceAuthorization;
40
42
 
41
43
  /// @dev Only used for master instance admin.
42
44
  /// Contracts created via constructor come with disabled initializers.
43
45
  constructor(
44
- IModuleAuthorization instanceAuthorization
46
+ address instanceAuthorization
45
47
  )
46
48
  AccessAdmin()
47
49
  {
48
- _instanceAuthorization = instanceAuthorization;
50
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
49
51
  }
50
52
 
51
53
  /// @dev Initializes this instance admin with the provided instances authorization specification.
@@ -54,7 +56,7 @@ contract InstanceAdmin is
54
56
  /// Important: Initialization of this instance admin is only complete after calling function initializeInstance.
55
57
  function initialize(
56
58
  AccessManagerCloneable accessManager,
57
- IModuleAuthorization instanceAuthorization
59
+ address instanceAuthorization
58
60
  )
59
61
  external
60
62
  initializer()
@@ -66,7 +68,7 @@ contract InstanceAdmin is
66
68
  _createAdminAndPublicRoles();
67
69
 
68
70
  // store instance authorization specification
69
- _instanceAuthorization = IModuleAuthorization(instanceAuthorization);
71
+ _instanceAuthorization = IAuthorization(instanceAuthorization);
70
72
  }
71
73
 
72
74
  function _checkTargetIsReadyForAuthorization(address target)
@@ -94,7 +96,7 @@ contract InstanceAdmin is
94
96
  _registry = _instance.getRegistry();
95
97
 
96
98
  // check matching releases
97
- if (_instanceAuthorization.getRelease() != _instance.getMajorVersion()) {
99
+ if (_instanceAuthorization.getRelease() != _instance.getRelease()) {
98
100
  revert ErrorInstanceAdminReleaseMismatch();
99
101
  }
100
102
 
@@ -102,50 +104,56 @@ contract InstanceAdmin is
102
104
  _createRoles(_instanceAuthorization);
103
105
  _createModuleTargetsWithRoles();
104
106
  _createTargetAuthorizations(_instanceAuthorization);
105
-
106
- // grant component owner roles to instance owner
107
- _grantComponentOwnerRoles();
108
107
  }
109
108
 
110
109
 
111
110
  /// @dev Initializes the authorization for the specified component.
112
111
  /// Important: The component MUST be registered.
113
112
  function initializeComponentAuthorization(
114
- address componentAddress,
115
- IAuthorization authorization
113
+ IInstanceLinkedComponent component
116
114
  )
117
115
  external
118
116
  {
119
- _checkTargetIsReadyForAuthorization(componentAddress);
117
+ _checkTargetIsReadyForAuthorization(address(component));
120
118
 
119
+ // get authorization specification
120
+ IAuthorization authorization = component.getAuthorization();
121
+
122
+ // create roles
121
123
  _createRoles(authorization);
122
124
 
123
125
  // create component target
124
126
  _createTarget(
125
- componentAddress,
127
+ address(component),
126
128
  authorization.getTargetName(),
127
129
  true, // checkAuthority
128
130
  false); // custom
129
131
 
132
+ _createTarget(
133
+ address(component.getTokenHandler()),
134
+ string(abi.encodePacked(authorization.getTargetName(), "TH")),
135
+ true,
136
+ false);
137
+
138
+ FunctionInfo[] memory functions = new FunctionInfo[](3);
139
+ functions[0] = toFunction(TokenHandler.collectTokens.selector, "collectTokens");
140
+ functions[1] = toFunction(TokenHandler.collectTokensToThreeRecipients.selector, "collectTokensToThreeRecipients");
141
+ functions[2] = toFunction(TokenHandler.distributeTokens.selector, "distributeTokens");
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
+ _authorizeTargetFunctions(
145
+ address(component.getTokenHandler()),
146
+ getPublicRole(),
147
+ functions);
148
+
130
149
  _grantRoleToAccount(
131
150
  authorization.getTargetRole(
132
- authorization.getTarget()),
133
- componentAddress);
151
+ authorization.getMainTarget()),
152
+ address(component));
134
153
 
135
154
  _createTargetAuthorizations(authorization);
136
155
  }
137
156
 
138
-
139
- function _grantComponentOwnerRoles()
140
- internal
141
- {
142
- address instanceOwner = _registry.ownerOf(_instance.getNftId());
143
- _grantRoleToAccount(DISTRIBUTION_OWNER_ROLE(), instanceOwner);
144
- _grantRoleToAccount(ORACLE_OWNER_ROLE(), instanceOwner);
145
- _grantRoleToAccount(POOL_OWNER_ROLE(), instanceOwner);
146
- _grantRoleToAccount(PRODUCT_OWNER_ROLE(), instanceOwner);
147
- }
148
-
149
157
  /// @dev Creates a custom role
150
158
  // TODO implement
151
159
  // function createRole()
@@ -169,7 +177,7 @@ contract InstanceAdmin is
169
177
  function getInstanceAuthorization()
170
178
  external
171
179
  view
172
- returns (IModuleAuthorization instanceAuthorizaion)
180
+ returns (IAuthorization instanceAuthorizaion)
173
181
  {
174
182
  return _instanceAuthorization;
175
183
  }
@@ -184,9 +192,12 @@ contract InstanceAdmin is
184
192
 
185
193
  for(uint256 i = 0; i < roles.length; i++) {
186
194
  roleId = roles[i];
187
- _createRole(
188
- roleId,
189
- authorization.getRoleInfo(roleId));
195
+
196
+ if (!roleExists(roleId)) {
197
+ _createRole(
198
+ roleId,
199
+ authorization.getRoleInfo(roleId));
200
+ }
190
201
  }
191
202
  }
192
203
 
@@ -5,46 +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
- ADMIN_ROLE, 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";
18
- import {RoleId} from "../type/RoleId.sol";
19
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
13
+ import {Authorization} from "../authorization/Authorization.sol";
20
14
 
21
15
 
22
16
  contract InstanceAuthorizationV3
23
- is ModuleAuthorization
17
+ is Authorization
24
18
  {
25
19
 
20
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
21
+
26
22
  string public constant INSTANCE_TARGET_NAME = "Instance";
27
23
  string public constant INSTANCE_STORE_TARGET_NAME = "InstanceStore";
28
24
  string public constant INSTANCE_ADMIN_TARGET_NAME = "InstanceAdmin";
29
25
  string public constant BUNDLE_SET_TARGET_NAME = "BundleSet";
30
26
 
31
- string public constant INSTANCE_ROLE_NAME = "InstanceRole";
32
- string public constant DISTRIBUTION_OWNER_ROLE_NAME = "DistributionOwnerRole";
33
- string public constant ORACLE_OWNER_ROLE_NAME = "OracleOwnerRole";
34
- string public constant POOL_OWNER_ROLE_NAME = "PoolOwnerRole";
35
- string public constant PRODUCT_OWNER_ROLE_NAME = "ProductOwnerRole";
36
-
37
- constructor() ModuleAuthorization(INSTANCE_TARGET_NAME) {}
27
+ constructor() Authorization(INSTANCE_TARGET_NAME) {}
38
28
 
39
29
 
40
30
  function _setupRoles()
41
31
  internal
42
32
  override
43
33
  {
44
- _addGifRole(DISTRIBUTION_OWNER_ROLE(), DISTRIBUTION_OWNER_ROLE_NAME);
45
- _addGifRole(ORACLE_OWNER_ROLE(), ORACLE_OWNER_ROLE_NAME);
46
- _addGifRole(POOL_OWNER_ROLE(), POOL_OWNER_ROLE_NAME);
47
- _addGifRole(PRODUCT_OWNER_ROLE(), PRODUCT_OWNER_ROLE_NAME);
34
+ // empty implementation
48
35
  }
49
36
 
50
37
 
@@ -55,7 +42,7 @@ contract InstanceAuthorizationV3
55
42
  // instance target
56
43
  _addTargetWithRole(
57
44
  INSTANCE_TARGET_NAME,
58
- _getTargetRoleId(INSTANCE()),
45
+ _toTargetRoleId(INSTANCE()),
59
46
  INSTANCE_ROLE_NAME);
60
47
 
61
48
  // instance supporting targets
@@ -85,6 +72,7 @@ contract InstanceAuthorizationV3
85
72
  _setupInstanceAdminAuthorization();
86
73
  _setupInstanceStoreAuthorization();
87
74
  _setupBundleSetAuthorization();
75
+
88
76
  }
89
77
 
90
78
 
@@ -120,7 +108,7 @@ contract InstanceAuthorizationV3
120
108
  IAccess.FunctionInfo[] storage functions;
121
109
 
122
110
  // authorize instance role
123
- functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _getTargetRoleId(INSTANCE()));
111
+ functions = _authorizeForTarget(INSTANCE_ADMIN_TARGET_NAME, _toTargetRoleId(INSTANCE()));
124
112
  _authorize(functions, InstanceAdmin.grantRole.selector, "grantRole");
125
113
 
126
114
  // authorize instance service role
@@ -191,6 +179,8 @@ contract InstanceAuthorizationV3
191
179
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(POLICY()));
192
180
  _authorize(functions, InstanceStore.updatePolicy.selector, "updatePolicy");
193
181
  _authorize(functions, InstanceStore.updatePolicyState.selector, "updatePolicyState");
182
+ _authorize(functions, InstanceStore.createPremium.selector, "createPremium");
183
+ _authorize(functions, InstanceStore.updatePremiumState.selector, "updatePremiumState");
194
184
 
195
185
  // authorize claim service role
196
186
  functions = _authorizeForTarget(INSTANCE_STORE_TARGET_NAME, getServiceRole(CLAIM()));
@@ -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
- import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
- import {PayoutId} from "../type/PayoutId.sol";
9
+ import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.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
 
@@ -80,6 +83,41 @@ contract InstanceReader {
80
83
  return _store.getState(toPolicyKey(policyNftId));
81
84
  }
82
85
 
86
+ function getPremiumInfo(NftId policyNftId)
87
+ public
88
+ view
89
+ returns (IPolicy.PremiumInfo memory info)
90
+ {
91
+ bytes memory data = _store.getData(toPremiumKey(policyNftId));
92
+ if (data.length > 0) {
93
+ return abi.decode(data, (IPolicy.PremiumInfo));
94
+ }
95
+ }
96
+
97
+ function getPremiumInfoState(NftId policyNftId)
98
+ public
99
+ view
100
+ returns (StateId state)
101
+ {
102
+ return _store.getState(toPremiumKey(policyNftId));
103
+ }
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
+
83
121
  function getBundleState(NftId bundleNftId)
84
122
  public
85
123
  view
@@ -88,14 +126,8 @@ contract InstanceReader {
88
126
  return _store.getState(toBundleKey(bundleNftId));
89
127
  }
90
128
 
91
- /// @dev returns true iff policy may be closed
92
- /// a policy can be closed all conditions below are met
93
- /// - policy exists
94
- /// - has been activated
95
- /// - is not yet closed
96
- /// - has no open claims
97
- /// - claim amount matches sum insured amount or is expired
98
- function policyIsCloseable(NftId policyNftId)
129
+ /// @dev Returns true iff policy is active.
130
+ function policyIsActive(NftId policyNftId)
99
131
  public
100
132
  view
101
133
  returns (bool isCloseable)
@@ -104,17 +136,27 @@ contract InstanceReader {
104
136
 
105
137
  if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
106
138
  if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
107
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
108
- 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
141
+
142
+ return true;
143
+ }
109
144
 
110
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
111
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
145
+ function claims(NftId policyNftId)
146
+ public
147
+ view
148
+ returns (uint16 claims)
149
+ {
150
+ return getPolicyInfo(policyNftId).claimsCount;
151
+ }
112
152
 
113
- // not closeable: not yet expired
114
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
115
153
 
116
- // all conditionsl to close the policy are met
117
- return true;
154
+ function getClaimId(uint idx)
155
+ public
156
+ view
157
+ returns (ClaimId claimId)
158
+ {
159
+ return ClaimIdLib.toClaimId(idx + 1);
118
160
  }
119
161
 
120
162
  function getClaimInfo(NftId policyNftId, ClaimId claimId)
@@ -128,6 +170,7 @@ contract InstanceReader {
128
170
  }
129
171
  }
130
172
 
173
+
131
174
  function getClaimState(NftId policyNftId, ClaimId claimId)
132
175
  public
133
176
  view
@@ -136,6 +179,34 @@ contract InstanceReader {
136
179
  return _store.getState(claimId.toKey32(policyNftId));
137
180
  }
138
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
+
139
210
  function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
140
211
  public
141
212
  view
@@ -166,6 +237,19 @@ contract InstanceReader {
166
237
  }
167
238
  }
168
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.wallet;
250
+ }
251
+ }
252
+
169
253
  function getTokenHandler(NftId componentNftId)
170
254
  public
171
255
  view
@@ -364,6 +448,9 @@ contract InstanceReader {
364
448
  return policyNftId.toKey32(POLICY());
365
449
  }
366
450
 
451
+ function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
452
+ return policyNftId.toKey32(PREMIUM());
453
+ }
367
454
 
368
455
  function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
369
456
  return distributorNftId.toKey32(DISTRIBUTOR());