@etherisc/gif-next 0.0.2-fd275d2-234 → 0.0.2-fd4931b-974

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 (545) hide show
  1. package/README.md +28 -14
  2. package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
  3. package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1410 -0
  4. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
  5. package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1343 -0
  6. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
  7. package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +799 -0
  8. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
  9. package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +969 -0
  10. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
  11. package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +808 -0
  12. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
  13. package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +73 -104
  14. package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
  15. package/artifacts/contracts/instance/IInstance.sol/IInstance.json +299 -1344
  16. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
  17. package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +356 -181
  18. package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
  19. package/artifacts/contracts/instance/Instance.sol/Instance.json +453 -3116
  20. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
  21. package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
  22. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
  23. package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +132 -0
  24. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
  25. package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +485 -337
  26. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
  27. package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +493 -400
  28. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
  29. package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +330 -127
  30. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
  31. package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +3468 -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 +6 -1
  36. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
  37. package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
  38. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
  39. package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
  40. package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
  41. package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
  42. package/artifacts/contracts/instance/module/{ISetup.sol/ISetup.json → IComponents.sol/IComponents.json} +2 -2
  43. package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
  44. package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
  45. package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
  46. package/artifacts/contracts/mock/Dip.sol/Dip.dbg.json +4 -0
  47. package/artifacts/contracts/mock/Dip.sol/Dip.json +376 -0
  48. package/artifacts/contracts/pool/BundleService.sol/BundleService.dbg.json +4 -0
  49. package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1091 -0
  50. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
  51. package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +723 -0
  52. package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
  53. package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +284 -360
  54. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
  55. package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1148 -0
  56. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
  57. package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1044 -0
  58. package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
  59. package/artifacts/contracts/pool/Pool.sol/Pool.json +1559 -0
  60. package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
  61. package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1411 -0
  62. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
  63. package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +719 -0
  64. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
  65. package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +820 -0
  66. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
  67. package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +699 -0
  68. package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
  69. package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1264 -0
  70. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
  71. package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +787 -0
  72. package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
  73. package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
  74. package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
  75. package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +753 -0
  76. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
  77. package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +701 -0
  78. package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
  79. package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +244 -383
  80. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
  81. package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +989 -0
  82. package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
  83. package/artifacts/contracts/{components/BaseComponent.sol/BaseComponent.json → product/IProductService.sol/IProductService.json} +140 -86
  84. package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
  85. package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1132 -0
  86. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
  87. package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +731 -0
  88. package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
  89. package/artifacts/contracts/product/PricingService.sol/PricingService.json +969 -0
  90. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
  91. package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +755 -0
  92. package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
  93. package/artifacts/contracts/product/Product.sol/Product.json +1391 -0
  94. package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
  95. package/artifacts/contracts/product/ProductService.sol/ProductService.json +673 -0
  96. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
  97. package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +675 -0
  98. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
  99. package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
  100. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
  101. package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +345 -121
  102. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
  103. package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +368 -222
  104. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
  105. package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
  106. package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
  107. package/artifacts/contracts/registry/Registry.sol/Registry.json +434 -197
  108. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
  109. package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +298 -0
  110. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
  111. package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +438 -333
  112. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
  113. package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +324 -136
  114. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
  115. package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +1112 -0
  116. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.dbg.json +4 -0
  117. package/artifacts/contracts/registry/ServiceAuthorizationsLib.sol/ServiceAuthorizationsLib.json +137 -0
  118. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
  119. package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +449 -67
  120. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
  121. package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
  122. package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
  123. package/artifacts/contracts/shared/Component.sol/Component.json +890 -0
  124. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
  125. package/artifacts/contracts/shared/ComponentService.sol/ComponentService.json +1461 -0
  126. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.dbg.json +4 -0
  127. package/artifacts/contracts/shared/ComponentServiceManager.sol/ComponentServiceManager.json +765 -0
  128. package/artifacts/contracts/shared/ComponentVerifyingService.sol/ComponentVerifyingService.dbg.json +4 -0
  129. package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → shared/ComponentVerifyingService.sol/ComponentVerifyingService.json} +196 -216
  130. package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
  131. package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
  132. package/artifacts/contracts/shared/IComponent.sol/IComponent.dbg.json +4 -0
  133. package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → shared/IComponent.sol/IComponent.json} +344 -165
  134. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.dbg.json +4 -0
  135. package/artifacts/contracts/shared/IComponentService.sol/IComponentService.json +854 -0
  136. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.dbg.json +4 -0
  137. package/artifacts/contracts/shared/IInstanceLinkedComponent.sol/IInstanceLinkedComponent.json +699 -0
  138. package/artifacts/contracts/shared/IKeyValueStore.sol/IKeyValueStore.dbg.json +4 -0
  139. package/artifacts/contracts/{instance/base → shared}/IKeyValueStore.sol/IKeyValueStore.json +50 -1
  140. package/artifacts/contracts/shared/ILifecycle.sol/ILifecycle.dbg.json +4 -0
  141. package/artifacts/contracts/{instance/base → shared}/ILifecycle.sol/ILifecycle.json +1 -1
  142. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
  143. package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
  144. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
  145. package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +207 -0
  146. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
  147. package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
  148. package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
  149. package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
  150. package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
  151. package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
  152. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
  153. package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
  154. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.dbg.json +4 -0
  155. package/artifacts/contracts/shared/InstanceLinkedComponent.sol/InstanceLinkedComponent.json +1030 -0
  156. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.dbg.json +4 -0
  157. package/artifacts/contracts/shared/KeyValueStore.sol/KeyValueStore.json +581 -0
  158. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.dbg.json +4 -0
  159. package/artifacts/contracts/shared/Lifecycle.sol/Lifecycle.json +194 -0
  160. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.dbg.json +4 -0
  161. package/artifacts/contracts/shared/NftIdSetManager.sol/NftIdSetManager.json +314 -0
  162. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
  163. package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +109 -29
  164. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
  165. package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +320 -0
  166. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
  167. package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +310 -61
  168. package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
  169. package/artifacts/contracts/shared/Registerable.sol/Registerable.json +126 -53
  170. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
  171. package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
  172. package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
  173. package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
  174. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
  175. package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +60 -6
  176. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
  177. package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
  178. package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
  179. package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
  180. package/artifacts/contracts/staking/IStaking.sol/IStaking.dbg.json +4 -0
  181. package/artifacts/contracts/staking/IStaking.sol/IStaking.json +1770 -0
  182. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
  183. package/artifacts/contracts/staking/IStakingService.sol/IStakingService.json +626 -0
  184. package/artifacts/contracts/staking/Staking.sol/Staking.dbg.json +4 -0
  185. package/artifacts/contracts/staking/Staking.sol/Staking.json +2500 -0
  186. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.dbg.json +4 -0
  187. package/artifacts/contracts/staking/StakingManager.sol/StakingManager.json +844 -0
  188. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.dbg.json +4 -0
  189. package/artifacts/contracts/staking/StakingReader.sol/StakingReader.json +263 -0
  190. package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
  191. package/artifacts/contracts/staking/StakingService.sol/StakingService.json +960 -0
  192. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
  193. package/artifacts/contracts/staking/StakingServiceManager.sol/StakingServiceManager.json +694 -0
  194. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.dbg.json +4 -0
  195. package/artifacts/contracts/staking/TargetManagerLib.sol/TargetManagerLib.json +308 -0
  196. package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
  197. package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
  198. package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
  199. package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
  200. package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
  201. package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +16 -3
  202. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
  203. package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
  204. package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
  205. package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
  206. package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
  207. package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
  208. package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
  209. package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
  210. package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
  211. package/artifacts/contracts/type/NftId.sol/NftIdLib.json +185 -0
  212. package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
  213. package/artifacts/contracts/{types → type}/NftIdSet.sol/LibNftIdSet.json +3 -3
  214. package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
  215. package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
  216. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
  217. package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
  218. package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
  219. package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
  220. package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
  221. package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
  222. package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
  223. package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
  224. package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
  225. package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +148 -0
  226. package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
  227. package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
  228. package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
  229. package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
  230. package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
  231. package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
  232. package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
  233. package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
  234. package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
  235. package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
  236. package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
  237. package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
  238. package/contracts/distribution/Distribution.sol +263 -0
  239. package/contracts/distribution/DistributionService.sol +298 -0
  240. package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +20 -20
  241. package/contracts/distribution/IDistributionComponent.sol +66 -0
  242. package/contracts/distribution/IDistributionService.sol +81 -0
  243. package/contracts/instance/BundleManager.sol +24 -50
  244. package/contracts/instance/IInstance.sol +57 -36
  245. package/contracts/instance/IInstanceService.sol +65 -14
  246. package/contracts/instance/Instance.sol +147 -373
  247. package/contracts/instance/InstanceAccessManager.sol +432 -177
  248. package/contracts/instance/InstanceAuthorizationsLib.sol +336 -0
  249. package/contracts/instance/InstanceReader.sol +136 -85
  250. package/contracts/instance/InstanceService.sol +304 -169
  251. package/contracts/instance/InstanceServiceManager.sol +12 -25
  252. package/contracts/instance/InstanceStore.sol +260 -0
  253. package/contracts/instance/base/BalanceStore.sol +118 -0
  254. package/contracts/instance/{Cloneable.sol → base/Cloneable.sol} +8 -3
  255. package/contracts/instance/{ObjectManager.sol → base/ObjectManager.sol} +17 -30
  256. package/contracts/instance/module/IAccess.sol +37 -21
  257. package/contracts/instance/module/IBundle.sol +8 -8
  258. package/contracts/instance/module/IComponents.sol +52 -0
  259. package/contracts/instance/module/IDistribution.sol +7 -4
  260. package/contracts/instance/module/IPolicy.sol +56 -17
  261. package/contracts/instance/module/IRisk.sol +1 -1
  262. package/contracts/{test/Usdc.sol → mock/Dip.sol} +5 -5
  263. package/contracts/pool/BundleService.sol +296 -0
  264. package/contracts/pool/BundleServiceManager.sol +42 -0
  265. package/contracts/pool/IBundleService.sol +106 -0
  266. package/contracts/pool/IPoolComponent.sol +112 -0
  267. package/contracts/pool/IPoolService.sol +147 -0
  268. package/contracts/pool/Pool.sol +299 -0
  269. package/contracts/pool/PoolService.sol +424 -0
  270. package/contracts/pool/PoolServiceManager.sol +42 -0
  271. package/contracts/product/ApplicationService.sol +254 -0
  272. package/contracts/product/ApplicationServiceManager.sol +38 -0
  273. package/contracts/product/ClaimService.sol +437 -0
  274. package/contracts/product/ClaimServiceManager.sol +38 -0
  275. package/contracts/product/IApplicationService.sol +62 -0
  276. package/contracts/product/IClaimService.sol +93 -0
  277. package/contracts/product/IPolicyService.sol +78 -0
  278. package/contracts/product/IPricingService.sol +39 -0
  279. package/contracts/product/IProductComponent.sol +42 -0
  280. package/contracts/product/IProductService.sol +33 -0
  281. package/contracts/product/PolicyService.sol +473 -0
  282. package/contracts/product/PolicyServiceManager.sol +42 -0
  283. package/contracts/product/PricingService.sol +301 -0
  284. package/contracts/product/PricingServiceManager.sol +42 -0
  285. package/contracts/product/Product.sol +377 -0
  286. package/contracts/product/ProductService.sol +124 -0
  287. package/contracts/product/ProductServiceManager.sol +42 -0
  288. package/contracts/registry/ChainNft.sol +14 -0
  289. package/contracts/registry/IRegistry.sol +65 -28
  290. package/contracts/registry/IRegistryService.sol +46 -28
  291. package/contracts/registry/ITransferInterceptor.sol +1 -0
  292. package/contracts/registry/Registry.sol +353 -238
  293. package/contracts/registry/RegistryAccessManager.sol +167 -0
  294. package/contracts/registry/RegistryService.sol +165 -195
  295. package/contracts/registry/RegistryServiceManager.sol +34 -42
  296. package/contracts/registry/ReleaseManager.sol +530 -0
  297. package/contracts/registry/ServiceAuthorizationsLib.sol +173 -0
  298. package/contracts/registry/TokenRegistry.sol +261 -53
  299. package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
  300. package/contracts/shared/Component.sol +286 -0
  301. package/contracts/shared/ComponentService.sol +595 -0
  302. package/contracts/shared/ComponentServiceManager.sol +35 -0
  303. package/contracts/shared/ComponentVerifyingService.sol +111 -0
  304. package/contracts/shared/ERC165.sol +14 -12
  305. package/contracts/shared/IComponent.sol +74 -0
  306. package/contracts/shared/IComponentService.sol +91 -0
  307. package/contracts/shared/IInstanceLinkedComponent.sol +46 -0
  308. package/contracts/{instance/base → shared}/IKeyValueStore.sol +14 -10
  309. package/contracts/{instance/base → shared}/ILifecycle.sol +3 -3
  310. package/contracts/shared/INftOwnable.sol +12 -11
  311. package/contracts/shared/IPolicyHolder.sol +45 -0
  312. package/contracts/shared/IRegisterable.sol +4 -6
  313. package/contracts/shared/IRegistryLinked.sol +11 -0
  314. package/contracts/shared/IService.sol +7 -4
  315. package/contracts/shared/IVersionable.sol +5 -48
  316. package/contracts/shared/InstanceLinkedComponent.sol +145 -0
  317. package/contracts/shared/KeyValueStore.sol +130 -0
  318. package/contracts/{instance/base → shared}/Lifecycle.sol +28 -7
  319. package/contracts/shared/NftIdSetManager.sol +69 -0
  320. package/contracts/shared/NftOwnable.sol +64 -80
  321. package/contracts/shared/PolicyHolder.sol +101 -0
  322. package/contracts/shared/ProxyManager.sol +126 -25
  323. package/contracts/shared/Registerable.sol +26 -41
  324. package/contracts/shared/RegistryLinked.sol +43 -0
  325. package/contracts/shared/Service.sol +45 -23
  326. package/contracts/shared/TokenHandler.sol +37 -6
  327. package/contracts/shared/Versionable.sol +4 -92
  328. package/contracts/staking/IStaking.sol +113 -0
  329. package/contracts/staking/IStakingService.sol +122 -0
  330. package/contracts/staking/Staking.sol +348 -0
  331. package/contracts/staking/StakingManager.sol +52 -0
  332. package/contracts/staking/StakingReader.sol +92 -0
  333. package/contracts/staking/StakingService.sol +294 -0
  334. package/contracts/staking/StakingServiceManager.sol +44 -0
  335. package/contracts/staking/TargetManagerLib.sol +141 -0
  336. package/contracts/type/Amount.sol +114 -0
  337. package/contracts/{types → type}/Blocknumber.sol +7 -1
  338. package/contracts/type/ClaimId.sol +75 -0
  339. package/contracts/{types → type}/DistributorType.sol +2 -2
  340. package/contracts/{types → type}/Fee.sol +32 -22
  341. package/contracts/{types → type}/NftId.sol +17 -11
  342. package/contracts/{types → type}/NftIdSet.sol +1 -1
  343. package/contracts/{types → type}/ObjectType.sol +26 -9
  344. package/contracts/type/PayoutId.sol +82 -0
  345. package/contracts/{types → type}/Referral.sol +4 -0
  346. package/contracts/type/RoleId.sol +143 -0
  347. package/contracts/type/Seconds.sol +63 -0
  348. package/contracts/{types → type}/StateId.sol +24 -6
  349. package/contracts/{types → type}/Timestamp.sol +18 -13
  350. package/contracts/{types → type}/UFixed.sol +1 -0
  351. package/contracts/{types → type}/Version.sol +1 -0
  352. package/package.json +3 -3
  353. package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
  354. package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
  355. package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -618
  356. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
  357. package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
  358. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
  359. package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -152
  360. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
  361. package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
  362. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
  363. package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
  364. package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
  365. package/artifacts/contracts/components/Pool.sol/Pool.json +0 -787
  366. package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
  367. package/artifacts/contracts/components/Product.sol/Product.json +0 -729
  368. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
  369. package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
  370. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
  371. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
  372. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
  373. package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
  374. package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
  375. package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
  376. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
  377. package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
  378. package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
  379. package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
  380. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
  381. package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
  382. package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
  383. package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
  384. package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
  385. package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
  386. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
  387. package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
  388. package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
  389. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
  390. package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
  391. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
  392. package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
  393. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
  394. package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
  395. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
  396. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
  397. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
  398. package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
  399. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
  400. package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
  401. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
  402. package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
  403. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
  404. package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
  405. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
  406. package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
  407. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
  408. package/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.json +0 -101
  409. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
  410. package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
  411. package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +0 -4
  412. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
  413. package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
  414. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +0 -4
  415. package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +0 -272
  416. package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
  417. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
  418. package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
  419. package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +0 -4
  420. package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +0 -4
  421. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +0 -4
  422. package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +0 -502
  423. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +0 -4
  424. package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +0 -169
  425. package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +0 -4
  426. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +0 -4
  427. package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.json +0 -10
  428. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
  429. package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
  430. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
  431. package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -716
  432. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
  433. package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -444
  434. package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
  435. package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
  436. package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
  437. package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
  438. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
  439. package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -971
  440. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
  441. package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -460
  442. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +0 -4
  443. package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +0 -1147
  444. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +0 -4
  445. package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +0 -488
  446. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
  447. package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
  448. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
  449. package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.json +0 -442
  450. package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
  451. package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
  452. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
  453. package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
  454. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
  455. package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
  456. package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
  457. package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
  458. package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
  459. package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
  460. package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
  461. package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
  462. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
  463. package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
  464. package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
  465. package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
  466. package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
  467. package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
  468. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
  469. package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
  470. package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
  471. package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
  472. package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
  473. package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
  474. package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
  475. package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
  476. package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
  477. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
  478. package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
  479. package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
  480. package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
  481. package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
  482. package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
  483. package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
  484. package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
  485. package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
  486. package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
  487. package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
  488. package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
  489. package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
  490. package/contracts/components/BaseComponent.sol +0 -91
  491. package/contracts/components/Distribution.sol +0 -163
  492. package/contracts/components/IBaseComponent.sol +0 -25
  493. package/contracts/components/IDistributionComponent.sol +0 -44
  494. package/contracts/components/IPoolComponent.sol +0 -62
  495. package/contracts/components/IProductComponent.sol +0 -35
  496. package/contracts/components/Pool.sol +0 -247
  497. package/contracts/components/Product.sol +0 -289
  498. package/contracts/experiment/cloning/Cloner.sol +0 -47
  499. package/contracts/experiment/errors/Require.sol +0 -38
  500. package/contracts/experiment/errors/Revert.sol +0 -44
  501. package/contracts/experiment/inheritance/A.sol +0 -53
  502. package/contracts/experiment/inheritance/B.sol +0 -28
  503. package/contracts/experiment/inheritance/C.sol +0 -34
  504. package/contracts/experiment/inheritance/IA.sol +0 -13
  505. package/contracts/experiment/inheritance/IB.sol +0 -10
  506. package/contracts/experiment/inheritance/IC.sol +0 -12
  507. package/contracts/experiment/statemachine/Dummy.sol +0 -27
  508. package/contracts/experiment/statemachine/ISM.sol +0 -25
  509. package/contracts/experiment/statemachine/SM.sol +0 -57
  510. package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
  511. package/contracts/experiment/types/TypeA.sol +0 -47
  512. package/contracts/experiment/types/TypeB.sol +0 -29
  513. package/contracts/instance/AccessManagedSimple.sol +0 -115
  514. package/contracts/instance/AccessManagerSimple.sol +0 -692
  515. package/contracts/instance/IAccessManagerSimple.sol +0 -391
  516. package/contracts/instance/base/ComponentServiceBase.sol +0 -134
  517. package/contracts/instance/base/IInstanceBase.sol +0 -23
  518. package/contracts/instance/base/KeyValueStore.sol +0 -172
  519. package/contracts/instance/module/ISetup.sol +0 -46
  520. package/contracts/instance/module/ITreasury.sol +0 -23
  521. package/contracts/instance/service/ComponentOwnerService.sol +0 -317
  522. package/contracts/instance/service/DistributionService.sol +0 -88
  523. package/contracts/instance/service/IComponentOwnerService.sol +0 -20
  524. package/contracts/instance/service/IDistributionService.sol +0 -12
  525. package/contracts/instance/service/IPoolService.sol +0 -43
  526. package/contracts/instance/service/IProductService.sol +0 -110
  527. package/contracts/instance/service/PoolService.sol +0 -206
  528. package/contracts/instance/service/PoolServiceManager.sol +0 -54
  529. package/contracts/instance/service/ProductService.sol +0 -561
  530. package/contracts/instance/service/ProductServiceManager.sol +0 -54
  531. package/contracts/shared/ContractDeployerLib.sol +0 -72
  532. package/contracts/shared/RegisterableUpgradable.sol +0 -16
  533. package/contracts/test/TestFee.sol +0 -25
  534. package/contracts/test/TestRegisterable.sol +0 -18
  535. package/contracts/test/TestRoleId.sol +0 -14
  536. package/contracts/test/TestService.sol +0 -24
  537. package/contracts/test/TestToken.sol +0 -26
  538. package/contracts/test/TestVersion.sol +0 -44
  539. package/contracts/test/TestVersionable.sol +0 -17
  540. package/contracts/types/ChainId.sol +0 -38
  541. package/contracts/types/NumberId.sol +0 -52
  542. package/contracts/types/RoleId.sol +0 -90
  543. /package/contracts/{types → type}/AddressSet.sol +0 -0
  544. /package/contracts/{types → type}/Key32.sol +0 -0
  545. /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -2,8 +2,7 @@
