@etherisc/gif-next 0.0.2-f1b01e0-214 → 0.0.2-f1e6957-384

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