@etherisc/gif-next 0.0.2-b72409c-493 → 0.0.2-b7f4834-822

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 (546) hide show
  1. package/README.md +8 -84
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/{components → distribution}/Distribution.sol/Distribution.json +254 -157
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1349 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +818 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/{components → distribution}/IDistributionComponent.sol/IDistributionComponent.json +202 -96
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/{instance/service → distribution}/IDistributionService.sol/IDistributionService.json +121 -320
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +6 -6
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +320 -1995
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +155 -72
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -2749
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +708 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +228 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +762 -340
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +238 -218
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +119 -86
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3642 -0
  32. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.dbg.json +4 -0
  33. package/artifacts/contracts/instance/base/BalanceStore.sol/BalanceStore.json +318 -0
  34. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  35. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +1 -1
  36. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectCounter.sol/ObjectCounter.json +10 -0
  38. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol}/ObjectManager.json +3 -3
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +10 -118
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  43. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  47. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  48. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  49. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  50. package/artifacts/contracts/{instance/module/ISetup.sol/ISetup.json → oracle/IOracle.sol/IOracle.json} +2 -2
  51. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  52. package/artifacts/contracts/{components/IProductComponent.sol/IProductComponent.json → oracle/IOracleComponent.sol/IOracleComponent.json} +221 -192
  53. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  54. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  55. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  56. package/artifacts/contracts/{components/Product.sol/Product.json → oracle/Oracle.sol/Oracle.json} +255 -266
  57. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  58. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  59. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  60. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  61. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  63. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  64. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  65. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  66. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +213 -153
  67. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  68. package/artifacts/contracts/{components → pool}/IPoolComponent.sol/IPoolComponent.json +288 -88
  69. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  70. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  71. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  72. package/artifacts/contracts/{components → pool}/Pool.sol/Pool.json +298 -89
  73. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  74. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  75. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  77. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  79. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  80. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  81. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  82. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  83. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  84. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  85. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  86. package/artifacts/contracts/{instance/service/IClaimService.sol/IClaimService.json → product/IApplicationService.sol/IApplicationService.json} +191 -101
  87. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  88. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  89. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +268 -101
  91. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  92. package/artifacts/contracts/{instance/service/IApplicationService.sol/IApplicationService.json → product/IPricingService.sol/IPricingService.json} +141 -161
  93. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  94. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  95. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  96. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +75 -72
  97. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  98. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  99. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  100. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  101. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  102. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  103. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  104. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  105. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  106. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  107. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  108. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  109. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  110. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  111. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  112. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +2 -2
  113. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  114. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +179 -29
  115. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +305 -85
  117. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  118. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/Registry.sol/Registry.json +415 -43
  120. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  121. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  122. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  123. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +343 -105
  124. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  125. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +93 -54
  126. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  127. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +834 -89
  128. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  129. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  130. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  131. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +316 -153
  132. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  133. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  134. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  135. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  136. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  137. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  138. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  140. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  142. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  143. package/artifacts/contracts/{components → shared}/Component.sol/Component.json +144 -80
  144. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  145. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  146. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  147. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  148. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  149. package/artifacts/contracts/{instance/base/ComponentService.sol/ComponentService.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +95 -121
  150. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  151. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +2 -2
  152. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  153. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  154. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  156. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  157. package/artifacts/contracts/{components → shared}/IComponent.sol/IComponent.json +180 -54
  158. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  160. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  162. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  163. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -11
  164. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  165. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  166. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  167. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +3 -10
  168. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +1 -1
  169. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +87 -9
  170. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  171. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +3 -10
  172. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +1 -1
  173. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.json +0 -13
  174. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  175. package/artifacts/contracts/shared/IService.sol/IService.json +91 -27
  176. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  178. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  179. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  180. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  181. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  182. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  183. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  184. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  185. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  186. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  187. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  188. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +15 -22
  189. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +1 -1
  190. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +98 -26
  191. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  192. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +70 -35
  193. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  194. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +23 -22
  195. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +1 -1
  196. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +2 -15
  197. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  198. package/artifacts/contracts/shared/Service.sol/Service.json +98 -29
  199. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  200. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  201. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  202. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  203. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  204. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  205. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  206. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  207. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  208. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  209. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  210. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  211. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  212. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  213. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  214. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  215. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  216. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  218. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  219. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  220. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  222. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  223. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  224. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  225. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  226. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  227. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  228. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  229. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  230. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  231. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  232. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  234. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  236. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  238. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  240. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  241. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  242. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  244. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  245. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  246. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/Referral.sol/ReferralLib.json +5 -5
  248. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  250. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  251. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  252. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  254. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  256. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  258. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  259. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +33 -7
  260. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  261. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  262. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  263. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  264. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  266. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  267. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  268. package/contracts/{components → distribution}/Distribution.sol +47 -66
  269. package/contracts/distribution/DistributionService.sol +298 -0
  270. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  271. package/contracts/{components → distribution}/IDistributionComponent.sol +11 -16
  272. package/contracts/{instance/service → distribution}/IDistributionService.sol +20 -37
  273. package/contracts/instance/BundleManager.sol +8 -9
  274. package/contracts/instance/IInstance.sol +51 -67
  275. package/contracts/instance/IInstanceService.sol +30 -21
  276. package/contracts/instance/Instance.sol +124 -215
  277. package/contracts/instance/InstanceAdmin.sol +331 -0
  278. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  279. package/contracts/instance/InstanceReader.sol +157 -57
  280. package/contracts/instance/InstanceService.sol +189 -322
  281. package/contracts/instance/InstanceServiceManager.sol +11 -21
  282. package/contracts/instance/InstanceStore.sol +281 -0
  283. package/contracts/instance/base/BalanceStore.sol +118 -0
  284. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +1 -1
  285. package/contracts/instance/base/ObjectCounter.sol +21 -0
  286. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +7 -7
  287. package/contracts/instance/module/IAccess.sol +5 -13
  288. package/contracts/instance/module/IBundle.sol +8 -9
  289. package/contracts/instance/module/IComponents.sol +22 -5
  290. package/contracts/instance/module/IDistribution.sol +7 -6
  291. package/contracts/instance/module/IPolicy.sol +28 -16
  292. package/contracts/instance/module/IRisk.sol +1 -1
  293. package/contracts/{test/TestToken.sol → mock/Dip.sol} +5 -5
  294. package/contracts/oracle/IOracle.sol +20 -0
  295. package/contracts/oracle/IOracleComponent.sol +32 -0
  296. package/contracts/oracle/IOracleService.sol +65 -0
  297. package/contracts/oracle/Oracle.sol +145 -0
  298. package/contracts/oracle/OracleService.sol +277 -0
  299. package/contracts/oracle/OracleServiceManager.sol +42 -0
  300. package/contracts/pool/BundleService.sol +296 -0
  301. package/contracts/pool/BundleServiceManager.sol +42 -0
  302. package/contracts/pool/IBundleService.sol +106 -0
  303. package/contracts/{components → pool}/IPoolComponent.sol +17 -18
  304. package/contracts/pool/IPoolService.sol +150 -0
  305. package/contracts/{components → pool}/Pool.sol +57 -57
  306. package/contracts/pool/PoolService.sol +453 -0
  307. package/contracts/pool/PoolServiceManager.sol +42 -0
  308. package/contracts/product/ApplicationService.sol +254 -0
  309. package/contracts/{instance/service → product}/ApplicationServiceManager.sol +11 -8
  310. package/contracts/product/ClaimService.sol +442 -0
  311. package/contracts/{instance/service → product}/ClaimServiceManager.sol +11 -8
  312. package/contracts/{instance/service → product}/IApplicationService.sol +15 -35
  313. package/contracts/product/IClaimService.sol +99 -0
  314. package/contracts/{instance/service → product}/IPolicyService.sol +37 -31
  315. package/contracts/product/IPricingService.sol +39 -0
  316. package/contracts/product/IProductComponent.sol +42 -0
  317. package/contracts/product/IProductService.sol +33 -0
  318. package/contracts/product/PolicyService.sol +475 -0
  319. package/contracts/product/PolicyServiceManager.sol +42 -0
  320. package/contracts/product/PricingService.sol +301 -0
  321. package/contracts/product/PricingServiceManager.sol +42 -0
  322. package/contracts/{components → product}/Product.sol +191 -107
  323. package/contracts/product/ProductService.sol +124 -0
  324. package/contracts/product/ProductServiceManager.sol +42 -0
  325. package/contracts/registry/ChainNft.sol +8 -1
  326. package/contracts/registry/IRegistry.sol +44 -21
  327. package/contracts/registry/IRegistryService.sol +39 -37
  328. package/contracts/registry/Registry.sol +192 -83
  329. package/contracts/registry/RegistryAdmin.sol +237 -0
  330. package/contracts/registry/RegistryService.sol +69 -86
  331. package/contracts/registry/RegistryServiceManager.sol +21 -25
  332. package/contracts/registry/ReleaseManager.sol +459 -181
  333. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  334. package/contracts/registry/TokenRegistry.sol +261 -62
  335. package/contracts/shared/AccessManagerCustom.sol +736 -0
  336. package/contracts/shared/AccessManagerExtended.sol +470 -0
  337. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  338. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  339. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  340. package/contracts/shared/Component.sol +281 -0
  341. package/contracts/shared/ComponentService.sol +618 -0
  342. package/contracts/shared/ComponentServiceManager.sol +35 -0
  343. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  344. package/contracts/shared/ERC165.sol +1 -1
  345. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  346. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  347. package/contracts/{components → shared}/IComponent.sol +23 -27
  348. package/contracts/shared/IComponentService.sol +102 -0
  349. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  350. package/contracts/{instance/base → shared}/IKeyValueStore.sol +15 -11
  351. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  352. package/contracts/shared/INftOwnable.sol +2 -2
  353. package/contracts/shared/IPolicyHolder.sol +29 -10
  354. package/contracts/shared/IRegistryLinked.sol +0 -1
  355. package/contracts/shared/IService.sol +7 -7
  356. package/contracts/shared/IVersionable.sol +1 -1
  357. package/contracts/shared/InitializableCustom.sol +177 -0
  358. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  359. package/contracts/shared/KeyValueStore.sol +127 -0
  360. package/contracts/{instance/base → shared}/Lifecycle.sol +26 -5
  361. package/contracts/shared/NftIdSetManager.sol +65 -0
  362. package/contracts/shared/NftOwnable.sol +3 -16
  363. package/contracts/shared/PolicyHolder.sol +40 -19
  364. package/contracts/shared/ProxyManager.sol +34 -4
  365. package/contracts/shared/Registerable.sol +13 -12
  366. package/contracts/shared/RegistryLinked.sol +0 -5
  367. package/contracts/shared/Service.sol +29 -10
  368. package/contracts/shared/TokenHandler.sol +27 -2
  369. package/contracts/shared/Versionable.sol +1 -1
  370. package/contracts/staking/IStaking.sol +168 -0
  371. package/contracts/staking/IStakingService.sol +149 -0
  372. package/contracts/staking/StakeManagerLib.sol +179 -0
  373. package/contracts/staking/Staking.sol +551 -0
  374. package/contracts/staking/StakingManager.sol +54 -0
  375. package/contracts/staking/StakingReader.sol +187 -0
  376. package/contracts/staking/StakingService.sol +406 -0
  377. package/contracts/staking/StakingServiceManager.sol +45 -0
  378. package/contracts/staking/StakingStore.sol +572 -0
  379. package/contracts/staking/TargetManagerLib.sol +207 -0
  380. package/contracts/{types → type}/AddressSet.sol +1 -1
  381. package/contracts/type/Amount.sol +128 -0
  382. package/contracts/{types → type}/Blocknumber.sol +20 -3
  383. package/contracts/{types → type}/ClaimId.sol +25 -2
  384. package/contracts/{types → type}/Fee.sol +33 -24
  385. package/contracts/{types → type}/NftId.sol +14 -16
  386. package/contracts/{types → type}/NftIdSet.sol +2 -2
  387. package/contracts/{types → type}/ObjectType.sol +26 -15
  388. package/contracts/{types → type}/PayoutId.sol +33 -5
  389. package/contracts/{types → type}/Referral.sol +1 -1
  390. package/contracts/type/RequestId.sol +75 -0
  391. package/contracts/{types → type}/RiskId.sol +1 -1
  392. package/contracts/{types → type}/RoleId.sol +58 -9
  393. package/contracts/{types → type}/Seconds.sol +27 -0
  394. package/contracts/{types → type}/StateId.sol +33 -4
  395. package/contracts/{types → type}/Timestamp.sol +10 -1
  396. package/contracts/{types → type}/Version.sol +1 -1
  397. package/package.json +3 -3
  398. package/artifacts/contracts/components/Component.sol/Component.dbg.json +0 -4
  399. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  400. package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +0 -4
  401. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  402. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  403. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  404. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  405. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  406. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  407. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  408. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  409. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  410. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1311
  411. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  412. package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  414. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  415. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  416. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -532
  417. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  418. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -194
  419. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  420. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  421. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  422. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +0 -4
  423. package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +0 -968
  424. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +0 -4
  425. package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +0 -665
  426. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  427. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1093
  428. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  429. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -661
  430. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +0 -4
  431. package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +0 -754
  432. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +0 -4
  433. package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +0 -637
  434. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -1732
  436. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -805
  438. package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  440. package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  442. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  444. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -428
  445. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  446. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  447. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1021
  448. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  449. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -689
  450. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  451. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -824
  452. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  453. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -657
  454. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  455. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  456. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  457. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -649
  458. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  459. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  460. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  461. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  462. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  463. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  464. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  465. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -383
  466. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  467. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  468. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  469. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -521
  470. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  471. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  472. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  473. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  474. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  475. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -104
  476. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  477. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  478. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  479. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  481. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  482. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  483. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +0 -100
  485. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  488. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  489. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  490. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -166
  491. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  492. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  493. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  494. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  495. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  496. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +0 -4
  497. package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +0 -100
  498. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  499. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  500. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  501. package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +0 -4
  502. package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +0 -124
  503. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  504. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  505. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  506. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  507. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  508. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  509. package/contracts/components/Component.sol +0 -251
  510. package/contracts/components/IProductComponent.sol +0 -40
  511. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -13
  512. package/contracts/instance/InstanceAccessManager.sol +0 -522
  513. package/contracts/instance/base/ComponentService.sol +0 -134
  514. package/contracts/instance/base/KeyValueStore.sol +0 -175
  515. package/contracts/instance/module/ISetup.sol +0 -33
  516. package/contracts/instance/module/ITreasury.sol +0 -23
  517. package/contracts/instance/service/ApplicationService.sol +0 -350
  518. package/contracts/instance/service/BundleService.sol +0 -336
  519. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  520. package/contracts/instance/service/ClaimService.sol +0 -151
  521. package/contracts/instance/service/DistributionService.sol +0 -467
  522. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  523. package/contracts/instance/service/IBundleService.sol +0 -62
  524. package/contracts/instance/service/IClaimService.sol +0 -61
  525. package/contracts/instance/service/IPoolService.sol +0 -35
  526. package/contracts/instance/service/IProductService.sol +0 -40
  527. package/contracts/instance/service/PolicyService.sol +0 -403
  528. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  529. package/contracts/instance/service/PoolService.sol +0 -220
  530. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  531. package/contracts/instance/service/ProductService.sol +0 -241
  532. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  533. package/contracts/registry/RegistryAccessManager.sol +0 -216
  534. package/contracts/shared/ContractDeployerLib.sol +0 -72
  535. package/contracts/test/TestFee.sol +0 -25
  536. package/contracts/test/TestRegisterable.sol +0 -18
  537. package/contracts/test/TestRoleId.sol +0 -14
  538. package/contracts/test/TestService.sol +0 -25
  539. package/contracts/test/TestVersion.sol +0 -44
  540. package/contracts/test/TestVersionable.sol +0 -17
  541. package/contracts/test/Usdc.sol +0 -26
  542. package/contracts/types/ChainId.sol +0 -38
  543. package/contracts/types/NumberId.sol +0 -52
  544. /package/contracts/{types → type}/DistributorType.sol +0 -0
  545. /package/contracts/{types → type}/Key32.sol +0 -0
  546. /package/contracts/{types → type}/UFixed.sol +0 -0
@@ -1,220 +1,370 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
5
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
6
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
7
+ import {Initializable} from "@openzeppelin/contracts/proxy/utils/Initializable.sol";
4
8
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
5
10
 
6
- import {NftId} from "../types/NftId.sol";
7
- import {RoleId} from "../types/RoleId.sol";
8
- import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../types/ObjectType.sol";
9
- import {VersionPart, VersionPartLib} from "../types/Version.sol";
10
- import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {ObjectType, ObjectTypeLib, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
14
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
15
+ import {Timestamp, TimestampLib, zeroTimestamp, ltTimestamp} from "../type/Timestamp.sol";
16
+ import {Seconds, SecondsLib} from "../type/Seconds.sol";
17
+ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
18
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
11
19
 
12
20
  import {IService} from "../shared/IService.sol";
21
+ import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
22
+ import {ILifecycle} from "../shared/ILifecycle.sol";
23
+ import {INftOwnable} from "../shared/INftOwnable.sol";
24
+ import {IRegisterable} from "../shared/IRegisterable.sol";
13
25
 
14
26
  import {IRegistry} from "./IRegistry.sol";
15
- import {Registry} from "./Registry.sol";
27
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
16
28
  import {IRegistryService} from "./IRegistryService.sol";
17
- import {RegistryAccessManager} from "./RegistryAccessManager.sol";
29
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
30
+ import {Registry} from "./Registry.sol";
31
+ import {TokenRegistry} from "./TokenRegistry.sol";
32
+ import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
18
33
 
19
34
 
20
- contract ReleaseManager is AccessManaged
35
+ contract ReleaseManager is
36
+ AccessManaged,
37
+ ILifecycle,
38
+ IRegistryLinked
21
39
  {
22
40
  using ObjectTypeLib for ObjectType;
23
41
 
24
- event LogReleaseCreation(VersionPart version);
42
+ uint256 public constant INITIAL_GIF_VERSION = 3;
43
+
44
+ event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
25
45
  event LogReleaseActivation(VersionPart version);
26
46
 
47
+ // constructor
48
+ error ErrorReleaseManagerNotRegistry(Registry registry);
49
+
27
50
  // createNextRelease
28
- error NotRegistryService();
29
- error UnexpectedServiceAuthority(address expected, address found);
51
+ error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
52
+
53
+ // prepareRelease
54
+ error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
55
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version);
56
+
57
+ // register staking
58
+ //error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
30
59
 
31
60
  // registerService
32
- error NotService();
61
+ error ErrorReleaseManagerNoServiceRegistrationExpected();
62
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
63
+ error ErrorReleaseManagerNotService(IService service);
64
+ error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
33
65
 
34
66
  // activateNextRelease
35
- error ReleaseNotCreated();
36
- error ReleaseRegistrationNotFinished();
67
+ error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
68
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
69
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
70
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
37
71
 
38
- // _getAndVerifyContractInfo
39
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
40
- error NotRegisterableOwner(address notOwner);
41
- error SelfRegistration();
42
- error RegisterableOwnerIsRegistered();
72
+ // disableRelease
73
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
74
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
43
75
 
44
76
  // _verifyService
45
- error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
46
- error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
47
-
48
- // _verifyAndStoreConfig
49
- error ConfigMissing();
50
- error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
51
- error ConfigSelectorZero(uint configArrayIndex);
52
- error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
53
-
77
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
78
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
79
+
80
+ // _verifyServiceInfo
81
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
82
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
83
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
84
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
85
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
86
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
87
+
88
+ // _verifyReleaseAuthorizations
89
+ error ErrorReleaseManagerReleaseEmpty();
90
+ error ErrorReleaseManagerReleaseServiceRoleInvalid(uint serviceIdx, address service, RoleId role);
91
+
92
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
+
94
+ RegistryAdmin public immutable _admin;
95
+ address public immutable _releaseAccessManagerCodeAddress;
96
+ Registry public immutable _registry;
97
+ IRegisterable private _staking;
98
+ address private _stakingOwner;
99
+
100
+ mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
101
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
102
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
103
+
104
+ VersionPart immutable internal _initial;// first active version
105
+ VersionPart internal _latest; // latest active version
106
+ VersionPart internal _next; // version to create and activate
107
+ StateId internal _state; // current state of release manager
108
+
109
+ uint256 internal _awaitingRegistration; // "services left to register" counter
110
+
111
+ // deployer of this contract must be gif admin
112
+ constructor(Registry registry)
113
+ AccessManaged(msg.sender)
114
+ {
115
+ // TODO move this part to RegistryLinked constructor
116
+ if(!_isRegistry(address(registry))) {
117
+ revert ErrorReleaseManagerNotRegistry(registry);
118
+ }
54
119
 
55
- RegistryAccessManager private immutable _accessManager;
56
- IRegistry private immutable _registry;
120
+ _registry = registry;
121
+ setAuthority(_registry.getAuthority());
122
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
57
123
 
58
- VersionPart immutable _initial;// first active version
59
- VersionPart _latest;// latest active version
60
- VersionPart _next;// version to create and activate
124
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
125
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
126
+ _state = getInitialState(RELEASE());
127
+
128
+ AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
129
+ masterReleaseAccessManager.initialize(_registry.NFT_LOCK_ADDRESS(), VersionLib.toVersionPart(0));
130
+ //masterReleaseAccessManager.disable();
131
+ _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
132
+ }
61
133
 
62
- mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
134
+ /// @dev skips previous release if was not activated
135
+ /// sets release manager into state SCHEDULED
136
+ function createNextRelease()
137
+ external
138
+ restricted() // GIF_ADMIN_ROLE
139
+ returns(VersionPart)
140
+ {
141
+ if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
142
+ revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
143
+ }
63
144
 
64
- mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4[])) _selectors; // registry service function selector assigned to domain
145
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
146
+ _awaitingRegistration = 0;
147
+ _state = SCHEDULED();
65
148
 
