@etherisc/gif-next 0.0.2-ce87da3-250 → 0.0.2-cf22d7b-845

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 (525) hide show
  1. package/README.md +8 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +322 -252
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +249 -174
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +266 -91
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +68 -54
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +315 -2127
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +219 -78
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +456 -2872
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +204 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +601 -422
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +287 -280
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -78
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3458 -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/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  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 +25 -150
  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 +1105 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +278 -221
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +480 -213
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +527 -284
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service → product}/IApplicationService.sol/IApplicationService.json +124 -98
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +266 -142
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/{components → product}/IProductComponent.sol/IProductComponent.json +408 -219
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +75 -72
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/{components → product}/Product.sol/Product.json +433 -282
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -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 +188 -19
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -85
  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 +425 -34
  108. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +344 -106
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +93 -54
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
  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 +316 -153
  120. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  122. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  123. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  124. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  125. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  126. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  130. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  131. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +209 -166
  132. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  133. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1475 -0
  134. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +788 -0
  136. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  137. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +96 -122
  138. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  140. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  144. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  145. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +222 -104
  146. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  147. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +860 -0
  148. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  149. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  150. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  151. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  152. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  153. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  154. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  155. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  156. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  157. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  158. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  159. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  160. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  161. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  162. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/IService.sol/IService.json +91 -27
  164. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  165. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  166. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  167. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  168. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  169. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  170. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  171. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  172. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  173. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  174. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  175. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  177. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  178. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  179. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  180. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  181. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  182. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +24 -23
  183. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  184. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  185. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  186. package/artifacts/contracts/shared/Service.sol/Service.json +99 -30
  187. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  188. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  189. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  190. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  191. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  192. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  193. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  194. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  195. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  196. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  197. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  198. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  199. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  200. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  201. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  202. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  203. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  204. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  205. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  206. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  207. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  208. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  210. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  211. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  212. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  214. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  215. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  216. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  217. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  218. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  220. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  221. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  222. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  223. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  224. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  225. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  226. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  228. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  230. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  232. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  233. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  234. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  236. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  238. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  240. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  242. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  243. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  244. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  245. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  246. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  248. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  249. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  250. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  252. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  254. package/contracts/{components → distribution}/Distribution.sol +49 -75
  255. package/contracts/distribution/DistributionService.sol +298 -0
  256. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  257. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -37
  258. package/contracts/{instance/service → distribution}/IDistributionService.sol +25 -25
  259. package/contracts/instance/BundleManager.sol +15 -14
  260. package/contracts/instance/IInstance.sol +53 -66
  261. package/contracts/instance/IInstanceService.sol +40 -18
  262. package/contracts/instance/Instance.sol +139 -195
  263. package/contracts/instance/InstanceAdmin.sol +331 -0
  264. package/contracts/instance/InstanceAuthorizationsLib.sol +349 -0
  265. package/contracts/instance/InstanceReader.sol +135 -63
  266. package/contracts/instance/InstanceService.sol +226 -340
  267. package/contracts/instance/InstanceServiceManager.sol +11 -21
  268. package/contracts/instance/InstanceStore.sol +260 -0
  269. package/contracts/instance/base/BalanceStore.sol +118 -0
  270. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  271. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +12 -14
  272. package/contracts/instance/module/IAccess.sol +19 -20
  273. package/contracts/instance/module/IBundle.sol +8 -8
  274. package/contracts/instance/module/{ISetup.sol → IComponents.sol} +24 -20
  275. package/contracts/instance/module/IDistribution.sol +7 -5
  276. package/contracts/instance/module/IPolicy.sol +53 -16
  277. package/contracts/instance/module/IRisk.sol +1 -1
  278. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  279. package/contracts/pool/BundleService.sol +296 -0
  280. package/contracts/pool/BundleServiceManager.sol +42 -0
  281. package/contracts/pool/IBundleService.sol +106 -0
  282. package/contracts/pool/IPoolComponent.sol +112 -0
  283. package/contracts/pool/IPoolService.sol +150 -0
  284. package/contracts/pool/Pool.sol +299 -0
  285. package/contracts/pool/PoolService.sol +453 -0
  286. package/contracts/pool/PoolServiceManager.sol +42 -0
  287. package/contracts/product/ApplicationService.sol +254 -0
  288. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  289. package/contracts/product/ClaimService.sol +442 -0
  290. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  291. package/contracts/{instance/service → product}/IApplicationService.sol +16 -36
  292. package/contracts/product/IClaimService.sol +93 -0
  293. package/contracts/{instance/service → product}/IPolicyService.sol +37 -48
  294. package/contracts/product/IPricingService.sol +39 -0
  295. package/contracts/product/IProductComponent.sol +42 -0
  296. package/contracts/product/IProductService.sol +33 -0
  297. package/contracts/product/PolicyService.sol +475 -0
  298. package/contracts/product/PolicyServiceManager.sol +42 -0
  299. package/contracts/product/PricingService.sol +301 -0
  300. package/contracts/product/PricingServiceManager.sol +42 -0
  301. package/contracts/product/Product.sol +377 -0
  302. package/contracts/product/ProductService.sol +124 -0
  303. package/contracts/product/ProductServiceManager.sol +42 -0
  304. package/contracts/registry/ChainNft.sol +16 -1
  305. package/contracts/registry/IRegistry.sol +46 -21
  306. package/contracts/registry/IRegistryService.sol +39 -37
  307. package/contracts/registry/ITransferInterceptor.sol +1 -0
  308. package/contracts/registry/Registry.sol +208 -96
  309. package/contracts/registry/RegistryAdmin.sol +237 -0
  310. package/contracts/registry/RegistryService.sol +69 -86
  311. package/contracts/registry/RegistryServiceManager.sol +21 -25
  312. package/contracts/registry/ReleaseManager.sol +458 -181
  313. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  314. package/contracts/registry/TokenRegistry.sol +261 -62
  315. package/contracts/shared/AccessManagerCustom.sol +736 -0
  316. package/contracts/shared/AccessManagerExtended.sol +470 -0
  317. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  318. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  319. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  320. package/contracts/shared/Component.sol +278 -0
  321. package/contracts/shared/ComponentService.sol +596 -0
  322. package/contracts/shared/ComponentServiceManager.sol +35 -0
  323. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  324. package/contracts/shared/ERC165.sol +1 -1
  325. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  326. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  327. package/contracts/shared/IComponent.sol +70 -0
  328. package/contracts/shared/IComponentService.sol +91 -0
  329. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  330. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  331. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  332. package/contracts/shared/INftOwnable.sol +2 -2
  333. package/contracts/shared/IPolicyHolder.sol +29 -10
  334. package/contracts/shared/IRegistryLinked.sol +0 -1
  335. package/contracts/shared/IService.sol +7 -7
  336. package/contracts/shared/IVersionable.sol +1 -1
  337. package/contracts/shared/InitializableCustom.sol +177 -0
  338. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  339. package/contracts/shared/KeyValueStore.sol +127 -0
  340. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  341. package/contracts/shared/NftIdSetManager.sol +65 -0
  342. package/contracts/shared/NftOwnable.sol +3 -16
  343. package/contracts/shared/PolicyHolder.sol +40 -19
  344. package/contracts/shared/ProxyManager.sol +34 -4
  345. package/contracts/shared/Registerable.sol +15 -14
  346. package/contracts/shared/RegistryLinked.sol +0 -5
  347. package/contracts/shared/Service.sol +29 -10
  348. package/contracts/shared/TokenHandler.sol +37 -6
  349. package/contracts/shared/Versionable.sol +1 -1
  350. package/contracts/staking/IStaking.sol +168 -0
  351. package/contracts/staking/IStakingService.sol +149 -0
  352. package/contracts/staking/StakeManagerLib.sol +179 -0
  353. package/contracts/staking/Staking.sol +551 -0
  354. package/contracts/staking/StakingManager.sol +54 -0
  355. package/contracts/staking/StakingReader.sol +187 -0
  356. package/contracts/staking/StakingService.sol +406 -0
  357. package/contracts/staking/StakingServiceManager.sol +45 -0
  358. package/contracts/staking/StakingStore.sol +572 -0
  359. package/contracts/staking/TargetManagerLib.sol +207 -0
  360. package/contracts/{types → type}/AddressSet.sol +1 -1
  361. package/contracts/type/Amount.sol +128 -0
  362. package/contracts/{types → type}/Blocknumber.sol +21 -3
  363. package/contracts/{types → type}/ClaimId.sol +25 -2
  364. package/contracts/{types → type}/Fee.sol +33 -23
  365. package/contracts/{types → type}/NftId.sol +21 -15
  366. package/contracts/{types → type}/NftIdSet.sol +2 -2
  367. package/contracts/{types → type}/ObjectType.sol +20 -7
  368. package/contracts/{types → type}/PayoutId.sol +33 -5
  369. package/contracts/{types → type}/Referral.sol +5 -1
  370. package/contracts/{types → type}/RiskId.sol +1 -1
  371. package/contracts/{types → type}/RoleId.sol +66 -13
  372. package/contracts/type/Seconds.sol +81 -0
  373. package/contracts/{types → type}/StateId.sol +24 -6
  374. package/contracts/{types → type}/Timestamp.sol +18 -13
  375. package/contracts/{types → type}/UFixed.sol +1 -0
  376. package/contracts/{types → type}/Version.sol +2 -1
  377. package/package.json +3 -3
  378. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  379. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  380. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  381. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  382. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  383. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  384. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  385. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  386. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  387. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  388. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -984
  389. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  390. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -261
  391. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  392. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  393. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  394. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  395. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  396. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  397. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  398. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  399. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  400. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  401. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  402. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -869
  403. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  404. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -657
  405. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  406. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1096
  407. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  408. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  409. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  410. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  411. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  413. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  414. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1254
  415. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -753
  417. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  419. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  420. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +0 -409
  421. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  422. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  423. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  424. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -347
  425. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  426. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  427. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1120
  428. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  429. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -717
  430. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  431. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  432. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  433. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -649
  434. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  436. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  438. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  439. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  440. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  441. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  442. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  443. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  444. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  445. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  446. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  447. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  448. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  449. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  450. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  451. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  452. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  453. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  454. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  455. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  456. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  457. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  458. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  459. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  461. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  462. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  463. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  464. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  465. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  466. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  467. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  468. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  469. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  470. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  471. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  472. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  474. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  476. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  477. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  479. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  483. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  487. package/contracts/components/Component.sol +0 -241
  488. package/contracts/components/IComponent.sol +0 -54
  489. package/contracts/components/IPoolComponent.sol +0 -87
  490. package/contracts/components/IProductComponent.sol +0 -39
  491. package/contracts/components/Pool.sol +0 -254
  492. package/contracts/components/Product.sol +0 -285
  493. package/contracts/instance/InstanceAccessManager.sol +0 -297
  494. package/contracts/instance/base/ComponentService.sol +0 -134
  495. package/contracts/instance/base/KeyValueStore.sol +0 -172
  496. package/contracts/instance/module/ITreasury.sol +0 -23
  497. package/contracts/instance/service/ApplicationService.sol +0 -268
  498. package/contracts/instance/service/BundleService.sol +0 -298
  499. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  500. package/contracts/instance/service/ClaimService.sol +0 -151
  501. package/contracts/instance/service/DistributionService.sol +0 -366
  502. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  503. package/contracts/instance/service/IBundleService.sol +0 -54
  504. package/contracts/instance/service/IClaimService.sol +0 -61
  505. package/contracts/instance/service/IPoolService.sol +0 -20
  506. package/contracts/instance/service/IProductService.sol +0 -40
  507. package/contracts/instance/service/PolicyService.sol +0 -476
  508. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  509. package/contracts/instance/service/PoolService.sol +0 -109
  510. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  511. package/contracts/instance/service/ProductService.sol +0 -233
  512. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  513. package/contracts/registry/RegistryAccessManager.sol +0 -216
  514. package/contracts/shared/ContractDeployerLib.sol +0 -72
  515. package/contracts/test/TestFee.sol +0 -25
  516. package/contracts/test/TestRegisterable.sol +0 -18
  517. package/contracts/test/TestRoleId.sol +0 -14
  518. package/contracts/test/TestService.sol +0 -25
  519. package/contracts/test/TestVersion.sol +0 -44
  520. package/contracts/test/TestVersionable.sol +0 -17
  521. package/contracts/test/Usdc.sol +0 -26
  522. package/contracts/types/ChainId.sol +0 -38
  523. package/contracts/types/NumberId.sol +0 -52
  524. /package/contracts/{types → type}/DistributorType.sol +0 -0
  525. /package/contracts/{types → type}/Key32.sol +0 -0
