@etherisc/gif-next 0.0.2-d5522f6-712 → 0.0.2-d5fac82-078

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 (536) 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 +1395 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1575 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +851 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -83
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +278 -1362
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +264 -218
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +459 -2530
  20. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.dbg.json +4 -0
  21. package/artifacts/contracts/instance/InstanceAdmin.sol/InstanceAdmin.json +746 -0
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +188 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +432 -280
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +415 -380
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +362 -95
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2847 -0
  32. package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
  33. package/artifacts/contracts/instance/{Cloneable.sol → base/Cloneable.sol}/Cloneable.json +6 -1
  34. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
  35. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.json +49 -0
  36. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
  37. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
  38. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +93 -14
  39. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
  40. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
  41. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  42. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  43. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +13 -159
  45. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  46. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  47. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
  48. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  49. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  50. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  51. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
  52. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
  53. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  54. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1307 -0
  55. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  56. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +767 -0
  57. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  58. package/artifacts/contracts/{instance/service → pool}/IBundleService.sol/IBundleService.json +291 -276
  59. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  60. package/artifacts/contracts/{components/Pool.sol/Pool.json → pool/IPoolComponent.sol/IPoolComponent.json} +448 -195
  61. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  62. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
  63. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  64. package/artifacts/contracts/pool/Pool.sol/Pool.json +1426 -0
  65. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  66. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1641 -0
  67. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  68. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +779 -0
  69. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  70. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +937 -0
  71. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  72. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +719 -0
  73. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  74. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1405 -0
  75. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  76. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +819 -0
  77. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  78. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +218 -191
  79. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  80. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  81. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  82. package/artifacts/contracts/{instance/service → product}/IPolicyService.sol/IPolicyService.json +182 -302
  83. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  84. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +241 -230
  85. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  86. package/artifacts/contracts/{components/Product.sol/Product.json → product/IProductComponent.sol/IProductComponent.json} +254 -168
  87. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  88. package/artifacts/contracts/{instance/service → product}/IProductService.sol/IProductService.json +72 -166
  89. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  90. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1300 -0
  91. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  92. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +811 -0
  93. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  94. package/artifacts/contracts/product/PricingService.sol/PricingService.json +1023 -0
  95. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  96. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +759 -0
  97. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  98. package/artifacts/contracts/product/Product.sol/Product.json +1217 -0
  99. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  100. package/artifacts/contracts/product/ProductService.sol/ProductService.json +883 -0
  101. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  102. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +711 -0
  103. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  104. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  105. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  106. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +209 -17
  107. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  108. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +225 -230
  109. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  110. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  111. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  112. package/artifacts/contracts/registry/Registry.sol/Registry.json +235 -43
  113. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.dbg.json +4 -0
  114. package/artifacts/contracts/registry/RegistryAdmin.sol/RegistryAdmin.json +305 -0
  115. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  116. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +341 -254
  117. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  118. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +351 -84
  119. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
  120. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +540 -83
  121. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  122. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +148 -62
  123. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.dbg.json +4 -0
  124. package/artifacts/contracts/shared/AccessManagerCustom.sol/AccessManagerCustom.json +1193 -0
  125. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.dbg.json +4 -0
  126. package/artifacts/contracts/shared/AccessManagerExtended.sol/AccessManagerExtended.json +1715 -0
  127. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.dbg.json +4 -0
  128. package/artifacts/contracts/shared/AccessManagerExtendedInitializeable.sol/AccessManagerExtendedInitializeable.json +1728 -0
  129. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.dbg.json +4 -0
  130. package/artifacts/contracts/shared/AccessManagerExtendedWithDisable.sol/AccessManagerExtendedWithDisable.json +1747 -0
  131. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.dbg.json +4 -0
  132. package/artifacts/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol/AccessManagerExtendedWithDisableInitializeable.json +1765 -0
  133. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  134. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  135. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  136. package/artifacts/contracts/shared/Component.sol/Component.json +892 -0
  137. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  138. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → shared/ComponentService.sol/ComponentService.json} +294 -126
  139. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  140. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  141. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.dbg.json +4 -0
  142. package/artifacts/contracts/shared/IAccessManagerExtended.sol/IAccessManagerExtended.json +1562 -0
  143. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.dbg.json +4 -0
  144. package/artifacts/contracts/shared/IAccessManagerExtendedWithDisable.sol/IAccessManagerExtendedWithDisable.json +1594 -0
  145. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  146. package/artifacts/contracts/{components/Distribution.sol/Distribution.json → shared/IComponent.sol/IComponent.json} +173 -212
  147. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  148. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  149. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  150. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
  151. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  152. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  153. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  154. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  155. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  156. package/artifacts/contracts/shared/IService.sol/IService.json +71 -165
  157. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  158. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  159. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  160. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +120 -47
  161. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  162. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
  163. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  164. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +342 -61
  165. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  166. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +137 -53
  167. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  168. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  169. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  170. package/artifacts/contracts/shared/Service.sol/Service.json +189 -150
  171. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  172. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
  173. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  174. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  175. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  176. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  177. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  178. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +198 -207
  179. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  180. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +786 -0
  181. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  182. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +699 -0
  183. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  184. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  185. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  186. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  187. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  188. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
  189. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  190. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  191. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  192. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  193. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  194. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  195. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  196. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  197. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  198. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
  199. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  200. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  201. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  202. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  203. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  204. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  205. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  206. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  207. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  208. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  209. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  210. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  211. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  212. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
  213. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  214. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  215. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  216. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  217. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  218. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  219. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  220. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  221. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  222. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  223. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  224. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  225. package/contracts/distribution/Distribution.sol +285 -0
  226. package/contracts/distribution/DistributionService.sol +351 -0
  227. package/contracts/distribution/DistributionServiceManager.sol +42 -0
  228. package/contracts/distribution/IDistributionComponent.sol +71 -0
  229. package/contracts/distribution/IDistributionService.sol +87 -0
  230. package/contracts/instance/BundleManager.sol +22 -25
  231. package/contracts/instance/IInstance.sol +56 -41
  232. package/contracts/instance/IInstanceService.sol +50 -17
  233. package/contracts/instance/Instance.sol +151 -197
  234. package/contracts/instance/InstanceAdmin.sol +354 -0
  235. package/contracts/instance/InstanceAuthorizationsLib.sol +320 -0
  236. package/contracts/instance/InstanceReader.sol +102 -49
  237. package/contracts/instance/InstanceService.sol +200 -247
  238. package/contracts/instance/InstanceServiceManager.sol +12 -22
  239. package/contracts/instance/InstanceStore.sol +211 -0
  240. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  241. package/contracts/instance/base/IKeyValueStore.sol +14 -10
  242. package/contracts/instance/base/ILifecycle.sol +3 -3
  243. package/contracts/instance/base/KeyValueStore.sol +44 -47
  244. package/contracts/instance/base/Lifecycle.sol +28 -7
  245. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +16 -35
  246. package/contracts/instance/module/IAccess.sol +17 -21
  247. package/contracts/instance/module/IBundle.sol +11 -8
  248. package/contracts/instance/module/IComponents.sol +41 -0
  249. package/contracts/instance/module/IDistribution.sol +7 -4
  250. package/contracts/instance/module/IPolicy.sol +50 -17
  251. package/contracts/instance/module/IRisk.sol +1 -1
  252. package/contracts/instance/module/ISetup.sol +9 -22
  253. package/contracts/instance/module/ITreasury.sol +2 -2
  254. package/contracts/pool/BundleService.sol +384 -0
  255. package/contracts/pool/BundleServiceManager.sol +42 -0
  256. package/contracts/pool/IBundleService.sol +118 -0
  257. package/contracts/pool/IPoolComponent.sol +114 -0
  258. package/contracts/pool/IPoolService.sol +114 -0
  259. package/contracts/pool/Pool.sol +302 -0
  260. package/contracts/pool/PoolService.sol +404 -0
  261. package/contracts/pool/PoolServiceManager.sol +42 -0
  262. package/contracts/product/ApplicationService.sol +187 -0
  263. package/contracts/product/ApplicationServiceManager.sol +38 -0
  264. package/contracts/product/ClaimService.sol +443 -0
  265. package/contracts/product/ClaimServiceManager.sol +38 -0
  266. package/contracts/product/IApplicationService.sol +62 -0
  267. package/contracts/product/IClaimService.sol +93 -0
  268. package/contracts/product/IPolicyService.sol +80 -0
  269. package/contracts/product/IPricingService.sol +37 -0
  270. package/contracts/product/IProductComponent.sol +41 -0
  271. package/contracts/{instance/service → product}/IProductService.sol +10 -10
  272. package/contracts/product/PolicyService.sol +378 -0
  273. package/contracts/product/PolicyServiceManager.sol +42 -0
  274. package/contracts/product/PricingService.sol +276 -0
  275. package/contracts/product/PricingServiceManager.sol +42 -0
  276. package/contracts/product/Product.sol +379 -0
  277. package/contracts/product/ProductService.sol +212 -0
  278. package/contracts/product/ProductServiceManager.sol +42 -0
  279. package/contracts/registry/ChainNft.sol +8 -0
  280. package/contracts/registry/IRegistry.sol +42 -21
  281. package/contracts/registry/IRegistryService.sol +42 -41
  282. package/contracts/registry/ITransferInterceptor.sol +1 -0
  283. package/contracts/registry/Registry.sol +165 -96
  284. package/contracts/registry/RegistryAdmin.sol +143 -0
  285. package/contracts/registry/RegistryService.sol +84 -171
  286. package/contracts/registry/RegistryServiceManager.sol +22 -24
  287. package/contracts/registry/ReleaseManager.sol +317 -202
  288. package/contracts/registry/TokenRegistry.sol +23 -15
  289. package/contracts/shared/AccessManagerCustom.sol +736 -0
  290. package/contracts/shared/AccessManagerExtended.sol +469 -0
  291. package/contracts/shared/AccessManagerExtendedInitializeable.sol +13 -0
  292. package/contracts/shared/AccessManagerExtendedWithDisable.sol +125 -0
  293. package/contracts/shared/AccessManagerExtendedWithDisableInitializeable.sol +14 -0
  294. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  295. package/contracts/shared/Component.sol +271 -0
  296. package/contracts/shared/ComponentService.sol +141 -0
  297. package/contracts/shared/ERC165.sol +14 -12
  298. package/contracts/shared/IAccessManagerExtended.sol +74 -0
  299. package/contracts/shared/IAccessManagerExtendedWithDisable.sol +17 -0
  300. package/contracts/shared/IComponent.sol +90 -0
  301. package/contracts/shared/INftOwnable.sol +12 -11
  302. package/contracts/shared/IPolicyHolder.sol +40 -0
  303. package/contracts/shared/IRegisterable.sol +4 -6
  304. package/contracts/shared/IRegistryLinked.sol +11 -0
  305. package/contracts/shared/IService.sol +6 -4
  306. package/contracts/shared/IVersionable.sol +5 -48
  307. package/contracts/shared/NftOwnable.sol +68 -85
  308. package/contracts/shared/PolicyHolder.sol +94 -0
  309. package/contracts/shared/ProxyManager.sol +131 -25
  310. package/contracts/shared/Registerable.sol +26 -41
  311. package/contracts/shared/RegistryLinked.sol +43 -0
  312. package/contracts/shared/Service.sol +37 -23
  313. package/contracts/shared/TokenHandler.sol +14 -6
  314. package/contracts/shared/Versionable.sol +4 -92
  315. package/contracts/staking/IStakingService.sol +102 -0
  316. package/contracts/staking/StakingService.sol +169 -0
  317. package/contracts/staking/StakingServiceManager.sol +40 -0
  318. package/contracts/type/Amount.sol +109 -0
  319. package/contracts/{types → type}/Blocknumber.sol +1 -0
  320. package/contracts/type/ClaimId.sol +75 -0
  321. package/contracts/{types → type}/DistributorType.sol +2 -2
  322. package/contracts/{types → type}/Fee.sol +17 -8
  323. package/contracts/{types → type}/NftId.sol +8 -0
  324. package/contracts/{types → type}/NftIdSet.sol +1 -1
  325. package/contracts/{types → type}/ObjectType.sol +17 -7
  326. package/contracts/type/PayoutId.sol +82 -0
  327. package/contracts/{types → type}/Referral.sol +4 -0
  328. package/contracts/type/RoleId.sol +139 -0
  329. package/contracts/type/Seconds.sol +54 -0
  330. package/contracts/{types → type}/StateId.sol +7 -2
  331. package/contracts/{types → type}/Timestamp.sol +18 -13
  332. package/contracts/{types → type}/UFixed.sol +1 -0
  333. package/contracts/{types → type}/Version.sol +1 -0
  334. package/package.json +3 -3
  335. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  336. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  337. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  338. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -397
  339. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  340. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  341. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  342. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -275
  343. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  344. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  345. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  346. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  347. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  348. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  349. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  350. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  351. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  352. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  353. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  354. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  355. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  356. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  357. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  358. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  359. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  360. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  361. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  362. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  363. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  364. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  365. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  366. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  367. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  368. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  370. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  372. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  374. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  376. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  378. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  380. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  382. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  384. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  386. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +0 -4
  387. package/artifacts/contracts/instance/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +0 -1206
  388. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  389. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  390. package/artifacts/contracts/instance/IInstanceBase.sol/IInstanceBase.json +0 -448
  391. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +0 -4
  392. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +0 -1047
  393. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.dbg.json +0 -4
  394. package/artifacts/contracts/instance/InstanceBase.sol/InstanceBase.json +0 -763
  395. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  396. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -285
  397. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  398. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  399. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  400. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +0 -4
  401. package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +0 -1031
  402. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +0 -4
  403. package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +0 -436
  404. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  405. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -814
  406. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  407. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -693
  408. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  409. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -420
  410. package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +0 -4
  411. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  412. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  413. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +0 -446
  414. package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +0 -4
  415. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  416. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  417. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +0 -4
  418. package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +0 -1156
  419. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +0 -4
  420. package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +0 -492
  421. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  422. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -727
  423. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  424. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -420
  425. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  426. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -777
  427. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  428. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -420
  429. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +0 -4
  430. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +0 -285
  431. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  432. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  433. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  434. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  435. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  436. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  437. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  438. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  439. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  440. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  441. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  442. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  443. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  444. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  445. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  446. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  447. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  448. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  449. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  450. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  451. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  452. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  453. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  454. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  455. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  456. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  457. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  458. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  459. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  460. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  461. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  462. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  463. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  464. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  465. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  466. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  467. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  468. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  469. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  470. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  471. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  472. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  473. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  474. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  475. package/contracts/components/BaseComponent.sol +0 -159
  476. package/contracts/components/Distribution.sol +0 -164
  477. package/contracts/components/IBaseComponent.sol +0 -34
  478. package/contracts/components/IDistributionComponent.sol +0 -44
  479. package/contracts/components/IPoolComponent.sol +0 -66
  480. package/contracts/components/IProductComponent.sol +0 -35
  481. package/contracts/components/Pool.sol +0 -272
  482. package/contracts/components/Product.sol +0 -301
  483. package/contracts/experiment/cloning/Cloner.sol +0 -47
  484. package/contracts/experiment/errors/Require.sol +0 -38
  485. package/contracts/experiment/errors/Revert.sol +0 -44
  486. package/contracts/experiment/inheritance/A.sol +0 -53
  487. package/contracts/experiment/inheritance/B.sol +0 -28
  488. package/contracts/experiment/inheritance/C.sol +0 -34
  489. package/contracts/experiment/inheritance/IA.sol +0 -13
  490. package/contracts/experiment/inheritance/IB.sol +0 -10
  491. package/contracts/experiment/inheritance/IC.sol +0 -12
  492. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  493. package/contracts/experiment/statemachine/ISM.sol +0 -25
  494. package/contracts/experiment/statemachine/SM.sol +0 -57
  495. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  496. package/contracts/experiment/types/TypeA.sol +0 -47
  497. package/contracts/experiment/types/TypeB.sol +0 -29
  498. package/contracts/instance/AccessManagerUpgradeableInitializeable.sol +0 -23
  499. package/contracts/instance/IInstanceBase.sol +0 -26
  500. package/contracts/instance/InstanceAccessManager.sol +0 -303
  501. package/contracts/instance/InstanceBase.sol +0 -41
  502. package/contracts/instance/base/ComponentServiceBase.sol +0 -76
  503. package/contracts/instance/base/IInstanceBase.sol +0 -23
  504. package/contracts/instance/service/BundleService.sol +0 -294
  505. package/contracts/instance/service/BundleServiceManager.sol +0 -51
  506. package/contracts/instance/service/ComponentOwnerService.sol +0 -315
  507. package/contracts/instance/service/DistributionService.sol +0 -120
  508. package/contracts/instance/service/DistributionServiceManager.sol +0 -51
  509. package/contracts/instance/service/IBundleService.sol +0 -44
  510. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  511. package/contracts/instance/service/IDistributionService.sol +0 -12
  512. package/contracts/instance/service/IPolicyService.sol +0 -94
  513. package/contracts/instance/service/IPoolService.sol +0 -20
  514. package/contracts/instance/service/PolicyService.sol +0 -539
  515. package/contracts/instance/service/PolicyServiceManager.sol +0 -54
  516. package/contracts/instance/service/PoolService.sol +0 -145
  517. package/contracts/instance/service/PoolServiceManager.sol +0 -51
  518. package/contracts/instance/service/ProductService.sol +0 -213
  519. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  520. package/contracts/registry/RegistryAccessManager.sol +0 -210
  521. package/contracts/shared/ContractDeployerLib.sol +0 -72
  522. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  523. package/contracts/test/TestFee.sol +0 -25
  524. package/contracts/test/TestRegisterable.sol +0 -18
  525. package/contracts/test/TestRoleId.sol +0 -14
  526. package/contracts/test/TestService.sol +0 -25
  527. package/contracts/test/TestToken.sol +0 -26
  528. package/contracts/test/TestVersion.sol +0 -44
  529. package/contracts/test/TestVersionable.sol +0 -17
  530. package/contracts/test/Usdc.sol +0 -26
  531. package/contracts/types/ChainId.sol +0 -38
  532. package/contracts/types/NumberId.sol +0 -52
  533. package/contracts/types/RoleId.sol +0 -90
  534. /package/contracts/{types → type}/AddressSet.sol +0 -0
  535. /package/contracts/{types → type}/Key32.sol +0 -0
  536. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,223 +1,307 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
