@etherisc/gif-next 0.0.2-b89a442-717 → 0.0.2-b8e869c-076

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 (394) hide show
  1. package/README.md +32 -3
  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/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 +2 -2
  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 +2 -2
  15. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +1 -1
  16. package/artifacts/contracts/authorization/ServiceAuthorization.sol/ServiceAuthorization.json +2 -2
  17. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.dbg.json +1 -1
  18. package/artifacts/contracts/distribution/BasicDistribution.sol/BasicDistribution.json +85 -101
  19. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.dbg.json +1 -1
  20. package/artifacts/contracts/distribution/BasicDistributionAuthorization.sol/BasicDistributionAuthorization.json +16 -16
  21. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +1 -1
  22. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +43 -75
  23. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +1 -1
  24. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +182 -74
  25. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
  26. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +54 -38
  27. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
  28. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +43 -37
  29. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +1 -1
  30. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +71 -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 +9 -9
  39. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +1 -1
  40. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +75 -75
  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 +80 -122
  45. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  46. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +21 -21
  47. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  48. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +9 -9
  49. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +1 -1
  50. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +72 -194
  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 +2 -2
  58. package/artifacts/contracts/instance/base/ObjectSet.sol/ObjectSet.dbg.json +4 -0
  59. package/artifacts/contracts/instance/base/{ObjectManager.sol/ObjectManager.json → ObjectSet.sol/ObjectSet.json} +6 -6
  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 +59 -88
  70. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.dbg.json +1 -1
  71. package/artifacts/contracts/oracle/BasicOracleAuthorization.sol/BasicOracleAuthorization.json +2 -2
  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 -37
  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 +27 -72
  78. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +1 -1
  79. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +2 -2
  80. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +1 -1
  81. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +2 -2
  82. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.dbg.json +1 -1
  83. package/artifacts/contracts/pool/BasicPool.sol/BasicPool.json +54 -136
  84. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.dbg.json +1 -1
  85. package/artifacts/contracts/pool/BasicPoolAuthorization.sol/BasicPoolAuthorization.json +16 -16
  86. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +1 -1
  87. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +394 -62
  88. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
  89. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +90 -26
  90. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +1 -1
  91. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +205 -1
  92. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
  93. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +44 -94
  94. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +1 -1
  95. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +194 -54
  96. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +1 -1
  97. package/artifacts/contracts/pool/Pool.sol/Pool.json +44 -132
  98. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +1 -1
  99. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +262 -90
  100. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
  101. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +35 -19
  102. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +1 -1
  103. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +21 -32
  104. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +1 -1
  105. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +9 -17
  106. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.dbg.json +1 -1
  107. package/artifacts/contracts/product/BasicProduct.sol/BasicProduct.json +19 -75
  108. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.dbg.json +1 -1
  109. package/artifacts/contracts/product/BasicProductAuthorization.sol/BasicProductAuthorization.json +16 -16
  110. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +1 -1
  111. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +74 -58
  112. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +30 -30
  114. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +1 -1
  115. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.json +5 -0
  116. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +1 -1
  117. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +16 -0
  118. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +1 -1
  119. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +188 -108
  120. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +1 -1
  121. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +1 -1
  122. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +19 -37
  123. package/artifacts/contracts/product/IRiskService.sol/IRiskService.dbg.json +4 -0
  124. package/artifacts/contracts/product/{IProductService.sol/IProductService.json → IRiskService.sol/IRiskService.json} +2 -2
  125. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +1 -1
  126. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +254 -174
  127. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
  128. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +42 -26
  129. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +1 -1
  130. package/artifacts/contracts/product/PricingService.sol/PricingService.json +7 -2
  131. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +1 -1
  132. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +2 -2
  133. package/artifacts/contracts/product/Product.sol/Product.dbg.json +1 -1
  134. package/artifacts/contracts/product/Product.sol/Product.json +19 -75
  135. package/artifacts/contracts/product/RiskService.sol/RiskService.dbg.json +4 -0
  136. package/artifacts/contracts/product/{ProductService.sol/ProductService.json → RiskService.sol/RiskService.json} +4 -17
  137. package/artifacts/contracts/product/RiskServiceManager.sol/RiskServiceManager.dbg.json +4 -0
  138. package/artifacts/contracts/product/{ProductServiceManager.sol/ProductServiceManager.json → RiskServiceManager.sol/RiskServiceManager.json} +12 -12
  139. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  140. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  141. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  142. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +50 -2
  143. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  144. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +0 -183
  145. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  146. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  147. package/artifacts/contracts/registry/Registry.sol/Registry.json +95 -23
  148. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +1 -1
  149. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +88 -88
  150. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  151. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +2 -2
  152. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  153. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +2 -2
  154. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +1 -1
  155. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +2 -2
  156. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.dbg.json +4 -0
  157. package/artifacts/contracts/registry/ReleaseRegistry.sol/ReleaseRegistry.json +1159 -0
  158. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +1 -1
  159. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +6 -6
  160. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  161. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +2 -2
  162. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +1 -1
  163. package/artifacts/contracts/shared/Component.sol/Component.json +0 -64
  164. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +1 -1
  165. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +255 -62
  166. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +52 -32
  168. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +1 -1
  170. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +0 -26
  171. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +1 -1
  172. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +153 -0
  173. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +1 -1
  174. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +19 -37
  175. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  176. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  177. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  178. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  179. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  180. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  181. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  182. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +1 -1
  183. package/artifacts/contracts/shared/InitializableERC165.sol/InitializableERC165.dbg.json +4 -0
  184. package/artifacts/contracts/shared/{ERC165.sol/ERC165.json → InitializableERC165.sol/InitializableERC165.json} +4 -4
  185. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +1 -1
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +19 -75
  187. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  188. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  189. package/artifacts/contracts/shared/NftIdSet.sol/NftIdSet.dbg.json +4 -0
  190. package/artifacts/contracts/shared/{NftIdSetManager.sol/NftIdSetManager.json → NftIdSet.sol/NftIdSet.json} +4 -4
  191. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  192. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +2 -2
  193. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  194. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +2 -2
  195. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  196. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +2 -2
  197. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  198. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -2
  199. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  200. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  201. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +330 -11
  202. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.dbg.json +4 -0
  203. package/artifacts/contracts/shared/TokenHandlerDeployerLib.sol/TokenHandlerDeployerLib.json +108 -0
  204. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +1 -1
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +0 -26
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +1 -1
  207. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +1 -1
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +40 -113
  209. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +1 -1
  210. package/artifacts/contracts/staking/Staking.sol/Staking.json +48 -112
  211. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +1 -1
  212. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +2 -2
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +1 -1
  214. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +25 -25
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +1 -1
  216. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +2 -2
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +1 -1
  218. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +22 -22
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +1 -1
  220. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +12 -12
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +1 -1
  222. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +20 -15
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +1 -1
  224. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +7 -2
  225. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +1 -1
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +1 -1
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.json +37 -8
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +2 -2
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +1 -1
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +2 -2
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
  233. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +2 -2
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +1 -1
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.json +7 -2
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +1 -1
  237. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +2 -2
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +1 -1
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +2 -2
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
  241. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +2 -2
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +2 -2
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +1 -1
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +2 -2
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +1 -1
  247. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +2 -2
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +1 -1
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +2 -2
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +1 -1
  251. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +2 -2
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +1 -1
  253. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +2 -2
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +1 -1
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +26 -2
  256. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +1 -1
  257. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +1 -1
  258. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +1 -1
  259. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +1 -1
  260. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +1 -1
  261. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +23 -4
  262. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +1 -1
  263. package/artifacts/contracts/type/UFixed.sol/MathLib.json +9 -3
  264. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +1 -1
  265. package/artifacts/contracts/type/UFixed.sol/UFixedLib.json +39 -2
  266. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +1 -1
  267. package/artifacts/contracts/type/Version.sol/VersionLib.json +2 -2
  268. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +1 -1
  269. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +21 -2
  270. package/artifacts/contracts/upgradeability/IVersionable.sol/IVersionable.dbg.json +4 -0
  271. package/artifacts/contracts/{shared → upgradeability}/IVersionable.sol/IVersionable.json +1 -1
  272. package/artifacts/contracts/upgradeability/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  273. package/artifacts/contracts/{shared → upgradeability}/ProxyManager.sol/ProxyManager.json +3 -3
  274. package/artifacts/contracts/upgradeability/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  275. package/artifacts/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +3 -3
  276. package/artifacts/contracts/upgradeability/Versionable.sol/Versionable.dbg.json +4 -0
  277. package/artifacts/contracts/{shared → upgradeability}/Versionable.sol/Versionable.json +1 -1
  278. package/contracts/authorization/Authorization.sol +0 -1
  279. package/contracts/distribution/BasicDistribution.sol +4 -15
  280. package/contracts/distribution/BasicDistributionAuthorization.sol +5 -1
  281. package/contracts/distribution/Distribution.sol +22 -10
  282. package/contracts/distribution/DistributionService.sol +47 -27
  283. package/contracts/distribution/DistributionServiceManager.sol +2 -5
  284. package/contracts/distribution/IDistributionComponent.sol +8 -4
  285. package/contracts/distribution/IDistributionService.sol +10 -0
  286. package/contracts/instance/{BundleManager.sol → BundleSet.sol} +23 -23
  287. package/contracts/instance/IInstance.sol +11 -34
  288. package/contracts/instance/IInstanceService.sol +5 -5
  289. package/contracts/instance/Instance.sol +11 -36
  290. package/contracts/instance/InstanceAdmin.sol +25 -6
  291. package/contracts/instance/InstanceAuthorizationV3.sol +13 -11
  292. package/contracts/instance/InstanceReader.sol +10 -7
  293. package/contracts/instance/InstanceService.sol +60 -36
  294. package/contracts/instance/InstanceServiceManager.sol +2 -6
  295. package/contracts/instance/InstanceStore.sol +2 -1
  296. package/contracts/instance/base/ObjectLifecycle.sol +2 -3
  297. package/contracts/instance/base/{ObjectManager.sol → ObjectSet.sol} +5 -5
  298. package/contracts/instance/module/IBundle.sol +1 -1
  299. package/contracts/instance/module/IComponents.sol +1 -7
  300. package/contracts/instance/module/IDistribution.sol +0 -1
  301. package/contracts/instance/module/IPolicy.sol +1 -1
  302. package/contracts/mock/Dip.sol +1 -1
  303. package/contracts/oracle/IOracleComponent.sol +2 -1
  304. package/contracts/oracle/Oracle.sol +15 -6
  305. package/contracts/oracle/OracleServiceManager.sol +2 -5
  306. package/contracts/pool/BasicPool.sol +7 -5
  307. package/contracts/pool/BasicPoolAuthorization.sol +11 -2
  308. package/contracts/pool/BundleService.sol +181 -41
  309. package/contracts/pool/BundleServiceManager.sol +2 -5
  310. package/contracts/pool/IBundleService.sol +33 -5
  311. package/contracts/pool/IPoolComponent.sol +6 -0
  312. package/contracts/pool/IPoolService.sol +37 -24
  313. package/contracts/pool/Pool.sol +32 -15
  314. package/contracts/pool/PoolService.sol +174 -85
  315. package/contracts/pool/PoolServiceManager.sol +2 -5
  316. package/contracts/product/ApplicationService.sol +49 -53
  317. package/contracts/product/ApplicationServiceManager.sol +2 -2
  318. package/contracts/product/BasicProduct.sol +3 -33
  319. package/contracts/product/BasicProductAuthorization.sol +3 -0
  320. package/contracts/product/ClaimService.sol +13 -39
  321. package/contracts/product/ClaimServiceManager.sol +2 -2
  322. package/contracts/product/IApplicationService.sol +1 -0
  323. package/contracts/product/IClaimService.sol +1 -0
  324. package/contracts/product/IPolicyService.sol +23 -17
  325. package/contracts/product/IProductComponent.sol +1 -0
  326. package/contracts/product/{IProductService.sol → IRiskService.sol} +1 -1
  327. package/contracts/product/PolicyService.sol +242 -133
  328. package/contracts/product/PolicyServiceManager.sol +2 -5
  329. package/contracts/product/PricingService.sol +5 -1
  330. package/contracts/product/PricingServiceManager.sol +2 -5
  331. package/contracts/product/Product.sol +36 -18
  332. package/contracts/product/{ProductService.sol → RiskService.sol} +10 -37
  333. package/contracts/product/RiskServiceManager.sol +39 -0
  334. package/contracts/registry/IRegistry.sol +26 -13
  335. package/contracts/registry/IRegistryService.sol +6 -6
  336. package/contracts/registry/Registry.sol +80 -82
  337. package/contracts/registry/RegistryAdmin.sol +33 -24
  338. package/contracts/registry/RegistryService.sol +4 -18
  339. package/contracts/registry/RegistryServiceManager.sol +2 -2
  340. package/contracts/registry/{ReleaseManager.sol → ReleaseRegistry.sol} +48 -50
  341. package/contracts/registry/ServiceAuthorizationV3.sol +5 -5
  342. package/contracts/registry/TokenRegistry.sol +2 -2
  343. package/contracts/shared/Component.sol +24 -37
  344. package/contracts/shared/ComponentService.sol +81 -21
  345. package/contracts/shared/ComponentServiceManager.sol +2 -2
  346. package/contracts/shared/IComponent.sol +4 -4
  347. package/contracts/shared/IComponentService.sol +15 -9
  348. package/contracts/shared/IInstanceLinkedComponent.sol +9 -10
  349. package/contracts/shared/IService.sol +1 -1
  350. package/contracts/shared/{ERC165.sol → InitializableERC165.sol} +1 -1
  351. package/contracts/shared/InstanceLinkedComponent.sol +21 -0
  352. package/contracts/shared/{NftIdSetManager.sol → NftIdSet.sol} +1 -1
  353. package/contracts/shared/NftOwnable.sol +2 -2
  354. package/contracts/shared/PolicyHolder.sol +2 -5
  355. package/contracts/shared/Service.sol +3 -4
  356. package/contracts/shared/TokenHandler.sol +100 -19
  357. package/contracts/shared/TokenHandlerDeployerLib.sol +12 -0
  358. package/contracts/staking/IStaking.sol +1 -2
  359. package/contracts/staking/IStakingService.sol +12 -5
  360. package/contracts/staking/StakeManagerLib.sol +0 -25
  361. package/contracts/staking/Staking.sol +21 -37
  362. package/contracts/staking/StakingManager.sol +2 -6
  363. package/contracts/staking/StakingReader.sol +12 -16
  364. package/contracts/staking/StakingService.sol +8 -12
  365. package/contracts/staking/StakingServiceManager.sol +2 -2
  366. package/contracts/staking/StakingStore.sol +12 -22
  367. package/contracts/type/Amount.sol +12 -5
  368. package/contracts/type/Blocknumber.sol +7 -1
  369. package/contracts/type/ObjectType.sol +3 -7
  370. package/contracts/type/Referral.sol +1 -0
  371. package/contracts/type/Seconds.sol +13 -1
  372. package/contracts/type/Timestamp.sol +11 -1
  373. package/contracts/type/UFixed.sol +29 -10
  374. package/contracts/type/Version.sol +3 -1
  375. package/contracts/{shared → upgradeability}/ProxyManager.sol +3 -4
  376. package/contracts/{shared → upgradeability}/UpgradableProxyWithAdmin.sol +1 -3
  377. package/package.json +3 -3
  378. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +0 -4
  379. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +0 -703
  380. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  381. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +0 -4
  382. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +0 -4
  383. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  384. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +0 -4
  385. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +0 -1159
  386. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +0 -4
  387. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +0 -4
  388. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +0 -4
  389. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +0 -4
  390. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +0 -4
  391. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +0 -4
  392. package/contracts/product/ProductServiceManager.sol +0 -42
  393. /package/contracts/{shared → upgradeability}/IVersionable.sol +0 -0
  394. /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)
