@etherisc/gif-next 0.0.2-f0d86c2-077 → 0.0.2-f1fe735-758

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 (678) hide show
  1. package/README.md +267 -24
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1416 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1378 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +826 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +975 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +827 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +709 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +285 -1486
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +769 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +489 -1720
  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 +4 -0
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +1701 -0
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +4 -0
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +1220 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +758 -0
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3597 -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/base/Cloneable.sol/Cloneable.json +137 -0
  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/ObjectLifecycle.sol/ObjectLifecycle.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectLifecycle.sol/ObjectLifecycle.json +182 -0
  40. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +187 -0
  42. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  44. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  50. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  52. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  53. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  54. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  55. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  56. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  57. package/artifacts/contracts/{instance/base/ModuleBase.sol/ModuleBase.json → oracle/IOracle.sol/IOracle.json} +2 -2
  58. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  60. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +675 -0
  62. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  64. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +1034 -0
  66. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +730 -0
  68. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1134 -0
  70. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +754 -0
  72. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +703 -0
  74. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  76. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  77. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1078 -0
  78. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  79. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  80. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1453 -0
  82. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  83. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +742 -0
  84. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +863 -0
  86. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +730 -0
  88. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1315 -0
  90. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +822 -0
  92. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  93. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +256 -221
  94. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +772 -0
  96. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  97. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +720 -0
  98. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  99. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +549 -0
  100. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  101. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  102. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  103. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +207 -171
  104. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1183 -0
  106. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  107. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +766 -0
  108. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1012 -0
  110. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  111. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +786 -0
  112. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  113. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  114. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductService.sol/ProductService.json +708 -0
  116. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  117. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +702 -0
  118. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  119. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  120. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  121. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +678 -77
  122. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  123. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1123 -0
  124. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.dbg.json +4 -0
  125. package/artifacts/contracts/registry/IServiceAuthorization.sol/IServiceAuthorization.json +148 -0
  126. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  127. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  128. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  129. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -107
  130. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +1901 -0
  132. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  133. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1452 -0
  134. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  135. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +721 -0
  136. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.dbg.json +4 -0
  137. package/artifacts/contracts/registry/ReleaseLifecycle.sol/ReleaseLifecycle.json +164 -0
  138. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  139. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1177 -0
  140. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.dbg.json +4 -0
  141. package/artifacts/contracts/registry/ServiceAuthorization.sol/ServiceAuthorization.json +190 -0
  142. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.dbg.json +4 -0
  143. package/artifacts/contracts/registry/ServiceAuthorizationV3.sol/ServiceAuthorizationV3.json +206 -0
  144. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  145. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  146. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessAdmin.sol/AccessAdmin.json +1559 -0
  148. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  149. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  150. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  151. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1747 -0
  152. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  153. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1760 -0
  154. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  155. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1838 -0
  156. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  157. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1856 -0
  158. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  160. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  161. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1511 -0
  162. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  163. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +796 -0
  164. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +539 -0
  166. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  168. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.dbg.json +4 -0
  169. package/artifacts/contracts/shared/IAccessAdmin.sol/IAccessAdmin.json +1189 -0
  170. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  171. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  172. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  173. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  174. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  176. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  177. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +880 -0
  178. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  179. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  180. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +104 -141
  182. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  183. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -6
  184. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  185. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  186. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  187. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  188. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  189. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  190. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  191. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  192. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  193. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +163 -143
  194. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  195. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  196. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  197. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  198. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  199. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  200. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  201. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +497 -0
  202. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  203. package/artifacts/contracts/{experiment/statemachine/ISM.sol/ISM.json → shared/Lifecycle.sol/Lifecycle.json} +54 -45
  204. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  205. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  206. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  207. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  208. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  209. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  210. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  211. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  212. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  213. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  214. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  215. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  216. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  217. package/artifacts/contracts/shared/Service.sol/Service.json +507 -0
  218. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  219. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  220. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  221. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  222. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  223. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  224. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  225. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  226. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  227. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +1035 -0
  228. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +460 -0
  230. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  231. package/artifacts/contracts/staking/Staking.sol/Staking.json +2005 -0
  232. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.dbg.json +4 -0
  233. package/artifacts/contracts/staking/StakingLifecycle.sol/StakingLifecycle.json +164 -0
  234. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  235. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +761 -0
  236. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  237. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  238. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  239. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1343 -0
  240. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  241. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +718 -0
  242. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  243. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2237 -0
  244. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  245. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  246. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  247. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  248. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  249. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  250. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  252. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  254. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  256. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  258. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  259. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  260. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  262. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  263. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  264. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  265. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +186 -0
  266. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  268. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  269. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  270. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  271. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  272. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  274. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +266 -0
  276. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  277. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  278. package/artifacts/contracts/type/Selector.sol/SelectorLib.dbg.json +4 -0
  279. package/artifacts/contracts/type/Selector.sol/SelectorLib.json +129 -0
  280. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.dbg.json +4 -0
  281. package/artifacts/contracts/type/Selector.sol/SelectorSetLib.json +10 -0
  282. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  283. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  284. package/artifacts/contracts/type/String.sol/StrLib.dbg.json +4 -0
  285. package/artifacts/contracts/type/String.sol/StrLib.json +132 -0
  286. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  287. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  288. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  289. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  290. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  291. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  292. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  293. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  294. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  295. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  296. package/contracts/distribution/Distribution.sol +261 -0
  297. package/contracts/distribution/DistributionService.sol +297 -0
  298. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  299. package/contracts/distribution/IDistributionComponent.sol +66 -0
  300. package/contracts/distribution/IDistributionService.sol +81 -0
  301. package/contracts/instance/BundleManager.sol +126 -0
  302. package/contracts/instance/IInstance.sol +79 -44
  303. package/contracts/instance/IInstanceService.sol +97 -0
  304. package/contracts/instance/Instance.sol +247 -52
  305. package/contracts/instance/InstanceAdmin.sol +331 -0
  306. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  307. package/contracts/instance/InstanceReader.sol +392 -0
  308. package/contracts/instance/InstanceService.sol +439 -0
  309. package/contracts/instance/InstanceServiceManager.sol +44 -0
  310. package/contracts/instance/InstanceStore.sol +272 -0
  311. package/contracts/instance/base/BalanceStore.sol +123 -0
  312. package/contracts/instance/base/Cloneable.sol +28 -0
  313. package/contracts/instance/base/ObjectCounter.sol +21 -0
  314. package/contracts/instance/base/ObjectLifecycle.sol +106 -0
  315. package/contracts/instance/base/ObjectManager.sol +80 -0
  316. package/contracts/instance/module/IAccess.sol +46 -0
  317. package/contracts/instance/module/IBundle.sol +20 -0
  318. package/contracts/instance/module/IComponents.sol +52 -0
  319. package/contracts/instance/module/IDistribution.sol +42 -0
  320. package/contracts/instance/module/IPolicy.sol +84 -0
  321. package/contracts/instance/module/IRisk.sol +11 -0
  322. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  323. package/contracts/oracle/IOracle.sol +20 -0
  324. package/contracts/oracle/IOracleComponent.sol +32 -0
  325. package/contracts/oracle/IOracleService.sol +65 -0
  326. package/contracts/oracle/Oracle.sol +145 -0
  327. package/contracts/oracle/OracleService.sol +278 -0
  328. package/contracts/oracle/OracleServiceManager.sol +42 -0
  329. package/contracts/pool/BundleService.sol +296 -0
  330. package/contracts/pool/BundleServiceManager.sol +42 -0
  331. package/contracts/pool/IBundleService.sol +106 -0
  332. package/contracts/pool/IPoolComponent.sol +112 -0
  333. package/contracts/pool/IPoolService.sol +150 -0
  334. package/contracts/pool/Pool.sol +299 -0
  335. package/contracts/pool/PoolService.sol +452 -0
  336. package/contracts/pool/PoolServiceManager.sol +42 -0
  337. package/contracts/product/ApplicationService.sol +254 -0
  338. package/contracts/product/ApplicationServiceManager.sol +38 -0
  339. package/contracts/product/ClaimService.sol +442 -0
  340. package/contracts/product/ClaimServiceManager.sol +38 -0
  341. package/contracts/product/IApplicationService.sol +62 -0
  342. package/contracts/product/IClaimService.sol +99 -0
  343. package/contracts/product/IPolicyService.sol +78 -0
  344. package/contracts/product/IPricingService.sol +39 -0
  345. package/contracts/product/IProductComponent.sol +42 -0
  346. package/contracts/product/IProductService.sol +33 -0
  347. package/contracts/product/PolicyService.sol +475 -0
  348. package/contracts/product/PolicyServiceManager.sol +42 -0
  349. package/contracts/product/PricingService.sol +300 -0
  350. package/contracts/product/PricingServiceManager.sol +42 -0
  351. package/contracts/product/Product.sol +377 -0
  352. package/contracts/product/ProductService.sol +124 -0
  353. package/contracts/product/ProductServiceManager.sol +42 -0
  354. package/contracts/registry/ChainNft.sol +95 -37
  355. package/contracts/registry/IRegistry.sol +95 -28
  356. package/contracts/registry/IRegistryService.sol +69 -0
  357. package/contracts/registry/IServiceAuthorization.sol +38 -0
  358. package/contracts/registry/ITransferInterceptor.sol +7 -0
  359. package/contracts/registry/Registry.sol +482 -281
  360. package/contracts/registry/RegistryAdmin.sol +335 -0
  361. package/contracts/registry/RegistryService.sol +266 -0
  362. package/contracts/registry/RegistryServiceManager.sol +53 -0
  363. package/contracts/registry/ReleaseLifecycle.sol +27 -0
  364. package/contracts/registry/ReleaseManager.sol +503 -0
  365. package/contracts/registry/ServiceAuthorization.sol +90 -0
  366. package/contracts/registry/ServiceAuthorizationV3.sol +200 -0
  367. package/contracts/registry/TokenRegistry.sol +315 -0
  368. package/contracts/shared/AccessAdmin.sol +759 -0
  369. package/contracts/shared/AccessManagerCustom.sol +741 -0
  370. package/contracts/shared/AccessManagerExtended.sol +481 -0
  371. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  372. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  373. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  374. package/contracts/shared/Component.sol +281 -0
  375. package/contracts/shared/ComponentService.sol +620 -0
  376. package/contracts/shared/ComponentServiceManager.sol +35 -0
  377. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  378. package/contracts/shared/ERC165.sol +15 -9
  379. package/contracts/shared/IAccessAdmin.sol +168 -0
  380. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  381. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  382. package/contracts/shared/IComponent.sol +70 -0
  383. package/contracts/shared/IComponentService.sol +102 -0
  384. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  385. package/contracts/shared/IKeyValueStore.sol +54 -0
  386. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -5
  387. package/contracts/shared/INftOwnable.sol +23 -0
  388. package/contracts/shared/IPolicyHolder.sol +45 -0
  389. package/contracts/shared/IRegisterable.sol +10 -19
  390. package/contracts/shared/IRegistryLinked.sol +11 -0
  391. package/contracts/shared/IService.sol +25 -0
  392. package/contracts/shared/IVersionable.sol +38 -37
  393. package/contracts/shared/InitializableCustom.sol +177 -0
  394. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  395. package/contracts/shared/KeyValueStore.sol +131 -0
  396. package/contracts/shared/Lifecycle.sol +77 -0
  397. package/contracts/shared/NftIdSetManager.sol +65 -0
  398. package/contracts/shared/NftOwnable.sol +107 -0
  399. package/contracts/shared/PolicyHolder.sol +102 -0
  400. package/contracts/shared/ProxyManager.sol +199 -0
  401. package/contracts/shared/Registerable.sol +54 -65
  402. package/contracts/shared/RegistryLinked.sol +43 -0
  403. package/contracts/shared/Service.sol +83 -0
  404. package/contracts/shared/TokenHandler.sol +58 -0
  405. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  406. package/contracts/shared/Versionable.sol +38 -68
  407. package/contracts/staking/IStaking.sol +168 -0
  408. package/contracts/staking/IStakingService.sol +153 -0
  409. package/contracts/staking/StakeManagerLib.sol +231 -0
  410. package/contracts/staking/Staking.sol +513 -0
  411. package/contracts/staking/StakingLifecycle.sol +23 -0
  412. package/contracts/staking/StakingManager.sol +54 -0
  413. package/contracts/staking/StakingReader.sol +187 -0
  414. package/contracts/staking/StakingService.sol +411 -0
  415. package/contracts/staking/StakingServiceManager.sol +44 -0
  416. package/contracts/staking/StakingStore.sol +615 -0
  417. package/contracts/staking/TargetManagerLib.sol +207 -0
  418. package/contracts/{types → type}/AddressSet.sol +1 -1
  419. package/contracts/type/Amount.sol +128 -0
  420. package/contracts/{types → type}/Blocknumber.sol +21 -3
  421. package/contracts/type/ClaimId.sol +75 -0
  422. package/contracts/type/DistributorType.sol +55 -0
  423. package/contracts/type/Fee.sol +66 -0
  424. package/contracts/{types → type}/Key32.sol +8 -3
  425. package/contracts/{types → type}/NftId.sol +21 -15
  426. package/contracts/type/NftIdSet.sol +62 -0
  427. package/contracts/type/ObjectType.sol +241 -0
  428. package/contracts/type/PayoutId.sol +82 -0
  429. package/contracts/type/Referral.sol +89 -0
  430. package/contracts/type/RequestId.sol +75 -0
  431. package/contracts/type/RiskId.sol +43 -0
  432. package/contracts/type/RoleId.sol +201 -0
  433. package/contracts/type/Seconds.sol +81 -0
  434. package/contracts/type/Selector.sol +102 -0
  435. package/contracts/{types → type}/StateId.sol +39 -5
  436. package/contracts/type/String.sol +53 -0
  437. package/contracts/{types → type}/Timestamp.sol +27 -14
  438. package/contracts/{types → type}/UFixed.sol +129 -12
  439. package/contracts/{types → type}/Version.sol +15 -2
  440. package/package.json +11 -7
  441. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  442. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  443. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  444. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  445. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  446. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  447. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  448. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  449. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  450. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  451. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  452. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  453. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  454. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  455. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  456. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  457. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  458. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  459. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  460. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  461. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  462. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  463. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  464. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  465. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  466. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  467. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  468. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  469. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  470. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  471. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  472. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  473. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  474. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  475. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  476. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  477. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  478. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  479. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  480. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  481. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  482. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  483. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  484. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  485. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  486. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  487. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  488. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  489. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  490. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  491. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  492. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  493. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  494. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  495. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  496. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  497. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  498. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  499. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  500. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  501. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  502. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  503. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  504. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  505. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  506. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  508. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  509. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  510. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  511. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  512. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  513. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  515. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  516. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  517. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  519. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  521. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  522. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  523. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  524. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  525. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  526. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  527. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  528. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  529. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  530. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  531. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  532. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  533. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  534. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  535. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  536. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  537. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  538. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  539. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  540. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  541. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  542. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  543. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  544. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  545. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  546. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  547. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  548. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  549. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  550. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  551. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  552. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  553. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  554. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  555. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  556. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  557. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  558. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  559. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  560. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.json +0 -452
  561. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  562. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  563. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  564. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  565. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  566. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  567. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  568. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  569. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  570. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  571. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  572. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  573. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  574. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  575. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  576. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  577. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  578. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  579. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  580. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  581. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  582. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  583. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  584. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  585. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  586. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  587. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  588. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  589. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  590. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  591. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  592. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  593. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  594. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  595. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  596. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  597. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  598. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  599. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  600. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  601. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  602. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  603. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  604. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  605. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  606. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  607. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  608. package/contracts/components/BaseComponent.sol +0 -88
  609. package/contracts/components/IBaseComponent.sol +0 -19
  610. package/contracts/components/IPoolComponent.sol +0 -57
  611. package/contracts/components/IProductComponent.sol +0 -19
  612. package/contracts/components/Pool.sol +0 -174
  613. package/contracts/components/Product.sol +0 -117
  614. package/contracts/experiment/errors/Require.sol +0 -38
  615. package/contracts/experiment/errors/Revert.sol +0 -44
  616. package/contracts/experiment/inheritance/A.sol +0 -53
  617. package/contracts/experiment/inheritance/B.sol +0 -28
  618. package/contracts/experiment/inheritance/C.sol +0 -34
  619. package/contracts/experiment/inheritance/IA.sol +0 -13
  620. package/contracts/experiment/inheritance/IB.sol +0 -10
  621. package/contracts/experiment/inheritance/IC.sol +0 -12
  622. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  623. package/contracts/experiment/statemachine/ISM.sol +0 -25
  624. package/contracts/experiment/statemachine/README.md +0 -112
  625. package/contracts/experiment/statemachine/SM.sol +0 -57
  626. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  627. package/contracts/experiment/types/TypeA.sol +0 -47
  628. package/contracts/experiment/types/TypeB.sol +0 -29
  629. package/contracts/instance/IInstanceLinked.sol +0 -8
  630. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  631. package/contracts/instance/base/IInstanceBase.sol +0 -14
  632. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  633. package/contracts/instance/base/IService.sol +0 -15
  634. package/contracts/instance/base/InstanceBase.sol +0 -80
  635. package/contracts/instance/base/KeyValueStore.sol +0 -156
  636. package/contracts/instance/base/Lifecycle.sol +0 -95
  637. package/contracts/instance/base/ModuleBase.sol +0 -52
  638. package/contracts/instance/base/ServiceBase.sol +0 -37
  639. package/contracts/instance/module/access/Access.sol +0 -149
  640. package/contracts/instance/module/access/IAccess.sol +0 -53
  641. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  642. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  643. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  644. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  645. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  646. package/contracts/instance/module/component/IComponent.sol +0 -53
  647. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  648. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  649. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  650. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  651. package/contracts/instance/module/risk/IRisk.sol +0 -10
  652. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  653. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  654. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  655. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  656. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  657. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  658. package/contracts/instance/service/IPoolService.sol +0 -30
  659. package/contracts/instance/service/IProductService.sol +0 -58
  660. package/contracts/instance/service/PoolService.sol +0 -123
  661. package/contracts/instance/service/ProductService.sol +0 -354
  662. package/contracts/registry/IChainNft.sol +0 -21
  663. package/contracts/registry/IRegistryLinked.sol +0 -8
  664. package/contracts/shared/IOwnable.sol +0 -6
  665. package/contracts/test/TestFee.sol +0 -25
  666. package/contracts/test/TestPool.sol +0 -22
  667. package/contracts/test/TestProduct.sol +0 -44
  668. package/contracts/test/TestRegisterable.sol +0 -19
  669. package/contracts/test/TestRoleId.sol +0 -14
  670. package/contracts/test/TestService.sol +0 -32
  671. package/contracts/test/TestToken.sol +0 -26
  672. package/contracts/test/TestVersion.sol +0 -44
  673. package/contracts/test/TestVersionable.sol +0 -17
  674. package/contracts/types/ChainId.sol +0 -38
  675. package/contracts/types/Fee.sol +0 -51
  676. package/contracts/types/NftIdSet.sol +0 -60
  677. package/contracts/types/ObjectType.sol +0 -115
  678. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,503 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
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";
8
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
9
+ import {Math} from "@openzeppelin/contracts/utils/math/Math.sol";
10
+
11
+ import {NftId} from "../type/NftId.sol";
12
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
13
+ import {ObjectType, ObjectTypeLib, POOL, 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, PAUSED, CLOSED} from "../type/StateId.sol";
18
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
19
+
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";
25
+
26
+ import {IRegistry} from "./IRegistry.sol";
27
+ import {IRegistryLinked} from "../shared/IRegistryLinked.sol";
28
+ import {IRegistryService} from "./IRegistryService.sol";
29
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
30
+ import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
31
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
32
+ import {Registry} from "./Registry.sol";
33
+ import {TokenRegistry} from "./TokenRegistry.sol";
34
+ import {ReleaseLifecycle} from "./ReleaseLifecycle.sol";
35
+
36
+
37
+ contract ReleaseManager is
38
+ AccessManaged,
39
+ ReleaseLifecycle,
40
+ IRegistryLinked
41
+ {
42
+ using ObjectTypeLib for ObjectType;
43
+
44
+ uint256 public constant INITIAL_GIF_VERSION = 3;
45
+
46
+ event LogReleaseCreation(VersionPart version, bytes32 salt, address authority);
47
+ event LogReleaseActivation(VersionPart version);
48
+ event LogReleaseDisabled(VersionPart version);
49
+ event LogReleaseEnabled(VersionPart version);
50
+
51
+ // constructor
52
+ error ErrorReleaseManagerNotRegistry(Registry registry);
53
+
54
+ // createNextRelease
55
+ error ErrorReleaseManagerReleaseCreationDisallowed(VersionPart version, StateId currentStateId);
56
+
57
+ // prepareRelease
58
+ error ErrorReleaseManagerReleasePreparationDisallowed(VersionPart version, StateId currentStateId);
59
+ error ErrorReleaseManagerReleaseAlreadyPrepared(VersionPart version, StateId currentStateId);
60
+ error ErrorReleaseManagerVersionMismatch(VersionPart expected, VersionPart actual);
61
+ error ErrorReleaseManagerNoDomains(VersionPart version);
62
+
63
+ // registerService
64
+ error ErrorReleaseManagerNoServiceRegistrationExpected();
65
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
66
+ error ErrorReleaseManagerServiceDomainMismatch(ObjectType expectedDomain, ObjectType actualDomain);
67
+ error ErrorReleaseManagerNotService(address notService);
68
+ error ErrorReleaseManagerServiceAddressMismatch(address expected, address actual);
69
+
70
+ // activateNextRelease
71
+ error ErrorReleaseManagerReleaseActivationDisallowed(VersionPart releaseVersion, StateId currentStateId);
72
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
73
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
74
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
75
+
76
+ // disableRelease
77
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
78
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
79
+
80
+ // _verifyService
81
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
82
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
83
+
84
+ // _verifyServiceInfo
85
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
86
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
87
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
88
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
89
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
90
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
91
+
92
+ Seconds public constant MIN_DISABLE_DELAY = Seconds.wrap(60 * 24 * 365); // 1 year
93
+
94
+ RegistryAdmin private _admin;
95
+ address public _releaseAccessManagerCodeAddress;
96
+ Registry private _registry;
97
+
98
+ // TODO remove once it's clear that release authority will always be registry authority
99
+ mapping(VersionPart version => address authority) internal _releaseAccessManager;
100
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
101
+ mapping(address registryService => VersionPart version) _releaseVersionByAddress;
102
+
103
+ mapping(VersionPart version => IServiceAuthorization authz) internal _serviceAuthorization;
104
+
105
+ VersionPart private _initial;// first active version
106
+ VersionPart internal _latest; // latest active version
107
+ VersionPart internal _next; // version to create and activate
108
+ mapping(VersionPart verson => StateId releaseState) private _state;
109
+
110
+ uint256 internal _registeredServices;
111
+ uint256 internal _servicesToRegister;
112
+
113
+ constructor(Registry registry)
114
+ AccessManaged(msg.sender)
115
+ {
116
+ // TODO move this part to RegistryLinked constructor
117
+ if(!_isRegistry(address(registry))) {
118
+ revert ErrorReleaseManagerNotRegistry(registry);
119
+ }
120
+
121
+ setAuthority(registry.getAuthority());
122
+
123
+ _registry = registry;
124
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
125
+
126
+ _initial = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION);
127
+ _next = VersionPartLib.toVersionPart(INITIAL_GIF_VERSION - 1);
128
+
129
+ //AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager = new AccessManagerExtendedWithDisableInitializeable();
130
+ //masterReleaseAccessManager.initialize(address(this));
131
+ //masterReleaseAccessManager.disable();
132
+ //_releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
133
+ }
134
+
135
+ /// @dev skips previous release if was not activated
136
+ /// sets next release into state SCHEDULED
137
+ function createNextRelease()
138
+ external
139
+ restricted() // GIF_ADMIN_ROLE
140
+ returns(VersionPart)
141
+ {
142
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
143
+ _servicesToRegister = 0;
144
+ _registeredServices = 0;
145
+ _state[_next] = getInitialState(RELEASE());
146
+
147
+ return _next;
148
+ }
149
+
150
+ function prepareNextRelease(
151
+ IServiceAuthorization serviceAuthorization,
152
+ bytes32 salt
153
+ )
154
+ external
155
+ restricted() // GIF_MANAGER_ROLE
156
+ returns(
157
+ address authority,
158
+ VersionPart version,
159
+ bytes32 releaseSalt
160
+ )
161
+ {
162
+ (
163
+ VersionPart releaseVersion,
164
+ uint serviceDomainsCount
165
+ ) = serviceAuthorization.getRelease();
166
+
167
+ // verify authorizaion contract release matches with expected version
168
+ if (releaseVersion != _next) {
169
+ revert ErrorReleaseManagerVersionMismatch(_next, releaseVersion);
170
+ }
171
+
172
+ // sanity check to ensure service domain list is not empty
173
+ if (serviceDomainsCount == 0) {
174
+ revert ErrorReleaseManagerNoDomains(_next);
175
+ }
176
+
177
+ version = _next;
178
+ StateId state = _state[version];
179
+ StateId newState = DEPLOYING();
180
+
181
+ // verify release in state SCHEDULED
182
+ if (!isValidTransition(RELEASE(), state, newState)) {
183
+ revert ErrorReleaseManagerReleasePreparationDisallowed(version, state);
184
+ }
185
+
186
+ // verify prepareNextRelease is only called once per release
187
+ if(_servicesToRegister > 0) {
188
+ revert ErrorReleaseManagerReleaseAlreadyPrepared(version, state);
189
+ }
190
+
191
+ // ensures unique salt
192
+ // TODO CreateX have clones capability also
193
+ // what would releaseSalt look like if used with CreateX in pemissioned mode?
194
+ releaseSalt = keccak256(
195
+ bytes.concat(
196
+ bytes32(version.toInt()),
197
+ salt));
198
+
199
+ authority = _admin.authority();
200
+ _serviceAuthorization[_next] = serviceAuthorization;
201
+ _releaseAccessManager[_next] = authority;
202
+ _servicesToRegister = serviceDomainsCount;
203
+ _state[version] = newState;
204
+
205
+ emit LogReleaseCreation(version, releaseSalt, authority);
206
+ }
207
+
208
+ // TODO this function can have 0 args -> use stored addresses from prepareNextRelease()
209
+ function registerService(IService service)
210
+ external
211
+ restricted // GIF_MANAGER_ROLE
212
+ returns(NftId nftId)
213
+ {
214
+ VersionPart releaseVersion = _next;
215
+ StateId state = _state[releaseVersion];
216
+ StateId newState = DEPLOYING();
217
+
218
+ // verify release in state DEPLOYING
219
+ if (!isValidTransition(RELEASE(), state, newState)) {
220
+ // TOOD name must represent failed state transition
221
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(state);
222
+ }
223
+
224
+ // not all services are registered
225
+ if (_servicesToRegister == _registeredServices) {
226
+ revert ErrorReleaseManagerNoServiceRegistrationExpected();
227
+ }
228
+
229
+ // service can work with release manager
230
+ (
231
+ IRegistry.ObjectInfo memory info,
232
+ ObjectType serviceDomain,
233
+ VersionPart serviceVersion
234
+ ) = _verifyService(service);
235
+
236
+ // service domain matches defined in release config
237
+ ObjectType expectedDomain = _serviceAuthorization[releaseVersion].getServiceDomain(_registeredServices);
238
+ if (serviceDomain != expectedDomain) {
239
+ revert ErrorReleaseManagerServiceDomainMismatch(expectedDomain, serviceDomain);
240
+ }
241
+
242
+ // TODO uncomment when release addresses calculations are ready
243
+ // service address matches defined in release config
244
+ /*address expectedAddress = _serviceAuthorization[releaseVersion].getServiceAddress(expectedDomain);
245
+ if(address(service) != expectedAddress) {
246
+ //revert ErrorReleaseManagerServiceAddressMismatch(expectedAddress, address(service));
247
+ }*/
248
+
249
+ // checked in registry
250
+ _releaseInfo[releaseVersion].domains.push(serviceDomain);
251
+
252
+ _state[releaseVersion] = newState;
253
+ _registeredServices++;
254
+
255
+ // setup service authorization
256
+ _admin.authorizeService(
257
+ _serviceAuthorization[releaseVersion],
258
+ service);
259
+
260
+ // TODO consider to extend this to REGISTRY
261
+ // special roles for registry/staking/pool service
262
+ if (serviceDomain == STAKING() || serviceDomain == POOL()) {
263
+ // TODO rename to grantServiceDomainRole()
264
+ _admin.grantServiceRoleForAllVersions(service, serviceDomain);
265
+ }
266
+
267
+ // register service with registry
268
+ nftId = _registry.registerService(info, serviceVersion, serviceDomain);
269
+ service.linkToRegisteredNftId();
270
+ }
271
+
272
+
273
+ function activateNextRelease()
274
+ external
275
+ restricted // GIF_ADMIN_ROLE
276
+ {
277
+ VersionPart version = _next;
278
+ StateId state = _state[version];
279
+ StateId newState = ACTIVE();
280
+
281
+ // verify release in state DEPLOYING
282
+ if (!isValidTransition(RELEASE(), state, newState)) {
283
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
284
+ }
285
+
286
+ // release fully deployed
287
+ if(_registeredServices < _servicesToRegister) {
288
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _servicesToRegister - _registeredServices);
289
+ }
290
+
291
+ // release exists, registry service MUST exist
292
+ address service = _registry.getServiceAddress(REGISTRY(), version);
293
+ if(service == address(0)) {
294
+ revert ErrorReleaseManagerReleaseNotCreated(version);
295
+ }
296
+
297
+ _latest = version;
298
+ _state[version] = newState;
299
+
300
+ _releaseVersionByAddress[service] = version;
301
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
302
+
303
+ emit LogReleaseActivation(version);
304
+ }
305
+
306
+ /// @dev stop all operations with release services
307
+ function pauseRelease(VersionPart version)
308
+ external
309
+ restricted // GIF_ADMIN_ROLE
310
+ {
311
+ StateId state = _state[version];
312
+ StateId newState = PAUSED();
313
+
314
+ // verify release in state ACTIVE
315
+ if (!isValidTransition(RELEASE(), state, newState)) {
316
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
317
+ }
318
+
319
+ // TODO come up with a substitute
320
+ //_releaseAccessManager[version].disable();
321
+
322
+ _state[version] = newState;
323
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
324
+
325
+ emit LogReleaseDisabled(version);
326
+ }
327
+
328
+ // TODO consider revert if some delay is expired -> becomes disabled automatically
329
+ /// @dev resume operations with release services
330
+ function unpauseRelease(VersionPart version)
331
+ external
332
+ restricted // GIF_ADMIN_ROLE
333
+ {
334
+ StateId state = _state[version];
335
+ StateId newState = ACTIVE();
336
+
337
+ // verify release in state PAUSED
338
+ if (!isValidTransition(RELEASE(), state, newState)) {
339
+ revert ErrorReleaseManagerReleaseActivationDisallowed(version, state);
340
+ }
341
+
342
+ // TODO come up with a substitute
343
+ // _releaseAccessManager[version].enable();
344
+
345
+ _state[version] = newState;
346
+ _releaseInfo[version].disabledAt = zeroTimestamp();
347
+
348
+ emit LogReleaseEnabled(version);
349
+ }
350
+
351
+ //--- view functions ----------------------------------------------------//
352
+
353
+ function predictDeterministicAddress(
354
+ address implementation,
355
+ bytes32 salt,
356
+ address deployer
357
+ ) external pure returns (address predicted) {
358
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
359
+ }
360
+
361
+ function isActiveRegistryService(address service) external view returns(bool) {
362
+ VersionPart version = _releaseVersionByAddress[service];
363
+ return isActiveRelease(version);
364
+ }
365
+
366
+ function isActiveRelease(VersionPart version) public view returns(bool) {
367
+ return _state[version] == ACTIVE();
368
+ }
369
+
370
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
371
+ return _releaseInfo[version];
372
+ }
373
+
374
+ function getNextVersion() public view returns(VersionPart) {
375
+ return _next;
376
+ }
377
+
378
+ function getLatestVersion() external view returns(VersionPart) {
379
+ return _latest;
380
+ }
381
+
382
+ function getInitialVersion() external view returns(VersionPart) {
383
+ return _initial;
384
+ }
385
+
386
+ function getState(VersionPart version) external view returns (StateId stateId) {
387
+ return _state[version];
388
+ }
389
+
390
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
391
+ return _servicesToRegister - _registeredServices;
392
+ }
393
+
394
+ function getReleaseAccessManager(VersionPart version) external view returns(address) {
395
+ return _releaseAccessManager[version];
396
+ }
397
+
398
+ function getRegistryAdmin() external view returns (address) {
399
+ return address(_admin);
400
+ }
401
+
402
+ //--- IRegistryLinked ------------------------------------------------------//
403
+
404
+ function getRegistry() external view returns (IRegistry) {
405
+ return _registry;
406
+ }
407
+
408
+ //--- private functions ----------------------------------------------------//
409
+
410
+ function _verifyService(IService service)
411
+ internal
412
+ view
413
+ returns(
414
+ IRegistry.ObjectInfo memory serviceInfo,
415
+ ObjectType serviceDomain,
416
+ VersionPart serviceVersion
417
+ )
418
+ {
419
+ if(!service.supportsInterface(type(IService).interfaceId)) {
420
+ revert ErrorReleaseManagerNotService(address(service));
421
+ }
422
+
423
+ address owner = msg.sender;
424
+ address serviceAuthority = service.authority();
425
+ serviceVersion = service.getVersion().toMajorPart();
426
+ serviceDomain = service.getDomain();// checked in registry
427
+ serviceInfo = service.getInitialInfo();
428
+
429
+ _verifyServiceInfo(service, serviceInfo, owner);
430
+
431
+ VersionPart releaseVersion = _next; // never 0
432
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
433
+
434
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
435
+ if(serviceAuthority != releaseAuthority) {
436
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
437
+ service,
438
+ serviceAuthority,
439
+ releaseAuthority);
440
+ }
441
+
442
+ if(serviceVersion != releaseVersion) {
443
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
444
+ service,
445
+ serviceVersion,
446
+ releaseVersion);
447
+ }
448
+ }
449
+
450
+
451
+ function _verifyServiceInfo(
452
+ IService service,
453
+ IRegistry.ObjectInfo memory info,
454
+ address expectedOwner // assume always valid, can not be 0
455
+ )
456
+ internal
457
+ view
458
+ {
459
+ if(info.objectAddress != address(service)) {
460
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
461
+ }
462
+
463
+ if(info.isInterceptor != false) { // service is never interceptor
464
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
465
+ }
466
+
467
+ if(info.objectType != SERVICE()) {
468
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
469
+ }
470
+
471
+ address owner = info.initialOwner;
472
+
473
+ if(owner != expectedOwner) { // registerable owner protection
474
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
475
+ }
476
+
477
+ if(owner == address(service)) {
478
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
479
+ }
480
+
481
+ if(_registry.isRegistered(owner)) {
482
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
483
+ }
484
+ }
485
+
486
+ /// @dev returns true iff a the address passes some simple proxy tests.
487
+ function _isRegistry(address registryAddress) internal view returns (bool) {
488
+
489
+ // zero address is certainly not registry
490
+ if (registryAddress == address(0)) {
491
+ return false;
492
+ }
493
+ // TODO try catch and return false in case of revert
494
+ // or just panic
495
+ // check if contract returns a zero nft id for its own address
496
+ if (IRegistry(registryAddress).getNftId(registryAddress).eqz()) {
497
+ return false;
498
+ }
499
+
500
+ return true;
501
+ }
502
+ }
503
+
@@ -0,0 +1,90 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {IAccessAdmin} from "../shared/IAccessAdmin.sol";
5
+ import {ObjectType} from "../../contracts/type/ObjectType.sol";
6
+ import {IServiceAuthorization} from "./IServiceAuthorization.sol";
7
+ import {SelectorLib} from "../../contracts/type/Selector.sol";
8
+ import {StrLib} from "../../contracts/type/String.sol";
9
+ import {VersionPart, VersionPartLib} from "../../contracts/type/Version.sol";
10
+
11
+ /// @dev Base contract for release specific service authorization contracts.
12
+ contract ServiceAuthorization
13
+ is IServiceAuthorization
14
+ {
15
+ uint256 public constant GIF_VERSION = 3;
16
+
17
+ string private _commitHash;
18
+
19
+ ObjectType[] internal _serviceDomains;
20
+ mapping(ObjectType domain => address service) internal _serviceAddress;
21
+ mapping(ObjectType domain => ObjectType[] authorizedDomains) internal _authorizedDomains;
22
+ mapping(ObjectType domain => mapping(ObjectType authorizedDomain => IAccessAdmin.Function[] functions)) internal _authorizedFunctions;
23
+
24
+ constructor(string memory commitHash) {
25
+ _commitHash = commitHash;
26
+ _setupDomains();
27
+ _setupDomainAuthorizations();
28
+ }
29
+
30
+ function getCommitHash() external view returns(string memory commitHash) {
31
+ return _commitHash;
32
+ }
33
+
34
+ function getRelease() external view returns(VersionPart release, uint domainsCount) {
35
+ return (
36
+ VersionPartLib.toVersionPart(GIF_VERSION),
37
+ _serviceDomains.length
38
+ );
39
+ }
40
+
41
+ function getServiceDomains() external view returns(ObjectType[] memory serviceDomains) {
42
+ return _serviceDomains;
43
+ }
44
+
45
+ function getServiceDomain(uint idx) external view returns(ObjectType serviceDomain) {
46
+ return _serviceDomains[idx];
47
+ }
48
+
49
+ function getServiceAddress(ObjectType serviceDomain) external view returns(address service) {
50
+ return _serviceAddress[serviceDomain];
51
+ }
52
+
53
+ function getAuthorizedDomains(ObjectType serviceDomain) external view returns(ObjectType[] memory authorizatedDomains) {
54
+ return _authorizedDomains[serviceDomain];
55
+ }
56
+
57
+ function getAuthorizedFunctions(ObjectType serviceDomain, ObjectType authorizedDomain) external view returns(IAccessAdmin.Function[] memory authorizatedFunctions) {
58
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
59
+ }
60
+
61
+ /// @dev Overwrite this function for a specific realease.
62
+ function _setupDomains() internal virtual {}
63
+
64
+ /// @dev Overwrite this function for a specific realease.
65
+ function _setupDomainAuthorizations() internal virtual {}
66
+
67
+ /// @dev Use this method to to add an authorized domain.
68
+ /// The services will need to be registered in the order they are added using this function.
69
+ function _authorizeDomain(ObjectType serviceDomain, address serviceAddress) internal {
70
+ _serviceDomains.push(serviceDomain);
71
+ _serviceAddress[serviceDomain] = serviceAddress;
72
+ }
73
+
74
+ function _authorizeForService(ObjectType serviceDomain, ObjectType authorizedDomain)
75
+ internal
76
+ returns (IAccessAdmin.Function[] storage authorizatedFunctions)
77
+ {
78
+ _authorizedDomains[serviceDomain].push(authorizedDomain);
79
+ return _authorizedFunctions[serviceDomain][authorizedDomain];
80
+ }
81
+
82
+ /// @dev Use this method to authorize a specific function authorization
83
+ function _authorize(IAccessAdmin.Function[] storage functions, bytes4 selector, string memory name) internal {
84
+ functions.push(
85
+ IAccessAdmin.Function({
86
+ selector: SelectorLib.toSelector(selector),
87
+ name: StrLib.toStr(name)}));
88
+ }
89
+ }
90
+