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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (613) hide show
  1. package/README.md +137 -9
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1075 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +790 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +843 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +1664 -0
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +4 -0
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +1403 -0
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +4 -0
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +790 -0
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +4 -0
  17. package/artifacts/contracts/authorization/IAccess.sol/IAccess.json +10 -0
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  19. package/artifacts/contracts/{shared → authorization}/IAccessAdmin.sol/IAccessAdmin.json +525 -342
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +4 -0
  21. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +455 -0
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  23. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +397 -0
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  25. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +646 -0
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +4 -0
  27. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +1244 -0
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +4 -0
  29. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +805 -0
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  31. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +139 -606
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  33. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +754 -323
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  35. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +228 -124
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  37. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +145 -272
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  39. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +535 -78
  40. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +4 -0
  41. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.json +22 -0
  42. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +4 -0
  43. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +1484 -0
  44. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +4 -0
  45. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +805 -0
  46. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +4 -0
  47. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +2053 -0
  48. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +4 -0
  49. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +805 -0
  50. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +4 -0
  51. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.json +376 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +4 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +1439 -0
  54. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  55. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  56. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +4 -0
  57. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +1171 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +4 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +1647 -0
  60. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  61. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +4 -0
  63. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +2585 -0
  64. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  65. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  66. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.dbg.json +4 -0
  67. package/artifacts/contracts/instance/BaseStore.sol/BaseStore.json +332 -0
  68. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  69. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +851 -0
  70. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.dbg.json +4 -0
  71. package/artifacts/contracts/instance/IBaseStore.sol/IBaseStore.json +304 -0
  72. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  73. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +580 -80
  74. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  75. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +398 -75
  76. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  77. package/artifacts/contracts/instance/Instance.sol/Instance.json +589 -217
  78. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  79. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1889 -313
  80. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +4 -0
  81. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +837 -0
  82. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  83. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1677 -772
  84. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  85. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +392 -274
  86. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  87. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +141 -127
  88. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  89. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +376 -1560
  90. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.dbg.json +4 -0
  91. package/artifacts/contracts/instance/ProductStore.sol/ProductStore.json +3427 -0
  92. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  93. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +866 -0
  94. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  95. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +8 -8
  96. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  97. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  98. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  99. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  100. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +223 -0
  101. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  102. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +192 -0
  103. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  104. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  105. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  106. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  107. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  108. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  109. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  110. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  111. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  112. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +4 -0
  113. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +957 -0
  114. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +4 -0
  115. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +810 -0
  116. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  117. package/artifacts/contracts/oracle/IOracle.sol/IOracle.json +43 -1
  118. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  119. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +142 -129
  120. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  121. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +98 -11
  122. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  123. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +140 -413
  124. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  125. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +198 -190
  126. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +177 -97
  128. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +4 -0
  129. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +1242 -0
  130. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +4 -0
  131. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +805 -0
  132. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  133. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +569 -265
  134. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  135. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +216 -104
  136. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  137. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +383 -53
  138. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  139. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +147 -396
  140. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  141. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +711 -340
  142. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  143. package/artifacts/contracts/pool/Pool.sol/Pool.json +154 -694
  144. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  145. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +522 -0
  146. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  147. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +925 -545
  148. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  149. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +230 -106
  150. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  151. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +353 -180
  152. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +159 -99
  154. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +4 -0
  155. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +1159 -0
  156. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +4 -0
  157. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +805 -0
  158. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  159. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +466 -245
  160. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +187 -123
  162. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  163. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +301 -9
  164. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  165. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +350 -18
  166. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  167. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +417 -101
  168. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  169. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +183 -80
  170. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  171. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +282 -261
  172. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  173. package/artifacts/contracts/{shared/ComponentVerifyingService.sol/ComponentVerifyingService.json → product/IRiskService.sol/IRiskService.json} +283 -157
  174. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  175. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +532 -311
  176. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  177. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  178. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  179. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +196 -108
  180. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  181. package/artifacts/contracts/product/PricingService.sol/PricingService.json +249 -329
  182. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  183. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +165 -137
  184. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  185. package/artifacts/contracts/product/Product.sol/Product.json +284 -564
  186. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  187. package/artifacts/contracts/product/RiskService.sol/RiskService.json +873 -0
  188. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  189. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +774 -0
  190. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  191. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +59 -16
  192. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  193. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +384 -69
  194. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +97 -148
  196. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  197. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  198. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  199. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +5 -18
  200. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  201. package/artifacts/contracts/registry/Registry.sol/Registry.json +617 -133
  202. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  203. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +796 -537
  204. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  205. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1074 -0
  206. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  207. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +136 -290
  208. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  209. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +141 -89
  210. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  211. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  212. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  213. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +205 -0
  214. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  215. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1389 -0
  216. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  217. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +523 -27
  218. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  219. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +120 -60
  220. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  221. package/artifacts/contracts/shared/Component.sol/Component.json +86 -277
  222. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  223. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +609 -569
  224. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  225. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +197 -131
  226. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +4 -0
  227. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +632 -0
  228. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  229. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  230. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  231. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  232. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  233. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  234. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +92 -93
  236. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +535 -240
  238. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  239. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +131 -129
  240. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  241. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.json +88 -9
  242. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  243. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.json +34 -3
  244. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  245. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +35 -0
  246. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  247. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +15 -47
  248. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  249. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +167 -0
  250. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  251. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  252. package/artifacts/contracts/shared/IService.sol/IService.json +84 -2
  253. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  254. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +53 -0
  255. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  256. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +125 -366
  257. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  258. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +98 -94
  259. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  260. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +42 -62
  261. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  262. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  263. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  264. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +41 -57
  265. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  266. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +19 -141
  267. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  268. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +141 -97
  269. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  270. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  271. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  272. package/artifacts/contracts/shared/Service.sol/Service.json +86 -111
  273. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  274. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +585 -12
  275. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  276. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  277. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  278. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +172 -0
  279. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  280. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1510 -191
  281. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  282. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +235 -123
  283. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.dbg.json +4 -0
  284. package/artifacts/contracts/staking/ITargetLimitHandler.sol/ITargetLimitHandler.json +50 -0
  285. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  286. package/artifacts/contracts/staking/Staking.sol/Staking.json +1635 -455
  287. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  288. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +470 -0
  289. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  290. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +191 -105
  291. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  292. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +295 -183
  293. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  294. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +282 -281
  295. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  296. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +144 -96
  297. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  298. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1637 -801
  299. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.dbg.json +4 -0
  300. package/artifacts/contracts/staking/TargetHandler.sol/TargetHandler.json +309 -0
  301. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  302. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +184 -76
  303. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  304. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  305. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/Amount.sol/AmountLib.json +63 -10
  307. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +45 -19
  309. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.dbg.json +4 -0
  310. package/artifacts/contracts/type/ChainId.sol/ChainIdLib.json +193 -0
  311. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +28 -4
  313. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  315. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Fee.sol/FeeLib.json +98 -37
  317. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  318. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  319. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  320. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  321. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  323. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  324. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  325. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +59 -4
  327. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +19 -19
  329. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  331. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  332. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  333. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  334. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +125 -7
  335. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  336. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +79 -91
  337. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  338. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +93 -2
  339. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  340. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  341. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  342. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  343. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  344. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +15 -2
  345. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  346. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  347. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  348. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +24 -5
  349. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  350. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +126 -33
  351. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  352. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  353. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  354. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +120 -2
  355. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  356. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +11 -1
  357. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  358. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +656 -0
  359. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  360. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +142 -0
  361. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  362. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +11 -1
  363. package/contracts/accounting/AccountingService.sol +274 -0
  364. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  365. package/contracts/accounting/IAccountingService.sol +47 -0
  366. package/contracts/authorization/AccessAdmin.sol +780 -0
  367. package/contracts/authorization/AccessAdminLib.sol +396 -0
  368. package/contracts/authorization/AccessManagerCloneable.sol +158 -0
  369. package/contracts/authorization/Authorization.sol +169 -0
  370. package/contracts/authorization/IAccess.sol +67 -0
  371. package/contracts/authorization/IAccessAdmin.sol +144 -0
  372. package/contracts/authorization/IAuthorization.sol +26 -0
  373. package/contracts/authorization/IServiceAuthorization.sol +78 -0
  374. package/contracts/authorization/ServiceAuthorization.sol +320 -0
  375. package/contracts/distribution/BasicDistribution.sol +141 -0
  376. package/contracts/distribution/BasicDistributionAuthorization.sol +67 -0
  377. package/contracts/distribution/Distribution.sol +125 -139
  378. package/contracts/distribution/DistributionService.sol +284 -133
  379. package/contracts/distribution/DistributionServiceManager.sol +8 -11
  380. package/contracts/distribution/IDistributionComponent.sol +21 -42
  381. package/contracts/distribution/IDistributionService.sol +60 -26
  382. package/contracts/examples/fire/DamageLevel.sol +59 -0
  383. package/contracts/examples/fire/FirePool.sol +86 -0
  384. package/contracts/examples/fire/FirePoolAuthorization.sol +35 -0
  385. package/contracts/examples/fire/FireProduct.sol +433 -0
  386. package/contracts/examples/fire/FireProductAuthorization.sol +45 -0
  387. package/contracts/examples/fire/FireUSD.sol +26 -0
  388. package/contracts/examples/unpermissioned/SimpleDistribution.sol +81 -0
  389. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  390. package/contracts/examples/unpermissioned/SimpleOracle.sol +133 -0
  391. package/contracts/examples/unpermissioned/SimplePool.sol +102 -0
  392. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  393. package/contracts/examples/unpermissioned/SimpleProduct.sol +437 -0
  394. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  395. package/contracts/instance/BaseStore.sol +93 -0
  396. package/contracts/instance/BundleSet.sol +130 -0
  397. package/contracts/instance/IBaseStore.sol +37 -0
  398. package/contracts/instance/IInstance.sol +118 -49
  399. package/contracts/instance/IInstanceService.sol +68 -46
  400. package/contracts/instance/Instance.sol +221 -133
  401. package/contracts/instance/InstanceAdmin.sol +297 -249
  402. package/contracts/instance/InstanceAuthorizationV3.sol +275 -0
  403. package/contracts/instance/InstanceReader.sol +488 -254
  404. package/contracts/instance/InstanceService.sol +340 -265
  405. package/contracts/instance/InstanceServiceManager.sol +8 -13
  406. package/contracts/instance/InstanceStore.sol +19 -92
  407. package/contracts/instance/ProductStore.sol +303 -0
  408. package/contracts/instance/RiskSet.sol +126 -0
  409. package/contracts/instance/TargetNames.sol +10 -0
  410. package/contracts/instance/base/BalanceStore.sol +4 -6
  411. package/contracts/instance/base/ObjectCounter.sol +1 -2
  412. package/contracts/instance/base/ObjectLifecycle.sol +109 -0
  413. package/contracts/instance/base/ObjectSet.sol +77 -0
  414. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  415. package/contracts/instance/module/IBundle.sol +6 -5
  416. package/contracts/instance/module/IComponents.sol +30 -20
  417. package/contracts/instance/module/IDistribution.sol +21 -9
  418. package/contracts/instance/module/IPolicy.sol +50 -29
  419. package/contracts/instance/module/IRisk.sol +5 -0
  420. package/contracts/mock/Dip.sol +1 -1
  421. package/contracts/oracle/BasicOracle.sol +45 -0
  422. package/contracts/oracle/BasicOracleAuthorization.sol +53 -0
  423. package/contracts/oracle/IOracle.sol +25 -4
  424. package/contracts/oracle/IOracleComponent.sol +2 -1
  425. package/contracts/oracle/IOracleService.sol +2 -1
  426. package/contracts/oracle/Oracle.sol +62 -53
  427. package/contracts/oracle/OracleService.sol +119 -87
  428. package/contracts/oracle/OracleServiceManager.sol +8 -11
  429. package/contracts/pool/BasicPool.sol +162 -0
  430. package/contracts/pool/BasicPoolAuthorization.sol +81 -0
  431. package/contracts/pool/BundleService.sol +222 -132
  432. package/contracts/pool/BundleServiceManager.sol +8 -11
  433. package/contracts/pool/IBundleService.sol +43 -33
  434. package/contracts/pool/IPoolComponent.sol +20 -70
  435. package/contracts/pool/IPoolService.sol +97 -77
  436. package/contracts/pool/Pool.sol +198 -164
  437. package/contracts/pool/PoolLib.sol +341 -0
  438. package/contracts/pool/PoolService.sol +419 -257
  439. package/contracts/pool/PoolServiceManager.sol +6 -9
  440. package/contracts/product/ApplicationService.sol +154 -81
  441. package/contracts/product/ApplicationServiceManager.sol +6 -6
  442. package/contracts/product/BasicProduct.sol +49 -0
  443. package/contracts/product/BasicProductAuthorization.sol +63 -0
  444. package/contracts/product/ClaimService.sol +391 -207
  445. package/contracts/product/ClaimServiceManager.sol +6 -6
  446. package/contracts/product/IApplicationService.sol +29 -3
  447. package/contracts/product/IClaimService.sol +48 -11
  448. package/contracts/product/IPolicyService.sol +61 -37
  449. package/contracts/product/IPricingService.sol +11 -10
  450. package/contracts/product/IProductComponent.sol +29 -9
  451. package/contracts/product/IRiskService.sol +48 -0
  452. package/contracts/product/PolicyService.sol +445 -275
  453. package/contracts/product/PolicyServiceLib.sol +139 -0
  454. package/contracts/product/PolicyServiceManager.sol +6 -9
  455. package/contracts/product/PricingService.sol +90 -84
  456. package/contracts/product/PricingServiceManager.sol +6 -9
  457. package/contracts/product/Product.sol +262 -146
  458. package/contracts/product/RiskService.sol +189 -0
  459. package/contracts/product/RiskServiceManager.sol +39 -0
  460. package/contracts/registry/ChainNft.sol +72 -40
  461. package/contracts/registry/IRegistry.sol +84 -36
  462. package/contracts/registry/IRegistryService.sol +3 -10
  463. package/contracts/registry/IRelease.sol +29 -0
  464. package/contracts/registry/ITransferInterceptor.sol +1 -2
  465. package/contracts/registry/Registry.sol +378 -224
  466. package/contracts/registry/RegistryAdmin.sol +119 -261
  467. package/contracts/registry/RegistryAuthorization.sol +336 -0
  468. package/contracts/registry/RegistryService.sol +42 -67
  469. package/contracts/registry/RegistryServiceManager.sol +5 -5
  470. package/contracts/registry/ReleaseAdmin.sol +195 -0
  471. package/contracts/registry/ReleaseLifecycle.sol +32 -0
  472. package/contracts/registry/ReleaseRegistry.sol +525 -0
  473. package/contracts/registry/ServiceAuthorizationV3.sol +213 -71
  474. package/contracts/registry/TokenRegistry.sol +61 -59
  475. package/contracts/shared/Component.sol +70 -137
  476. package/contracts/shared/ComponentService.sol +459 -385
  477. package/contracts/shared/ComponentServiceManager.sol +10 -7
  478. package/contracts/shared/ContractLib.sol +312 -0
  479. package/contracts/shared/IComponent.sol +6 -18
  480. package/contracts/shared/IComponentService.sol +50 -41
  481. package/contracts/shared/IInstanceLinkedComponent.sol +10 -26
  482. package/contracts/shared/IKeyValueStore.sol +10 -1
  483. package/contracts/shared/ILifecycle.sol +3 -2
  484. package/contracts/shared/INftOwnable.sol +4 -0
  485. package/contracts/shared/IPolicyHolder.sol +12 -22
  486. package/contracts/shared/IRegisterable.sol +22 -1
  487. package/contracts/shared/IService.sol +4 -6
  488. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +11 -3
  489. package/contracts/shared/InstanceLinkedComponent.sol +95 -45
  490. package/contracts/shared/KeyValueStore.sol +10 -6
  491. package/contracts/shared/Lifecycle.sol +30 -72
  492. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  493. package/contracts/shared/NftOwnable.sol +33 -11
  494. package/contracts/shared/PolicyHolder.sol +20 -59
  495. package/contracts/shared/Registerable.sol +52 -21
  496. package/contracts/shared/RegistryLinked.sol +9 -14
  497. package/contracts/shared/Service.sol +22 -38
  498. package/contracts/shared/TokenHandler.sol +310 -26
  499. package/contracts/shared/TokenHandlerDeployerLib.sol +20 -0
  500. package/contracts/staking/IStaking.sol +272 -73
  501. package/contracts/staking/IStakingService.sol +48 -74
  502. package/contracts/staking/ITargetLimitHandler.sol +17 -0
  503. package/contracts/staking/Staking.sol +533 -248
  504. package/contracts/staking/StakingLib.sol +195 -0
  505. package/contracts/staking/StakingManager.sol +14 -15
  506. package/contracts/staking/StakingReader.sol +72 -88
  507. package/contracts/staking/StakingService.sol +62 -152
  508. package/contracts/staking/StakingServiceManager.sol +9 -7
  509. package/contracts/staking/StakingStore.sol +1096 -341
  510. package/contracts/staking/TargetHandler.sol +132 -0
  511. package/contracts/staking/TargetManagerLib.sol +73 -46
  512. package/contracts/type/Amount.sol +31 -5
  513. package/contracts/type/Blocknumber.sol +22 -16
  514. package/contracts/type/ChainId.sol +101 -0
  515. package/contracts/type/ClaimId.sol +6 -1
  516. package/contracts/type/Fee.sol +8 -8
  517. package/contracts/type/Key32.sol +2 -2
  518. package/contracts/type/Key32Set.sol +62 -0
  519. package/contracts/type/NftId.sol +7 -0
  520. package/contracts/type/ObjectType.sol +94 -28
  521. package/contracts/type/PayoutId.sol +10 -10
  522. package/contracts/type/Referral.sol +1 -0
  523. package/contracts/type/RiskId.sol +38 -6
  524. package/contracts/type/RoleId.sol +93 -114
  525. package/contracts/type/Seconds.sol +40 -1
  526. package/contracts/type/Selector.sol +5 -0
  527. package/contracts/type/StateId.sol +15 -1
  528. package/contracts/type/String.sol +12 -0
  529. package/contracts/type/Timestamp.sol +14 -7
  530. package/contracts/type/UFixed.sol +62 -125
  531. package/contracts/type/Version.sol +57 -6
  532. package/contracts/{shared → upgradeability}/IVersionable.sol +3 -0
  533. package/contracts/{shared → upgradeability}/ProxyManager.sol +96 -49
  534. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +24 -0
  535. package/contracts/{shared → upgradeability}/Versionable.sol +8 -5
  536. package/package.json +10 -6
  537. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  538. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -709
  539. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +0 -4
  540. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +0 -228
  541. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  542. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -187
  543. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  545. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  546. package/artifacts/contracts/product/IProductService.sol/IProductService.json +0 -400
  547. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  548. package/artifacts/contracts/product/ProductService.sol/ProductService.json +0 -708
  549. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  550. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +0 -702
  551. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +0 -4
  552. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +0 -129
  553. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  554. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1218
  555. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +0 -4
  556. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +0 -171
  557. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +0 -4
  558. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +0 -1559
  559. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +0 -4
  560. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +0 -1193
  561. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +0 -4
  562. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +0 -1747
  563. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +0 -4
  564. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +0 -1760
  565. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +0 -4
  566. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +0 -1838
  567. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +0 -4
  568. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +0 -1856
  569. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +0 -4
  570. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  571. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +0 -73
  572. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +0 -4
  573. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +0 -4
  574. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +0 -1562
  575. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +0 -4
  576. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +0 -1600
  577. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  578. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +0 -4
  579. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +0 -39
  580. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  581. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  582. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  583. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  584. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  585. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  586. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  587. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  588. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -460
  589. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  590. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -10
  591. package/contracts/instance/BundleManager.sol +0 -126
  592. package/contracts/instance/InstanceAuthorizationsLib.sol +0 -377
  593. package/contracts/instance/base/ObjectManager.sol +0 -80
  594. package/contracts/instance/module/IAccess.sol +0 -46
  595. package/contracts/product/IProductService.sol +0 -33
  596. package/contracts/product/ProductService.sol +0 -124
  597. package/contracts/product/ProductServiceManager.sol +0 -42
  598. package/contracts/registry/IServiceAuthorization.sol +0 -35
  599. package/contracts/registry/ReleaseManager.sol +0 -527
  600. package/contracts/registry/ServiceAuthorization.sol +0 -86
  601. package/contracts/shared/AccessAdmin.sol +0 -759
  602. package/contracts/shared/AccessManagerCustom.sol +0 -741
  603. package/contracts/shared/AccessManagerExtended.sol +0 -481
  604. package/contracts/shared/AccessManagerExtendedInitializeable.sol +0 -13
  605. package/contracts/shared/AccessManagerExtendedWithDisable.sol +0 -137
  606. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +0 -14
  607. package/contracts/shared/ComponentVerifyingService.sol +0 -117
  608. package/contracts/shared/IAccessAdmin.sol +0 -168
  609. package/contracts/shared/IAccessManagerExtended.sol +0 -74
  610. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +0 -18
  611. package/contracts/shared/InitializableCustom.sol +0 -177
  612. package/contracts/shared/UpgradableProxyWithAdmin.sol +0 -16
  613. package/contracts/staking/StakeManagerLib.sol +0 -231