@@ -120,34 +124,22 @@ abstract contract Component is
120
124
  {
121
125
  // checks
122
126
  address currentWallet = getWallet();
123
- IERC20Metadata token = getToken();
124
- uint256 currentBalance = token.balanceOf(currentWallet);
125
-
126
- if (currentBalance > 0) {
127
- if (currentWallet == address(this)) {
128
- // move tokens from component smart contract to external wallet
129
- } else {
130
- // move tokens from external wallet to component smart contract or another external wallet
131
- uint256 allowance = token.allowance(currentWallet, address(this));
132
- if (allowance < currentBalance) {
133
- revert ErrorComponentWalletAllowanceTooSmall(currentWallet, newWallet, allowance, currentBalance);
134
- }
135
- }
136
- }
127
+ uint256 currentBalance = getToken().balanceOf(currentWallet);
137
128
 
138
129
  // effects
139
130
  _setWallet(newWallet);
140
131
 
141
132
  // interactions
142
133
  if (currentBalance > 0) {
143
- // transfer tokens from current wallet to new wallet
134
+ // move tokens from old to new wallet
135
+ emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
136
+
144
137
  if (currentWallet == address(this)) {
145
- // transferFrom requires self allowance too
146
- token.approve(address(this), currentBalance);
138
+ // transfer from the component requires an allowance
139
+ getTokenHandler().distributeTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
140
+ } else {
141
+ getTokenHandler().collectTokens(currentWallet, newWallet, AmountLib.toAmount(currentBalance));
147
142
  }
148
-
149
- SafeERC20.safeTransferFrom(token, currentWallet, newWallet, currentBalance);
150
- emit LogComponentWalletTokensTransferred(currentWallet, newWallet, currentBalance);
151
143
  }
152
144
  }
