@etherisc/gif-next 0.0.2-952752e-374 → 0.0.2-957bd35-589

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 (491) hide show
  1. package/README.md +63 -312
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +1 -1
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +106 -38
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +1 -1
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +111 -45
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +1 -1
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +58 -6
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +690 -296
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +2008 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +8 -39
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +438 -35
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +529 -221
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +191 -21
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +256 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +426 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +66 -154
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +427 -53
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +21 -98
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +512 -204
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +167 -77
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +20 -97
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +358 -82
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +109 -110
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +401 -59
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +145 -142
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +426 -52
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +128 -178
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +1 -1
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +426 -52
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +39 -73
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +130 -148
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +1 -1
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +401 -59
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +360 -193
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +1 -1
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +426 -52
  63. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  64. package/artifacts/contracts/{shared/IKeyValueStore.sol/IKeyValueStore.json → instance/BaseStore.sol/BaseStore.json} +51 -229
  65. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  66. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +2 -2
  67. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  68. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  69. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +482 -28
  71. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  72. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +355 -12
  73. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  74. package/artifacts/contracts/instance/Instance.sol/Instance.json +520 -85
  75. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1037 -437
  77. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +369 -71
  79. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +674 -487
  81. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +387 -64
  83. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  84. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +100 -52
  85. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1328 -2007
  87. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  88. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  89. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +1 -1
  90. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +101 -88
  91. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  92. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  93. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  94. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  96. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  98. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  99. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +2 -2
  100. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +1 -1
  101. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +20 -20
  102. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  103. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  104. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  105. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  107. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  109. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +33 -45
  110. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  111. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +425 -54
  112. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  113. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +19 -31
  115. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +29 -0
  117. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  118. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +19 -31
  119. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  120. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +87 -42
  121. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +116 -50
  123. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +59 -79
  125. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  126. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +401 -59
  127. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  128. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +280 -209
  129. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  130. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +134 -68
  131. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  132. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +174 -87
  133. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +29 -41
  135. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +306 -166
  137. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  138. package/artifacts/contracts/pool/Pool.sol/Pool.json +29 -41
  139. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  140. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  141. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +547 -340
  143. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  144. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +162 -68
  145. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  146. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +273 -50
  147. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +123 -41
  149. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  150. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +46 -58
  151. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +426 -52
  153. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +137 -139
  155. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  156. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +128 -82
  157. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +208 -1
  159. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +45 -23
  161. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +133 -65
  163. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +50 -0
  165. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  166. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +40 -52
  167. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +231 -19
  169. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +245 -161
  171. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  172. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  173. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  174. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +146 -80
  175. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PricingService.sol/PricingService.json +116 -114
  177. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +115 -65
  179. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  180. package/artifacts/contracts/product/Product.sol/Product.json +40 -52
  181. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  182. package/artifacts/contracts/product/RiskService.sol/RiskService.json +279 -43
  183. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +111 -41
  185. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  186. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  187. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +52 -22
  188. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  189. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +29 -0
  190. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  192. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/Registry.sol/Registry.json +90 -60
  194. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +824 -430
  196. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  197. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1137 -0
  198. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  199. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +47 -18
  200. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  201. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +96 -38
  202. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +933 -457
  204. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  206. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +202 -126
  208. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  209. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +459 -26
  210. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  211. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +119 -59
  212. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Component.sol/Component.json +19 -31
  214. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +206 -252
  216. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +130 -72
  218. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  219. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +130 -39
  220. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +1 -1
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +2 -2
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +19 -31
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +111 -157
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -31
  230. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  231. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +19 -0
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +19 -0
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +29 -0
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -31
  243. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  244. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  246. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +21 -2
  248. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  250. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +19 -0
  252. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  254. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  255. package/artifacts/contracts/shared/Service.sol/Service.json +29 -0
  256. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +62 -161
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +1 -1
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +118 -29
  260. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +32 -32
  262. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1453 -153
  264. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +187 -107
  266. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  267. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  268. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  269. package/artifacts/contracts/staking/Staking.sol/Staking.json +1565 -239
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  271. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  272. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +146 -67
  274. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +294 -177
  276. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +229 -157
  278. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +99 -45
  280. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1633 -819
  282. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  283. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  285. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +159 -87
  286. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  288. package/artifacts/contracts/type/Amount.sol/AmountLib.json +10 -10
  289. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +64 -19
  291. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  292. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  293. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  295. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  296. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  297. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  298. package/artifacts/contracts/type/Fee.sol/FeeLib.json +93 -37
  299. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  300. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  301. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +1 -1
  302. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +2 -2
  303. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  305. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  306. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  307. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  309. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  311. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  313. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  315. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +9 -4
  317. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  318. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  319. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  320. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +45 -2
  321. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  323. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  325. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  328. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  329. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +3 -3
  330. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +60 -36
  332. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  334. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +56 -2
  336. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  337. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.json +10 -0
  338. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  339. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +81 -27
  340. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  341. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  342. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  343. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.json +10 -0
  344. package/contracts/accounting/AccountingService.sol +15 -3
  345. package/contracts/accounting/IAccountingService.sol +4 -2
  346. package/contracts/authorization/AccessAdmin.sol +364 -344
  347. package/contracts/authorization/AccessAdminLib.sol +678 -0
  348. package/contracts/authorization/AccessManagerCloneable.sol +23 -32
  349. package/contracts/authorization/Authorization.sol +161 -260
  350. package/contracts/authorization/IAccess.sol +29 -12
  351. package/contracts/authorization/IAccessAdmin.sol +85 -83
  352. package/contracts/authorization/IAuthorization.sol +9 -43
  353. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  354. package/contracts/authorization/ServiceAuthorization.sol +228 -34
  355. package/contracts/distribution/BasicDistribution.sol +14 -13
  356. package/contracts/distribution/BasicDistributionAuthorization.sol +29 -9
  357. package/contracts/distribution/Distribution.sol +22 -64
  358. package/contracts/distribution/DistributionService.sol +166 -75
  359. package/contracts/distribution/IDistributionComponent.sol +3 -10
  360. package/contracts/distribution/IDistributionService.sol +34 -19
  361. package/contracts/examples/fire/FirePool.sol +0 -4
  362. package/contracts/examples/fire/FirePoolAuthorization.sol +1 -1
  363. package/contracts/examples/fire/FireProduct.sol +7 -12
  364. package/contracts/examples/fire/FireProductAuthorization.sol +1 -1
  365. package/contracts/examples/unpermissioned/SimpleDistribution.sol +32 -8
  366. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +1 -1
  367. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  368. package/contracts/examples/unpermissioned/SimplePool.sol +0 -5
  369. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +1 -1
  370. package/contracts/examples/unpermissioned/SimpleProduct.sol +94 -27
  371. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +1 -1
  372. package/contracts/instance/BaseStore.sol +93 -0
  373. package/contracts/instance/IBaseStore.sol +37 -0
  374. package/contracts/instance/IInstance.sol +103 -13
  375. package/contracts/instance/IInstanceService.sol +54 -7
  376. package/contracts/instance/Instance.sol +177 -61
  377. package/contracts/instance/InstanceAdmin.sol +199 -218
  378. package/contracts/instance/InstanceAuthorizationV3.sol +120 -70
  379. package/contracts/instance/InstanceReader.sol +392 -382
  380. package/contracts/instance/InstanceService.sol +283 -173
  381. package/contracts/instance/InstanceStore.sol +153 -128
  382. package/contracts/instance/ProductStore.sol +290 -0
  383. package/contracts/instance/RiskSet.sol +10 -2
  384. package/contracts/instance/TargetNames.sol +10 -0
  385. package/contracts/instance/base/BalanceStore.sol +4 -6
  386. package/contracts/instance/base/ObjectLifecycle.sol +2 -6
  387. package/contracts/instance/module/IBundle.sol +6 -5
  388. package/contracts/instance/module/IComponents.sol +15 -6
  389. package/contracts/instance/module/IDistribution.sol +21 -8
  390. package/contracts/instance/module/IPolicy.sol +28 -8
  391. package/contracts/instance/module/IRisk.sol +2 -0
  392. package/contracts/oracle/BasicOracle.sol +3 -6
  393. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  394. package/contracts/oracle/IOracle.sol +9 -4
  395. package/contracts/oracle/Oracle.sol +4 -8
  396. package/contracts/oracle/OracleService.sol +8 -8
  397. package/contracts/pool/BasicPool.sol +4 -18
  398. package/contracts/pool/BasicPoolAuthorization.sol +29 -16
  399. package/contracts/pool/BundleService.sol +57 -96
  400. package/contracts/pool/IBundleService.sol +27 -32
  401. package/contracts/pool/IPoolService.sol +57 -40
  402. package/contracts/pool/Pool.sol +15 -29
  403. package/contracts/pool/PoolLib.sol +341 -0
  404. package/contracts/pool/PoolService.sol +189 -190
  405. package/contracts/product/ApplicationService.sol +85 -17
  406. package/contracts/product/BasicProduct.sol +2 -5
  407. package/contracts/product/BasicProductAuthorization.sol +31 -9
  408. package/contracts/product/ClaimService.sol +112 -194
  409. package/contracts/product/IApplicationService.sol +24 -2
  410. package/contracts/product/IClaimService.sol +6 -6
  411. package/contracts/product/IPolicyService.sol +20 -8
  412. package/contracts/product/IPricingService.sol +1 -0
  413. package/contracts/product/IRiskService.sol +25 -10
  414. package/contracts/product/PolicyService.sol +110 -201
  415. package/contracts/product/PolicyServiceLib.sol +139 -0
  416. package/contracts/product/PricingService.sol +33 -31
  417. package/contracts/product/Product.sol +61 -33
  418. package/contracts/product/RiskService.sol +63 -25
  419. package/contracts/registry/IRegistry.sol +17 -9
  420. package/contracts/registry/IRelease.sol +6 -3
  421. package/contracts/registry/Registry.sol +19 -9
  422. package/contracts/registry/RegistryAdmin.sol +85 -256
  423. package/contracts/registry/RegistryAuthorization.sol +337 -0
  424. package/contracts/registry/RegistryService.sol +1 -1
  425. package/contracts/registry/ReleaseAdmin.sol +70 -116
  426. package/contracts/registry/ReleaseRegistry.sol +57 -43
  427. package/contracts/registry/ServiceAuthorizationV3.sol +131 -31
  428. package/contracts/registry/TokenRegistry.sol +56 -52
  429. package/contracts/shared/Component.sol +19 -35
  430. package/contracts/shared/ComponentService.sol +281 -290
  431. package/contracts/shared/ContractLib.sol +137 -77
  432. package/contracts/shared/IComponent.sol +1 -4
  433. package/contracts/shared/IComponentService.sol +21 -26
  434. package/contracts/shared/INftOwnable.sol +2 -0
  435. package/contracts/shared/IRegisterable.sol +0 -1
  436. package/contracts/shared/InitializableERC165.sol +9 -1
  437. package/contracts/shared/InstanceLinkedComponent.sol +8 -13
  438. package/contracts/shared/NftOwnable.sol +4 -2
  439. package/contracts/shared/PolicyHolder.sol +3 -2
  440. package/contracts/shared/Registerable.sol +1 -4
  441. package/contracts/shared/Service.sol +6 -4
  442. package/contracts/shared/TokenHandler.sol +44 -91
  443. package/contracts/staking/IStaking.sol +265 -72
  444. package/contracts/staking/IStakingService.sol +45 -75
  445. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  446. package/contracts/staking/Staking.sol +475 -204
  447. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +55 -84
  448. package/contracts/staking/StakingManager.sol +4 -3
  449. package/contracts/staking/StakingReader.sol +58 -77
  450. package/contracts/staking/StakingService.sol +62 -180
  451. package/contracts/staking/StakingServiceManager.sol +6 -4
  452. package/contracts/staking/StakingStore.sol +1093 -330
  453. package/contracts/staking/TargetHandler.sol +132 -0
  454. package/contracts/staking/TargetManagerLib.sol +69 -46
  455. package/contracts/type/Amount.sol +4 -0
  456. package/contracts/type/Blocknumber.sol +17 -22
  457. package/contracts/type/ChainId.sol +101 -0
  458. package/contracts/type/Fee.sol +8 -8
  459. package/contracts/type/NftId.sol +3 -3
  460. package/contracts/type/ObjectType.sol +69 -52
  461. package/contracts/type/RiskId.sol +4 -3
  462. package/contracts/type/RoleId.sol +60 -45
  463. package/contracts/type/Seconds.sol +19 -0
  464. package/contracts/type/Selector.sol +5 -0
  465. package/contracts/type/String.sol +12 -0
  466. package/contracts/type/Timestamp.sol +4 -2
  467. package/contracts/type/UFixed.sol +28 -10
  468. package/contracts/type/Version.sol +39 -0
  469. package/contracts/upgradeability/IVersionable.sol +3 -0
  470. package/contracts/upgradeability/ProxyManager.sol +26 -12
  471. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +12 -2
  472. package/contracts/upgradeability/Versionable.sol +6 -3
  473. package/package.json +2 -2
  474. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.dbg.json +0 -4
  475. package/artifacts/contracts/authorization/AccessAdmin.sol/IAccessManagedChecker.json +0 -24
  476. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  477. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  478. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  479. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +0 -485
  480. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  481. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  482. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +0 -538
  483. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  484. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  485. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  486. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -205
  487. package/contracts/instance/module/IAccess.sol +0 -46
  488. package/contracts/shared/ComponentVerifyingService.sol +0 -128
  489. package/contracts/shared/IKeyValueStore.sol +0 -54
  490. package/contracts/shared/KeyValueStore.sol +0 -131
  491. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -1,35 +1,45 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {Amount} from "../type/Amount.sol";
