@etherisc/gif-next 0.0.2-ff282a4-523 → 0.0.2-ff3a8a0-504

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (592) hide show
  1. package/README.md +139 -10
  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/{instance/module/ISetup.sol/ISetup.json → authorization/IAccess.sol/IAccess.json} +2 -2
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +1372 -0
  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 +174 -601
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +788 -535
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +278 -128
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +178 -330
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +622 -178
  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/{base/IKeyValueStore.sol/IKeyValueStore.json → BaseStore.sol/BaseStore.json} +59 -205
  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 +604 -92
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +532 -56
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +657 -257
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +2284 -0
  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 +1772 -822
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +552 -193
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +210 -94
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +1705 -1498
  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 +4 -0
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.json +0 -53
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  99. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  101. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  103. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  105. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  106. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  110. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  112. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  114. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  116. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  118. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +52 -0
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  120. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +772 -0
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  122. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +762 -0
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  124. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +873 -0
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  126. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1042 -0
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  128. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +810 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  130. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  132. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  134. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +550 -400
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  136. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +272 -102
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  138. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +384 -86
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  140. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +233 -423
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  142. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +749 -377
  143. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  144. package/artifacts/contracts/pool/Pool.sol/Pool.json +247 -629
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  146. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  148. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +954 -743
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +271 -113
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +370 -252
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  154. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +231 -89
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  156. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  158. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  160. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +491 -341
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  162. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +253 -115
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  164. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +320 -9
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  166. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +369 -18
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  168. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +454 -69
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +217 -75
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  172. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +380 -225
  173. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  174. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +289 -66
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  176. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +507 -384
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  178. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  180. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +237 -123
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  182. package/artifacts/contracts/product/PricingService.sol/PricingService.json +261 -333
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  184. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +235 -109
  185. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  186. package/artifacts/contracts/product/Product.sol/Product.json +428 -509
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  188. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  190. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  192. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  194. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +478 -61
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  196. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +280 -127
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  198. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  200. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  201. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  202. package/artifacts/contracts/registry/Registry.sol/Registry.json +920 -125
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  204. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +2160 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  206. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  208. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +332 -245
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +208 -92
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  212. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  214. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  216. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  218. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +683 -0
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  220. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +361 -125
  221. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  222. package/artifacts/contracts/shared/Component.sol/Component.json +128 -296
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  224. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1076 -156
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  226. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +862 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  234. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  236. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +129 -135
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  238. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +1175 -0
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  240. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +707 -0
  241. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  242. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +35 -4
  243. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +42 -1
  245. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +16 -30
  247. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +173 -0
  249. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  250. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.json +103 -2
  252. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  254. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +795 -0
  256. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  257. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +174 -0
  258. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  259. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  260. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  261. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +45 -55
  262. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  263. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +20 -124
  264. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  265. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +148 -90
  266. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  267. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  268. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  269. package/artifacts/contracts/shared/Service.sol/Service.json +96 -102
  270. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  271. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +615 -6
  272. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  274. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  275. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  276. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  277. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +2576 -128
  278. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  279. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +705 -103
  280. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  281. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  282. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  283. package/artifacts/contracts/staking/Staking.sol/Staking.json +2914 -226
  284. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  285. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  286. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  287. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +298 -74
  288. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  289. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +704 -0
  290. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  291. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +754 -207
  292. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  293. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +218 -84
  294. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  295. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +3097 -0
  296. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  297. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  298. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  299. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +679 -0
  300. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  301. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  302. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  303. package/artifacts/contracts/type/Amount.sol/AmountLib.json +122 -5
  304. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  305. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +92 -15
  306. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  307. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  308. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  309. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  310. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  311. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  312. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  313. package/artifacts/contracts/type/Fee.sol/FeeLib.json +119 -58
  314. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  315. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  316. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  317. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  318. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +66 -4
  320. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  321. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  322. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  323. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +153 -4
  324. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  325. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  326. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  327. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  328. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  329. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  330. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  331. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  332. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  333. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +121 -23
  334. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  335. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +167 -2
  336. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  337. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +148 -0
  338. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  339. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  340. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  341. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  342. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  343. package/artifacts/contracts/type/String.sol/StrLib.json +180 -0
  344. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  345. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +37 -5
  346. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  347. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  348. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  349. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  350. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  351. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  352. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  353. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  354. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  355. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  356. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  357. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  358. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  359. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  360. package/contracts/accounting/AccountingService.sol +274 -0
  361. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  362. package/contracts/accounting/IAccountingService.sol +47 -0
  363. package/contracts/authorization/AccessAdmin.sol +780 -0
  364. package/contracts/authorization/AccessAdminLib.sol +396 -0
  365. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  366. package/contracts/authorization/Authorization.sol +169 -0
  367. package/contracts/authorization/IAccess.sol +67 -0
  368. package/contracts/authorization/IAccessAdmin.sol +144 -0
  369. package/contracts/authorization/IAuthorization.sol +26 -0
  370. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  371. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  372. package/contracts/distribution/BasicDistribution.sol +141 -0
  373. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  374. package/contracts/distribution/Distribution.sol +137 -175
  375. package/contracts/distribution/DistributionService.sol +314 -215
  376. package/contracts/distribution/DistributionServiceManager.sol +13 -25
  377. package/contracts/distribution/IDistributionComponent.sol +23 -49
  378. package/contracts/distribution/IDistributionService.sol +61 -33
  379. package/contracts/examples/fire/DamageLevel.sol +59 -0
  380. package/contracts/examples/fire/FirePool.sol +86 -0
  381. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  382. package/contracts/examples/fire/FireProduct.sol +433 -0
  383. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  384. package/contracts/examples/fire/FireUSD.sol +26 -0
  385. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  386. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  387. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  388. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  389. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  391. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  392. package/contracts/instance/BaseStore.sol +93 -0
  393. package/contracts/instance/BundleSet.sol +130 -0
  394. package/contracts/instance/IBaseStore.sol +37 -0
  395. package/contracts/instance/IInstance.sol +128 -49
  396. package/contracts/instance/IInstanceService.sol +83 -37
  397. package/contracts/instance/Instance.sol +254 -132
  398. package/contracts/instance/InstanceAdmin.sol +379 -0
  399. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  400. package/contracts/instance/InstanceReader.sol +489 -243
  401. package/contracts/instance/InstanceService.sol +418 -212
  402. package/contracts/instance/InstanceServiceManager.sol +14 -29
  403. package/contracts/instance/InstanceStore.sol +228 -104
  404. package/contracts/instance/ProductStore.sol +303 -0
  405. package/contracts/instance/RiskSet.sol +126 -0
  406. package/contracts/instance/TargetNames.sol +10 -0
  407. package/contracts/instance/base/BalanceStore.sol +121 -0
  408. package/contracts/instance/base/Cloneable.sol +2 -25
  409. package/contracts/instance/base/ObjectCounter.sol +20 -0
  410. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  411. package/contracts/instance/base/ObjectSet.sol +77 -0
  412. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  413. package/contracts/instance/module/IBundle.sol +6 -8
  414. package/contracts/instance/module/IComponents.sol +40 -19
  415. package/contracts/instance/module/IDistribution.sol +21 -9
  416. package/contracts/instance/module/IPolicy.sol +57 -30
  417. package/contracts/instance/module/IRisk.sol +5 -0
  418. package/contracts/mock/Dip.sol +26 -0
  419. package/contracts/oracle/BasicOracle.sol +45 -0
  420. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  421. package/contracts/oracle/IOracle.sol +41 -0
  422. package/contracts/oracle/IOracleComponent.sol +33 -0
  423. package/contracts/oracle/IOracleService.sol +66 -0
  424. package/contracts/oracle/Oracle.sol +154 -0
  425. package/contracts/oracle/OracleService.sol +310 -0
  426. package/contracts/oracle/OracleServiceManager.sol +39 -0
  427. package/contracts/pool/BasicPool.sol +162 -0
  428. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  429. package/contracts/pool/BundleService.sol +250 -246
  430. package/contracts/pool/BundleServiceManager.sol +13 -25
  431. package/contracts/pool/IBundleService.sol +47 -49
  432. package/contracts/pool/IPoolComponent.sol +23 -75
  433. package/contracts/pool/IPoolService.sol +112 -56
  434. package/contracts/pool/Pool.sol +200 -169
  435. package/contracts/pool/PoolLib.sol +341 -0
  436. package/contracts/pool/PoolService.sol +475 -264
  437. package/contracts/pool/PoolServiceManager.sol +12 -24
  438. package/contracts/product/ApplicationService.sol +223 -82
  439. package/contracts/product/ApplicationServiceManager.sol +12 -9
  440. package/contracts/product/BasicProduct.sol +49 -0
  441. package/contracts/product/BasicProductAuthorization.sol +63 -0
  442. package/contracts/product/ClaimService.sol +398 -214
  443. package/contracts/product/ClaimServiceManager.sol +12 -9
  444. package/contracts/product/IApplicationService.sol +30 -4
  445. package/contracts/product/IClaimService.sol +52 -9
  446. package/contracts/product/IPolicyService.sol +62 -40
  447. package/contracts/product/IPricingService.sol +14 -11
  448. package/contracts/product/IProductComponent.sol +31 -10
  449. package/contracts/product/IRiskService.sol +48 -0
  450. package/contracts/product/PolicyService.sol +505 -236
  451. package/contracts/product/PolicyServiceLib.sol +139 -0
  452. package/contracts/product/PolicyServiceManager.sol +12 -27
  453. package/contracts/product/PricingService.sol +133 -102
  454. package/contracts/product/PricingServiceManager.sol +12 -24
  455. package/contracts/product/Product.sol +267 -153
  456. package/contracts/product/RiskService.sol +189 -0
  457. package/contracts/product/RiskServiceManager.sol +39 -0
  458. package/contracts/registry/ChainNft.sol +72 -39
  459. package/contracts/registry/IRegistry.sol +100 -38
  460. package/contracts/registry/IRegistryService.sol +28 -35
  461. package/contracts/registry/IRelease.sol +29 -0
  462. package/contracts/registry/ITransferInterceptor.sol +1 -2
  463. package/contracts/registry/Registry.sol +453 -222
  464. package/contracts/registry/RegistryAdmin.sol +191 -0
  465. package/contracts/registry/RegistryAuthorization.sol +336 -0
  466. package/contracts/registry/RegistryService.sol +75 -138
  467. package/contracts/registry/RegistryServiceManager.sol +23 -30
  468. package/contracts/registry/ReleaseAdmin.sol +195 -0
  469. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  470. package/contracts/registry/ReleaseRegistry.sol +525 -0
  471. package/contracts/registry/ServiceAuthorizationV3.sol +342 -0
  472. package/contracts/registry/TokenRegistry.sol +264 -63
  473. package/contracts/shared/Component.sol +126 -183
  474. package/contracts/shared/ComponentService.sol +640 -99
  475. package/contracts/shared/ComponentServiceManager.sol +38 -0
  476. package/contracts/shared/ContractLib.sol +312 -0
  477. package/contracts/shared/IComponent.sol +18 -50
  478. package/contracts/shared/IComponentService.sol +111 -0
  479. package/contracts/shared/IInstanceLinkedComponent.sol +30 -0
  480. package/contracts/{instance/base → shared}/ILifecycle.sol +5 -4
  481. package/contracts/shared/INftOwnable.sol +5 -1
  482. package/contracts/shared/IPolicyHolder.sol +12 -17
  483. package/contracts/shared/IRegisterable.sol +22 -1
  484. package/contracts/shared/IService.sol +11 -6
  485. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +12 -4
  486. package/contracts/shared/InstanceLinkedComponent.sol +194 -0
  487. package/contracts/shared/Lifecycle.sol +88 -0
  488. package/contracts/shared/NftIdSet.sol +65 -0
  489. package/contracts/shared/NftOwnable.sol +35 -24
  490. package/contracts/shared/PolicyHolder.sol +19 -50
  491. package/contracts/shared/Registerable.sol +54 -23
  492. package/contracts/shared/RegistryLinked.sol +9 -14
  493. package/contracts/shared/Service.sol +36 -41
  494. package/contracts/shared/TokenHandler.sol +320 -13
  495. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  496. package/contracts/staking/IStaking.sol +358 -6
  497. package/contracts/staking/IStakingService.sol +98 -76
  498. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  499. package/contracts/staking/Staking.sol +761 -27
  500. package/contracts/staking/StakingLib.sol +195 -0
  501. package/contracts/staking/StakingManager.sol +27 -18
  502. package/contracts/staking/StakingReader.sol +171 -0
  503. package/contracts/staking/StakingService.sol +175 -58
  504. package/contracts/staking/StakingServiceManager.sol +13 -8
  505. package/contracts/staking/StakingStore.sol +1368 -0
  506. package/contracts/staking/TargetHandler.sol +132 -0
  507. package/contracts/staking/TargetManagerLib.sol +234 -0
  508. package/contracts/type/AddressSet.sol +1 -1
  509. package/contracts/type/Amount.sol +48 -3
  510. package/contracts/type/Blocknumber.sol +36 -13
  511. package/contracts/type/ChainId.sol +101 -0
  512. package/contracts/type/ClaimId.sol +6 -1
  513. package/contracts/type/Fee.sol +22 -21
  514. package/contracts/type/Key32.sol +2 -2
  515. package/contracts/type/Key32Set.sol +62 -0
  516. package/contracts/type/NftId.sol +21 -16
  517. package/contracts/type/NftIdSet.sol +1 -1
  518. package/contracts/type/ObjectType.sol +204 -63
  519. package/contracts/type/PayoutId.sol +10 -10
  520. package/contracts/type/Referral.sol +2 -1
  521. package/contracts/type/RequestId.sol +75 -0
  522. package/contracts/type/RiskId.sol +39 -7
  523. package/contracts/type/RoleId.sol +122 -74
  524. package/contracts/type/Seconds.sol +67 -1
  525. package/contracts/type/Selector.sol +107 -0
  526. package/contracts/type/StateId.sol +41 -2
  527. package/contracts/type/String.sol +65 -0
  528. package/contracts/type/Timestamp.sol +20 -9
  529. package/contracts/type/UFixed.sol +62 -125
  530. package/contracts/type/Version.sol +58 -7
  531. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  532. package/contracts/{shared → upgradeability}/ProxyManager.sol +115 -38
  533. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  534. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  535. package/package.json +12 -8
  536. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  537. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -778
  538. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  539. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1348
  540. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  541. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -124
  542. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  543. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  544. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  545. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -581
  546. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  547. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  548. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  549. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -256
  550. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  551. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -237
  552. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  553. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  554. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  555. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  556. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  557. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -864
  558. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  559. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -640
  560. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  561. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  562. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  563. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -620
  564. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  565. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  566. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  567. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  568. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  569. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -569
  571. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  572. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  573. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  574. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  575. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  576. package/contracts/instance/BundleManager.sol +0 -126
  577. package/contracts/instance/InstanceAccessManager.sol +0 -543
  578. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -308
  579. package/contracts/instance/base/IKeyValueStore.sol +0 -53
  580. package/contracts/instance/base/KeyValueStore.sol +0 -169
  581. package/contracts/instance/base/Lifecycle.sol +0 -121
  582. package/contracts/instance/base/ObjectManager.sol +0 -82
  583. package/contracts/instance/module/IAccess.sol +0 -54
  584. package/contracts/instance/module/ISetup.sol +0 -33
  585. package/contracts/instance/module/ITreasury.sol +0 -23
  586. package/contracts/product/IProductService.sol +0 -40
  587. package/contracts/product/ProductService.sol +0 -210
  588. package/contracts/product/ProductServiceManager.sol +0 -54
  589. package/contracts/registry/RegistryAccessManager.sol +0 -207
  590. package/contracts/registry/ReleaseManager.sol +0 -360
  591. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +0 -13
  592. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
