@etherisc/gif-next 0.0.2-bf75dbb-287 → 0.0.2-bfb44e0-483

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 (291) hide show
  1. package/README.md +73 -1
  2. package/artifacts/contracts/components/Component.sol/Component.dbg.json +4 -0
  3. package/artifacts/contracts/components/Component.sol/Component.json +897 -0
  4. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
  5. package/artifacts/contracts/components/Distribution.sol/Distribution.json +907 -218
  6. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +4 -0
  7. package/artifacts/contracts/components/{BaseComponent.sol/BaseComponent.json → IComponent.sol/IComponent.json} +151 -84
  8. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  9. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +798 -0
  10. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  11. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +662 -43
  12. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  13. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +661 -5
  14. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
  15. package/artifacts/contracts/components/Pool.sol/Pool.json +620 -193
  16. package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
  17. package/artifacts/contracts/components/Product.sol/Product.json +550 -115
  18. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +1 -1
  19. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +1 -1
  20. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +1 -1
  21. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +1 -1
  22. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +1 -1
  23. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +1 -1
  24. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +1 -1
  25. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +1 -1
  26. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +1 -1
  27. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +1 -1
  28. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +1 -1
  29. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +1 -1
  30. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +1 -1
  31. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +1 -1
  32. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +2 -2
  33. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +1 -1
  34. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +1 -1
  35. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +1 -1
  36. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +1 -1
  37. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +1 -1
  38. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +1 -1
  39. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  40. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +38 -62
  41. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
  42. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  43. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +725 -36
  44. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  45. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +198 -20
  46. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  47. package/artifacts/contracts/instance/Instance.sol/Instance.json +490 -710
  48. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  49. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +188 -144
  50. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  51. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +61 -97
  52. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  53. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +501 -264
  54. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  55. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +178 -100
  56. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
  57. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -32
  58. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +4 -0
  59. package/artifacts/contracts/{shared/RegisterableUpgradable.sol/RegisterableUpgradable.json → instance/base/ComponentService.sol/ComponentService.json} +321 -9
  60. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  61. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  63. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
  64. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  65. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
  66. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  67. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +59 -16
  68. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  69. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  70. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  71. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  72. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  73. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  74. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  75. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +1117 -0
  76. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +4 -0
  77. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +1318 -0
  78. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  79. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +586 -0
  80. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
  81. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +544 -84
  82. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  83. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +191 -33
  84. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/instance/{base/ComponentServiceBase.sol/ComponentServiceBase.json → service/IApplicationService.sol/IApplicationService.json} +207 -109
  86. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +4 -0
  87. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +798 -0
  88. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  89. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +229 -19
  90. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  91. package/artifacts/contracts/instance/service/{IComponentOwnerService.sol/IComponentOwnerService.json → IPolicyService.sol/IPolicyService.json} +369 -51
  92. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
  93. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +28 -244
  94. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
  95. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +33 -244
  96. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +1378 -0
  98. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  99. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +642 -0
  100. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
  101. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +259 -351
  102. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  103. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +166 -56
  104. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
  105. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +270 -410
  106. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  107. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +166 -80
  108. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  109. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  110. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  111. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +225 -133
  112. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  113. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +146 -94
  114. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  115. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  116. package/artifacts/contracts/registry/Registry.sol/Registry.json +238 -235
  117. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  118. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
  119. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  120. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +214 -156
  121. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  122. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +181 -97
  123. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  124. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +547 -0
  125. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  126. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +150 -29
  127. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
  128. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  129. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  130. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  131. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +37 -0
  132. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
  134. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  135. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +18 -5
  136. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +69 -0
  138. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  139. package/artifacts/contracts/shared/IService.sol/IService.json +32 -19
  140. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  141. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -2
  142. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +156 -11
  144. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +269 -0
  146. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  147. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +156 -6
  148. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  149. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +152 -11
  150. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  151. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +105 -0
  152. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  153. package/artifacts/contracts/shared/Service.sol/Service.json +178 -19
  154. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  155. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  156. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  157. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -2
  159. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
  160. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
  161. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +152 -11
  162. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
  163. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
  164. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
  165. package/artifacts/contracts/test/TestService.sol/TestService.json +196 -37
  166. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
  167. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
  168. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
  169. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -8
  170. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
  171. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  172. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  173. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
  174. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  175. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
  176. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
  177. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
  178. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
  179. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
  180. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
  181. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  182. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
  183. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
  184. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  185. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
  186. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
  187. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
  188. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
  189. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
  190. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
  191. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
  192. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
  193. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
  194. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
  195. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
  196. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
  197. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
  198. package/contracts/components/Component.sol +236 -0
  199. package/contracts/components/Distribution.sol +199 -64
  200. package/contracts/components/IComponent.sol +50 -0
  201. package/contracts/components/IDistributionComponent.sol +59 -3
  202. package/contracts/components/IPoolComponent.sol +50 -29
  203. package/contracts/components/IProductComponent.sol +7 -3
  204. package/contracts/components/Pool.sol +136 -149
  205. package/contracts/components/Product.sol +104 -115
  206. package/contracts/instance/BundleManager.sol +7 -11
  207. package/contracts/instance/IInstance.sol +39 -9
  208. package/contracts/instance/IInstanceService.sol +29 -4
  209. package/contracts/instance/Instance.sol +78 -251
  210. package/contracts/instance/InstanceAccessManager.sol +87 -78
  211. package/contracts/instance/InstanceReader.sol +3 -25
  212. package/contracts/instance/InstanceService.sol +306 -137
  213. package/contracts/instance/InstanceServiceManager.sol +5 -8
  214. package/contracts/instance/ObjectManager.sol +7 -24
  215. package/contracts/instance/base/ComponentService.sol +134 -0
  216. package/contracts/instance/module/IAccess.sol +27 -18
  217. package/contracts/instance/module/ISetup.sol +5 -4
  218. package/contracts/instance/service/ApplicationService.sol +268 -0
  219. package/contracts/instance/service/BundleService.sol +298 -0
  220. package/contracts/instance/service/BundleServiceManager.sol +51 -0
  221. package/contracts/instance/service/DistributionService.sol +212 -26
  222. package/contracts/instance/service/DistributionServiceManager.sol +6 -9
  223. package/contracts/instance/service/IApplicationService.sol +82 -0
  224. package/contracts/instance/service/IBundleService.sol +54 -0
  225. package/contracts/instance/service/IDistributionService.sol +53 -0
  226. package/contracts/instance/service/IPolicyService.sol +88 -0
  227. package/contracts/instance/service/IPoolService.sol +2 -33
  228. package/contracts/instance/service/IProductService.sol +2 -72
  229. package/contracts/instance/service/PolicyService.sol +524 -0
  230. package/contracts/instance/service/PolicyServiceManager.sol +54 -0
  231. package/contracts/instance/service/PoolService.sol +34 -212
  232. package/contracts/instance/service/PoolServiceManager.sol +5 -8
  233. package/contracts/instance/service/ProductService.sol +123 -460
  234. package/contracts/registry/ChainNft.sol +1 -1
  235. package/contracts/registry/IRegistry.sol +37 -19
  236. package/contracts/registry/IRegistryService.sol +28 -13
  237. package/contracts/registry/Registry.sol +231 -217
  238. package/contracts/registry/RegistryAccessManager.sol +216 -0
  239. package/contracts/registry/RegistryService.sol +65 -162
  240. package/contracts/registry/RegistryServiceManager.sol +18 -36
  241. package/contracts/registry/ReleaseManager.sol +332 -0
  242. package/contracts/registry/TokenRegistry.sol +11 -9
  243. package/contracts/shared/ERC165.sol +12 -11
  244. package/contracts/shared/INftOwnable.sol +12 -6
  245. package/contracts/shared/IPolicyHolder.sol +26 -0
  246. package/contracts/shared/IRegisterable.sol +4 -6
  247. package/contracts/shared/IRegistryLinked.sol +15 -0
  248. package/contracts/shared/IService.sol +2 -1
  249. package/contracts/shared/IVersionable.sol +2 -2
  250. package/contracts/shared/NftOwnable.sol +113 -57
  251. package/contracts/shared/PolicyHolder.sol +81 -0
  252. package/contracts/shared/ProxyManager.sol +6 -5
  253. package/contracts/shared/Registerable.sol +15 -24
  254. package/contracts/shared/RegistryLinked.sol +64 -0
  255. package/contracts/shared/Service.sol +18 -13
  256. package/contracts/shared/Versionable.sol +3 -2
  257. package/contracts/test/TestRegisterable.sol +1 -1
  258. package/contracts/test/TestService.sol +4 -3
  259. package/contracts/types/DistributorType.sol +2 -2
  260. package/contracts/types/ObjectType.sol +6 -2
  261. package/contracts/types/RoleId.sol +10 -10
  262. package/package.json +3 -3
  263. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  264. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  265. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -368
  266. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  267. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  268. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  269. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  270. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  271. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  272. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  273. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  274. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  275. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  276. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  277. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  278. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  279. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  280. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  281. package/contracts/components/BaseComponent.sol +0 -132
  282. package/contracts/components/IBaseComponent.sol +0 -31
  283. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  284. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  285. package/contracts/instance/IInstanceBase.sol +0 -26
  286. package/contracts/instance/InstanceBase.sol +0 -41
  287. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  288. package/contracts/instance/base/IInstanceBase.sol +0 -23
  289. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  290. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  291. package/contracts/shared/RegisterableUpgradable.sol +0 -16
