@etherisc/gif-next 0.0.2-92cdbc9-533 → 0.0.2-9346c9b-763

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 (357) hide show
  1. package/README.md +13 -1
  2. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.dbg.json +1 -1
  3. package/artifacts/contracts/authorization/AccessAdmin.sol/AccessAdmin.json +33 -33
  4. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.dbg.json +1 -1
  5. package/artifacts/contracts/authorization/AccessManagerCloneable.sol/AccessManagerCloneable.json +2 -2
  6. package/artifacts/contracts/authorization/Authorization.sol/Authorization.dbg.json +1 -1
  7. package/artifacts/contracts/authorization/Authorization.sol/Authorization.json +8 -8
  8. package/artifacts/contracts/authorization/IAccess.sol/IAccess.dbg.json +1 -1
  9. package/artifacts/contracts/authorization/IAccessAdmin.sol/IAccessAdmin.dbg.json +1 -1
  10. package/artifacts/contracts/authorization/IAuthorization.sol/IAuthorization.dbg.json +1 -1
  11. package/artifacts/contracts/authorization/IModuleAuthorization.sol/IModuleAuthorization.dbg.json +1 -1
  12. package/artifacts/contracts/authorization/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +1 -1
  13. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.dbg.json +1 -1
  14. package/artifacts/contracts/authorization/ModuleAuthorization.sol/ModuleAuthorization.json +8 -8
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +4 -4
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +69 -26
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +19 -19
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -0
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +240 -74
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +87 -55
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -0
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +102 -0
  31. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.dbg.json +4 -0
  32. package/artifacts/contracts/instance/BundleSet.sol/BundleSet.json +703 -0
  33. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  34. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +6 -6
  35. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  36. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +5 -5
  37. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  38. package/artifacts/contracts/instance/Instance.sol/Instance.json +17 -17
  39. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  40. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +80 -80
  41. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.dbg.json +1 -1
  42. package/artifacts/contracts/instance/InstanceAuthorizationV3.sol/InstanceAuthorizationV3.json +31 -31
  43. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  44. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +58 -58
  45. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +39 -39
  47. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +35 -35
  49. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -72
  51. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +1 -1
  52. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +2 -2
  53. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +1 -1
  54. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +1 -1
  55. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +2 -2
  56. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +1 -1
  57. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +6 -6
  58. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.json +181 -0
  60. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  61. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  62. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  63. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  64. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  65. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  66. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +1 -1
  67. package/artifacts/contracts/mock/Dip.sol/Dip.json +2 -2
  68. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.dbg.json +1 -1
  69. package/artifacts/contracts/oracle/BasicOracle.sol/BasicOracle.json +46 -16
  70. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +21 -21
  72. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +1 -1
  73. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +1 -1
  74. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +30 -0
  75. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +1 -1
  76. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +1 -1
  77. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +30 -0
  78. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +32 -32
  80. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +34 -34
  82. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +43 -0
  84. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +18 -18
  86. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +220 -54
  88. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +72 -40
  90. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +102 -0
  92. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +43 -0
  94. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  96. package/artifacts/contracts/pool/Pool.sol/Pool.json +43 -0
  97. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  98. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +36 -36
  99. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  100. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +36 -36
  101. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  102. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +32 -32
  103. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  104. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +34 -34
  105. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  106. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -0
  107. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  108. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +19 -19
  109. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  110. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +72 -72
  111. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  112. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +54 -54
  113. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  114. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  115. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  116. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  118. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -0
  119. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +1 -1
  120. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  121. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +50 -50
  122. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  123. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +43 -43
  124. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  125. package/artifacts/contracts/product/PricingService.sol/PricingService.json +58 -58
  126. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  127. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +47 -47
  128. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  129. package/artifacts/contracts/product/Product.sol/Product.json +19 -0
  130. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +1 -1
  131. package/artifacts/contracts/product/ProductService.sol/ProductService.json +20 -20
  132. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
  133. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +28 -28
  134. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  135. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  136. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  137. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  138. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  139. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  140. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  141. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/Registry.sol/Registry.json +101 -29
  143. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  144. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +95 -95
  145. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  146. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +18 -18
  147. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  148. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +27 -27
  149. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  150. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +6 -6
  151. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  152. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  153. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  154. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +7 -7
  155. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  156. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +4 -4
  157. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  158. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  159. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +215 -62
  160. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  161. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +77 -49
  162. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  163. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  165. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  166. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  167. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +97 -0
  168. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -0
  170. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  171. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  176. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  177. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  178. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  179. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -0
  180. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  181. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  182. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  183. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.json +306 -0
  184. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  185. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +6 -6
  186. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  187. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +6 -6
  188. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +8 -8
  190. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  191. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  192. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  193. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  194. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +6 -6
  195. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  196. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  197. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  198. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +32 -32
  199. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  200. package/artifacts/contracts/staking/Staking.sol/Staking.json +44 -44
  201. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  202. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +6 -6
  203. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  204. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +40 -40
  205. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  206. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +6 -6
  207. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +26 -26
  209. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  210. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +31 -31
  211. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +134 -134
  213. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  214. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +22 -22
  215. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  216. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.json +2 -2
  217. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  218. package/artifacts/contracts/type/Amount.sol/AmountLib.json +32 -8
  219. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  220. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  221. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  222. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +4 -4
  223. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  224. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +4 -4
  225. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  226. package/artifacts/contracts/type/Fee.sol/FeeLib.json +12 -12
  227. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  228. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  229. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  230. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +4 -4
  231. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  232. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  233. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  234. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  235. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  236. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +4 -4
  237. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  238. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +4 -4
  239. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  240. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +4 -4
  241. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  242. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +4 -4
  243. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  244. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +14 -14
  245. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  246. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +2 -2
  247. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  248. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +2 -2
  249. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  250. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +2 -2
  251. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  252. package/artifacts/contracts/type/StateId.sol/StateIdLib.json +2 -2
  253. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  254. package/artifacts/contracts/type/String.sol/StrLib.json +2 -2
  255. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  256. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +4 -4
  257. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/UFixed.sol/MathLib.json +2 -2
  259. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +2 -2
  261. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  262. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  263. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  264. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  265. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  266. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  267. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  268. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.json +617 -0
  269. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  270. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  271. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  272. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  273. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  274. package/contracts/distribution/Distribution.sol +20 -2
  275. package/contracts/distribution/DistributionService.sol +60 -17
  276. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  277. package/contracts/distribution/IDistributionComponent.sol +8 -4
  278. package/contracts/distribution/IDistributionService.sol +12 -0
  279. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  280. package/contracts/instance/IInstance.sol +5 -5
  281. package/contracts/instance/IInstanceService.sol +5 -5
  282. package/contracts/instance/Instance.sol +4 -4
  283. package/contracts/instance/InstanceAdmin.sol +2 -2
  284. package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
  285. package/contracts/instance/InstanceService.sol +10 -10
  286. package/contracts/instance/InstanceServiceManager.sol +2 -6
  287. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  288. package/contracts/instance/module/IComponents.sol +0 -1
  289. package/contracts/oracle/IOracleComponent.sol +2 -1
  290. package/contracts/oracle/Oracle.sol +13 -0
  291. package/contracts/oracle/OracleServiceManager.sol +2 -5
  292. package/contracts/pool/BasicPoolAuthorization.sol +6 -0
  293. package/contracts/pool/BundleService.sol +71 -25
  294. package/contracts/pool/BundleServiceManager.sol +2 -5
  295. package/contracts/pool/IBundleService.sol +14 -0
  296. package/contracts/pool/IPoolComponent.sol +6 -0
  297. package/contracts/pool/Pool.sol +18 -1
  298. package/contracts/pool/PoolService.sol +10 -26
  299. package/contracts/pool/PoolServiceManager.sol +2 -5
  300. package/contracts/product/ApplicationService.sol +12 -36
  301. package/contracts/product/ApplicationServiceManager.sol +2 -2
  302. package/contracts/product/BasicProductAuthorization.sol +3 -0
  303. package/contracts/product/ClaimService.sol +5 -31
  304. package/contracts/product/ClaimServiceManager.sol +2 -2
  305. package/contracts/product/IProductComponent.sol +1 -0
  306. package/contracts/product/PolicyServiceManager.sol +2 -5
  307. package/contracts/product/PricingServiceManager.sol +2 -5
  308. package/contracts/product/Product.sol +1 -1
  309. package/contracts/product/ProductService.sol +7 -32
  310. package/contracts/product/ProductServiceManager.sol +2 -5
  311. package/contracts/registry/IRegistry.sol +26 -13
  312. package/contracts/registry/IRegistryService.sol +6 -6
  313. package/contracts/registry/Registry.sol +80 -82
  314. package/contracts/registry/RegistryAdmin.sol +23 -23
  315. package/contracts/registry/RegistryService.sol +4 -18
  316. package/contracts/registry/RegistryServiceManager.sol +2 -2
  317. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -48
  318. package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
  319. package/contracts/registry/TokenRegistry.sol +2 -2
  320. package/contracts/shared/Component.sol +13 -14
  321. package/contracts/shared/ComponentService.sol +52 -11
  322. package/contracts/shared/ComponentServiceManager.sol +2 -2
  323. package/contracts/shared/IComponentService.sol +10 -0
  324. package/contracts/shared/IInstanceLinkedComponent.sol +6 -0
  325. package/contracts/shared/IService.sol +1 -1
  326. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  327. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  328. package/contracts/shared/Service.sol +3 -4
  329. package/contracts/staking/IStaking.sol +1 -2
  330. package/contracts/staking/IStakingService.sol +12 -5
  331. package/contracts/staking/Staking.sol +17 -16
  332. package/contracts/staking/StakingManager.sol +2 -6
  333. package/contracts/staking/StakingReader.sol +12 -16
  334. package/contracts/staking/StakingServiceManager.sol +2 -2
  335. package/contracts/staking/StakingStore.sol +12 -22
  336. package/contracts/type/Amount.sol +7 -2
  337. package/contracts/type/ObjectType.sol +3 -7
  338. package/contracts/type/Version.sol +3 -1
  339. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  340. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  341. package/package.json +3 -3
  342. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  343. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  344. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  345. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +0 -181
  346. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  347. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  348. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  349. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  350. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +0 -306
  351. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  352. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +0 -617
  353. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  354. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +0 -129
  355. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  356. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  357. /package/contracts/{shared → upgradeability}/Versionable.sol +0 -0
