@etherisc/gif-next 0.0.2-d7cec72-860 → 0.0.2-d81839a-779

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