@etherisc/gif-next 0.0.2-c7609c4-545 → 0.0.2-c7ade86-552

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 (491) hide show
  1. package/README.md +81 -7
  2. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.dbg.json +4 -0
  3. package/artifacts/contracts/accounting/AccountingService.sol/AccountingService.json +1023 -0
  4. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.dbg.json +4 -0
  5. package/artifacts/contracts/accounting/AccountingServiceManager.sol/AccountingServiceManager.json +752 -0
  6. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.dbg.json +4 -0
  7. package/artifacts/contracts/accounting/IAccountingService.sol/IAccountingService.json +791 -0
  8. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +640 -269
  10. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.dbg.json +4 -0
  11. package/artifacts/contracts/authorization/AccessAdminLib.sol/AccessAdminLib.json +1289 -0
  12. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +202 -5
  14. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  15. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +409 -33
  16. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  17. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  18. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.json +525 -213
  19. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.json +179 -19
  21. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  22. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.json +246 -16
  23. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  24. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +420 -27
  25. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +114 -291
  27. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +381 -46
  29. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +46 -164
  31. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  32. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +388 -194
  33. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  34. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +133 -67
  35. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  36. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +32 -132
  37. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  38. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +210 -71
  39. package/artifacts/contracts/examples/fire/DamageLevel.sol/DamageLevelLib.dbg.json +1 -1
  40. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.dbg.json +1 -1
  41. package/artifacts/contracts/examples/fire/FirePool.sol/FirePool.json +121 -198
  42. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.dbg.json +1 -1
  43. package/artifacts/contracts/examples/fire/FirePoolAuthorization.sol/FirePoolAuthorization.json +380 -45
  44. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.dbg.json +1 -1
  45. package/artifacts/contracts/examples/fire/FireProduct.sol/FireProduct.json +287 -341
  46. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.dbg.json +1 -1
  47. package/artifacts/contracts/examples/fire/FireProductAuthorization.sol/FireProductAuthorization.json +380 -45
  48. package/artifacts/contracts/examples/fire/FireUSD.sol/FireUSD.dbg.json +1 -1
  49. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.dbg.json +1 -1
  50. package/artifacts/contracts/examples/unpermissioned/SimpleDistribution.sol/SimpleDistribution.json +185 -252
  51. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.dbg.json +4 -0
  52. package/artifacts/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol/SimpleDistributionAuthorization.json +805 -0
  53. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.dbg.json +1 -1
  54. package/artifacts/contracts/examples/unpermissioned/SimpleOracle.sol/SimpleOracle.json +76 -155
  55. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.dbg.json +1 -1
  56. package/artifacts/contracts/examples/unpermissioned/SimplePool.sol/SimplePool.json +239 -203
  57. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.dbg.json +4 -0
  58. package/artifacts/contracts/examples/unpermissioned/SimplePoolAuthorization.sol/SimplePoolAuthorization.json +805 -0
  59. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.dbg.json +1 -1
  60. package/artifacts/contracts/examples/unpermissioned/SimpleProduct.sol/SimpleProduct.json +672 -362
  61. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.dbg.json +4 -0
  62. package/artifacts/contracts/examples/unpermissioned/SimpleProductAuthorization.sol/SimpleProductAuthorization.json +805 -0
  63. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +1 -1
  64. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +193 -45
  65. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  66. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +502 -49
  67. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  68. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +300 -12
  69. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  70. package/artifacts/contracts/instance/Instance.sol/Instance.json +531 -81
  71. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  72. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +1022 -326
  73. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  74. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +393 -52
  75. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  76. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1067 -479
  77. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  78. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +321 -80
  79. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  80. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +59 -47
  81. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  82. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +676 -570
  83. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.dbg.json +4 -0
  84. package/artifacts/contracts/instance/RiskSet.sol/RiskSet.json +853 -0
  85. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  86. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  87. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  88. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  89. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  90. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  91. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +2 -2
  92. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +1 -1
  93. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +16 -5
  94. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.dbg.json +4 -0
  95. package/artifacts/contracts/instance/base/ObjectSetHelperLib.sol/ObjectSetHelperLib.json +168 -0
  96. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  97. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  98. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  99. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  100. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  101. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  102. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  103. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +66 -167
  104. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  105. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +379 -47
  106. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  107. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  108. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +36 -71
  109. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  110. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +27 -3
  111. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  112. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +50 -103
  113. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  114. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +128 -81
  115. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  116. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +91 -41
  117. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  118. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +69 -137
  119. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  120. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +380 -45
  121. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  122. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +145 -333
  123. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  124. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +73 -99
  125. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  126. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +62 -142
  127. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  128. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -118
  129. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  130. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +182 -235
  131. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  132. package/artifacts/contracts/pool/Pool.sol/Pool.json +57 -149
  133. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.dbg.json +4 -0
  134. package/artifacts/contracts/pool/PoolLib.sol/PoolLib.json +538 -0
  135. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  136. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +350 -369
  137. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  138. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +121 -63
  139. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  140. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +181 -57
  141. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  142. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +76 -38
  143. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  144. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +182 -215
  145. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  146. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +380 -45
  147. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  148. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +260 -179
  149. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  150. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +96 -78
  151. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  152. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +103 -10
  153. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  154. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +142 -20
  155. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  156. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +112 -56
  157. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  158. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +48 -3
  159. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  160. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +163 -178
  161. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +1 -1
  162. package/artifacts/contracts/product/IRiskService.sol/IRiskService.json +58 -7
  163. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  164. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +233 -194
  165. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.dbg.json +4 -0
  166. package/artifacts/contracts/product/PolicyServiceLib.sol/PolicyServiceLib.json +783 -0
  167. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  168. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +103 -73
  169. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  170. package/artifacts/contracts/product/PricingService.sol/PricingService.json +120 -100
  171. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  172. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +68 -58
  173. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  174. package/artifacts/contracts/product/Product.sol/Product.json +176 -209
  175. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +1 -1
  176. package/artifacts/contracts/product/RiskService.sol/RiskService.json +143 -77
  177. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +1 -1
  178. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.json +80 -38
  179. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  180. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  181. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  182. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +60 -12
  183. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  184. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +31 -7
  185. package/artifacts/contracts/registry/IRelease.sol/IRelease.dbg.json +4 -0
  186. package/artifacts/contracts/registry/IRelease.sol/IRelease.json +24 -0
  187. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  188. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  189. package/artifacts/contracts/registry/Registry.sol/Registry.json +98 -50
  190. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  191. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +726 -465
  192. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.dbg.json +4 -0
  193. package/artifacts/contracts/registry/RegistryAuthorization.sol/RegistryAuthorization.json +1053 -0
  194. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  195. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +69 -46
  196. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  197. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +56 -34
  198. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.dbg.json +4 -0
  199. package/artifacts/contracts/registry/ReleaseAdmin.sol/ReleaseAdmin.json +2152 -0
  200. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  201. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  202. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +1 -1
  203. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +386 -64
  204. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  205. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +437 -26
  206. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  207. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +15 -15
  208. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  209. package/artifacts/contracts/shared/Component.sol/Component.json +49 -88
  210. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  211. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +239 -520
  212. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  213. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -75
  214. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  215. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +27 -16
  216. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.dbg.json +1 -1
  217. package/artifacts/contracts/shared/ContractLib.sol/ContractLib.json +544 -4
  218. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.dbg.json +4 -0
  219. package/artifacts/contracts/shared/ContractLib.sol/IInstanceAdminHelper.json +24 -0
  220. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.dbg.json +4 -0
  221. package/artifacts/contracts/shared/ContractLib.sol/ITargetHelper.json +30 -0
  222. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.dbg.json +4 -0
  223. package/artifacts/contracts/shared/ContractLib.sol/ITokenRegistryHelper.json +40 -0
  224. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  225. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +36 -57
  226. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  227. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +139 -347
  228. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  229. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +36 -71
  230. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  231. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  232. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  233. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  234. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  235. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +120 -1
  236. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  237. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  238. package/artifacts/contracts/shared/IService.sol/IService.json +27 -3
  239. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +1 -1
  240. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.json +2 -2
  241. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  242. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +49 -102
  243. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  244. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  245. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +1 -1
  246. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +2 -2
  247. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  248. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  249. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  250. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  251. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  252. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -62
  253. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  254. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  255. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  256. package/artifacts/contracts/shared/Service.sol/Service.json +27 -16
  257. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  258. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +327 -73
  259. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.dbg.json +4 -0
  260. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandlerBase.json +484 -0
  261. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +1 -1
  262. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +88 -24
  263. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  264. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +125 -99
  265. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  266. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +134 -10
  267. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  268. package/artifacts/contracts/staking/Staking.sol/Staking.json +225 -209
  269. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.dbg.json +4 -0
  270. package/artifacts/contracts/staking/StakingLib.sol/StakingLib.json +469 -0
  271. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  272. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  273. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  274. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +83 -59
  275. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  276. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +40 -67
  277. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  278. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +203 -56
  279. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  280. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +73 -39
  281. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  282. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +163 -149
  283. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  284. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +61 -51
  285. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  286. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  287. package/artifacts/contracts/type/Amount.sol/AmountLib.json +11 -11
  288. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  289. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  290. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  291. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  292. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  293. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  294. package/artifacts/contracts/type/Fee.sol/FeeLib.json +94 -38
  295. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  296. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  297. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.dbg.json +4 -0
  298. package/artifacts/contracts/type/Key32Set.sol/LibKey32Set.json +33 -0
  299. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  300. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +23 -4
  301. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  302. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  303. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  304. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +33 -31
  305. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  306. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  307. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  308. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  309. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  310. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  311. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  312. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +69 -7
  313. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  314. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +42 -157
  315. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  316. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  317. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +21 -2
  318. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  319. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  320. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  321. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  322. package/artifacts/contracts/type/String.sol/StrLib.json +50 -2
  323. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  324. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +2 -2
  325. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  326. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +61 -37
  327. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  328. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -21
  329. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  330. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +101 -2
  331. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +1 -1
  332. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  333. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +32 -16
  334. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  335. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +15 -2
  336. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +1 -1
  337. package/contracts/accounting/AccountingService.sol +261 -0
  338. package/contracts/accounting/AccountingServiceManager.sol +38 -0
  339. package/contracts/accounting/IAccountingService.sol +45 -0
  340. package/contracts/authorization/AccessAdmin.sol +426 -242
  341. package/contracts/authorization/AccessAdminLib.sol +396 -0
  342. package/contracts/authorization/AccessManagerCloneable.sol +146 -4
  343. package/contracts/authorization/Authorization.sol +142 -257
  344. package/contracts/authorization/IAccess.sol +25 -7
  345. package/contracts/authorization/IAccessAdmin.sol +87 -80
  346. package/contracts/authorization/IAuthorization.sol +9 -42
  347. package/contracts/authorization/IServiceAuthorization.sol +55 -17
  348. package/contracts/authorization/ServiceAuthorization.sol +247 -33
  349. package/contracts/distribution/BasicDistribution.sol +18 -16
  350. package/contracts/distribution/BasicDistributionAuthorization.sol +30 -10
  351. package/contracts/distribution/Distribution.sol +38 -78
  352. package/contracts/distribution/DistributionService.sol +183 -96
  353. package/contracts/distribution/DistributionServiceManager.sol +1 -1
  354. package/contracts/distribution/IDistributionComponent.sol +3 -10
  355. package/contracts/distribution/IDistributionService.sol +32 -24
  356. package/contracts/examples/fire/FirePool.sol +21 -8
  357. package/contracts/examples/fire/FirePoolAuthorization.sol +2 -1
  358. package/contracts/examples/fire/FireProduct.sol +32 -14
  359. package/contracts/examples/fire/FireProductAuthorization.sol +2 -1
  360. package/contracts/examples/unpermissioned/SimpleDistribution.sol +39 -8
  361. package/contracts/examples/unpermissioned/SimpleDistributionAuthorization.sol +28 -0
  362. package/contracts/examples/unpermissioned/SimpleOracle.sol +4 -8
  363. package/contracts/examples/unpermissioned/SimplePool.sol +32 -6
  364. package/contracts/examples/unpermissioned/SimplePoolAuthorization.sol +28 -0
  365. package/contracts/examples/unpermissioned/SimpleProduct.sol +49 -27
  366. package/contracts/examples/unpermissioned/SimpleProductAuthorization.sol +28 -0
  367. package/contracts/instance/BundleSet.sol +42 -38
  368. package/contracts/instance/IInstance.sol +97 -18
  369. package/contracts/instance/IInstanceService.sol +50 -8
  370. package/contracts/instance/Instance.sol +170 -57
  371. package/contracts/instance/InstanceAdmin.sol +271 -165
  372. package/contracts/instance/InstanceAuthorizationV3.sol +114 -43
  373. package/contracts/instance/InstanceReader.sol +449 -312
  374. package/contracts/instance/InstanceService.sol +260 -163
  375. package/contracts/instance/InstanceServiceManager.sol +1 -1
  376. package/contracts/instance/InstanceStore.sol +13 -2
  377. package/contracts/instance/RiskSet.sol +118 -0
  378. package/contracts/instance/base/BalanceStore.sol +3 -5
  379. package/contracts/instance/base/ObjectCounter.sol +1 -2
  380. package/contracts/instance/base/ObjectLifecycle.sol +4 -2
  381. package/contracts/instance/base/ObjectSet.sol +31 -33
  382. package/contracts/instance/base/ObjectSetHelperLib.sol +30 -0
  383. package/contracts/instance/module/IBundle.sol +6 -5
  384. package/contracts/instance/module/IComponents.sol +20 -9
  385. package/contracts/instance/module/IDistribution.sol +21 -8
  386. package/contracts/instance/module/IPolicy.sol +28 -7
  387. package/contracts/instance/module/IRisk.sol +5 -0
  388. package/contracts/oracle/BasicOracle.sol +1 -3
  389. package/contracts/oracle/BasicOracleAuthorization.sol +15 -8
  390. package/contracts/oracle/IOracle.sol +9 -4
  391. package/contracts/oracle/Oracle.sol +1 -3
  392. package/contracts/oracle/OracleService.sol +96 -77
  393. package/contracts/oracle/OracleServiceManager.sol +1 -1
  394. package/contracts/pool/BasicPool.sol +23 -4
  395. package/contracts/pool/BasicPoolAuthorization.sol +33 -8
  396. package/contracts/pool/BundleService.sol +47 -145
  397. package/contracts/pool/BundleServiceManager.sol +1 -1
  398. package/contracts/pool/IBundleService.sol +15 -43
  399. package/contracts/pool/IPoolComponent.sol +1 -7
  400. package/contracts/pool/IPoolService.sol +58 -60
  401. package/contracts/pool/Pool.sol +106 -98
  402. package/contracts/pool/PoolLib.sol +353 -0
  403. package/contracts/pool/PoolService.sol +271 -228
  404. package/contracts/pool/PoolServiceManager.sol +1 -1
  405. package/contracts/product/ApplicationService.sol +34 -15
  406. package/contracts/product/ApplicationServiceManager.sol +1 -1
  407. package/contracts/product/BasicProduct.sol +8 -12
  408. package/contracts/product/BasicProductAuthorization.sol +30 -11
  409. package/contracts/product/ClaimService.sol +167 -148
  410. package/contracts/product/ClaimServiceManager.sol +1 -1
  411. package/contracts/product/IApplicationService.sol +8 -2
  412. package/contracts/product/IClaimService.sol +14 -2
  413. package/contracts/product/IPolicyService.sol +26 -11
  414. package/contracts/product/IPricingService.sol +1 -0
  415. package/contracts/product/IProductComponent.sol +4 -1
  416. package/contracts/product/IRiskService.sol +7 -7
  417. package/contracts/product/PolicyService.sol +243 -294
  418. package/contracts/product/PolicyServiceLib.sol +139 -0
  419. package/contracts/product/PolicyServiceManager.sol +1 -1
  420. package/contracts/product/PricingService.sol +30 -21
  421. package/contracts/product/PricingServiceManager.sol +3 -3
  422. package/contracts/product/Product.sol +65 -53
  423. package/contracts/product/RiskService.sol +89 -31
  424. package/contracts/product/RiskServiceManager.sol +1 -1
  425. package/contracts/registry/ChainNft.sol +4 -2
  426. package/contracts/registry/IRegistry.sol +14 -15
  427. package/contracts/registry/IRelease.sol +29 -0
  428. package/contracts/registry/Registry.sol +16 -3
  429. package/contracts/registry/RegistryAdmin.sol +101 -361
  430. package/contracts/registry/RegistryAuthorization.sol +277 -0
  431. package/contracts/registry/RegistryService.sol +3 -3
  432. package/contracts/registry/RegistryServiceManager.sol +1 -1
  433. package/contracts/registry/ReleaseAdmin.sol +195 -0
  434. package/contracts/registry/ReleaseLifecycle.sol +2 -0
  435. package/contracts/registry/ReleaseRegistry.sol +154 -135
  436. package/contracts/registry/ServiceAuthorizationV3.sol +196 -46
  437. package/contracts/registry/TokenRegistry.sol +12 -13
  438. package/contracts/shared/Component.sol +52 -107
  439. package/contracts/shared/ComponentService.sol +353 -420
  440. package/contracts/shared/ComponentServiceManager.sol +1 -1
  441. package/contracts/shared/ComponentVerifyingService.sol +16 -14
  442. package/contracts/shared/ContractLib.sol +276 -3
  443. package/contracts/shared/IComponent.sol +1 -17
  444. package/contracts/shared/IComponentService.sol +27 -37
  445. package/contracts/shared/IInstanceLinkedComponent.sol +0 -11
  446. package/contracts/shared/IRegisterable.sol +15 -5
  447. package/contracts/shared/IService.sol +3 -5
  448. package/contracts/shared/InitializableERC165.sol +9 -1
  449. package/contracts/shared/InstanceLinkedComponent.sol +4 -23
  450. package/contracts/shared/NftOwnable.sol +6 -6
  451. package/contracts/shared/PolicyHolder.sol +1 -1
  452. package/contracts/shared/Registerable.sol +41 -20
  453. package/contracts/shared/RegistryLinked.sol +7 -13
  454. package/contracts/shared/Service.sol +13 -30
  455. package/contracts/shared/TokenHandler.sol +275 -72
  456. package/contracts/shared/TokenHandlerDeployerLib.sol +10 -2
  457. package/contracts/staking/IStaking.sol +23 -12
  458. package/contracts/staking/IStakingService.sol +19 -1
  459. package/contracts/staking/Staking.sol +99 -51
  460. package/contracts/staking/{StakeManagerLib.sol → StakingLib.sol} +80 -23
  461. package/contracts/staking/StakingReader.sol +6 -16
  462. package/contracts/staking/StakingService.sol +74 -14
  463. package/contracts/staking/StakingServiceManager.sol +5 -4
  464. package/contracts/staking/StakingStore.sol +2 -1
  465. package/contracts/staking/TargetManagerLib.sol +1 -1
  466. package/contracts/type/Fee.sol +8 -8
  467. package/contracts/type/Key32.sol +2 -2
  468. package/contracts/type/Key32Set.sol +62 -0
  469. package/contracts/type/NftId.sol +6 -0
  470. package/contracts/type/ObjectType.sol +69 -38
  471. package/contracts/type/RiskId.sol +26 -8
  472. package/contracts/type/RoleId.sol +63 -45
  473. package/contracts/type/Selector.sol +5 -0
  474. package/contracts/type/String.sol +12 -0
  475. package/contracts/type/Timestamp.sol +0 -5
  476. package/contracts/type/UFixed.sol +34 -127
  477. package/contracts/type/Version.sol +54 -5
  478. package/contracts/upgradeability/ProxyManager.sol +14 -12
  479. package/contracts/upgradeability/UpgradableProxyWithAdmin.sol +7 -1
  480. package/contracts/upgradeability/Versionable.sol +4 -1
  481. package/package.json +4 -4
  482. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.dbg.json +0 -4
  483. package/artifacts/contracts/authorization/ReleaseAccessManager.sol/ReleaseAccessManager.json +0 -1196
  484. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +0 -4
  485. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +0 -129
  486. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +0 -4
  487. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +0 -440
  488. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +0 -4
  489. package/artifacts/contracts/type/UFixed.sol/MathLib.json +0 -16
  490. package/contracts/authorization/ReleaseAccessManager.sol +0 -38
  491. package/contracts/instance/module/IAccess.sol +0 -46