66
- uint _awaitingRegistration; // "services left to register" counter
149
+ return _next;
150
+ }
67
151
 
68
- mapping(address registryService => bool isActive) _active;
152
+ // TODO order of events
153
+ function prepareNextRelease(
154
+ address[] memory addresses,
155
+ string[] memory names,
156
+ RoleId[][] memory serviceRoles,
157
+ string[][] memory serviceRoleNames,
158
+ RoleId[][] memory functionRoles,
159
+ string[][] memory functionRoleNames,
160
+ bytes4[][][] memory selectors,
161
+ bytes32 salt
162
+ )
163
+ external
164
+ restricted() // GIF_MANAGER_ROLE
165
+ returns(
166
+ address releaseAccessManagerAddress,
167
+ VersionPart version,
168
+ bytes32 releaseSalt
169
+ )
170
+ {
171
+ version = getNextVersion();
69
172
 
70
- mapping(VersionPart version => bool isValid) _valid; // TODO refactor to use _active only
173
+ // ensures unique salt
174
+ releaseSalt = keccak256(
175
+ bytes.concat(
176
+ bytes32(version.toInt()),
177
+ salt));
71
178
 
72
- constructor(
73
- RegistryAccessManager accessManager,
74
- VersionPart initialVersion)
75
- AccessManaged(accessManager.authority())
76
- {
77
- require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
179
+ releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
180
+ AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
181
+ releaseAccessManager.initialize(address(this), version);
78
182
 
79
- _accessManager = accessManager;
183
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
184
+ revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
185
+ }
80
186
 
81
- _initial = initialVersion;
82
- _next = initialVersion;
187
+ _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
83
188
 
84
- _registry = new Registry();
189
+ if(_awaitingRegistration > 0) {
190
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version);
191
+ }
192
+ // TODO instead of copying just set ServiceAuthorizationsLib for release and array of domains???
193
+ _releaseInfo[version].version = version;
194
+ _releaseInfo[version].salt = releaseSalt;
195
+ _releaseInfo[version].addresses = addresses;
196
+ _releaseInfo[version].names = names;
197
+ _releaseInfo[version].serviceRoles = serviceRoles;
198
+ _releaseInfo[version].serviceRoleNames = serviceRoleNames;
199
+ _releaseInfo[version].functionRoles = functionRoles;
200
+ _releaseInfo[version].functionRoleNames = functionRoleNames;
201
+ _releaseInfo[version].selectors = selectors;
202
+ _awaitingRegistration = addresses.length;
203
+ _state = DEPLOYING();
204
+ _releaseAccessManager[version] = releaseAccessManager;
205
+
206
+ emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
85
207
  }
