@etherisc/gif-next 0.0.2-742eda3-807 → 0.0.2-750c7cb-311

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