@@ -0,0 +1,28 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {BasicProductAuthorization} from "../../product/BasicProductAuthorization.sol";
5
+ import {IAccess} from "../../authorization/IAccess.sol";
6
+ import {PUBLIC_ROLE} from "../../type/RoleId.sol";
7
+ import {SimpleProduct} from "./SimpleProduct.sol";
8
+
9
+ contract SimpleProductAuthorization
10
+ is BasicProductAuthorization
11
+ {
12
+ constructor(string memory componentName)
13
+ BasicProductAuthorization(componentName)
14
+ {}
15
+
16
+ function _setupTargetAuthorizations()
17
+ internal
18
+ virtual override
19
+ {
20
+ super._setupTargetAuthorizations();
21
+
22
+ // authorize public role (open access to any account, only allows to lock target)
23
+ IAccess.FunctionInfo[] storage functions;
24
+ functions = _authorizeForTarget(getMainTargetName(), PUBLIC_ROLE());
25
+ _authorize(functions, SimpleProduct.approveTokenHandler.selector, "approveTokenHandler");
26
+ _authorize(functions, SimpleProduct.setWallet.selector, "setWallet");
27
+ }
28
+ }
@@ -0,0 +1,93 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IBaseStore} from "./IBaseStore.sol";
5
+
6
+ import {Blocknumber, BlocknumberLib} from "../type/Blocknumber.sol";
7
+ import {Key32, KeyId, Key32Lib} from "../type/Key32.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {StateId, KEEP_STATE} from "../type/StateId.sol";
10
+ import {Lifecycle} from "../shared/Lifecycle.sol";
11
+
12
+ abstract contract BaseStore is
13
+ Lifecycle,
14
+ IBaseStore
15
+ {
16
+
17
+ mapping(Key32 key32 => IBaseStore.Metadata metadata) private _metadata;
18
+
19
+ function _createMetadata(
20
+ Key32 key32
21
+ )
22
+ internal
23
+ {
24
+ ObjectType objectType = key32.toObjectType();
25
+ if (objectType.eqz()) {
26
+ revert ErrorBaseStoreTypeUndefined(objectType);
27
+ }
28
+
29
+ Metadata storage metadata = _metadata[key32];
30
+ if (metadata.updatedIn.gtz()) {
31
+ revert ErrorBaseStoreAlreadyCreated(key32, objectType);
32
+ }
33
+
34
+ if(!hasLifecycle(objectType)) {
35
+ revert ErrorBaseStoreNoLifecycle(objectType);
36
+ }
37
+
38
+ Blocknumber blocknumber = BlocknumberLib.current();
39
+ StateId initialState = getInitialState(objectType);
40
+
41
+ // set metadata
42
+ metadata.objectType = objectType;
43
+ metadata.state = initialState;
44
+ metadata.updatedIn = blocknumber;
45
+ }
46
+
47
+ function _updateState(
48
+ Key32 key32,
49
+ StateId state
50
+ )
51
+ internal
52
+ returns (Blocknumber lastUpdatedIn)
53
+ {
54
+ if (state.eqz()) {
55
+ revert ErrorBaseStoreStateZero(key32);
56
+ }
57
+
58
+ Metadata storage metadata = _metadata[key32];
59
+ StateId stateOld = metadata.state;
60
+ lastUpdatedIn = metadata.updatedIn;
61
+
62
+ if (stateOld.eqz()) {
63
+ revert ErrorBaseStoreNotExisting(key32);
64
+ }
65
+
66
+ // update state
67
+ if(state != KEEP_STATE()) {
68
+ checkTransition(stateOld, metadata.objectType, stateOld, state);
69
+ metadata.state = state;
70
+
71
+ // solhint-disable-next-line avoid-tx-origin
72
+ }
73
+
74
+ // update metadata
75
+ metadata.updatedIn = BlocknumberLib.current();
76
+ }
77
+
78
+ function exists(Key32 key32) public view returns (bool) {
79
+ return _metadata[key32].state.gtz();
80
+ }
81
+
82
+ function getMetadata(Key32 key32) public view returns (Metadata memory metadata) {
83
+ return _metadata[key32];
84
+ }
85
+
86
+ function getState(Key32 key32) public view returns (StateId state) {
87
+ return _metadata[key32].state;
88
+ }
89
+
90
+ function toKey32(ObjectType objectType, KeyId id) external pure override returns(Key32) {
91
+ return Key32Lib.toKey32(objectType, id);
92
+ }
93
+ }
@@ -0,0 +1,130 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {LibNftIdSet} from "../type/NftIdSet.sol";
5
+ import {NftId, NftIdLib} from "../type/NftId.sol";
6
+ import {Key32} from "../type/Key32.sol";
7
+ import {BUNDLE} from "../type/ObjectType.sol";
8
+
9
+ import {ObjectSet} from "./base/ObjectSet.sol";
10
+ import {ObjectSetHelperLib} from "./base/ObjectSetHelperLib.sol";
11
+
12
+ contract BundleSet is
13
+ ObjectSet
14
+ {
15
+ using LibNftIdSet for LibNftIdSet.Set;
16
+
17
+ event LogBundleSetPolicyLinked(NftId bundleNftId, NftId policyNftId);
18
+ event LogBundleSetPolicyUnlinked(NftId bundleNftId, NftId policyNftId);
19
+
20
+ event LogBundleSetBundleAdded(NftId poolNftId, NftId bundleNftId);
21
+ event LogBundleSetBundleUnlocked(NftId poolNftId, NftId bundleNftId);
22
+ event LogBundleSetBundleLocked(NftId poolNftId, NftId bundleNftId);
23
+ event LogBundleSetBundleClosed(NftId poolNftId, NftId bundleNftId);
24
+
25
+ error ErrorBundleSetPolicyAlreadyActivated(NftId policyNftId);
26
+ error ErrorBundleSetBundleLocked(NftId bundleNftId, NftId policyNftId);
27
+ error ErrorBundleSetPolicyWithOpenClaims(NftId policyNftId, uint256 openClaimsCount);
28
+ error ErrorBundleSetPolicyNotCloseable(NftId policyNftId);
29
+ error ErrorBundleSetBundleUnknown(NftId bundleNftId);
30
+ error ErrorBundleSetBundleNotRegistered(NftId bundleNftId);
31
+
32
+ mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
33
+
34
+ /// @dev links a policy to its bundle
35
+ function linkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
36
+
37
+ // ensure bundle is unlocked (in active set) and registered with this instance
38
+ if (!_isActive(poolNftId, _toBundleKey32(bundleNftId))) {
39
+ revert ErrorBundleSetBundleLocked(bundleNftId, policyNftId);
40
+ }
41
+
42
+ _activePolicies[bundleNftId].add(policyNftId);
43
+ emit LogBundleSetPolicyLinked(bundleNftId, policyNftId);
44
+ }
45
+
46
+
47
+ /// @dev unlinks a policy from its bundle
48
+ function unlinkPolicy(NftId poolNftId, NftId bundleNftId, NftId policyNftId) external restricted() {
49
+
50
+ // ensure bundle is registered with this instance
51
+ if (!_contains(poolNftId, _toBundleKey32(bundleNftId))) {
52
+ revert ErrorBundleSetBundleUnknown(bundleNftId);
53
+ }
54
+
55
+ _activePolicies[bundleNftId].remove(policyNftId);
56
+ emit LogBundleSetPolicyUnlinked(bundleNftId, policyNftId);
57
+ }
58
+
59
+
60
+ /// @dev add a new bundle to a pool registerd with this instance
61
+ // the corresponding pool is fetched via instance reader
62
+ function add(NftId bundleNftId) external restricted() {
63
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
64
+
65
+ // ensure pool is registered with instance
66
+ if(poolNftId.eqz()) {
67
+ revert ErrorBundleSetBundleNotRegistered(bundleNftId);
68
+ }
69
+
70
+ _add(poolNftId, _toBundleKey32(bundleNftId));
71
+ emit LogBundleSetBundleAdded(poolNftId, bundleNftId);
72
+ }
73
+
74
+
75
+ /// @dev unlocked (active) bundles are available to collateralize new policies
76
+ function unlock(NftId bundleNftId) external restricted() {
77
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
78
+ _activate(poolNftId, _toBundleKey32(bundleNftId));
79
+ emit LogBundleSetBundleUnlocked(poolNftId, bundleNftId);
80
+ }
81
+
82
+ /// @dev locked (deactivated) bundles may not collateralize any new policies
83
+ function lock(NftId bundleNftId) external restricted() {
84
+ NftId poolNftId = ObjectSetHelperLib.getPoolNftId(_instanceAddress, bundleNftId);
85
+ _deactivate(poolNftId, _toBundleKey32(bundleNftId));
86
+ emit LogBundleSetBundleLocked(poolNftId, bundleNftId);
87
+ }
88
+
89
+
90
+ function checkBundle(NftId productNftId, NftId bundleId)
91
+ public
92
+ view
93
+ returns (bool exists, bool active)
94
+ {
95
+ Key32 bundleKey32 = bundleId.toKey32(BUNDLE());
96
+ exists = _contains(productNftId, bundleKey32);
97
+
98
+ if (exists) {
99
+ active = _isActive(productNftId, bundleKey32);
100
+ }
101
+ }
102
+
103
+ function bundles(NftId poolNftId) external view returns(uint256) {
104
+ return _objects(poolNftId);
105
+ }
106
+
107
+ function getBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
108
+ return NftIdLib.toNftId(_getObject(poolNftId, idx).toKeyId());
109
+ }
110
+
111
+ function activeBundles(NftId poolNftId) external view returns(uint256) {
112
+ return _activeObjs(poolNftId);
113
+ }
114
+
115
+ function getActiveBundleNftId(NftId poolNftId, uint256 idx) external view returns(NftId) {
116
+ return NftIdLib.toNftId(_getActiveObject(poolNftId, idx).toKeyId());
117
+ }
118
+
119
+ function activePolicies(NftId bundleNftId) external view returns(uint256) {
120
+ return _activePolicies[bundleNftId].size();
121
+ }
122
+
123
+ function getActivePolicy(NftId bundleNftId, uint256 idx) external view returns(NftId policyNftId) {
124
+ return _activePolicies[bundleNftId].getElementAt(idx);
125
+ }
126
+
127
+ function _toBundleKey32(NftId nftId) private pure returns (Key32) {
128
+ return nftId.toKey32(BUNDLE());
129
+ }
130
+ }
@@ -0,0 +1,37 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {ILifecycle} from "../shared/ILifecycle.sol";
5
+
6
+ import {Blocknumber} from "../type/Blocknumber.sol";
7
+ import {Key32, KeyId} from "../type/Key32.sol";
8
+ import {ObjectType} from "../type/ObjectType.sol";
9
+ import {StateId} from "../type/StateId.sol";
10
+
11
+
12
+ interface IBaseStore is ILifecycle {
13
+
14
+ error ErrorBaseStoreTypeUndefined(ObjectType objectType);
15
+ error ErrorBaseStoreAlreadyCreated(Key32 key, ObjectType objectType);
16
+ error ErrorBaseStoreNoLifecycle(ObjectType objectType);
17
+ error ErrorBaseStoreStateZero(Key32 key);
18
+ error ErrorBaseStoreNotExisting(Key32 key);
19
+
20
+
21
+ struct Metadata {
22
+ // slot 0
23
+ ObjectType objectType;
24
+ StateId state;
25
+ Blocknumber updatedIn;
26
+ }
27
+
28
+ /// @dev check if a metadata entry with the key exists
29
+ function exists(Key32 key) external view returns (bool);
30
+ /// @dev retrieve the metadata for a given key
31
+ function getMetadata(Key32 key) external view returns (Metadata memory metadata);
32
+ /// @dev retrieve the state for a given key
33
+ function getState(Key32 key) external view returns (StateId state);
34
+
35
+ /// @dev convert an object type and an id to a key32
36
+ function toKey32(ObjectType objectType, KeyId id) external pure returns(Key32);
37
+ }
@@ -1,77 +1,156 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
-
6
- import {ClaimId} from "../type/ClaimId.sol";
7
- import {DistributorType} from "../type/DistributorType.sol";
8
- import {PayoutId} from "../type/PayoutId.sol";
9
- import {NftId} from "../type/NftId.sol";
10
- import {StateId} from "../type/StateId.sol";
11
- import {ReferralId} from "../type/Referral.sol";
12
- import {RiskId} from "../type/RiskId.sol";
13
- import {VersionPart} from "../type/Version.sol";
14
- import {Key32} from "../type/Key32.sol";
15
- import {RoleId} from "../type/RoleId.sol";
16
-
4
+ import {IAccess} from "../authorization/IAccess.sol";
17
5
  import {IRegisterable} from "../shared/IRegisterable.sol";