2
2
  pragma solidity ^0.8.20;
3
3
 
4
4
  import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
5
-
6
- import {ContractDeployerLib} from "../shared/ContractDeployerLib.sol";
5
+ import {Create2} from "@openzeppelin/contracts/utils/Create2.sol";
7
6
 
8
7
  import {Registry} from "./Registry.sol";
9
8
  import {IVersionable} from "../shared/IVersionable.sol";
@@ -15,53 +14,54 @@ import {TokenRegistry} from "./TokenRegistry.sol";
15
14
  contract RegistryServiceManager is
16
15
  ProxyManager
17
16
  {
17
+ error ErrorRegistryAccessManagerAuthorityZero();
18
+ error ErrorRegistryAccessManagerRegistryZero();
19
+
18
20
  bytes32 constant public ACCESS_MANAGER_CREATION_CODE_HASH = 0x0;
19
21
 
20
- AccessManager private _accessManager;
21
- RegistryService private _registryService;
22
- TokenRegistry private _tokenRegistry;
22
+ RegistryService private immutable _registryService;
23
23
 
24
24
  /// @dev initializes proxy manager with registry service implementation and deploys registry
25
25
  constructor(
26
- address accessManager
27
- )
28
- ProxyManager()
26
+ address authority, // used by implementation
27
+ address registry, // used by implementation
28
+ bytes32 salt
29
+ )
30
+ ProxyManager(registry)
29
31
  {
30
- _accessManager = AccessManager(accessManager);
31
-
32
- bytes memory initializationData = abi.encode(accessManager, type(Registry).creationCode);
33
-
34
- IVersionable versionable = deploy(
35
- address(new RegistryService()),
36
- initializationData);
32
+ if(authority == address(0)) {
33
+ revert ErrorRegistryAccessManagerAuthorityZero();
34
+ }
35
+
36
+ if(registry == address(0)) {
37
+ revert ErrorRegistryAccessManagerRegistryZero();
38
+ }
39
+
40
+ // implementation's initializer func `data` argument
41
+ RegistryService srv = new RegistryService{ salt: salt }();
42
+ bytes memory data = abi.encode(registry, authority);
43
+ IVersionable versionable = deployDetermenistic(
44
+ address(srv),
45
+ data,
46
+ salt);
37
47
 
38
48
  _registryService = RegistryService(address(versionable));
39
49
 
40
- // link ownership of registry service manager ot nft owner of registry service
41
- _linkToNftOwnable(
42
- address(_registryService.getRegistry()),
43
- address(_registryService));
44
-
45
- // deploy token registry
46
-
47
- // _tokenRegistry = new TokenRegistry(
48
- // address(_registryService.getRegistry()),
49
- // address(_registryService));
50
-
51
- // implies that after this constructor call only upgrade functionality is available
52
- _isDeployed = true;
50
+ // _linkToNftOwnable(address(_registryService));
53
51
  }