@@ -2,40 +2,32 @@
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 {AccessManagerCloneable} from "../authorization/AccessManagerCloneable.sol";
8
- import {Amount} from "../type/Amount.sol";
9
- import {BundleSet} from "./BundleSet.sol";
10
- import {ChainNft} from "../registry/ChainNft.sol";
11
- import {NftId} from "../type/NftId.sol";
12
- import {RoleId} from "../type/RoleId.sol";
13
- import {SecondsLib} from "../type/Seconds.sol";
14
- import {UFixed, UFixedLib} from "../type/UFixed.sol";
15
- import {ADMIN_ROLE} from "../type/RoleId.sol";
16
- import {ObjectType, INSTANCE, BUNDLE, APPLICATION, CLAIM, DISTRIBUTION, INSTANCE, POLICY, POOL, PRODUCT, REGISTRY, STAKING} from "../type/ObjectType.sol";
17
-
18
- import {Service} from "../shared/Service.sol";
19
- import {IInstanceLinkedComponent} from "../shared/IInstanceLinkedComponent.sol";
20
- import {IService} from "../shared/IService.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";
22
+ import {NftId} from "../type/NftId.sol";
23
+ import {ObjectType, INSTANCE, COMPONENT, INSTANCE, REGISTRY, STAKING} from "../type/ObjectType.sol";
24
+ import {RiskSet} from "./RiskSet.sol";
25
+ import {RoleId} from "../type/RoleId.sol";
37
26
  import {Seconds} from "../type/Seconds.sol";
