@etherisc/gif-next 0.0.2-b657d4e-837 → 0.0.2-b6a85fa-854

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 (557) hide show
  1. package/README.md +95 -9
  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/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  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 +183 -497
  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 +102 -397
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +644 -392
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +209 -133
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +96 -201
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +476 -137
  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 +1474 -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 +2043 -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 +1429 -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 +1161 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1637 -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 +2575 -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 +1641 -852
  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 +1300 -1842
  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 +127 -365
  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 +103 -143
  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 +103 -333
  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 +160 -448
  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 +502 -364
  131. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +194 -114
  133. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +340 -112
  135. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  136. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +139 -246
  137. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  139. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  140. package/artifacts/contracts/pool/Pool.sol/Pool.json +129 -426
  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 +925 -545
  145. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  146. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  147. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  149. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  151. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  152. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +266 -435
  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 +466 -245
  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 +301 -9
  161. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  163. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +405 -102
  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 +257 -236
  169. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  170. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  171. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  172. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +511 -303
  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 +196 -108
  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 +258 -427
  183. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  184. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  185. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  186. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  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 +86 -287
  219. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  220. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +493 -638
  221. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  222. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +183 -133
  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 +92 -103
  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 +103 -143
  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 +102 -332
  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 +585 -12
  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 +4 -0
  271. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  272. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  273. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1513 -204
  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 +1635 -465
  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 +191 -105
  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 +93 -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 +24 -5
  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 -208
  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 +21 -19
  368. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  369. package/contracts/distribution/Distribution.sol +46 -96
  370. package/contracts/distribution/DistributionService.sol +243 -132
  371. package/contracts/distribution/DistributionServiceManager.sol +6 -6
  372. package/contracts/distribution/IDistributionComponent.sol +4 -11
  373. package/contracts/distribution/IDistributionService.sol +47 -29
  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 +113 -43
  391. package/contracts/instance/IInstanceService.sol +61 -34
  392. package/contracts/instance/Instance.sol +201 -104
  393. package/contracts/instance/InstanceAdmin.sol +275 -162
  394. package/contracts/instance/InstanceAuthorizationV3.sol +152 -81
  395. package/contracts/instance/InstanceReader.sol +464 -255
  396. package/contracts/instance/InstanceService.sol +333 -262
  397. package/contracts/instance/InstanceServiceManager.sol +6 -7
  398. package/contracts/instance/InstanceStore.sol +153 -107
  399. package/contracts/instance/ProductStore.sol +290 -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 +13 -10
  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 -20
  409. package/contracts/instance/module/IDistribution.sol +21 -8
  410. package/contracts/instance/module/IPolicy.sol +50 -29
  411. package/contracts/instance/module/IRisk.sol +5 -0
  412. package/contracts/oracle/BasicOracle.sol +3 -7
  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 +11 -25
  417. package/contracts/oracle/OracleService.sol +119 -87
  418. package/contracts/oracle/OracleServiceManager.sol +6 -6
  419. package/contracts/pool/BasicPool.sol +40 -43
  420. package/contracts/pool/BasicPoolAuthorization.sol +39 -13
  421. package/contracts/pool/BundleService.sol +200 -155
  422. package/contracts/pool/BundleServiceManager.sol +6 -6
  423. package/contracts/pool/IBundleService.sol +42 -46
  424. package/contracts/pool/IPoolComponent.sol +19 -15
  425. package/contracts/pool/IPoolService.sol +97 -77
  426. package/contracts/pool/Pool.sol +145 -142
  427. package/contracts/pool/PoolLib.sol +341 -0
  428. package/contracts/pool/PoolService.sol +413 -233
  429. package/contracts/pool/PoolServiceManager.sol +4 -4
  430. package/contracts/product/ApplicationService.sol +144 -47
  431. package/contracts/product/ApplicationServiceManager.sol +4 -4
  432. package/contracts/product/BasicProduct.sol +11 -15
  433. package/contracts/product/BasicProductAuthorization.sol +32 -12
  434. package/contracts/product/ClaimService.sol +394 -185
  435. package/contracts/product/ClaimServiceManager.sol +4 -4
  436. package/contracts/product/IApplicationService.sol +29 -3
  437. package/contracts/product/IClaimService.sol +48 -11
  438. package/contracts/product/IPolicyService.sol +61 -39
  439. package/contracts/product/IPricingService.sol +11 -10
  440. package/contracts/product/IProductComponent.sol +27 -5
  441. package/contracts/product/IRiskService.sol +48 -0
  442. package/contracts/product/PolicyService.sol +434 -288
  443. package/contracts/product/PolicyServiceLib.sol +139 -0
  444. package/contracts/product/PolicyServiceManager.sol +4 -4
  445. package/contracts/product/PricingService.sol +90 -84
  446. package/contracts/product/PricingServiceManager.sol +4 -4
  447. package/contracts/product/Product.sol +198 -108
  448. package/contracts/product/RiskService.sol +189 -0
  449. package/contracts/product/RiskServiceManager.sol +39 -0
  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 -288
  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 +72 -142
  466. package/contracts/shared/ComponentService.sol +428 -388
  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 +6 -32
  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 +74 -54
  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 +310 -26
  486. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  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 +526 -245
  491. package/contracts/staking/StakingLib.sol +195 -0
  492. package/contracts/staking/StakingManager.sol +12 -9
  493. package/contracts/staking/StakingReader.sol +70 -82
  494. package/contracts/staking/StakingService.sol +62 -152
  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 +40 -1
  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 +8 -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/product/IProductService.sol/IProductService.dbg.json +0 -4
  530. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  531. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  532. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  533. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  534. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  535. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  536. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  537. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  538. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  539. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  540. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  541. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -470
  542. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +0 -4
  543. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +0 -164
  544. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  545. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  546. package/contracts/authorization/IModuleAuthorization.sol +0 -21
  547. package/contracts/authorization/ModuleAuthorization.sol +0 -78
  548. package/contracts/instance/module/IAccess.sol +0 -46
  549. package/contracts/product/IProductService.sol +0 -33
  550. package/contracts/product/ProductService.sol +0 -99
  551. package/contracts/product/ProductServiceManager.sol +0 -39
  552. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  553. package/contracts/shared/IKeyValueStore.sol +0 -54
  554. package/contracts/shared/InitializableCustom.sol +0 -177
  555. package/contracts/shared/KeyValueStore.sol +0 -131
  556. package/contracts/staking/StakeManagerLib.sol +0 -231
  557. package/contracts/staking/StakingLifecycle.sol +0 -23