@@ -2,41 +2,33 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
- import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
-
7
- import {Amount} from "../type/Amount.sol";
8
- import {BundleManager} from "./BundleManager.sol";
9
- import {ChainNft} from "../registry/ChainNft.sol";
10
- import {NftId} from "../type/NftId.sol";
11
- import {RoleId} from "../type/RoleId.sol";
12
- import {SecondsLib} from "../type/Seconds.sol";
13
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
14
- import {ADMIN_ROLE, INSTANCE_OWNER_ROLE, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, INSTANCE_SERVICE_ROLE, DISTRIBUTION_SERVICE_ROLE, POOL_SERVICE_ROLE, PRODUCT_SERVICE_ROLE, APPLICATION_SERVICE_ROLE, POLICY_SERVICE_ROLE, CLAIM_SERVICE_ROLE, BUNDLE_SERVICE_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
15
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
16
-
17
- import {Service} from "../shared/Service.sol";
18
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
19
- import {IService} from "../shared/IService.sol";
20
- import {AccessManagerExtendedInitializeable} from "../shared/AccessManagerExtendedInitializeable.sol";
21
-
22
- import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
23
- import {IPoolComponent} from "../pool/IPoolComponent.sol";
24
- import {IProductComponent} from "../product/IProductComponent.sol";
25
5
 
6
+ import {IAccess} from "../authorization/IAccess.sol";
7
+ import {IAuthorization} from "../authorization/IAuthorization.sol";
8
+ import {IComponentService} from "../shared/IComponentService.sol";
9
+ import {IInstance} from "./IInstance.sol";
10
+ import {IInstanceService} from "./IInstanceService.sol";
26
11
  import {IRegistry} from "../registry/IRegistry.sol";
27
12
  import {IRegistryService} from "../registry/IRegistryService.sol";
28
13
  import {IStakingService} from "../staking/IStakingService.sol";
29
- import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
14
 
15
+ import {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
16
+ import {Amount} from "../type/Amount.sol";
17
+ import {BundleSet} from "./BundleSet.sol";
31
18
  import {Instance} from "./Instance.sol";
32
- import {IInstance} from "./IInstance.sol";
33
19
  import {InstanceAdmin} from "./InstanceAdmin.sol";
34
- import {IInstanceService} from "./IInstanceService.sol";
35
20
  import {InstanceReader} from "./InstanceReader.sol";
36
21
  import {InstanceStore} from "./InstanceStore.sol";
37
- import {InstanceAuthorizationsLib} from "./InstanceAuthorizationsLib.sol";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {ProductStore} from "./ProductStore.sol";
25
+ import {RiskSet} from "./RiskSet.sol";
26
+ import {RoleId} from "../type/RoleId.sol";
38
27
  import {Seconds} from "../type/Seconds.sol";
39
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
28
+ import {Service} from "../shared/Service.sol";
29
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
30
+ import {UFixed} from "../type/UFixed.sol";
31
+ import {VersionPart} from "../type/Version.sol";
40
32
 
41
33
 
42
34
  contract InstanceService is
@@ -49,132 +41,197 @@ contract InstanceService is
49
41
 
50
42
  IRegistryService internal _registryService;
51
43
  IStakingService internal _stakingService;
44
+ IComponentService internal _componentService;
52
45
 
53
46
  address internal _masterAccessManager;
54
47
  address internal _masterInstanceAdmin;
55
48
  address internal _masterInstance;
56
49
  address internal _masterInstanceReader;
57
- address internal _masterInstanceBundleManager;
50
+ address internal _masterInstanceBundleSet;
51
+ address internal _masterInstanceRiskSet;
58
52
  address internal _masterInstanceStore;
53
+ address internal _masterProductStore;
59
54
 
60
55
 
61
- modifier onlyInstance() {
62
- address instanceAddress = msg.sender;
63
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
64
- if (instanceNftId.eqz()) {
65
- revert ErrorInstanceServiceNotRegistered(instanceAddress);
66
- }
56
+ modifier onlyInstance() {
57
+ _checkInstance(msg.sender, getRelease());
58
+ _;
59
+ }
67
60
 
68
- ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
69
- if (objectType != INSTANCE()) {
70
- revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
71
- }
72
61
 
73
- VersionPart instanceVersion = IInstance(instanceAddress).getMajorVersion();
74
- if (instanceVersion != getVersion().toMajorPart()) {
75
- revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
76
- }
62
+ /// @inheritdoc IInstanceService
63
+ function createRole(
64
+ string memory roleName,
65
+ RoleId adminRoleId,
66
+ uint32 maxMemberCount
67
+ )
68
+ external
69
+ restricted()
70
+ onlyInstance()
71
+ returns (RoleId roleId)
72
+ {
73
+ IInstance instance = IInstance(msg.sender);
74
+ roleId = instance.getInstanceAdmin().createRole(
75
+ roleName,
76
+ adminRoleId,
77
+ maxMemberCount);
78
+ }
77
79
 
78
- _;
80
+
81
+ /// @inheritdoc IInstanceService
82
+ function setRoleActive(RoleId roleId, bool active)
83
+ external
84
+ restricted()
85
+ onlyInstance()
86
+ {
87
+ IInstance instance = IInstance(msg.sender);
88
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
79
89
  }
80
90
 
81
91
 
82
- modifier onlyInstanceOwner(NftId instanceNftId) {
83
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
84
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
85
- }
86
- _;
92
+ /// @inheritdoc IInstanceService
93
+ function grantRole(RoleId roleId, address account)
94
+ external
95
+ restricted()
96
+ onlyInstance()
97
+ {
98
+ IInstance instance = IInstance(msg.sender);
99
+ instance.getInstanceAdmin().grantRole(roleId, account);
87
100
  }
88
101
 
89
- // TODO check component - service - instance version match
90
- modifier onlyComponent() {
91
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
92
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
93
- }
94
- _;
102
+
103
+ /// @inheritdoc IInstanceService
104
+ function revokeRole(RoleId roleId, address account)
105
+ external
106
+ restricted()
107
+ onlyInstance()
108
+ {
109
+ IInstance instance = IInstance(msg.sender);
110
+ instance.getInstanceAdmin().revokeRole(roleId, account);
111
+ }
112
+
113
+
114
+ /// @inheritdoc IInstanceService
115
+ function createTarget(address target, string memory name)
116
+ external
117
+ restricted()
118
+ onlyInstance()
119
+ returns (RoleId contractRoleId)
120
+ {
121
+ IInstance instance = IInstance(msg.sender);
122
+ return instance.getInstanceAdmin().createTarget(target, name);
123
+ }
124
+
125
+
126
+ /// @inheritdoc IInstanceService
127
+ function authorizeFunctions(
128
+ address target,
129
+ RoleId roleId,
130
+ IAccess.FunctionInfo[] memory functions
131
+ )
132
+ external
133
+ restricted()
134
+ onlyInstance()
135
+ {
136
+ IInstance instance = IInstance(msg.sender);
137
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
138
+ }
139
+
140
+
141
+ /// @inheritdoc IInstanceService
142
+ function unauthorizeFunctions(
143
+ address target,
144
+ IAccess.FunctionInfo[] memory functions
145
+ )
146
+ external
147
+ restricted()
148
+ onlyInstance()
149
+ {
150
+ IInstance instance = IInstance(msg.sender);
151
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
152
+ }
153
+
154
+
155
+ /// @inheritdoc IInstanceService
156
+ function setTargetLocked(address target, bool locked)
157
+ external
158
+ virtual
159
+ restricted()
160
+ onlyInstance()
161
+ {
162
+ address instanceAddress = msg.sender;
163
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
164
+ }
165
+
166
+
167
+ /// @inheritdoc IInstanceService
168
+ function setInstanceLocked(bool locked)
169
+ external
170
+ virtual
171
+ restricted()
172
+ onlyInstance()
173
+ {
174
+ address instanceAddress = msg.sender;
175
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
176
+
177
+ emit LogInstanceServiceInstanceLocked(
178
+ getRegistry().getNftIdForAddress(instanceAddress),
179
+ locked);
95
180
  }
96
181
 
97
- function createInstanceClone()
182
+
183
+ /// @inheritdoc IInstanceService
184
+ function createInstance(bool allowAnyToken)
98
185
  external
186
+ virtual
187
+ restricted()
99
188
  returns (
100
- Instance clonedInstance,
101
- NftId clonedInstanceNftId
189
+ IInstance instance,
190
+ NftId instanceNftId
102
191
  )
103
192
  {
193
+ // tx sender will become instance owner
104
194
  address instanceOwner = msg.sender;
105
- AccessManagerExtendedInitializeable clonedAccessManager = AccessManagerExtendedInitializeable(
106
- Clones.clone(_masterAccessManager));
107
195
 
108
- // initially grants ADMIN_ROLE to this (being the instance service).
109
- // This will allow the instance service to bootstrap the authorizations of the instance.
110
- // Instance service will renounce ADMIN_ROLE when bootstraping is finished
111
- clonedAccessManager.initialize(address(this));
196
+ // create instance admin and instance
197
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
198
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
112
199
 
113
- clonedInstance = Instance(Clones.clone(_masterInstance));
114
- clonedInstance.initialize(
115
- address(clonedAccessManager),
116
- address(getRegistry()),
117
- instanceOwner);
118
- // initialize and set before instance reader
119
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
120
- clonedInstanceStore.initialize(address(clonedInstance));
121
- clonedInstance.setInstanceStore(clonedInstanceStore);
122
-
123
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
124
- clonedInstanceReader.initialize(address(clonedInstance));
125
- clonedInstance.setInstanceReader(clonedInstanceReader);
126
-
127
- BundleManager clonedBundleManager = BundleManager(Clones.clone(_masterInstanceBundleManager));
128
- clonedBundleManager.initialize(address(clonedInstance));
129
- clonedInstance.setBundleManager(clonedBundleManager);
130
-
131
- InstanceAdmin clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
132
- clonedAccessManager.grantRole(ADMIN_ROLE().toInt(), address(clonedInstanceAdmin), 0);
133
- clonedInstanceAdmin.initialize(address(clonedInstance));
134
- clonedInstance.setInstanceAdmin(clonedInstanceAdmin);
135
-
136
- // TODO amend setters with instance specific , policy manager ...
137
-
138
- // TODO library does external calls -> but it is registry and access manager -> find out is it best practice
139
- InstanceAuthorizationsLib.grantInitialAuthorizations(
140
- clonedAccessManager,
141
- clonedInstanceAdmin,
142
- clonedInstance,
143
- clonedBundleManager,
144
- clonedInstanceStore,
145
- instanceOwner,
146
- getRegistry(),
147
- getVersion().toMajorPart());
200
+ // register cloned instance with registry
201
+ instanceNftId = _registryService.registerInstance(
202
+ instance, instanceOwner).nftId;
148
203
 
149
- clonedAccessManager.renounceRole(ADMIN_ROLE().toInt(), address(this));
204
+ // MUST be set after instance is set up and registered
205
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
206
+ instanceAdmin.completeSetup(
207
+ address(getRegistry()),
208
+ address(instanceAuthorization),
209
+ getRelease(),
210
+ address(instance));
150
211
 
151
- // register new instance with registry
152
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(clonedInstance, instanceOwner);
153
- clonedInstanceNftId = info.nftId;
212
+ // hard checks for newly cloned instance
213
+ assert(address(instance.getRegistry()) == address(getRegistry()));
214
+ assert(instance.getRelease() == getRelease());
154
215
 
155
- // create corresponding staking target
216
+ // register cloned instance as staking target
156
217
  _stakingService.createInstanceTarget(
157
- clonedInstanceNftId,
218
+ instanceNftId,
158
219
  TargetManagerLib.getDefaultLockingPeriod(),
159
220
  TargetManagerLib.getDefaultRewardRate());
160
221
 
161
- emit LogInstanceCloned(
162
- address(clonedAccessManager),
163
- address(clonedInstanceAdmin),
164
- address(clonedInstance),
165
- address(clonedInstanceStore),
166
- address(clonedBundleManager),
167
- address(clonedInstanceReader),
168
- clonedInstanceNftId);
222
+ emit LogInstanceServiceInstanceCreated(
223
+ instanceNftId,
224
+ address(instance));
169
225
  }
170
226
 
171
227
 
172
228
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
173
229
  external
174
230
  virtual
231
+ restricted()
175
232
  onlyInstance()
176
233
  {
177
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
234
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
178
235
  _stakingService.setInstanceLockingPeriod(
179
236
  instanceNftId,
180
237
  stakeLockingPeriod);
@@ -184,117 +241,146 @@ contract InstanceService is
184
241
  function setStakingRewardRate(UFixed rewardRate)
185
242
  external
186
243
  virtual
244
+ restricted()
187
245
  onlyInstance()
188
246
  {
189
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
247
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
190
248
  _stakingService.setInstanceRewardRate(
191
249
  instanceNftId,
192
250
  rewardRate);
193
251
  }
194
252
 
253
+ function setStakingMaxAmount(Amount maxStakedAmount)
254
+ external
255
+ virtual
256
+ restricted()
257
+ onlyInstance()
258
+ {
259
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
260
+ _stakingService.setInstanceMaxStakedAmount(
261
+ instanceNftId,
262
+ maxStakedAmount);
263
+ }
264
+
195
265
 
196
- function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
266
+ function refillInstanceRewardReserves(address rewardProvider, Amount dipAmount)
197
267
  external
198
268
  virtual
269
+ restricted()
199
270
  onlyInstance()
271
+ returns (Amount newBalance)
200
272
  {
201
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
202
- _stakingService.refillInstanceRewardReserves(
273
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
274
+ newBalance = _stakingService.refillInstanceRewardReserves(
203
275
  instanceNftId,
204
276
  rewardProvider,
205
277
  dipAmount);
206
278
  }
207
279
 
208
280
 
209
- function withdrawStakingRewardReserves(Amount dipAmount)
281
+ function withdrawInstanceRewardReserves(Amount dipAmount)
210
282
  external
211
283
  virtual
284
+ restricted()
212
285
  onlyInstance()
213
286
  returns (Amount newBalance)
214
287
  {
215
- NftId instanceNftId = getRegistry().getNftId(msg.sender);
216
- _stakingService.withdrawInstanceRewardReserves(
288
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
289
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
217
290
  instanceNftId,
218
291
  dipAmount);
219
292
  }
220
293
 
221
294
 
222
- function setComponentLocked(bool locked)
223
- external
295
+ function upgradeInstanceReader()
296
+ external
224
297
  virtual
225
- onlyComponent()
298
+ restricted()
299
+ onlyInstance()
226
300
  {
227
- // checks
228
- address componentAddress = msg.sender;
229
-
230
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
231
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
232
- }
233
-
234
- IRegistry registry = getRegistry();
235
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
301
+ address instanceAddress = msg.sender;
302
+ IInstance instance = IInstance(msg.sender);
303
+
304
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
305
+ Clones.clone(address(_masterInstanceReader)));
236
306
 
237
- IInstance instance = IInstance(
238
- registry.getObjectInfo(
239
- instanceNftId).objectAddress);
307
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
308
+ instance.setInstanceReader(upgradedInstanceReaderClone);
240
309
 
241
- // no revert in case already locked
242
- instance.getInstanceAdmin().setTargetLockedByService(
243
- componentAddress,
244
- locked);
310
+ emit LogInstanceServiceInstanceReaderUpgraded(
311
+ getRegistry().getNftIdForAddress(instanceAddress),
312
+ address(upgradedInstanceReaderClone));
245
313
  }
246
314
 
247
315
 
248
- function getMasterInstanceReader() external view returns (address) {
249
- return _masterInstanceReader;
250
- }
251
-
252
316
  function setAndRegisterMasterInstance(address instanceAddress)
253
- external
254
- onlyOwner
255
- returns(NftId masterInstanceNftId)
317
+ external
318
+ virtual
319
+ onlyOwner()
320
+ returns(NftId masterInstanceNftId)
256
321
  {
257
322
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
258
- if(_masterAccessManager != address(0)) { revert ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet(); }
259
323
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
260
- if(_masterInstanceBundleManager != address(0)) { revert ErrorInstanceServiceMasterBundleManagerAlreadySet(); }
261
-
324
+ if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
325
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
262
326
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
263
327
 
264
- IInstance instance = IInstance(instanceAddress);
265
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
266
- address instanceAdminAddress = address(instanceAdmin);
267
- InstanceReader instanceReader = instance.getInstanceReader();
268
- address instanceReaderAddress = address(instanceReader);
269
- BundleManager bundleManager = instance.getBundleManager();
270
- address bundleManagerAddress = address(bundleManager);
271
- InstanceStore instanceStore = instance.getInstanceStore();
272
- address instanceStoreAddress = address(instanceStore);
273
-
274
- if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
275
- if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
276
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleManagerZero(); }
277
- if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
278
-
279
- if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
280
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleManagerAuthorityMismatch(); }
281
- if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
282
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
283
- if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
284
-
285
- _masterAccessManager = instance.authority();
286
- _masterInstanceAdmin = instanceAdminAddress;
287
- _masterInstance = instanceAddress;
288
- _masterInstanceReader = instanceReaderAddress;
289
- _masterInstanceBundleManager = bundleManagerAddress;
290
- _masterInstanceStore = instanceStoreAddress;
328
+ {
329
+ IInstance instance = IInstance(instanceAddress);
330
+ address accessManagerAddress = instance.authority();
331
+ InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
332
+ address instanceAdminAddress = address(instanceAdmin);
333
+ InstanceReader instanceReader = instance.getInstanceReader();
334
+ address instanceReaderAddress = address(instanceReader);
335
+ BundleSet bundleSet = instance.getBundleSet();
336
+ address bundleSetAddress = address(bundleSet);
337
+ RiskSet riskSet = instance.getRiskSet();
338
+ address riskSetAddress = address(riskSet);
339
+ InstanceStore instanceStore = instance.getInstanceStore();
340
+ address instanceStoreAddress = address(instanceStore);
341
+ ProductStore productStore = instance.getProductStore();
342
+ address productStoreAddress = address(productStore);
343
+
344
+ if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
345
+ if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
346
+ if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
347
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
348
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
349
+ if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
350
+ if(productStoreAddress == address(0)) { revert ErrorInstanceServiceProductStoreZero(); } // TODO: rename exception
351
+
352
+ if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
353
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
354
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
355
+ if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
356
+ if(productStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceProductStoreAuthorityMismatch(); }
357
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
358
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
359
+ if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
360
+
361
+ _masterAccessManager = accessManagerAddress;
362
+ _masterInstanceAdmin = instanceAdminAddress;
363
+ _masterInstance = instanceAddress;
364
+ _masterInstanceReader = instanceReaderAddress;
365
+ _masterInstanceBundleSet = bundleSetAddress;
366
+ _masterInstanceRiskSet = riskSetAddress;
367
+ _masterInstanceStore = instanceStoreAddress;
368
+ _masterProductStore = productStoreAddress;
369
+ }
291
370
 
292
- IInstance masterInstance = IInstance(_masterInstance);
293
- IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
294
- masterInstanceNftId = info.nftId;
371
+ {
372
+ IInstance masterInstance = IInstance(_masterInstance);
373
+ IRegistry.ObjectInfo memory info = _registryService.registerInstance(masterInstance, getOwner());
374
+ masterInstanceNftId = info.nftId;
375
+ }
295
376
  }
296
377
 
297
- function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
378
+
379
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
380
+ external
381
+ virtual
382
+ onlyOwner
383
+ {
298
384
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
299
385
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
300
386
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -303,135 +389,124 @@ contract InstanceService is
303
389
  if(instanceReader.getInstance() != IInstance(_masterInstance)) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch(); }
304
390
 
305
391
  _masterInstanceReader = instanceReaderAddress;
306
- }
307
392
 