4
5
  import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
5
6
 
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";
7
+ import {NftId} from "../type/NftId.sol";
8
+ import {RoleId, ADMIN_ROLE, PUBLIC_ROLE} from "../type/RoleId.sol";
9
+ import {ObjectType, ObjectTypeLib, zeroObjectType, REGISTRY, SERVICE} from "../type/ObjectType.sol";
10
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
11
+ import {Timestamp, TimestampLib, zeroTimestamp} from "../type/Timestamp.sol";
11
12
 
12
13
  import {IService} from "../shared/IService.sol";
14
+ import {AccessManagerExtendedWithDisableInitializeable} from "../shared/AccessManagerExtendedWithDisableInitializeable.sol";
13
15
 
14
16
  import {IRegistry} from "./IRegistry.sol";
15
17
  import {Registry} from "./Registry.sol";
16
18
  import {IRegistryService} from "./IRegistryService.sol";
17
- import {RegistryAccessManager} from "./RegistryAccessManager.sol";
19
+ import {RegistryAdmin} from "./RegistryAdmin.sol";
18
20
 
19
21
 
20
22
  contract ReleaseManager is AccessManaged
21
23
  {
22
24
  using ObjectTypeLib for ObjectType;
23
25
 
24
- event LogReleaseCreation(VersionPart version, IService registryService);
26
+ event LogReleaseCreation(
27
+ VersionPart version,
28
+ bytes32 salt,
29
+ address releaseAccessManager
30
+ );
25
31
  event LogReleaseActivation(VersionPart version);
26
32
 
27
- // createNextRelease
28
- error NotRegistryService();
29
- error UnexpectedServiceAuthority(address expected, address found);
30
33
 
34
+ // prepareRelease
35
+ error ErrorReleaseManagerReleaseEmpty();
36
+ error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
37
+
31
38
  // registerService
32
- error NotService();
33
- error ServiceNotInRelease(IService service, ObjectType serviceDomain);
39
+ error ErrorReleaseManagerNotService(IService service);
40
+ error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
34
41
 
35
42
  // activateNextRelease
36
- //error ReleaseNotCreated();
37
- //error ReleaseRegistrationNotFinished();
38
-
39
- // _getAndVerifyContractInfo
40
- error UnexpectedRegisterableType(ObjectType expected, ObjectType found);
41
- error NotRegisterableOwner(address notOwner);
42
- error SelfRegistration();
43
- error RegisterableOwnerIsRegistered();
43
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
44
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
45
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
44
46
 
45
- // _verifyServiceInfo
46
- error UnexpectedServiceVersion(VersionPart expected, VersionPart found);
47
- error UnexpectedServiceDomain(ObjectType expected, ObjectType found);
48
-
49
- // _verifyAndStoreConfig
50
- error ConfigMissing();
51
- error ConfigServiceDomainInvalid(uint configArrayIndex, ObjectType domain);
52
- error ConfigSelectorZero(uint configArrayIndex);
53
- error SelectorAlreadyExists(VersionPart releaseVersion, ObjectType serviceDomain);
47
+ // disableRelease
48
+ error ErrorReleaseManagerReleaseNotActivated(VersionPart releaseVersion);
49
+ error ErrorReleaseManagerReleaseAlreadyDisabled(VersionPart releaseVersion);
54
50
 
51
+ // _verifyService
52
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
53
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
55
54
 
56
- RegistryAccessManager private immutable _accessManager;
57
- IRegistry private immutable _registry;
55
+ // _verifyServiceInfo
56
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
57
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
58
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
59
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
60
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
61
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
58
62
 
59
- VersionPart _latest;// latest active version
60
- VersionPart immutable _initial;// first active version
63
+ // _verifyServiceAuthorizations
64
+ error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
61
65
 
62
- mapping(VersionPart version => IRegistry.ReleaseInfo info) _release;
66
+ RegistryAdmin public immutable _admin;
67
+ address public immutable _releaseAccessManagerCodeAddress;
68
+ IRegistry public immutable _registry;
63
69
 
64
- mapping(VersionPart version => mapping(ObjectType serviceDomain => bytes4)) _selector; // registry service function selector assigned to domain
70
+ mapping(VersionPart version => AccessManagerExtendedWithDisableInitializeable accessManager) internal _releaseAccessManager;
71
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
72
+ mapping(address registryService => bool isActive) internal _active;// have access to registry
65
73
 
66
- uint _awaitingRegistration; // "services left to register" counter
74
+ VersionPart immutable internal _initial;// first active version
75
+ VersionPart internal _latest;// latest active version
76
+ VersionPart internal _next;// version to create and activate
67
77
 
68
- mapping(address registryService => bool isActive) _active;
78
+ uint internal _awaitingRegistration; // "services left to register" counter
69
79
 
70
80
  constructor(
71
- RegistryAccessManager accessManager,
72
- VersionPart initialVersion)
73
- AccessManaged(accessManager.authority())
81
+ RegistryAdmin admin,
82
+ VersionPart initialVersion,
83
+ AccessManagerExtendedWithDisableInitializeable masterReleaseAccessManager)
84
+ AccessManaged(admin.authority())
74
85
  {
75
- require(initialVersion.toInt() > 0, "ReleaseManager: initial version is 0");
76
-
77
- _accessManager = accessManager;
78
-
86
+ _admin = admin;
79
87
  _initial = initialVersion;
80
-
88
+ _next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
81
89
  _registry = new Registry();
90
+ _releaseAccessManagerCodeAddress = address(masterReleaseAccessManager);
82
91
  }
