@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da0f894-204
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.
- package/README.md +73 -1
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +212 -94
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +552 -122
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +64 -72
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +279 -98
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +406 -90
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +68 -144
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +654 -117
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +316 -166
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +2 -2
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +765 -323
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +97 -180
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +841 -574
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +134 -231
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +98 -124
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +265 -269
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +319 -99
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +2 -2
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +118 -169
- package/artifacts/contracts/instance/base/IKeyValueStore.sol/IKeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ILifecycle.sol/ILifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.dbg.json +1 -1
- package/artifacts/contracts/instance/base/KeyValueStore.sol/KeyValueStore.json +2 -2
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +2 -2
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +62 -36
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IDistribution.sol/IDistribution.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IPolicy.sol/IPolicy.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IRisk.sol/IRisk.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ISetup.sol/ISetup.dbg.json +1 -1
- package/artifacts/contracts/instance/module/ITreasury.sol/ITreasury.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +947 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +665 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +261 -267
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +305 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +754 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +637 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +1031 -250
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +441 -85
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +535 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +130 -212
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +409 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +552 -135
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +40 -287
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +22 -169
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +22 -169
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +164 -391
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +311 -127
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +142 -221
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +302 -90
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +142 -221
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +302 -90
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +15 -21
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +83 -174
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +28 -34
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +2 -2
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +193 -216
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +300 -94
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +11 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +141 -37
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.dbg.json +1 -1
- package/artifacts/contracts/shared/ERC165.sol/ERC165.json +41 -3
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +40 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +129 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +21 -29
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IB.sol/IB.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +18 -20
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +22 -169
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.dbg.json +1 -1
- package/artifacts/contracts/shared/IVersionable.sol/IVersionable.json +2 -152
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/NftOwnable.sol/NftOwnable.json +113 -33
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +248 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +294 -74
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +125 -55
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +84 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +113 -164
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.dbg.json +1 -1
- package/artifacts/contracts/shared/UpgradableProxyWithAdmin.sol/UpgradableProxyWithAdmin.json +2 -2
- package/artifacts/contracts/shared/Versionable.sol/Versionable.dbg.json +1 -1
- package/artifacts/contracts/shared/Versionable.sol/Versionable.json +2 -152
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +125 -55
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +6 -6
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +134 -221
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +1 -1
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +8 -190
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +1 -1
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/ClaimId.sol/ClaimIdLib.json +100 -0
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.json +2 -2
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +1 -1
- package/artifacts/contracts/types/Key32.sol/Key32Lib.json +2 -2
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +2 -2
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +1 -1
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +2 -2
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +1 -1
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.json +2 -2
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/types/PayoutId.sol/PayoutIdLib.json +100 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +2 -2
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.json +2 -2
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.json +2 -2
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/types/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +25 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/contracts/components/Component.sol +82 -77
- package/contracts/components/Distribution.sol +188 -48
- package/contracts/components/IComponent.sol +42 -17
- package/contracts/components/IDistributionComponent.sol +39 -7
- package/contracts/components/IPoolComponent.sol +121 -21
- package/contracts/components/IProductComponent.sol +3 -2
- package/contracts/components/Pool.sol +290 -120
- package/contracts/components/Product.sol +92 -69
- package/contracts/instance/BundleManager.sol +1 -1
- package/contracts/instance/IInstance.sol +21 -1
- package/contracts/instance/IInstanceService.sol +19 -2
- package/contracts/instance/Instance.sol +58 -36
- package/contracts/instance/InstanceAccessManager.sol +136 -253
- package/contracts/instance/InstanceService.sol +154 -137
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/base/ComponentService.sol +1 -1
- package/contracts/instance/module/IAccess.sol +10 -11
- package/contracts/instance/module/IBundle.sol +2 -1
- package/contracts/instance/module/IDistribution.sol +2 -0
- package/contracts/instance/module/IPolicy.sol +30 -3
- package/contracts/instance/module/ISetup.sol +10 -10
- package/contracts/instance/service/ApplicationService.sol +346 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +15 -9
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +151 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +303 -15
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +81 -0
- package/contracts/instance/service/IBundleService.sol +14 -3
- package/contracts/instance/service/IClaimService.sol +61 -0
- package/contracts/instance/service/IDistributionService.sol +74 -0
- package/contracts/instance/service/IPolicyService.sol +26 -50
- package/contracts/instance/service/PolicyService.sol +126 -260
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +2 -3
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/ProductService.sol +9 -9
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/IRegistry.sol +3 -4
- package/contracts/registry/IRegistryService.sol +10 -8
- package/contracts/registry/Registry.sol +28 -21
- package/contracts/registry/RegistryService.sol +69 -48
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +18 -28
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +26 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +12 -0
- package/contracts/shared/IService.sol +2 -0
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +66 -85
- package/contracts/shared/PolicyHolder.sol +81 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +7 -19
- package/contracts/shared/RegistryLinked.sol +48 -0
- package/contracts/shared/Service.sol +15 -17
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/ClaimId.sol +52 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/ObjectType.sol +9 -5
- package/contracts/types/PayoutId.sol +54 -0
- package/contracts/types/RoleId.sol +14 -12
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/Timestamp.sol +12 -13
- package/package.json +1 -1
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Cloner.json +0 -66
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock1.json +0 -24
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.dbg.json +0 -4
- package/artifacts/contracts/experiment/cloning/Cloner.sol/Mock2.json +0 -42
- package/artifacts/contracts/experiment/errors/Require.sol/Require.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Require.sol/Require.json +0 -105
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.dbg.json +0 -4
- package/artifacts/contracts/experiment/errors/Revert.sol/Revert.json +0 -105
- package/artifacts/contracts/experiment/inheritance/A.sol/A.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/A.json +0 -128
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/A.sol/AShared.json +0 -42
- package/artifacts/contracts/experiment/inheritance/B.sol/B.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/B.sol/B.json +0 -76
- package/artifacts/contracts/experiment/inheritance/C.sol/C.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/C.sol/C.json +0 -89
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/IA.json +0 -128
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IA.sol/ISharedA.json +0 -37
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IC.sol/IC.json +0 -63
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/Dummy.sol/LifeCycleModule.json +0 -59
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/ISM.sol/ISMEE.json +0 -74
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SM.sol/SM.json +0 -124
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.dbg.json +0 -4
- package/artifacts/contracts/experiment/statemachine/SimpleStateMachine.sol/SimpleStateMachine.json +0 -207
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeA.sol/TypeALib.json +0 -10
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.dbg.json +0 -4
- package/artifacts/contracts/experiment/types/TypeB.sol/TypeBLib.json +0 -10
- package/contracts/experiment/cloning/Cloner.sol +0 -47
- package/contracts/experiment/errors/Require.sol +0 -38
- package/contracts/experiment/errors/Revert.sol +0 -44
- package/contracts/experiment/inheritance/A.sol +0 -53
- package/contracts/experiment/inheritance/B.sol +0 -28
- package/contracts/experiment/inheritance/C.sol +0 -34
- package/contracts/experiment/inheritance/IA.sol +0 -13
- package/contracts/experiment/inheritance/IB.sol +0 -10
- package/contracts/experiment/inheritance/IC.sol +0 -12
- package/contracts/experiment/statemachine/Dummy.sol +0 -27
- package/contracts/experiment/statemachine/ISM.sol +0 -25
- package/contracts/experiment/statemachine/SM.sol +0 -57
- package/contracts/experiment/statemachine/SimpleStateMachine.sol +0 -31
- package/contracts/experiment/types/TypeA.sol +0 -47
- package/contracts/experiment/types/TypeB.sol +0 -29
@@ -6,12 +6,10 @@ import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/acce
|
|
6
6
|
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
7
7
|
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
8
8
|
|
9
|
-
import {RoleId, RoleIdLib
|
9
|
+
import {RoleId, RoleIdLib } from "../types/RoleId.sol";
|
10
10
|
import {TimestampLib} from "../types/Timestamp.sol";
|
11
11
|
import {IAccess} from "./module/IAccess.sol";
|
12
12
|
|
13
|
-
import {IRegistry} from "../registry/IRegistry.sol";
|
14
|
-
|
15
13
|
contract InstanceAccessManager is
|
16
14
|
AccessManagedUpgradeable
|
17
15
|
{
|
@@ -24,302 +22,173 @@ contract InstanceAccessManager is
|
|
24
22
|
uint32 public constant EXECUTION_DELAY = 0;
|
25
23
|
|
26
24
|
// role specific state
|
27
|
-
mapping(RoleId roleId => IAccess.RoleInfo info) internal
|
25
|
+
mapping(RoleId roleId => IAccess.RoleInfo info) internal _role;
|
28
26
|
mapping(RoleId roleId => EnumerableSet.AddressSet roleMembers) internal _roleMembers;
|
29
|
-
mapping(ShortString name => RoleId roleId) internal
|
30
|
-
RoleId [] internal
|
31
|
-
uint64 _idNext;
|
27
|
+
mapping(ShortString name => RoleId roleId) internal _roleForName;
|
28
|
+
RoleId [] internal _roles;
|
32
29
|
|
33
30
|
// target specific state
|
34
|
-
mapping(address target => IAccess.TargetInfo info) internal
|
35
|
-
mapping(ShortString name => address target) internal
|
31
|
+
mapping(address target => IAccess.TargetInfo info) internal _target;
|
32
|
+
mapping(ShortString name => address target) internal _targetForName;
|
36
33
|
address [] internal _targets;
|
37
34
|
|
38
35
|
AccessManager internal _accessManager;
|
39
|
-
IRegistry internal _registry;
|
40
|
-
|
41
|
-
modifier restrictedToRoleAdmin(RoleId roleId) {
|
42
|
-
RoleId admin = getRoleAdmin(roleId);
|
43
|
-
(bool inRole, uint32 executionDelay) = _accessManager.hasRole(admin.toInt(), _msgSender());
|
44
|
-
assert(executionDelay == 0); // to be sure no delayed execution functionality is used
|
45
|
-
if (!inRole) {
|
46
|
-
revert IAccess.ErrorIAccessCallerIsNotRoleAdmin(_msgSender(), roleId);
|
47
|
-
}
|
48
|
-
_;
|
49
|
-
}
|
50
36
|
|
51
|
-
function initialize(address initialAdmin
|
37
|
+
function initialize(address initialAdmin) external initializer
|
52
38
|
{
|
53
39
|
// if size of the contract gets too large, this can be externalized which will reduce the contract size considerably
|
54
40
|
_accessManager = new AccessManager(address(this));
|
41
|
+
// this service required admin rights to access manager to be able to grant/revoke roles
|
42
|
+
_accessManager.grantRole(_accessManager.ADMIN_ROLE(), initialAdmin, 0);
|
55
43
|
|
56
44
|
__AccessManaged_init(address(_accessManager));
|
57
45
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
_createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME, false);
|
62
|
-
_createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME, false);
|
63
|
-
|
64
|
-
// assume initialAdmin is instance service which requires admin rights to access manager during instance cloning
|
65
|
-
_accessManager.grantRole(ADMIN_ROLE().toInt(), initialAdmin, 0);
|
66
|
-
|
67
|
-
EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
|
68
|
-
EnumerableSet.add(_roleMembers[ADMIN_ROLE()], initialAdmin);
|
46
|
+
_createRole(RoleIdLib.toRoleId(_accessManager.ADMIN_ROLE()), ADMIN_ROLE_NAME, false, false);
|
47
|
+
_createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
|
69
48
|
}
|
70
49
|
|
71
50
|
//--- Role ------------------------------------------------------//
|
72
|
-
|
73
|
-
|
74
|
-
// assume core roles are never revoked or renounced -> core roles admin is never active after intialization
|
75
|
-
// assume gif roles can be revoked or renounced
|
76
|
-
function createRole(RoleId roleId, string memory name, RoleId admin)
|
77
|
-
external
|
78
|
-
restricted()
|
79
|
-
{
|
80
|
-
bool isCustom = false;
|
81
|
-
_validateRoleParameters(roleId, name, isCustom);
|
82
|
-
_createRole(roleId, name, isCustom);
|
83
|
-
setRoleAdmin(roleId, admin);
|
51
|
+
function createGifRole(RoleId roleId, string memory name) external restricted() {
|
52
|
+
_createRole(roleId, name, false, true);
|
84
53
|
}
|
85
54
|
|
86
|
-
|
87
|
-
|
88
|
-
// TODO INSTANCE_OWNER_ROLE as default admin
|
89
|
-
function createCustomRole(string memory name, RoleId admin)
|
90
|
-
external
|
91
|
-
restricted()
|
92
|
-
returns(RoleId roleId)
|
93
|
-
{
|
94
|
-
bool isCustom = true;
|
95
|
-
RoleId roleId = _getNextCustomRoleId();
|
96
|
-
_validateRoleParameters(roleId, name, isCustom);
|
97
|
-
_createRole(roleId, name, isCustom);
|
98
|
-
setRoleAdmin(roleId, admin);
|
55
|
+
function createRole(RoleId roleId, string memory name) external restricted() {
|
56
|
+
_createRole(roleId, name, true, true);
|
99
57
|
}
|
100
58
|
|
101
|
-
|
102
|
-
function setRoleAdmin(RoleId roleId, RoleId admin)
|
103
|
-
public
|
104
|
-
restricted()
|
105
|
-
{
|
59
|
+
function setRoleLocked(RoleId roleId, bool locked) external restricted() {
|
106
60
|
if (!roleExists(roleId)) {
|
107
61
|
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
108
62
|
}
|
109
63
|
|
110
|
-
|
111
|
-
|
112
|
-
|
64
|
+
_role[roleId].isLocked = locked;
|
65
|
+
_role[roleId].updatedAt = TimestampLib.blockTimestamp();
|
66
|
+
}
|
113
67
|
|
114
|
-
|
68
|
+
function roleExists(RoleId roleId) public view returns (bool exists) {
|
69
|
+
return _role[roleId].createdAt.gtz();
|
115
70
|
}
|
116
71
|
|
117
|
-
|
118
|
-
// TODO granting/revoking can be `attached` to nft transfer?
|
119
|
-
function grantRole(RoleId roleId, address member)
|
120
|
-
external
|
121
|
-
restrictedToRoleAdmin(roleId)
|
122
|
-
returns (bool granted)
|
123
|
-
{
|
72
|
+
function grantRole(RoleId roleId, address member) external restricted() returns (bool granted) {
|
124
73
|
if (!roleExists(roleId)) {
|
125
74
|
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
126
75
|
}
|
127
76
|
|
128
|
-
|
129
|
-
|
77
|
+
if (_role[roleId].isLocked) {
|
78
|
+
revert IAccess.ErrorIAccessRoleIdNotActive(roleId);
|
79
|
+
}
|
80
|
+
|
81
|
+
if (!EnumerableSet.contains(_roleMembers[roleId], member)) {
|
130
82
|
_accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
|
131
|
-
|
132
|
-
|
83
|
+
EnumerableSet.add(_roleMembers[roleId], member);
|
84
|
+
return true;
|
85
|
+
}
|
86
|
+
|
87
|
+
return false;
|
133
88
|
}
|
134
89
|
|
135
|
-
function revokeRole(RoleId roleId, address member)
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
90
|
+
function revokeRole(RoleId roleId, address member) external restricted() returns (bool revoked) {
|
91
|
+
if (!roleExists(roleId)) {
|
92
|
+
revert IAccess.ErrorIAccessRevokeNonexstentRole(roleId);
|
93
|
+
}
|
94
|
+
|
95
|
+
if (EnumerableSet.contains(_roleMembers[roleId], member)) {
|
96
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
97
|
+
EnumerableSet.remove(_roleMembers[roleId], member);
|
98
|
+
return true;
|
99
|
+
}
|
100
|
+
|
101
|
+
return false;
|
141
102
|
}
|
142
103
|
|
143
104
|
/// @dev not restricted function by intention
|
144
|
-
/// the restriction to role members is already enforced by the call to the access
|
145
|
-
function renounceRole(RoleId roleId)
|
146
|
-
external
|
147
|
-
returns (bool)
|
148
|
-
{
|
105
|
+
/// the restriction to role members is already enforced by the call to the access manger
|
106
|
+
function renounceRole(RoleId roleId) external returns (bool revoked) {
|
149
107
|
address member = msg.sender;
|
150
|
-
// cannot use accessManger.renounce as it directly checks against msg.sender
|
151
|
-
return _revokeRole(roleId, member);
|
152
|
-
}
|
153
108
|
|
154
|
-
|
155
|
-
|
156
|
-
|
109
|
+
if (!roleExists(roleId)) {
|
110
|
+
revert IAccess.ErrorIAccessRenounceNonexstentRole(roleId);
|
111
|
+
}
|
157
112
|
|
158
|
-
|
159
|
-
|
160
|
-
|
113
|
+
if (EnumerableSet.contains(_roleMembers[roleId], member)) {
|
114
|
+
// cannot use accessManger.renounce as it directly checks against msg.sender
|
115
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
116
|
+
EnumerableSet.remove(_roleMembers[roleId], member);
|
117
|
+
return true;
|
118
|
+
}
|
161
119
|
|
162
|
-
|
163
|
-
return _roleInfo[roleId];
|
120
|
+
return false;
|
164
121
|
}
|
165
122
|
|
166
|
-
function
|
167
|
-
return
|
123
|
+
function roles() external view returns (uint256 numberOfRoles) {
|
124
|
+
return _roles.length;
|
168
125
|
}
|
169
126
|
|
170
127
|
function getRoleId(uint256 idx) external view returns (RoleId roleId) {
|
171
|
-
return
|
128
|
+
return _roles[idx];
|
172
129
|
}
|
173
130
|
|
174
131
|
function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
|
175
|
-
return
|
132
|
+
return _roleForName[ShortStrings.toShortString(name)];
|
176
133
|
}
|
177
134
|
|
178
|
-
function
|
179
|
-
return
|
135
|
+
function getRole(RoleId roleId) external view returns (IAccess.RoleInfo memory role) {
|
136
|
+
return _role[roleId];
|
180
137
|
}
|
181
138
|
|
182
139
|
function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
|
183
140
|
(accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
|
184
141
|
}
|
185
142
|
|
186
|
-
function
|
187
|
-
return
|
143
|
+
function roleMembers(RoleId roleId) external view returns (uint256 numberOfMembers) {
|
144
|
+
return EnumerableSet.length(_roleMembers[roleId]);
|
188
145
|
}
|
189
146
|
|
190
|
-
|
191
|
-
|
192
|
-
function createTarget(address target, string memory name) external restricted() {
|
193
|
-
bool isCustom = false;
|
194
|
-
_createTarget(target, name, isCustom);
|
147
|
+
function getRoleMember(RoleId roleId, uint256 idx) external view returns (address roleMember) {
|
148
|
+
return EnumerableSet.at(_roleMembers[roleId], idx);
|
195
149
|
}
|
196
|
-
// INSTANCE_OWNER_ROLE
|
197
|
-
function createCustomTarget(address target, string memory name)
|
198
|
-
external
|
199
|
-
restricted()
|
200
|
-
{
|
201
|
-
// TODO custom targets can not be registered before this function, but possibly can after...
|
202
|
-
if(_registry.isRegistered(target)) {
|
203
|
-
revert IAccess.ErrorIAccessTargetIsRegistered(target);
|
204
|
-
}
|
205
150
|
|
206
|
-
|
207
|
-
|
151
|
+
//--- Target ------------------------------------------------------//
|
152
|
+
function createGifTarget(address target, string memory name) external restricted() {
|
153
|
+
_createTarget(target, name, false, true);
|
208
154
|
}
|
209
|
-
// INSTANCE_SERVICE_ROLE
|
210
|
-
function setTargetLocked(string memory targetName, bool locked)
|
211
|
-
external
|
212
|
-
restricted()
|
213
|
-
{
|
214
|
-
ShortString nameShort = ShortStrings.toShortString(targetName);
|
215
|
-
address target = _targetAddressForName[nameShort];
|
216
|
-
|
217
|
-
if (target == address(0)) {
|
218
|
-
revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
|
219
|
-
}
|
220
155
|
|
221
|
-
|
222
|
-
|
223
|
-
revert IAccess.ErrorIAccessSetLockedForNoncustomTarget(target);
|
224
|
-
}*/
|
225
|
-
// TODO isLocked is redundant but makes getTargetInfo() faster
|
226
|
-
_targetInfo[target].isLocked = locked;
|
227
|
-
_accessManager.setTargetClosed(target, locked);
|
156
|
+
function createTarget(address target, string memory name) external restricted() {
|
157
|
+
_createTarget(target, name, true, true);
|
228
158
|
}
|
229
159
|
|
230
|
-
|
231
|
-
|
232
|
-
|
233
|
-
//3) set custom role for gif target
|
234
|
-
//4) set custom role for custom target
|
235
|
-
|
236
|
-
// ADMIN_ROLE if used only during initialization, works with:
|
237
|
-
// any roles for any targets
|
238
|
-
// INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
|
239
|
-
// core roles for core targets
|
240
|
-
// gif roles for gif targets
|
241
|
-
function setTargetFunctionRole(
|
242
|
-
string memory targetName,
|
243
|
-
bytes4[] calldata selectors,
|
244
|
-
RoleId roleId
|
245
|
-
)
|
246
|
-
public
|
247
|
-
virtual
|
248
|
-
restricted()
|
249
|
-
{
|
250
|
-
ShortString nameShort = ShortStrings.toShortString(targetName);
|
251
|
-
address target = _targetAddressForName[nameShort];
|
252
|
-
|
253
|
-
if (target == address(0)) {
|
254
|
-
revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
|
255
|
-
}
|
256
|
-
|
257
|
-
if (!roleExists(roleId)) {
|
258
|
-
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
259
|
-
}
|
260
|
-
|
261
|
-
uint64 roleIdInt = RoleId.unwrap(roleId);
|
262
|
-
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
263
|
-
}
|
264
|
-
// INSTANCE_OWNER_ROLE
|
265
|
-
// custom role for gif target -> instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
|
266
|
-
// custom role for custom target
|
267
|
-
function setTargetFunctionCustomRole(
|
268
|
-
string memory targetName,
|
269
|
-
bytes4[] calldata selectors,
|
270
|
-
RoleId roleId
|
271
|
-
) public virtual restricted() {
|
272
|
-
ShortString nameShort = ShortStrings.toShortString(targetName);
|
273
|
-
address target = _targetAddressForName[nameShort];
|
160
|
+
function setTargetLocked(string memory targetName, bool locked) external restricted() {
|
161
|
+
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
162
|
+
|
274
163
|
if (target == address(0)) {
|
275
|
-
revert IAccess.ErrorIAccessTargetDoesNotExist(
|
276
|
-
}
|
277
|
-
|
278
|
-
// TODO set for gif and custom targets but NEVER for core targets
|
279
|
-
/*if(!_targetInfo[target].isCustom) {
|
280
|
-
revert IAccess.ErrorIAccessSetForNoncustomTarget(target);
|
281
|
-
}*/
|
282
|
-
|
283
|
-
if (!roleExists(roleId)) {
|
284
|
-
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
164
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
285
165
|
}
|
286
166
|
|
287
|
-
|
288
|
-
|
289
|
-
revert IAccess.ErrorIAccessSetNoncustomRole(roleId);
|
290
|
-
}*/
|
291
|
-
|
292
|
-
uint64 roleIdInt = RoleId.unwrap(roleId);
|
293
|
-
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
294
|
-
}
|
295
|
-
|
296
|
-
function isTargetLocked(address target) public view returns (bool locked) {
|
297
|
-
return _accessManager.isTargetClosed(target);
|
167
|
+
_target[target].isLocked = locked;
|
168
|
+
_accessManager.setTargetClosed(target, locked);
|
298
169
|
}
|
299
170
|
|
300
171
|
function targetExists(address target) public view returns (bool exists) {
|
301
|
-
return
|
302
|
-
}
|
303
|
-
|
304
|
-
function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory) {
|
305
|
-
return _targetInfo[target];
|
172
|
+
return _target[target].createdAt.gtz();
|
306
173
|
}
|
307
174
|
|
308
175
|
//--- internal view/pure functions --------------------------------------//
|
309
176
|
|
310
|
-
function _createRole(RoleId roleId, string memory name, bool isCustom)
|
311
|
-
|
312
|
-
|
177
|
+
function _createRole(RoleId roleId, string memory name, bool isCustom, bool validateParameters) internal {
|
178
|
+
if (validateParameters) {
|
179
|
+
_validateRoleParameters(roleId, name, isCustom);
|
180
|
+
}
|
181
|
+
|
313
182
|
IAccess.RoleInfo memory role = IAccess.RoleInfo(
|
314
183
|
ShortStrings.toShortString(name),
|
315
184
|
isCustom,
|
316
|
-
|
185
|
+
false, // role un-locked,
|
317
186
|
TimestampLib.blockTimestamp(),
|
318
187
|
TimestampLib.blockTimestamp());
|
319
188
|
|
320
|
-
|
321
|
-
|
322
|
-
|
189
|
+
_role[roleId] = role;
|
190
|
+
_roleForName[role.name] = roleId;
|
191
|
+
_roles.push(roleId);
|
323
192
|
}
|
324
193
|
|
325
194
|
function _validateRoleParameters(
|
@@ -331,11 +200,19 @@ contract InstanceAccessManager is
|
|
331
200
|
view
|
332
201
|
returns (IAccess.RoleInfo memory existingRole)
|
333
202
|
{
|
334
|
-
|
335
|
-
|
203
|
+
// check role id
|
204
|
+
uint64 roleIdInt = RoleId.unwrap(roleId);
|
205
|
+
if(roleIdInt == _accessManager.ADMIN_ROLE() || roleIdInt == _accessManager.PUBLIC_ROLE()) {
|
206
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
207
|
+
}
|
208
|
+
|
209
|
+
// prevent changing isCustom for existing roles
|
210
|
+
existingRole = _role[roleId];
|
211
|
+
|
212
|
+
if (existingRole.createdAt.gtz() && isCustom != existingRole.isCustom) {
|
213
|
+
revert IAccess.ErrorIAccessRoleIsCustomIsImmutable(roleId, isCustom, existingRole.isCustom);
|
336
214
|
}
|
337
215
|
|
338
|
-
uint roleIdInt = roleId.toInt();
|
339
216
|
if (isCustom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
|
340
217
|
revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
|
341
218
|
} else if (!isCustom && roleIdInt >= CUSTOM_ROLE_ID_MIN) {
|
@@ -348,31 +225,22 @@ contract InstanceAccessManager is
|
|
348
225
|
revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
|
349
226
|
}
|
350
227
|
|
351
|
-
if (
|
352
|
-
revert IAccess.ErrorIAccessRoleNameNotUnique(
|
228
|
+
if (_roleForName[nameShort] != RoleIdLib.zero() && _roleForName[nameShort] != roleId) {
|
229
|
+
revert IAccess.ErrorIAccessRoleNameNotUnique(_roleForName[nameShort], nameShort);
|
353
230
|
}
|
354
231
|
}
|
355
232
|
|
356
|
-
function
|
357
|
-
|
358
|
-
|
359
|
-
{
|
360
|
-
if (!roleExists(roleId)) {
|
361
|
-
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
233
|
+
function _createTarget(address target, string memory name, bool isCustom, bool validateParameters) internal {
|
234
|
+
if (validateParameters) {
|
235
|
+
_validateTargetParameters(target, name, isCustom);
|
362
236
|
}
|
363
237
|
|
364
|
-
|
365
|
-
|
366
|
-
|
238
|
+
if (_target[target].createdAt.gtz()) {
|
239
|
+
revert IAccess.ErrorIAccessTargetExists(target, _target[target].name);
|
240
|
+
}
|
241
|
+
if (_targetForName[ShortStrings.toShortString(name)] != address(0)) {
|
242
|
+
revert IAccess.ErrorIAccessTargetNameExists(target, _targetForName[ShortStrings.toShortString(name)], ShortStrings.toShortString(name));
|
367
243
|
}
|
368
|
-
}
|
369
|
-
|
370
|
-
function _getNextCustomRoleId() internal returns(RoleId) {
|
371
|
-
return RoleIdLib.toRoleId(_idNext++);
|
372
|
-
}
|
373
|
-
|
374
|
-
function _createTarget(address target, string memory name, bool isCustom) internal {
|
375
|
-
_validateTargetParameters(target, name, isCustom);
|
376
244
|
|
377
245
|
IAccess.TargetInfo memory info = IAccess.TargetInfo(
|
378
246
|
ShortStrings.toShortString(name),
|
@@ -381,27 +249,42 @@ contract InstanceAccessManager is
|
|
381
249
|
TimestampLib.blockTimestamp(),
|
382
250
|
TimestampLib.blockTimestamp());
|
383
251
|
|
384
|
-
|
385
|
-
|
252
|
+
_target[target] = info;
|
253
|
+
_targetForName[info.name] = target;
|
386
254
|
_targets.push(target);
|
387
255
|
}
|
388
256
|
|
389
257
|
function _validateTargetParameters(address target, string memory name, bool isCustom) internal view {
|
390
|
-
|
391
|
-
|
392
|
-
}
|
258
|
+
// TODO: implement
|
259
|
+
}
|
393
260
|
|
394
|
-
|
395
|
-
|
396
|
-
|
261
|
+
function setTargetFunctionRole(
|
262
|
+
string memory targetName,
|
263
|
+
bytes4[] calldata selectors,
|
264
|
+
RoleId roleId
|
265
|
+
) public virtual restricted() {
|
266
|
+
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
267
|
+
|
268
|
+
if (target == address(0)) {
|
269
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
270
|
+
}
|
271
|
+
if (! roleExists(roleId)) {
|
272
|
+
revert IAccess.ErrorIAccessRoleIdInvalid(roleId);
|
397
273
|
}
|
274
|
+
uint64 roleIdInt = RoleId.unwrap(roleId);
|
275
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
276
|
+
}
|
398
277
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
nameShort);
|
278
|
+
function setTargetClosed(string memory targetName, bool closed) public restricted() {
|
279
|
+
address target = _targetForName[ShortStrings.toShortString(targetName)];
|
280
|
+
if (target == address(0)) {
|
281
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(ShortStrings.toShortString(targetName));
|
404
282
|
}
|
283
|
+
_accessManager.setTargetClosed(target, closed);
|
284
|
+
}
|
285
|
+
|
286
|
+
function isTargetLocked(address target) public view returns (bool locked) {
|
287
|
+
return _accessManager.isTargetClosed(target);
|
405
288
|
}
|
406
289
|
|
407
290
|
function canCall(
|