@etherisc/gif-next 0.0.2-4c19d89-776 → 0.0.2-4c2fb12-528

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