@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
@@ -1,288 +1,543 @@
1
1
  // SPDX-License-Identifier: Apache-2.0
2
2
  pragma solidity ^0.8.20;
3
3
 
4
+ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
4
5
  import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
5
6
  import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
6
7
 
7
- import {AccessManagedSimple} from "./AccessManagedSimple.sol";
8
- import {AccessManagerSimple} from "./AccessManagerSimple.sol";
9
- import {IBundle} from "./module/IBundle.sol";
10
- import {IPolicy} from "./module/IPolicy.sol";
11
- import {IRisk} from "./module/IRisk.sol";
12
- import {ISetup} from "./module/ISetup.sol";
13
- import {Key32, KeyId, Key32Lib} from "../types/Key32.sol";
14
- import {KeyValueStore} from "./base/KeyValueStore.sol";
15
- import {NftId} from "../types/NftId.sol";
16
- import {NumberId} from "../types/NumberId.sol";
17
- import {ObjectType, BUNDLE, DISTRIBUTION, POLICY, POOL, ROLE, PRODUCT, TARGET} from "../types/ObjectType.sol";
18
- import {RiskId, RiskIdLib} from "../types/RiskId.sol";
19
- import {RoleId, RoleIdLib} from "../types/RoleId.sol";
20
- import {StateId, ACTIVE} from "../types/StateId.sol";
21
- import {Timestamp, TimestampLib} from "../types/Timestamp.sol";
8
+ import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../type/RoleId.sol";
9
+ import {TimestampLib} from "../type/Timestamp.sol";
10
+ import {NftId} from "../type/NftId.sol";
11
+
12
+ import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
13
+
14
+ import {IRegistry} from "../registry/IRegistry.sol";
15
+
16
+ import {IInstance} from "./IInstance.sol";
17
+ import {IAccess} from "./module/IAccess.sol";
22
18
 
23
19
  contract InstanceAccessManager is