@@ -3,36 +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 {Amount} from "../type/Amount.sol";
7
- import {ClaimId} from "../type/ClaimId.sol";
8
- import {DistributorType} from "../type/DistributorType.sol";
9
- import {Fee, FeeLib} from "../type/Fee.sol";
10
- import {Key32} from "../type/Key32.sol";
11
- import {NftId} from "../type/NftId.sol";
12
- import {ObjectType, COMPONENT, DISTRIBUTOR, DISTRIBUTION, INSTANCE, PRODUCT, POLICY, POOL, BUNDLE} from "../type/ObjectType.sol";
13
- import {PayoutId} from "../type/PayoutId.sol";
14
- import {ReferralId, ReferralStatus, ReferralLib, REFERRAL_OK, REFERRAL_ERROR_UNKNOWN, REFERRAL_ERROR_EXPIRED, REFERRAL_ERROR_EXHAUSTED} from "../type/Referral.sol";
15
- import {RequestId} from "../type/RequestId.sol";
16
- import {RiskId} from "../type/RiskId.sol";
17
- import {RoleId} from "../type/RoleId.sol";
18
- import {StateId} from "../type/StateId.sol";
19
- import {UFixed, MathLib, UFixedLib} from "../type/UFixed.sol";
20
- import {Version} from "../type/Version.sol";
21
-
22
- import {IRegistry} from "../registry/IRegistry.sol";
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IBaseStore} from "./IBaseStore.sol";
23
8
  import {IBundle} from "../instance/module/IBundle.sol";