83
92
 
84
- // TODO deploy proxy and initialize with given implementation instead of using given proxy?
85
- // IMPORTANT: MUST never be possible to create with access/release manager, token registry
86
- function createNextRelease(IRegistryService service)
93
+ /// @dev skips previous release if it was not activated
94
+ function createNextRelease()
87
95
  external
88
96
  restricted // GIF_ADMIN_ROLE
89
- returns(NftId nftId)
97
+ returns(VersionPart version)
98
+ {
99
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
100
+ _awaitingRegistration = 0;
101
+ }
102
+
103
+ function prepareNextRelease(
104
+ address[] memory addresses,
105
+ string[] memory names,
106
+ RoleId[][] memory serviceRoles,
107
+ string[][] memory serviceRoleNames,
108
+ RoleId[][] memory functionRoles,
109
+ string[][] memory functionRoleNames,
110
+ bytes4[][][] memory selectors,
111
+ bytes32 salt
112
+ )
113
+ external
114
+ restricted // GIF_MANAGER_ROLE
115
+ returns(address releaseAccessManagerAddress, VersionPart version, bytes32 releaseSalt)
90
116
  {
91
- if(!service.supportsInterface(type(IRegistryService).interfaceId)) {
92
- revert NotRegistryService();
117
+ if(addresses.length == 0) {
118
+ revert ErrorReleaseManagerReleaseEmpty();
93
119
  }
94
- // TODO unreliable! MUST guarantee the same authority -> how?
95
- if(service.authority() != authority()) {
96
- revert UnexpectedServiceAuthority(
97
- authority(),
98
- service.authority());
120
+
121
+ if(_awaitingRegistration > 0) {
122
+ revert ErrorReleaseManagerReleaseAlreadyCreated(version);
99
123
  }
100
124
 
101
- (
102
- IRegistry.ObjectInfo memory info,
103
- bytes memory data
104
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
125
+ _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
105
126
 
106
- VersionPart version = getNextVersion();
107
- ObjectType domain = REGISTRY();
108
- _verifyServiceInfo(info, version, domain);
127
+ version = getNextVersion();
109
128
 
110
- _createRelease(data);
129
+ _releaseInfo[version].version = version;
130
+ _releaseInfo[version].addresses = addresses;
131
+ _releaseInfo[version].names = names;
132
+ _releaseInfo[version].serviceRoles = serviceRoles;
133
+ _releaseInfo[version].serviceRoleNames = serviceRoleNames;
134
+ _releaseInfo[version].functionRoles = functionRoles;
135
+ _releaseInfo[version].functionRoleNames = functionRoleNames;
136
+ _releaseInfo[version].selectors = selectors;
137
+ _awaitingRegistration = addresses.length;
111
138
 
112
- //setTargetClosed(service, true);
113
-
114
- nftId = _registry.registerService(info, version, domain);
139
+ // ensures unique salt
140
+ releaseSalt = keccak256(
141
+ bytes.concat(
142
+ bytes32(version.toInt()),
143
+ salt));
115
144
 
116
- // external call
117
- service.linkToRegisteredNftId();
145
+ releaseAccessManagerAddress = Clones.cloneDeterministic(_releaseAccessManagerCodeAddress, releaseSalt);
146
+ AccessManagerExtendedWithDisableInitializeable releaseAccessManager = AccessManagerExtendedWithDisableInitializeable(releaseAccessManagerAddress);
147
+ releaseAccessManager.initialize(address(this), version);
148
+
149
+ _releaseAccessManager[version] = releaseAccessManager;
118
150
 
119
- emit LogReleaseCreation(version, service);
151
+ emit LogReleaseCreation(version, releaseSalt, releaseAccessManagerAddress);
120
152
  }
121
153
 
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?
124
154
  function registerService(IService service)
125
155
  external
126
156
  restricted // GIF_MANAGER_ROLE
127
157
  returns(NftId nftId)
128
158
  {
129
- if(!service.supportsInterface(type(IService).interfaceId)) {
130
- revert NotService();
131
- }
132
-
133
159
  (
134
- IRegistry.ObjectInfo memory info,
135
- //bytes memory data
136
- ) = _getAndVerifyContractInfo(service, SERVICE(), msg.sender);
137
-
138
- VersionPart version = getNextVersion();
139
- ObjectType domain = _verifyServiceInfo(info, version, zeroObjectType());
140
-
141
- bytes4[] memory selector = new bytes4[](1);
142
- selector[0] = _selector[version][domain];
160
+ IRegistry.ObjectInfo memory info,
161
+ ObjectType domain,
162
+ VersionPart version
163
+ ) = _verifyService(service);
143
164
 
144
- // service type is in release
145
- if(selector[0] == 0) {
146
- revert ServiceNotInRelease(service, domain);
165
+ if(_awaitingRegistration == 0) {
166
+ // TODO either release is not created or registration is finished
167
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
147
168
  }
148
169
 
149
- // setup and grant unique role
150
- address registryService = _registry.getServiceAddress(REGISTRY(), version);
151
- _accessManager.setAndGrantUniqueRole(
152
- address(service),
153
- registryService,
154
- selector);
155
-
156
- _awaitingRegistration--;
170
+ uint serviceIdx = _awaitingRegistration - 1;
171
+ address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
172
+ // TODO temp, while typescript addresses computation is not implemented
173
+ /*if(address(service) != serviceAddress) {
174
+ revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
175
+ }*/
157
176
 
158
- // activate release
159
- if(_awaitingRegistration == 0) {
160
- _latest = version;
161
- _active[registryService] = true;
177
+ _setServiceAuthorizations(
178
+ _releaseAccessManager[version],
179
+ // TODO temp, while typescript addresses computation is not implemented
180
+ address(service),//serviceAddress,
181
+ _releaseInfo[version].names[serviceIdx],
182
+ _releaseInfo[version].serviceRoles[serviceIdx],
183
+ _releaseInfo[version].serviceRoleNames[serviceIdx],
184
+ _releaseInfo[version].functionRoles[serviceIdx],
185
+ _releaseInfo[version].functionRoleNames[serviceIdx],
186
+ _releaseInfo[version].selectors[serviceIdx]);
162
187
 
163
- emit LogReleaseActivation(version);
164
- }
188
+ _awaitingRegistration = serviceIdx;
189
+ _releaseInfo[version].domains.push(domain);// checked in registry
165
190
 
166
191
  nftId = _registry.registerService(info, version, domain);
167
192
 
168
- // external call
169
- service.linkToRegisteredNftId();
193
+ service.linkToRegisteredNftId();
170
194
  }
171
195
 
172
- /*function activateNextRelease()
196
+ function activateNextRelease()
173
197
  external
174
198
  restricted // GIF_ADMIN_ROLE
175
199
  {
176
- VersionPart version = getNextVersion();
200
+ VersionPart version = _next;
177
201
  address service = _registry.getServiceAddress(REGISTRY(), version);
178
202
 
179
- // release was created
203
+ // release exists, registry service is a MUST
204
+ //if(_releaseAccessManager[version] == address(0)) {
180
205
  if(service == address(0)) {
181
- revert ReleaseNotCreated();
206
+ revert ErrorReleaseManagerReleaseNotCreated(version);
182
207
  }
183
208
 
184
209
  // release fully deployed
185
210
  if(_awaitingRegistration > 0) {
186
- revert ReleaseRegistrationNotFinished();
211
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
187
212
  }
188
213
 
189
- //setTargetClosed(service, false);
214
+ // release is not activated
215
+ if(_releaseInfo[version].activatedAt.gtz()) {
216
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
217
+ }
190
218
 
191
219
  _latest = version;
220
+
192
221
  _active[service] = true;
222
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
193
223
 
194
- LogReleaseActivation(version);
195
- }*/
224
+ emit LogReleaseActivation(version);
225
+ }
226
+
227
+ // TODO rename activatedAt to createdAt
228
+ // consider lastActivatedAt
229
+ function disableRelease(VersionPart version)
230
+ external
231
+ restricted // GIF_ADMIN_ROLE
232
+ {
233
+ // release was activated
234
+ if(_releaseInfo[version].activatedAt.eqz()) {
235
+ revert ErrorReleaseManagerReleaseNotActivated(version);
236
+ }
196
237
 
197
- //--- view functions ----------------------------------------------------//
238
+ // release not disabled already
239
+ if(_releaseInfo[version].disabledAt.gtz()) {
240
+ revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
241
+ }
242
+
243
+ // disable release access manager
244
+ _releaseAccessManager[version].disable();
245
+
246
+ // disable registry service
247
+ address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
248
+ _active[registryServiceAddress] = false;
198
249
 
199
- function isActiveRegistryService(address service) external view returns(bool)
250
+ _releaseInfo[version].disabledAt = TimestampLib.blockTimestamp();
251
+ }
252
+ // TODO consider reenable delay (few month), after expiration can not enable back
253
+ // after expiration release is not maintained in case of error:
254
+ // 1). we will not emeregency shutdown because of no fixing will be done -> right
255
+ // 2). we can shutdown but it never be enabled afterwards
256
+ function enableRelease(VersionPart version)
257
+ external
258
+ restricted // GIF_ADMIN_ROLE
200
259
  {
260
+ // release not disabled already
261
+ if(_releaseInfo[version].disabledAt.eqz()) {
262
+ //revert ErrorReleaseManagerReleaseAlreadyDisabled(version);
263
+ }
264
+
265
+ // disable release access manager
266
+ _releaseAccessManager[version].enable();
267
+
268
+ // disable registry service
269
+ address registryServiceAddress = _registry.getServiceAddress(REGISTRY(), version);
270
+ _active[registryServiceAddress] = true;
271
+
272
+ _releaseInfo[version].disabledAt = zeroTimestamp();
273
+ }
274
+
275
+ //--- view functions ----------------------------------------------------//
276
+
277
+ function predictDeterministicAddress(
278
+ address implementation,
279
+ bytes32 salt,
280
+ address deployer
281
+ ) external pure returns (address predicted) {
282
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
283
+ }
284
+
285
+ function isActiveRegistryService(address service) external view returns(bool) {
201
286
  return _active[service];
202
287
  }
203
288
 
204
- function getRegistry() external view returns(address)
205
- {
206
- return (address(_registry));
289
+ function isActiveRelease(VersionPart version) external view returns(bool) {
290
+ return _releaseInfo[version].disabledAt.gtz() ? false : _releaseInfo[version].activatedAt.gtz();
207
291
  }
208
292
 
209
- function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory)
293
+
294
+ function getRegistry() external view returns(address)
210
295
  {
211
- return _release[version];
296
+ return (address(_registry));
212
297
  }
213
298
 
214
- function getNextVersion() public view returns(VersionPart)
215
- {
216
- uint256 latest = _latest.toInt();
299
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
300
+ return _releaseInfo[version];
301
+ }
217
302
 
218
- return latest == 0 ?
219
- _initial : // no active releases yet
220
- VersionPartLib.toVersionPart(latest + 1);
303
+ function getNextVersion() public view returns(VersionPart) {
304
+ return _next;
221
305
  }
222
306
 
223
307
  function getLatestVersion() external view returns(VersionPart) {
@@ -228,121 +312,152 @@ contract ReleaseManager is AccessManaged
228
312
  return _initial;
229
313
  }
230
314
 
315
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerExtendedWithDisableInitializeable) {
316
+ return _releaseAccessManager[version];
317
+ }
318
+
231
319
  //--- private functions ----------------------------------------------------//
232
320
 
233
- function _getAndVerifyContractInfo(
321
+ function _verifyService(IService service)
322
+ internal
323
+ returns(
324
+ IRegistry.ObjectInfo memory serviceInfo,
325
+ ObjectType serviceDomain,
326
+ VersionPart serviceVersion
327
+ )
328
+ {
329
+ if(!service.supportsInterface(type(IService).interfaceId)) {
330
+ revert ErrorReleaseManagerNotService(service);
331
+ }
332
+
333
+ address owner = msg.sender;
334
+ address serviceAuthority = service.authority();
335
+ serviceVersion = service.getVersion().toMajorPart();
336
+ serviceDomain = service.getDomain();// checked in registry
337
+ serviceInfo = service.getInitialInfo();
338
+
339
+ _verifyServiceInfo(service, serviceInfo, owner);
340
+
341
+ VersionPart releaseVersion = getNextVersion(); // never 0
342
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
343
+
344
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
345
+ if(serviceAuthority != releaseAuthority) {
346
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
347
+ service,
348
+ serviceAuthority,
349
+ releaseAuthority);
350
+ }
351
+
352
+ if(serviceVersion != releaseVersion) {
353
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
354
+ service,
355
+ serviceVersion,
356
+ releaseVersion);
357
+ }
358
+ }
359
+
360
+ function _verifyServiceInfo(
234
361
  IService service,
235
- ObjectType expectedType,
362
+ IRegistry.ObjectInfo memory info,
236
363
  address expectedOwner // assume always valid, can not be 0
237
364
  )