86
208
 
87
- /// @dev skips previous release if was not activated
88
- function createNextRelease()
209
+
210
+ function registerService(IService service)
89
211
  external
90
- restricted // GIF_ADMIN_ROLE
212
+ restricted // GIF_MANAGER_ROLE
213
+ returns(NftId nftId)
91
214
  {
92
- // allow to register new registry service for next version
93
- VersionPartLib.toVersionPart(_next.toInt() + 1);
94
- // disallow registration of regular services for next version while registry service is not registered
95
- _awaitingRegistration = 0;
215
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
216
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
217
+ }
218
+
219
+ (
220
+ IRegistry.ObjectInfo memory info,
221
+ ObjectType domain,
222
+ VersionPart version
223
+ ) = _verifyService(service);
224
+
225
+ // redundant with state var
226
+ if (_awaitingRegistration == 0) {
227
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
228
+ }
229
+
230
+ uint serviceIdx = _awaitingRegistration - 1;
231
+ address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
232
+ // TODO temp, while typescript addresses computation is not implemented
233
+ /*if(address(service) != serviceAddress) {
234
+ revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
235
+ }*/
236
+
237
+ _setServiceAuthorizations(
238
+ _releaseAccessManager[version],
239
+ // TODO temp, while typescript addresses computation is not implemented
240
+ address(service),//serviceAddress,
241
+ _releaseInfo[version].names[serviceIdx],
242
+ _releaseInfo[version].serviceRoles[serviceIdx],
243
+ _releaseInfo[version].serviceRoleNames[serviceIdx],
244
+ _releaseInfo[version].functionRoles[serviceIdx],
245
+ _releaseInfo[version].functionRoleNames[serviceIdx],
246
+ _releaseInfo[version].selectors[serviceIdx]);
247
+
248
+ // TODO decide for one of the approaches
249
+ // // service to service authorization
250
+ // ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
251
+ // for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
252
+ // _accessManager.setTargetFunctionRole(
253
+ // address(service),
254
+ // authz.authorizedSelectors[idx],
255
+ // authz.authorizedRole[idx]);
256
+ // }
257
+
258
+ _awaitingRegistration = serviceIdx;
259
+ // TODO end state depends on (_awaitingRegistration == 0)
260
+ _state = DEPLOYING();
261
+
262
+ // checked in registry
263
+ _releaseInfo[version].domains.push(domain);
264
+
265
+ nftId = _registry.registerService(info, version, domain);
96
266
 
