@etherisc/gif-next 0.0.2-b8da656-306 → 0.0.2-b926d1d-788

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