153
145
 
@@ -253,29 +245,24 @@ abstract contract Component is
253
245
  }
254
246
 
255
247
 
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
248
  /// @dev depending on the source of the component information this function needs to be overwritten.
267
249
  /// eg for instance linked components that externally store this information with the instance store contract
268
250
  function _getComponentInfo() internal virtual view returns (IComponents.ComponentInfo memory info) {
269
251
  ComponentStorage storage $ = _getComponentStorage();
270
-
252
+
271
253
  return IComponents.ComponentInfo({
272
254
  name: $._name,
273
255
  productNftId: NftIdLib.zero(),
274
256
  token: $._token,
275
- tokenHandler: $._tokenHandler,
257
+ tokenHandler: TokenHandler(address(0)),
276
258
  wallet: $._wallet, // initial wallet address
277
259
  data: $._data // user specific component data
278
260
  });
279
261
  }
280
262
 
263
+ function _approveTokenHandler(uint256 amount) internal {
264
+ ComponentStorage storage $ = _getComponentStorage();
265
+ $._token.approve(address(getComponentInfo().tokenHandler), amount);
266
+ }
267
+
281
268
  }
@@ -4,30 +4,27 @@ pragma solidity ^0.8.20;
4
4
  import {Amount, AmountLib} from "../type/Amount.sol";