38
- import {VersionPart, VersionPartLib} from "../type/Version.sol";
27
+ import {Service} from "../shared/Service.sol";
28
+ import {TargetManagerLib} from "../staking/TargetManagerLib.sol";
29
+ import {UFixed} from "../type/UFixed.sol";
30
+ import {VersionPart} from "../type/Version.sol";
39
31
 
40
32
 
41
33
  contract InstanceService is
@@ -48,53 +40,145 @@ contract InstanceService is
48
40
 
49
41
  IRegistryService internal _registryService;
50
42
  IStakingService internal _stakingService;
43
+ IComponentService internal _componentService;
51
44
 
52
45
  address internal _masterAccessManager;
53
46
  address internal _masterInstanceAdmin;
54
47
  address internal _masterInstance;
55
48
  address internal _masterInstanceReader;
56
49
  address internal _masterInstanceBundleSet;
50
+ address internal _masterInstanceRiskSet;
57
51
  address internal _masterInstanceStore;
58
52
 
59
53
 
60
- modifier onlyInstance() {
61
- address instanceAddress = msg.sender;
62
- NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
63
- if (instanceNftId.eqz()) {
64
- revert ErrorInstanceServiceNotRegistered(instanceAddress);
65
- }
54
+ modifier onlyInstance() {
55
+ _checkInstance(msg.sender, getRelease());
56
+ _;
57
+ }
66
58
 
67
- ObjectType objectType = getRegistry().getObjectInfo(instanceNftId).objectType;
68
- if (objectType != INSTANCE()) {
69
- revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
70
- }
71
59
 
72
- VersionPart instanceVersion = IInstance(instanceAddress).getRelease();
73
- if (instanceVersion != getVersion().toMajorPart()) {
74
- revert ErrorInstanceServiceInstanceVersionMismatch(instanceAddress, instanceVersion);
75
- }
60
+ /// @inheritdoc IInstanceService
61
+ function createRole(
62
+ string memory roleName,
63
+ RoleId adminRoleId,
64
+ uint32 maxMemberCount
65
+ )
66
+ external
67
+ restricted()
68
+ onlyInstance()
69
+ returns (RoleId roleId)
70
+ {
71
+ IInstance instance = IInstance(msg.sender);
72
+ roleId = instance.getInstanceAdmin().createRole(
73
+ roleName,
74
+ adminRoleId,
75
+ maxMemberCount);
76
+ }
76
77
 
77
- _;
78
+
79
+ /// @inheritdoc IInstanceService
80
+ function setRoleActive(RoleId roleId, bool active)
81
+ external
82
+ restricted()
83
+ onlyInstance()
84
+ {
85
+ IInstance instance = IInstance(msg.sender);
86
+ instance.getInstanceAdmin().setRoleActive(roleId, active);
78
87
  }
79
88
 
80
89
 
81
- modifier onlyInstanceOwner(NftId instanceNftId) {
82
- if(msg.sender != getRegistry().ownerOf(instanceNftId)) {
83
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
84
- }
85
- _;
90
+ /// @inheritdoc IInstanceService
91
+ function grantRole(RoleId roleId, address account)
92
+ external
93
+ restricted()
94
+ onlyInstance()
95
+ {
96
+ IInstance instance = IInstance(msg.sender);
97
+ instance.getInstanceAdmin().grantRole(roleId, account);
86
98
  }
87
99
 
88
- // TODO check component - service - instance version match
89
- modifier onlyComponent() {
90
- if (! getRegistry().isRegisteredComponent(msg.sender)) {
91
- revert ErrorInstanceServiceRequestUnauhorized(msg.sender);
92
- }
93
- _;
100
+
101
+ /// @inheritdoc IInstanceService
102
+ function revokeRole(RoleId roleId, address account)
103
+ external
104
+ restricted()
105
+ onlyInstance()
106
+ {
107
+ IInstance instance = IInstance(msg.sender);
108
+ instance.getInstanceAdmin().revokeRole(roleId, account);
109
+ }
110
+
111
+
112
+ /// @inheritdoc IInstanceService
113
+ function createTarget(address target, string memory name)
114
+ external
115
+ restricted()
116
+ onlyInstance()
117
+ returns (RoleId contractRoleId)
118
+ {
119
+ IInstance instance = IInstance(msg.sender);
120
+ return instance.getInstanceAdmin().createTarget(target, name);
121
+ }
122
+
123
+
124
+ /// @inheritdoc IInstanceService
125
+ function authorizeFunctions(
126
+ address target,
127
+ RoleId roleId,
128
+ IAccess.FunctionInfo[] memory functions
129
+ )
130
+ external
131
+ restricted()
132
+ onlyInstance()
133
+ {
134
+ IInstance instance = IInstance(msg.sender);
135
+ return instance.getInstanceAdmin().authorizeFunctions(target, roleId, functions);
136
+ }
137
+
138
+
139
+ /// @inheritdoc IInstanceService
140
+ function unauthorizeFunctions(
141
+ address target,
142
+ IAccess.FunctionInfo[] memory functions
143
+ )
144
+ external
145
+ restricted()
146
+ onlyInstance()
147
+ {
148
+ IInstance instance = IInstance(msg.sender);
149
+ return instance.getInstanceAdmin().unauthorizeFunctions(target, functions);
150
+ }
151
+
152
+
153
+ /// @inheritdoc IInstanceService
154
+ function setTargetLocked(address target, bool locked)
155
+ external
156
+ virtual
157
+ restricted()
158
+ onlyInstance()
159
+ {
160
+ address instanceAddress = msg.sender;
161
+ IInstance(instanceAddress).getInstanceAdmin().setTargetLocked(target, locked);
162
+ }
163
+
164
+
165
+ /// @inheritdoc IInstanceService
166
+ function setInstanceLocked(bool locked)
167
+ external
168
+ virtual
169
+ restricted()
170
+ onlyInstance()
171
+ {
172
+ address instanceAddress = msg.sender;
173
+ IInstance(instanceAddress).getInstanceAdmin().setInstanceLocked(locked);
94
174
  }
95
175
 
96
- function createInstance()
176
+
177
+ /// @inheritdoc IInstanceService
178
+ function createInstance(bool allowAnyToken)
97
179
  external
180
+ virtual
181
+ restricted()
98
182
  returns (
99
183
  IInstance instance,
100
184
  NftId instanceNftId
@@ -104,22 +188,31 @@ contract InstanceService is
104
188
  address instanceOwner = msg.sender;
105
189
 
106
190
  // create instance admin and instance
107
- InstanceAdmin instanceAdmin = _createInstanceAdmin();
108
- instance = _createInstance(instanceAdmin, instanceOwner);
191
+ InstanceAdmin instanceAdmin = _cloneNewInstanceAdmin();
192
+ instance = _createInstance(instanceAdmin, instanceOwner, allowAnyToken);
109
193
 
110
194
  // register cloned instance with registry
111
195
  instanceNftId = _registryService.registerInstance(
112
196
  instance, instanceOwner).nftId;
113
197
 
198
+ // MUST be set after instance is set up and registered
199
+ IAuthorization instanceAuthorization = InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization();
200
+ instanceAdmin.completeSetup(
201
+ address(getRegistry()),
202
+ address(instanceAuthorization),
203
+ getRelease(),
204
+ address(instance));
205
+
206
+ // hard checks for newly cloned instance
207
+ assert(address(instance.getRegistry()) == address(getRegistry()));
208
+ assert(instance.getRelease() == getRelease());
209
+
114
210
  // register cloned instance as staking target
115
211
  _stakingService.createInstanceTarget(
116
212
  instanceNftId,
117
213
  TargetManagerLib.getDefaultLockingPeriod(),
118
214
  TargetManagerLib.getDefaultRewardRate());
119
215
 
120
- // MUST be set after instance is set up and registered
121
- instanceAdmin.initializeInstanceAuthorization(address(instance));
122
-
123
216
  emit LogInstanceCloned(
124
217
  instanceNftId,
125
218
  address(instance));
@@ -129,6 +222,7 @@ contract InstanceService is
129
222
  function setStakingLockingPeriod(Seconds stakeLockingPeriod)
130
223
  external
131
224
  virtual
225
+ restricted()
132
226
  onlyInstance()
133
227
  {
134
228
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -141,6 +235,7 @@ contract InstanceService is
141
235
  function setStakingRewardRate(UFixed rewardRate)
142
236
  external
143
237
  virtual
238
+ restricted()
144
239
  onlyInstance()
145
240
  {
146
241
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -149,10 +244,23 @@ contract InstanceService is
149
244
  rewardRate);
150
245
  }
151
246
 
247
+ function setStakingMaxAmount(Amount maxStakedAmount)
248
+ external
249
+ virtual
250
+ restricted()
251
+ onlyInstance()
252
+ {
253
+ NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
254
+ _stakingService.setInstanceMaxStakedAmount(
255
+ instanceNftId,
256
+ maxStakedAmount);
257
+ }
258
+
152
259
 
153
260
  function refillStakingRewardReserves(address rewardProvider, Amount dipAmount)
154
261
  external
155
262
  virtual
263
+ restricted()
156
264
  onlyInstance()
157
265
  {
158
266
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
@@ -166,55 +274,42 @@ contract InstanceService is
166
274
  function withdrawStakingRewardReserves(Amount dipAmount)
167
275
  external
168
276
  virtual
277
+ restricted()
169
278
  onlyInstance()
170
279
  returns (Amount newBalance)
171
280
  {
172
281
  NftId instanceNftId = getRegistry().getNftIdForAddress(msg.sender);
173
- _stakingService.withdrawInstanceRewardReserves(
282
+ newBalance = _stakingService.withdrawInstanceRewardReserves(
174
283
  instanceNftId,
175
284
  dipAmount);
176
285
  }
177
286
 
178
287
 
179
- function setComponentLocked(bool locked)
180
- external
181
- virtual
182
- onlyComponent()
288
+ function upgradeInstanceReader()
289
+ external
290
+ restricted()
291
+ onlyInstance()
183
292
  {
184
- // checks
185
- address componentAddress = msg.sender;
186
-
187
- if (!IInstanceLinkedComponent(componentAddress).supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
188
- revert ErrorInstanceServiceComponentNotInstanceLinked(componentAddress);
189
- }
190
-
191
- IRegistry registry = getRegistry();
192
- NftId instanceNftId = registry.getObjectInfo(componentAddress).parentNftId;
193
-
194
- IInstance instance = IInstance(
195
- registry.getObjectAddress(instanceNftId));
293
+ address instanceAddress = msg.sender;
294
+ IInstance instance = IInstance(msg.sender);
295
+
296
+ InstanceReader upgradedInstanceReaderClone = InstanceReader(
297
+ Clones.clone(address(_masterInstanceReader)));
196
298
 
197
- // no revert in case already locked
198
- // TODO refactor/implement
199
- // instance.getInstanceAdmin().setTargetLockedByService(
200
- // componentAddress,
201
- // locked);
299
+ upgradedInstanceReaderClone.initializeWithInstance(instanceAddress);
300
+ instance.setInstanceReader(upgradedInstanceReaderClone);
202
301
  }
203
302
 
204
303
 
205
- function getMasterInstanceReader() external view returns (address) {
206
- return _masterInstanceReader;
207
- }
208
-
209
304
  function setAndRegisterMasterInstance(address instanceAddress)
210
- external
211
- onlyOwner
212
- returns(NftId masterInstanceNftId)
305
+ external
306
+ onlyOwner()
307
+ returns(NftId masterInstanceNftId)
213
308
  {
214
309
  if(_masterInstance != address(0)) { revert ErrorInstanceServiceMasterInstanceAlreadySet(); }
215
310
  if(_masterInstanceAdmin != address(0)) { revert ErrorInstanceServiceMasterInstanceAdminAlreadySet(); }
216
311
  if(_masterInstanceBundleSet != address(0)) { revert ErrorInstanceServiceMasterBundleSetAlreadySet(); }
217
-
312
+ if(_masterInstanceRiskSet != address(0)) { revert ErrorInstanceServiceMasterRiskSetAlreadySet(); }
218
313
  if(instanceAddress == address(0)) { revert ErrorInstanceServiceInstanceAddressZero(); }
219
314
 
220
315
  IInstance instance = IInstance(instanceAddress);
@@ -223,28 +318,34 @@ contract InstanceService is
223
318
  address instanceAdminAddress = address(instanceAdmin);
224
319
  InstanceReader instanceReader = instance.getInstanceReader();
225
320
  address instanceReaderAddress = address(instanceReader);
226
- BundleSet bundleManager = instance.getBundleSet();
227
- address bundleManagerAddress = address(bundleManager);
321
+ BundleSet bundleSet = instance.getBundleSet();
322
+ address bundleSetAddress = address(bundleSet);
323
+ RiskSet riskSet = instance.getRiskSet();
324
+ address riskSetAddress = address(riskSet);
228
325
  InstanceStore instanceStore = instance.getInstanceStore();
229
326
  address instanceStoreAddress = address(instanceStore);
230
327
 
231
328
  if(accessManagerAddress == address(0)) { revert ErrorInstanceServiceAccessManagerZero(); }
232
329
  if(instanceAdminAddress == address(0)) { revert ErrorInstanceServiceInstanceAdminZero(); }
233
330
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderZero(); }
234
- if(bundleManagerAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
331
+ if(bundleSetAddress == address(0)) { revert ErrorInstanceServiceBundleSetZero(); }
332
+ if(riskSetAddress == address(0)) { revert ErrorInstanceServiceRiskSetZero(); }
235
333
  if(instanceStoreAddress == address(0)) { revert ErrorInstanceServiceInstanceStoreZero(); }
236
334
 
237
335
  if(instance.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceAuthorityMismatch(); }
238
- if(bundleManager.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
336
+ if(bundleSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceBundleSetAuthorityMismatch(); }
337
+ if(riskSet.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceRiskSetAuthorityMismatch(); }
239
338
  if(instanceStore.authority() != instanceAdmin.authority()) { revert ErrorInstanceServiceInstanceStoreAuthorityMismatch(); }
240
- if(bundleManager.getInstance() != instance) { revert ErrorInstanceServiceBundleMangerInstanceMismatch(); }
339
+ if(bundleSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceBundleSetInstanceMismatch(); }
340
+ if(riskSet.getInstanceAddress() != address(instance)) { revert ErrorInstanceServiceRiskSetInstanceMismatch(); }
241
341
  if(instanceReader.getInstance() != instance) { revert ErrorInstanceServiceInstanceReaderInstanceMismatch2(); }
242
342
 
243
343
  _masterAccessManager = accessManagerAddress;
244
344
  _masterInstanceAdmin = instanceAdminAddress;
245
345
  _masterInstance = instanceAddress;
246
346
  _masterInstanceReader = instanceReaderAddress;
247
- _masterInstanceBundleSet = bundleManagerAddress;
347
+ _masterInstanceBundleSet = bundleSetAddress;
348
+ _masterInstanceRiskSet = riskSetAddress;
248
349
  _masterInstanceStore = instanceStoreAddress;
249
350
 
250
351
  IInstance masterInstance = IInstance(_masterInstance);
@@ -252,7 +353,11 @@ contract InstanceService is
252
353
  masterInstanceNftId = info.nftId;
253
354
  }
254
355
 
255
- function upgradeMasterInstanceReader(address instanceReaderAddress) external onlyOwner {
356
+
357
+ function upgradeMasterInstanceReader(address instanceReaderAddress)
358
+ external
359
+ onlyOwner
360
+ {
256
361
  if(_masterInstanceReader == address(0)) { revert ErrorInstanceServiceMasterInstanceReaderNotSet(); }
257
362
  if(instanceReaderAddress == address(0)) { revert ErrorInstanceServiceInstanceReaderAddressZero(); }
258
363
  if(instanceReaderAddress == _masterInstanceReader) { revert ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader(); }
@@ -263,41 +368,33 @@ contract InstanceService is
263
368
  _masterInstanceReader = instanceReaderAddress;
264
369
  }
265
370
 
266
- function upgradeInstanceReader(NftId instanceNftId)
267
- external
268
- onlyInstanceOwner(instanceNftId)
269
- onlyNftOfType(instanceNftId, INSTANCE())
270
- {
271
- IRegistry registry = getRegistry();
272
- IRegistry.ObjectInfo memory instanceInfo = registry.getObjectInfo(instanceNftId);
273
- Instance instance = Instance(instanceInfo.objectAddress);
274
-
275
- InstanceReader upgradedInstanceReaderClone = InstanceReader(Clones.clone(address(_masterInstanceReader)));
276
- upgradedInstanceReaderClone.initializeWithInstance(address(instance));
277
- instance.setInstanceReader(upgradedInstanceReaderClone);
371
+ //--- view functions ------------------------------------------------------------//
372
+
373
+ function getMasterInstanceReader() external view returns (address) {
374
+ return _masterInstanceReader;
278
375
  }
279
376
 
377
+ //--- internal functions --------------------------------------------------------//
378
+
280
379
  /// @dev create new cloned instance admin
281
380
  /// function used to setup a new instance
282
- function _createInstanceAdmin()
381
+ function _cloneNewInstanceAdmin()
283
382
  internal
284
383
  virtual
285
- returns (InstanceAdmin clonedInstanceAdmin)
384
+ returns (InstanceAdmin clonedAdmin)
286
385
  {
287
- // start with setting up a new OZ access manager
386
+ // clone instance specific access manager
288
387
  AccessManagerCloneable clonedAccessManager = AccessManagerCloneable(
289
- Clones.clone(_masterAccessManager));
388
+ Clones.clone(
389
+ InstanceAdmin(_masterInstanceAdmin).authority()));
290
390
 
291
391
  // set up the instance admin
292
- clonedInstanceAdmin = InstanceAdmin(Clones.clone(_masterInstanceAdmin));
293
- clonedAccessManager.initialize(
294
- address(clonedInstanceAdmin)); // grant ADMIN_ROLE to instance admin
295
-
296
- address authorization = address(
297
- InstanceAdmin(_masterInstanceAdmin).getInstanceAuthorization());
298
- clonedInstanceAdmin.initialize(
299
- clonedAccessManager,
300
- authorization);
392
+ clonedAdmin = InstanceAdmin(
393
+ Clones.clone(_masterInstanceAdmin));
394
+
395
+ clonedAdmin.initialize(
396
+ address(clonedAccessManager),
397
+ "InstanceAdmin");
301
398
  }
302
399
 
303
400
 
@@ -305,59 +402,31 @@ contract InstanceService is
305
402
  /// function used to setup a new instance
306
403
  function _createInstance(
307
404
  InstanceAdmin instanceAdmin,
308
- address instanceOwner
405
+ address instanceOwner,
406
+ bool allowAnyToken
309
407
  )
310
408
  internal
311
409
  virtual
312
410
  returns (IInstance)
313
411
  {
314
- InstanceStore clonedInstanceStore = InstanceStore(Clones.clone(address(_masterInstanceStore)));
315
- BundleSet clonedBundleSet = BundleSet(Clones.clone(_masterInstanceBundleSet));
316
- InstanceReader clonedInstanceReader = InstanceReader(Clones.clone(address(_masterInstanceReader)));
317
-
318
412
  // clone instance
319
413
  Instance clonedInstance = Instance(Clones.clone(_masterInstance));
320
414
  clonedInstance.initialize(
321
415
  instanceAdmin,
322
- clonedInstanceStore,
323
- clonedBundleSet,
324
- clonedInstanceReader,
416
+ InstanceStore(Clones.clone(address(_masterInstanceStore))),
417
+ BundleSet(Clones.clone(_masterInstanceBundleSet)),
418
+ RiskSet(Clones.clone(_masterInstanceRiskSet)),
419
+ InstanceReader(Clones.clone(address(_masterInstanceReader))),
325
420
  getRegistry(),
326
- instanceOwner);
421
+ getRelease(),
422
+ instanceOwner,
423
+ allowAnyToken);
424
+
327
425
  return clonedInstance;
328
426
  }
329
427
 
330
428
 
331
- /// all gif targets MUST be children of instanceNftId
332
- function _createGifTarget(
333
- NftId instanceNftId,
334
- address targetAddress,
335
- string memory targetName,
336
- RoleId[] memory roles,
337
- bytes4[][] memory selectors
338
- )
339
- internal
340
- virtual
341
- {
342
- // TODO instanceAdmin will check target instance match anyway
343
- (
344
- IInstance instance, // or instanceInfo
345
- // or targetInfo
346
- ) = _validateInstanceAndComponent(instanceNftId, targetAddress);
347
-
348
- InstanceAdmin instanceAdmin = instance.getInstanceAdmin();
349
-
350
- // TODO refactor/implement
351
- // instanceAdmin.createGifTarget(targetAddress, targetName);
352
-
353
- // set proposed target config
354
- for(uint roleIdx = 0; roleIdx < roles.length; roleIdx++) {
355
- // TODO refactor/implement
356
- // instanceAdmin.setTargetFunctionRoleByService(targetName, selectors[roleIdx], roles[roleIdx]);
357
- }
358
- }
359
-
360
- /// @dev top level initializer
429
+ /// @dev top level initializer (upgradable contract)
361
430
  function _initialize(
362
431
  address owner,
363
432
  bytes memory data
@@ -367,14 +436,15 @@ contract InstanceService is
367
436
  initializer()
368
437
  {
369
438
  (
370
- address registryAddress,
371
- address authority
439
+ address authority,
440
+ address registry
372
441
  ) = abi.decode(data, (address, address));
373
442
 
374
- _initializeService(registryAddress, authority, owner);
443
+ __Service_init(authority, registry, owner);
375
444
 
376
445
  _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
377
446
  _stakingService = IStakingService(_getServiceAddress(STAKING()));
447
+ _componentService = IComponentService(_getServiceAddress(COMPONENT()));
378
448
 
379
449
  _registerInterface(type(IInstanceService).interfaceId);
380
450
  }
@@ -399,14 +469,41 @@ contract InstanceService is
399
469
  }
400
470
 
401
471
  componentNftId = componentInfo.nftId;
402
- } else {
472
+ }
473
+
474
+ instance = Instance(instanceInfo.objectAddress);
475
+ }
476
+
477
+
478
+ function _checkInstance(
479
+ address instanceAddress,
480
+ VersionPart expectedRelease
481
+ )
482
+ internal
483
+ virtual
484
+ view
485
+ {
486
+ IRegistry registry = getRegistry();
403
487
 
488
+ NftId instanceNftId = registry.getNftIdForAddress(instanceAddress);
489
+ if (instanceNftId.eqz()) {
490
+ revert ErrorInstanceServiceNotRegistered(instanceAddress);
404
491
  }
405
492
 
406
- instance = Instance(instanceInfo.objectAddress);
407
-
493
+ ObjectType objectType = registry.getObjectInfo(instanceNftId).objectType;
494
+ if (objectType != INSTANCE()) {
495
+ revert ErrorInstanceServiceNotInstance(instanceAddress, objectType);
496
+ }
497
+
498
+ if (expectedRelease.gtz()) {
499
+ VersionPart instanceRelease = IInstance(instanceAddress).getRelease();
500
+ if (instanceRelease != expectedRelease) {
501
+ revert ErrorInstanceServiceInstanceVersionMismatch(instanceNftId, expectedRelease, instanceRelease);
502
+ }
503
+ }
408
504
  }
409
505
 
506
+
410
507
  // From IService
411
508
  function _getDomain() internal pure override returns(ObjectType) {
412
509
  return INSTANCE();
@@ -17,7 +17,7 @@ contract InstanceServiceManager is ProxyManager {
17
17
  )
18
18
  {
19
19
  InstanceService svc = new InstanceService{salt: salt}();
20
- bytes memory data = abi.encode(registry, authority);
20
+ bytes memory data = abi.encode(authority, registry);
21
21
  IVersionable versionable = initialize(
22
22
  registry,
23
23
  address(svc),
@@ -7,10 +7,10 @@ import {Amount} from "../type/Amount.sol";
7
7
  import {Key32} from "../type/Key32.sol";
8
8
  import {NftId} from "../type/NftId.sol";
9
9
  import {ClaimId} from "../type/ClaimId.sol";
10
- import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR} from "../type/ObjectType.sol";
10
+ import {ObjectType, BUNDLE, POLICY, POOL, PREMIUM, PRODUCT, COMPONENT, DISTRIBUTOR, FEE} from "../type/ObjectType.sol";
11
11
  import {RequestId} from "../type/RequestId.sol";
12
12
  import {RiskId} from "../type/RiskId.sol";
13
- import {StateId} from "../type/StateId.sol";
13
+ import {StateId, KEEP_STATE} from "../type/StateId.sol";
14
14
  import {ReferralId} from "../type/Referral.sol";
15
15
  import {DistributorType} from "../type/DistributorType.sol";
16
16
  import {PayoutId} from "../type/PayoutId.sol";
@@ -85,6 +85,17 @@ contract InstanceStore is
85
85
  _update(_toNftKey32(productNftId, PRODUCT()), abi.encode(info), newState);
86
86
  }
87
87
 
88
+
89
+ //--- Fee -----------------------------------------------------------//
90
+ function createFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
91
+ _create(_toNftKey32(productNftId, FEE()), abi.encode(info));
92
+ }
93
+
94
+ // Fee only has one state, so no change change possible
95
+ function updateFee(NftId productNftId, IComponents.FeeInfo memory info) external restricted() {
96
+ _update(_toNftKey32(productNftId, FEE()), abi.encode(info), KEEP_STATE());
97
+ }
98
+
88
99
  //--- Pool --------------------------------------------------------------//
89
100
 
90
101
  function createPool(