@etherisc/gif-next 0.0.2-7f35518-483 → 0.0.2-7f39e38-904

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 (552) hide show
  1. package/README.md +71 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -554
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -176
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +458 -3052
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +504 -322
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +524 -352
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +331 -108
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +294 -361
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -0
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +257 -288
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +340 -195
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +434 -194
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +429 -261
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +322 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +499 -338
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +320 -140
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1151 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +352 -109
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +215 -205
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +625 -0
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +35 -0
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1435 -0
  182. package/artifacts/contracts/staking/IStakingManager.sol/IStakingManager.dbg.json +4 -0
  183. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → staking/IStakingManager.sol/IStakingManager.json} +10 -10
  184. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  185. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +884 -0
  186. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.dbg.json +4 -0
  187. package/artifacts/contracts/staking/IStakingStore.sol/IStakingStore.json +357 -0
  188. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +402 -0
  190. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  191. package/artifacts/contracts/staking/Staking.sol/Staking.json +2002 -0
  192. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +748 -0
  194. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  195. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +368 -0
  196. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1207 -0
  198. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  199. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +698 -0
  200. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +1690 -0
  202. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  203. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +494 -0
  204. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  206. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  208. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  209. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  210. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  212. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  214. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  216. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  217. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  218. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  220. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  221. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  222. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  224. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  226. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  228. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  230. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  232. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +174 -0
  234. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  236. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  238. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  240. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  242. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  244. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  246. package/contracts/distribution/Distribution.sol +263 -0
  247. package/contracts/distribution/DistributionService.sol +298 -0
  248. package/contracts/distribution/DistributionServiceManager.sol +54 -0
  249. package/contracts/distribution/IDistributionComponent.sol +66 -0
  250. package/contracts/distribution/IDistributionService.sol +81 -0
  251. package/contracts/instance/BundleManager.sol +126 -0
  252. package/contracts/instance/IInstance.sol +62 -24
  253. package/contracts/instance/IInstanceService.sol +66 -13
  254. package/contracts/instance/Instance.sol +151 -366
  255. package/contracts/instance/InstanceAccessManager.sol +432 -177
  256. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  257. package/contracts/instance/InstanceReader.sol +143 -83
  258. package/contracts/instance/InstanceService.sol +309 -124
  259. package/contracts/instance/InstanceServiceManager.sol +12 -24
  260. package/contracts/instance/InstanceStore.sol +260 -0
  261. package/contracts/instance/base/BalanceStore.sol +118 -0
  262. package/contracts/instance/base/Cloneable.sol +51 -0
  263. package/contracts/instance/base/ObjectManager.sol +82 -0
  264. package/contracts/instance/module/IAccess.sol +37 -21
  265. package/contracts/instance/module/IBundle.sol +8 -8
  266. package/contracts/instance/module/IComponents.sol +52 -0
  267. package/contracts/instance/module/IDistribution.sol +7 -4
  268. package/contracts/instance/module/IPolicy.sol +56 -17
  269. package/contracts/instance/module/IRisk.sol +1 -1
  270. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  271. package/contracts/pool/BundleService.sol +296 -0
  272. package/contracts/pool/BundleServiceManager.sol +42 -0
  273. package/contracts/pool/IBundleService.sol +106 -0
  274. package/contracts/pool/IPoolComponent.sol +112 -0
  275. package/contracts/pool/IPoolService.sol +147 -0
  276. package/contracts/pool/Pool.sol +299 -0
  277. package/contracts/pool/PoolService.sol +424 -0
  278. package/contracts/pool/PoolServiceManager.sol +42 -0
  279. package/contracts/product/ApplicationService.sol +254 -0
  280. package/contracts/product/ApplicationServiceManager.sol +38 -0
  281. package/contracts/product/ClaimService.sol +437 -0
  282. package/contracts/product/ClaimServiceManager.sol +38 -0
  283. package/contracts/product/IApplicationService.sol +62 -0
  284. package/contracts/product/IClaimService.sol +93 -0
  285. package/contracts/product/IPolicyService.sol +78 -0
  286. package/contracts/product/IPricingService.sol +39 -0
  287. package/contracts/product/IProductComponent.sol +42 -0
  288. package/contracts/product/IProductService.sol +33 -0
  289. package/contracts/product/PolicyService.sol +473 -0
  290. package/contracts/product/PolicyServiceManager.sol +42 -0
  291. package/contracts/product/PricingService.sol +301 -0
  292. package/contracts/product/PricingServiceManager.sol +42 -0
  293. package/contracts/product/Product.sol +377 -0
  294. package/contracts/product/ProductService.sol +124 -0
  295. package/contracts/product/ProductServiceManager.sol +42 -0
  296. package/contracts/registry/ChainNft.sol +14 -0
  297. package/contracts/registry/IRegistry.sol +76 -45
  298. package/contracts/registry/IRegistryService.sol +51 -16
  299. package/contracts/registry/ITransferInterceptor.sol +1 -0
  300. package/contracts/registry/Registry.sol +358 -269
  301. package/contracts/registry/RegistryAccessManager.sol +196 -0
  302. package/contracts/registry/RegistryService.sol +126 -259
  303. package/contracts/registry/RegistryServiceManager.sol +35 -43
  304. package/contracts/registry/ReleaseManager.sol +563 -0
  305. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  306. package/contracts/registry/TokenRegistry.sol +300 -57
  307. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  308. package/contracts/shared/Component.sol +286 -0
  309. package/contracts/shared/ComponentService.sol +595 -0
  310. package/contracts/shared/ComponentServiceManager.sol +35 -0
  311. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  312. package/contracts/shared/ERC165.sol +15 -13
  313. package/contracts/shared/IComponent.sol +74 -0
  314. package/contracts/shared/IComponentService.sol +91 -0
  315. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  316. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  317. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  318. package/contracts/shared/INftOwnable.sol +12 -11
  319. package/contracts/shared/IPolicyHolder.sol +45 -0
  320. package/contracts/shared/IRegisterable.sol +4 -6
  321. package/contracts/shared/IRegistryLinked.sol +11 -0
  322. package/contracts/shared/IService.sol +8 -5
  323. package/contracts/shared/IVersionable.sol +5 -48
  324. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  325. package/contracts/shared/KeyValueStore.sol +130 -0
  326. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  327. package/contracts/shared/NftIdSetManager.sol +65 -0
  328. package/contracts/shared/NftOwnable.sol +65 -83
  329. package/contracts/shared/PolicyHolder.sol +101 -0
  330. package/contracts/shared/ProxyManager.sol +126 -25
  331. package/contracts/shared/Registerable.sol +26 -41
  332. package/contracts/shared/RegistryLinked.sol +43 -0
  333. package/contracts/shared/Service.sol +47 -24
  334. package/contracts/shared/TokenHandler.sol +37 -6
  335. package/contracts/shared/Versionable.sol +4 -92
  336. package/contracts/staking/IStaking.sol +152 -0
  337. package/contracts/staking/IStakingManager.sol +15 -0
  338. package/contracts/staking/IStakingService.sol +162 -0
  339. package/contracts/staking/IStakingStore.sol +130 -0
  340. package/contracts/staking/StakeManagerLib.sol +156 -0
  341. package/contracts/staking/Staking.sol +502 -0
  342. package/contracts/staking/StakingManager.sol +65 -0
  343. package/contracts/staking/StakingReader.sol +147 -0
  344. package/contracts/staking/StakingService.sol +375 -0
  345. package/contracts/staking/StakingServiceManager.sol +44 -0
  346. package/contracts/staking/StakingStore.sol +329 -0
  347. package/contracts/staking/TargetManagerLib.sol +179 -0
  348. package/contracts/{types → type}/AddressSet.sol +1 -1
  349. package/contracts/type/Amount.sol +114 -0
  350. package/contracts/{types → type}/Blocknumber.sol +21 -3
  351. package/contracts/type/ClaimId.sol +75 -0
  352. package/contracts/{types → type}/DistributorType.sol +2 -2
  353. package/contracts/{types → type}/Fee.sol +33 -23
  354. package/contracts/{types → type}/NftId.sol +18 -12
  355. package/contracts/type/NftIdSet.sol +62 -0
  356. package/contracts/{types → type}/ObjectType.sol +26 -9
  357. package/contracts/type/PayoutId.sol +82 -0
  358. package/contracts/{types → type}/Referral.sol +5 -1
  359. package/contracts/{types → type}/RiskId.sol +1 -1
  360. package/contracts/type/RoleId.sol +143 -0
  361. package/contracts/type/Seconds.sol +71 -0
  362. package/contracts/{types → type}/StateId.sol +24 -6
  363. package/contracts/{types → type}/Timestamp.sol +18 -13
  364. package/contracts/{types → type}/UFixed.sol +1 -0
  365. package/contracts/{types → type}/Version.sol +2 -1
  366. package/package.json +3 -3
  367. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  368. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  369. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
  370. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  371. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  372. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  373. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
  374. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  375. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  376. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  377. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  378. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  379. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
  380. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  381. package/artifacts/contracts/components/Product.sol/Product.json +0 -775
  382. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  384. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  386. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  388. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  390. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  391. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  392. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  393. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  394. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  395. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  396. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  397. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  398. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  399. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  400. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  401. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  402. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  403. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  405. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  407. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  408. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  409. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  410. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  411. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  412. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  413. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  414. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  415. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  416. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  417. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  418. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  419. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  420. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  421. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  422. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  423. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  424. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  425. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  426. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  427. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  428. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  429. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  430. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  431. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  432. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  433. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  434. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  435. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  436. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  437. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  438. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  440. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -681
  442. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
  444. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  445. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  447. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  448. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  450. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -820
  451. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  452. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
  453. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  454. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  455. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  456. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  457. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  458. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  459. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  460. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  461. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  462. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  463. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  464. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  465. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  466. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  467. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  468. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  469. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  470. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  471. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  472. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  473. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  474. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  476. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  477. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  478. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  479. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  481. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  482. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  483. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  484. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  485. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  486. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  488. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  491. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  492. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  494. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  496. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  498. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  499. package/contracts/components/BaseComponent.sol +0 -91
  500. package/contracts/components/Distribution.sol +0 -166
  501. package/contracts/components/IBaseComponent.sol +0 -25
  502. package/contracts/components/IDistributionComponent.sol +0 -46
  503. package/contracts/components/IPoolComponent.sol +0 -62
  504. package/contracts/components/IProductComponent.sol +0 -35
  505. package/contracts/components/Pool.sol +0 -247
  506. package/contracts/components/Product.sol +0 -297
  507. package/contracts/experiment/cloning/Cloner.sol +0 -47
  508. package/contracts/experiment/errors/Require.sol +0 -38
  509. package/contracts/experiment/errors/Revert.sol +0 -44
  510. package/contracts/experiment/inheritance/A.sol +0 -53
  511. package/contracts/experiment/inheritance/B.sol +0 -28
  512. package/contracts/experiment/inheritance/C.sol +0 -34
  513. package/contracts/experiment/inheritance/IA.sol +0 -13
  514. package/contracts/experiment/inheritance/IB.sol +0 -10
  515. package/contracts/experiment/inheritance/IC.sol +0 -12
  516. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  517. package/contracts/experiment/statemachine/ISM.sol +0 -25
  518. package/contracts/experiment/statemachine/SM.sol +0 -57
  519. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  520. package/contracts/experiment/types/TypeA.sol +0 -47
  521. package/contracts/experiment/types/TypeB.sol +0 -29
  522. package/contracts/instance/AccessManagedSimple.sol +0 -115
  523. package/contracts/instance/AccessManagerSimple.sol +0 -692
  524. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  525. package/contracts/instance/base/ComponentServiceBase.sol +0 -60
  526. package/contracts/instance/base/IInstanceBase.sol +0 -23
  527. package/contracts/instance/base/KeyValueStore.sol +0 -172
  528. package/contracts/instance/module/ISetup.sol +0 -44
  529. package/contracts/instance/module/ITreasury.sol +0 -23
  530. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  531. package/contracts/instance/service/DistributionService.sol +0 -99
  532. package/contracts/instance/service/DistributionServiceManager.sol +0 -53
  533. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  534. package/contracts/instance/service/IDistributionService.sol +0 -12
  535. package/contracts/instance/service/IPoolService.sol +0 -37
  536. package/contracts/instance/service/IProductService.sol +0 -107
  537. package/contracts/instance/service/PoolService.sol +0 -205
  538. package/contracts/instance/service/PoolServiceManager.sol +0 -53
  539. package/contracts/shared/ContractDeployerLib.sol +0 -72
  540. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  541. package/contracts/test/TestFee.sol +0 -25
  542. package/contracts/test/TestRegisterable.sol +0 -18
  543. package/contracts/test/TestRoleId.sol +0 -14
  544. package/contracts/test/TestService.sol +0 -24
  545. package/contracts/test/TestToken.sol +0 -26
  546. package/contracts/test/TestVersion.sol +0 -44
  547. package/contracts/test/TestVersionable.sol +0 -17
  548. package/contracts/types/ChainId.sol +0 -38
  549. package/contracts/types/NftIdSet.sol +0 -60
  550. package/contracts/types/NumberId.sol +0 -52
  551. package/contracts/types/RoleId.sol +0 -89
  552. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,595 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Amount, AmountLib} from "../type/Amount.sol";