5
5
  import {ComponentVerifyingService} from "../shared/ComponentVerifyingService.sol";
6
6
  import {Fee, FeeLib} from "../type/Fee.sol";
7
+ import {IComponents} from "../instance/module/IComponents.sol";
8
+ import {IComponentService} from "./IComponentService.sol";
9
+ import {IInstance} from "../instance/IInstance.sol";
7
10
  import {IInstanceLinkedComponent} from "./IInstanceLinkedComponent.sol";
11
+ import {InstanceReader} from "../instance/InstanceReader.sol";
12
+ import {InstanceStore} from "../instance/InstanceStore.sol";
13
+ import {IInstanceService} from "../instance/IInstanceService.sol";
14
+ import {IPoolComponent} from "../pool/IPoolComponent.sol";
15
+ import {IProductComponent} from "../product/IProductComponent.sol";
8
16
  import {IRegistry} from "../registry/IRegistry.sol";
9
17
  import {IRegistryService} from "../registry/IRegistryService.sol";
10
- import {IInstance} from "../instance/IInstance.sol";
11
- import {IAccess} from "../instance/module/IAccess.sol";
18
+ import {KEEP_STATE} from "../type/StateId.sol";
12
19
  import {NftId} from "../type/NftId.sol";
13
20
  import {ObjectType, REGISTRY, COMPONENT, DISTRIBUTION, INSTANCE, ORACLE, POOL, PRODUCT} from "../type/ObjectType.sol";