24
- AccessManagedSimple
20
+ AccessManagedUpgradeable
25
21
  {
22
+ event LogRoleCreation(RoleId roleId, ShortString name, IAccess.Type rtype);
23
+ event LogTargetCreation(address target, ShortString name, IAccess.Type ttype, bool isLocked);
24
+
25
+ using RoleIdLib for RoleId;
26
+
26
27
  string public constant ADMIN_ROLE_NAME = "AdminRole";
27
28
  string public constant PUBLIC_ROLE_NAME = "PublicRole";
29
+ string public constant INSTANCE_ROLE_NAME = "InstanceRole";
30
+ string public constant INSTANCE_OWNER_ROLE_NAME = "InstanceOwnerRole";
28
31
 
29
- uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
32
+ uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
30
33
  uint32 public constant EXECUTION_DELAY = 0;
31
34
 
32
- struct RoleInfo {
33
- ShortString name;
34
- bool isCustom;
35
- bool isLocked;
36
- Timestamp createdAt;
37
- Timestamp updatedAt;
38
- }
39
-
40
- struct TargetInfo {
41
- ShortString name;
42
- bool isCustom;
43
- bool isLocked;
44
- Timestamp createdAt;
45
- Timestamp updatedAt;
46
- }
47
-
48
- error ErrorRoleIdInvalid(RoleId roleId);
49
- error ErrorRoleIdTooBig(RoleId roleId);
50
- error ErrorRoleIdTooSmall(RoleId roleId);
51
- error ErrorRoleIdAlreadyExists(RoleId roleId, ShortString name);
52
- error ErrorRoleIdNotActive(RoleId roleId);
53
- error ErrorRoleNameEmpty(RoleId roleId);
54
- error ErrorRoleNameNotUnique(RoleId roleId, ShortString name);
55
- error ErrorRoleInvalidUpdate(RoleId roleId, bool isCustom);
56
- error ErrorRoleIsCustomIsImmutable(RoleId roleId, bool isCustom, bool isCustomExisting);
57
- error ErrorSetLockedForNonexstentRole(RoleId roleId);
58
- error ErrorGrantNonexstentRole(RoleId roleId);
59
- error ErrorRevokeNonexstentRole(RoleId roleId);
60
- error ErrorRenounceNonexstentRole(RoleId roleId);
61
-
62
- error ErrorTargetAddressZero();
63
- error ErrorTargetAlreadyExists(address target, ShortString name);
64
- error ErrorTargetNameEmpty(address target);
65
- error ErrorTargetNameExists(address target, address existingTarget, ShortString name);
66
- error ErrorSetLockedForNonexstentTarget(address target);
67
-
68
35
  // role specific state
69
- mapping(RoleId roleId => RoleInfo info) internal _role;
36
+ mapping(RoleId roleId => IAccess.RoleInfo info) internal _roleInfo;
70
37
  mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
71
- mapping(ShortString name => RoleId roleId) internal _roleForName;
72
- RoleId [] internal _roles;
38
+ mapping(ShortString name => RoleId roleId) internal _roleIdForName;
39
+ RoleId [] internal _roleIds;
40
+ uint64 _idNext;
73
41
 
74
42
  // target specific state
75
- mapping(address target => TargetInfo info) internal _target;
76
- mapping(ShortString name => address target) internal _targetForName;
43
+ mapping(address target => IAccess.TargetInfo info) internal _targetInfo;
44
+ mapping(ShortString name => address target) internal _targetAddressForName;
77
45
  address [] internal _targets;
78
46
 
79
- AccessManagerSimple internal _accessManager;
47
+ AccessManagerUpgradeableInitializeable internal _accessManager;
48
+ IRegistry internal _registry;
49
+
50
+ modifier restrictedToRoleAdmin(RoleId roleId) {
51
+ RoleId admin = getRoleAdmin(roleId);
52
+ (bool inRole, uint32 executionDelay) = _accessManager.hasRole(admin.toInt(), _msgSender());
53
+ assert(executionDelay == 0); // to be sure no delayed execution functionality is used
54
+ if (!inRole) {
55
+ revert IAccess.ErrorIAccessCallerIsNotRoleAdmin(_msgSender(), roleId);
56
+ }
57
+ _;
58
+ }
80
59
 
81
- constructor(address accessManager)
60
+ // instance owner is granted upon instance nft minting in callback function
61
+ function initialize(address instanceAddress) external initializer
82
62
  {
83
- _accessManager = AccessManagerSimple(accessManager);
84
- initializeAccessManagedSimple(accessManager);
63
+ IInstance instance = IInstance(instanceAddress);
64
+ IRegistry registry = instance.getRegistry();
65
+ address authority = instance.authority();
85
66
 
86
- _createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
87
- _createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
67
+ __AccessManaged_init(authority);
68
+
69
+ _accessManager = AccessManagerUpgradeableInitializeable(authority);
70
+ _registry = registry;
71
+ _idNext = CUSTOM_ROLE_ID_MIN;
72
+
73
+ _createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME, IAccess.Type.Core);
74
+ _createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME, IAccess.Type.Core);
75
+ _createRole(INSTANCE_ROLE(), INSTANCE_ROLE_NAME, IAccess.Type.Core);
76
+ _createRole(INSTANCE_OWNER_ROLE(), INSTANCE_OWNER_ROLE_NAME, IAccess.Type.Gif);// TODO should be of core type
77
+
78
+ // assume `this` is already a member of ADMIN_ROLE
79
+ EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
80
+
81
+ // grant instance role to instance contract address
82
+ grantRole(INSTANCE_ROLE(), instanceAddress);
83
+ setRoleAdmin(INSTANCE_OWNER_ROLE(), INSTANCE_ROLE());
88
84
  }
89
85
 
90
86
  //--- Role ------------------------------------------------------//