@@ -34,7 +34,7 @@ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
34
34
 
35
35
  // TODO rename to something that does not end with 'Manager'
36
36
  // everywhere else *Manager points to an upgradeable contract
37
- contract ReleaseManager is
37
+ contract ReleaseRegistry is
38
38
  AccessManaged,
39
39
  ReleaseLifecycle,
40
40
  IRegistryLinked
@@ -49,45 +49,45 @@ contract ReleaseManager is
49
49
  event LogReleaseEnabled(VersionPart version);
50
50
 
51
51
  // constructor
52
- error ErrorReleaseManagerNotRegistry(Registry registry);
52
+ error ErrorReleaseRegistryNotRegistry(Registry registry);
53
53
 
54
54
  // createNextRelease
55
- error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
55
+ error ErrorReleaseRegistryReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
56
56
 
57
57
  // prepareRelease
58
- error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
- error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
- error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
61
- error ErrorReleaseManagerNoDomains(VersionPart version);
58
+ error ErrorReleaseRegistryReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseRegistryReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseRegistryVersionMismatch(VersionPart expected, VersionPart actual);
61
+ error ErrorReleaseRegistryNoDomains(VersionPart version);
62
62
 
63
63
  // registerService
64
- error ErrorReleaseManagerNoServiceRegistrationExpected();
65
- error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
66
- error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
- error ErrorReleaseManagerNotService(address notService);
68
- error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
64
+ error ErrorReleaseRegistryNoServiceRegistrationExpected();
65
+ error ErrorReleaseRegistryServiceRegistrationDisallowed(StateId currentStateId);
66
+ error ErrorReleaseRegistryServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
+ error ErrorReleaseRegistryNotService(address notService);
68
+ error ErrorReleaseRegistryServiceAddressMismatch(address expected, address actual);
69
69
 