97
- emit LogReleaseCreation(_next);
267
+ service.linkToRegisteredNftId();
98
268
  }
99
269
 
270
+
100
271
  function activateNextRelease()
101
272
  external
102
273
  restricted // GIF_ADMIN_ROLE
103
274
  {
275
+ if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
276
+ revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
277
+ }
278
+
104
279
  VersionPart version = _next;
105
280
  address service = _registry.getServiceAddress(REGISTRY(), version);
106
281
 
107
- // release was created
282
+ // release exists, registry service is a MUST
283
+ //if(_releaseAccessManager[version] == address(0)) {
108
284
  if(service == address(0)) {
109
- revert ReleaseNotCreated();
285
+ revert ErrorReleaseManagerReleaseNotCreated(version);
110
286
  }
111
287
 
112
288
  // release fully deployed
113
289
  if(_awaitingRegistration > 0) {
114
- revert ReleaseRegistrationNotFinished();
290
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
115
291
  }
116
292
 
117
- //setTargetClosed(service, false);
293
+ // release is not activated
294
+ if(_releaseInfo[version].activatedAt.gtz()) {
295
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
296
+ }
118
297
 
119
298
  _latest = version;
299
+ _state = ACTIVE();
120
300
 
121
- _active[service] = true;
122
- _valid[version] = true;
301
+ _releaseVersionByAddress[service] = version;
302
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
123
303
 