14
21
  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
- import {TokenHandler} from "./TokenHandler.sol";
22
+ import {TokenHandlerDeployerLib} from "../shared/TokenHandlerDeployerLib.sol";
25
23
 
26
24
  contract ComponentService is
27
25
  ComponentVerifyingService,
28
26
  IComponentService
29
27
  {
30
-
31
28
  error ErrorComponentServiceAlreadyRegistered(address component);
32
29
  error ErrorComponentServiceNotComponent(address component);
33
30
  error ErrorComponentServiceInvalidType(address component, ObjectType requiredType, ObjectType componentType);
@@ -94,6 +91,37 @@ contract ComponentService is
94
91
  // TODO implement
95
92
  function unlock() external virtual {}
96
93
 
94
+ function withdrawFees(Amount amount)
95
+ external
96
+ virtual
97
+ returns (Amount withdrawnAmount)
98
+ {
99
+ (NftId componentNftId,, IInstance instance) = _getAndVerifyActiveComponent(COMPONENT());
100
+ IComponents.ComponentInfo memory info = instance.getInstanceReader().getComponentInfo(componentNftId);
101
+ address componentWallet = info.wallet;
102
+
103
+ // determine withdrawn amount
104
+ withdrawnAmount = amount;
105
+ if (withdrawnAmount.gte(AmountLib.max())) {
106
+ withdrawnAmount = instance.getInstanceReader().getFeeAmount(componentNftId);
107
+ } else if (withdrawnAmount.eqz()) {
108
+ revert ErrorComponentServiceWithdrawAmountIsZero();
109
+ } else {
110
+ Amount withdrawLimit = instance.getInstanceReader().getFeeAmount(componentNftId);
111
+ if (withdrawnAmount.gt(withdrawLimit)) {
112
+ revert ErrorComponentServiceWithdrawAmountExceedsLimit(withdrawnAmount, withdrawLimit);
113
+ }
114
+ }
115
+
116
+ // decrease fee counters by withdrawnAmount
117
+ _changeTargetBalance(DECREASE, instance.getInstanceStore(), componentNftId, AmountLib.zero(), withdrawnAmount);
118
+
119
+ // transfer amount to component owner
120
+ address componentOwner = getRegistry().ownerOf(componentNftId);
121
+ emit LogComponentServiceComponentFeesWithdrawn(componentNftId, componentOwner, address(info.token), withdrawnAmount);
122
+ info.tokenHandler.distributeTokens(componentWallet, componentOwner, withdrawnAmount);
123
+ }
124
+
97
125
 
98
126
  //-------- product ------------------------------------------------------//
99
127
 
@@ -112,7 +140,7 @@ contract ComponentService is
112
140
  contractAddress,
113
141
  PRODUCT(),
114
142
  PRODUCT_OWNER_ROLE());
