@etherisc/gif-next 0.0.2-bb7b80e-316 → 0.0.2-bbb7ced-843

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