18
6
 
19
- import {ITransferInterceptor} from "../registry/ITransferInterceptor.sol";
20
-
21
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
22
- import {BundleManager} from "./BundleManager.sol";
7
+ import {Amount} from "../type/Amount.sol";
8
+ import {BundleSet} from "./BundleSet.sol";
9
+ import {RiskSet} from "./RiskSet.sol";
10
+ import {InstanceAdmin} from "./InstanceAdmin.sol";
23
11
  import {InstanceReader} from "./InstanceReader.sol";
24
12
  import {InstanceStore} from "./InstanceStore.sol";
13
+ import {NftId} from "../type/NftId.sol";
14
+ import {ProductStore} from "./ProductStore.sol";
15
+ import {RoleId} from "../type/RoleId.sol";
16
+ import {Seconds} from "../type/Seconds.sol";
17
+ import {UFixed} from "../type/UFixed.sol";
25
18
 
26
- import {IKeyValueStore} from "./base/IKeyValueStore.sol";
27
19
 
28
- import {IAccess} from "./module/IAccess.sol";
20
+ interface IInstance is
21
+ IRegisterable
22
+ {
23
+ // role handling
24
+ event LogInstanceCustomRoleCreated(RoleId roleId, string roleName, RoleId adminRoleId, uint32 maxMemberCount);
25
+ event LogInstanceCustomRoleActiveSet(RoleId roleId, bool active, address caller);
26
+ event LogInstanceCustomRoleGranted(RoleId roleId, address account, address caller);
27
+ event LogInstanceCustomRoleRevoked(RoleId roleId, address account, address caller);
29
28
 
30
- import {IBundleService} from "../pool/IBundleService.sol";
31
- import {IDistributionService} from "../distribution/IDistributionService.sol";
32
- import {IPolicyService} from "../product/IPolicyService.sol";
33
- import {IPoolService} from "../pool/IPoolService.sol";
34
- import {IProductService} from "../product/IProductService.sol";
35
- import {IPolicyService} from "../product/IPolicyService.sol";
36
- import {IBundleService} from "../pool/IBundleService.sol";
29
+ // target handling
30
+ event LogInstanceCustomTargetCreated(address target, RoleId targetRoleId, string name);
31
+ event LogInstanceTargetLocked(address target, bool locked);
32
+ event LogInstanceCustomTargetFunctionRoleSet(address target, bytes4[] selectors, RoleId roleId);
37
33
 
34
+ // modifier is onlyRoleAdmin
35
+ error ErrorInstanceNotCustomRole(RoleId roleId);
36
+ error ErrorInstanceNotRoleAdmin(RoleId roleId, address account);
38
37
 
38
+ error ErrorInstanceInstanceAdminZero();
39
+ error ErrorInstanceInstanceAdminAlreadySet(address instanceAdmin);
40
+ error ErrorInstanceInstanceAdminAuthorityMismatch(address instanceAuthority);
39
41
 
40
- interface IInstance is
41
- IRegisterable,
42
- ITransferInterceptor,
43
- IAccessManaged
44
- {
45
- error ErrorInstanceInstanceAccessManagerZero();
46
- error ErrorInstanceInstanceAccessManagerAlreadySet(address instanceAccessManager);
47
- error ErrorInstanceInstanceAccessManagerAuthorityMismatch(address instanceAuthority);
42
+ error ErrorInstanceBundleSetAlreadySet(address instanceBundleSet);
43
+ error ErrorInstanceBundleSetInstanceMismatch(address instance);
44
+ error ErrorInstanceBundleSetAuthorityMismatch(address instanceAuthority);
48
45
 
49
- error ErrorInstanceBundleManagerAlreadySet(address instanceBundleManager);
50
- error ErrorInstanceBundleManagerInstanceMismatch(address instance);
51
- error ErrorInstanceBundleManagerAuthorityMismatch(address instanceAuthority);
46
+ error ErrorInstanceRiskSetAlreadySet(address instanceRiskSet);
47
+ error ErrorInstanceRiskSetInstanceMismatch(address instance);
48
+ error ErrorInstanceRiskSetAuthorityMismatch(address instanceAuthority);
52
49
 
53
50
  error ErrorInstanceInstanceReaderInstanceMismatch(address instanceAuthority);
54
51
 
55
52
  error ErrorInstanceInstanceStoreAlreadySet(address instanceStore);
56
53
  error ErrorInstanceInstanceStoreAuthorityMismatch(address instanceAuthority);
57
54
 
58
- function createRole(string memory roleName, string memory adminName) external returns (RoleId roleId, RoleId admin);
55
+ struct InstanceContracts {
56
+ InstanceAdmin instanceAdmin;
57
+ InstanceStore instanceStore;
58
+ ProductStore productStore;
59
+ BundleSet bundleSet;
60
+ RiskSet riskSet;
61
+ InstanceReader instanceReader;
62
+ }
63
+
64
+ struct InstanceInfo {
65
+ uint64 requestsCount;
66
+ }
67
+
68
+ ///--- instance ---------------------------------------------------------//
69
+
70
+ /// @dev Locks/unlocks the complete instance, including all its components.
71
+ function setInstanceLocked(bool locked) external;
72
+
73
+ /// @dev Upgrades the instance reader to the specified target.
74
+ function upgradeInstanceReader() external;
75
+
76
+ /// @dev Sets the instance reader for the instance.
77
+ /// Permissioned: only the instance service may call this function.
78
+ function setInstanceReader(InstanceReader instanceReader) external;
79
+
80
+ ///--- staking ----------------------------------------------------------//
81
+
82
+ /// @dev Sets the duration for locking new stakes on this instance..
83
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
84
+
85
+ /// @dev Sets the staking reward rate [apr] for this instance.
86
+ function setStakingRewardRate(UFixed rewardRate) external;
87
+
88
+ /// @dev Sets the maximum staked amount for this instance.
89
+ function setStakingMaxAmount(Amount maxStakedAmount) external;
90
+
91
+ /// @dev Refills the staking reward reserves for the specified target.
92
+ function refillStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
93
+
94
+ /// @dev Defunds the staking reward reserves for the specified target.
95
+ function withdrawStakingRewardReserves(Amount dipAmount) external returns (Amount newBalance);
96
+
97
+ ///--- product/component ------------------------------------------------//
98
+
99
+ /// @dev Locks/unlocks the specified target.
100
+ function setTargetLocked(address target, bool locked) external;
101
+
102
+ /// @dev Register a product with the instance.
103
+ function registerProduct(address product, address token) external returns (NftId productNftId);
104
+
105
+ ///--- authz ------------------------------------------------------------//
106
+
107
+ /// @dev Creates a new custom role for the calling instance.
108
+ /// Custom roles are intended to be used for access control of custom components and its helper contracts.
109
+ /// Custom roles are not intended to be used as target roles for custom contracts.
110
+ function createRole(string memory roleName, RoleId adminRoleId, uint32 maxMemberCount) external returns (RoleId roleId);
111
+
112
+ /// @dev Activates/deactivates the specified role.
113
+ /// Only instance owner or account with role admin role can call this function.
114
+ function setRoleActive(RoleId roleId, bool active) external;
115
+
116
+ /// @dev Grants the specified role to the account.
117
+ /// Only active roles can be granted.
118
+ /// Only instance owner or account with role admin role can call this function.
59
119
  function grantRole(RoleId roleId, address account) external;
120
+
121
+ /// @dev Revokes the specified role from the account.
122
+ /// Only instance owner or account with role admin role can call this function.
60
123
  function revokeRole(RoleId roleId, address account) external;
61
124
 
62
- function createTarget(address target, string memory name) external;
63
- function setTargetFunctionRole(string memory targetName, bytes4[] calldata selectors, RoleId roleId) external;
64
- function setTargetLocked(address target, bool locked) external;
125
+ /// @dev Creates a new custom target.
126
+ /// Custom targets are intended to be used for access control helper contracts of components.
127
+ /// Custom targets are not intended to be used for components.
128
+ function createTarget(address target, string memory name) external returns (RoleId contractRoleId);
129
+
130
+ /// @dev Authorizes the specified functions for the target and provided role.
131
+ function authorizeFunctions(address target, RoleId roleId, IAccess.FunctionInfo[] memory functions) external;
132
+
133
+ /// @dev Removes any role authorization for the specified functions.
134
+ function unauthorizeFunctions(address target, IAccess.FunctionInfo[] memory functions) external;
135
+
136
+ //--- getters -----------------------------------------------------------//
137
+
138
+ /// @dev returns the overall locking state of the instance (including all components)
139
+ function isInstanceLocked() external view returns (bool isLocked);
140
+
141
+ /// @dev returns the locking state of the specified target
142
+ function isTargetLocked(address target) external view returns (bool isLocked);
65
143
 
66
- function getDistributionService() external view returns (IDistributionService);
67
- function getProductService() external view returns (IProductService);
68
- function getPoolService() external view returns (IPoolService);
69
- function getPolicyService() external view returns (IPolicyService);
70
- function getBundleService() external view returns (IBundleService);
144
+ // get products
145
+ function products() external view returns (uint256 productCount);
146
+ function getProductNftId(uint256 idx) external view returns (NftId productNftId);
71
147
 
72
- function getMajorVersion() external pure returns (VersionPart majorVersion);
148
+ // get supporting contracts
73
149
  function getInstanceReader() external view returns (InstanceReader);
74
- function getBundleManager() external view returns (BundleManager);
75
- function getInstanceAccessManager() external view returns (InstanceAccessManager);
150
+ function getBundleSet() external view returns (BundleSet);
151
+ function getRiskSet() external view returns (RiskSet);
152
+ function getInstanceAdmin() external view returns (InstanceAdmin);
76
153
  function getInstanceStore() external view returns (InstanceStore);
154
+ function getProductStore() external view returns (ProductStore);
155
+ function isTokenRegistryDisabled() external view returns (bool);
77
156
  }
@@ -1,24 +1,31 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IAccess} from "../authorization/IAccess.sol";
5
+ import {IInstance} from "./IInstance.sol";
6
+ import {IService} from "../shared/IService.sol";
7
+
8
+ import {Amount} from "../type/Amount.sol";
4
9
  import {NftId} from "../type/NftId.sol";