308
- function upgradeInstanceReader(NftId instanceNftId)
309
- external
310
- onlyInstanceOwner(instanceNftId)
311
- {
312
- IRegistry registry = getRegistry();
313
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
314
- Instance instance = Instance(instanceInfo.objectAddress);
315
-
316
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
- upgradedInstanceReaderClone.initialize(address(instance));
318
- instance.setInstanceReader(upgradedInstanceReaderClone);
393
+ emit LogInstanceServiceMasterInstanceReaderUpgraded(
394
+ getRegistry().getNftIdForAddress(_masterInstance),
395
+ instanceReaderAddress);
319
396
  }
320
397
 
321
-
322
- function createGifTarget(
323
- NftId instanceNftId,
324
- address targetAddress,
325
- string memory targetName,
326
- bytes4[][] memory selectors,
327
- RoleId[] memory roles
328
- )
329
- external
330
- virtual
331
- restricted()
332
- {
333
- _createGifTarget(
334
- instanceNftId,
335
- targetAddress,
336
- targetName,
337
- roles,
338
- selectors
339
- );
398
+ function getMasterInstanceReader() external virtual view returns (address) {
399
+ return _masterInstanceReader;
340
400
  }
341
401
 
402
+ //--- internal functions --------------------------------------------------------//
342
403
 
343
- function createComponentTarget(
344
- NftId instanceNftId,
345
- address targetAddress,
346
- string memory targetName,
347
- bytes4[][] memory selectors,
348
- RoleId[] memory roles
349
- )
350
- external
404
+ /// @dev create new cloned instance admin
405
+ /// function used to setup a new instance
406
+ function _cloneNewInstanceAdmin()
407
+ internal
351
408
  virtual
352
- restricted()
409
+ returns (InstanceAdmin clonedAdmin)
353
410
  {
354
- _createGifTarget(
355
- instanceNftId,
356
- targetAddress,
357
- targetName,
358
- roles,
359
- selectors
360
- );
411
+ // clone instance specific access manager
412
+ AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
413
+ Clones.clone(
414
+ InstanceAdmin(_masterInstanceAdmin).authority()));
415
+
416
+ // set up the instance admin
417
+ clonedAdmin = InstanceAdmin(
418
+ Clones.clone(_masterInstanceAdmin));
419
+
420
+ clonedAdmin.initialize(
421
+ address(clonedAccessManager),
422
+ "InstanceAdmin");
361
423
  }