24
9
  import {IComponents} from "../instance/module/IComponents.sol";
25
10
  import {IDistribution} from "../instance/module/IDistribution.sol";
11
+ import {IDistributionService} from "../distribution/IDistributionService.sol";
26
12
  import {IInstance} from "./IInstance.sol";
27
- import {IKeyValueStore} from "../shared/IKeyValueStore.sol";
28
13
  import {IOracle} from "../oracle/IOracle.sol";
29
14
  import {IPolicy} from "../instance/module/IPolicy.sol";
15
+ import {IRegistry} from "../registry/IRegistry.sol";
30
16
  import {IRisk} from "../instance/module/IRisk.sol";
31
- import {TimestampLib} from "../type/Timestamp.sol";
32
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";
33
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";
34
39
 
35
40
 
41
+ /// @dev Central reader contract for a specific instance.
42
+ /// Provides reading functions for all instance data and related component data.
36
43
  contract InstanceReader {
37
44
 
38
45
  error ErrorInstanceReaderAlreadyInitialized();
@@ -40,8 +47,15 @@ contract InstanceReader {
40
47
 
41
48
  bool private _initialized = false;
42
49
 
50
+ IRegistry internal _registry;
43
51
  IInstance internal _instance;
52
+ InstanceAdmin internal _instanceAdmin;
53
+
44
54
  InstanceStore internal _store;
55
+ ProductStore internal _productStore;
56
+ BundleSet internal _bundleSet;
57
+ RiskSet internal _riskSet;
58
+ IDistributionService internal _distributionService;
45
59
 
46
60
  /// @dev This initializer needs to be called from the instance itself.
47
61
  function initialize() public {
@@ -52,258 +66,359 @@ contract InstanceReader {
52
66
  initializeWithInstance(msg.sender);
53
67
  }
54
68
 
55
- /// @dev This initializer needs to be called from the instance itself.
56
- function initializeWithInstance(address instanceAddress) public {
69
+
70
+ /// @dev Initializer to upgrade instance reader via instance service
71
+ function initializeWithInstance(address instanceAddress)
72
+ public
73
+ {
57
74
  if(_initialized) {
58
75
  revert ErrorInstanceReaderAlreadyInitialized();
59
76
  }
60
77
 
61
78
  _initialized = true;
62
79
  _instance = IInstance(instanceAddress);
80
+ _instanceAdmin = _instance.getInstanceAdmin();
81
+ _registry = _instance.getRegistry();
82
+
63
83
  _store = _instance.getInstanceStore();
84
+ _productStore = _instance.getProductStore();
85
+ _bundleSet = _instance.getBundleSet();
86
+ _riskSet = _instance.getRiskSet();
87
+ _distributionService = IDistributionService(_registry.getServiceAddress(DISTRIBUTION(), _instance.getRelease()));
64
88
  }
65
89
 
66
90
 
67
- // module specific functions
91
+ //--- instance functions ---------------------------------------------------------//
68
92
 
69
- function getPolicyInfo(NftId policyNftId)
70
- public
71
- view
72
- returns (IPolicy.PolicyInfo memory info)
73
- {
74
- bytes memory data = _store.getData(toPolicyKey(policyNftId));
75
- if (data.length > 0) {
76
- return abi.decode(data, (IPolicy.PolicyInfo));
77
- }
93
+ /// @dev Returns the registry this instance is registered in.
94
+ function getRegistry() public view returns (IRegistry registry) {
95
+ return _registry;
78
96
  }
79
97
 
80
- function getPolicyState(NftId policyNftId)
81
- public
82
- view
83
- returns (StateId state)
84
- {
85
- 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));
86
102
  }
87
103
 
88
- /// @dev returns true iff policy may be closed
89
- /// a policy can be closed all conditions below are met
90
- /// - policy exists
91
- /// - has been activated
92
- /// - is not yet closed
93
- /// - has no open claims
94
- /// - claim amount matches sum insured amount or is expired
95
- function policyIsCloseable(NftId policyNftId)
96
- public
97
- view
98
- returns (bool isCloseable)
99
- {
100
- IPolicy.PolicyInfo memory info = getPolicyInfo(policyNftId);
101
104
 
102
- if (info.productNftId.eqz()) { return false; } // not closeable: policy does not exist (or does not belong to this instance)
103
- if (info.activatedAt.eqz()) { return false; } // not closeable: not yet activated
104
- if (info.closedAt.gtz()) { return false; } // not closeable: already closed
105
- if (info.openClaimsCount > 0) { return false; } // not closeable: has open claims
105
+ /// @dev Returns the instance contract.
106
+ function getInstance() public view returns (IInstance instance) {
107
+ return _instance;
108
+ }
106
109
 
107
- // closeable: if sum of claims matches sum insured a policy may be closed prior to the expiry date
108
- if (info.claimAmount == info.sumInsuredAmount) { return true; }
109
110
 
110
- // not closeable: not yet expired
111
- if (TimestampLib.blockTimestamp() < info.expiredAt) { return false; }
111
+ //--- component functions ------------------------------------------------------//
112
112
 
113
- // all conditionsl to close the policy are met
114
- 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();
115
117
  }
116
118
 
117
- function getClaimInfo(NftId policyNftId, ClaimId claimId)
118
- public
119
- view
120
- returns (IPolicy.ClaimInfo memory info)
121
- {
122
- bytes memory data = _store.getData(claimId.toKey32(policyNftId));
123
- if (data.length > 0) {
124
- return abi.decode(data, (IPolicy.ClaimInfo));
125
- }
119
+
120
+ /// @dev Returns the component info for the given component NFT ID.
121
+ function getComponentInfo(NftId componentNftId) public view returns (IComponents.ComponentInfo memory info) {
122
+ return _store.getComponentInfo(componentNftId);
126
123
  }
127
124
 
128
- function getClaimState(NftId policyNftId, ClaimId claimId)
129
- public
130
- view
131
- returns (StateId state)
132
- {
133
- return _store.getState(claimId.toKey32(policyNftId));
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(); }
134
130
  }
135
131
 
136
- function getPayoutInfo(NftId policyNftId, PayoutId payoutId)
137
- public
138
- view
139
- returns (IPolicy.PayoutInfo memory info)
140
- {
141
- bytes memory data = _store.getData(payoutId.toKey32(policyNftId));
142
- if (data.length > 0) {
143
- return abi.decode(data, (IPolicy.PayoutInfo));
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();
144
141
  }
145
142
  }
146
143
 
147
- function getPayoutState(NftId policyNftId, PayoutId payoutId)
148
- public
149
- view
150
- returns (StateId state)
151
- {
152
- return _store.getState(payoutId.toKey32(policyNftId));
153
- }
154
144
 
155
- function getRiskInfo(RiskId riskId)
156
- public
157
- view
158
- returns (IRisk.RiskInfo memory info)
159
- {
160
- bytes memory data = _store.getData(riskId.toKey32());
161
- if (data.length > 0) {
162
- return abi.decode(data, (IRisk.RiskInfo));
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;
163
155
  }
164
156
  }
165
157
 
166
- function getTokenHandler(NftId componentNftId)
167
- public
168
- view
169
- returns (address tokenHandler)
170
- {
171
- bytes memory data = _store.getData(toComponentKey(componentNftId));
172
158
 
173
- if (data.length > 0) {
174
- IComponents.ComponentInfo memory info = abi.decode(data, (IComponents.ComponentInfo));
175
- return address(info.tokenHandler);
176
- }
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);
177
163
  }
178
164
 
179
- function getBundleInfo(NftId bundleNftId)
180
- public
181
- view
182
- returns (IBundle.BundleInfo memory info)
183
- {
184
- bytes memory data = _store.getData(toBundleKey(bundleNftId));
185
- if (data.length > 0) {
186
- return abi.decode(data, (IBundle.BundleInfo));
187
- }
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);
188
170
  }
189
171
 
190
- function getDistributorTypeInfo(DistributorType distributorType)
191
- public
192
- view
193
- returns (IDistribution.DistributorTypeInfo memory info)
194
- {
195
- bytes memory data = _store.getData(distributorType.toKey32());
196
- if (data.length > 0) {
197
- return abi.decode(data, (IDistribution.DistributorTypeInfo));
198
- }
172
+
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);
199
177
  }