@@ -0,0 +1,596 @@
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 pure 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 this is a component
571
+ component = IInstanceLinkedComponent(componentAddress);
572
+ if(!component.supportsInterface(type(IInstanceLinkedComponent).interfaceId)) {
573
+ revert ErrorComponentServiceNotComponent(componentAddress);
574
+ }
575
+
576
+ // check component is of required type
577
+ IRegistry.ObjectInfo memory info = component.getInitialInfo();
578
+ if(info.objectType != requiredType) {
579
+ revert ErrorComponentServiceInvalidType(componentAddress, requiredType, info.objectType);
580
+ }
581
+
582
+ // check component has not already been registered
583
+ if (getRegistry().getNftId(componentAddress).gtz()) {
584
+ revert ErrorComponentServiceAlreadyRegistered(componentAddress);
585
+ }
586
+
587
+ // check instance has assigned required role to inital owner
588
+ instance = _getInstance(info.parentNftId);
589
+ owner = info.initialOwner;
590
+
591
+ (bool hasRole,) = instance.getInstanceAccessManager().hasRole(requiredRole.toInt(), owner);
592
+ if(!hasRole) {
593
+ revert ErrorComponentServiceExpectedRoleMissing(info.parentNftId, requiredRole, owner);
594
+ }
595
+ }
596
+ }
@@ -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
+ }