362
424
 
363
425
 
364
- /// all gif targets MUST be children of instanceNftId
365
- function _createGifTarget(
366
- NftId instanceNftId,
367
- address targetAddress,
368
- string memory targetName,
369
- RoleId[] memory roles,
370
- bytes4[][] memory selectors
426
+ /// @dev create new cloned instance
427
+ /// function used to setup a new instance
428
+ function _createInstance(
429
+ InstanceAdmin instanceAdmin,
430
+ address instanceOwner,
431
+ bool allowAnyToken
371
432
  )
372
433
  internal
373
434
  virtual
435
+ returns (IInstance)
374
436
  {
375
- // TODO instanceAdmin will check target instance match anyway
376
- (
377
- IInstance instance, // or instanceInfo
378
- // or targetInfo
379
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
380
-
381
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
382
- instanceAdmin.createGifTarget(targetAddress, targetName);
383
- // set proposed target config
384
- // TODO restriction: gif targets are set only once and only here?
385
- // assume config is a mix of gif and custom roles and no further configuration by INSTANCE_OWNER_ROLE is ever needed?
386
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
387
- instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
388
- }
437
+ // clone instance
438
+ Instance clonedInstance = Instance(Clones.clone(_masterInstance));
439
+ clonedInstance.initialize(
440
+ IInstance.InstanceContracts({
441
+ instanceAdmin: instanceAdmin,
442
+ instanceStore: InstanceStore(Clones.clone(address(_masterInstanceStore))),
443
+ productStore: ProductStore(Clones.clone(address(_masterProductStore))),
444
+ bundleSet: BundleSet(Clones.clone(_masterInstanceBundleSet)),
445
+ riskSet: RiskSet(Clones.clone(_masterInstanceRiskSet)),
446
+ instanceReader: InstanceReader(Clones.clone(address(_masterInstanceReader)))
447
+ }),
448
+ getRegistry(),
449
+ getRelease(),
450
+ instanceOwner,
451
+ allowAnyToken);
452
+
453
+ return clonedInstance;
389
454
  }
390
-
391
- /// @dev top level initializer
455
+
456
+
457
+ /// @dev top level initializer (upgradable contract)
392
458
  function _initialize(
393
459
  address owner,
394
460
  bytes memory data
395
461
  )
396
462
  internal
397
- initializer
398
463
  virtual override
464
+ initializer()
399
465
  {
400
466
  (
401
- address registryAddress,,
402
- //address managerAddress
403
- address authority
404
- ) = abi.decode(data, (address, address, address));
467
+ address authority,
468
+ address registry
469
+ ) = abi.decode(data, (address, address));
405
470
 
406
- initializeService(registryAddress, authority, owner);
471
+ __Service_init(authority, registry, owner);
407
472
 
408
473
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
409
474
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
475
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
410
476
 
411
- registerInterface(type(IInstanceService).interfaceId);
477
+ _registerInterface(type(IInstanceService).interfaceId);
412
478
  }