5
10
  import {ObjectType} from "../type/ObjectType.sol";
6
11
  import {RoleId} from "../type/RoleId.sol";
7
- import {IService} from "../shared/IService.sol";
8
-
9
- import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
10
- import {InstanceAccessManager} from "./InstanceAccessManager.sol";
11
- import {Instance} from "./Instance.sol";
12
- import {InstanceReader} from "./InstanceReader.sol";
13
- import {BundleManager} from "./BundleManager.sol";
14
- import {InstanceStore} from "./InstanceStore.sol";
12
+ import {Seconds} from "../type/Seconds.sol";
13
+ import {UFixed} from "../type/UFixed.sol";
14
+ import {VersionPart} from "../type/Version.sol";
15
15
 
16
16
  interface IInstanceService is IService {
17
17
 
18
+ // onlyInstance
19
+ error ErrorInstanceServiceNotRegistered(address instance);
20
+ error ErrorInstanceServiceNotInstance(address instance, ObjectType objectType);
21
+ error ErrorInstanceServiceInstanceVersionMismatch(NftId instanceNftId, VersionPart expectedRelease, VersionPart instanceRelease);
22
+
23
+ error ErrorInstanceServiceComponentNotInstanceLinked(address component);
24
+
18
25
  error ErrorInstanceServiceMasterInstanceAlreadySet();
19
- error ErrorInstanceServiceMasterOzAccessManagerAlreadySet();
20
- error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
21
- error ErrorInstanceServiceMasterBundleManagerAlreadySet();
26
+ error ErrorInstanceServiceMasterInstanceAdminAlreadySet();
27
+ error ErrorInstanceServiceMasterBundleSetAlreadySet();
28
+ error ErrorInstanceServiceMasterRiskSetAlreadySet();
22
29
  error ErrorInstanceServiceInstanceAddressZero();
23
30
 
24
31
  error ErrorInstanceServiceMasterInstanceReaderNotSet();
@@ -26,48 +33,87 @@ interface IInstanceService is IService {
26
33
  error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
27
34
  error ErrorInstanceServiceInstanceReaderInstanceMismatch();
28
35
 
29
- error ErrorInstanceServiceInstanceAccessManagerZero();
36
+ error ErrorInstanceServiceAccessManagerZero();
37
+ error ErrorInstanceServiceInstanceAdminZero();
30
38
  error ErrorInstanceServiceInstanceReaderZero();
31
- error ErrorInstanceServiceBundleManagerZero();
39
+ error ErrorInstanceServiceBundleSetZero();
40
+ error ErrorInstanceServiceRiskSetZero();
32
41
  error ErrorInstanceServiceInstanceStoreZero();
42
+ error ErrorInstanceServiceProductStoreZero();
33
43
 
34
44
  error ErrorInstanceServiceInstanceAuthorityMismatch();
35
- error ErrorInstanceServiceBundleManagerAuthorityMismatch();
45
+ error ErrorInstanceServiceBundleSetAuthorityMismatch();
46
+ error ErrorInstanceServiceRiskSetAuthorityMismatch();
36
47
  error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
37
- error ErrorInstanceServiceBundleMangerInstanceMismatch();
48
+ error ErrorInstanceServiceBundleSetInstanceMismatch();
49
+ error ErrorInstanceServiceRiskSetInstanceMismatch();
38
50
  error ErrorInstanceServiceInstanceStoreAuthorityMismatch();
51
+ error ErrorInstanceServiceProductStoreAuthorityMismatch();
39
52
 
40
53
  error ErrorInstanceServiceRequestUnauhorized(address caller);
41
- error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
42
- error ErrorInstanceServiceNotInstance(NftId nftId);
54
+ error ErrorInstanceServiceNotInstanceNftId(NftId nftId);
43
55
  error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
44
56
  error ErrorInstanceServiceInstanceComponentMismatch(NftId instanceNftId, NftId componentNftId);
45
57
  error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
46
58
 
47
- event LogInstanceCloned(
48
- address clonedOzAccessManager,
49
- address clonedInstanceAccessManager,
50
- address clonedInstance,
51
- address clonedInstanceStore,
52
- address clonedBundleManager,
53
- address clonedInstanceReader,
54
- NftId clonedInstanceNftId
55
- );
56
-
57
- function createInstanceClone()
59
+ event LogInstanceServiceInstanceLocked(NftId instanceNftId, bool locked);
60
+ event LogInstanceServiceInstanceCreated(NftId instanceNftId, address instance);
61
+ event LogInstanceServiceMasterInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
62
+ event LogInstanceServiceInstanceReaderUpgraded(NftId instanceNfId, address newInstanceReader);
63
+
64
+ /// @dev Creates a new custom role for the calling instance.
65
+ function createRole(string memory roleName, RoleId adminRoleId, uint32 maxMemberCount) external returns (RoleId roleId);
66
+
67
+ /// @dev Sets the specified custom role as active or inactive for the calling instance.
68
+ function setRoleActive(RoleId roleId, bool active) external;
69
+
70
+ /// @dev Grants the specified custom role to the specified account for the calling instance.
71
+ function grantRole(RoleId roleId, address account) external;
72
+
73
+ /// @dev Revokes the specified custom role from the specified account for the calling instance.
74
+ function revokeRole(RoleId roleId, address account) external;
75
+
76
+ /// @dev Creates a new custom target for the calling instance.
77
+ /// All custom trargets are created with a corresponding contract role.
78
+ function createTarget(address target, string memory name) external returns (RoleId contractRoleId);
79
+
80
+ /// @dev Authorizes the specified functions for the specified target.
81
+ function authorizeFunctions(address target, RoleId roleId, IAccess.FunctionInfo[] memory functions) external;
82
+
83
+ /// @dev Removes any role authorization for the specified functions.
84
+ function unauthorizeFunctions(address target, IAccess.FunctionInfo[] memory functions) external;
85
+
86
+ /// @dev Locks/unlocks the specified target constrolled by the corresponding instance admin.
87
+ function setTargetLocked(address target, bool locked) external;
88
+
89
+ /// @dev Locks the complete instance, including all its components.
90
+ function setInstanceLocked(bool locked) external;
91
+
92
+ /// @dev Creates a new instance.
93
+ /// The caller becomes the owner of the new instance.
94
+ /// Creation of a new instance is achieved by this service through the creation and registration
95
+ /// of a new clone of the master instance and then setting up the initial wiring and authorization
96
+ /// of the necessary components.
97
+ /// @param allowAnyToken specifies whether the new instance is allowed to use any token or
98
+ /// only tokens that are registered in the `TokenRegistry`. Use of tokens **not** registered in the
99
+ /// `TokenRegistry` may result in problems with token handline and is therefor not recommended. The
100
+ /// use of such instances **is not supported** by Etherisc.
101
+ function createInstance(bool allowAnyToken)
58
102
  external
59
103
  returns (
60
- Instance clonedInstance,
104
+ IInstance instance,
61
105
  NftId instanceNftId
62
106
  );
63
107
 
64
- function createGifTarget(
65
- NftId instanceNftId,
66
- address targetAddress,
67
- string memory targetName,
68
- bytes4[][] memory selectors,
69
- RoleId[] memory roles
70
- ) external;
108
+ function upgradeInstanceReader() external;
109
+ function upgradeMasterInstanceReader(address instanceReaderAddress) external;
110
+
111
+ function setStakingLockingPeriod(Seconds stakeLockingPeriod) external;
112
+ function setStakingRewardRate(UFixed rewardRate) external;
113
+ function setStakingMaxAmount(Amount maxStakedAmount) external;
114
+
115
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount) external returns (Amount newBalance);
71
116
 
72
- function setComponentLocked(bool locked) external;
117
+ /// @dev Defunds the staking reward reserves for the specified target.
118
+ function withdrawInstanceRewardReserves(Amount dipAmount) external returns (Amount newBalance);
73
119
  }