@etherisc/gif-next 0.0.2-c336201-668 → 0.0.2-c37bcc5-708

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 (648) hide show
  1. package/README.md +250 -14
  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 +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/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 +814 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +315 -1509
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +4 -0
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +650 -0
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +417 -1641
  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 +1053 -0
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +4 -0
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +734 -0
  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/base/Cloneable.sol/Cloneable.json +190 -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/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  39. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  40. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +4 -0
  41. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +129 -0
  42. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +4 -0
  43. package/artifacts/contracts/instance/module/{bundle/IBundle.sol → IBundle.sol}/IBundle.json +1 -1
  44. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  45. package/artifacts/contracts/instance/module/{access/IAccess.sol/IAccess.json → IComponents.sol/IComponents.json} +2 -2
  46. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.json +10 -0
  48. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +4 -0
  49. package/artifacts/contracts/instance/module/{policy/IPolicy.sol → IPolicy.sol}/IPolicy.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +4 -0
  51. package/artifacts/contracts/instance/module/{risk/IRisk.sol → IRisk.sol}/IRisk.json +1 -1
  52. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  53. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  54. package/artifacts/contracts/oracle/IOracle.sol/IOracle.dbg.json +4 -0
  55. package/artifacts/contracts/{instance/base/ModuleBase.sol/ModuleBase.json → oracle/IOracle.sol/IOracle.json} +2 -2
  56. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.dbg.json +4 -0
  57. package/artifacts/contracts/oracle/IOracleComponent.sol/IOracleComponent.json +759 -0
  58. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.dbg.json +4 -0
  59. package/artifacts/contracts/oracle/IOracleService.sol/IOracleService.json +662 -0
  60. package/artifacts/contracts/oracle/Oracle.sol/Oracle.dbg.json +4 -0
  61. package/artifacts/contracts/oracle/Oracle.sol/Oracle.json +1146 -0
  62. package/artifacts/contracts/oracle/OracleService.sol/OracleService.dbg.json +4 -0
  63. package/artifacts/contracts/oracle/OracleService.sol/OracleService.json +997 -0
  64. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.dbg.json +4 -0
  65. package/artifacts/contracts/oracle/OracleServiceManager.sol/OracleServiceManager.json +718 -0
  66. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  67. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1105 -0
  68. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  69. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +746 -0
  70. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  71. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.json +690 -0
  72. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  73. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1154 -0
  74. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  75. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1065 -0
  76. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  77. package/artifacts/contracts/pool/Pool.sol/Pool.json +1565 -0
  78. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  79. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1432 -0
  80. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  81. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +738 -0
  82. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  83. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +834 -0
  84. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  85. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +722 -0
  86. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  87. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1278 -0
  88. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  89. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +810 -0
  90. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  91. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → product/IApplicationService.sol/IApplicationService.json} +252 -230
  92. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  93. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +759 -0
  94. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  95. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +707 -0
  96. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  97. package/artifacts/contracts/product/IPricingService.sol/IPricingService.json +536 -0
  98. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  99. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +995 -0
  100. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  101. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IProductService.sol/IProductService.json} +197 -174
  102. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  103. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1146 -0
  104. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  105. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +754 -0
  106. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  107. package/artifacts/contracts/product/PricingService.sol/PricingService.json +983 -0
  108. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  109. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +778 -0
  110. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  111. package/artifacts/contracts/product/Product.sol/Product.json +1397 -0
  112. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  113. package/artifacts/contracts/product/ProductService.sol/ProductService.json +679 -0
  114. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  115. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +694 -0
  116. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  117. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +199 -12
  118. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +678 -77
  120. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +4 -0
  121. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +1110 -0
  122. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +4 -0
  123. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +52 -0
  124. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  125. package/artifacts/contracts/registry/Registry.sol/Registry.json +865 -107
  126. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  127. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +407 -0
  128. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +4 -0
  129. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +1415 -0
  130. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +4 -0
  131. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +709 -0
  132. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  133. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1292 -0
  134. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  135. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  136. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +4 -0
  137. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +661 -0
  138. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  139. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  140. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  141. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  142. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  143. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  144. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  145. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1806 -0
  146. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  147. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1824 -0
  148. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  149. package/artifacts/contracts/shared/Component.sol/Component.json +896 -0
  150. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  151. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1490 -0
  152. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  153. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +792 -0
  154. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  155. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.json +526 -0
  156. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  157. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  158. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  159. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  160. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  161. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1600 -0
  162. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  163. package/artifacts/contracts/shared/IComponent.sol/IComponent.json +631 -0
  164. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  165. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +867 -0
  166. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  167. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +705 -0
  168. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  169. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +95 -138
  170. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  171. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  172. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +4 -0
  173. package/artifacts/contracts/{components/IBaseComponent.sol/IBaseComponent.json → shared/INftOwnable.sol/INftOwnable.json} +37 -80
  174. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  175. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  176. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  177. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +91 -31
  178. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  179. package/artifacts/contracts/{registry → shared}/IRegistryLinked.sol/IRegistryLinked.json +13 -2
  180. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +4 -0
  181. package/artifacts/contracts/{instance/base/InstanceBase.sol/InstanceBase.json → shared/IService.sol/IService.json} +158 -151
  182. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  183. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +16 -125
  184. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.dbg.json +4 -0
  185. package/artifacts/contracts/shared/InitializableCustom.sol/InitializableCustom.json +39 -0
  186. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  187. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1036 -0
  188. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  189. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +571 -0
  190. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  191. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  192. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  193. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +306 -0
  194. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +4 -0
  195. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +244 -0
  196. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  197. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  198. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +4 -0
  199. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +617 -0
  200. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  201. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +255 -23
  202. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  203. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  204. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +4 -0
  205. package/artifacts/contracts/{registry/IChainNft.sol/IChainNft.json → shared/Service.sol/Service.json} +260 -218
  206. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +4 -0
  207. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +150 -0
  208. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +4 -0
  209. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +129 -0
  210. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  211. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +29 -115
  212. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  213. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1438 -0
  214. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  215. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +993 -0
  216. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.dbg.json +4 -0
  217. package/artifacts/contracts/staking/StakeManagerLib.sol/StakeManagerLib.json +444 -0
  218. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  219. package/artifacts/contracts/staking/Staking.sol/Staking.json +2045 -0
  220. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  221. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +777 -0
  222. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  223. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +592 -0
  224. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  225. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +1324 -0
  226. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  227. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +726 -0
  228. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.dbg.json +4 -0
  229. package/artifacts/contracts/staking/StakingStore.sol/StakingStore.json +2189 -0
  230. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  231. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +571 -0
  232. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  234. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  235. package/artifacts/contracts/type/Amount.sol/AmountLib.json +345 -0
  236. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  237. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.json +225 -0
  238. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  239. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  240. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  241. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.json +104 -0
  242. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  243. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  244. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  245. package/artifacts/contracts/type/Key32.sol/Key32Lib.json +125 -0
  246. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  247. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +209 -0
  248. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  249. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
  250. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  251. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.json +105 -0
  252. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  253. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  254. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  255. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  256. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.dbg.json +4 -0
  257. package/artifacts/contracts/type/RequestId.sol/RequestIdLib.json +204 -0
  258. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  259. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.json +86 -0
  260. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  261. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.json +156 -0
  262. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  263. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +198 -0
  264. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  265. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  266. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  267. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.json +293 -0
  268. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  269. package/artifacts/contracts/{types/ChainId.sol/ChainIdLib.json → type/UFixed.sol/MathLib.json} +4 -4
  270. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  271. package/artifacts/contracts/{types/UFixed.sol/UFixedMathLib.json → type/UFixed.sol/UFixedLib.json} +4 -4
  272. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  273. package/artifacts/contracts/type/Version.sol/VersionLib.json +177 -0
  274. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  275. package/artifacts/contracts/type/Version.sol/VersionPartLib.json +49 -0
  276. package/contracts/distribution/Distribution.sol +261 -0
  277. package/contracts/distribution/DistributionService.sol +298 -0
  278. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  279. package/contracts/distribution/IDistributionComponent.sol +66 -0
  280. package/contracts/distribution/IDistributionService.sol +81 -0
  281. package/contracts/instance/BundleManager.sol +126 -0
  282. package/contracts/instance/IInstance.sol +74 -44
  283. package/contracts/instance/IInstanceService.sol +81 -0
  284. package/contracts/instance/Instance.sol +220 -52
  285. package/contracts/instance/InstanceAdmin.sol +331 -0
  286. package/contracts/instance/InstanceAuthorizationsLib.sol +377 -0
  287. package/contracts/instance/InstanceReader.sol +390 -0
  288. package/contracts/instance/InstanceService.sol +362 -0
  289. package/contracts/instance/InstanceServiceManager.sol +44 -0
  290. package/contracts/instance/InstanceStore.sol +281 -0
  291. package/contracts/instance/base/BalanceStore.sol +118 -0
  292. package/contracts/instance/base/Cloneable.sol +51 -0
  293. package/contracts/instance/base/ObjectCounter.sol +21 -0
  294. package/contracts/instance/base/ObjectManager.sol +82 -0
  295. package/contracts/instance/module/IAccess.sol +46 -0
  296. package/contracts/instance/module/IBundle.sol +20 -0
  297. package/contracts/instance/module/IComponents.sol +52 -0
  298. package/contracts/instance/module/IDistribution.sol +42 -0
  299. package/contracts/instance/module/IPolicy.sol +84 -0
  300. package/contracts/instance/module/IRisk.sol +11 -0
  301. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  302. package/contracts/oracle/IOracle.sol +20 -0
  303. package/contracts/oracle/IOracleComponent.sol +32 -0
  304. package/contracts/oracle/IOracleService.sol +65 -0
  305. package/contracts/oracle/Oracle.sol +145 -0
  306. package/contracts/oracle/OracleService.sol +277 -0
  307. package/contracts/oracle/OracleServiceManager.sol +42 -0
  308. package/contracts/pool/BundleService.sol +296 -0
  309. package/contracts/pool/BundleServiceManager.sol +42 -0
  310. package/contracts/pool/IBundleService.sol +106 -0
  311. package/contracts/pool/IPoolComponent.sol +112 -0
  312. package/contracts/pool/IPoolService.sol +150 -0
  313. package/contracts/pool/Pool.sol +299 -0
  314. package/contracts/pool/PoolService.sol +453 -0
  315. package/contracts/pool/PoolServiceManager.sol +42 -0
  316. package/contracts/product/ApplicationService.sol +254 -0
  317. package/contracts/product/ApplicationServiceManager.sol +38 -0
  318. package/contracts/product/ClaimService.sol +442 -0
  319. package/contracts/product/ClaimServiceManager.sol +38 -0
  320. package/contracts/product/IApplicationService.sol +62 -0
  321. package/contracts/product/IClaimService.sol +99 -0
  322. package/contracts/product/IPolicyService.sol +78 -0
  323. package/contracts/product/IPricingService.sol +39 -0
  324. package/contracts/product/IProductComponent.sol +42 -0
  325. package/contracts/product/IProductService.sol +33 -0
  326. package/contracts/product/PolicyService.sol +475 -0
  327. package/contracts/product/PolicyServiceManager.sol +42 -0
  328. package/contracts/product/PricingService.sol +301 -0
  329. package/contracts/product/PricingServiceManager.sol +42 -0
  330. package/contracts/product/Product.sol +377 -0
  331. package/contracts/product/ProductService.sol +124 -0
  332. package/contracts/product/ProductServiceManager.sol +42 -0
  333. package/contracts/registry/ChainNft.sol +95 -37
  334. package/contracts/registry/IRegistry.sol +95 -28
  335. package/contracts/registry/IRegistryService.sol +69 -0
  336. package/contracts/registry/ITransferInterceptor.sol +7 -0
  337. package/contracts/registry/Registry.sol +476 -281
  338. package/contracts/registry/RegistryAdmin.sol +237 -0
  339. package/contracts/registry/RegistryService.sol +266 -0
  340. package/contracts/registry/RegistryServiceManager.sol +58 -0
  341. package/contracts/registry/ReleaseManager.sol +600 -0
  342. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  343. package/contracts/registry/TokenRegistry.sol +315 -0
  344. package/contracts/shared/AccessManagerCustom.sol +736 -0
  345. package/contracts/shared/AccessManagerExtended.sol +470 -0
  346. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  347. package/contracts/shared/AccessManagerExtendedWithDisable.sol +137 -0
  348. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  349. package/contracts/shared/Component.sol +281 -0
  350. package/contracts/shared/ComponentService.sol +618 -0
  351. package/contracts/shared/ComponentServiceManager.sol +35 -0
  352. package/contracts/shared/ComponentVerifyingService.sol +117 -0
  353. package/contracts/shared/ERC165.sol +15 -9
  354. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  355. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +18 -0
  356. package/contracts/shared/IComponent.sol +70 -0
  357. package/contracts/shared/IComponentService.sol +102 -0
  358. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  359. package/contracts/shared/IKeyValueStore.sol +53 -0
  360. package/contracts/{instance/base → shared}/ILifecycle.sol +4 -4
  361. package/contracts/shared/INftOwnable.sol +23 -0
  362. package/contracts/shared/IPolicyHolder.sol +45 -0
  363. package/contracts/shared/IRegisterable.sol +10 -19
  364. package/contracts/shared/IRegistryLinked.sol +11 -0
  365. package/contracts/shared/IService.sol +18 -0
  366. package/contracts/shared/IVersionable.sol +38 -37
  367. package/contracts/shared/InitializableCustom.sol +177 -0
  368. package/contracts/shared/InstanceLinkedComponent.sol +144 -0
  369. package/contracts/shared/KeyValueStore.sol +127 -0
  370. package/contracts/shared/Lifecycle.sol +130 -0
  371. package/contracts/shared/NftIdSetManager.sol +65 -0
  372. package/contracts/shared/NftOwnable.sol +107 -0
  373. package/contracts/shared/PolicyHolder.sol +102 -0
  374. package/contracts/shared/ProxyManager.sol +199 -0
  375. package/contracts/shared/Registerable.sol +54 -65
  376. package/contracts/shared/RegistryLinked.sol +43 -0
  377. package/contracts/shared/Service.sol +77 -0
  378. package/contracts/shared/TokenHandler.sol +58 -0
  379. package/contracts/shared/UpgradableProxyWithAdmin.sol +16 -0
  380. package/contracts/shared/Versionable.sol +38 -68
  381. package/contracts/staking/IStaking.sol +168 -0
  382. package/contracts/staking/IStakingService.sol +149 -0
  383. package/contracts/staking/StakeManagerLib.sol +179 -0
  384. package/contracts/staking/Staking.sol +551 -0
  385. package/contracts/staking/StakingManager.sol +54 -0
  386. package/contracts/staking/StakingReader.sol +187 -0
  387. package/contracts/staking/StakingService.sol +406 -0
  388. package/contracts/staking/StakingServiceManager.sol +45 -0
  389. package/contracts/staking/StakingStore.sol +572 -0
  390. package/contracts/staking/TargetManagerLib.sol +207 -0
  391. package/contracts/{types → type}/AddressSet.sol +1 -1
  392. package/contracts/type/Amount.sol +128 -0
  393. package/contracts/{types → type}/Blocknumber.sol +21 -3
  394. package/contracts/type/ClaimId.sol +75 -0
  395. package/contracts/type/DistributorType.sol +55 -0
  396. package/contracts/type/Fee.sol +66 -0
  397. package/contracts/{types → type}/Key32.sol +8 -3
  398. package/contracts/{types → type}/NftId.sol +21 -15
  399. package/contracts/type/NftIdSet.sol +62 -0
  400. package/contracts/{types → type}/ObjectType.sol +73 -20
  401. package/contracts/type/PayoutId.sol +82 -0
  402. package/contracts/type/Referral.sol +89 -0
  403. package/contracts/type/RequestId.sol +75 -0
  404. package/contracts/type/RiskId.sol +43 -0
  405. package/contracts/type/RoleId.sol +146 -0
  406. package/contracts/type/Seconds.sol +81 -0
  407. package/contracts/{types → type}/StateId.sol +39 -5
  408. package/contracts/{types → type}/Timestamp.sol +27 -14
  409. package/contracts/{types → type}/UFixed.sol +129 -12
  410. package/contracts/{types → type}/Version.sol +15 -2
  411. package/package.json +9 -7
  412. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  413. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -174
  414. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  415. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  416. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -356
  417. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  418. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -279
  419. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  420. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -387
  421. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  422. package/artifacts/contracts/components/Product.sol/Product.json +0 -305
  423. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  424. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  425. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  426. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  427. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  428. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  429. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  430. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  431. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  432. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  433. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  434. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  435. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  436. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  437. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  438. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
  439. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  440. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  441. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  442. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  443. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  444. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  445. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  446. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  447. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  448. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  449. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  450. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  451. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  452. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  453. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  454. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  455. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  456. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  457. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.dbg.json +0 -4
  458. package/artifacts/contracts/instance/IInstanceLinked.sol/IInstanceLinked.json +0 -24
  459. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  460. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.json +0 -300
  461. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  462. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -63
  463. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  464. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  465. package/artifacts/contracts/instance/base/IService.sol/IService.dbg.json +0 -4
  466. package/artifacts/contracts/instance/base/IService.sol/IService.json +0 -300
  467. package/artifacts/contracts/instance/base/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  468. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  469. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -692
  470. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  471. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  472. package/artifacts/contracts/instance/base/ModuleBase.sol/ModuleBase.dbg.json +0 -4
  473. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.dbg.json +0 -4
  474. package/artifacts/contracts/instance/base/ServiceBase.sol/ServiceBase.json +0 -300
  475. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.dbg.json +0 -4
  476. package/artifacts/contracts/instance/module/access/Access.sol/AccessModule.json +0 -333
  477. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccess.dbg.json +0 -4
  478. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.dbg.json +0 -4
  479. package/artifacts/contracts/instance/module/access/IAccess.sol/IAccessModule.json +0 -333
  480. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.dbg.json +0 -4
  481. package/artifacts/contracts/instance/module/bundle/BundleModule.sol/BundleModule.json +0 -296
  482. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundle.dbg.json +0 -4
  483. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.dbg.json +0 -4
  484. package/artifacts/contracts/instance/module/bundle/IBundle.sol/IBundleModule.json +0 -296
  485. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.dbg.json +0 -4
  486. package/artifacts/contracts/instance/module/compensation/CompensationModule.sol/CompensationModule.json +0 -10
  487. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.dbg.json +0 -4
  488. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensation.json +0 -10
  489. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.dbg.json +0 -4
  490. package/artifacts/contracts/instance/module/compensation/ICompensation.sol/ICompensationModule.json +0 -10
  491. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.dbg.json +0 -4
  492. package/artifacts/contracts/instance/module/component/ComponentModule.sol/ComponentModule.json +0 -188
  493. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.dbg.json +0 -4
  494. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponent.json +0 -10
  495. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.dbg.json +0 -4
  496. package/artifacts/contracts/instance/module/component/IComponent.sol/IComponentModule.json +0 -188
  497. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicy.dbg.json +0 -4
  498. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.dbg.json +0 -4
  499. package/artifacts/contracts/instance/module/policy/IPolicy.sol/IPolicyModule.json +0 -261
  500. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.dbg.json +0 -4
  501. package/artifacts/contracts/instance/module/policy/PolicyModule.sol/PolicyModule.json +0 -261
  502. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.dbg.json +0 -4
  503. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPool.json +0 -10
  504. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.dbg.json +0 -4
  505. package/artifacts/contracts/instance/module/pool/IPoolModule.sol/IPoolModule.json +0 -149
  506. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.dbg.json +0 -4
  507. package/artifacts/contracts/instance/module/pool/PoolModule.sol/PoolModule.json +0 -149
  508. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRisk.dbg.json +0 -4
  509. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.dbg.json +0 -4
  510. package/artifacts/contracts/instance/module/risk/IRisk.sol/IRiskModule.json +0 -10
  511. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.dbg.json +0 -4
  512. package/artifacts/contracts/instance/module/risk/RiskModule.sol/RiskModule.json +0 -10
  513. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.dbg.json +0 -4
  514. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasury.json +0 -10
  515. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.dbg.json +0 -4
  516. package/artifacts/contracts/instance/module/treasury/ITreasury.sol/ITreasuryModule.json +0 -533
  517. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.dbg.json +0 -4
  518. package/artifacts/contracts/instance/module/treasury/TokenHandler.sol/TokenHandler.json +0 -76
  519. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.dbg.json +0 -4
  520. package/artifacts/contracts/instance/module/treasury/TreasuryModule.sol/TreasuryModule.json +0 -533
  521. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  522. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -523
  523. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  524. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  525. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +0 -376
  526. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  527. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  528. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -471
  529. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  530. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -673
  531. package/artifacts/contracts/registry/IChainNft.sol/IChainNft.dbg.json +0 -4
  532. package/artifacts/contracts/registry/IRegistryLinked.sol/IRegistryLinked.dbg.json +0 -4
  533. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.dbg.json +0 -4
  534. package/artifacts/contracts/shared/IOwnable.sol/IOwnable.json +0 -24
  535. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  536. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  537. package/artifacts/contracts/test/TestPool.sol/TestPool.dbg.json +0 -4
  538. package/artifacts/contracts/test/TestPool.sol/TestPool.json +0 -387
  539. package/artifacts/contracts/test/TestProduct.sol/TestProduct.dbg.json +0 -4
  540. package/artifacts/contracts/test/TestProduct.sol/TestProduct.json +0 -393
  541. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  542. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -137
  543. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  544. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  545. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  546. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -379
  547. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  548. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -338
  549. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  550. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  551. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  552. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -206
  553. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  554. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -338
  555. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  556. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  557. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +0 -174
  558. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  559. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  560. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -218
  561. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  562. package/artifacts/contracts/types/Key32.sol/Key32Lib.json +0 -111
  563. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  564. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  565. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  566. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
  567. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  568. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +0 -92
  569. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  570. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +0 -30
  571. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  572. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  573. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +0 -236
  574. package/artifacts/contracts/types/UFixed.sol/UFixedMathLib.dbg.json +0 -4
  575. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  576. package/artifacts/contracts/types/Version.sol/VersionLib.json +0 -139
  577. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  578. package/artifacts/contracts/types/Version.sol/VersionPartLib.json +0 -30
  579. package/contracts/components/BaseComponent.sol +0 -88
  580. package/contracts/components/IBaseComponent.sol +0 -19
  581. package/contracts/components/IPoolComponent.sol +0 -57
  582. package/contracts/components/IProductComponent.sol +0 -19
  583. package/contracts/components/Pool.sol +0 -174
  584. package/contracts/components/Product.sol +0 -117
  585. package/contracts/experiment/errors/Require.sol +0 -38
  586. package/contracts/experiment/errors/Revert.sol +0 -44
  587. package/contracts/experiment/inheritance/A.sol +0 -53
  588. package/contracts/experiment/inheritance/B.sol +0 -28
  589. package/contracts/experiment/inheritance/C.sol +0 -34
  590. package/contracts/experiment/inheritance/IA.sol +0 -13
  591. package/contracts/experiment/inheritance/IB.sol +0 -10
  592. package/contracts/experiment/inheritance/IC.sol +0 -12
  593. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  594. package/contracts/experiment/statemachine/ISM.sol +0 -25
  595. package/contracts/experiment/statemachine/README.md +0 -112
  596. package/contracts/experiment/statemachine/SM.sol +0 -57
  597. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  598. package/contracts/experiment/types/TypeA.sol +0 -47
  599. package/contracts/experiment/types/TypeB.sol +0 -29
  600. package/contracts/instance/IInstanceLinked.sol +0 -8
  601. package/contracts/instance/base/ComponentServiceBase.sol +0 -42
  602. package/contracts/instance/base/IInstanceBase.sol +0 -14
  603. package/contracts/instance/base/IKeyValueStore.sol +0 -49
  604. package/contracts/instance/base/IService.sol +0 -15
  605. package/contracts/instance/base/InstanceBase.sol +0 -80
  606. package/contracts/instance/base/KeyValueStore.sol +0 -156
  607. package/contracts/instance/base/Lifecycle.sol +0 -95
  608. package/contracts/instance/base/ModuleBase.sol +0 -52
  609. package/contracts/instance/base/ServiceBase.sol +0 -37
  610. package/contracts/instance/module/access/Access.sol +0 -149
  611. package/contracts/instance/module/access/IAccess.sol +0 -53
  612. package/contracts/instance/module/bundle/BundleModule.sol +0 -136
  613. package/contracts/instance/module/bundle/IBundle.sol +0 -58
  614. package/contracts/instance/module/compensation/CompensationModule.sol +0 -8
  615. package/contracts/instance/module/compensation/ICompensation.sol +0 -10
  616. package/contracts/instance/module/component/ComponentModule.sol +0 -95
  617. package/contracts/instance/module/component/IComponent.sol +0 -53
  618. package/contracts/instance/module/policy/IPolicy.sol +0 -60
  619. package/contracts/instance/module/policy/PolicyModule.sol +0 -76
  620. package/contracts/instance/module/pool/IPoolModule.sol +0 -41
  621. package/contracts/instance/module/pool/PoolModule.sol +0 -87
  622. package/contracts/instance/module/risk/IRisk.sol +0 -10
  623. package/contracts/instance/module/risk/RiskModule.sol +0 -8
  624. package/contracts/instance/module/treasury/ITreasury.sol +0 -103
  625. package/contracts/instance/module/treasury/TokenHandler.sol +0 -48
  626. package/contracts/instance/module/treasury/TreasuryModule.sol +0 -152
  627. package/contracts/instance/service/ComponentOwnerService.sol +0 -170
  628. package/contracts/instance/service/IComponentOwnerService.sol +0 -22
  629. package/contracts/instance/service/IPoolService.sol +0 -30
  630. package/contracts/instance/service/IProductService.sol +0 -58
  631. package/contracts/instance/service/PoolService.sol +0 -123
  632. package/contracts/instance/service/ProductService.sol +0 -354
  633. package/contracts/registry/IChainNft.sol +0 -21
  634. package/contracts/registry/IRegistryLinked.sol +0 -8
  635. package/contracts/shared/IOwnable.sol +0 -6
  636. package/contracts/test/TestFee.sol +0 -25
  637. package/contracts/test/TestPool.sol +0 -22
  638. package/contracts/test/TestProduct.sol +0 -44
  639. package/contracts/test/TestRegisterable.sol +0 -19
  640. package/contracts/test/TestRoleId.sol +0 -14
  641. package/contracts/test/TestService.sol +0 -32
  642. package/contracts/test/TestToken.sol +0 -26
  643. package/contracts/test/TestVersion.sol +0 -44
  644. package/contracts/test/TestVersionable.sol +0 -17
  645. package/contracts/types/ChainId.sol +0 -38
  646. package/contracts/types/Fee.sol +0 -51
  647. package/contracts/types/NftIdSet.sol +0 -60
  648. package/contracts/types/RoleId.sol +0 -38
