@etherisc/gif-next 0.0.2-cbce707-667 → 0.0.2-cbfb727-329
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 +71 -14
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.dbg.json +4 -0
- package/artifacts/contracts/distribution/Distribution.sol/Distribution.json +1376 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionService.sol/DistributionService.json +1556 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +4 -0
- package/artifacts/contracts/distribution/DistributionServiceManager.sol/DistributionServiceManager.json +780 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionComponent.sol/IDistributionComponent.json +1000 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.dbg.json +4 -0
- package/artifacts/contracts/distribution/IDistributionService.sol/IDistributionService.json +840 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +4 -0
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +778 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +454 -554
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +314 -178
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +452 -3054
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +612 -181
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceAuthorizationsLib.sol/InstanceAuthorizationsLib.json +124 -0
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceReader.sol/InstanceReader.json +437 -256
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +452 -364
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +285 -121
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.dbg.json +4 -0
- package/artifacts/contracts/instance/InstanceStore.sol/InstanceStore.json +2788 -0
- package/artifacts/contracts/instance/base/Cloneable.sol/Cloneable.dbg.json +4 -0
- package/artifacts/contracts/instance/{AccessManagedSimple.sol/AccessManagedSimple.json → base/Cloneable.sol/Cloneable.json} +91 -2
- 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 +44 -14
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +38 -13
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.dbg.json +4 -0
- package/artifacts/contracts/instance/base/ObjectManager.sol/ObjectManager.json +256 -0
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +71 -45
- package/artifacts/contracts/instance/module/IBundle.sol/IBundle.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.dbg.json +4 -0
- package/artifacts/contracts/instance/module/IComponents.sol/IComponents.json +10 -0
- 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/pool/BundleService.sol/BundleService.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleService.sol/BundleService.json +1288 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/BundleServiceManager.sol/BundleServiceManager.json +696 -0
- package/artifacts/contracts/pool/IBundleService.sol/IBundleService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IProductService.sol/IProductService.json → pool/IBundleService.sol/IBundleService.json} +338 -354
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolComponent.sol/IPoolComponent.json +1095 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/IPoolService.sol/IPoolService.json +1077 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.dbg.json +4 -0
- package/artifacts/contracts/pool/Pool.sol/Pool.json +1407 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolService.sol/PoolService.json +1622 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.dbg.json +4 -0
- package/artifacts/contracts/pool/PoolServiceManager.sol/PoolServiceManager.json +708 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimService.sol/ClaimService.json +1376 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/product/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IComponentOwnerService.sol/IComponentOwnerService.json → product/IApplicationService.sol/IApplicationService.json} +231 -204
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/product/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/IPolicyService.sol/IPolicyService.json +651 -0
- package/artifacts/contracts/product/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IPoolService.sol/IPoolService.json → product/IPricingService.sol/IPricingService.json} +237 -288
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.dbg.json +4 -0
- package/artifacts/contracts/product/IProductComponent.sol/IProductComponent.json +861 -0
- package/artifacts/contracts/product/IProductService.sol/IProductService.dbg.json +4 -0
- package/artifacts/contracts/{instance/service/IDistributionService.sol/IDistributionService.json → product/IProductService.sol/IProductService.json} +162 -166
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyService.sol/PolicyService.json +1281 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PolicyServiceManager.sol/PolicyServiceManager.json +740 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/product/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/product/Product.sol/Product.dbg.json +4 -0
- package/artifacts/contracts/product/Product.sol/Product.json +1198 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.dbg.json +4 -0
- package/artifacts/contracts/product/ProductService.sol/ProductService.json +864 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.dbg.json +4 -0
- package/artifacts/contracts/product/ProductServiceManager.sol/ProductServiceManager.json +640 -0
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.dbg.json +1 -1
- package/artifacts/contracts/registry/ChainNft.sol/ChainNft.json +15 -2
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistry.sol/IRegistry.json +227 -224
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +231 -226
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.dbg.json +1 -1
- package/artifacts/contracts/registry/ITransferInterceptor.sol/ITransferInterceptor.json +18 -0
- package/artifacts/contracts/registry/Registry.sol/Registry.dbg.json +1 -1
- package/artifacts/contracts/registry/Registry.sol/Registry.json +245 -334
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.dbg.json +4 -0
- package/artifacts/contracts/registry/RegistryAccessManager.sol/RegistryAccessManager.json +285 -0
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryService.sol/RegistryService.json +228 -315
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +283 -151
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +4 -0
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +559 -0
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +132 -57
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.dbg.json +4 -0
- package/artifacts/contracts/shared/AccessManagerUpgradeableInitializeable.sol/AccessManagerUpgradeableInitializeable.json +1206 -0
- package/artifacts/contracts/shared/Component.sol/Component.dbg.json +4 -0
- package/artifacts/contracts/shared/Component.sol/Component.json +873 -0
- package/artifacts/contracts/shared/ComponentService.sol/ComponentService.dbg.json +4 -0
- package/artifacts/contracts/shared/{RegisterableUpgradable.sol/RegisterableUpgradable.json → ComponentService.sol/ComponentService.json} +311 -122
- 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/IComponent.sol/IComponent.dbg.json +4 -0
- package/artifacts/contracts/shared/IComponent.sol/IComponent.json +636 -0
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.dbg.json +1 -1
- package/artifacts/contracts/shared/INftOwnable.sol/INftOwnable.json +27 -29
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/IPolicyHolder.sol/IPolicyHolder.json +189 -0
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.dbg.json +1 -1
- package/artifacts/contracts/shared/IRegisterable.sol/IRegisterable.json +8 -34
- package/artifacts/contracts/shared/IRegistryLinked.sol/IRegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/{experiment/inheritance/IA.sol/ISharedA.json → shared/IRegistryLinked.sol/IRegistryLinked.json} +15 -17
- package/artifacts/contracts/shared/IService.sol/IService.dbg.json +1 -1
- package/artifacts/contracts/shared/IService.sol/IService.json +84 -178
- 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 +109 -29
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.dbg.json +4 -0
- package/artifacts/contracts/shared/PolicyHolder.sol/PolicyHolder.json +302 -0
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.dbg.json +1 -1
- package/artifacts/contracts/shared/ProxyManager.sol/ProxyManager.json +285 -65
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +118 -53
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.dbg.json +4 -0
- package/artifacts/contracts/shared/RegistryLinked.sol/RegistryLinked.json +71 -0
- package/artifacts/contracts/shared/Service.sol/Service.dbg.json +1 -1
- package/artifacts/contracts/shared/Service.sol/Service.json +185 -165
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.dbg.json +1 -1
- package/artifacts/contracts/shared/TokenHandler.sol/TokenHandler.json +24 -6
- 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/staking/IStakingService.sol/IStakingService.dbg.json +4 -0
- package/artifacts/contracts/{instance/base/ComponentServiceBase.sol/ComponentServiceBase.json → staking/IStakingService.sol/IStakingService.json} +224 -187
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/staking/StakeingServiceManager.sol/StakingServiceManager.json +628 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.dbg.json +4 -0
- package/artifacts/contracts/staking/StakingService.sol/StakingService.json +767 -0
- package/artifacts/contracts/type/AddressSet.sol/LibAddressSet.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/AddressSet.sol/LibAddressSet.json +3 -3
- package/artifacts/contracts/type/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/type/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/type/Blocknumber.sol/BlocknumberLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Blocknumber.sol/BlocknumberLib.json +3 -3
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/ClaimId.sol/ClaimIdLib.json +179 -0
- package/artifacts/contracts/type/DistributorType.sol/DistributorTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/DistributorType.sol/DistributorTypeLib.json +5 -5
- package/artifacts/contracts/type/Fee.sol/FeeLib.dbg.json +4 -0
- package/artifacts/contracts/type/Fee.sol/FeeLib.json +312 -0
- package/artifacts/contracts/type/Key32.sol/Key32Lib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Key32.sol/Key32Lib.json +3 -3
- package/artifacts/contracts/type/NftId.sol/NftIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/NftId.sol/NftIdLib.json +166 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.dbg.json +4 -0
- package/artifacts/contracts/type/NftIdSet.sol/LibNftIdSet.json +33 -0
- package/artifacts/contracts/type/ObjectType.sol/ObjectTypeLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/ObjectType.sol/ObjectTypeLib.json +3 -3
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.dbg.json +4 -0
- package/artifacts/contracts/type/PayoutId.sol/PayoutIdLib.json +209 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.dbg.json +4 -0
- package/artifacts/contracts/type/Referral.sol/ReferralLib.json +142 -0
- package/artifacts/contracts/type/RiskId.sol/RiskIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RiskId.sol/RiskIdLib.json +5 -5
- package/artifacts/contracts/type/RoleId.sol/RoleIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/RoleId.sol/RoleIdLib.json +5 -5
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.dbg.json +4 -0
- package/artifacts/contracts/type/Seconds.sol/SecondsLib.json +124 -0
- package/artifacts/contracts/type/StateId.sol/StateIdLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/StateId.sol/StateIdLib.json +3 -3
- package/artifacts/contracts/type/Timestamp.sol/TimestampLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Timestamp.sol/TimestampLib.json +39 -8
- package/artifacts/contracts/type/UFixed.sol/MathLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/MathLib.json +3 -3
- package/artifacts/contracts/type/UFixed.sol/UFixedLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/UFixed.sol/UFixedLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionLib.json +3 -3
- package/artifacts/contracts/type/Version.sol/VersionPartLib.dbg.json +4 -0
- package/artifacts/contracts/{types → type}/Version.sol/VersionPartLib.json +3 -3
- package/contracts/distribution/Distribution.sol +285 -0
- package/contracts/distribution/DistributionService.sol +348 -0
- package/contracts/{instance/service → distribution}/DistributionServiceManager.sol +15 -17
- package/contracts/distribution/IDistributionComponent.sol +71 -0
- package/contracts/distribution/IDistributionService.sol +87 -0
- package/contracts/instance/BundleManager.sol +126 -0
- package/contracts/instance/IInstance.sol +62 -24
- package/contracts/instance/IInstanceService.sol +56 -13
- package/contracts/instance/Instance.sol +151 -365
- package/contracts/instance/InstanceAccessManager.sol +431 -178
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +109 -47
- package/contracts/instance/InstanceService.sol +250 -124
- package/contracts/instance/InstanceServiceManager.sol +11 -13
- package/contracts/instance/InstanceStore.sol +211 -0
- package/contracts/instance/base/Cloneable.sol +51 -0
- package/contracts/instance/base/IKeyValueStore.sol +5 -5
- package/contracts/instance/base/ILifecycle.sol +3 -3
- package/contracts/instance/base/KeyValueStore.sol +22 -42
- package/contracts/instance/base/Lifecycle.sol +27 -7
- package/contracts/instance/base/ObjectManager.sol +82 -0
- package/contracts/instance/module/IAccess.sol +37 -21
- package/contracts/instance/module/IBundle.sol +11 -8
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +7 -4
- package/contracts/instance/module/IPolicy.sol +47 -15
- package/contracts/instance/module/IRisk.sol +1 -1
- package/contracts/instance/module/ISetup.sol +11 -22
- package/contracts/instance/module/ITreasury.sol +2 -2
- package/contracts/pool/BundleService.sol +382 -0
- package/contracts/pool/BundleServiceManager.sol +51 -0
- package/contracts/pool/IBundleService.sol +118 -0
- package/contracts/pool/IPoolComponent.sol +114 -0
- package/contracts/pool/IPoolService.sol +114 -0
- package/contracts/pool/Pool.sol +302 -0
- package/contracts/pool/PoolService.sol +403 -0
- package/contracts/{instance/service → pool}/PoolServiceManager.sol +15 -17
- package/contracts/product/ApplicationService.sol +186 -0
- package/contracts/product/ApplicationServiceManager.sol +35 -0
- package/contracts/product/ClaimService.sol +437 -0
- package/contracts/product/ClaimServiceManager.sol +35 -0
- package/contracts/product/IApplicationService.sol +62 -0
- package/contracts/product/IClaimService.sol +90 -0
- package/contracts/product/IPolicyService.sol +80 -0
- package/contracts/product/IPricingService.sol +37 -0
- package/contracts/product/IProductComponent.sol +41 -0
- package/contracts/product/IProductService.sol +40 -0
- package/contracts/product/PolicyService.sol +376 -0
- package/contracts/product/PolicyServiceManager.sol +54 -0
- package/contracts/product/PricingService.sol +275 -0
- package/contracts/product/PricingServiceManager.sol +51 -0
- package/contracts/product/Product.sol +375 -0
- package/contracts/product/ProductService.sol +210 -0
- package/contracts/product/ProductServiceManager.sol +54 -0
- package/contracts/registry/ChainNft.sol +9 -1
- package/contracts/registry/IRegistry.sol +43 -36
- package/contracts/registry/IRegistryService.sol +49 -16
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +234 -256
- package/contracts/registry/RegistryAccessManager.sol +216 -0
- package/contracts/registry/RegistryService.sol +126 -240
- package/contracts/registry/RegistryServiceManager.sol +21 -41
- package/contracts/registry/ReleaseManager.sol +324 -0
- package/contracts/registry/TokenRegistry.sol +22 -17
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/Component.sol +271 -0
- package/contracts/shared/ComponentService.sol +150 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/IComponent.sol +90 -0
- package/contracts/shared/INftOwnable.sol +12 -11
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +4 -6
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +7 -4
- package/contracts/shared/IVersionable.sol +5 -48
- package/contracts/shared/NftOwnable.sol +65 -83
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +26 -41
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +42 -24
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/staking/IStakingService.sol +102 -0
- package/contracts/staking/StakeingServiceManager.sol +37 -0
- package/contracts/staking/StakingService.sol +166 -0
- package/contracts/type/Amount.sol +109 -0
- package/contracts/{types → type}/Blocknumber.sol +1 -0
- package/contracts/type/ClaimId.sol +75 -0
- package/contracts/{types → type}/DistributorType.sol +2 -2
- package/contracts/{types → type}/Fee.sol +17 -8
- package/contracts/{types → type}/NftId.sol +8 -0
- package/contracts/type/NftIdSet.sol +62 -0
- package/contracts/{types → type}/ObjectType.sol +16 -7
- package/contracts/type/PayoutId.sol +82 -0
- package/contracts/{types → type}/Referral.sol +4 -0
- package/contracts/{types → type}/RoleId.sol +26 -18
- package/contracts/type/Seconds.sol +54 -0
- package/contracts/{types → type}/StateId.sol +7 -2
- package/contracts/{types → type}/Timestamp.sol +18 -13
- package/contracts/{types → type}/UFixed.sol +1 -0
- package/contracts/{types → type}/Version.sol +1 -0
- package/package.json +3 -3
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/BaseComponent.sol/BaseComponent.json +0 -327
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +0 -4
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +0 -670
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IBaseComponent.sol/IBaseComponent.json +0 -280
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +0 -204
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +0 -249
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +0 -4
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +0 -157
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +0 -4
- package/artifacts/contracts/components/Pool.sol/Pool.json +0 -873
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +0 -4
- package/artifacts/contracts/components/Product.sol/Product.json +0 -775
- 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/IB.sol/IB.dbg.json +0 -4
- package/artifacts/contracts/experiment/inheritance/IB.sol/IB.json +0 -50
- 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/artifacts/contracts/instance/AccessManagedSimple.sol/AccessManagedSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/AccessManagerSimple.sol/AccessManagerSimple.json +0 -1132
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.dbg.json +0 -4
- package/artifacts/contracts/instance/IAccessManagerSimple.sol/IAccessManagerSimple.json +0 -1082
- package/artifacts/contracts/instance/base/ComponentServiceBase.sol/ComponentServiceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.dbg.json +0 -4
- package/artifacts/contracts/instance/base/IInstanceBase.sol/IInstanceBase.json +0 -113
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/ComponentOwnerService.sol/ComponentOwnerService.json +0 -827
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +0 -657
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +0 -436
- package/artifacts/contracts/instance/service/IComponentOwnerService.sol/IComponentOwnerService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +0 -796
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +0 -4
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +0 -448
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.dbg.json +0 -4
- package/artifacts/contracts/shared/ContractDeployerLib.sol/ContractDeployerLib.json +0 -107
- package/artifacts/contracts/shared/RegisterableUpgradable.sol/RegisterableUpgradable.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.dbg.json +0 -4
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +0 -119
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +0 -4
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +0 -305
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +0 -4
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +0 -116
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +0 -4
- package/artifacts/contracts/test/TestService.sol/TestService.json +0 -600
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.dbg.json +0 -4
- package/artifacts/contracts/test/TestToken.sol/TestUsdc.json +0 -376
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersion.sol/TestVersion.json +0 -218
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.dbg.json +0 -4
- package/artifacts/contracts/test/TestVersionable.sol/TestVersionable.json +0 -286
- package/artifacts/contracts/test/Usdc.sol/USDC.dbg.json +0 -4
- package/artifacts/contracts/test/Usdc.sol/USDC.json +0 -376
- package/artifacts/contracts/types/AddressSet.sol/LibAddressSet.dbg.json +0 -4
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/ChainId.sol/ChainIdLib.json +0 -10
- package/artifacts/contracts/types/DistributorType.sol/DistributorTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Fee.sol/FeeLib.json +0 -257
- package/artifacts/contracts/types/Key32.sol/Key32Lib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NftId.sol/NftIdLib.json +0 -153
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.dbg.json +0 -4
- package/artifacts/contracts/types/NftIdSet.sol/LibNftIdSet.json +0 -10
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/NumberId.sol/NumberIdLib.json +0 -100
- package/artifacts/contracts/types/ObjectType.sol/ObjectTypeLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +0 -4
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +0 -123
- package/artifacts/contracts/types/RiskId.sol/RiskIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/RoleId.sol/RoleIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/StateId.sol/StateIdLib.dbg.json +0 -4
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +0 -4
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +0 -4
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +0 -4
- package/contracts/components/BaseComponent.sol +0 -91
- package/contracts/components/Distribution.sol +0 -166
- package/contracts/components/IBaseComponent.sol +0 -25
- package/contracts/components/IDistributionComponent.sol +0 -46
- package/contracts/components/IPoolComponent.sol +0 -62
- package/contracts/components/IProductComponent.sol +0 -35
- package/contracts/components/Pool.sol +0 -247
- package/contracts/components/Product.sol +0 -297
- 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
- package/contracts/instance/AccessManagedSimple.sol +0 -115
- package/contracts/instance/AccessManagerSimple.sol +0 -692
- package/contracts/instance/IAccessManagerSimple.sol +0 -391
- package/contracts/instance/base/ComponentServiceBase.sol +0 -41
- package/contracts/instance/base/IInstanceBase.sol +0 -23
- package/contracts/instance/service/ComponentOwnerService.sol +0 -317
- package/contracts/instance/service/DistributionService.sol +0 -105
- package/contracts/instance/service/IComponentOwnerService.sol +0 -20
- package/contracts/instance/service/IDistributionService.sol +0 -12
- package/contracts/instance/service/IPoolService.sol +0 -37
- package/contracts/instance/service/IProductService.sol +0 -107
- package/contracts/instance/service/PoolService.sol +0 -211
- package/contracts/shared/ContractDeployerLib.sol +0 -72
- package/contracts/shared/RegisterableUpgradable.sol +0 -16
- package/contracts/test/TestFee.sol +0 -25
- package/contracts/test/TestRegisterable.sol +0 -18
- package/contracts/test/TestRoleId.sol +0 -14
- package/contracts/test/TestService.sol +0 -24
- package/contracts/test/TestToken.sol +0 -26
- package/contracts/test/TestVersion.sol +0 -44
- package/contracts/test/TestVersionable.sol +0 -17
- package/contracts/test/Usdc.sol +0 -26
- package/contracts/types/ChainId.sol +0 -38
- package/contracts/types/NftIdSet.sol +0 -60
- package/contracts/types/NumberId.sol +0 -52
- /package/contracts/{types → type}/AddressSet.sol +0 -0
- /package/contracts/{types → type}/Key32.sol +0 -0
- /package/contracts/{types → type}/RiskId.sol +0 -0
@@ -1,288 +1,541 @@
|
|
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 {
|
8
|
-
import {
|
9
|
-
import {
|
10
|
-
|
11
|
-
import {
|
12
|
-
|
13
|
-
import {
|
14
|
-
|
15
|
-
import {
|
16
|
-
import {
|
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
|
-
|
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
|
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
|
72
|
-
RoleId [] internal
|
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
|
76
|
-
mapping(ShortString name => address target) internal
|
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
|
-
|
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
|
-
|
60
|
+
// instance owner is granted upon instance nft minting in callback function
|
61
|
+
function initialize(address instanceAddress) external initializer
|
82
62
|
{
|
83
|
-
|
84
|
-
|
63
|
+
IInstance instance = IInstance(instanceAddress);
|
64
|
+
IRegistry registry = instance.getRegistry();
|
65
|
+
address authority = instance.authority();
|
85
66
|
|
86
|
-
|
87
|
-
_createRole(RoleIdLib.toRoleId(_accessManager.PUBLIC_ROLE()), PUBLIC_ROLE_NAME, false, false);
|
88
|
-
}
|
67
|
+
__AccessManaged_init(authority);
|
89
68
|
|
90
|
-
|
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));
|
91
80
|
|
92
|
-
|
93
|
-
|
81
|
+
grantRole(INSTANCE_ROLE(), instanceAddress);
|
82
|
+
setRoleAdmin(INSTANCE_OWNER_ROLE(), INSTANCE_ROLE());
|
94
83
|
}
|
95
84
|
|
96
|
-
|
97
|
-
|
85
|
+
//--- Role ------------------------------------------------------//
|
86
|
+
// ADMIN_ROLE
|
87
|
+
// assume all core roles are know at deployment time
|
88
|
+
// assume core roles are set and granted only during instance cloning
|
89
|
+
// assume core roles are never revoked -> core roles admin is never active after intialization
|
90
|
+
function createCoreRole(RoleId roleId, string memory name)
|
91
|
+
external
|
92
|
+
restricted()
|
93
|
+
{
|
94
|
+
_createRole(roleId, name, IAccess.Type.Core);
|
95
|
+
}
|
96
|
+
// ADMIN_ROLE
|
97
|
+
// assume gif roles can be revoked
|
98
|
+
// assume admin is INSTANCE_OWNER_ROLE or INSTANCE_ROLE
|
99
|
+
function createGifRole(RoleId roleId, string memory name, RoleId admin)
|
100
|
+
external
|
101
|
+
restricted()
|
102
|
+
{
|
103
|
+
_createRole(roleId, name, IAccess.Type.Gif);
|
104
|
+
setRoleAdmin(roleId, admin);
|
98
105
|
}
|
99
106
|
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
107
|
+
// INSTANCE_OWNER_ROLE
|
108
|
+
// TODO specify how many owners role can have -> many roles MUST have exactly 1 member?
|
109
|
+
function createRole(string memory roleName, string memory adminName)
|
110
|
+
external
|
111
|
+
restricted()
|
112
|
+
returns(RoleId roleId, RoleId admin)
|
113
|
+
{
|
114
|
+
(roleId, admin) = _getNextCustomRoleId();
|
104
115
|
|
105
|
-
|
106
|
-
|
107
|
-
}
|
116
|
+
_createRole(roleId, roleName, IAccess.Type.Custom);
|
117
|
+
_createRole(admin, adminName, IAccess.Type.Custom);
|
108
118
|
|
109
|
-
|
110
|
-
|
119
|
+
// TODO works without this -> why?
|
120
|
+
setRoleAdmin(roleId, admin);
|
121
|
+
setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
|
111
122
|
}
|
112
123
|
|
113
|
-
|
124
|
+
// ADMIN_ROLE
|
125
|
+
// assume used by instance service only during instance cloning
|
126
|
+
// assume used only by this.createRole(), this.createGifRole() afterwards
|
127
|
+
function setRoleAdmin(RoleId roleId, RoleId admin)
|
128
|
+
public
|
129
|
+
restricted()
|
130
|
+
{
|
114
131
|
if (!roleExists(roleId)) {
|
115
|
-
revert
|
132
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
116
133
|
}
|
117
134
|
|
118
|
-
if
|
119
|
-
revert
|
135
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
|
136
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
120
137
|
}
|
121
138
|
|
122
|
-
if (!
|
123
|
-
|
124
|
-
|
125
|
-
return true;
|
126
|
-
}
|
139
|
+
if (!roleExists(admin)) {
|
140
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(admin);
|
141
|
+
}
|
127
142
|
|
128
|
-
|
143
|
+
_roleInfo[roleId].admin = admin;
|
129
144
|
}
|
130
145
|
|
131
|
-
|
146
|
+
// TODO core role can be granted only to 1 member
|
147
|
+
function grantRole(RoleId roleId, address member)
|
148
|
+
public
|
149
|
+
restrictedToRoleAdmin(roleId)
|
150
|
+
returns (bool granted)
|
151
|
+
{
|
132
152
|
if (!roleExists(roleId)) {
|
133
|
-
revert
|
153
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
134
154
|
}
|
135
155
|
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
}
|
141
|
-
|
142
|
-
return false;
|
156
|
+
granted = EnumerableSet.add(_roleMembers[roleId], member);
|
157
|
+
if(granted) {
|
158
|
+
_accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
|
159
|
+
}
|
143
160
|
}
|
144
161
|
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
162
|
+
function revokeRole(RoleId roleId, address member)
|
163
|
+
external
|
164
|
+
restrictedToRoleAdmin(roleId)
|
165
|
+
returns (bool)
|
166
|
+
{
|
167
|
+
return _revokeRole(roleId, member);
|
168
|
+
}
|
149
169
|
|
170
|
+
// INSTANCE_OWNER_ROLE
|
171
|
+
// IMPORTANT: unbounded function, revoke all or revert
|
172
|
+
// Instance owner role decides what to do in case of custom role admin bening revoked, e.g.:
|
173
|
+
// 1) revoke custom role from ALL members
|
174
|
+
// 2) revoke custom role admin from ALL members
|
175
|
+
// 3) 1) + 2)
|
176
|
+
// 4) revoke only 1 member of custom role admin
|
177
|
+
function revokeRoleAllMembers(RoleId roleId)
|
178
|
+
external
|
179
|
+
restrictedToRoleAdmin(roleId)
|
180
|
+
returns (bool revoked)
|
181
|
+
{
|
150
182
|
if (!roleExists(roleId)) {
|
151
|
-
revert
|
183
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
152
184
|
}
|
153
185
|
|
154
|
-
|
155
|
-
|
156
|
-
|
186
|
+
uint memberCount = EnumerableSet.length(_roleMembers[roleId]);
|
187
|
+
for(uint memberIdx = 0; memberIdx < memberCount; memberIdx++)
|
188
|
+
{
|
189
|
+
address member = EnumerableSet.at(_roleMembers[roleId], memberIdx);
|
157
190
|
EnumerableSet.remove(_roleMembers[roleId], member);
|
158
|
-
|
191
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
195
|
+
/// @dev not restricted function by intention
|
196
|
+
/// the restriction to role members is already enforced by the call to the access manager
|
197
|
+
function renounceRole(RoleId roleId)
|
198
|
+
external
|
199
|
+
returns (bool)
|
200
|
+
{
|
201
|
+
IAccess.Type rtype = _roleInfo[roleId].rtype;
|
202
|
+
if(rtype == IAccess.Type.Core || rtype == IAccess.Type.Gif) {
|
203
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, rtype);
|
159
204
|
}
|
160
205
|
|
161
|
-
|
206
|
+
address member = msg.sender;
|
207
|
+
// cannot use accessManger.renounce as it directly checks against msg.sender
|
208
|
+
return _revokeRole(roleId, member);
|
162
209
|
}
|
163
210
|
|
164
|
-
function
|
165
|
-
return
|
211
|
+
function roleExists(RoleId roleId) public view returns (bool exists) {
|
212
|
+
return _roleInfo[roleId].createdAt.gtz();
|
213
|
+
}
|
214
|
+
// TODO returns ADMIN_ROLE id for non existent roleId
|
215
|
+
function getRoleAdmin(RoleId roleId) public view returns(RoleId admin) {
|
216
|
+
return _roleInfo[roleId].admin;
|
217
|
+
}
|
218
|
+
|
219
|
+
function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory info) {
|
220
|
+
return _roleInfo[roleId];
|
221
|
+
}
|
222
|
+
|
223
|
+
function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
|
224
|
+
return EnumerableSet.length(_roleMembers[roleId]);
|
166
225
|
}
|
167
226
|
|
168
227
|
function getRoleId(uint256 idx) external view returns (RoleId roleId) {
|
169
|
-
return
|
228
|
+
return _roleIds[idx];
|
170
229
|
}
|
171
230
|
|
231
|
+
// TODO returns ADMIN_ROLE id for non existent name
|
172
232
|
function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
|
173
|
-
return
|
233
|
+
return _roleIdForName[ShortStrings.toShortString(name)];
|
174
234
|
}
|
175
235
|
|
176
|
-
function
|
177
|
-
return
|
236
|
+
function roleMember(RoleId roleId, uint256 idx) external view returns (address member) {
|
237
|
+
return EnumerableSet.at(_roleMembers[roleId], idx);
|
178
238
|
}
|
179
239
|
|
180
240
|
function hasRole(RoleId roleId, address account) external view returns (bool accountHasRole) {
|
181
241
|
(accountHasRole, ) = _accessManager.hasRole(roleId.toInt(), account);
|
182
242
|
}
|
183
243
|
|
184
|
-
function
|
185
|
-
return
|
244
|
+
function roles() external view returns (uint256 numberOfRoles) {
|
245
|
+
return _roleIds.length;
|
186
246
|
}
|
187
247
|
|
188
|
-
|
189
|
-
|
248
|
+
//--- Target ------------------------------------------------------//
|
249
|
+
// ADMIN_ROLE
|
250
|
+
// assume some core targets are registred (instance) while others are not (instance accesss manager, instance reader, bundle manager)
|
251
|
+
function createCoreTarget(address target, string memory name) external restricted() {
|
252
|
+
_createTarget(target, name, IAccess.Type.Core);
|
190
253
|
}
|
254
|
+
// INSTANCE_SERVICE_ROLE
|
255
|
+
// TODO check for instance mismatch?
|
256
|
+
function createGifTarget(address target, string memory name) external restricted()
|
257
|
+
{
|
258
|
+
if(!_registry.isRegistered(target)) {
|
259
|
+
revert IAccess.ErrorIAccessTargetNotRegistered(target);
|
260
|
+
}
|
191
261
|
|
192
|
-
|
193
|
-
|
194
|
-
|
262
|
+
_createTarget(target, name, IAccess.Type.Gif);
|
263
|
+
}
|
264
|
+
// INSTANCE_OWNER_ROLE
|
265
|
+
// assume custom target.authority() is constant -> target MUST not be used with different instance access manager
|
266
|
+
// assume custom target can not be registered as component -> each service which is doing component registration MUST register a gif target
|
267
|
+
// assume custom target can not be registered as instance or service -> why?
|
268
|
+
// TODO check target associated with instance owner or instance or instance components or components helpers
|
269
|
+
function createTarget(address target, string memory name) external restricted()
|
270
|
+
{
|
271
|
+
_createTarget(target, name, IAccess.Type.Custom);
|
272
|
+
}
|
273
|
+
|
274
|
+
// TODO instance owner locks component instead of revoking it access to the instance...
|
275
|
+
function setTargetLockedByService(address target, bool locked)
|
276
|
+
external
|
277
|
+
restricted // INSTANCE_SERVICE_ROLE
|
278
|
+
{
|
279
|
+
_setTargetLocked(target, locked);
|
280
|
+
}
|
281
|
+
|
282
|
+
function setTargetLockedByInstance(address target, bool locked)
|
283
|
+
external
|
284
|
+
restricted // INSTANCE_ROLE
|
285
|
+
{
|
286
|
+
_setTargetLocked(target, locked);
|
287
|
+
}
|
288
|
+
|
289
|
+
|
290
|
+
// allowed combinations of roles and targets:
|
291
|
+
//1) set core role for core target
|
292
|
+
//2) set gif role for gif target
|
293
|
+
//3) set custom role for gif target
|
294
|
+
//4) set custom role for custom target
|
295
|
+
|
296
|
+
// ADMIN_ROLE if used only during initialization, works with:
|
297
|
+
// any roles for any targets
|
298
|
+
// INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
|
299
|
+
// core roles for core targets
|
300
|
+
// gif roles for gif targets
|
301
|
+
function setCoreTargetFunctionRole(
|
302
|
+
string memory targetName,
|
303
|
+
bytes4[] calldata selectors,
|
304
|
+
RoleId roleId
|
305
|
+
)
|
306
|
+
public
|
307
|
+
virtual
|
308
|
+
restricted()
|
309
|
+
{
|
310
|
+
ShortString nameShort = ShortStrings.toShortString(targetName);
|
311
|
+
address target = _targetAddressForName[nameShort];
|
312
|
+
|
313
|
+
// not custom target
|
314
|
+
if(_targetInfo[target].ttype == IAccess.Type.Custom) {
|
315
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
|
316
|
+
}
|
317
|
+
|
318
|
+
// not custom role
|
319
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Custom) {
|
320
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
|
321
|
+
}
|
322
|
+
|
323
|
+
_setTargetFunctionRole(target, nameShort, selectors, roleId);
|
195
324
|
}
|
196
325
|
|
197
|
-
|
198
|
-
|
199
|
-
|
326
|
+
// INSTANCE_OWNER_ROLE
|
327
|
+
// gif role for gif target
|
328
|
+
// gif role for custom target
|
329
|
+
// custom role for gif target
|
330
|
+
// custom role for custom target
|
331
|
+
// TODO instance owner can mess with gif target (component) -> e.g. set custom role for function intendent to work with gif role
|
332
|
+
function setTargetFunctionRole(
|
333
|
+
string memory targetName,
|
334
|
+
bytes4[] calldata selectors,
|
335
|
+
RoleId roleId
|
336
|
+
)
|
337
|
+
public
|
338
|
+
virtual
|
339
|
+
restricted()
|
340
|
+
{
|
341
|
+
ShortString nameShort = ShortStrings.toShortString(targetName);
|
342
|
+
address target = _targetAddressForName[nameShort];
|
343
|
+
|
344
|
+
// not core target
|
345
|
+
if(_targetInfo[target].ttype == IAccess.Type.Core) {
|
346
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
|
200
347
|
}
|
201
348
|
|
202
|
-
|
203
|
-
|
349
|
+
// not core role
|
350
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
|
351
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
352
|
+
}
|
353
|
+
|
354
|
+
_setTargetFunctionRole(target, nameShort, selectors, roleId);
|
355
|
+
}
|
356
|
+
|
357
|
+
function getTargetAddress(string memory targetName) public view returns(address targetAddress) {
|
358
|
+
ShortString nameShort = ShortStrings.toShortString(targetName);
|
359
|
+
return _targetAddressForName[nameShort];
|
360
|
+
}
|
361
|
+
|
362
|
+
function isTargetLocked(address target) public view returns (bool locked) {
|
363
|
+
return _targetInfo[target].isLocked;
|
204
364
|
}
|
205
365
|
|
206
366
|
function targetExists(address target) public view returns (bool exists) {
|
207
|
-
return
|
367
|
+
return _targetInfo[target].createdAt.gtz();
|
208
368
|
}
|
209
369
|
|
210
|
-
|
370
|
+
function getTargetInfo(address target) public view returns (IAccess.TargetInfo memory) {
|
371
|
+
return _targetInfo[target];
|
372
|
+
}
|
211
373
|
|
212
|
-
|
213
|
-
|
214
|
-
|
374
|
+
//--- Role internal view/pure functions --------------------------------------//
|
375
|
+
function _createRole(RoleId roleId, string memory roleName, IAccess.Type rtype)
|
376
|
+
internal
|
377
|
+
{
|
378
|
+
ShortString name = ShortStrings.toShortString(roleName);
|
379
|
+
_validateRole(roleId, name, rtype);
|
380
|
+
|
381
|
+
if(roleExists(roleId)) {
|
382
|
+
revert IAccess.ErrorIAccessRoleIdExists(roleId);
|
215
383
|
}
|
216
384
|
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
385
|
+
if (_roleIdForName[name].gtz()) {
|
386
|
+
revert IAccess.ErrorIAccessRoleNameExists(roleId, _roleIdForName[name], name);
|
387
|
+
}
|
388
|
+
|
389
|
+
_roleInfo[roleId] = IAccess.RoleInfo(
|
390
|
+
name,
|
391
|
+
rtype,
|
392
|
+
ADMIN_ROLE(),
|
221
393
|
TimestampLib.blockTimestamp(),
|
222
|
-
TimestampLib.blockTimestamp()
|
394
|
+
TimestampLib.blockTimestamp()
|
395
|
+
);
|
396
|
+
_roleIdForName[name] = roleId;
|
397
|
+
_roleIds.push(roleId);
|
223
398
|
|
224
|
-
|
225
|
-
_roleForName[role.name] = roleId;
|
226
|
-
_roles.push(roleId);
|
399
|
+
emit LogRoleCreation(roleId, name, rtype);
|
227
400
|
}
|
228
401
|
|
229
|
-
function
|
230
|
-
RoleId roleId,
|
231
|
-
string memory name,
|
232
|
-
bool isCustom
|
233
|
-
)
|
402
|
+
function _validateRole(RoleId roleId, ShortString name, IAccess.Type rtype)
|
234
403
|
internal
|
235
|
-
view
|
236
|
-
returns (RoleInfo memory existingRole)
|
404
|
+
view
|
237
405
|
{
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
revert ErrorRoleIdInvalid(roleId);
|
406
|
+
uint roleIdInt = roleId.toInt();
|
407
|
+
if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
|
408
|
+
revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
|
242
409
|
}
|
243
410
|
|
244
|
-
|
245
|
-
|
246
|
-
|
247
|
-
|
248
|
-
|
411
|
+
if(
|
412
|
+
rtype != IAccess.Type.Custom &&
|
413
|
+
roleIdInt >= CUSTOM_ROLE_ID_MIN &&
|
414
|
+
roleIdInt != PUBLIC_ROLE().toInt())
|
415
|
+
{
|
416
|
+
revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
|
249
417
|
}
|
250
418
|
|
251
|
-
|
252
|
-
|
253
|
-
|
254
|
-
revert ErrorRoleIdTooBig(roleId);
|
419
|
+
// role name checks
|
420
|
+
if (ShortStrings.byteLength(name) == 0) {
|
421
|
+
revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
|
255
422
|
}
|
423
|
+
}
|
256
424
|
|
257
|
-
|
258
|
-
|
259
|
-
|
260
|
-
|
425
|
+
function _revokeRole(RoleId roleId, address member)
|
426
|
+
internal
|
427
|
+
returns(bool revoked)
|
428
|
+
{
|
429
|
+
if (!roleExists(roleId)) {
|
430
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
261
431
|
}
|
262
432
|
|
263
|
-
|
264
|
-
|
433
|
+
revoked = EnumerableSet.remove(_roleMembers[roleId], member);
|
434
|
+
if(revoked) {
|
435
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
265
436
|
}
|
266
437
|
}
|
267
438
|
|
268
|
-
function
|
269
|
-
|
270
|
-
|
439
|
+
function _getNextCustomRoleId()
|
440
|
+
internal
|
441
|
+
returns(RoleId roleId, RoleId admin)
|
442
|
+
{
|
443
|
+
uint64 roleIdInt = _idNext;
|
444
|
+
uint64 adminInt = roleIdInt + 1;
|
445
|
+
|
446
|
+
_idNext = roleIdInt + 2;
|
447
|
+
|
448
|
+
roleId = RoleIdLib.toRoleId(roleIdInt);
|
449
|
+
admin = RoleIdLib.toRoleId(adminInt);
|
450
|
+
}
|
451
|
+
|
452
|
+
//--- Target internal view/pure functions --------------------------------------//
|
453
|
+
function _createTarget(address target, string memory targetName, IAccess.Type ttype)
|
454
|
+
internal
|
455
|
+
{
|
456
|
+
ShortString name = ShortStrings.toShortString(targetName);
|
457
|
+
_validateTarget(target, name, ttype);
|
458
|
+
|
459
|
+
if (_targetInfo[target].createdAt.gtz()) {
|
460
|
+
revert IAccess.ErrorIAccessTargetExists(target, _targetInfo[target].name);
|
271
461
|
}
|
272
462
|
|
273
|
-
|
274
|
-
|
275
|
-
|
276
|
-
|
277
|
-
|
278
|
-
|
463
|
+
if (_targetAddressForName[name] != address(0)) {
|
464
|
+
revert IAccess.ErrorIAccessTargetNameExists(
|
465
|
+
target,
|
466
|
+
_targetAddressForName[name],
|
467
|
+
name);
|
468
|
+
}
|
279
469
|
|
280
|
-
|
281
|
-
|
470
|
+
bool isLocked = _accessManager.isTargetClosed(target);// sync with state in access manager
|
471
|
+
_targetInfo[target] = IAccess.TargetInfo(
|
472
|
+
name,
|
473
|
+
ttype,
|
474
|
+
isLocked,
|
475
|
+
TimestampLib.blockTimestamp(),
|
476
|
+
TimestampLib.blockTimestamp()
|
477
|
+
);
|
478
|
+
_targetAddressForName[name] = target;
|
282
479
|
_targets.push(target);
|
480
|
+
|
481
|
+
emit LogTargetCreation(target, name, ttype, isLocked);
|
482
|
+
}
|
483
|
+
|
484
|
+
function _validateTarget(address target, ShortString name, IAccess.Type ttype)
|
485
|
+
internal
|
486
|
+
view
|
487
|
+
{
|
488
|
+
address targetAuthority = AccessManagedUpgradeable(target).authority();
|
489
|
+
if(targetAuthority != authority()) {
|
490
|
+
revert IAccess.ErrorIAccessTargetAuthorityInvalid(target, targetAuthority);
|
491
|
+
}
|
492
|
+
|
493
|
+
if (ShortStrings.byteLength(name) == 0) {
|
494
|
+
revert IAccess.ErrorIAccessTargetNameEmpty(target);
|
495
|
+
}
|
283
496
|
}
|
284
497
|
|
285
|
-
|
498
|
+
// IMPORTANT: instance access manager MUST be of Core type -> otherwise can be locked forever
|
499
|
+
function _setTargetLocked(address target, bool locked) internal
|
500
|
+
{
|
501
|
+
IAccess.Type targetType = _targetInfo[target].ttype;
|
502
|
+
if(target == address(0) || targetType == IAccess.Type.NotInitialized) {
|
503
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(target);
|
504
|
+
}
|
505
|
+
|
506
|
+
if(targetType == IAccess.Type.Core) {
|
507
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, targetType);
|
508
|
+
}
|
509
|
+
|
510
|
+
_targetInfo[target].isLocked = locked;
|
511
|
+
_accessManager.setTargetClosed(target, locked);
|
512
|
+
}
|
513
|
+
|
514
|
+
function _setTargetFunctionRole(
|
515
|
+
address target,
|
516
|
+
ShortString name,
|
517
|
+
bytes4[] calldata selectors,
|
518
|
+
RoleId roleId
|
519
|
+
)
|
520
|
+
internal
|
521
|
+
{
|
522
|
+
if (target == address(0)) {
|
523
|
+
revert IAccess.ErrorIAccessTargetDoesNotExist(target);
|
524
|
+
}
|
525
|
+
|
526
|
+
if (!roleExists(roleId)) {
|
527
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
528
|
+
}
|
529
|
+
|
530
|
+
uint64 roleIdInt = RoleId.unwrap(roleId);
|
531
|
+
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
532
|
+
}
|
286
533
|
|
534
|
+
function canCall(
|
535
|
+
address caller,
|
536
|
+
address target,
|
537
|
+
bytes4 selector
|
538
|
+
) public view virtual returns (bool immediate, uint32 delay) {
|
539
|
+
return _accessManager.canCall(caller, target, selector);
|
287
540
|
}
|
288
|
-
}
|
541
|
+
}
|