@@ -4,21 +4,17 @@ pragma solidity ^0.8.19;
4
4
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
5
 
6
6
  import {IRisk} from "../instance/module/IRisk.sol";
7
- import {ITreasury} from "../instance/module/ITreasury.sol";
8
- import {IProductService} from "../instance/service/IProductService.sol";
7
+ import {IPolicyService} from "../instance/service/IPolicyService.sol";
9
8
  import {IProductComponent} from "./IProductComponent.sol";
10
- import {NftId, zeroNftId, NftIdLib} from "../types/NftId.sol";
11
- import {ObjectType, PRODUCT} from "../types/ObjectType.sol";
9
+ import {NftId, NftIdLib} from "../types/NftId.sol";
10
+ import {PRODUCT} from "../types/ObjectType.sol";
12
11
  import {ReferralId} from "../types/Referral.sol";
13
12
  import {RiskId, RiskIdLib} from "../types/RiskId.sol";
14
13
  import {StateId} from "../types/StateId.sol";
15
14
  import {Timestamp} from "../types/Timestamp.sol";
16
- import {Fee, FeeLib} from "../types/Fee.sol";
17
- import {BaseComponent} from "./BaseComponent.sol";
15
+ import {Fee} from "../types/Fee.sol";
16
+ import {Component} from "./Component.sol";
18
17
 