5
- import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
6
- import {DistributorType} from "../type/DistributorType.sol";
7
- import {Key32} from "../type/Key32.sol";
8
- import {NftId} from "../type/NftId.sol";
9
- import {COMPONENT, DISTRIBUTOR, DISTRIBUTION, FEE, PREMIUM, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
10
- import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
11
- import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
12
- import {RequestId} from "../type/RequestId.sol";
13
- import {RiskId} from "../type/RiskId.sol";
14
- import {RoleId} from "../type/RoleId.sol";
15
- import {StateId} from "../type/StateId.sol";
16
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
17
5
 
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IBaseStore} from "./IBaseStore.sol";
18
8
  import {IBundle} from "../instance/module/IBundle.sol";
19
9
  import {IComponents} from "../instance/module/IComponents.sol";
20
10
  import {IDistribution} from "../instance/module/IDistribution.sol";
11
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
21
12
  import {IInstance} from "./IInstance.sol";
22
- import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
23
13
  import {IOracle} from "../oracle/IOracle.sol";
24
14
  import {IPolicy} from "../instance/module/IPolicy.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
25
16
  import {IRisk} from "../instance/module/IRisk.sol";
26
- import {TimestampLib} from "../type/Timestamp.sol";
27
17
 
28
- import {InstanceStore} from "./InstanceStore.sol";
18
+ import {AccessAdminLib} from "../authorization/AccessAdminLib.sol";
19
+ import {Amount} from "../type/Amount.sol";
29
20
  import {BundleSet} from "./BundleSet.sol";