115
-
143
+
116
144
  // create product info
117
145
  IComponents.ProductInfo memory productInfo = IProductComponent(contractAddress).getInitialProductInfo();
118
146
  instanceStore.createProduct(productNftId, productInfo);
@@ -255,6 +283,36 @@ contract ComponentService is
255
283
  _changeTargetBalance(DECREASE, instanceStore, distributionNftId, amount, feeAmount);
256
284
  }
257
285
 
286
+ //-------- distributor -------------------------------------------------------//
287
+
288
+ function increaseDistributorBalance(
289
+ InstanceStore instanceStore,
290
+ NftId distributorNftId,
291
+ Amount amount,
292
+ Amount feeAmount
293
+ )
294
+ external
295
+ virtual
296
+ // TODO re-enable once role granting is stable and fixed
297
+ // restricted()
298
+ {
299
+ _changeTargetBalance(INCREASE, instanceStore, distributorNftId, amount, feeAmount);
300
+ }
301
+
302
+ function decreaseDistributorBalance(
303
+ InstanceStore instanceStore,
304
+ NftId distributorNftId,
305
+ Amount amount,
306
+ Amount feeAmount
307
+ )
308
+ external
309
+ virtual
310
+ // TODO re-enable once role granting is stable and fixed
311
+ // restricted()
312
+ {
313
+ _changeTargetBalance(DECREASE, instanceStore, distributorNftId, amount, feeAmount);
314
+ }
315
+
258
316
  //-------- oracle -------------------------------------------------------//