19
- import {IRegistry} from "../registry/IRegistry.sol";
20
- import {IRegisterable} from "../shared/IRegisterable.sol";
21
- import {Registerable} from "../shared/Registerable.sol";
22
18
  import {TokenHandler} from "../shared/TokenHandler.sol";
23
19
 
24
20
  import {InstanceReader} from "../instance/InstanceReader.sol";
@@ -26,45 +22,55 @@ import {ISetup} from "../instance/module/ISetup.sol";
26
22
  import {Pool} from "../components/Pool.sol";
27
23
  import {Distribution} from "../components/Distribution.sol";
28
24
 
29
- import {zeroNftId} from "../types/NftId.sol";
30
-
31
- contract Product is BaseComponent, IProductComponent {
32
- using NftIdLib for NftId;
33
-
34
- IProductService internal _productService;
35
- Pool internal _pool;
36
- Distribution internal _distribution;
37
- Fee internal _initialProductFee;
38
- Fee internal _initialProcessingFee;
39
- TokenHandler internal _tokenHandler;
40
-
41
- NftId internal _poolNftId;
42
- NftId internal _distributionNftId;
25
+ abstract contract Product is
26
+ Component,
27
+ IProductComponent
28
+ {
29
+ // keccak256(abi.encode(uint256(keccak256("etherisc.storage.Product")) - 1)) & ~bytes32(uint256(0xff));
30
+ bytes32 public constant PRODUCT_STORAGE_LOCATION_V1 = 0x0bb7aafdb8e380f81267337bc5b5dfdf76e6d3a380ecadb51ec665246d9d6800;
31
+
32
+ struct ProductStorage {
33
+ IPolicyService _policyService;
34
+ Pool _pool;
35
+ Distribution _distribution;
36
+ Fee _initialProductFee;
37
+ Fee _initialProcessingFee;
38
+ TokenHandler _tokenHandler;
39
+ NftId _poolNftId;
40
+ NftId _distributionNftId;
41
+ }
43
42
 
44
- constructor(
43
+ function initializeProduct(
45
44
  address registry,
46
- NftId instanceNftid,
45
+ NftId instanceNftId,
46
+ string memory name,
47
47
  address token,
48
48
  bool isInterceptor,
49
49
  address pool,
50
50
  address distribution,
51
51
  Fee memory productFee,
52
52
  Fee memory processingFee,
53
- address initialOwner
54
- ) BaseComponent(registry, instanceNftid, token, PRODUCT(), isInterceptor, initialOwner) {
55
- // TODO add validation
56
- _productService = _instance.getProductService();
57
- _pool = Pool(pool);
58
- _distribution = Distribution(distribution);
59
- _initialProductFee = productFee;
60
- _initialProcessingFee = processingFee;
61
-
62
- _tokenHandler = new TokenHandler(token);
63
-
64
- _poolNftId = getRegistry().getNftId(address(_pool));
65
- _distributionNftId = getRegistry().getNftId(address(_distribution));
53
+ address initialOwner,
54
+ bytes memory data
55
+ )
56
+ public
57
+ virtual
58
+ onlyInitializing()
59
+ {
60
+ initializeComponent(registry, instanceNftId, name, token, PRODUCT(), isInterceptor, initialOwner, data);
66
61
 
67
- _registerInterface(type(IProductComponent).interfaceId);
62
+ ProductStorage storage $ = _getProductStorage();
63
+ // TODO add validation
64
+ $._policyService = getInstance().getPolicyService();
65
+ $._pool = Pool(pool);
66
+ $._distribution = Distribution(distribution);
67
+ $._initialProductFee = productFee;
68
+ $._initialProcessingFee = processingFee;
69
+ $._tokenHandler = new TokenHandler(token);
70
+ $._poolNftId = getRegistry().getNftId(pool);
71
+ $._distributionNftId = getRegistry().getNftId(distribution);
72
+
73
+ registerInterface(type(IProductComponent).interfaceId);
68
74
  }
69
75
 
70
76
 
@@ -73,15 +79,15 @@ contract Product is BaseComponent, IProductComponent {
73
79
  RiskId riskId,
74
80
  uint256 lifetime,
75
81
  bytes memory applicationData,
76
- ReferralId referralId,
77
- NftId bundleNftId
82
+ NftId bundleNftId,
83
+ ReferralId referralId
78
84
  )
79
85
  external
80
86
  view
81
87
  override
82
88
  returns (uint256 premiumAmount)
83
89
  {
84
- (premiumAmount,,,,) = _productService.calculatePremium(
90
+ (premiumAmount,,,,) = _getProductStorage()._policyService.calculatePremium(
85
91
  riskId,
86
92
  sumInsuredAmount,
87
93
  lifetime,
@@ -115,7 +121,7 @@ contract Product is BaseComponent, IProductComponent {
115
121
  RiskId id,
116
122
  bytes memory data
117
123
  ) internal {
118
- _productService.createRisk(
124
+ getProductService().createRisk(
119
125
  id,
120
126
  data
121
127
  );
@@ -125,7 +131,7 @@ contract Product is BaseComponent, IProductComponent {
125
131
  RiskId id,
126
132
  bytes memory data
127
133
  ) internal {
128
- _productService.updateRisk(
134
+ getProductService().updateRisk(
129
135
  id,
130
136
  data
131
137
  );
@@ -135,14 +141,14 @@ contract Product is BaseComponent, IProductComponent {
135
141
  RiskId id,
136
142
  StateId state
137
143
  ) internal {
138
- _productService.updateRiskState(
144
+ getProductService().updateRiskState(
139
145
  id,
140
146
  state
141
147
  );
142
148
  }
143
149
 
144
150
  function _getRiskInfo(RiskId id) internal view returns (IRisk.RiskInfo memory info) {
145
- return _instance.getInstanceReader().getRiskInfo(id);
151
+ return getInstance().getInstanceReader().getRiskInfo(id);
146
152
  }
147
153
 
148
154
  function _createApplication(
@@ -153,8 +159,11 @@ contract Product is BaseComponent, IProductComponent {
153
159
  bytes memory applicationData,
154
160
  NftId bundleNftId,
155
161
  ReferralId referralId
156
- ) internal returns (NftId nftId) {
157
- nftId = _productService.createApplication(
162
+ )
163
+ internal
164
+ returns (NftId nftId)
165
+ {
166
+ return _getProductStorage()._policyService.createApplication(
158
167
  applicationOwner,
159
168
  riskId,
160
169
  sumInsuredAmount,
@@ -172,7 +181,7 @@ contract Product is BaseComponent, IProductComponent {
172
181
  )
173
182
  internal
174
183
  {
175
- _productService.underwrite(
184
+ _getProductStorage()._policyService.underwrite(
176
185
  policyNftId,
177
186
  requirePremiumPayment,
178
187
  activateAt);
@@ -184,7 +193,7 @@ contract Product is BaseComponent, IProductComponent {
184
193
  )
185
194
  internal
186
195
  {
187
- _productService.collectPremium(
196
+ _getProductStorage()._policyService.collectPremium(
188
197
  policyNftId,
189
198
  activateAt);
190
199
  }
@@ -195,17 +204,25 @@ contract Product is BaseComponent, IProductComponent {
195
204
  )
196
205
  internal
197
206
  {
198
- _productService.activate(
207
+ _getProductStorage()._policyService.activate(
199
208
  policyNftId,
200
209
  activateAt);
201
210
  }
202
211
 
212
+ function _close(
213
+ NftId policyNftId
214
+ )
215
+ internal
216
+ {
217
+ _getProductStorage()._policyService.close(policyNftId);
218
+ }
219
+
203
220
  function getPoolNftId() external view override returns (NftId poolNftId) {
204
- return getRegistry().getNftId(address(_pool));
221
+ return getRegistry().getNftId(address(_getProductStorage()._pool));
205
222
  }
206
223
 
207
224
  function getDistributionNftId() external view override returns (NftId distributionNftId) {
208
- return getRegistry().getNftId(address(_distribution));
225
+ return getRegistry().getNftId(address(_getProductStorage()._distribution));
209
226
  }
210
227
 
211
228
  // from product component
@@ -215,75 +232,47 @@ contract Product is BaseComponent, IProductComponent {
215
232
  )
216
233
  external
217
234
  onlyOwner
235
+ restricted()
218
236
  override
219
237
  {
220
- _productService.setFees(productFee, processingFee);
238
+ getProductService().setFees(productFee, processingFee);
221
239
  }
222
240
 
223
241
  function getSetupInfo() public view returns (ISetup.ProductSetupInfo memory setupInfo) {
224
- InstanceReader reader = _instance.getInstanceReader();
225
- return reader.getProductSetupInfo(getNftId());
226
- }
242
+ InstanceReader reader = getInstance().getInstanceReader();
243
+ setupInfo = reader.getProductSetupInfo(getNftId());
227
244
 
228
- // from IRegisterable
245
+ // fallback to initial setup info (wallet is always != address(0))
246
+ if(setupInfo.wallet == address(0)) {
247
+ setupInfo = _getInitialSetupInfo();
248
+ }
249
+ }
229
250
 
230
- function getInitialInfo()
231
- public
232
- view
233
- override (IRegisterable, Registerable)
234
- returns (IRegistry.ObjectInfo memory, bytes memory)
235
- {
236
- // from Registerable
237
- (
238
- IRegistry.ObjectInfo memory productInfo,
239
- bytes memory data
240
- ) = super.getInitialInfo();
241
-
242
- // TODO read pool & distribution fees
243
- // 1) from pool -> the only option -> pool must be registered first?
244
- // 2) from instance -> all fees are set into instance at product registration which is ongoing here
245
- // checks are done in registryProduct() where THIS function is called
246
- //require(getRegistry().getObjectInfo(_poolNftId).objectType == POOL(), "POOL_NOT_REGISTERED");
247
- //require(getRegistry().getObjectInfo(_distributionNftId).objectType == DISTRIBUTION(), "DISTRIBUTION_NOT_REGISTERED");
248
-
249
- // from PoolComponent
250
- (
251
- ,
252
- bytes memory poolData
253
- ) = _pool.getInitialInfo();
254
-
255
- (
256
- ISetup.PoolSetupInfo memory poolSetupInfo
257
- ) = abi.decode(poolData, (ISetup.PoolSetupInfo));
258
-
259
- // from DistributionComponent
260
- (
261
- ,
262
- bytes memory distributionData
263
- ) = _distribution.getInitialInfo();
264
-
265
- (
266
- ISetup.DistributionSetupInfo memory distributionSetupInfo
267
- ) = abi.decode(distributionData, (ISetup.DistributionSetupInfo));
268
-
269
- return (
270
- productInfo,
271
- abi.encode(
272
- ISetup.ProductSetupInfo(
273
- _token,
274
- _tokenHandler,
275
- _distributionNftId,
276
- _poolNftId,
277
- distributionSetupInfo.distributionFee,
278
- _initialProductFee,
279
- _initialProcessingFee,
280
- poolSetupInfo.poolFee,
281
- poolSetupInfo.stakingFee,
282
- poolSetupInfo.performanceFee,
283
- false,
284
- _wallet
285
- )
286
- )
251
+ function _getInitialSetupInfo() internal view returns (ISetup.ProductSetupInfo memory setupInfo) {
252
+ ProductStorage storage $ = _getProductStorage();
253
+
254
+ ISetup.DistributionSetupInfo memory distributionSetupInfo = $._distribution.getSetupInfo();
255
+ ISetup.PoolSetupInfo memory poolSetupInfo = $._pool.getSetupInfo();
256
+
257
+ return ISetup.ProductSetupInfo(
258
+ getToken(),
259
+ $._tokenHandler,
260
+ $._distributionNftId,
261
+ $._poolNftId,
262
+ distributionSetupInfo.distributionFee,
263
+ $._initialProductFee,
264
+ $._initialProcessingFee,
265
+ poolSetupInfo.poolFee,
266
+ poolSetupInfo.stakingFee,
267
+ poolSetupInfo.performanceFee,
268
+ false,
269
+ getWallet()
287
270
  );
288
271
  }
272
+
273
+ function _getProductStorage() private pure returns (ProductStorage storage $) {
274
+ assembly {
275
+ $.slot := PRODUCT_STORAGE_LOCATION_V1
276
+ }
277
+ }
289
278
  }
@@ -32,17 +32,13 @@ contract BundleManager is
32
32
 
33
33
  mapping(NftId bundleNftId => LibNftIdSet.Set policies) internal _activePolicies;
34
34
 
35
- constructor() ObjectManager() {
36
- }
37
-
38
-
39
35
  /// @dev links a policy with its bundle
40
36
  // to link a policy it MUST NOT yet have been activated
41
37
  // the bundle MUST be unlocked (active) for linking (underwriting) and registered with this instance
42
38
  function linkPolicy(NftId policyNftId) external restricted() {
43
- NftId bundleNftId = _instanceReader.getPolicyInfo(policyNftId).bundleNftId;
39
+ NftId bundleNftId = _instance.getInstanceReader().getPolicyInfo(policyNftId).bundleNftId;
44
40
  // decision will likely depend on the decision what to check here and what in the service
45
- NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
41
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
46
42
 
47
43
  // ensure bundle is unlocked (in active set) and registered with this instance
48
44
  if (!_isActive(poolNftId, bundleNftId)) {
@@ -59,11 +55,11 @@ contract BundleManager is
59
55
  // - the policy MUST be past its expiry period and it MUST NOT have any open claims
60
56
  // - the policy's payoutAmount MUST be equal to its sumInsuredAmount and MUST NOT have any open claims
61
57
  function unlinkPolicy(NftId policyNftId) external restricted() {
62
- IPolicy.PolicyInfo memory policyInfo = _instanceReader.getPolicyInfo(policyNftId);
58
+ IPolicy.PolicyInfo memory policyInfo = _instance.getInstanceReader().getPolicyInfo(policyNftId);
63
59
 
64
60
  NftId bundleNftId = policyInfo.bundleNftId;
65
61
  // decision will likely depend on the decision what to check here and what in the service
66
- NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
62
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
67
63
 
68
64
  // ensure bundle is registered with this instance
69
65
  if (!_contains(poolNftId, bundleNftId)) {
@@ -78,7 +74,7 @@ contract BundleManager is
78
74
  /// @dev add a new bundle to a riskpool registerd with this instance
79
75
  // the corresponding pool is fetched via instance reader
80
76
  function add(NftId bundleNftId) external restricted() {
81
- NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
77
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
82
78
 
83
79
  // ensure pool is registered with instance
84
80
  if(poolNftId.eqz()) {
@@ -91,14 +87,14 @@ contract BundleManager is
91
87
 
92
88
  /// @dev unlocked (active) bundles are available to underwrite new policies
93
89
  function unlock(NftId bundleNftId) external restricted() {
94
- NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
90
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
95
91
  _activate(poolNftId, bundleNftId);
96
92
  emit LogBundleManagerBundleUnlocked(poolNftId, bundleNftId);
97
93
  }
98
94
 
99
95
  /// @dev locked (deactivated) bundles may not underwrite any new policies
100
96
  function lock(NftId bundleNftId) external restricted() {
101
- NftId poolNftId = _instanceReader.getBundleInfo(bundleNftId).poolNftId;
97
+ NftId poolNftId = _instance.getInstanceReader().getBundleInfo(bundleNftId).poolNftId;
102
98
  _deactivate(poolNftId, bundleNftId);
103
99
  emit LogBundleManagerBundleLocked(poolNftId, bundleNftId);
104
100
  }
@@ -1,31 +1,48 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IERC165} from "@openzeppelin/contracts/utils/introspection/IERC165.sol";
4
+ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
+ import {NftId} from "../types/NftId.sol";
7
+ import {StateId} from "../types/StateId.sol";
8
+ import {RiskId} from "../types/RiskId.sol";
9
+
10
+ import {IRegisterable} from "../shared/IRegisterable.sol";
11
+
12
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
6
13
  import {BundleManager} from "./BundleManager.sol";
7
14
  import {InstanceReader} from "./InstanceReader.sol";
8
15
 
9
- import {IComponentOwnerService} from "./service/IComponentOwnerService.sol";
16
+ import {IBundle} from "./module/IBundle.sol";
17
+ import {IBundleService} from "./service/IBundleService.sol";
10
18
  import {IDistributionService} from "./service/IDistributionService.sol";
19
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
20
+ import {IKeyValueStore} from "./base/IKeyValueStore.sol";
21
+ import {IPolicy} from "./module/IPolicy.sol";
22
+ import {IDistribution} from "./module/IDistribution.sol";
23
+ import {IPolicyService} from "./service/IPolicyService.sol";
11
24
  import {IPoolService} from "./service/IPoolService.sol";
12
25
  import {IProductService} from "./service/IProductService.sol";
13
- import {IBundle} from "./module/IBundle.sol";
26
+ import {IPolicyService} from "./service/IPolicyService.sol";
27
+ import {IBundleService} from "./service/IBundleService.sol";
28
+ import {IRisk} from "./module/IRisk.sol";
14
29
  import {ISetup} from "./module/ISetup.sol";
15
30
  import {NftId} from "../types/NftId.sol";
16
- import {StateId} from "../types/StateId.sol";
17
31
  import {RiskId} from "../types/RiskId.sol";
18
- import {IRisk} from "./module/IRisk.sol";
19
- import {IPolicy} from "./module/IPolicy.sol";
20
- import {IKeyValueStore} from "./base/IKeyValueStore.sol";
32
+ import {StateId} from "../types/StateId.sol";
33
+ import {VersionPart} from "../types/Version.sol";
34
+ import {Key32} from "../types/Key32.sol";
21
35
 
22
36
 
23
- interface IInstance is IERC165, IKeyValueStore {
24
37
 
25
- function getComponentOwnerService() external view returns (IComponentOwnerService);
38
+
39
+ interface IInstance is IRegisterable, IKeyValueStore, IAccessManaged {
40
+
26
41
  function getDistributionService() external view returns (IDistributionService);
27
42
  function getProductService() external view returns (IProductService);
28
43
  function getPoolService() external view returns (IPoolService);
44
+ function getPolicyService() external view returns (IPolicyService);
45
+ function getBundleService() external view returns (IBundleService);
29
46
 
30
47
  function createDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup) external;
31
48
  function updateDistributionSetup(NftId distributionNftId, ISetup.DistributionSetupInfo memory setup, StateId newState) external;
@@ -43,6 +60,18 @@ interface IInstance is IERC165, IKeyValueStore {
43
60
  function updateProductSetup(NftId productNftId, ISetup.ProductSetupInfo memory setup, StateId newState) external;
44
61
  function updateProductSetupState(NftId productNftId, StateId newState) external;
45
62
 
63
+ function createDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info) external;
64
+ function updateDistributorType(Key32 distributorKey, IDistribution.DistributorTypeInfo memory info, StateId newState) external;
65
+ function updateDistributorTypeState(Key32 distributorKey, StateId newState) external;
66
+
67
+ function createDistributor(NftId nftId, IDistribution.DistributorInfo memory info) external;
68
+ function updateDistributor(NftId nftId, IDistribution.DistributorInfo memory info, StateId newState) external;
69
+ function updateDistributorState(NftId nftId, StateId newState) external;
70
+
71
+ function createReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo) external;
72
+ function updateReferral(Key32 referralKey, IDistribution.ReferralInfo memory referralInfo, StateId newState) external;
73
+ function updateReferralState(Key32 referralKey, StateId newState) external;
74
+
46
75
  function createRisk(RiskId riskId, IRisk.RiskInfo memory risk) external;
47
76
  function updateRisk(RiskId riskId, IRisk.RiskInfo memory risk, StateId newState) external;
48
77
  function updateRiskState(RiskId riskId, StateId newState) external;
@@ -51,6 +80,7 @@ interface IInstance is IERC165, IKeyValueStore {
51
80
  function updatePolicy(NftId policyNftId, IPolicy.PolicyInfo memory policy, StateId newState) external;
52
81
  function updatePolicyState(NftId policyNftId, StateId newState) external;
53
82
 
83
+ function getMajorVersion() external pure returns (VersionPart majorVersion);
54
84
  function getInstanceReader() external view returns (InstanceReader);
55
85
  function getBundleManager() external view returns (BundleManager);
56
86
  }
@@ -8,27 +8,52 @@ import {IService} from "../shared/IService.sol";
8
8
  import {IRegistry} from "../registry/IRegistry.sol";
9
9
 
10
10
  import {IRegisterable} from "../shared/IRegisterable.sol";
11
- import {IBaseComponent} from "../components/IBaseComponent.sol";
11
+ import {IComponent} from "../components/IComponent.sol";
12
12
 
13
- import {AccessManagerUpgradeableInitializeable} from "./AccessManagerUpgradeableInitializeable.sol";
13
+ import {InstanceAccessManager} from "./InstanceAccessManager.sol";
14
14
  import {Instance} from "./Instance.sol";
15
15
  import {InstanceReader} from "./InstanceReader.sol";
16
16
  import {BundleManager} from "./BundleManager.sol";
17
17
 
18
18
  interface IInstanceService is IService {
19
19
 
20
- error ErrorInstanceServiceRequestUnauhorized(address caller);
20
+ error ErrorInstanceServiceMasterInstanceAlreadySet();
21
+ error ErrorInstanceServiceMasterInstanceAccessManagerAlreadySet();
22
+ error ErrorInstanceServiceMasterBundleManagerAlreadySet();
23
+ error ErrorInstanceServiceInstanceAddressZero();
24
+
25
+ error ErrorInstanceServiceMasterInstanceReaderNotSet();
26
+ error ErrorInstanceServiceInstanceReaderAddressZero();
27
+ error ErrorInstanceServiceInstanceReaderSameAsMasterInstanceReader();
28
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch();
29
+
30
+ error ErrorInstanceServiceAccessManagerZero();
31
+ error ErrorInstanceServiceInstanceReaderZero();
32
+ error ErrorInstanceServiceBundleManagerZero();
33
+
34
+ error ErrorInstanceServiceInstanceAuthorityMismatch();
35
+ error ErrorInstanceServiceInstanceReaderInstanceMismatch2();
36
+ error ErrorInstanceServiceBundleMangerInstanceMismatch();
21
37
 
38
+ error ErrorInstanceServiceRequestUnauhorized(address caller);
39
+ error ErrorInstanceServiceNotInstanceOwner(address caller, NftId instanceNftId);
40
+ error ErrorInstanceServiceComponentNotRegistered(address componentAddress);
41
+ error ErrorInstanceServiceInvalidComponentType(address componentAddress, ObjectType expectedType, ObjectType componentType);
42
+
22
43
  event LogInstanceCloned(address clonedAccessManagerAddress, address clonedInstanceAddress, address clonedInstanceReaderAddress, NftId clonedInstanceNftId);
23
44
 
24
45
  function createInstanceClone()
25
46
  external
26
47
  returns (
27
- AccessManagerUpgradeableInitializeable clonedAccessManager,
48
+ InstanceAccessManager clonedAccessManager,
28
49
  Instance clonedInstance,
29
50
  NftId instanceNftId,
30
51
  InstanceReader clonedInstanceReader,
31
52
  BundleManager clonedBundleManager
32
53
  );
54
+
55
+ function hasRole(address account, RoleId role, address instanceAddress) external returns (bool);
56
+ function setTargetLocked(string memory targetName, bool locked) external;
57
+
33
58
  }
34
59