@etherisc/gif-next 0.0.2-b2e620f-736 → 0.0.2-b37fa8b-169

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