@etherisc/gif-next 0.0.2-ff1bf36-818 → 0.0.2-ff3a8a0-504

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