238
365
  internal
239
366
  view
240
- returns(
241
- IRegistry.ObjectInfo memory info,
242
- bytes memory data
243
- )
244
367
  {
245
- (info, data) = service.getInitialInfo();
246
- info.objectAddress = address(service);
247
- info.isInterceptor = false; // service is never interceptor, at least now
368
+ if(info.objectAddress != address(service)) {
369
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
370
+ }
371
+
372
+ if(info.isInterceptor != false) { // service is never interceptor
373
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
374
+ }
248
375
 
249
- if(info.objectType != expectedType) {// type is checked in registry anyway...but service logic may depend on expected value
250
- revert UnexpectedRegisterableType(expectedType, info.objectType);
376
+ if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
377
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
251
378
  }
252
379
 
253
380
  address owner = info.initialOwner;
254
381
 
255
382
  if(owner != expectedOwner) { // registerable owner protection
256
- revert NotRegisterableOwner(expectedOwner);
383
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
257
384
  }
258
385
 
259
386
  if(owner == address(service)) {
260
- revert SelfRegistration();
387
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
261
388
  }
262
-
263
- /*if(owner == address(0)) { // never 0
264
- revert();// RegisterableOwnerIsZero();
265
- }*/
266
389
 
267
390
  if(_registry.isRegistered(owner)) {
268
- revert RegisterableOwnerIsRegistered();
391
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
269
392
  }
270
-
271
- /*NftId parentNftId = info.parentNftId;
272
- IRegistry.ObjectInfo memory parentInfo = getRegistry().getObjectInfo(parentNftId);
273
-
274
- if(parentInfo.objectType != parentType) { // parent registration + type
275
- revert InvalidParent(parentNftId);
276
- }*/
277
-
278
- return(info, data);
279
393
  }