70
70
  // activateNextRelease
71
- error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
- error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
73
- error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
- error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
71
+ error ErrorReleaseRegistryReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
+ error ErrorReleaseRegistryReleaseNotCreated(VersionPart releaseVersion);
73
+ error ErrorReleaseRegistryReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
+ error ErrorReleaseRegistryReleaseAlreadyActivated(VersionPart releaseVersion);
75
75
 
76
76
  // disableRelease
77
- error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
78
- error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
77
+ error ErrorReleaseRegistryReleaseNotActivated(VersionPart releaseVersion);
78
+ error ErrorReleaseRegistryReleaseAlreadyDisabled(VersionPart releaseVersion);
79
79
 
80
80
  // _verifyService
81
- error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
- error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
81
+ error ErrorReleaseRegistryServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
+ error ErrorReleaseRegistryServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
83
83
 
84
84
  // _verifyServiceInfo
85
- error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
86
- error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
87
- error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
88
- error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
89
- error ErrorReleaseManagerServiceSelfRegistration(IService service);
90
- error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
85
+ error ErrorReleaseRegistryServiceInfoAddressInvalid(IService service, address expected);
86
+ error ErrorReleaseRegistryServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
87
+ error ErrorReleaseRegistryServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
88
+ error ErrorReleaseRegistryServiceInfoOwnerInvalid(IService service, address expected, address found);
89
+ error ErrorReleaseRegistryServiceSelfRegistration(IService service);
90
+ error ErrorReleaseRegistryServiceOwnerRegistered(IService service, address owner);
91
91
 
92
92
  Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
93
 