21
+ import {BUNDLE, COMPONENT, DISTRIBUTION, PREMIUM, POLICY} from "../type/ObjectType.sol";
22
+ import {ClaimId, ClaimIdLib} from "../type/ClaimId.sol";
23
+ import {DistributorType} from "../type/DistributorType.sol";
24
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
25
+ import {InstanceStore} from "./InstanceStore.sol";
26
+ import {Key32} from "../type/Key32.sol";
27
+ import {NftId} from "../type/NftId.sol";
28
+ import {PayoutId, PayoutIdLib} from "../type/PayoutId.sol";
29
+ import {PolicyServiceLib} from "../product/PolicyServiceLib.sol";
30
+ import {ProductStore} from "./ProductStore.sol";
31
+ import {ReferralId, ReferralStatus, ReferralLib} from "../type/Referral.sol";
32
+ import {RequestId} from "../type/RequestId.sol";
33
+ import {RiskId} from "../type/RiskId.sol";
30
34
  import {RiskSet} from "./RiskSet.sol";
35
+ import {RoleId, INSTANCE_OWNER_ROLE} from "../type/RoleId.sol";
36
+ import {StateId} from "../type/StateId.sol";
37
+ import {TokenHandler} from "../shared/TokenHandler.sol";
38
+ import {UFixed, UFixedLib} from "../type/UFixed.sol";
31
39
 
32
40
 