124
304
  emit LogReleaseActivation(version);
125
305
  }
126
306
 
127
- // TODO deploy proxy and initialize with given implementation instead of using given proxy?
128
- // IMPORTANT: MUST never be possible to create with access/release manager, token registry
129
- // callable once per release after release creation, can not register regular services while registry service is not registered
130
- function registerRegistryService(IRegistryService service)
307
+ // release becomes disabled after delay expiration (can be reenabled before that)
308
+ function disableRelease(VersionPart version, Seconds disableDelay)
131
309
  external
132
- restricted // GIF_MANAGER_ROLE
133
- returns(NftId nftId)
310
+ restricted // GIF_ADMIN_ROLE
134
311
  {
135
- if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
136
- revert NotRegistryService();
312
+ // release was activated
313
+ if(_releaseInfo[version].activatedAt.eqz()) {
314
+ revert ErrorReleaseManagerReleaseNotActivated(version);
137
315
  }
138
316
 
139
- // TODO unreliable! MUST guarantee the same authority -> how?
140
- address serviceAuthority = service.authority();
141
- if(serviceAuthority != authority()) {
142
- revert UnexpectedServiceAuthority(
143
- authority(),
144
- serviceAuthority);
317
+ // release not disabled already
318
+ if(_releaseInfo[version].disabledAt.gtz()) {
319
+ revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
145
320
  }
146
321
 
147
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
322
+ disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
148
323
 
149
- VersionPart version = _next;
150
- ObjectType domain = REGISTRY();
151
- _verifyService(service, version, domain);
152
- _createRelease(service.getFunctionConfigs());
153
-
154
- nftId = _registry.registerService(info, version, domain);
324
+ _releaseAccessManager[version].disable(disableDelay);
155
325
 
156
- // external call
157
- service.linkToRegisteredNftId();
326
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
158
327
  }
159
-
160
- // TODO adding service to release -> synchronized with proxy upgrades or simple addServiceToRelease(service, version, selector)?
161
- // TODO removing service from release? -> set _active to false forever, but keep all other records?
162
- function registerService(IService service)
328
+
329
+ function enableRelease(VersionPart version)
163
330
  external
164
- restricted // GIF_MANAGER_ROLE
165
- returns(NftId nftId)
331
+ restricted // GIF_ADMIN_ROLE
166
332
  {
167
- if(!service.supportsInterface(type(IService).interfaceId)) {
168
- revert NotService();
169
- }
333
+ // release was disabled
334
+ //if(_releaseInfo[version].disabledAt.eqz()) {
335
+ // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
336
+ //}
170
337
 
171
- IRegistry.ObjectInfo memory info = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
172
- VersionPart version = getNextVersion();
173
- ObjectType domain = _release[version].domains[_awaitingRegistration];// reversed registration order of services specified in RegistryService config
174
- _verifyService(service, version, domain);
175
-
176
- // setup and grant unique role if service does registrations
177
- bytes4[] memory selectors = _selectors[version][domain];
178
- address registryService = _registry.getServiceAddress(REGISTRY(), version);
179
- if(selectors.length > 0) {
180
- _accessManager.setAndGrantUniqueRole(
181
- address(service),
182
- registryService,
183
- selectors);
184
- }
338
+ // reverts if disable delay expired
339
+ _releaseAccessManager[version].enable();
185
340
 
186
- _awaitingRegistration--;
187
-
188
- nftId = _registry.registerService(info, version, domain);
189
-
190
- // external call
191
- service.linkToRegisteredNftId();
341
+ _releaseInfo[version].disabledAt = zeroTimestamp();
192
342
  }
193
343
 
194
344
  //--- view functions ----------------------------------------------------//
195
345
 
196
- function isActiveRegistryService(address service) external view returns(bool)
197
- {
198
- return _active[service];
346
+ function predictDeterministicAddress(
347
+ address implementation,
348
+ bytes32 salt,
349
+ address deployer
350
+ ) external pure returns (address predicted) {
351
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
199
352
  }
200
353
 
201
- function isValidRelease(VersionPart version) external view returns(bool)
202
- {
203
- return _valid[version];
354
+ function isActiveRegistryService(address service) external view returns(bool) {
355
+ VersionPart version = _releaseVersionByAddress[service];
356
+ return isActiveRelease(version);
204
357
  }
205
358
 
206
- function getRegistry() external view returns(address)
207
- {
208
- return (address(_registry));
359
+ function isActiveRelease(VersionPart version) public view returns(bool) {
360
+ return _releaseInfo[version].activatedAt.gtz();
209
361
  }
210
362
 
211
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
212
- {
213
- return _release[version];
363
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
364
+ return _releaseInfo[version];
214
365
  }
215
366
 
216
- function getNextVersion() public view returns(VersionPart)
217
- {
367
+ function getNextVersion() public view returns(VersionPart) {
218
368
  return _next;
219
369
  }
220
370
 
@@ -226,97 +376,225 @@ contract ReleaseManager is AccessManaged
226
376
  return _initial;
227
377
  }
228
378
 
379
+ function getState() external view returns (StateId stateId) {
380
+ return _state;
381
+ }
382
+
383
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
384
+ return _awaitingRegistration;
385
+ }
386
+
387
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
388
+ return _releaseAccessManager[version];
389
+ }
390
+ // TODO tokenr registry knows nothing about adfmin, only registry
391
+ function getRegistryAdmin() external view returns (address) {
392
+ return address(_admin);
393
+ }
394
+
395
+ //--- IRegistryLinked ------------------------------------------------------//
396
+
397
+ function getRegistry() external view returns (IRegistry) {
398
+ return _registry;
399
+ }
400
+
401
+ //--- ILifecycle -----------------------------------------------------------//
402
+
403
+ function hasLifecycle(ObjectType objectType) external pure returns (bool) { return objectType == RELEASE(); }
404
+
405
+ function getInitialState(ObjectType objectType) public pure returns (StateId stateId) {
406
+ if (objectType == RELEASE()) {
407
+ stateId = INITIAL();
408
+ }
409
+ }
410
+
411
+ function isValidTransition(
412
+ ObjectType objectType,
413
+ StateId fromId,
414
+ StateId toId
415
+ )
416
+ public
417
+ pure
418
+ returns (bool isValid)
419
+ {
420
+ if (objectType != RELEASE()) { return false; }
421
+
422
+ if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
423
+ if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
424
+ if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
425
+ if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
426
+ if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
427
+ // TODO active -> scheduled missing, add tests to cover this and more scenarios (#358)
428
+
429
+ return false;
430
+ }
431
+
229
432
  //--- private functions ----------------------------------------------------//
230
433
 
231
- function _getAndVerifyContractInfo(
434
+ function _verifyService(IService service)
435
+ internal
436
+ view
437
+ returns(
438
+ IRegistry.ObjectInfo memory serviceInfo,
439
+ ObjectType serviceDomain,
440
+ VersionPart serviceVersion
441
+ )
442
+ {
443
+ if(!service.supportsInterface(type(IService).interfaceId)) {
444
+ revert ErrorReleaseManagerNotService(service);
445
+ }
446
+
447
+ address owner = msg.sender;
448
+ address serviceAuthority = service.authority();
449
+ serviceVersion = service.getVersion().toMajorPart();
450
+ serviceDomain = service.getDomain();// checked in registry
451
+ serviceInfo = service.getInitialInfo();
452
+
453
+ _verifyServiceInfo(service, serviceInfo, owner);
454
+
455
+ VersionPart releaseVersion = getNextVersion(); // never 0
456
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
457
+
458
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
459
+ if(serviceAuthority != releaseAuthority) {
460
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
461
+ service,
462
+ serviceAuthority,
463
+ releaseAuthority);
464
+ }
465
+
466
+ if(serviceVersion != releaseVersion) {
467
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
468
+ service,
469
+ serviceVersion,
470
+ releaseVersion);
471
+ }
472
+ }
473
+
474
+
475
+ function _verifyServiceInfo(
232
476
  IService service,
233
- ObjectType expectedType,
477
+ IRegistry.ObjectInfo memory info,
234
478
  address expectedOwner // assume always valid, can not be 0
235
479
  )
236
480
  internal
237
- // view
238
- returns(
239
- IRegistry.ObjectInfo memory info
240
- )
481
+ view
241
482
  {
242
- info = service.getInitialInfo();
243
- info.objectAddress = address(service);
244
- info.isInterceptor = false; // service is never interceptor, at least now
483
+ if(info.objectAddress != address(service)) {
484
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
485
+ }
486
+
487
+ if(info.isInterceptor != false) { // service is never interceptor
488
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
489
+ }
245
490
 
246
- if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
247
- revert UnexpectedRegisterableType(expectedType, info.objectType);
491
+ if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
492
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
248
493
  }
249
494
 
250
495
  address owner = info.initialOwner;
251
496
 
252
497
  if(owner != expectedOwner) { // registerable owner protection
253
- revert NotRegisterableOwner(expectedOwner);
498
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
254
499
  }
255
500
 
256
501
  if(owner == address(service)) {
257
- revert SelfRegistration();
502
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
258
503
  }
259
504
 
260
505
  if(_registry.isRegistered(owner)) {
261
- revert RegisterableOwnerIsRegistered();
506
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
262
507
  }
263
508
  }