280
394
 
281
- function _verifyServiceInfo(
282
- IRegistry.ObjectInfo memory info,
283
- VersionPart expectedVersion,
284
- ObjectType expectedDomain
395
+ function _verifyReleaseAuthorizations(
396
+ address[] memory serviceAddress,
397
+ RoleId[][] memory serviceRoles,
398
+ RoleId[][] memory functionRoles,
399
+ bytes4[][][] memory selectors
285
400
  )
286
401
  internal
287
402
  view
288
- returns(ObjectType)
289
403
  {
290
- (
291
- ObjectType domain,
292
- VersionPart version
293
- ) = abi.decode(info.data, (ObjectType, VersionPart));
294
-
295
- if(version != expectedVersion) {
296
- revert UnexpectedServiceVersion(expectedVersion, version);
297
- }
298
-
299
- if(expectedDomain.gtz()) {
300
- if(domain != expectedDomain) {
301
- revert UnexpectedServiceDomain(expectedDomain, domain);
404
+ for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
405
+ {
406
+ for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
407
+ {
408
+ RoleId role = serviceRoles[serviceIdx][roleIdx];
409
+ if(role == ADMIN_ROLE() || role == PUBLIC_ROLE()) {
410
+ revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
411
+ }
302
412
  }
303
413
  }
304
-
305
- return domain;
414
+ // TODO no duplicate service "domain" role per release
415
+ // TODO no duplicate service roles per service
416
+ // TODO no duplicate service function roles per service
417
+ // TODO no duplicate service function selectors per service
306
418
  }
307
419
 
308
- // TODO check if registry supports types specified in the config array
309
- function _createRelease(bytes memory configBytes)
420
+ function _setServiceAuthorizations(
421
+ AccessManagerExtendedWithDisableInitializeable accessManager, // release access manager
422
+ address serviceAddress,
423
+ string memory serviceName,
424
+ RoleId[] memory serviceRoles,
425
+ string[] memory serviceRoleNames,
426
+ RoleId[] memory functionRoles,
427
+ string[] memory functionRoleNames,
428
+ bytes4[][] memory selectors
429
+ )
310
430
  internal
311
431
  {
312
- VersionPart version = getNextVersion();
313
- IRegistryService.FunctionConfig[] memory config = abi.decode(configBytes, (IRegistryService.FunctionConfig[]));
432
+ accessManager.createTarget(serviceAddress, serviceName);
314
433
 
315
- if(config.length == 0) {
316
- revert ConfigMissing();
317
- }
318
- // always in release
319
- _release[version].domains.push(REGISTRY());
320
- for(uint idx = 0; idx < config.length; idx++)
434
+ for(uint idx = 0; idx < functionRoles.length; idx++)
321
435
  {
322
- ObjectType domain = config[idx].serviceDomain;
323
- bytes4 selector = config[idx].selector;
436
+ uint64 roleInt = functionRoles[idx].toInt();
324
437
 
325
- // not "registry service" / zero domain
326
- if(
327
- domain == REGISTRY() ||
328
- domain.eqz()
329
- ) { revert ConfigServiceDomainInvalid(idx, domain); }
438
+ if(!accessManager.isRoleExists(roleInt)) {
439
+ accessManager.createRole(roleInt, functionRoleNames[idx]);
440
+ }
330
441
 
331
- // selector not zero
332
- if(selector == 0) { revert ConfigSelectorZero(idx); }
442
+ accessManager.setTargetFunctionRole(
443
+ serviceAddress,
444
+ selectors[idx],
445
+ roleInt);
446
+ }
447
+
448
+ for(uint idx = 0; idx < serviceRoles.length; idx++)
449
+ {
450
+ uint64 roleInt = serviceRoles[idx].toInt();
333
451
 
334
- // no overwrite
335
- if(_selector[version][domain] > 0) {
336
- revert SelectorAlreadyExists(version, domain);
452
+ if(!accessManager.isRoleExists(roleInt)) {
453
+ accessManager.createRole(roleInt, serviceRoleNames[idx]);
337
454
  }
338
-
339
- _selector[version][domain] = selector;
340
- _release[version].domains.push(domain);
341
- }
342
- // TODO set when activated?
343
- _release[version].createdAt = TimestampLib.blockTimestamp();
344
- //_release[version].updatedAt = TimestampLib.blockTimestamp();
345
455
 
346
- _awaitingRegistration = config.length;
456
+ accessManager.grantRole(
457
+ serviceRoles[idx].toInt(),
458
+ serviceAddress,
459
+ 0);
460
+ }
461
+
347
462
  }
348
- }
463
+ }