259
317
 
260
318
  function registerOracle()
@@ -453,22 +511,24 @@ contract ComponentService is
453
511
 
454
512
  component.linkToRegisteredNftId();
455
513
 
456
- // setup initial component authorization
457
- _instanceService.initializeAuthorization(
458
- instance.getNftId(),
459
- component);
460
-
461
514
  // save amended component info with instance
462
515
  instanceReader = instance.getInstanceReader();
463
516
  instanceStore = instance.getInstanceStore();
464
517
 
465
- IComponents.ComponentInfo memory componentInfo = component.getComponentInfo();
466
- componentInfo.tokenHandler = new TokenHandler(address(componentInfo.token));
518
+ IComponents.ComponentInfo memory componentInfo = component.getInitialComponentInfo();
519
+ componentInfo.tokenHandler = TokenHandlerDeployerLib.deployTokenHandler(
520
+ address(componentInfo.token),
521
+ address(instance.getInstanceAdmin().authority()));
467
522
 
468
523
  instanceStore.createComponent(
469
524
  component.getNftId(),
470
525
  componentInfo);
471
526
 
527
+ // setup initial component authorization
528
+ _instanceService.initializeAuthorization(
529
+ instance.getNftId(),
530
+ component);
531
+
472
532
  // TODO add logging
473
533
  }
474
534
 
@@ -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
 
@@ -23,7 +23,6 @@ interface IComponent is
23
23
  error ErrorComponentNameLengthZero();
24
24
  error ErrorComponentWalletAddressZero();
25
25
  error ErrorComponentWalletAddressIsSameAsCurrent();
26
- error ErrorComponentWalletAllowanceTooSmall(address oldWallet, address newWallet, uint256 allowance, uint256 balance);
27
26
  error ErrorComponentWalletNotComponent();
28
27
 
29
28
  event LogComponentWalletAddressChanged(address oldWallet, address newWallet);
@@ -35,10 +34,11 @@ interface IComponent is
35
34
  /// only component owner (nft holder) is authorizes to call this function
36
35
  function approveTokenHandler(Amount spendingLimitAmount) external;
37
36
 
38
- /// @dev sets the wallet address for the component
39
- /// if the current wallet has tokens, these will be transferred
37
+ /// @dev sets the wallet address for the component.
38
+ /// if the current wallet has tokens, these will be transferred.
40
39
  /// 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
40
+ /// owner of the external wallet to the tokenhandler of the component that
41
+ /// covers the current component balance must exist
42
42
  function setWallet(address walletAddress) external;
43
43
 
44
44
  /// @dev returns the name of this component