54
52
 
55
- //--- view functions ----------------------------------------------------//
53
+ // // from IRegisterable
56
54
 
57
- function getAccessManager()
58
- external
59
- view
60
- returns (AccessManager)
55
+ // // IMPORTANT: registry here and in constructor MUST be the same
56
+ function linkOwnershipToServiceNft()
57
+ public
58
+ onlyOwner
61
59
  {
62
- return _accessManager;
60
+ _linkToNftOwnable(address(_registryService));
63
61
  }
64
62
 
63
+ //--- view functions ----------------------------------------------------//
64
+
65
65
  function getRegistryService()
66
66
  external
67
67
  view
@@ -69,12 +69,4 @@ contract RegistryServiceManager is
69
69
  {
70
70
  return _registryService;
71
71
  }
72
-
73
- function getTokenRegistry()
74
- external
75
- view
76
- returns (TokenRegistry)
77
- {
78
- return _tokenRegistry;
79
- }
80
72
  }
@@ -0,0 +1,530 @@
1
+ // SPDX-License-Identifier: Apache-2.0
2
+ pragma solidity ^0.8.20;
3
+
4
+ import {Clones} from "@openzeppelin/contracts/proxy/Clones.sol";
5
+ import {IAccessManager} from "@openzeppelin/contracts/access/manager/IAccessManager.sol";
6
+ import {AccessManaged} from "@openzeppelin/contracts/access/manager/AccessManaged.sol";
7
+
8
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
9
+ import {ILifecycle} from "../shared/ILifecycle.sol";
10
+ import {IRegisterable} from "../shared/IRegisterable.sol";
11
+ import {IRegistry} from "./IRegistry.sol";
12
+ import {IRegistryService} from "./IRegistryService.sol";
13
+ import {IService} from "../shared/IService.sol";
14
+ import {IStaking} from "../staking/IStaking.sol";
15
+ import {NftId} from "../type/NftId.sol";
16
+ import {ObjectType, ObjectTypeLib, zeroObjectType, RELEASE, REGISTRY, SERVICE, STAKING} from "../type/ObjectType.sol";
17
+ import {Registry} from "./Registry.sol";
18
+ import {RegistryAccessManager} from "./RegistryAccessManager.sol";
19
+ import {RoleId, ADMIN_ROLE} from "../type/RoleId.sol";
20
+ import {ServiceAuthorizationsLib} from "./ServiceAuthorizationsLib.sol";
21
+ import {StateId, INITIAL, SCHEDULED, DEPLOYING, ACTIVE} from "../type/StateId.sol";
22
+ import {Timestamp, TimestampLib} from "../type/Timestamp.sol";
23
+ import {TokenRegistry} from "./TokenRegistry.sol";
24
+ import {Version, VersionLib, VersionPart, VersionPartLib} from "../type/Version.sol";
25
+
26
+ // gif admin is not technical, should sent simple txs
27
+ // foundation creates
28
+ // other guy deployes
29
+ // other guy checks (can precompute addresses and compare with what deployed)
30
+ // foundation activates
31
+ // TODO add function to deactivate releases
32
+ // TODO in next pr add getVersion() to releaseAccessManager only, set in initialize()
33
+ // TODO in next pr make single base for registry access manager, release access manager and instance access manager
34
+
35
+ contract ReleaseManager is
36
+ AccessManaged,
37
+ ILifecycle
38
+ {
39
+ using ObjectTypeLib for ObjectType;
40
+
41
+ event LogReleaseCreation(VersionPart version, bytes32 salt, AccessManagerUpgradeableInitializeable accessManager);
42
+ event LogReleaseActivation(VersionPart version);
43
+
44
+ // createNextRelease
45
+ error ErrorReleaseManagerReleaseCreationDisallowed(StateId currentStateId);
46
+
47
+ // prepareRelease
48
+ error ErrorReleaseManagerReleasePreparationDisallowed(StateId currentStateId);
49
+ error ErrorReleaseManagerReleaseEmpty();
50
+ error ErrorReleaseManagerReleaseAlreadyCreated(VersionPart version);
51
+
52
+ // register staking
53
+ error ErrorReleaseManagerStakingAlreadySet(address stakingAddress);
54
+
55
+ // registerService
56
+ error ErrorReleaseManagerServiceRegistrationDisallowed(StateId currentStateId);
57
+ error ErrorReleaseManagerNotService(IService service);
58
+ error ErrorReleaseManagerServiceAddressInvalid(IService given, address expected);
59
+
60
+ // activateNextRelease
61
+ error ErrorReleaseManagerActivationDisallowed(StateId currentStateId);
62
+ error ErrorReleaseManagerReleaseNotCreated(VersionPart releaseVersion);
63
+ error ErrorReleaseManagerReleaseRegistrationNotFinished(VersionPart releaseVersion, uint awaitingRegistration);
64
+ error ErrorReleaseManagerReleaseAlreadyActivated(VersionPart releaseVersion);
65
+
66
+ // _verifyService
67
+ error ErrorReleaseManagerServiceReleaseAuthorityMismatch(IService service, address serviceAuthority, address releaseAuthority);
68
+ error ErrorReleaseManagerServiceReleaseVersionMismatch(IService service, VersionPart serviceVersion, VersionPart releaseVersion);
69
+
70
+ // _verifyServiceInfo
71
+ error ErrorReleaseManagerServiceInfoAddressInvalid(IService service, address expected);
72
+ error ErrorReleaseManagerServiceInfoInterceptorInvalid(IService service, bool isInterceptor);
73
+ error ErrorReleaseManagerServiceInfoTypeInvalid(IService service, ObjectType expected, ObjectType found);
74
+ error ErrorReleaseManagerServiceInfoOwnerInvalid(IService service, address expected, address found);
75
+ error ErrorReleaseManagerServiceSelfRegistration(IService service);
76
+ error ErrorReleaseManagerServiceOwnerRegistered(IService service, address owner);
77
+
78
+ // _verifyServiceAuthorizations
79
+ error ErrorReleaseManagerServiceRoleInvalid(address service, RoleId role);
80
+
81
+ RegistryAccessManager public immutable _accessManager;
82
+ Registry public immutable _registry;
83
+ TokenRegistry private immutable _tokenRegistry;
84
+ IStaking private _staking;
85
+
86
+ mapping(VersionPart version => AccessManagerUpgradeableInitializeable accessManager) internal _releaseAccessManager;
87
+ mapping(VersionPart version => IRegistry.ReleaseInfo info) internal _releaseInfo;
88
+ mapping(address registryService => bool isActive) internal _active;// have access to registry
89
+
90
+ VersionPart immutable internal _initial;// first active version
91
+ VersionPart internal _latest; // latest active version
92
+ VersionPart internal _next; // version to create and activate
93
+ StateId internal _state; // current state of release manager
94
+
95
+ uint256 internal _awaitingRegistration; // "services left to register" counter
96
+
97
+
98
+ constructor(
99
+ RegistryAccessManager accessManager,
100
+ VersionPart initialVersion,
101
+ address dipTokenAddress
102
+ )
103
+ AccessManaged(accessManager.authority())
104
+ {
105
+ _accessManager = accessManager;
106
+ _initial = initialVersion;
107
+ _next = VersionPartLib.toVersionPart(initialVersion.toInt() - 1);
108
+ _state = getInitialState(RELEASE());
109
+
110
+ _registry = new Registry();
111
+ _tokenRegistry = new TokenRegistry(
112
+ address(_registry),
113
+ dipTokenAddress);
114
+
115
+ _registry.setTokenRegistry(address(_tokenRegistry));
116
+ }
117
+
118
+
119
+ /// @dev skips previous release if was not activated
120
+ /// sets release manager into state SCHEDULED
121
+ function createNextRelease()
122
+ external
123
+ restricted // GIF_ADMIN_ROLE
124
+ returns(VersionPart version)
125
+ {
126
+ if (!isValidTransition(RELEASE(), _state, SCHEDULED())) {
127
+ revert ErrorReleaseManagerReleaseCreationDisallowed(_state);
128
+ }
129
+
130
+ _next = VersionPartLib.toVersionPart(_next.toInt() + 1);
131
+ _awaitingRegistration = 0;
132
+ _state = SCHEDULED();
133
+ }
134
+
135
+
136
+ function prepareNextRelease(
137
+ address[] memory addresses,
138
+ RoleId[][] memory serviceRoles,
139
+ RoleId[][] memory functionRoles,
140
+ bytes4[][][] memory selectors,
141
+ bytes32 salt
142
+ )
143
+ external
144
+ restricted() // GIF_MANAGER_ROLE
145
+ returns(
146
+ address releaseAccessManagerAddress,
147
+ VersionPart version,
148
+ bytes32 releaseSalt
149
+ )
150
+ {
151
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
152
+ revert ErrorReleaseManagerReleasePreparationDisallowed(_state);
153
+ }
154
+
155
+ if(addresses.length == 0) {
156
+ revert ErrorReleaseManagerReleaseEmpty();
157
+ }
158
+
159
+ if(_awaitingRegistration > 0) {
160
+ revert ErrorReleaseManagerReleaseAlreadyCreated(version);
161
+ }
162
+
163
+ _verifyReleaseAuthorizations(addresses, serviceRoles, functionRoles, selectors);
164
+
165
+ version = getNextVersion();
166
+
167
+ _releaseInfo[version].version = version;
168
+ _releaseInfo[version].addresses = addresses;
169
+ _releaseInfo[version].serviceRoles = serviceRoles;
170
+ _releaseInfo[version].functionRoles = functionRoles;
171
+ _releaseInfo[version].selectors = selectors;
172
+ _awaitingRegistration = addresses.length;
173
+ _state = DEPLOYING();
174
+
175
+ version = getNextVersion();
176
+ // ensures unique salt
177
+ releaseSalt = keccak256(
178
+ bytes.concat(
179
+ bytes32(version.toInt()),
180
+ salt));
181
+
182
+ releaseAccessManagerAddress = Clones.cloneDeterministic(_accessManager.authority(), releaseSalt);
183
+ AccessManagerUpgradeableInitializeable releaseAccessManager = AccessManagerUpgradeableInitializeable(releaseAccessManagerAddress);
184
+
185
+ _releaseAccessManager[version] = releaseAccessManager;
186
+
187
+ releaseAccessManager.initialize(address(this));
188
+
189
+ emit LogReleaseCreation(version, releaseSalt, releaseAccessManager);
190
+ }
191
+
192
+
193
+ function registerStaking(
194
+ address stakingAddress,
195
+ address stakingOwner
196
+ )
197
+ external
198
+ restricted // GIF_ADMIN_ROLE
199
+ returns(NftId nftId)
200
+ {
201
+ // TODO add verify staking contract
202
+ _staking = IStaking(stakingAddress);
203
+
204
+ nftId = _registry.registerStaking(
205
+ stakingAddress,
206
+ stakingOwner);
207
+
208
+ _staking.linkToRegisteredNftId();
209
+ }
210
+
211
+
212
+ function registerService(IService service)
213
+ external
214
+ restricted // GIF_MANAGER_ROLE
215
+ returns(NftId nftId)
216
+ {
217
+ if (!isValidTransition(RELEASE(), _state, DEPLOYING())) {
218
+ revert ErrorReleaseManagerServiceRegistrationDisallowed(_state);
219
+ }
220
+
221
+ (
222
+ IRegistry.ObjectInfo memory info,
223
+ ObjectType domain,
224
+ VersionPart version
225
+ ) = _verifyService(service);
226
+
227
+ require(_awaitingRegistration > 0, "_awaitingRegistration == 0");
228
+
229
+ uint serviceIdx = _awaitingRegistration - 1;
230
+ address serviceAddress = _releaseInfo[version].addresses[serviceIdx];
231
+ // TODO temp, while typescript addresses computation is not implemented
232
+ /*if(address(service) != serviceAddress) {
233
+ revert ErrorReleaseManagerServiceAddressInvalid(service, serviceAddress);
234
+ }*/
235
+
236
+ _setServiceAuthorizations(
237
+ _releaseAccessManager[version],
238
+ // TODO temp, while typescript addresses computation is not implemented
239
+ address(service),//serviceAddress,
240
+ _releaseInfo[version].serviceRoles[serviceIdx],
241
+ _releaseInfo[version].functionRoles[serviceIdx],
242
+ _releaseInfo[version].selectors[serviceIdx]);
243
+
244
+ // TODO decide for one of the approaches
245
+ // // service to service authorization
246
+ // ServiceAuthorizationsLib.ServiceAuthorization memory authz = ServiceAuthorizationsLib.getAuthorizations(domain);
247
+ // for(uint8 idx = 0; idx < authz.authorizedRole.length; idx++) {
248
+ // _accessManager.setTargetFunctionRole(
249
+ // address(service),
250
+ // authz.authorizedSelectors[idx],
251
+ // authz.authorizedRole[idx]);
252
+ // }
253
+
254
+ _awaitingRegistration = serviceIdx;
255
+ _state = DEPLOYING();
256
+
257
+ // checked in registry
258
+ _releaseInfo[version].domains.push(domain);
259
+
260
+ nftId = _registry.registerService(info, version, domain);
261
+
262
+ service.linkToRegisteredNftId();
263
+ }
264
+
265
+
266
+ function activateNextRelease()
267
+ external
268
+ restricted // GIF_ADMIN_ROLE
269
+ {
270
+ if (!isValidTransition(RELEASE(), _state, ACTIVE())) {
271
+ revert ErrorReleaseManagerActivationDisallowed(_state);
272
+ }
273
+
274
+ VersionPart version = _next;
275
+ address service = _registry.getServiceAddress(REGISTRY(), version);
276
+
277
+ // release exists, registry service is a MUST
278
+ //if(_releaseAccessManager[version] == address(0)) {
279
+ if(service == address(0)) {
280
+ revert ErrorReleaseManagerReleaseNotCreated(version);
281
+ }
282
+
283
+ // release fully deployed
284
+ if(_awaitingRegistration > 0) {
285
+ revert ErrorReleaseManagerReleaseRegistrationNotFinished(version, _awaitingRegistration);
286
+ }
287
+
288
+ // release is not activated
289
+ if(_releaseInfo[version].activatedAt.gtz()) {
290
+ revert ErrorReleaseManagerReleaseAlreadyActivated(version);
291
+ }
292
+
293
+ _latest = version;
294
+ _state = ACTIVE();
295
+
296
+ _active[service] = true;
297
+ _releaseInfo[version].activatedAt = TimestampLib.blockTimestamp();
298
+
299
+ emit LogReleaseActivation(version);
300
+ }
301
+
302
+ //--- view functions ----------------------------------------------------//
303
+
304
+ function predictDeterministicAddress(
305
+ address implementation,
306
+ bytes32 salt,
307
+ address deployer
308
+ ) external pure returns (address predicted) {
309
+ return Clones.predictDeterministicAddress(implementation, salt, deployer);
310
+ }
311
+
312
+ function isActiveRegistryService(address service) external view returns(bool) {
313
+ return _active[service];
314
+ }
315
+
316
+ function isValidRelease(VersionPart version) external view returns(bool) {
317
+ return _releaseInfo[version].activatedAt.gtz();
318
+ }
319
+
320
+ function getRegistryAddress() external view returns(address) {
321
+ return (address(_registry));
322
+ }
323
+
324
+ function getReleaseInfo(VersionPart version) external view returns(IRegistry.ReleaseInfo memory) {
325
+ return _releaseInfo[version];
326
+ }
327
+
328
+ function getNextVersion() public view returns(VersionPart) {
329
+ return _next;
330
+ }
331
+
332
+ function getLatestVersion() external view returns(VersionPart) {
333
+ return _latest;
334
+ }
335
+
336
+ function getInitialVersion() external view returns(VersionPart) {
337
+ return _initial;
338
+ }
339
+
340
+ function getState() external view returns (StateId stateId) {
341
+ return _state;
342
+ }
343
+
344
+ function getRemainingServicesToRegister() external view returns (uint256 services) {
345
+ return _awaitingRegistration;
346
+ }
347
+
348
+ function getReleaseAccessManager(VersionPart version) external view returns(AccessManagerUpgradeableInitializeable) {
349
+ return _releaseAccessManager[version];
350
+ }
351
+
352
+ //--- ILifecycle -----------------------------------------------------------//
353
+
354
+ function hasLifecycle(ObjectType objectType) external view returns (bool) { return objectType == RELEASE(); }
355
+
356
+ function getInitialState(ObjectType objectType) public view returns (StateId stateId) {
357
+ if (objectType == RELEASE()) {
358
+ stateId = INITIAL();
359
+ }
360
+ }
361
+
362
+ function isValidTransition(
363
+ ObjectType objectType,
364
+ StateId fromId,
365
+ StateId toId
366
+ )
367
+ public
368
+ view
369
+ returns (bool isValid)
370
+ {
371
+ if (objectType != RELEASE()) { return false; }
372
+
373
+ if (fromId == INITIAL() && toId == SCHEDULED()) { return true; }
374
+ if (fromId == SCHEDULED() && toId == DEPLOYING()) { return true; }
375
+ if (fromId == DEPLOYING() && toId == SCHEDULED()) { return true; }
376
+ if (fromId == DEPLOYING() && toId == DEPLOYING()) { return true; }
377
+ if (fromId == DEPLOYING() && toId == ACTIVE()) { return true; }
378
+
379
+ return false;
380
+ }
381
+
382
+ //--- private functions ----------------------------------------------------//
383
+
384
+ function _verifyService(IService service)
385
+ internal
386
+ returns(
387
+ IRegistry.ObjectInfo memory serviceInfo,
388
+ ObjectType serviceDomain,
389
+ VersionPart serviceVersion
390
+ )
391
+ {
392
+ if(!service.supportsInterface(type(IService).interfaceId)) {
393
+ revert ErrorReleaseManagerNotService(service);
394
+ }
395
+
396
+ address owner = msg.sender;
397
+ address serviceAuthority = service.authority();
398
+ serviceVersion = service.getVersion().toMajorPart();
399
+ serviceDomain = service.getDomain();// checked in registry
400
+ serviceInfo = service.getInitialInfo();
401
+
402
+ _verifyServiceInfo(service, serviceInfo, owner);
403
+
404
+ VersionPart releaseVersion = getNextVersion(); // never 0
405
+ address releaseAuthority = address(_releaseAccessManager[releaseVersion]); // can be zero if registering service when release is not created
406
+
407
+ // IMPORTANT: can not guarantee service access is actually controlled by authority
408
+ if(serviceAuthority != releaseAuthority) {
409
+ revert ErrorReleaseManagerServiceReleaseAuthorityMismatch(
410
+ service,
411
+ serviceAuthority,
412
+ releaseAuthority);
413
+ }
414
+
415
+ if(serviceVersion != releaseVersion) {
416
+ revert ErrorReleaseManagerServiceReleaseVersionMismatch(
417
+ service,
418
+ serviceVersion,
419
+ releaseVersion);
420
+ }
421
+ }
422
+
423
+
424
+ function _verifyServiceInfo(
425
+ IService service,
426
+ IRegistry.ObjectInfo memory info,
427
+ address expectedOwner // assume always valid, can not be 0
428
+ )
429
+ internal
430
+ view
431
+ {
432
+ if(info.objectAddress != address(service)) {
433
+ revert ErrorReleaseManagerServiceInfoAddressInvalid(service, address(service));
434
+ }
435
+
436
+ if(info.isInterceptor != false) { // service is never interceptor
437
+ revert ErrorReleaseManagerServiceInfoInterceptorInvalid(service, info.isInterceptor);
438
+ }
439
+
440
+ if(info.objectType != SERVICE()) {// type is checked in registry anyway...but service logic may depend on expected value
441
+ revert ErrorReleaseManagerServiceInfoTypeInvalid(service, SERVICE(), info.objectType);
442
+ }
443
+
444
+ address owner = info.initialOwner;
445
+
446
+ if(owner != expectedOwner) { // registerable owner protection
447
+ revert ErrorReleaseManagerServiceInfoOwnerInvalid(service, expectedOwner, owner);
448
+ }
449
+
450
+ if(owner == address(service)) {
451
+ revert ErrorReleaseManagerServiceSelfRegistration(service);
452
+ }
453
+
454
+ if(_registry.isRegistered(owner)) {
455
+ revert ErrorReleaseManagerServiceOwnerRegistered(service, owner);
456
+ }
457
+ }
458
+
459
+
460
+ function _verifyReleaseAuthorizations(
461
+ address[] memory serviceAddress,
462
+ RoleId[][] memory serviceRoles,
463
+ RoleId[][] memory functionRoles,
464
+ bytes4[][][] memory selectors
465
+ )
466
+ internal
467
+ view
468
+ {
469
+ for(uint serviceIdx = 0; serviceIdx < serviceAddress.length; serviceIdx++)
470
+ {
471
+ for(uint roleIdx = 0; roleIdx < serviceRoles[serviceIdx].length; roleIdx++)
472
+ {
473
+ RoleId role = serviceRoles[serviceIdx][roleIdx];
474
+ if(role == ADMIN_ROLE()) {
475
+ revert ErrorReleaseManagerServiceRoleInvalid(serviceAddress[serviceIdx], role);
476
+ }
477
+ }
478
+ }
479
+
480
+ // TODO no duplicate service "domain" role per release
481
+ // TODO no duplicate service roles per service
482
+ // TODO no duplicate service function roles per service
483
+ // TODO no duplicate service function selectors per service
484
+ }
485
+
486
+ function _setServiceAuthorizations(
487
+ IAccessManager accessManager,
488
+ address serviceAddress,
489
+ RoleId[] memory serviceRoles,
490
+ RoleId[] memory functionRoles,
491
+ bytes4[][] memory selectors
492
+ )
493
+ internal
494
+ {
495
+ for(uint idx = 0; idx < functionRoles.length; idx++)
496
+ {
497
+ accessManager.setTargetFunctionRole(
498
+ serviceAddress,
499
+ selectors[idx],
500
+ functionRoles[idx].toInt());
501
+
502
+ // TODO check/figure out which approach to take
503
+ // ObjectType domain = config[idx].serviceDomain;
504
+ // // not "registry service" / zero domain
505
+ // if(
506
+ // domain == REGISTRY() ||
507
+ // domain.eqz()
508
+ // ) { revert ConfigServiceDomainInvalid(idx, domain); }
509
+
510
+ // bytes4[] memory selectors = config[idx].authorizedSelectors;
511
+
512
+ // // TODO can be zero -> e.g. duplicate domain, first with zero selector, second with non zero selector -> need to check _release[version].domains.contains(domain) instead
513
+ // // no overwrite
514
+ // if(_selectors[version][domain].length > 0) {
515
+ // revert SelectorAlreadyExists(version, domain);
516
+ // }
517
+
518
+ // _selectors[version][domain] = selectors;
519
+ // _release[version].domains.push(domain);
520
+ }
521
+
522
+ for(uint idx = 0; idx < serviceRoles.length; idx++)
523
+ {
524
+ accessManager.grantRole(
525
+ serviceRoles[idx].toInt(),
526
+ serviceAddress,
527
+ 0);
528
+ }
529
+ }
530
+ }