264
509
 
265
- function _verifyService(
266
- IService service,
267
- VersionPart expectedVersion,
268
- ObjectType expectedDomain
510
+
511
+ function _verifyReleaseAuthorizations(
512
+ address[] memory serviceAddress,
513
+ RoleId[][] memory serviceRoles,
514
+ RoleId[][] memory functionRoles,
515
+ bytes4[][][] memory selectors
269
516
  )
270
517
  internal
271
- view
272
- returns(ObjectType)
518
+ pure
273
519
  {
274
- if(service.getMajorVersion() != expectedVersion) {
275
- revert UnexpectedServiceVersion(expectedVersion, service.getMajorVersion());
520
+ if(serviceAddress.length == 0) {
521
+ revert ErrorReleaseManagerReleaseEmpty();
276
522
  }
277
523
 
278
- if(service.getDomain() != expectedDomain) {
279
- revert UnexpectedServiceDomain(expectedDomain, service.getDomain());
524
+ for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
525
+ {
526
+ for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
527
+ {
528
+ RoleId role = serviceRoles[serviceIdx][roleIdx];
529
+ if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
530
+ revert ErrorReleaseManagerReleaseServiceRoleInvalid(serviceIdx, serviceAddress[serviceIdx], role);
531
+ }
532
+ }
280
533
  }
281
534
 
282
- return expectedDomain;
535
+ // TODO no duplicate service "domain" role per release
536
+ // TODO no duplicate service roles per service
537
+ // TODO no duplicate service function roles per service
538
+ // TODO no duplicate service function selectors per service
283
539
  }
284
540
 
285
- // TODO check if registry supports types specified in the config array
286
- function _createRelease(IRegistryService.FunctionConfig[] memory config)
541
+ function _setServiceAuthorizations(
542
+ AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
543
+ address serviceAddress,
544
+ string memory serviceName,
545
+ RoleId[] memory serviceRoles,
546
+ string[] memory serviceRoleNames,
547
+ RoleId[] memory functionRoles,
548
+ string[] memory functionRoleNames,
549
+ bytes4[][] memory selectors
550
+ )
287
551
  internal
288
552
  {
289
- VersionPart version = getNextVersion();
553
+ accessManager.createTarget(serviceAddress, serviceName);
554
+
555
+ for(uint idx = 0; idx < functionRoles.length; idx++)
556
+ {
557
+ uint64 roleInt = functionRoles[idx].toInt();
558
+
559
+ if(!accessManager.isRoleExists(roleInt)) {
560
+ accessManager.createRole(roleInt, functionRoleNames[idx]);
561
+ }
290
562
 
291
- if(config.length == 0) {
292
- revert ConfigMissing();
563
+ accessManager.setTargetFunctionRole(
564
+ serviceAddress,
565
+ selectors[idx],
566
+ functionRoles[idx].toInt());
293
567
  }
294
- // always in release
295
- _release[version].domains.push(REGISTRY());
296
- for(uint idx = 0; idx < config.length; idx++)
568
+
569
+ for(uint idx = 0; idx < serviceRoles.length; idx++)
297
570
  {
298
- ObjectType domain = config[idx].serviceDomain;
299
- // not "registry service" / zero domain
300
- if(
301
- domain == REGISTRY() ||
302
- domain.eqz()
303
- ) { revert ConfigServiceDomainInvalid(idx, domain); }
304
-
305
- bytes4[] memory selectors = config[idx].selectors;
306
-
307
- // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
308
- // no overwrite
309
- if(_selectors[version][domain].length > 0) {
310
- revert SelectorAlreadyExists(version, domain);
571
+ uint64 roleInt = serviceRoles[idx].toInt();
572
+
573
+ if(!accessManager.isRoleExists(roleInt)) {
574
+ accessManager.createRole(roleInt, serviceRoleNames[idx]);
311
575
  }
312
-
313
- _selectors[version][domain] = selectors;
314
- _release[version].domains.push(domain);
576
+
577
+ accessManager.grantRole(
578
+ serviceRoles[idx].toInt(),
579
+ serviceAddress,
580
+ 0);
581
+ }
582
+ }
583
+
584
+ // returns true iff a the address passes some simple proxy tests.
585
+ function _isRegistry(address registryAddress) internal view returns (bool) {
586
+
587
+ // zero address is certainly not registry
588
+ if (registryAddress == address(0)) {
589
+ return false;
590
+ }
591
+ // TODO try catch and return false in case of revert
592
+ // a just panic
593
+ // check if contract returns a zero nft id for its own address
594
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
595
+ return false;
315
596
  }
316
- // TODO set when activated?
317
- _release[version].createdAt = TimestampLib.blockTimestamp();
318
- //_release[version].updatedAt = TimestampLib.blockTimestamp();
319
597
 
320
- _awaitingRegistration = config.length;
598
+ return true;
321
599
  }
322
600
  }