200
178
 
201
- function getDistributorInfo(NftId distributorNftId)
202
- public
203
- view
204
- returns (IDistribution.DistributorInfo memory info)
205
- {
206
- bytes memory data = _store.getData(toDistributorKey(distributorNftId));
207
- if (data.length > 0) {
208
- return abi.decode(data, (IDistribution.DistributorInfo));
209
- }
179
+ //--- product functions ------------------------------------------------------//
180
+
181
+ /// @dev Returns the number of registered products.
182
+ function products() public view returns (uint256 productCount) {
183
+ return _instance.products();
210
184
  }
211
185
 
212
- function getBalanceAmount(NftId targetNftId) external view returns (Amount) {
213
- return _store.getBalanceAmount(targetNftId);
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);
214
190
  }
215
191
 
216
- function getLockedAmount(NftId targetNftId) external view returns (Amount) {
217
- return _store.getLockedAmount(targetNftId);
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);
218
196
  }
219
197
 
220
- function getFeeAmount(NftId targetNftId) external view returns (Amount) {
221
- return _store.getFeeAmount(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);
222
202
  }
223
203
 
224
- function getComponentInfo(NftId componentNftId)
225
- public
226
- view
227
- returns (IComponents.ComponentInfo memory info)
228
- {
229
- bytes memory data = _store.getData(toComponentKey(componentNftId));
230
- if (data.length > 0) {
231
- return abi.decode(data, (IComponents.ComponentInfo));
232
- }
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);
233
209
  }