@@ -115,7 +115,7 @@ contract ReleaseManager is
115
115
  {
116
116
  // TODO move this part to RegistryLinked constructor
117
117
  if(!_isRegistry(address(registry))) {
118
- revert ErrorReleaseManagerNotRegistry(registry);
118
+ revert ErrorReleaseRegistryNotRegistry(registry);
119
119
  }
120
120
 
121
121
  setAuthority(registry.getAuthority());
@@ -167,7 +167,7 @@ contract ReleaseManager is
167
167
 
168
168
  // verify release in state SCHEDULED
169
169
  if (!isValidTransition(RELEASE(), _state[version], DEPLOYING())) {
170
- revert ErrorReleaseManagerReleasePreparationDisallowed(version, _state[version]);
170
+ revert ErrorReleaseRegistryReleasePreparationDisallowed(version, _state[version]);
171
171
  }
172
172
 
173
173
  _state[version] = DEPLOYING();
@@ -175,19 +175,19 @@ contract ReleaseManager is
175
175
  // verify authorizaion contract release matches with expected version
176
176
  VersionPart releaseVersion = serviceAuthorization.getRelease();
177
177
  if (releaseVersion != version) {
178
- revert ErrorReleaseManagerVersionMismatch(version, releaseVersion);
178
+ revert ErrorReleaseRegistryVersionMismatch(version, releaseVersion);
179
179
  }
180
180
 
181
181
 
182
182
  // sanity check to ensure service domain list is not empty
183
183
  uint256 serviceDomainsCount = serviceAuthorization.getServiceDomains().length;
184
184
  if (serviceDomainsCount == 0) {
185
- revert ErrorReleaseManagerNoDomains(version);
185
+ revert ErrorReleaseRegistryNoDomains(version);
186
186
  }
187
187
 
188
188
  // verify prepareNextRelease is only called once per release
189
189
  if(_servicesToRegister > 0) {
190
- revert ErrorReleaseManagerReleaseAlreadyPrepared(version, _state[version]);
190
+ revert ErrorReleaseRegistryReleaseAlreadyPrepared(version, _state[version]);
191
191
  }
192
192
 
193
193
  _servicesToRegister = serviceDomainsCount;
@@ -208,14 +208,14 @@ contract ReleaseManager is
208
208
  // verify release in state DEPLOYING
209
209
  if (!isValidTransition(RELEASE(), state, DEPLOYING())) {
210
210
  // TOOD name must represent failed state transition
211
- revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
211
+ revert ErrorReleaseRegistryServiceRegistrationDisallowed(state);
212
212
  }
213
213
 
214
214
  _state[releaseVersion] = DEPLOYING();
215
215
 
216
216
  // not all services are registered
217
217
  if (_servicesToRegister == _registeredServices) {
218
- revert ErrorReleaseManagerNoServiceRegistrationExpected();
218
+ revert ErrorReleaseRegistryNoServiceRegistrationExpected();
219
219
  }
220
220
 
221
221
  // service can work with release manager
@@ -228,7 +228,7 @@ contract ReleaseManager is
228
228
  // service domain matches defined in release config
229
229
  ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
230
230
  if (serviceDomain != expectedDomain) {
231
- revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
231
+ revert ErrorReleaseRegistryServiceDomainMismatch(expectedDomain, serviceDomain);
232
232
  }
233
233
 
234
234
  // register service with registry
@@ -260,18 +260,18 @@ contract ReleaseManager is
260
260
 
261
261
  // verify release in state DEPLOYING
262
262
  if (!isValidTransition(RELEASE(), state, newState)) {
263
- revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
263
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
264
264
  }
265
265
 
266
266
  // release fully deployed
267
267
  if(_registeredServices < _servicesToRegister) {
268
- revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
268
+ revert ErrorReleaseRegistryReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
269
269
  }
270
270
 
271
271
  // release exists, registry service MUST exist
272
272
  address service = _registry.getServiceAddress(REGISTRY(), version);
273
273
  if(service == address(0)) {
274
- revert ErrorReleaseManagerReleaseNotCreated(version);
274
+ revert ErrorReleaseRegistryReleaseNotCreated(version);
275
275
  }
276
276
 
277
277
  _latest = version;
@@ -293,7 +293,7 @@ contract ReleaseManager is
293
293
 
294
294
  // verify release in state ACTIVE
295
295
  if (!isValidTransition(RELEASE(), state, newState)) {
296
- revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
296
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
297
297
  }
298
298
 
299
299
  // TODO come up with a substitute
@@ -316,7 +316,7 @@ contract ReleaseManager is
316
316
 
317
317
  // verify release in state PAUSED
318
318
  if (!isValidTransition(RELEASE(), state, newState)) {
319
- revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
319
+ revert ErrorReleaseRegistryReleaseActivationDisallowed(version, state);
320
320
  }
321
321
 
322
322
  // TODO come up with a substitute
@@ -401,7 +401,7 @@ contract ReleaseManager is
401
401
  )