91
-
92
- function createDefaultRole(RoleId roleId, string memory name) external restricted() {
93
- _createRole(roleId, name, false, true);
87
+ // ADMIN_ROLE
88
+ // assume all core roles are know at deployment time
89
+ // assume core roles are set and granted only during instance cloning
90
+ // assume core roles are never revoked -> core roles admin is never active after intialization
91
+ function createCoreRole(RoleId roleId, string memory name)
92
+ external
93
+ restricted()
94
+ {
95
+ _createRole(roleId, name, IAccess.Type.Core);
94
96
  }
95
97
 
96
- function createRole(RoleId roleId, string memory name) external restricted() {
97
- _createRole(roleId, name, true, true);
98
+ // ADMIN_ROLE
99
+ // assume gif roles can be revoked
100
+ // assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
101
+ function createGifRole(RoleId roleId, string memory name, RoleId admin)
102
+ external
103
+ restricted()
104
+ {
105
+ _createRole(roleId, name, IAccess.Type.Gif);
106
+ setRoleAdmin(roleId, admin);
98
107
  }
99
108
 
100
- function setRoleLocked(RoleId roleId, bool locked) external restricted() {
101
- if (!roleExists(roleId)) {
102
- revert ErrorSetLockedForNonexstentRole(roleId);
103
- }
109
+ // INSTANCE_OWNER_ROLE
110
+ // TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
111
+ function createRole(string memory roleName, string memory adminName)
112
+ external
113
+ restricted()
114
+ returns(RoleId roleId, RoleId admin)
115
+ {
116
+ (roleId, admin) = _getNextCustomRoleId();
104
117
 
105
- _role[roleId].isLocked = locked;
106
- _role[roleId].updatedAt = TimestampLib.blockTimestamp();
107
- }
118
+ _createRole(roleId, roleName, IAccess.Type.Custom);
119
+ _createRole(admin, adminName, IAccess.Type.Custom);
108
120
 
109
- function roleExists(RoleId roleId) public view returns (bool exists) {
110
- return _role[roleId].createdAt.gtz();
121
+ // TODO works without this -> why?
122
+ setRoleAdmin(roleId, admin);
123
+ setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
111
124
  }
112
125
 
113
- function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
126
+ // ADMIN_ROLE
127
+ // assume used by instance service only during instance cloning
128
+ // assume used only by this.createRole(), this.createGifRole() afterwards
129
+ function setRoleAdmin(RoleId roleId, RoleId admin)
130
+ public
131
+ restricted()
132
+ {
114
133
  if (!roleExists(roleId)) {
115
- revert ErrorGrantNonexstentRole(roleId);
134
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
116
135
  }
117
136
 
118
- if (_role[roleId].isLocked) {
119
- revert ErrorRoleIdNotActive(roleId);
137
+ if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
138
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
120
139
  }
121
140
 
122
- if (!EnumerableSet.contains(_roleMembers[roleId], member)) {
123
- _accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
124
- EnumerableSet.add(_roleMembers[roleId], member);
125
- return true;
126
- }
141
+ if (!roleExists(admin)) {
142
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(admin);
143
+ }
127
144
 
128
- return false;
145
+ _roleInfo[roleId].admin = admin;
129
146
  }
130
147
 
131
- function revokeRole(RoleId roleId, address member) external restricted() returns (bool revoked) {
148
+ // TODO core role can be granted only to 1 member
149
+ function grantRole(RoleId roleId, address member)
150
+ public
151
+ restrictedToRoleAdmin(roleId)
152
+ returns (bool granted)
153
+ {
132
154
  if (!roleExists(roleId)) {
133
- revert ErrorRevokeNonexstentRole(roleId);
155
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
134
156
  }
135
157
 
136
- if (EnumerableSet.contains(_roleMembers[roleId], member)) {
137
- _accessManager.revokeRole(roleId.toInt(), member);
138
- EnumerableSet.remove(_roleMembers[roleId], member);
139
- return true;
140
- }
141
-
142
- return false;
158
+ granted = EnumerableSet.add(_roleMembers[roleId], member);
159
+ if(granted) {
160
+ _accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
161
+ }
143
162
  }
144
163
 
145
- /// @dev not restricted function by intention
146
- /// the restriction to role members is already enforced by the call to the access manger
147
- function renounceRole(RoleId roleId) external returns (bool revoked) {
148
- address member = msg.sender;
164
+ function revokeRole(RoleId roleId, address member)
165
+ external
166
+ restrictedToRoleAdmin(roleId)
167
+ returns (bool)
168
+ {
169
+ return _revokeRole(roleId, member);
170
+ }
149
171
 
172
+ // INSTANCE_OWNER_ROLE
173
+ // IMPORTANT: unbounded function, revoke all or revert
174
+ // Instance owner role decides what to do in case of custom role admin bening revoked, e.g.:
175
+ // 1) revoke custom role from ALL members
176
+ // 2) revoke custom role admin from ALL members
177
+ // 3) 1) + 2)
178
+ // 4) revoke only 1 member of custom role admin
179
+ function revokeRoleAllMembers(RoleId roleId)
180
+ external
181
+ restrictedToRoleAdmin(roleId)
182
+ returns (bool revoked)
183
+ {
150
184
  if (!roleExists(roleId)) {
151
- revert ErrorRenounceNonexstentRole(roleId);
185
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
152
186
  }
153
187
 
154
- if (EnumerableSet.contains(_roleMembers[roleId], member)) {
155
- // cannot use accessManger.renounce as it directly checks against msg.sender
156
- _accessManager.revokeRole(roleId.toInt(), member);
188
+ uint memberCount = EnumerableSet.length(_roleMembers[roleId]);
189
+ for(uint memberIdx = 0; memberIdx < memberCount; memberIdx++)
190
+ {
191
+ address member = EnumerableSet.at(_roleMembers[roleId], memberIdx);
157
192
  EnumerableSet.remove(_roleMembers[roleId], member);
158
- return true;
193
+ _accessManager.revokeRole(roleId.toInt(), member);
194
+ }
195
+ }
196
+
197
+ /// @dev not restricted function by intention
198
+ /// the restriction to role members is already enforced by the call to the access manager
199
+ function renounceRole(RoleId roleId)
200
+ external
201
+ returns (bool)
202
+ {
203
+ IAccess.Type rtype = _roleInfo[roleId].rtype;
204
+ if(rtype == IAccess.Type.Core || rtype == IAccess.Type.Gif) {
205
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, rtype);
159
206
  }
160
207
 
161
- return false;
208
+ address member = msg.sender;
209
+ // cannot use accessManger.renounce as it directly checks against msg.sender
210
+ return _revokeRole(roleId, member);
162
211
  }
163
212
 
164
- function roles() external view returns (uint256 numberOfRoles) {
165
- return _roles.length;
213
+ function roleExists(RoleId roleId) public view returns (bool exists) {
214
+ return _roleInfo[roleId].createdAt.gtz();
215
+ }
216
+ // TODO returns ADMIN_ROLE id for non existent roleId
217
+ function getRoleAdmin(RoleId roleId) public view returns(RoleId admin) {
218
+ return _roleInfo[roleId].admin;
219
+ }
220
+
221
+ function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory info) {
222
+ return _roleInfo[roleId];
223
+ }
224
+
225
+ function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
226
+ return EnumerableSet.length(_roleMembers[roleId]);
166
227
  }
167
228
 
168
229
  function getRoleId(uint256 idx) external view returns (RoleId roleId) {
169
- return _roles[idx];
230
+ return _roleIds[idx];
170
231
  }
171
232
 
233
+ // TODO returns ADMIN_ROLE id for non existent name
172
234
  function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
173
- return _roleForName[ShortStrings.toShortString(name)];
235
+ return _roleIdForName[ShortStrings.toShortString(name)];
174
236
  }
175
237
 
176
- function getRole(RoleId roleId) external view returns (RoleInfo memory role) {
177
- return _role[roleId];
238
+ function roleMember(RoleId roleId, uint256 idx) external view returns (address member) {
239
+ return EnumerableSet.at(_roleMembers[roleId], idx);
178
240
  }
179
241
 
180
242
  function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
181
243
  (accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
182
244
  }
183
245
 
184
- function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
185
- return EnumerableSet.length(_roleMembers[roleId]);
246
+ function roles() external view returns (uint256 numberOfRoles) {
247
+ return _roleIds.length;
186
248
  }
187
249
 
188
- function getRoleMember(RoleId roleId, uint256 idx) external view returns (address roleMember) {
189
- return EnumerableSet.at(_roleMembers[roleId], idx);
250
+ //--- Target ------------------------------------------------------//
251
+ // ADMIN_ROLE
252
+ // assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
253
+ function createCoreTarget(address target, string memory name) external restricted() {
254
+ _createTarget(target, name, IAccess.Type.Core);
190
255
  }
256
+ // INSTANCE_SERVICE_ROLE
257
+ // TODO check for instance mismatch?
258
+ function createGifTarget(address target, string memory name) external restricted()
259
+ {
260
+ if(!_registry.isRegistered(target)) {
261
+ revert IAccess.ErrorIAccessTargetNotRegistered(target);
262
+ }
191
263
 
192
- //--- Target ------------------------------------------------------//
193
- function createTarget(address target, string memory name) external restricted() {
194
- _createTarget(target, name, true, true);
264
+ _createTarget(target, name, IAccess.Type.Gif);
265
+ }
266
+ // INSTANCE_OWNER_ROLE
267
+ // assume custom target.authority() is constant -> target MUST not be used with different instance access manager
268
+ // assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
269
+ // assume custom target can not be registered as instance or service -> why?
270
+ // TODO check target associated with instance owner or instance or instance components or components helpers
271
+ function createTarget(address target, string memory name) external restricted()
272
+ {
273
+ _createTarget(target, name, IAccess.Type.Custom);
195
274
  }
196
275
 
197
- function setTargetLocked(address target, bool locked) external restricted() {
198
- if (!targetExists(target)) {
199
- revert ErrorSetLockedForNonexstentTarget(target);
276
+ // TODO instance owner locks component instead of revoking it access to the instance...
277
+ function setTargetLockedByService(address target, bool locked)
278
+ external
279
+ restricted // INSTANCE_SERVICE_ROLE
280
+ {
281
+ _setTargetLocked(target, locked);
282
+ }
283
+
284
+ function setTargetLockedByInstance(address target, bool locked)
285
+ external
286
+ restricted // INSTANCE_ROLE
287
+ {
288
+ _setTargetLocked(target, locked);
289
+ }
290
+
291
+
292
+ // allowed combinations of roles and targets:
293
+ //1) set core role for core target
294
+ //2) set gif role for gif target
295
+ //3) set custom role for gif target
296
+ //4) set custom role for custom target
297
+
298
+ // ADMIN_ROLE if used only during initialization, works with:
299
+ // any roles for any targets
300
+ // INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
301
+ // core roles for core targets
302
+ // gif roles for gif targets
303
+ function setCoreTargetFunctionRole(
304
+ string memory targetName,
305
+ bytes4[] calldata selectors,
306
+ RoleId roleId
307
+ )
308
+ public
309
+ virtual
310
+ restricted()
311
+ {
312
+ ShortString nameShort = ShortStrings.toShortString(targetName);
313
+ address target = _targetAddressForName[nameShort];
314
+
315
+ // not custom target
316
+ if(_targetInfo[target].ttype == IAccess.Type.Custom) {
317
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
200
318
  }
201
319
 
202
- _target[target].isLocked = locked;
203
- _accessManager.setTargetClosed(target, locked);
320
+ // not custom role
321
+ if(_roleInfo[roleId].rtype == IAccess.Type.Custom) {
322
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
323
+ }
324
+
325
+ _setTargetFunctionRole(target, nameShort, selectors, roleId);
326
+ }
327
+
328
+ // INSTANCE_OWNER_ROLE
329
+ // gif role for gif target
330
+ // gif role for custom target
331
+ // custom role for gif target
332
+ // custom role for custom target
333
+ // TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
334
+ function setTargetFunctionRole(
335
+ string memory targetName,
336
+ bytes4[] calldata selectors,
337
+ RoleId roleId
338
+ )
339
+ public
340
+ virtual
341
+ restricted()
342
+ {
343
+ ShortString nameShort = ShortStrings.toShortString(targetName);
344
+ address target = _targetAddressForName[nameShort];
345
+
346
+ // not core target
347
+ if(_targetInfo[target].ttype == IAccess.Type.Core) {
348
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
349
+ }
350
+
351
+ // not core role
352
+ if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
353
+ revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
354
+ }
355
+
356
+ _setTargetFunctionRole(target, nameShort, selectors, roleId);
357
+ }
358
+
359
+ function getTargetAddress(string memory targetName) public view returns(address targetAddress) {
360
+ ShortString nameShort = ShortStrings.toShortString(targetName);
361
+ return _targetAddressForName[nameShort];
362
+ }
363
+
364
+ function isTargetLocked(address target) public view returns (bool locked) {
365
+ return _targetInfo[target].isLocked;
204
366
  }
205
367
 
206
368
  function targetExists(address target) public view returns (bool exists) {
207
- return _target[target].createdAt.gtz();
369
+ return _targetInfo[target].createdAt.gtz();
370
+ }
371
+
372
+ function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory) {
373
+ return _targetInfo[target];
208
374
  }
209
375
 
210
- //--- internal view/pure functions --------------------------------------//
376
+ //--- Role internal view/pure functions --------------------------------------//
377
+ function _createRole(RoleId roleId, string memory roleName, IAccess.Type rtype)
378
+ internal
379
+ {
380
+ ShortString name = ShortStrings.toShortString(roleName);
381
+ _validateRole(roleId, name, rtype);
382
+
383
+ if(roleExists(roleId)) {
384
+ revert IAccess.ErrorIAccessRoleIdExists(roleId);
385
+ }
211
386
 
212
- function _createRole(RoleId roleId, string memory name, bool isCustom, bool validateParameters) internal {
213
- if (validateParameters) {
214
- _validateRoleParameters(roleId, name, isCustom);
387
+ if (_roleIdForName[name].gtz()) {
388
+ revert IAccess.ErrorIAccessRoleNameExists(roleId, _roleIdForName[name], name);
215
389
  }
216
390
 
217
- RoleInfo memory role = RoleInfo(
218
- ShortStrings.toShortString(name),
219
- isCustom,
220
- false, // role un-locked,
391
+ _roleInfo[roleId] = IAccess.RoleInfo(
392
+ name,
393
+ rtype,
394
+ ADMIN_ROLE(),
221
395
  TimestampLib.blockTimestamp(),
222
- TimestampLib.blockTimestamp());
396
+ TimestampLib.blockTimestamp()
397
+ );
398
+ _roleIdForName[name] = roleId;
399
+ _roleIds.push(roleId);
223
400
 
224
- _role[roleId] = role;
225
- _roleForName[role.name] = roleId;
226
- _roles.push(roleId);
401
+ emit LogRoleCreation(roleId, name, rtype);
227
402
  }
228
403
 
229
- function _validateRoleParameters(
230
- RoleId roleId,
231
- string memory name,
232
- bool isCustom
233
- )
404
+ function _validateRole(RoleId roleId, ShortString name, IAccess.Type rtype)
234
405
  internal
235
- view
236
- returns (RoleInfo memory existingRole)
406
+ view
237
407
  {
238
- // check role id
239
- uint64 roleIdInt = RoleId.unwrap(roleId);
240
- if(roleIdInt == _accessManager.ADMIN_ROLE() || roleIdInt == _accessManager.PUBLIC_ROLE()) {
241
- revert ErrorRoleIdInvalid(roleId);
408
+ uint roleIdInt = roleId.toInt();
409
+ if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
410
+ revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
242
411
  }
243
412
 
244
- // prevent changing isCustom for existing roles
245
- existingRole = _role[roleId];
246
-
247
- if (existingRole.createdAt.gtz() && isCustom != existingRole.isCustom) {
248
- revert ErrorRoleIsCustomIsImmutable(roleId, isCustom, existingRole.isCustom);
413
+ if(
414
+ rtype != IAccess.Type.Custom &&
415
+ roleIdInt >= CUSTOM_ROLE_ID_MIN &&
416
+ roleIdInt != PUBLIC_ROLE().toInt())
417
+ {
418
+ revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
249
419
  }
250
420
 
251
- if (isCustom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
252
- revert ErrorRoleIdTooSmall(roleId);
253
- } else if (!isCustom && roleIdInt >= CUSTOM_ROLE_ID_MIN) {
254
- revert ErrorRoleIdTooBig(roleId);
421
+ // role name checks
422
+ if (ShortStrings.byteLength(name) == 0) {
423
+ revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
255
424
  }
425
+ }
256
426
 
257
- // role name checks
258
- ShortString nameShort = ShortStrings.toShortString(name);
259
- if (ShortStrings.byteLength(nameShort) == 0) {
260
- revert ErrorRoleNameEmpty(roleId);
427
+ function _revokeRole(RoleId roleId, address member)
428
+ internal
429
+ returns(bool revoked)
430
+ {
431
+ if (!roleExists(roleId)) {
432
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
261
433
  }
262
434
 
263
- if (_roleForName[nameShort] != RoleIdLib.zero() && _roleForName[nameShort] != roleId) {
264
- revert ErrorRoleNameNotUnique(_roleForName[nameShort], nameShort);
435
+ revoked = EnumerableSet.remove(_roleMembers[roleId], member);
436
+ if(revoked) {
437
+ _accessManager.revokeRole(roleId.toInt(), member);
265
438
  }
266
439
  }
267
440
 
268
- function _createTarget(address target, string memory name, bool isCustom, bool validateParameters) internal {
269
- if (validateParameters) {
270
- _validateTargetParameters(target, name, isCustom);
441
+ function _getNextCustomRoleId()
442
+ internal
443
+ returns(RoleId roleId, RoleId admin)
444
+ {
445
+ uint64 roleIdInt = _idNext;
446
+ uint64 adminInt = roleIdInt + 1;
447
+
448
+ _idNext = roleIdInt + 2;
449
+
450
+ roleId = RoleIdLib.toRoleId(roleIdInt);
451
+ admin = RoleIdLib.toRoleId(adminInt);
452
+ }
453
+
454
+ //--- Target internal view/pure functions --------------------------------------//
455
+ function _createTarget(address target, string memory targetName, IAccess.Type ttype)
456
+ internal
457
+ {
458
+ ShortString name = ShortStrings.toShortString(targetName);
459
+ _validateTarget(target, name, ttype);
460
+
461
+ if (_targetInfo[target].createdAt.gtz()) {
462
+ revert IAccess.ErrorIAccessTargetExists(target, _targetInfo[target].name);
271
463
  }
272
464
 
273
- TargetInfo memory info = TargetInfo(
274
- ShortStrings.toShortString(name),
275
- isCustom,
276
- _accessManager.isTargetClosed(target), // sync with state in access manager
277
- TimestampLib.blockTimestamp(),
278
- TimestampLib.blockTimestamp());
465
+ if (_targetAddressForName[name] != address(0)) {
466
+ revert IAccess.ErrorIAccessTargetNameExists(
467
+ target,
468
+ _targetAddressForName[name],
469
+ name);
470
+ }
279
471
 
280
- _target[target] = info;
281
- _targetForName[info.name] = target;
472
+ bool isLocked = _accessManager.isTargetClosed(target);// sync with state in access manager
473
+ _targetInfo[target] = IAccess.TargetInfo(
474
+ name,
475
+ ttype,
476
+ isLocked,
477
+ TimestampLib.blockTimestamp(),
478
+ TimestampLib.blockTimestamp()
479
+ );
480
+ _targetAddressForName[name] = target;
282
481
  _targets.push(target);
482
+
483
+ emit LogTargetCreation(target, name, ttype, isLocked);
283
484
  }
284
485
 
285
- function _validateTargetParameters(address target, string memory name, bool isCustom) internal view {
486
+ function _validateTarget(address target, ShortString name, IAccess.Type ttype)
487
+ internal
488
+ view
489
+ {
490
+ address targetAuthority = AccessManagedUpgradeable(target).authority();
491
+ if(targetAuthority != authority()) {
492
+ revert IAccess.ErrorIAccessTargetAuthorityInvalid(target, targetAuthority);
493
+ }
494
+
495
+ if (ShortStrings.byteLength(name) == 0) {
496
+ revert IAccess.ErrorIAccessTargetNameEmpty(target);
497
+ }
498
+ }
499
+
500
+ // IMPORTANT: instance access manager MUST be of Core type -> otherwise can be locked forever
501
+ function _setTargetLocked(address target, bool locked) internal
502
+ {
503
+ IAccess.Type targetType = _targetInfo[target].ttype;
504
+ if(target == address(0) || targetType == IAccess.Type.NotInitialized) {
505
+ revert IAccess.ErrorIAccessTargetDoesNotExist(target);
506
+ }
507
+
508
+ if(targetType == IAccess.Type.Core) {
509
+ revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
510
+ }
511
+
512
+ _targetInfo[target].isLocked = locked;
513
+ _accessManager.setTargetClosed(target, locked);
514
+ }
515
+
516
+ function _setTargetFunctionRole(
517
+ address target,
518
+ ShortString name,
519
+ bytes4[] calldata selectors,
520
+ RoleId roleId
521
+ )
522
+ internal
523
+ {
524
+ if (target == address(0)) {
525
+ revert IAccess.ErrorIAccessTargetDoesNotExist(target);
526
+ }
527
+
528
+ if (!roleExists(roleId)) {
529
+ revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
530
+ }
531
+
532
+ uint64 roleIdInt = RoleId.unwrap(roleId);
533
+ _accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
534
+ }
286
535
 
536
+ function canCall(
537
+ address caller,
538
+ address target,
539
+ bytes4 selector
540
+ ) public view virtual returns (bool immediate, uint32 delay) {
541
+ return _accessManager.canCall(caller, target, selector);
287
542
  }
288
- }
543
+ }