234
210
 
235
- function getProductInfo(NftId productNftId)
236
- public
237
- view
238
- returns (IComponents.ProductInfo memory info)
239
- {
240
- bytes memory data = _store.getData(toProductKey(productNftId));
241
- if (data.length > 0) {
242
- return abi.decode(data, (IComponents.ProductInfo));
243
- }
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);
244
215
  }
245
216
 
246
- function getPoolInfo(NftId poolNftId)
247
- public
248
- view
249
- returns (IComponents.PoolInfo memory info)
250
- {
251
- bytes memory data = _store.getData(toPoolKey(poolNftId));
252
- if (data.length > 0) {
253
- return abi.decode(data, (IComponents.PoolInfo));
254
- }
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);
255
221
  }
256
222
 
257
- function getReferralInfo(ReferralId referralId)
258
- public
259
- view
260
- returns (IDistribution.ReferralInfo memory info)
261
- {
262
- bytes memory data = _store.getData(referralId.toKey32());
263
- if (data.length > 0) {
264
- return abi.decode(data, (IDistribution.ReferralInfo));
265
- }
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);
266
227
  }
267
228
 
268
- function getRequestInfo(RequestId requestId)
269
- public
270
- view
271
- returns (IOracle.RequestInfo memory requestInfo)
272
- {
273
- bytes memory data = _store.getData(requestId.toKey32());
274
- if (data.length > 0) {
275
- return abi.decode(data, (IOracle.RequestInfo));
276
- }
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);
277
233
  }
278
234
 
279
- function getMetadata(Key32 key)
280
- public
281
- view
282
- returns (IKeyValueStore.Metadata memory metadata)
283
- {
284
- return _store.getMetadata(key);
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());
285
239
  }
286
240
 
287
- function getState(Key32 key)
288
- public
289
- view
290
- returns (StateId state)
291
- {
292
- return _store.getMetadata(key).state;
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);
293
247
  }