402
402
  {
403
403
  if(!service.supportsInterface(type(IService).interfaceId)) {
404
- revert ErrorReleaseManagerNotService(address(service));
404
+ revert ErrorReleaseRegistryNotService(address(service));
405
405
  }
406
406
 
407
407
  address owner = msg.sender;
@@ -417,14 +417,14 @@ contract ReleaseManager is
417
417
 
418
418
  // IMPORTANT: can not guarantee service access is actually controlled by authority
419
419
  if(serviceAuthority != expectedAuthority) {
420
- revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
420
+ revert ErrorReleaseRegistryServiceReleaseAuthorityMismatch(
421
421
  service,
422
422
  serviceAuthority,
423
423
  expectedAuthority);
424
424
  }
425
425
 
426
426
  if(serviceVersion != releaseVersion) {
427
- revert ErrorReleaseManagerServiceReleaseVersionMismatch(
427
+ revert ErrorReleaseRegistryServiceReleaseVersionMismatch(
428
428
  service,
429
429
  serviceVersion,
430
430
  releaseVersion);
@@ -441,29 +441,29 @@ contract ReleaseManager is
441
441
  view
442
442
  {
443
443
  if(info.objectAddress != address(service)) {
444
- revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
444
+ revert ErrorReleaseRegistryServiceInfoAddressInvalid(service, address(service));
445
445
  }
446
446
 
447
447
  if(info.isInterceptor != false) { // service is never interceptor
448
- revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
448
+ revert ErrorReleaseRegistryServiceInfoInterceptorInvalid(service, info.isInterceptor);
449
449
  }
450
450
 
451
451
  if(info.objectType != SERVICE()) {
452
- revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
452
+ revert ErrorReleaseRegistryServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
453
453
  }
454
454
 
455
455
  address owner = info.initialOwner;
456
456
 
457
457
  if(owner != expectedOwner) { // registerable owner protection
458
- revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
458
+ revert ErrorReleaseRegistryServiceInfoOwnerInvalid(service, expectedOwner, owner);
459
459
  }
460
460
 
461
461
  if(owner == address(service)) {
462
- revert ErrorReleaseManagerServiceSelfRegistration(service);
462
+ revert ErrorReleaseRegistryServiceSelfRegistration(service);
463
463
  }
464
464
 
465
465
  if(_registry.isRegistered(owner)) {
466
- revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
466
+ revert ErrorReleaseRegistryServiceOwnerRegistered(service, owner);
467
467
  }
468
468
  }
469
469
 
@@ -69,14 +69,14 @@ contract ServiceAuthorizationV3
69
69
  functions = _authorizeForService(REGISTRY(), APPLICATION());
70
70
  _authorize(functions, IRegistryService.registerPolicy.selector, "registerPolicy");
71
71
 
72
- functions = _authorizeForService(REGISTRY(), POOL());
73
- _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
72
+ // functions = _authorizeForService(REGISTRY(), POOL());
73
+ // _authorize(functions, IRegistryService.registerPool.selector, "registerPool");
74
74
 
75
75
  functions = _authorizeForService(REGISTRY(), BUNDLE());
76
76
  _authorize(functions, IRegistryService.registerBundle.selector, "registerBundle");
77
77
 
78
78
  functions = _authorizeForService(REGISTRY(), DISTRIBUTION());
79
- _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
79
+ // _authorize(functions, IRegistryService.registerDistribution.selector, "registerDistribution");
80
80
  _authorize(functions, IRegistryService.registerDistributor.selector, "registerDistributor");
81
81
 
82
82
  functions = _authorizeForService(REGISTRY(), COMPONENT());
@@ -88,8 +88,8 @@ contract ServiceAuthorizationV3
88
88
  functions = _authorizeForService(REGISTRY(), STAKING());
89
89
  _authorize(functions, IRegistryService.registerStake.selector, "registerStake");
90
90
 
91
- functions = _authorizeForService(REGISTRY(), PRODUCT());
92
- _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
91
+ // functions = _authorizeForService(REGISTRY(), PRODUCT());
92
+ // _authorize(functions, IRegistryService.registerProduct.selector, "registerProduct");
93
93
  }
94
94
 
95
95
 
@@ -12,7 +12,7 @@ import {IRegisterable} from "../shared/IRegisterable.sol";
12
12
 
13
13
  import {IRegistry} from "./IRegistry.sol";
14
14
  import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
15
- import {ReleaseManager} from "./ReleaseManager.sol";
15
+ import {ReleaseRegistry} from "./ReleaseRegistry.sol";
16
16
  import {RegistryAdmin} from "./RegistryAdmin.sol";
17
17
 
18
18
 
@@ -49,7 +49,7 @@ contract TokenRegistry is
49
49
  TokenInfo [] internal _token;
50
50
 
51
51
  IRegistry internal _registry;
52
- ReleaseManager internal _releaseManager;
52
+ ReleaseRegistry internal _releaseRegistry;
53
53
  IERC20Metadata internal _dipToken;
54
54
 
55
55
  /// @dev enforces msg.sender is owner of nft (or initial owner of nft ownable)
@@ -26,7 +26,6 @@ abstract contract Component is
26
26
  struct ComponentStorage {
27
27
  string _name; // unique (per instance) component name
28
28
  IERC20Metadata _token; // token for this component
29
- TokenHandler _tokenHandler;
30
29
  address _wallet;
31
30
  bool _isInterceptor;
32
31
  bytes _data;
@@ -40,6 +39,12 @@ abstract contract Component is
40
39
  _;
41
40
  }
42
41
 
42
+ modifier onlyNftOwner(NftId nftId) {
43
+ if(msg.sender != getRegistry().ownerOf(nftId)) {
44
+ revert ErrorNftOwnableNotOwner(msg.sender);
45
+ }
46
+ _;
47
+ }
43
48
 
44
49
  function _getComponentStorage() private pure returns (ComponentStorage storage $) {
45
50
  assembly {
@@ -78,7 +83,6 @@ abstract contract Component is
78
83
  ComponentStorage storage $ = _getComponentStorage();
79
84
  $._name = name;
80
85
  $._token = IERC20Metadata(token);
81
- $._tokenHandler = TokenHandler(address(0));
82
86
  $._wallet = address(this);
83
87
  $._isInterceptor = isInterceptor;
84
88
  $._data = componentData;
@@ -253,29 +257,24 @@ abstract contract Component is
253
257
  }
254
258
 
255
259
 
256
- /// @dev for component contracts that hold its own component information
257
- /// this function creates and sets a token hanlder for the components tokens
258
- function _createAndSetTokenHandler()
259
- internal
260
- {
261
- ComponentStorage storage $ = _getComponentStorage();
262
- $._tokenHandler = new TokenHandler(address($._token));
263
- }
264
-
265
-
266
260
  /// @dev depending on the source of the component information this function needs to be overwritten.
267
261
  /// eg for instance linked components that externally store this information with the instance store contract
268
262
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
269
263
  ComponentStorage storage $ = _getComponentStorage();
270
-
264
+
271
265
  return IComponents.ComponentInfo({
272
266
  name: $._name,
273
267
  productNftId: NftIdLib.zero(),
274
268
  token: $._token,
275
- tokenHandler: $._tokenHandler,
269
+ tokenHandler: TokenHandler(address(0)),
276
270
  wallet: $._wallet, // initial wallet address
277
271
  data: $._data // user specific component data
278
272
  });
279
273
  }
280
274
 
275
+ function _approveTokenHandler(uint256 amount) internal {
276
+ ComponentStorage storage $ = _getComponentStorage();
277
+ $._token.approve(address(getComponentInfo().tokenHandler), amount);
278
+ }
279
+
281
280
  }
@@ -1,32 +1,33 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
5
+
4
6
  import {Amount, AmountLib} from "../type/Amount.sol";
5
7
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
8
  import {Fee, FeeLib} from "../type/Fee.sol";
9
+ import {IComponents} from "../instance/module/IComponents.sol";
10
+ import {IComponentService} from "./IComponentService.sol";
11
+ import {IInstance} from "../instance/IInstance.sol";
7
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
13
+ import {InstanceReader} from "../instance/InstanceReader.sol";
14
+ import {InstanceStore} from "../instance/InstanceStore.sol";
15
+ import {IInstanceService} from "../instance/IInstanceService.sol";
16
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
17
+ import {IProductComponent} from "../product/IProductComponent.sol";
8
18
  import {IRegistry} from "../registry/IRegistry.sol";
9
19
  import {IRegistryService} from "../registry/IRegistryService.sol";
10
- import {IInstance} from "../instance/IInstance.sol";
11
- import {IAccess} from "../instance/module/IAccess.sol";
20
+ import {KEEP_STATE} from "../type/StateId.sol";
12
21
  import {NftId} from "../type/NftId.sol";
13
22
  import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
23
  import {RoleId, DISTRIBUTION_OWNER_ROLE, ORACLE_OWNER_ROLE, POOL_OWNER_ROLE, PRODUCT_OWNER_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
24
  import {TokenHandler} from "./TokenHandler.sol";
25
25
 
26
26
  contract ComponentService is
27
27
  ComponentVerifyingService,
28
28
  IComponentService
29
29
  {
30
+ using AmountLib for Amount;
30
31
 
31
32
  error ErrorComponentServiceAlreadyRegistered(address component);
32
33
  error ErrorComponentServiceNotComponent(address component);
@@ -94,6 +95,46 @@ contract ComponentService is
94
95
  // TODO implement
95
96
  function unlock() external virtual {}
96
97
 
98
+ function withdrawFees(Amount amount)
99
+ external
100
+ virtual
101
+ returns (Amount withdrawnAmount)
102
+ {
103
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
104
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
105
+ address componentWallet = info.wallet;
106
+
107
+ // determine withdrawn amount
108
+ withdrawnAmount = amount;
109
+ if (withdrawnAmount.gte(AmountLib.max())) {
110
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
111
+ } else if (withdrawnAmount.eqz()) {
112
+ revert ErrorComponentServiceWithdrawAmountIsZero();
113
+ } else {
114
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
115
+ if (withdrawnAmount.gt(withdrawLimit)) {
116
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
117
+ }
118
+ }
119
+
120
+ // check allowance
121
+ TokenHandler tokenHandler = info.tokenHandler;
122
+ IERC20Metadata token = IERC20Metadata(info.token);
123
+ uint256 tokenAllowance = token.allowance(componentWallet, address(tokenHandler));
124
+ if (tokenAllowance < withdrawnAmount.toInt()) {
125
+ revert ErrorComponentServiceWalletAllowanceTooSmall(componentWallet, address(tokenHandler), tokenAllowance, withdrawnAmount.toInt());
126
+ }
127
+
128
+ // decrease fee counters by withdrawnAmount
129
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
130
+
131
+ // transfer amount to component owner
132
+ address componentOwner = getRegistry().ownerOf(componentNftId);
133
+ tokenHandler.transfer(componentWallet, componentOwner, withdrawnAmount);
134
+
135
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(token), withdrawnAmount);
136
+ }
137
+
97
138
 
98
139
  //-------- product ------------------------------------------------------//
99
140
 
@@ -1,9 +1,9 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
- import {IVersionable} from "./IVersionable.sol";
5
- import {ProxyManager} from "./ProxyManager.sol";
6
4
  import {ComponentService} from "./ComponentService.sol";
5
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
6
+ import {ProxyManager} from "../upgradeability/ProxyManager.sol";
7
7
 
8
8
  contract ComponentServiceManager is ProxyManager {
9
9
 
@@ -27,7 +27,12 @@ interface IComponentService is
27
27
  error ErrorComponentServiceWalletAddressZero();
28
28
  error ErrorComponentServiceWalletAddressIsSameAsCurrent();
29
29
 
30
+ error ErrorComponentServiceWithdrawAmountIsZero();
31
+ error ErrorComponentServiceWithdrawAmountExceedsLimit(Amount withdrawnAmount, Amount withdrawLimit);
32
+ error ErrorComponentServiceWalletAllowanceTooSmall(address wallet, address spender, uint256 allowance, uint256 amount);
33
+
30
34
  event LogComponentServiceWalletAddressChanged(NftId componentNftId, address currentWallet, address newWallet);
35
+ event LogComponentServiceComponentFeesWithdrawn(NftId componentNftId, address recipient, address token, Amount withdrawnAmount);
31
36
  event LogComponentServiceProductFeesUpdated(NftId productNftId);
32
37
  event LogComponentServiceDistributionFeesUpdated(NftId distributionNftId);
33
38
  event LogComponentServicePoolFeesUpdated(NftId poolNftId);
@@ -51,6 +56,11 @@ interface IComponentService is
51
56
  /// @dev unlocks the component associated with the caller
52
57
  function unlock() external;
53
58
 
59
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
60
+ /// @param withdrawAmount the amount to withdraw
61
+ /// @return withdrawnAmount the amount that was actually withdrawn
62
+ function withdrawFees(Amount withdrawAmount) external returns (Amount withdrawnAmount);
63
+
54
64
  //-------- product ------------------------------------------------------//
55
65
 
56
66
  /// @dev registers the sending component as a product component
@@ -4,6 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
6
6
 
7
+ import {Amount} from "../type/Amount.sol";
7
8
  import {IComponent} from "../shared/IComponent.sol";
8
9
  import {IAuthorization} from "../authorization/IAuthorization.sol";
9
10
  import {IComponents} from "../instance/module/IComponents.sol";
@@ -47,4 +48,9 @@ interface IInstanceLinkedComponent is
47
48
  /// @dev returns the initial component authorization specification.
48
49
  function getAuthorization() external view returns (IAuthorization authorization);
49
50
 
51
+ /// @dev Withdraw fees from the distribution component. Only component owner is allowed to withdraw fees.
52
+ /// @param amount the amount to withdraw
53
+ /// @return withdrawnAmount the amount that was actually withdrawn
54
+ function withdrawFees(Amount amount) external returns (Amount withdrawnAmount);
55
+
50
56
  }
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessManaged.sol";
5
5
 
6
6
  import {IRegisterable} from "./IRegisterable.sol";
7
- import {IVersionable} from "./IVersionable.sol";
7
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
8
8
  import {ObjectType} from "../type/ObjectType.sol";
9
9
  import {RoleId} from "../type/RoleId.sol";
10
10
 
@@ -6,6 +6,7 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
  import {IERC20Metadata} from "@openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol";
7
7
  import {SafeERC20} from "@openzeppelin/contracts/token/ERC20/utils/SafeERC20.sol";
8
8
 
9
+ import {Amount} from "../type/Amount.sol";
9
10
  import {Component} from "./Component.sol";
10
11
  import {IComponentService} from "./IComponentService.sol";
11
12
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
@@ -36,6 +37,7 @@ abstract contract InstanceLinkedComponent is
36
37
  IInstance _instance; // instance for this component
37
38
  InstanceReader _instanceReader; // instance reader for this component
38
39
  IAuthorization _initialAuthorization;
40
+ IComponentService _componentService;
39
41
  }
40
42
 
41
43
  function lock() external onlyOwner {
@@ -58,6 +60,17 @@ abstract contract InstanceLinkedComponent is
58
60
  return _getInstanceLinkedComponentStorage()._initialAuthorization;
59
61
  }
60
62
 
63
+ /// @inheritdoc IInstanceLinkedComponent
64
+ function withdrawFees(Amount amount)
65
+ external
66
+ virtual
67
+ onlyOwner()
68
+ restricted()
69
+ returns (Amount withdrawnAmount)
70
+ {
71
+ return _withdrawFees(amount);
72
+ }
73
+
61
74
  function _getInstanceLinkedComponentStorage() private pure returns (InstanceLinkedComponentStorage storage $) {
62
75
  assembly {
63
76
  $.slot := INSTANCE_LINKED_COMPONENT_LOCATION_V1
@@ -105,6 +118,7 @@ abstract contract InstanceLinkedComponent is
105
118
  // set component state
106
119
  $._instanceReader = $._instance.getInstanceReader();
107
120
  $._initialAuthorization = authorization;
121
+ $._componentService = IComponentService(_getServiceAddress(COMPONENT()));
108
122
 
109
123
  registerInterface(type(IAccessManaged).interfaceId);
110
124
  registerInterface(type(IInstanceLinkedComponent).interfaceId);
@@ -141,6 +155,13 @@ abstract contract InstanceLinkedComponent is
141
155
  return _getInstanceLinkedComponentStorage()._instanceReader;
142
156
  }
143
157
 
158
+ function _withdrawFees(Amount amount)
159
+ internal
160
+ returns (Amount withdrawnAmount)
161
+ {
162
+ return _getInstanceLinkedComponentStorage()._componentService.withdrawFees(amount);
163
+ }
164
+
144
165
 
145
166
  /// @dev returns the service address for the specified domain
146
167
  /// gets address via lookup from registry using the major version form the linked instance
@@ -4,7 +4,7 @@ pragma solidity ^0.8.20;
4
4
  import {LibNftIdSet} from "../type/NftIdSet.sol";
5
5
  import {NftId} from "../type/NftId.sol";
6
6
 
7
- contract NftIdSetManager {
7
+ contract NftIdSet {
8
8
 
9
9
  error ErrorNftIdSetManagerNotOwner(address owner, address sender);
10
10
  error ErrorNftIdSetManagerOwnerAlreadySet(address owner);
@@ -6,13 +6,12 @@ import {IAccessManaged} from "@openzeppelin/contracts/access/manager/IAccessMana
6
6
 
7
7
  import {IRegistry} from "../registry/IRegistry.sol";
8
8
  import {IService} from "./IService.sol";
9
- import {IVersionable} from "./IVersionable.sol";
10
- import {NftId} from "../type/NftId.sol";
9
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
11
10
  import {ObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
12
11
  import {Registerable} from "./Registerable.sol";
13
12
  import {RoleId, RoleIdLib} from "../type/RoleId.sol";
14
- import {Version, VersionPart, VersionLib, VersionPartLib} from "../type/Version.sol";
15
- import {Versionable} from "./Versionable.sol";
13
+ import {Version, VersionLib, VersionPartLib} from "../type/Version.sol";
14
+ import {Versionable} from "../upgradeability/Versionable.sol";
16
15
 
17
16
 
18
17
  /// @dev service base contract
@@ -3,9 +3,8 @@ pragma solidity ^0.8.20;
3
3
 
4
4
  import {Amount} from "../type/Amount.sol";
5
5
  import {IComponent} from "../shared/IComponent.sol";
6
- import {IVersionable} from "../shared/IVersionable.sol";
6
+ import {IVersionable} from "../upgradeability/IVersionable.sol";
7
7
  import {NftId} from "../type/NftId.sol";
8
- import {NftIdSetManager} from "../shared/NftIdSetManager.sol";
9
8
  import {ObjectType} from "../type/ObjectType.sol";
10
9
  import {Seconds} from "../type/Seconds.sol";
11
10
  import {StakingReader} from "./StakingReader.sol";