413
479
 
414
480
 
415
- function _validateInstanceAndComponent(NftId instanceNftId, address componentAddress)
481
+ function _checkInstance(
482
+ address instanceAddress,
483
+ VersionPart expectedRelease
484
+ )
416
485
  internal
486
+ virtual
417
487
  view
418
- returns (IInstance instance, NftId componentNftId)
419
488
  {
420
489
  IRegistry registry = getRegistry();
421
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
422
- if(instanceInfo.objectType != INSTANCE()) {
423
- revert ErrorInstanceServiceNotInstanceNftId(instanceNftId);
490
+
491
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
492
+ if (instanceNftId.eqz()) {
493
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
424
494
  }
425
495
 
426
- IRegistry.ObjectInfo memory componentInfo = registry.getObjectInfo(componentAddress);
427
- if(componentInfo.parentNftId != instanceNftId) {
428
- revert ErrorInstanceServiceInstanceComponentMismatch(instanceNftId, componentInfo.nftId);
496
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
497
+ if (objectType != INSTANCE()) {
498
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
429
499
  }
430
500
 
431
- instance = Instance(instanceInfo.objectAddress);
432
- componentNftId = componentInfo.nftId;
501
+ if (expectedRelease.gtz()) {
502
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
503
+ if (instanceRelease != expectedRelease) {
504
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
505
+ }
506
+ }
433
507
  }
434
508
 
509
+
435
510
  // From IService
436
511
  function _getDomain() internal pure override returns(ObjectType) {
437
512
  return INSTANCE();