294
248
 
295
249
 
296
- function toReferralId(
297
- NftId distributionNftId,
298
- string memory referralCode
299
- )
300
- public
301
- pure
302
- returns (ReferralId referralId)
303
- {
304
- return ReferralLib.toReferralId(
305
- distributionNftId,
306
- referralCode);
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);
253
+ }
254
+
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);
259
+ }
260
+
261
+
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);
307
422
  }
308
423
 
309
424
 
@@ -315,91 +430,185 @@ contract InstanceReader {
315
430
  ReferralStatus status
316
431
  )
317
432
  {
318
- IDistribution.ReferralInfo memory info = getReferralInfo(
319
- referralId);
433
+ return IDistributionService(
434
+ _registry.getServiceAddress(
435
+ DISTRIBUTION(),
436
+ _instance.getRelease())).getDiscountPercentage(
437
+ this, // instance reader
438
+ referralId);
439
+ }
320
440
 
321
- if (info.expiryAt.eqz()) {
322
- return (
323
- UFixedLib.zero(),
324
- REFERRAL_ERROR_UNKNOWN());
325
- }
441
+ //--- authorization functions -------------------------------------------------------//
326
442
 
327
- if (info.expiryAt < TimestampLib.blockTimestamp()) {
328
- return (
329
- UFixedLib.zero(),
330
- REFERRAL_ERROR_EXPIRED());
331
- }
443
+ /// @dev Returns the number of defined roles.
444
+ function roles() public view returns (uint256) {
445
+ return _instanceAdmin.roles();
446
+ }
332
447
 
333
- if (info.usedReferrals >= info.maxReferrals) {
334
- return (
335
- UFixedLib.zero(),
336
- REFERRAL_ERROR_EXHAUSTED());
337
- }
338
448
 
339
- return (
340
- info.discountPercentage,
341
- REFERRAL_OK()
342
- );
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));
343
452
  }
344
453
 
345
454
 
346
- function hasRole(address account, RoleId roleId) public view returns (bool isMember) {
347
- 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();
348
459
  }
349
460
 
350
461
 
351
- function hasAdminRole(address account, RoleId roleId) public view returns (bool isMember) {
352
- 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);
353
465
  }
354
466
 
355
467
 
356
- function isTargetLocked(address target) public view returns (bool) {
357
- 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);
358
471
  }
359
472
 
360
- function toPolicyKey(NftId policyNftId) public pure returns (Key32) {
361
- 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);
362
477
  }
363
478
 
364
479
 
365
- function toDistributorKey(NftId distributorNftId) public pure returns (Key32) {
366
- 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);
367
483
  }
368
484
 
369
- function toBundleKey(NftId poolNftId) public pure returns (Key32) {
370
- 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);
371
489
  }
372
490
 
373
- function toComponentKey(NftId componentNftId) public pure returns (Key32) {
374
- 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);
375
495
  }
376
496
 
377
- function toDistributionKey(NftId distributionNftId) public pure returns (Key32) {
378
- 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);
379
501
  }
380
502
 
381
- function toPoolKey(NftId poolNftId) public pure returns (Key32) {
382
- 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);
383
508
  }
384
509
 
385
- function toProductKey(NftId productNftId) public pure returns (Key32) {
386
- 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();
387
514
  }
388
515
 
389
- // low level function
390
- function getInstance() external view returns (IInstance instance) {
391
- 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);
392
520
  }
393
521
 
394
- function getInstanceStore() external view returns (IKeyValueStore store) {
395
- 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);
396
557
  }
397
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
+
398
584
  function toUFixed(uint256 value, int8 exp) public pure returns (UFixed) {
399
585
  return UFixedLib.toUFixed(value, exp);
400
586
  }
401
587
 
588
+
402
589
  function toInt(UFixed value) public pure returns (uint256) {
403
590
  return UFixedLib.toInt(value);
404
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
+ }
405
614
  }