5
+ import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
+ import {Fee, FeeLib} from "../type/Fee.sol";
7
+ import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
8
+ import {IRegistry} from "../registry/IRegistry.sol";
9
+ import {IRegistryService} from "../registry/IRegistryService.sol";
10
+ import {IInstance} from "../instance/IInstance.sol";
11
+ import {IAccess} from "../instance/module/IAccess.sol";
12
+ import {NftId} from "../type/NftId.sol";
13
+ import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
+ import {RoleId, DISTRIBUTION_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_ROLE, POLICY_SERVICE_ROLE, PRODUCT_SERVICE_ROLE} from "../type/RoleId.sol";
15
+ import {KEEP_STATE} from "../type/StateId.sol";
16
+ import {IComponents} from "../instance/module/IComponents.sol";
17
+ import {IComponentService} from "./IComponentService.sol";
18
+ import {IDistributionComponent} from "../distribution/IDistributionComponent.sol";
19
+ import {IInstanceService} from "../instance/IInstanceService.sol";
20
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
21
+ import {IProductComponent} from "../product/IProductComponent.sol";
22
+ import {InstanceReader} from "../instance/InstanceReader.sol";
23
+ import {InstanceStore} from "../instance/InstanceStore.sol";
24
+ import {TokenHandler} from "./TokenHandler.sol";
25
+
26
+ contract ComponentService is
27
+ ComponentVerifyingService,
28
+ IComponentService
29
+ {
30
+
31
+ error ErrorComponentServiceAlreadyRegistered(address component);
32
+ error ErrorComponentServiceNotComponent(address component);
33
+ error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
34
+ error ErrorComponentServiceSenderNotOwner(address component, address initialOwner, address sender);
35
+ error ErrorComponentServiceExpectedRoleMissing(NftId instanceNftId, RoleId requiredRole, address sender);
36
+ error ErrorComponentServiceComponentLocked(address component);
37
+ error ErrorComponentServiceSenderNotService(address sender);
38
+ error ErrorComponentServiceComponentTypeInvalid(address component, ObjectType expectedType, ObjectType foundType);
39
+
40
+ bool private constant INCREASE = true;
41
+ bool private constant DECREASE = false;
42
+
43
+ IRegistryService private _registryService;
44
+ IInstanceService private _instanceService;
45
+
46
+ function _initialize(
47
+ address owner,
48
+ bytes memory data
49
+ )
50
+ internal
51
+ virtual override
52
+ initializer()
53
+ {
54
+ // TODO check this, might no longer be the way, refactor if necessary
55
+ address registryAddress;
56
+ address initialOwner;
57
+ (registryAddress, initialOwner) = abi.decode(data, (address, address));
58
+
59
+ initializeService(registryAddress, address(0), owner);
60
+
61
+ _registryService = IRegistryService(_getServiceAddress(REGISTRY()));
62
+ _instanceService = IInstanceService(_getServiceAddress(INSTANCE()));
63
+
64
+ registerInterface(type(IComponentService).interfaceId);
65
+ }
66
+
67
+
68
+ function getDomain() public pure virtual override returns(ObjectType) {
69
+ return COMPONENT();
70
+ }
71
+
72
+ //-------- component ----------------------------------------------------//
73
+
74
+ function setWallet(address newWallet) external virtual {
75
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
76
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
77
+ address currentWallet = info.wallet;
78
+
79
+ if (newWallet == address(0)) {
80
+ revert ErrorComponentServiceNewWalletAddressZero();
81
+ }
82
+
83
+ if (currentWallet == address(0)) {
84
+ revert ErrorComponentServiceWalletAddressZero();
85
+ }
86
+
87
+ if (newWallet == currentWallet) {
88
+ revert ErrorComponentServiceWalletAddressIsSameAsCurrent();
89
+ }
90
+
91
+ info.wallet = newWallet;
92
+ instance.getInstanceStore().updateComponent(componentNftId, info, KEEP_STATE());
93
+ emit LogComponentServiceWalletAddressChanged(componentNftId, currentWallet, newWallet);
94
+ }
95
+
96
+ // TODO implement
97
+ function lock() external virtual {}
98
+
99
+ // TODO implement
100
+ function unlock() external virtual {}
101
+
102
+
103
+ //-------- product ------------------------------------------------------//
104
+
105
+ function registerProduct()
106
+ external
107
+ virtual
108
+ {
109
+ address contractAddress = msg.sender;
110
+ RoleId[] memory roles = new RoleId[](1);
111
+ bytes4[][] memory selectors = new bytes4[][](1);
112
+
113
+ // authorizaion for distribution owner
114
+ roles[0] = PRODUCT_OWNER_ROLE();
115
+ selectors[0] = _createSelectors(IProductComponent.setFees.selector);
116
+
117
+ // register/create component setup
118
+ (
119
+ InstanceReader instanceReader,
120
+ InstanceStore instanceStore,
121
+ NftId productNftId
122
+ ) = _register(
123
+ contractAddress,
124
+ PRODUCT(),
125
+ PRODUCT_OWNER_ROLE(),
126
+ roles,
127
+ selectors);
128
+
129
+ // create product info
130
+ IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
131
+ instanceStore.createProduct(productNftId, productInfo);
132
+
133
+ // link distribution and pool to product
134
+ _linkToProduct(instanceReader, instanceStore, productInfo.distributionNftId, productNftId);
135
+ _linkToProduct(instanceReader, instanceStore, productInfo.poolNftId, productNftId);
136
+ }
137
+
138
+
139
+ function setProductFees(
140
+ Fee memory productFee, // product fee on net premium
141
+ Fee memory processingFee // product fee on payout amounts
142
+ )
143
+ external
144
+ virtual
145
+ {
146
+ (NftId productNftId,, IInstance instance) = _getAndVerifyActiveComponent(PRODUCT());
147
+ IComponents.ProductInfo memory productInfo = instance.getInstanceReader().getProductInfo(productNftId);
148
+ bool feesChanged = false;
149
+
150
+ // update product fee if required
151
+ if(!FeeLib.eq(productInfo.productFee, productFee)) {
152
+ _logUpdateFee(productNftId, "ProductFee", productInfo.productFee, productFee);
153
+ productInfo.productFee = productFee;
154
+ feesChanged = true;
155
+ }
156
+
157
+ // update processing fee if required
158
+ if(!FeeLib.eq(productInfo.processingFee, processingFee)) {
159
+ _logUpdateFee(productNftId, "ProcessingFee", productInfo.processingFee, processingFee);
160
+ productInfo.processingFee = processingFee;
161
+ feesChanged = true;
162
+ }
163
+
164
+ if(feesChanged) {
165
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
166
+ emit LogComponentServiceProductFeesUpdated(productNftId);
167
+ }
168
+ }
169
+
170
+ function increaseProductFees(
171
+ InstanceStore instanceStore,
172
+ NftId productNftId,
173
+ Amount feeAmount
174
+ )
175
+ external
176
+ virtual
177
+ // TODO re-enable once role granting is stable and fixed
178
+ // restricted()
179
+ {
180
+ _changeTargetBalance(INCREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
181
+ }
182
+
183
+
184
+ function decreaseProductFees(InstanceStore instanceStore, NftId productNftId, Amount feeAmount)
185
+ external
186
+ virtual
187
+ // TODO re-enable once role granting is stable and fixed
188
+ // restricted()
189
+ {
190
+ _changeTargetBalance(DECREASE, instanceStore, productNftId, AmountLib.zero(), feeAmount);
191
+ }
192
+
193
+ //-------- distribution -------------------------------------------------//
194
+
195
+ /// @dev registers the sending component as a distribution component
196
+ function registerDistribution()
197
+ external
198
+ virtual
199
+ {
200
+ address contractAddress = msg.sender;
201
+ RoleId[] memory roles = new RoleId[](2);
202
+ bytes4[][] memory selectors = new bytes4[][](2);
203
+
204
+ // authorizaion for distribution owner
205
+ roles[0] = DISTRIBUTION_OWNER_ROLE();
206
+ selectors[0] = _createSelectors(IDistributionComponent.setFees.selector);
207
+
208
+ // authorizaion for product service
209
+ roles[1] = PRODUCT_SERVICE_ROLE();
210
+ selectors[1] = _createSelectors(IDistributionComponent.processRenewal.selector);
211
+
212
+ // register/create component info
213
+ _register(
214
+ contractAddress,
215
+ DISTRIBUTION(),
216
+ DISTRIBUTION_OWNER_ROLE(),
217
+ roles,
218
+ selectors);
219
+ }
220
+
221
+
222
+ function setDistributionFees(
223
+ Fee memory distributionFee, // distribution fee for sales that do not include commissions
224
+ Fee memory minDistributionOwnerFee // min fee required by distribution owner (not including commissions for distributors)
225
+ )
226
+ external
227
+ virtual
228
+ {
229
+ (NftId distributionNftId,, IInstance instance) = _getAndVerifyActiveComponent(DISTRIBUTION());
230
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
231
+ instance.getInstanceReader(), distributionNftId);
232
+ bool feesChanged = false;
233
+
234
+ // update distributino fee if required
235
+ if(!FeeLib.eq(productInfo.distributionFee, distributionFee)) {
236
+ _logUpdateFee(productNftId, "DistributionFee", productInfo.distributionFee, distributionFee);
237
+ productInfo.distributionFee = distributionFee;
238
+ feesChanged = true;
239
+ }
240
+
241
+ // update min distribution owner fee if required
242
+ if(!FeeLib.eq(productInfo.minDistributionOwnerFee, minDistributionOwnerFee)) {
243
+ _logUpdateFee(productNftId, "MinDistributionOwnerFee", productInfo.minDistributionOwnerFee, minDistributionOwnerFee);
244
+ productInfo.minDistributionOwnerFee = minDistributionOwnerFee;
245
+ feesChanged = true;
246
+ }
247
+
248
+ if(feesChanged) {
249
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
250
+ emit LogComponentServiceDistributionFeesUpdated(distributionNftId);
251
+ }
252
+ }
253
+
254
+ function increaseDistributionBalance(
255
+ InstanceStore instanceStore,
256
+ NftId distributionNftId,
257
+ Amount amount,
258
+ Amount feeAmount
259
+ )
260
+ external
261
+ virtual
262
+ // TODO re-enable once role granting is stable and fixed
263
+ // restricted()
264
+ {
265
+ _changeTargetBalance(INCREASE, instanceStore, distributionNftId, amount, feeAmount);
266
+ }
267
+
268
+
269
+ function decreaseDistributionBalance(
270
+ InstanceStore instanceStore,
271
+ NftId distributionNftId,
272
+ Amount amount,
273
+ Amount feeAmount
274
+ )
275
+ external
276
+ virtual
277
+ // TODO re-enable once role granting is stable and fixed
278
+ // restricted()
279
+ {
280
+ _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
281
+ }
282
+
283
+ //-------- pool ---------------------------------------------------------//
284
+
285
+ /// @dev registers the sending component as a distribution component
286
+ function registerPool()
287
+ external
288
+ virtual
289
+ {
290
+ address contractAddress = msg.sender;
291
+ RoleId[] memory roles = new RoleId[](2);
292
+ bytes4[][] memory selectors = new bytes4[][](2);
293
+
294
+ // authorizaion for distribution owner
295
+ roles[0] = POOL_OWNER_ROLE();
296
+ selectors[0] = _createSelectors(IPoolComponent.setFees.selector);
297
+
298
+ // authorizaion for product service
299
+ roles[1] = POLICY_SERVICE_ROLE();
300
+ selectors[1] = _createSelectors(IPoolComponent.verifyApplication.selector);
301
+
302
+ // register/create component setup
303
+ (
304
+ , // instance reader
305
+ InstanceStore instanceStore,
306
+ NftId componentNftId
307
+ ) = _register(
308
+ contractAddress,
309
+ POOL(),
310
+ POOL_OWNER_ROLE(),
311
+ roles,
312
+ selectors);
313
+
314
+ // create info
315
+ instanceStore.createPool(
316
+ componentNftId,
317
+ IPoolComponent(contractAddress).getInitialPoolInfo());
318
+ }
319
+
320
+
321
+ function setPoolFees(
322
+ Fee memory poolFee, // pool fee on net premium
323
+ Fee memory stakingFee, // pool fee on staked capital from investor
324
+ Fee memory performanceFee // pool fee on profits from capital investors
325
+ )
326
+ external
327
+ virtual
328
+ {
329
+ (NftId poolNftId,, IInstance instance) = _getAndVerifyActiveComponent(POOL());
330
+ (NftId productNftId, IComponents.ProductInfo memory productInfo) = _getLinkedProductInfo(
331
+ instance.getInstanceReader(), poolNftId);
332
+ bool feesChanged = false;
333
+
334
+ // update pool fee if required
335
+ if(!FeeLib.eq(productInfo.poolFee, poolFee)) {
336
+ _logUpdateFee(productNftId, "PoolFee", productInfo.poolFee, poolFee);
337
+ productInfo.poolFee = poolFee;
338
+ feesChanged = true;
339
+ }
340
+
341
+ // update staking fee if required
342
+ if(!FeeLib.eq(productInfo.stakingFee, stakingFee)) {
343
+ _logUpdateFee(productNftId, "StakingFee", productInfo.stakingFee, stakingFee);
344
+ productInfo.stakingFee = stakingFee;
345
+ feesChanged = true;
346
+ }
347
+
348
+ // update performance fee if required
349
+ if(!FeeLib.eq(productInfo.performanceFee, performanceFee)) {
350
+ _logUpdateFee(productNftId, "PerformanceFee", productInfo.performanceFee, performanceFee);
351
+ productInfo.performanceFee = performanceFee;
352
+ feesChanged = true;
353
+ }
354
+
355
+ if(feesChanged) {
356
+ instance.getInstanceStore().updateProduct(productNftId, productInfo, KEEP_STATE());
357
+ emit LogComponentServicePoolFeesUpdated(poolNftId);
358
+ }
359
+ }
360
+
361
+ function increasePoolBalance(
362
+ InstanceStore instanceStore,
363
+ NftId poolNftId,
364
+ Amount amount,
365
+ Amount feeAmount
366
+ )
367
+ public
368
+ virtual
369
+ // TODO re-enable once role granting is stable and fixed
370
+ // restricted()
371
+ {
372
+ _changeTargetBalance(INCREASE, instanceStore, poolNftId, amount, feeAmount);
373
+ }
374
+
375
+ function decreasePoolBalance(
376
+ InstanceStore instanceStore,
377
+ NftId poolNftId,
378
+ Amount amount,
379
+ Amount feeAmount
380
+ )
381
+ public
382
+ virtual
383
+ // TODO re-enable once role granting is stable and fixed
384
+ // restricted()
385
+ {
386
+ _changeTargetBalance(DECREASE, instanceStore, poolNftId, amount, feeAmount);
387
+ }
388
+
389
+ //-------- bundle -------------------------------------------------------//
390
+
391
+ function increaseBundleBalance(
392
+ InstanceStore instanceStore,
393
+ NftId bundleNftId,
394
+ Amount amount,
395
+ Amount feeAmount
396
+ )
397
+ external
398
+ virtual
399
+ // TODO re-enable once role granting is stable and fixed
400
+ // restricted()
401
+ {
402
+ _changeTargetBalance(INCREASE, instanceStore, bundleNftId, amount, feeAmount);
403
+ }
404
+
405
+ function decreaseBundleBalance(
406
+ InstanceStore instanceStore,
407
+ NftId bundleNftId,
408
+ Amount amount,
409
+ Amount feeAmount
410
+ )
411
+ external
412
+ virtual
413
+ // TODO re-enable once role granting is stable and fixed
414
+ // restricted()
415
+ {
416
+ _changeTargetBalance(DECREASE, instanceStore, bundleNftId, amount, feeAmount);
417
+ }
418
+
419
+
420
+ //-------- internal functions ------------------------------------------//
421
+
422
+ function _changeTargetBalance(
423
+ bool increase,
424
+ InstanceStore instanceStore,
425
+ NftId targetNftId,
426
+ Amount amount,
427
+ Amount feeAmount
428
+ )
429
+ internal
430
+ virtual
431
+ {
432
+ Amount totalAmount = amount + feeAmount;
433
+
434
+ if(increase) {
435
+ if(totalAmount.gtz()) { instanceStore.increaseBalance(targetNftId, totalAmount); }
436
+ if(feeAmount.gtz()) { instanceStore.increaseFees(targetNftId, feeAmount); }
437
+ } else {
438
+ if(totalAmount.gtz()) { instanceStore.decreaseBalance(targetNftId, totalAmount); }
439
+ if(feeAmount.gtz()) { instanceStore.decreaseFees(targetNftId, feeAmount); }
440
+ }
441
+ }
442
+
443
+ /// @dev registers the component represented by the provided address
444
+ function _register(
445
+ address componentAddress, // address of component to register
446
+ ObjectType requiredType, // required type for component for registration
447
+ RoleId requiredRole, // role required for comonent owner for registration
448
+ RoleId[] memory roles, // roles with write access to component
449
+ bytes4[][] memory selectors // authorized functions per role with write access
450
+ )
451
+ internal
452
+ virtual
453
+ returns (
454
+ InstanceReader instanceReader,
455
+ InstanceStore instanceStore,
456
+ NftId componentNftId
457
+ )
458
+ {
459
+ (
460
+ IInstance instance,
461
+ IInstanceLinkedComponent component,
462
+ address owner
463
+ ) = _getAndVerifyRegisterableComponent(
464
+ componentAddress,
465
+ requiredType,
466
+ requiredRole);
467
+
468
+ // register component with registry
469
+ componentNftId = _registryService.registerComponent(
470
+ component,
471
+ requiredType,
472
+ owner).nftId;
473
+
474
+ component.linkToRegisteredNftId();
475
+
476
+ // save amended component info with instance
477
+ instanceReader = instance.getInstanceReader();
478
+ instanceStore = instance.getInstanceStore();
479
+
480
+ IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
481
+ componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
482
+ instanceStore.createComponent(component.getNftId(), componentInfo);
483
+
484
+ // configure instance authorization
485
+ _instanceService.createComponentTarget(
486
+ instance.getNftId(),
487
+ componentAddress,
488
+ component.getName(),
489
+ selectors,
490
+ roles);
491
+ }
492
+
493
+
494
+ /// @dev link the component info corresponding to the componentNftId to the provided productNftId
495
+ function _linkToProduct(
496
+ InstanceReader instanceReader,
497
+ InstanceStore instanceStore,
498
+ NftId componentNftId,
499
+ NftId productNftId
500
+ )
501
+ internal
502
+ {
503
+ // only link components that are registered
504
+ if(componentNftId.eqz()) {
505
+ return;
506
+ }
507
+
508
+ IComponents.ComponentInfo memory componentInfo = instanceReader.getComponentInfo(componentNftId);
509
+ componentInfo.productNftId = productNftId;
510
+ instanceStore.updateComponent(componentNftId, componentInfo, KEEP_STATE());
511
+ }
512
+
513
+
514
+ function _logUpdateFee(NftId productNftId, string memory name, Fee memory feeBefore, Fee memory feeAfter)
515
+ internal
516
+ virtual
517
+ {
518
+ emit LogComponentServiceUpdateFee(
519
+ productNftId,
520
+ name,
521
+ feeBefore.fractionalFee,
522
+ feeBefore.fixedFee,
523
+ feeAfter.fractionalFee,
524
+ feeAfter.fixedFee
525
+ );
526
+ }
527
+
528
+
529
+ function _createSelectors(bytes4 selector) internal view returns (bytes4[] memory selectors) {
530
+ selectors = new bytes4[](1);
531
+ selectors[0] = selector;
532
+ }
533
+
534
+
535
+ function _getLinkedProductInfo(
536
+ InstanceReader instanceReader,
537
+ NftId componentNftId
538
+ )
539
+ internal
540
+ view
541
+ returns(
542
+ NftId productNftId,
543
+ IComponents.ProductInfo memory info
544
+ )
545
+ {
546
+ productNftId = instanceReader.getComponentInfo(componentNftId).productNftId;
547
+ info = instanceReader.getProductInfo(productNftId);
548
+ }
549
+
550
+
551
+ /// @dev based on the provided component address required type and role returns the component and related instance contract
552
+ /// the function reverts iff:
553
+ /// - the component has already been registered
554
+ /// - the component contract does not support IInstanceLinkedComponent
555
+ /// - the component type does not match with the required type
556
+ /// - the initial component owner misses the required role (with the instance access manager)
557
+ function _getAndVerifyRegisterableComponent(
558
+ address componentAddress,
559
+ ObjectType requiredType,
560
+ RoleId requiredRole
561
+ )
562
+ internal
563
+ // view
564
+ returns (
565
+ IInstance instance,
566
+ IInstanceLinkedComponent component,
567
+ address owner
568
+ )
569
+ {
570
+ // check component has not already been registered
571
+ if (getRegistry().getNftId(componentAddress).gtz()) {
572
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
573
+ }
574
+
575
+ // check this is a component
576
+ component = IInstanceLinkedComponent(componentAddress);
577
+ if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
578
+ revert ErrorComponentServiceNotComponent(componentAddress);
579
+ }
580
+
581
+ // check component is of required type
582
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
583
+ if(info.objectType != requiredType) {
584
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
585
+ }
586
+
587
+ // check instance has assigned required role to inital owner
588
+ instance = _getInstance(info.parentNftId);
589
+ owner = info.initialOwner;
590
+
591
+ if(!instance.getInstanceAccessManager().hasRole(requiredRole, owner)) {
592
+ revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
593
+ }
594
+ }
595
+ }
@@ -0,0 +1,35 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IVersionable} from "./IVersionable.sol";
5
+ import {ProxyManager} from "./ProxyManager.sol";
6
+ import {ComponentService} from "./ComponentService.sol";
7
+
8
+ contract ComponentServiceManager is ProxyManager {
9
+
10
+ ComponentService private _componentService;
11
+
12
+ /// @dev initializes proxy manager with service implementation
13
+ constructor(
14
+ address registryAddress
15
+ )
16
+ ProxyManager(registryAddress)
17
+ {
18
+ ComponentService svc = new ComponentService();
19
+ bytes memory data = abi.encode(registryAddress, address(this));
20
+ IVersionable versionable = deploy(
21
+ address(svc),
22
+ data);
23
+
24
+ _componentService = ComponentService(address(versionable));
25
+ }
26
+
27
+ //--- view functions ----------------------------------------------------//
28
+ function getComponentService()
29
+ external
30
+ view
31
+ returns (ComponentService)
32
+ {
33
+ return _componentService;
34
+ }
35
+ }