@etherisc/gif-next 0.0.2-a67250d-285 → 0.0.2-a6a9eeb-432

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