41
+ /// @dev Central reader contract for a specific instance.
42
+ /// Provides reading functions for all instance data and related component data.
33
43
  contract InstanceReader {
34
44
 
35
45
  error ErrorInstanceReaderAlreadyInitialized();
@@ -37,10 +47,15 @@ contract InstanceReader {
37
47
 
38
48
  bool private _initialized = false;
39
49
 
50
+ IRegistry internal _registry;
40
51
  IInstance internal _instance;
52
+ InstanceAdmin internal _instanceAdmin;
53
+
41
54
  InstanceStore internal _store;
55
+ ProductStore internal _productStore;
42
56
  BundleSet internal _bundleSet;
43
57
  RiskSet internal _riskSet;
58
+ IDistributionService internal _distributionService;
44
59
 
45
60
  /// @dev This initializer needs to be called from the instance itself.
46
61
  function initialize() public {
@@ -51,7 +66,8 @@ contract InstanceReader {
51
66
  initializeWithInstance(msg.sender);
52
67
  }
53
68
 
54
- /// @dev This initializer needs to be called from the instance itself.
69
+
70
+ /// @dev Initializer to upgrade instance reader via instance service
55
71
  function initializeWithInstance(address instanceAddress)
56
72
  public
57
73
  {
@@ -61,425 +77,340 @@ contract InstanceReader {
61
77
 
62
78
  _initialized = true;
63
79
  _instance = IInstance(instanceAddress);
80
+ _instanceAdmin = _instance.getInstanceAdmin();
81
+ _registry = _instance.getRegistry();
82
+
64
83
  _store = _instance.getInstanceStore();
84
+ _productStore = _instance.getProductStore();
65
85
  _bundleSet = _instance.getBundleSet();
66
86
  _riskSet = _instance.getRiskSet();
87
+ _distributionService = IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), _instance.getRelease()));
67
88
  }
68
89
 
69
90
 
70
- // module specific functions
91
+ //--- instance functions ---------------------------------------------------------//
71
92
 
72
- function getPolicyInfo(NftId policyNftId)
73
- public
74
- view
75
- returns (IPolicy.PolicyInfo memory info)
76
- {
77
- bytes memory data = _store.getData(toPolicyKey(policyNftId));
78
- if (data.length > 0) {
79
- return abi.decode(data, (IPolicy.PolicyInfo));
80
- }
93
+ /// @dev Returns the registry this instance is registered in.
94
+ function getRegistry() public view returns (IRegistry registry) {
95
+ return _registry;
81
96
  }
82
97
 
83
- function getPolicyState(NftId policyNftId)
84
- public
85
- view
86
- returns (StateId state)
87
- {
88
- return _store.getState(toPolicyKey(policyNftId));
98
+
99
+ /// @dev Returns the instance NFT ID.
100
+ function getInstanceNftId() public view returns (NftId instanceNftid) {
101
+ return _registry.getNftIdForAddress(address(_instance));
89
102
  }
90
103
 
91
- function getPremiumInfo(NftId policyNftId)
92
- public
93
- view
94
- returns (IPolicy.PremiumInfo memory info)
95
- {
96
- bytes memory data = _store.getData(toPremiumKey(policyNftId));
97
- if (data.length > 0) {
98
- return abi.decode(data, (IPolicy.PremiumInfo));
104
+
105
+ /// @dev Returns the instance contract.
106
+ function getInstance() public view returns (IInstance instance) {
107
+ return _instance;
108
+ }
109
+
110
+
111
+ //--- component functions ------------------------------------------------------//
112
+
113
+
114
+ /// @dev Returns the component info for the given component NFT ID.
115
+ function getComponentInfo(NftId componentNftId) public view returns (IComponents.ComponentInfo memory info) {
116
+ return _store.getComponentInfo(componentNftId);
117
+ }
118
+
119
+
120
+ /// @dev Returns the registered token for the given component NFT ID.
121
+ function getToken(NftId componentNftId) public view returns (IERC20Metadata token) {
122
+ TokenHandler tokenHandler = getTokenHandler(componentNftId);
123
+ if (address(tokenHandler) != address(0)) { return tokenHandler.TOKEN(); }
124
+ }
125
+
126
+
127
+ /// @dev Returns the current wallet address for the given component NFT ID.
128
+ /// The wallet address is either the component's own address or any other wallet address specified by the component owner.
129
+ /// The wallet holds the component's funds. Tokens collected by the component are transferred to the wallet and
130
+ /// Tokens distributed from the component are transferred from this wallet.
131
+ function getWallet(NftId componentNftId) public view returns (address wallet) {
132
+ IComponents.ComponentInfo memory info = getComponentInfo(componentNftId);
133
+ if (address(info.tokenHandler) != address(0)) {
134
+ return info.tokenHandler.getWallet();
99
135
  }
100
136
  }
101
137
 
102
- function getPremiumInfoState(NftId policyNftId)
103
- public
104
- view
105
- returns (StateId state)
106
- {
107
- return _store.getState(toPremiumKey(policyNftId));
138
+
139
+ /// @dev Returns the token handler for the given component NFT ID.
140
+ /// The token handler manages all transfers from/to the component's wallet.
141
+ /// To allow a component to collect funds from an account, it has to create a corresponding allowance from the
142
+ /// account to the address of the component's token handler.
143
+ function getTokenHandler(NftId componentNftId) public view returns (TokenHandler tokenHandler) {
144
+ IComponents.ComponentInfo memory info = _store.getComponentInfo(componentNftId);
145
+ if(address(info.tokenHandler) != address(0)) {
146
+ return info.tokenHandler;
147
+ }
108
148
  }
109
149
 
110
- function bundles(NftId poolNftId)
111
- public
112
- view
113
- returns (uint256 bundleCount)
114
- {
115
- return _bundleSet.bundles(poolNftId);
150
+
151
+ /// @dev Returns the current token balance amount for the given component NFT ID.
152
+ /// The balance amount includes the fee amount.
153
+ function getBalanceAmount(NftId targetNftId) external view returns (Amount) {
154
+ return _store.getBalanceAmount(targetNftId);
116
155
  }
117
156
 
118
- function activeBundles(NftId poolNftId)
119
- public
120
- view
121
- returns (uint256 bundleCount)
122
- {
123
- return _bundleSet.activeBundles(poolNftId);
157
+
158
+ /// @dev Returns the current fee amount for the given NFT ID.
159
+ /// The target NFT ID may reference a component, a distributor or a bundle.
160
+ function getFeeAmount(NftId targetNftId) external view returns (Amount) {
161
+ return _store.getFeeAmount(targetNftId);
124
162
  }
125
163
 
126
- function getActiveBundleNftId(NftId poolNftId, uint256 idx)
127
- public
128
- view
129
- returns (NftId bundleNftId)
130
- {
131
- return _bundleSet.getActiveBundleNftId(poolNftId, idx);
164
+
165
+ /// @dev Returns the currently locked amount for the given NFT ID.
166
+ /// The target NFT ID may reference a pool or a bundle.
167
+ function getLockedAmount(NftId targetNftId) external view returns (Amount) {
168
+ return _store.getLockedAmount(targetNftId);
132
169
  }
133
170
 
134
- function getBundleNftId(NftId poolNftId, uint256 idx)
135
- public
136
- view
137
- returns (NftId bundleNftId)
138
- {
139
- return _bundleSet.getBundleNftId(poolNftId, idx);
171
+ //--- product functions ------------------------------------------------------//
172
+
173
+ /// @dev Returns the number of registered products.
174
+ function products() public view returns (uint256 productCount) {
175
+ return _instance.products();
140
176
  }
141
177
 
142
- function getBundleState(NftId bundleNftId)
143
- public
144
- view
145
- returns (StateId state)
146
- {
147
- return _store.getState(toBundleKey(bundleNftId));
178
+
179
+ /// @dev Returns th product NFT ID for the given index.
180
+ function getProductNftId(uint256 idx) public view returns (NftId productNftId) {
181
+ return _instance.getProductNftId(idx);
148
182
  }
149
183
 
150
- /// @dev Returns true iff policy is active.
151
- function policyIsActive(NftId policyNftId)
152
- public
153
- view
154
- returns (bool isCloseable)
155
- {
156
- IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
157
184
 
158
- if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
159
- if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
160
- if (info.activatedAt > TimestampLib.blockTimestamp()) { return false; } // not yet active
161
- if (info.expiredAt <= TimestampLib.blockTimestamp()) { return false; } // already expired
185
+ /// @dev Returns the product info for the given product NFT ID.
186
+ function getProductInfo(NftId productNftId) public view returns (IComponents.ProductInfo memory info) {
187
+ return _productStore.getProductInfo(productNftId);
188
+ }
162
189
 
163
- return true;
190
+
191
+ /// @dev Returns the current fee settings for the given product NFT ID.
192
+ function getFeeInfo(NftId productNftId) public view returns (IComponents.FeeInfo memory feeInfo) {
193
+ return _productStore.getFeeInfo(productNftId);
164
194
  }
165
195
 
166
- function claims(NftId policyNftId)
167
- public
168
- view
169
- returns (uint16 claimCount)
170
- {
171
- return getPolicyInfo(policyNftId).claimsCount;
196
+ //--- risk functions ---------------------------------------------------------//
197
+
198
+ /// @dev Returns the total number of registered risks for the specified product.
199
+ function risks(NftId productNftId) public view returns (uint256 riskCount) {
200
+ return _riskSet.risks(productNftId);
172
201
  }
173
202
 
174
203
 
175
- function getClaimId(uint idx)
176
- public
177
- view
178
- returns (ClaimId claimId)
179
- {
180
- return ClaimIdLib.toClaimId(idx + 1);
204
+ /// @dev Returns the number of active risks for the specified product.
205
+ function activeRisks(NftId productNftId) public view returns (uint256 activeRiskCount) {
206
+ return _riskSet.activeRisks(productNftId);
181
207
  }
182
208
 
183
- function getClaimInfo(NftId policyNftId, ClaimId claimId)
184
- public
185
- view
186
- returns (IPolicy.ClaimInfo memory info)
187
- {
188
- bytes memory data = _store.getData(claimId.toKey32(policyNftId));
189
- if (data.length > 0) {
190
- return abi.decode(data, (IPolicy.ClaimInfo));
191
- }
209
+
210
+ /// @dev Returns the risk ID for the given product NFT ID and (registered) risk index.
211
+ function getRiskId(NftId productNftId, uint256 idx) public view returns (RiskId riskId) {
212
+ return _riskSet.getRiskId(productNftId, idx);
192
213
  }
193
214
 
194
215
 
195
- function getClaimState(NftId policyNftId, ClaimId claimId)
196
- public
197
- view
198
- returns (StateId state)
199
- {
200
- return _store.getState(claimId.toKey32(policyNftId));
216
+ /// @dev Returns the active risk ID for the given product NFT ID and (active) risk index.
217
+ function getActiveRiskId(NftId productNftId, uint256 idx) public view returns (RiskId riskId) {
218
+ return _riskSet.getActiveRiskId(productNftId, idx);
201
219
  }
202
220
 
203
221
 
204
- function payouts(NftId policyNftId, ClaimId claimId)
205
- public
206
- view
207
- returns (uint24 payoutCount)
208
- {
209
- return getClaimInfo(policyNftId, claimId).payoutsCount;
222
+ /// @dev Returns the risk info for the given risk ID.
223
+ function getRiskInfo(RiskId riskId) public view returns (IRisk.RiskInfo memory info) {
224
+ return _productStore.getRiskInfo(riskId);
210
225
  }
211
226
 
212
227
 
213
- function getPayoutId(ClaimId claimId, uint24 idx)
214
- public
215
- view
216
- returns (PayoutId payoutId)
217
- {
218
- return PayoutIdLib.toPayoutId(claimId, idx + 1);
228
+ /// @dev Returns the risk state for the given risk ID.
229
+ function getRiskState(RiskId riskId) public view returns (StateId stateId) {
230
+ return _productStore.getState(riskId.toKey32());
219
231
  }
220
232
 
221
233
 
222
- function getRemainingClaimableAmount(NftId policyNftId)
223
- public
224
- view
225
- returns (Amount remainingClaimableAmount)
226
- {
227
- IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
228
- return info.sumInsuredAmount - info.claimAmount;
234
+ //--- policy functions -------------------------------------------------------//
235
+
236
+ /// @dev Returns the number of linked policies for the given risk ID.
237
+ function policiesForRisk(RiskId riskId) public view returns (uint256 linkedPolicies) {
238
+ return _riskSet.linkedPolicies(riskId);
229
239
  }
230
240
 
231
- function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
232
- public
233
- view
234
- returns (IPolicy.PayoutInfo memory info)
235
- {
236
- bytes memory data = _store.getData(payoutId.toKey32(policyNftId));
237
- if (data.length > 0) {
238
- return abi.decode(data, (IPolicy.PayoutInfo));
239
- }
241
+
242
+ /// @dev Returns the linked policy NFT ID for the given risk ID and index.
243
+ function getPolicyNftIdForRisk(RiskId riskId, uint256 idx) public view returns (NftId linkedPolicyNftId) {
244
+ return _riskSet.getLinkedPolicyNftId(riskId, idx);
240
245
  }
241
246
 
242
- function getPayoutState(NftId policyNftId, PayoutId payoutId)
243
- public
244
- view
245
- returns (StateId state)
246
- {
247
- return _store.getState(payoutId.toKey32(policyNftId));
247
+
248
+ /// @dev Returns the info for the given policy NFT ID.
249
+ function getPolicyInfo(NftId policyNftId) public view returns (IPolicy.PolicyInfo memory info) {
250
+ return _productStore.getPolicyInfo(policyNftId);
248
251
  }
249
252
 
250
- function risks(NftId productNftId)
251
- public
252
- view
253
- returns (uint256 riskCount)
254
- {
255
- return _riskSet.risks(productNftId);
253
+
254
+ /// @dev Returns the state for the given policy NFT ID.
255
+ function getPolicyState(NftId policyNftId) public view returns (StateId state) {
256
+ return _productStore.getState(_toPolicyKey(policyNftId));
256
257
  }
257
258
 
258
- function getRiskId(NftId productNftId, uint256 idx)
259
- public
260
- view
261
- returns (RiskId riskId)
262
- {
263
- return _riskSet.getRiskId(productNftId, idx);
259
+
260
+ /// @dev Returns true iff policy is active.
261
+ function policyIsActive(NftId policyNftId) public view returns (bool isCloseable) {
262
+ return PolicyServiceLib.policyIsActive(this, policyNftId);
264
263
  }
265
264
 
266
- function activeRisks(NftId productNftId)
267
- public
268
- view
269
- returns (uint256 activeRiskCount)
270
- {
271
- return _riskSet.activeRisks(productNftId);
265
+ //--- claim functions -------------------------------------------------------//
266
+
267
+ /// @dev Returns the number of claims for the given policy NFT ID.
268
+ function claims(NftId policyNftId) public view returns (uint16 claimCount) {
269
+ return getPolicyInfo(policyNftId).claimsCount;
272
270
  }
273
271
 
274
- function getActiveRiskId(NftId productNftId, uint256 idx)
275
- public
276
- view
277
- returns (RiskId riskId)
278
- {
279
- return _riskSet.getActiveRiskId(productNftId, idx);
272
+
273
+ /// @dev Returns the claim ID for the given policy NFT ID and index.
274
+ function getClaimId(uint256 idx) public pure returns (ClaimId claimId) {
275
+ return ClaimIdLib.toClaimId(idx + 1);
280
276
  }
281
277
 
282
- function getRiskInfo(RiskId riskId)
283
- public
284
- view
285
- returns (IRisk.RiskInfo memory info)
286
- {
287
- bytes memory data = _store.getData(riskId.toKey32());
288
- if (data.length > 0) {
289
- return abi.decode(data, (IRisk.RiskInfo));
290
- }
278
+
279
+ /// @dev Returns the claim info for the given policy NFT ID and claim ID.
280
+ function getClaimInfo(NftId policyNftId, ClaimId claimId) public view returns (IPolicy.ClaimInfo memory info) {
281
+ return _productStore.getClaimInfo(policyNftId, claimId);
291
282
  }
292
283
 
293
- function getRiskState(RiskId riskId)
294
- public
295
- view
296
- returns (StateId stateId)
297
- {
298
- bytes memory data = _store.getData(riskId.toKey32());
299
- return _store.getState(riskId.toKey32());
284
+
285
+ /// @dev Returns the current claim state for the given policy NFT ID and claim ID.
286
+ function getClaimState(NftId policyNftId, ClaimId claimId) public view returns (StateId state) {
287
+ return _productStore.getState(claimId.toKey32(policyNftId));
300
288
  }
301
289
 
302
- function policiesForRisk(RiskId riskId)
303
- public
304
- view
305
- returns (uint256 linkedPolicies)
306
- {
307
- return _riskSet.linkedPolicies(riskId);
290
+
291
+ /// @dev Returns the remaining claimable amount for the given policy NFT ID.
292
+ /// The remaining claimable amount is the difference between the sum insured amount and total approved claim amounts so far.
293
+ function getRemainingClaimableAmount(NftId policyNftId)
294
+ public view returns (Amount remainingClaimableAmount) {
295
+ IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
296
+ return info.sumInsuredAmount - info.claimAmount;
308
297
  }
309
298
 
310
- function getPolicyNftIdForRisk(RiskId riskId, uint256 idx)
311
- public
312
- view
313
- returns (NftId linkedPolicyNftId)
314
- {
315
- return _riskSet.getLinkedPolicyNftId(riskId, idx);
299
+ //--- payout functions -------------------------------------------------------//
300
+
301
+ /// @dev Returns the number of payouts for the given policy NFT ID and claim ID.
302
+ function payouts(NftId policyNftId, ClaimId claimId) public view returns (uint24 payoutCount) {
303
+ return getClaimInfo(policyNftId, claimId).payoutsCount;
316
304
  }
317
305
 
318
- function getWallet(NftId componentNftId)
319
- public
320
- view
321
- returns (address tokenHandler)
322
- {
323
- bytes memory data = _store.getData(toComponentKey(componentNftId));
324
306
 
325
- if (data.length > 0) {
326
- IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
327
- return info.tokenHandler.getWallet();
328
- }
307
+ /// @dev Returns the payout ID for the given claim ID and index.
308
+ function getPayoutId(ClaimId claimId, uint24 idx) public pure returns (PayoutId payoutId) {
309
+ return PayoutIdLib.toPayoutId(claimId, idx + 1);
329
310
  }
330
311
 
331
- function getTokenHandler(NftId componentNftId)
332
- public
333
- view
334
- returns (address tokenHandler)
335
- {
336
- bytes memory data = _store.getData(toComponentKey(componentNftId));
337
312
 
338
- if (data.length > 0) {
339
- IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
340
- return address(info.tokenHandler);
341
- }
313
+ /// @dev Returns the payout info for the given policy NFT ID and payout ID.
314
+ function getPayoutInfo(NftId policyNftId, PayoutId payoutId) public view returns (IPolicy.PayoutInfo memory info) {
315
+ return _productStore.getPayoutInfo(policyNftId, payoutId);
342
316
  }
343
317
 
344
- function getBundleInfo(NftId bundleNftId)
345
- public
346
- view
347
- returns (IBundle.BundleInfo memory info)
348
- {
349
- bytes memory data = _store.getData(toBundleKey(bundleNftId));
350
- if (data.length > 0) {
351
- return abi.decode(data, (IBundle.BundleInfo));
352
- }
318
+
319
+ /// @dev Returns the payout state for the given policy NFT ID and payout ID.
320
+ function getPayoutState(NftId policyNftId, PayoutId payoutId) public view returns (StateId state) {
321
+ return _productStore.getState(payoutId.toKey32(policyNftId));
353
322
  }
354
323
 
355
- function getDistributorTypeInfo(DistributorType distributorType)
356
- public
357
- view
358
- returns (IDistribution.DistributorTypeInfo memory info)
359
- {
360
- bytes memory data = _store.getData(distributorType.toKey32());
361
- if (data.length > 0) {
362
- return abi.decode(data, (IDistribution.DistributorTypeInfo));
363
- }
324
+ //--- premium functions -------------------------------------------------------//
325
+
326
+ /// @dev Returns the premium info for the given policy NFT ID.
327
+ function getPremiumInfo(NftId policyNftId) public view returns (IPolicy.PremiumInfo memory info) {
328
+ return _productStore.getPremiumInfo(policyNftId);
364
329
  }
365
330
 
366
- function getDistributorInfo(NftId distributorNftId)
367
- public
368
- view
369
- returns (IDistribution.DistributorInfo memory info)
370
- {
371
- bytes memory data = _store.getData(toDistributorKey(distributorNftId));
372
- if (data.length > 0) {
373
- return abi.decode(data, (IDistribution.DistributorInfo));
374
- }
331
+
332
+ /// @dev Returns the premium state for the given policy NFT ID.
333
+ function getPremiumState(NftId policyNftId) public view returns (StateId state) {
334
+ return _productStore.getState(_toPremiumKey(policyNftId));
375
335
  }
376
336
 
377
- function getBalanceAmount(NftId targetNftId) external view returns (Amount) {
378
- return _store.getBalanceAmount(targetNftId);
337
+ //--- oracle functions ---------------------------------------------------------//
338
+
339
+ /// @dev Returns the request info for the given oracle request ID.
340
+ function getRequestInfo(RequestId requestId) public view returns (IOracle.RequestInfo memory requestInfo) {
341
+ return _store.getRequestInfo(requestId);
379
342
  }
380
343
 
381
- function getLockedAmount(NftId targetNftId) external view returns (Amount) {
382
- return _store.getLockedAmount(targetNftId);
344
+ //--- pool functions -----------------------------------------------------------//
345
+
346
+ /// @dev Returns the pool info for the given pool NFT ID.
347
+ function getPoolInfo(NftId poolNftId) public view returns (IComponents.PoolInfo memory info) {
348
+ return _store.getPoolInfo(poolNftId);
383
349
  }
384
350
 
385
- function getFeeAmount(NftId targetNftId) external view returns (Amount) {
386
- return _store.getFeeAmount(targetNftId);
351
+ //--- bundle functions -------------------------------------------------------//
352
+
353
+ /// @dev Returns the total number of registered bundles for the given pool.
354
+ function bundles(NftId poolNftId) public view returns (uint256 bundleCount) {
355
+ return _bundleSet.bundles(poolNftId);
387
356
  }
388
357
 
389
- function getComponentInfo(NftId componentNftId)
390
- public
391
- view
392
- returns (IComponents.ComponentInfo memory info)
393
- {
394
- bytes memory data = _store.getData(toComponentKey(componentNftId));
395
- if (data.length > 0) {
396
- return abi.decode(data, (IComponents.ComponentInfo));
397
- }
358
+
359
+ /// @dev Returns the number of active bundles for the given pool.
360
+ function activeBundles(NftId poolNftId) public view returns (uint256 bundleCount) {
361
+ return _bundleSet.activeBundles(poolNftId);
398
362
  }
399
363
 
400
- function getProductInfo(NftId productNftId)
401
- public
402
- view
403
- returns (IComponents.ProductInfo memory info)
404
- {
405
- bytes memory data = _store.getData(toProductKey(productNftId));
406
- if (data.length > 0) {
407
- return abi.decode(data, (IComponents.ProductInfo));
408
- }
364
+
365
+ /// @dev Returns the bunde NFT ID for the given pool and index.
366
+ function getBundleNftId(NftId poolNftId, uint256 idx) public view returns (NftId bundleNftId) {
367
+ return _bundleSet.getBundleNftId(poolNftId, idx);
409
368
  }
410
369
 
411
- function getFeeInfo(NftId productNftId)
412
- public
413
- view
414
- returns (IComponents.FeeInfo memory feeInfo)
415
- {
416
- bytes memory data = _store.getData(toFeeKey(productNftId));
417
- if (data.length > 0) {
418
- return abi.decode(data, (IComponents.FeeInfo));
419
- }
370
+
371
+ /// @dev Returns the active bunde NFT ID for the given pool and index.
372
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) public view returns (NftId bundleNftId) {
373
+ return _bundleSet.getActiveBundleNftId(poolNftId, idx);
420
374
  }
421
375
 
422
- function getPoolInfo(NftId poolNftId)
423
- public
424
- view
425
- returns (IComponents.PoolInfo memory info)
426
- {
427
- bytes memory data = _store.getData(toPoolKey(poolNftId));
428
- if (data.length > 0) {
429
- return abi.decode(data, (IComponents.PoolInfo));
430
- }
376
+
377
+ /// @dev Returns the bundle info for the given bundle NFT ID.
378
+ function getBundleInfo(NftId bundleNftId) public view returns (IBundle.BundleInfo memory info) {
379
+ return _store.getBundleInfo(bundleNftId);
431
380
  }
432
381
 
433
- function getReferralInfo(ReferralId referralId)
434
- public
435
- view
436
- returns (IDistribution.ReferralInfo memory info)
437
- {
438
- bytes memory data = _store.getData(referralId.toKey32());
439
- if (data.length > 0) {
440
- return abi.decode(data, (IDistribution.ReferralInfo));
441
- }
382
+
383
+ /// @dev Returns the bundle state for the given bundle NFT ID.
384
+ function getBundleState(NftId bundleNftId) public view returns (StateId state) {
385
+ return getState(_toBundleKey(bundleNftId));
442
386
  }
443
387
 
444
- function getRequestInfo(RequestId requestId)
445
- public
446
- view
447
- returns (IOracle.RequestInfo memory requestInfo)
448
- {
449
- bytes memory data = _store.getData(requestId.toKey32());
450
- if (data.length > 0) {
451
- return abi.decode(data, (IOracle.RequestInfo));
452
- }
388
+ //--- distribution functions -------------------------------------------------------//
389
+
390
+ function getDistributorTypeInfo(DistributorType distributorType) public view returns (IDistribution.DistributorTypeInfo memory info) {
391
+ return _store.getDistributorTypeInfo(distributorType);
453
392
  }
454
393
 
455
- function getMetadata(Key32 key)
456
- public
457
- view
458
- returns (IKeyValueStore.Metadata memory metadata)
459
- {
460
- return _store.getMetadata(key);
394
+
395
+ function getDistributorInfo(NftId distributorNftId) public view returns (IDistribution.DistributorInfo memory info) {
396
+ return _store.getDistributorInfo(distributorNftId);
461
397
  }
462
398
 
463
- function getState(Key32 key)
464
- public
465
- view
466
- returns (StateId state)
467
- {
468
- return _store.getMetadata(key).state;
399
+
400
+ //--- referral functions -------------------------------------------------------//
401
+
402
+ function toReferralId(NftId distributionNftId, string memory referralCode) public pure returns (ReferralId referralId) {
403
+ return ReferralLib.toReferralId(distributionNftId, referralCode);
469
404
  }
470
405
 
471
406
 
472
- function toReferralId(
473
- NftId distributionNftId,
474
- string memory referralCode
475
- )
476
- public
477
- pure
478
- returns (ReferralId referralId)
479
- {
480
- return ReferralLib.toReferralId(
481
- distributionNftId,
482
- referralCode);
407
+ function isReferralValid(NftId distributionNftId, ReferralId referralId) external view returns (bool isValid) {
408
+ return _distributionService.referralIsValid(distributionNftId, referralId);
409
+ }
410
+
411
+
412
+ function getReferralInfo(ReferralId referralId) public view returns (IDistribution.ReferralInfo memory info) {
413
+ return _store.getReferralInfo(referralId);
483
414
  }
484
415
 
485
416
 
@@ -491,91 +422,136 @@ contract InstanceReader {
491
422
  ReferralStatus status
492
423
  )
493
424
  {
494
- IDistribution.ReferralInfo memory info = getReferralInfo(
495
- referralId);
425
+ return IDistributionService(
426
+ _registry.getServiceAddress(
427
+ DISTRIBUTION(),
428
+ _instance.getRelease())).getDiscountPercentage(
429
+ this, // instance reader
430
+ referralId);
431
+ }
496
432
 
497
- if (info.expiryAt.eqz()) {
498
- return (
499
- UFixedLib.zero(),
500
- REFERRAL_ERROR_UNKNOWN());
501
- }
433
+ //--- authorization functions -------------------------------------------------------//
502
434
 
503
- if (info.expiryAt < TimestampLib.blockTimestamp()) {
504
- return (
505
- UFixedLib.zero(),
506
- REFERRAL_ERROR_EXPIRED());
507
- }
435
+ /// @dev Returns the number of defined roles.
436
+ function roles() public view returns (uint256) {
437
+ return _instanceAdmin.roles();
438
+ }
508
439
 
509
- if (info.usedReferrals >= info.maxReferrals) {
510
- return (
511
- UFixedLib.zero(),
512
- REFERRAL_ERROR_EXHAUSTED());
513
- }
514
440
 
515
- return (
516
- info.discountPercentage,
517
- REFERRAL_OK()
518
- );
441
+ /// @dev Returns the role ID for the given index.
442
+ function getRoleId(uint256 idx) public view returns (RoleId roleId) {
443
+ return _instanceAdmin.getRoleId(uint64(idx));
519
444
  }
520
445
 
521
446
 
522
- function hasRole(address account, RoleId roleId) public view returns (bool isMember) {
523
- return _instance.getInstanceAdmin().hasRole(account, roleId);
447
+ /// @dev Returns the role ID for the instance owner role.
448
+ /// This role may be used as a "root" admin role for other custom roles defined for this instance.
449
+ function getInstanceOwnerRole() public pure returns (RoleId roleId) {
450
+ return INSTANCE_OWNER_ROLE();
524
451
  }
525
452
 
526
453
 
527
- function hasAdminRole(address account, RoleId roleId) public view returns (bool isMember) {
528
- return _instance.getInstanceAdmin().hasAdminRole(account, roleId);
454
+ /// @dev Returns the role info for the given role ID.
455
+ function getRoleInfo(RoleId roleId) public view returns (IAccess.RoleInfo memory roleInfo) {
456
+ return _instanceAdmin.getRoleInfo(roleId);
529
457
  }
530
458
 
531
459
 
532
- function isLocked(address target) public view returns (bool) {
533
- return _instance.getInstanceAdmin().isTargetLocked(target);
460
+ /// @dev Returns true iff the provided role ID is defined for this instance.
461
+ function roleExists(RoleId roleId) public view returns (bool exists) {
462
+ return _instanceAdmin.roleExists(roleId);
534
463
  }
535
464
 
536
- function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
537
- return policyNftId.toKey32(POLICY());
465
+
466
+ /// @dev Returns true iff the provided role ID represents a custom role ID.
467
+ function isRoleCustom(RoleId roleId) public view returns (bool isCustom) {
468
+ return _instanceAdmin.isRoleCustom(roleId);
538
469
  }
539
470
 
540
- function toPremiumKey(NftId policyNftId) public pure returns (Key32) {
541
- return policyNftId.toKey32(PREMIUM());
471
+
472
+ /// @dev Returns true iff the provided role ID is active.
473
+ function isRoleActive(RoleId roleId) public view returns (bool isActive) {
474
+ return _instanceAdmin.isRoleActive(roleId);
542
475
  }
543
476
 
544
- function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
545
- return distributorNftId.toKey32(DISTRIBUTOR());
477
+
478
+ /// @dev Returns the number of members (accounts) for the given role ID.
479
+ function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
480
+ return _instanceAdmin.roleMembers(roleId);
546
481
  }
547
482
 
548
- function toBundleKey(NftId poolNftId) public pure returns (Key32) {
549
- return poolNftId.toKey32(BUNDLE());
483
+
484
+ /// @dev Returns the member (account address) for the given role ID and index.
485
+ function getRoleMember(RoleId roleId, uint256 idx) public view returns (address account) {
486
+ return _instanceAdmin.getRoleMember(roleId, idx);
550
487
  }
551
488
 
552
- function toComponentKey(NftId componentNftId) public pure returns (Key32) {
553
- return componentNftId.toKey32(COMPONENT());
489
+
490
+ /// @dev Returns true iff the given account is a member of the specified role ID.
491
+ function isRoleMember(RoleId roleId, address account) public view returns (bool isMember) {
492
+ return _instanceAdmin.isRoleMember(roleId, account);
554
493
  }
555
494
 
556
- function toDistributionKey(NftId distributionNftId) public pure returns (Key32) {
557
- return distributionNftId.toKey32(DISTRIBUTION());
495
+
496
+ /// @dev Returns true iff the given account is an admin of the specified role ID.
497
+ /// Role admins may grant and revoke the role to other accounts.
498
+ function isRoleAdmin(RoleId roleId, address account) public view returns (bool isMember) {
499
+ return _instanceAdmin.isRoleAdmin(roleId, account);
558
500
  }
559
501
 
560
- function toPoolKey(NftId poolNftId) public pure returns (Key32) {
561
- return poolNftId.toKey32(POOL());
502
+
503
+ /// @dev Returns the number of targets (contracts) defined for this instance.
504
+ function targets() public view returns (uint256 targetCount) {
505
+ return _instanceAdmin.targets();
562
506
  }
563
507
 
564
- function toProductKey(NftId productNftId) public pure returns (Key32) {
565
- return productNftId.toKey32(PRODUCT());
508
+
509
+ /// @dev Returns the target address for the given index.
510
+ function getTargetAddress(uint256 idx) public view returns (address target) {
511
+ return _instanceAdmin.getTargetAddress(idx);
566
512
  }
567
513
 
568
- function toFeeKey(NftId productNftId) public pure returns (Key32) {
569
- return productNftId.toKey32(FEE());
514
+
515
+ /// @dev Returns the target info for the given target address.
516
+ function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory targetInfo) {
517
+ return _instanceAdmin.getTargetInfo(target);
570
518
  }
571
519
 
572
- // low level function
573
- function getInstance() external view returns (IInstance instance) {
574
- return _instance;
520
+
521
+ /// @dev Returns true iff the given target is defined for this instance.
522
+ function targetExists(address target) public view returns (bool exists) {
523
+ return _instanceAdmin.targetExists(target);
575
524
  }
576
525
 
577
- function getInstanceStore() external view returns (IKeyValueStore store) {
578
- return _store;
526
+
527
+ /// @dev Returns true iff the given target is locked.
528
+ function isLocked(address target) public view returns (bool) {
529
+ return _instanceAdmin.isTargetLocked(target);
530
+ }
531
+
532
+
533
+ /// @dev Returns the number of authorized functions for the given target.
534
+ function authorizedFunctions(address target) external view returns (uint256 numberOfFunctions) {
535
+ return _instanceAdmin.authorizedFunctions(target);
536
+ }
537
+
538
+
539
+ /// @dev Returns the authorized function info for the given target and index.
540
+ function getAuthorizedFunction(address target, uint256 idx) external view returns (IAccess.FunctionInfo memory func, RoleId roleId) {
541
+ return _instanceAdmin.getAuthorizedFunction(target, idx);
542
+ }
543
+
544
+
545
+ /// @dev Returns a function info for the given function signature and function name.
546
+ /// The function signature must not be zero and the function name must not be empty.
547
+ function toFunction(bytes4 signature, string memory name) public view returns (IAccess.FunctionInfo memory) {
548
+ return AccessAdminLib.toFunction(signature, name);
549
+ }
550
+
551
+ //--- low level function ----------------------------------------------------//
552
+
553
+ function getInstanceAdmin() external view returns (InstanceAdmin instanceAdmin) {
554
+ return _instanceAdmin;
579
555
  }
580
556
 
581
557
  function getBundleSet() external view returns (BundleSet bundleSet) {
@@ -586,11 +562,45 @@ contract InstanceReader {
586
562
  return _riskSet;
587
563
  }
588
564
 
565
+
566
+ function getMetadata(Key32 key) public view returns (IBaseStore.Metadata memory metadata) {
567
+ return _store.getMetadata(key);
568
+ }
569
+
570
+
571
+ function getState(Key32 key) public view returns (StateId state) {
572
+ return _store.getState(key);
573
+ }
574
+
575
+
589
576
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
590
577
  return UFixedLib.toUFixed(value, exp);
591
578
  }
592
579
 
580
+
593
581
  function toInt(UFixed value) public pure returns (uint256) {
594
582
  return UFixedLib.toInt(value);
595
583
  }
584
+
585
+ //--- internal functions ----------------------------------------------------//
586
+
587
+
588
+ function _toPolicyKey(NftId policyNftId) internal pure returns (Key32) {
589
+ return policyNftId.toKey32(POLICY());
590
+ }
591
+
592
+
593
+ function _toPremiumKey(NftId policyNftId) internal pure returns (Key32) {
594
+ return policyNftId.toKey32(PREMIUM());
595
+ }
596
+
597
+
598
+ function _toBundleKey(NftId poolNftId) internal pure returns (Key32) {
599
+ return poolNftId.toKey32(BUNDLE());
600
+ }
601
+
602
+
603
+ function _toComponentKey(NftId componentNftId) internal pure returns (Key32) {
604
+ return componentNftId.toKey32(COMPONENT());
605
+ }
596
606
  }