@@ -0,0 +1,600 @@
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, 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";
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 {RegistryAdmin} from "./RegistryAdmin.sol";
30
+ import {Registry} from "./Registry.sol";
31
+ import {TokenRegistry} from "./TokenRegistry.sol";
32
+ import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
33
+
34
+
35
+ contract ReleaseManager is
36
+ AccessManaged,
37
+ ILifecycle,
38
+ IRegistryLinked
39
+ {
40
+ using ObjectTypeLib for ObjectType;
41
+
42
+ uint256 public constant INITIAL_GIF_VERSION = 3;
43
+
44
+ event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerExtendedWithDisableInitializeable accessManager);
45
+ event LogReleaseActivation(VersionPart version);
46
+
47
+ // constructor
48
+ error ErrorReleaseManagerNotRegistry(Registry registry);
49
+
50
+ // createNextRelease
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);
59
+
60
+ // registerService
61
+ error ErrorReleaseManagerNoServiceRegistrationExpected();
62
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
63
+ error ErrorReleaseManagerNotService(IService service);
64
+ error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
65
+
66
+ // activateNextRelease
67
+ error ErrorReleaseManagerReleaseActivationDisallowed(StateId currentStateId);
68
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
69
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
70
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
71
+
72
+ // disableRelease
73
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
74
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
75
+
76
+ // _verifyService
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
+ }
119
+
120
+ _registry = registry;
121
+ setAuthority(_registry.getAuthority());
122
+ _admin = RegistryAdmin(_registry.getRegistryAdminAddress());
123
+
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
+ }
133
+
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
+ }
144
+
145
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
146
+ _awaitingRegistration = 0;
147
+ _state = SCHEDULED();
148
+
149
+ return _next;
150
+ }
151
+
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();
172
+
173
+ // ensures unique salt
174
+ releaseSalt = keccak256(
175
+ bytes.concat(
176
+ bytes32(version.toInt()),
177
+ salt));
178
+
179
+ releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
180
+ AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
181
+ releaseAccessManager.initialize(address(this), version);
182
+
183
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
184
+ revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
185
+ }
186
+
187
+ _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
188
+
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);
207
+ }
208
+
209
+
210
+ function registerService(IService service)
211
+ external
212
+ restricted // GIF_MANAGER_ROLE
213
+ returns(NftId nftId)
214
+ {
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);
266
+
267
+ service.linkToRegisteredNftId();
268
+ }
269
+
270
+
271
+ function activateNextRelease()
272
+ external
273
+ restricted // GIF_ADMIN_ROLE
274
+ {
275
+ if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
276
+ revert ErrorReleaseManagerReleaseActivationDisallowed(_state);
277
+ }
278
+
279
+ VersionPart version = _next;
280
+ address service = _registry.getServiceAddress(REGISTRY(), version);
281
+
282
+ // release exists, registry service is a MUST
283
+ //if(_releaseAccessManager[version] == address(0)) {
284
+ if(service == address(0)) {
285
+ revert ErrorReleaseManagerReleaseNotCreated(version);
286
+ }
287
+
288
+ // release fully deployed
289
+ if(_awaitingRegistration > 0) {
290
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
291
+ }
292
+
293
+ // release is not activated
294
+ if(_releaseInfo[version].activatedAt.gtz()) {
295
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
296
+ }
297
+
298
+ _latest = version;
299
+ _state = ACTIVE();
300
+
301
+ _releaseVersionByAddress[service] = version;
302
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
303
+
304
+ emit LogReleaseActivation(version);
305
+ }
306
+
307
+ // release becomes disabled after delay expiration (can be reenabled before that)
308
+ function disableRelease(VersionPart version, Seconds disableDelay)
309
+ external
310
+ restricted // GIF_ADMIN_ROLE
311
+ {
312
+ // release was activated
313
+ if(_releaseInfo[version].activatedAt.eqz()) {
314
+ revert ErrorReleaseManagerReleaseNotActivated(version);
315
+ }
316
+
317
+ // release not disabled already
318
+ if(_releaseInfo[version].disabledAt.gtz()) {
319
+ revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
320
+ }
321
+
322
+ disableDelay = SecondsLib.toSeconds(Math.max(disableDelay.toInt(), MIN_DISABLE_DELAY.toInt()));
323
+
324
+ _releaseAccessManager[version].disable(disableDelay);
325
+
326
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp().addSeconds(disableDelay);
327
+ }
328
+
329
+ function enableRelease(VersionPart version)
330
+ external
331
+ restricted // GIF_ADMIN_ROLE
332
+ {
333
+ // release was disabled
334
+ //if(_releaseInfo[version].disabledAt.eqz()) {
335
+ // revert ErrorReleaseManagerReleaseAlreadyEnabled(version);
336
+ //}
337
+
338
+ // reverts if disable delay expired
339
+ _releaseAccessManager[version].enable();
340
+
341
+ _releaseInfo[version].disabledAt = zeroTimestamp();
342
+ }
343
+
344
+ //--- view functions ----------------------------------------------------//
345
+
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);
352
+ }
353
+
354
+ function isActiveRegistryService(address service) external view returns(bool) {
355
+ VersionPart version = _releaseVersionByAddress[service];
356
+ return isActiveRelease(version);
357
+ }
358
+
359
+ function isActiveRelease(VersionPart version) public view returns(bool) {
360
+ return _releaseInfo[version].activatedAt.gtz();
361
+ }
362
+
363
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
364
+ return _releaseInfo[version];
365
+ }
366
+
367
+ function getNextVersion() public view returns(VersionPart) {
368
+ return _next;
369
+ }
370
+
371
+ function getLatestVersion() external view returns(VersionPart) {
372
+ return _latest;
373
+ }
374
+
375
+ function getInitialVersion() external view returns(VersionPart) {
376
+ return _initial;
377
+ }
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
+
432
+ //--- private functions ----------------------------------------------------//
433
+
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(
476
+ IService service,
477
+ IRegistry.ObjectInfo memory info,
478
+ address expectedOwner // assume always valid, can not be 0
479
+ )
480
+ internal
481
+ view
482
+ {
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
+ }
490
+
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);
493
+ }
494
+
495
+ address owner = info.initialOwner;
496
+
497
+ if(owner != expectedOwner) { // registerable owner protection
498
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
499
+ }
500
+
501
+ if(owner == address(service)) {
502
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
503
+ }
504
+
505
+ if(_registry.isRegistered(owner)) {
506
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
507
+ }
508
+ }
509
+
510
+
511
+ function _verifyReleaseAuthorizations(
512
+ address[] memory serviceAddress,
513
+ RoleId[][] memory serviceRoles,
514
+ RoleId[][] memory functionRoles,
515
+ bytes4[][][] memory selectors
516
+ )
517
+ internal
518
+ pure
519
+ {
520
+ if(serviceAddress.length == 0) {
521
+ revert ErrorReleaseManagerReleaseEmpty();
522
+ }
523
+
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
+ }
533
+ }
534
+
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
539
+ }
540
+
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
+ )
551
+ internal
552
+ {
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
+ }
562
+
563
+ accessManager.setTargetFunctionRole(
564
+ serviceAddress,
565
+ selectors[idx],
566
+ functionRoles[idx].toInt());
567
+ }
568
+
569
+ for(uint idx = 0; idx < serviceRoles.length; idx++)
570
+ {
571
+ uint64 roleInt = serviceRoles[idx].toInt();
572
+
573
+ if(!accessManager.isRoleExists(roleInt)) {
574
+ accessManager.createRole(roleInt, serviceRoleNames[idx]);
575
+ }
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;
596
+ }
597
+
598
+ return true;
599
+ }
600
+ }