@etherisc/gif-next 0.0.2-da06f3b-803 → 0.0.2-da09ec0-359
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 +8 -13
- package/artifacts/contracts/components/Component.sol/Component.dbg.json +1 -1
- package/artifacts/contracts/components/Component.sol/Component.json +315 -98
- package/artifacts/contracts/components/Distribution.sol/Distribution.dbg.json +1 -1
- package/artifacts/contracts/components/Distribution.sol/Distribution.json +668 -141
- package/artifacts/contracts/components/IComponent.sol/IComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IComponent.sol/IComponent.json +241 -60
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IDistributionComponent.sol/IDistributionComponent.json +438 -86
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IPoolComponent.sol/IPoolComponent.json +526 -144
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.dbg.json +1 -1
- package/artifacts/contracts/components/IProductComponent.sol/IProductComponent.json +257 -144
- package/artifacts/contracts/components/Pool.sol/Pool.dbg.json +1 -1
- package/artifacts/contracts/components/Pool.sol/Pool.json +676 -183
- package/artifacts/contracts/components/Product.sol/Product.dbg.json +1 -1
- package/artifacts/contracts/components/Product.sol/Product.json +435 -186
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.dbg.json +1 -1
- package/artifacts/contracts/instance/BundleManager.sol/BundleManager.json +64 -50
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.dbg.json +1 -1
- package/artifacts/contracts/instance/Cloneable.sol/Cloneable.json +5 -0
- package/artifacts/contracts/instance/IInstance.sol/IInstance.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstance.sol/IInstance.json +267 -1594
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/IInstanceService.sol/IInstanceService.json +232 -208
- package/artifacts/contracts/instance/Instance.sol/Instance.dbg.json +1 -1
- package/artifacts/contracts/instance/Instance.sol/Instance.json +393 -2515
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceAccessManager.sol/InstanceAccessManager.json +359 -92
- 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 +424 -236
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceService.sol/InstanceService.json +338 -409
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/InstanceServiceManager.sol/InstanceServiceManager.json +291 -108
- 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/ObjectManager.sol/ObjectManager.dbg.json +1 -1
- package/artifacts/contracts/instance/ObjectManager.sol/ObjectManager.json +8 -13
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.dbg.json +1 -1
- package/artifacts/contracts/instance/base/ComponentService.sol/ComponentService.json +197 -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 +40 -10
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.dbg.json +1 -1
- package/artifacts/contracts/instance/base/Lifecycle.sol/Lifecycle.json +36 -11
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.dbg.json +1 -1
- package/artifacts/contracts/instance/module/IAccess.sol/IAccess.json +51 -42
- 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/instance/service/ApplicationService.sol/ApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationService.sol/ApplicationService.json +918 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ApplicationServiceManager.sol/ApplicationServiceManager.json +648 -0
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleService.sol/BundleService.json +526 -340
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/BundleServiceManager.sol/BundleServiceManager.json +340 -93
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimService.sol/ClaimService.json +1376 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/ClaimServiceManager.sol/ClaimServiceManager.json +748 -0
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionService.sol/DistributionService.json +982 -198
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/DistributionServiceManager.sol/DistributionServiceManager.json +430 -87
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IApplicationService.sol/IApplicationService.json +493 -0
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IBundleService.sol/IBundleService.json +290 -270
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IClaimService.sol/IClaimService.json +743 -0
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IDistributionService.sol/IDistributionService.json +527 -128
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPolicyService.sol/IPolicyService.json +181 -296
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IPoolService.sol/IPoolService.json +705 -122
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/IPricingService.sol/IPricingService.json +510 -0
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/IProductService.sol/IProductService.json +71 -160
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyService.sol/PolicyService.json +449 -395
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PolicyServiceManager.sol/PolicyServiceManager.json +349 -114
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolService.sol/PoolService.json +1018 -202
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/PoolServiceManager.sol/PoolServiceManager.json +360 -89
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingService.sol/PricingService.json +1004 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.dbg.json +4 -0
- package/artifacts/contracts/instance/service/PricingServiceManager.sol/PricingServiceManager.json +688 -0
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductService.sol/ProductService.json +231 -223
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.dbg.json +1 -1
- package/artifacts/contracts/instance/service/ProductServiceManager.sol/ProductServiceManager.json +298 -95
- 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 +15 -2
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.dbg.json +1 -1
- package/artifacts/contracts/registry/IRegistryService.sol/IRegistryService.json +70 -193
- 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 +28 -15
- 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 +182 -232
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.dbg.json +1 -1
- package/artifacts/contracts/registry/RegistryServiceManager.sol/RegistryServiceManager.json +287 -94
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.dbg.json +1 -1
- package/artifacts/contracts/registry/ReleaseManager.sol/ReleaseManager.json +23 -11
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.dbg.json +1 -1
- package/artifacts/contracts/registry/TokenRegistry.sol/TokenRegistry.json +128 -37
- 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/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 +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 -29
- 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 +71 -160
- 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 +100 -33
- 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 +283 -76
- package/artifacts/contracts/shared/Registerable.sol/Registerable.dbg.json +1 -1
- package/artifacts/contracts/shared/Registerable.sol/Registerable.json +115 -58
- 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 +172 -160
- 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/test/TestFee.sol/TestFee.dbg.json +1 -1
- package/artifacts/contracts/test/TestFee.sol/TestFee.json +2 -2
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.dbg.json +1 -1
- package/artifacts/contracts/test/TestRegisterable.sol/TestRegisterable.json +115 -58
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.dbg.json +1 -1
- package/artifacts/contracts/test/TestRoleId.sol/TestRoleId.json +2 -2
- package/artifacts/contracts/test/TestService.sol/TestService.dbg.json +1 -1
- package/artifacts/contracts/test/TestService.sol/TestService.json +190 -210
- 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/TestVersion.sol/TestVersion.json +2 -2
- 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/Amount.sol/AmountLib.dbg.json +4 -0
- package/artifacts/contracts/types/Amount.sol/AmountLib.json +281 -0
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.dbg.json +1 -1
- package/artifacts/contracts/types/Blocknumber.sol/BlocknumberLib.json +2 -2
- 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 +179 -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/Fee.sol/FeeLib.json +74 -19
- 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 +17 -4
- 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 +209 -0
- package/artifacts/contracts/types/Referral.sol/ReferralLib.dbg.json +1 -1
- package/artifacts/contracts/types/Referral.sol/ReferralLib.json +23 -4
- 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/StateId.sol/StateIdLib.json +2 -2
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.dbg.json +1 -1
- package/artifacts/contracts/types/Timestamp.sol/TimestampLib.json +38 -7
- package/artifacts/contracts/types/UFixed.sol/MathLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/MathLib.json +2 -2
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.dbg.json +1 -1
- package/artifacts/contracts/types/UFixed.sol/UFixedLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionLib.json +2 -2
- package/artifacts/contracts/types/Version.sol/VersionPartLib.dbg.json +1 -1
- package/artifacts/contracts/types/Version.sol/VersionPartLib.json +2 -2
- package/contracts/components/Component.sol +134 -78
- package/contracts/components/Distribution.sol +189 -57
- package/contracts/components/IComponent.sol +62 -15
- package/contracts/components/IDistributionComponent.sol +39 -15
- package/contracts/components/IPoolComponent.sol +86 -23
- package/contracts/components/IProductComponent.sol +8 -6
- package/contracts/components/Pool.sol +230 -136
- package/contracts/components/Product.sol +227 -118
- package/contracts/instance/BundleManager.sol +10 -9
- package/contracts/instance/Cloneable.sol +7 -2
- package/contracts/instance/IInstance.sol +40 -35
- package/contracts/instance/IInstanceService.sol +44 -13
- package/contracts/instance/Instance.sol +131 -171
- package/contracts/instance/InstanceAccessManager.sol +281 -154
- package/contracts/instance/InstanceAuthorizationsLib.sol +308 -0
- package/contracts/instance/InstanceReader.sol +90 -15
- package/contracts/instance/InstanceService.sol +173 -338
- package/contracts/instance/InstanceServiceManager.sol +1 -1
- package/contracts/instance/InstanceStore.sol +212 -0
- package/contracts/instance/ObjectManager.sol +6 -8
- package/contracts/instance/base/ComponentService.sol +53 -39
- package/contracts/instance/base/KeyValueStore.sol +13 -36
- package/contracts/instance/base/Lifecycle.sol +26 -6
- package/contracts/instance/module/IAccess.sol +18 -12
- package/contracts/instance/module/IBundle.sol +8 -5
- package/contracts/instance/module/IComponents.sol +41 -0
- package/contracts/instance/module/IDistribution.sol +3 -0
- package/contracts/instance/module/IPolicy.sol +43 -11
- package/contracts/instance/module/ISetup.sol +7 -20
- package/contracts/instance/service/ApplicationService.sol +186 -0
- package/contracts/instance/service/ApplicationServiceManager.sol +35 -0
- package/contracts/instance/service/BundleService.sol +225 -136
- package/contracts/instance/service/BundleServiceManager.sol +1 -1
- package/contracts/instance/service/ClaimService.sol +437 -0
- package/contracts/instance/service/ClaimServiceManager.sol +35 -0
- package/contracts/instance/service/DistributionService.sol +264 -22
- package/contracts/instance/service/DistributionServiceManager.sol +1 -1
- package/contracts/instance/service/IApplicationService.sol +62 -0
- package/contracts/instance/service/IBundleService.sol +96 -22
- package/contracts/instance/service/IClaimService.sol +90 -0
- package/contracts/instance/service/IDistributionService.sol +76 -1
- package/contracts/instance/service/IPolicyService.sol +40 -54
- package/contracts/instance/service/IPoolService.sol +97 -3
- package/contracts/instance/service/IPricingService.sol +37 -0
- package/contracts/instance/service/PolicyService.sol +200 -362
- package/contracts/instance/service/PolicyServiceManager.sol +2 -2
- package/contracts/instance/service/PoolService.sol +313 -20
- package/contracts/instance/service/PoolServiceManager.sol +1 -1
- package/contracts/instance/service/PricingService.sol +275 -0
- package/contracts/instance/service/PricingServiceManager.sol +51 -0
- package/contracts/instance/service/ProductService.sol +41 -64
- package/contracts/instance/service/ProductServiceManager.sol +2 -2
- package/contracts/registry/ChainNft.sol +8 -0
- package/contracts/registry/IRegistry.sol +3 -2
- package/contracts/registry/IRegistryService.sol +12 -11
- package/contracts/registry/ITransferInterceptor.sol +1 -0
- package/contracts/registry/Registry.sol +30 -20
- package/contracts/registry/RegistryService.sol +75 -51
- package/contracts/registry/RegistryServiceManager.sol +13 -13
- package/contracts/registry/ReleaseManager.sol +32 -40
- package/contracts/registry/TokenRegistry.sol +16 -12
- package/contracts/shared/AccessManagerUpgradeableInitializeable.sol +13 -0
- package/contracts/shared/ERC165.sol +14 -12
- package/contracts/shared/INftOwnable.sol +11 -10
- package/contracts/shared/IPolicyHolder.sol +40 -0
- package/contracts/shared/IRegisterable.sol +3 -3
- package/contracts/shared/IRegistryLinked.sol +11 -0
- package/contracts/shared/IService.sol +6 -4
- package/contracts/shared/IVersionable.sol +4 -47
- package/contracts/shared/NftOwnable.sol +64 -85
- package/contracts/shared/PolicyHolder.sol +94 -0
- package/contracts/shared/ProxyManager.sol +100 -25
- package/contracts/shared/Registerable.sol +16 -27
- package/contracts/shared/RegistryLinked.sol +43 -0
- package/contracts/shared/Service.sol +32 -20
- package/contracts/shared/TokenHandler.sol +14 -6
- package/contracts/shared/Versionable.sol +4 -92
- package/contracts/test/TestRegisterable.sol +1 -1
- package/contracts/test/TestService.sol +1 -1
- package/contracts/types/Amount.sol +109 -0
- package/contracts/types/Blocknumber.sol +1 -0
- package/contracts/types/ClaimId.sol +75 -0
- package/contracts/types/DistributorType.sol +2 -2
- package/contracts/types/Fee.sol +17 -8
- package/contracts/types/NftId.sol +8 -0
- package/contracts/types/ObjectType.sol +16 -7
- package/contracts/types/PayoutId.sol +82 -0
- package/contracts/types/Referral.sol +4 -0
- package/contracts/types/RoleId.sol +12 -8
- package/contracts/types/Seconds.sol +54 -0
- package/contracts/types/StateId.sol +7 -2
- package/contracts/types/Timestamp.sol +18 -13
- package/contracts/types/UFixed.sol +1 -0
- package/contracts/types/Version.sol +1 -0
- 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/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/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
@@ -1,26 +1,35 @@
|
|
1
1
|
// SPDX-License-Identifier: Apache-2.0
|
2
2
|
pragma solidity ^0.8.20;
|
3
3
|
|
4
|
-
import {AccessManager} from "@openzeppelin/contracts/access/manager/AccessManager.sol";
|
5
4
|
import {AccessManagedUpgradeable} from "@openzeppelin/contracts-upgradeable/access/manager/AccessManagedUpgradeable.sol";
|
6
5
|
import {EnumerableSet} from "@openzeppelin/contracts/utils/structs/EnumerableSet.sol";
|
7
6
|
import {ShortString, ShortStrings} from "@openzeppelin/contracts/utils/ShortStrings.sol";
|
8
7
|
|
9
|
-
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE} from "../types/RoleId.sol";
|
8
|
+
import {RoleId, RoleIdLib, ADMIN_ROLE, PUBLIC_ROLE, INSTANCE_SERVICE_ROLE, INSTANCE_OWNER_ROLE, INSTANCE_ROLE} from "../types/RoleId.sol";
|
10
9
|
import {TimestampLib} from "../types/Timestamp.sol";
|
11
|
-
import {
|
10
|
+
import {NftId} from "../types/NftId.sol";
|
11
|
+
|
12
|
+
import {AccessManagerUpgradeableInitializeable} from "../shared/AccessManagerUpgradeableInitializeable.sol";
|
12
13
|
|
13
14
|
import {IRegistry} from "../registry/IRegistry.sol";
|
14
15
|
|
16
|
+
import {IInstance} from "./IInstance.sol";
|
17
|
+
import {IAccess} from "./module/IAccess.sol";
|
18
|
+
|
15
19
|
contract InstanceAccessManager is
|
16
20
|
AccessManagedUpgradeable
|
17
21
|
{
|
22
|
+
event LogRoleCreation(RoleId roleId, ShortString name, IAccess.Type rtype);
|
23
|
+
event LogTargetCreation(address target, ShortString name, IAccess.Type ttype, bool isLocked);
|
24
|
+
|
18
25
|
using RoleIdLib for RoleId;
|
19
26
|
|
20
27
|
string public constant ADMIN_ROLE_NAME = "AdminRole";
|
21
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";
|
22
31
|
|
23
|
-
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000;
|
32
|
+
uint64 public constant CUSTOM_ROLE_ID_MIN = 10000; // MUST be even
|
24
33
|
uint32 public constant EXECUTION_DELAY = 0;
|
25
34
|
|
26
35
|
// role specific state
|
@@ -35,7 +44,7 @@ contract InstanceAccessManager is
|
|
35
44
|
mapping(ShortString name => address target) internal _targetAddressForName;
|
36
45
|
address [] internal _targets;
|
37
46
|
|
38
|
-
|
47
|
+
AccessManagerUpgradeableInitializeable internal _accessManager;
|
39
48
|
IRegistry internal _registry;
|
40
49
|
|
41
50
|
modifier restrictedToRoleAdmin(RoleId roleId) {
|
@@ -48,87 +57,105 @@ contract InstanceAccessManager is
|
|
48
57
|
_;
|
49
58
|
}
|
50
59
|
|
51
|
-
|
60
|
+
// instance owner is granted upon instance nft minting in callback function
|
61
|
+
function initialize(address instanceAddress) external initializer
|
52
62
|
{
|
53
|
-
|
54
|
-
|
63
|
+
IInstance instance = IInstance(instanceAddress);
|
64
|
+
IRegistry registry = instance.getRegistry();
|
65
|
+
address authority = instance.authority();
|
55
66
|
|
56
|
-
__AccessManaged_init(
|
67
|
+
__AccessManaged_init(authority);
|
57
68
|
|
58
|
-
|
69
|
+
_accessManager = AccessManagerUpgradeableInitializeable(authority);
|
70
|
+
_registry = registry;
|
59
71
|
_idNext = CUSTOM_ROLE_ID_MIN;
|
60
72
|
|
61
|
-
_createRole(ADMIN_ROLE(), ADMIN_ROLE_NAME,
|
62
|
-
_createRole(PUBLIC_ROLE(), PUBLIC_ROLE_NAME,
|
63
|
-
|
64
|
-
|
65
|
-
_accessManager.grantRole(ADMIN_ROLE().toInt(), initialAdmin, 0);
|
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
|
66
77
|
|
78
|
+
// assume `this` is already a member of ADMIN_ROLE
|
67
79
|
EnumerableSet.add(_roleMembers[ADMIN_ROLE()], address(this));
|
68
|
-
|
80
|
+
|
81
|
+
grantRole(INSTANCE_ROLE(), instanceAddress);
|
82
|
+
setRoleAdmin(INSTANCE_OWNER_ROLE(), INSTANCE_ROLE());
|
69
83
|
}
|
70
84
|
|
71
85
|
//--- Role ------------------------------------------------------//
|
72
|
-
//
|
73
|
-
//
|
74
|
-
// assume core roles are
|
75
|
-
// assume
|
76
|
-
function
|
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)
|
77
100
|
external
|
78
101
|
restricted()
|
79
102
|
{
|
80
|
-
|
81
|
-
_validateRoleParameters(roleId, name, isCustom);
|
82
|
-
_createRole(roleId, name, isCustom);
|
103
|
+
_createRole(roleId, name, IAccess.Type.Gif);
|
83
104
|
setRoleAdmin(roleId, admin);
|
84
105
|
}
|
85
106
|
|
86
107
|
// INSTANCE_OWNER_ROLE
|
87
|
-
//
|
88
|
-
|
89
|
-
function createCustomRole(string memory name, RoleId admin)
|
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)
|
90
110
|
external
|
91
111
|
restricted()
|
92
|
-
returns(RoleId roleId)
|
112
|
+
returns(RoleId roleId, RoleId admin)
|
93
113
|
{
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
_createRole(
|
114
|
+
(roleId, admin) = _getNextCustomRoleId();
|
115
|
+
|
116
|
+
_createRole(roleId, roleName, IAccess.Type.Custom);
|
117
|
+
_createRole(admin, adminName, IAccess.Type.Custom);
|
118
|
+
|
119
|
+
// TODO works without this -> why?
|
98
120
|
setRoleAdmin(roleId, admin);
|
121
|
+
setRoleAdmin(admin, INSTANCE_OWNER_ROLE());
|
99
122
|
}
|
100
123
|
|
101
|
-
//
|
124
|
+
// ADMIN_ROLE
|
125
|
+
// assume used by instance service only during instance cloning
|
126
|
+
// assume used only by this.createRole(), this.createGifRole() afterwards
|
102
127
|
function setRoleAdmin(RoleId roleId, RoleId admin)
|
103
128
|
public
|
104
129
|
restricted()
|
105
130
|
{
|
106
131
|
if (!roleExists(roleId)) {
|
107
|
-
revert IAccess.
|
132
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
133
|
+
}
|
134
|
+
|
135
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
|
136
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
108
137
|
}
|
109
138
|
|
110
139
|
if (!roleExists(admin)) {
|
111
|
-
revert IAccess.
|
140
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(admin);
|
112
141
|
}
|
113
142
|
|
114
143
|
_roleInfo[roleId].admin = admin;
|
115
144
|
}
|
116
145
|
|
117
|
-
// TODO
|
118
|
-
// TODO granting/revoking can be `attached` to nft transfer?
|
146
|
+
// TODO core role can be granted only to 1 member
|
119
147
|
function grantRole(RoleId roleId, address member)
|
120
|
-
|
148
|
+
public
|
121
149
|
restrictedToRoleAdmin(roleId)
|
122
150
|
returns (bool granted)
|
123
151
|
{
|
124
152
|
if (!roleExists(roleId)) {
|
125
|
-
revert IAccess.
|
153
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
126
154
|
}
|
127
155
|
|
128
156
|
granted = EnumerableSet.add(_roleMembers[roleId], member);
|
129
157
|
if(granted) {
|
130
158
|
_accessManager.grantRole(roleId.toInt(), member, EXECUTION_DELAY);
|
131
|
-
|
132
159
|
}
|
133
160
|
}
|
134
161
|
|
@@ -140,12 +167,42 @@ contract InstanceAccessManager is
|
|
140
167
|
return _revokeRole(roleId, member);
|
141
168
|
}
|
142
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
|
+
{
|
182
|
+
if (!roleExists(roleId)) {
|
183
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
184
|
+
}
|
185
|
+
|
186
|
+
uint memberCount = EnumerableSet.length(_roleMembers[roleId]);
|
187
|
+
for(uint memberIdx = 0; memberIdx < memberCount; memberIdx++)
|
188
|
+
{
|
189
|
+
address member = EnumerableSet.at(_roleMembers[roleId], memberIdx);
|
190
|
+
EnumerableSet.remove(_roleMembers[roleId], member);
|
191
|
+
_accessManager.revokeRole(roleId.toInt(), member);
|
192
|
+
}
|
193
|
+
}
|
194
|
+
|
143
195
|
/// @dev not restricted function by intention
|
144
196
|
/// the restriction to role members is already enforced by the call to the access manager
|
145
197
|
function renounceRole(RoleId roleId)
|
146
198
|
external
|
147
199
|
returns (bool)
|
148
200
|
{
|
201
|
+
IAccess.Type rtype = _roleInfo[roleId].rtype;
|
202
|
+
if(rtype == IAccess.Type.Core || rtype == IAccess.Type.Gif) {
|
203
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, rtype);
|
204
|
+
}
|
205
|
+
|
149
206
|
address member = msg.sender;
|
150
207
|
// cannot use accessManger.renounce as it directly checks against msg.sender
|
151
208
|
return _revokeRole(roleId, member);
|
@@ -154,16 +211,16 @@ contract InstanceAccessManager is
|
|
154
211
|
function roleExists(RoleId roleId) public view returns (bool exists) {
|
155
212
|
return _roleInfo[roleId].createdAt.gtz();
|
156
213
|
}
|
157
|
-
|
214
|
+
// TODO returns ADMIN_ROLE id for non existent roleId
|
158
215
|
function getRoleAdmin(RoleId roleId) public view returns(RoleId admin) {
|
159
216
|
return _roleInfo[roleId].admin;
|
160
217
|
}
|
161
218
|
|
162
|
-
function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory
|
219
|
+
function getRoleInfo(RoleId roleId) external view returns (IAccess.RoleInfo memory info) {
|
163
220
|
return _roleInfo[roleId];
|
164
221
|
}
|
165
222
|
|
166
|
-
function roleMembers(RoleId roleId)
|
223
|
+
function roleMembers(RoleId roleId) public view returns (uint256 numberOfMembers) {
|
167
224
|
return EnumerableSet.length(_roleMembers[roleId]);
|
168
225
|
}
|
169
226
|
|
@@ -171,11 +228,12 @@ contract InstanceAccessManager is
|
|
171
228
|
return _roleIds[idx];
|
172
229
|
}
|
173
230
|
|
231
|
+
// TODO returns ADMIN_ROLE id for non existent name
|
174
232
|
function getRoleIdForName(string memory name) external view returns (RoleId roleId) {
|
175
233
|
return _roleIdForName[ShortStrings.toShortString(name)];
|
176
234
|
}
|
177
235
|
|
178
|
-
function roleMember(RoleId roleId, uint256 idx) external view returns (address
|
236
|
+
function roleMember(RoleId roleId, uint256 idx) external view returns (address member) {
|
179
237
|
return EnumerableSet.at(_roleMembers[roleId], idx);
|
180
238
|
}
|
181
239
|
|
@@ -188,45 +246,47 @@ contract InstanceAccessManager is
|
|
188
246
|
}
|
189
247
|
|
190
248
|
//--- Target ------------------------------------------------------//
|
191
|
-
//
|
192
|
-
|
193
|
-
|
194
|
-
_createTarget(target, name,
|
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);
|
195
253
|
}
|
196
|
-
//
|
197
|
-
|
198
|
-
|
199
|
-
restricted()
|
254
|
+
// INSTANCE_SERVICE_ROLE
|
255
|
+
// TODO check for instance mismatch?
|
256
|
+
function createGifTarget(address target, string memory name) external restricted()
|
200
257
|
{
|
201
|
-
|
202
|
-
|
203
|
-
revert IAccess.ErrorIAccessTargetIsRegistered(target);
|
258
|
+
if(!_registry.isRegistered(target)) {
|
259
|
+
revert IAccess.ErrorIAccessTargetNotRegistered(target);
|
204
260
|
}
|
205
261
|
|
206
|
-
|
207
|
-
_createTarget(target, name, isCustom);
|
262
|
+
_createTarget(target, name, IAccess.Type.Gif);
|
208
263
|
}
|
209
|
-
//
|
210
|
-
|
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)
|
211
276
|
external
|
212
|
-
restricted
|
277
|
+
restricted // INSTANCE_SERVICE_ROLE
|
213
278
|
{
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
if (target == address(0)) {
|
218
|
-
revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
|
219
|
-
}
|
279
|
+
_setTargetLocked(target, locked);
|
280
|
+
}
|
220
281
|
|
221
|
-
|
222
|
-
|
223
|
-
|
224
|
-
|
225
|
-
|
226
|
-
_targetInfo[target].isLocked = locked;
|
227
|
-
_accessManager.setTargetClosed(target, locked);
|
282
|
+
function setTargetLockedByInstance(address target, bool locked)
|
283
|
+
external
|
284
|
+
restricted // INSTANCE_ROLE
|
285
|
+
{
|
286
|
+
_setTargetLocked(target, locked);
|
228
287
|
}
|
229
288
|
|
289
|
+
|
230
290
|
// allowed combinations of roles and targets:
|
231
291
|
//1) set core role for core target
|
232
292
|
//2) set gif role for gif target
|
@@ -238,7 +298,7 @@ contract InstanceAccessManager is
|
|
238
298
|
// INSTANCE_SERVICE_ROLE if used not only during initilization, works with:
|
239
299
|
// core roles for core targets
|
240
300
|
// gif roles for gif targets
|
241
|
-
function
|
301
|
+
function setCoreTargetFunctionRole(
|
242
302
|
string memory targetName,
|
243
303
|
bytes4[] calldata selectors,
|
244
304
|
RoleId roleId
|
@@ -250,51 +310,57 @@ contract InstanceAccessManager is
|
|
250
310
|
ShortString nameShort = ShortStrings.toShortString(targetName);
|
251
311
|
address target = _targetAddressForName[nameShort];
|
252
312
|
|
253
|
-
|
254
|
-
|
313
|
+
// not custom target
|
314
|
+
if(_targetInfo[target].ttype == IAccess.Type.Custom) {
|
315
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Custom);
|
255
316
|
}
|
256
317
|
|
257
|
-
|
258
|
-
|
318
|
+
// not custom role
|
319
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Custom) {
|
320
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Custom);
|
259
321
|
}
|
260
322
|
|
261
|
-
|
262
|
-
_accessManager.setTargetFunctionRole(target, selectors, roleIdInt);
|
323
|
+
_setTargetFunctionRole(target, nameShort, selectors, roleId);
|
263
324
|
}
|
325
|
+
|
264
326
|
// INSTANCE_OWNER_ROLE
|
265
|
-
//
|
327
|
+
// gif role for gif target
|
328
|
+
// gif role for custom target
|
329
|
+
// custom role for gif target
|
266
330
|
// custom role for custom target
|
267
|
-
function
|
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(
|
268
333
|
string memory targetName,
|
269
334
|
bytes4[] calldata selectors,
|
270
335
|
RoleId roleId
|
271
|
-
)
|
336
|
+
)
|
337
|
+
public
|
338
|
+
virtual
|
339
|
+
restricted()
|
340
|
+
{
|
272
341
|
ShortString nameShort = ShortStrings.toShortString(targetName);
|
273
342
|
address target = _targetAddressForName[nameShort];
|
274
|
-
if (target == address(0)) {
|
275
|
-
revert IAccess.ErrorIAccessTargetDoesNotExist(nameShort);
|
276
|
-
}
|
277
343
|
|
278
|
-
//
|
279
|
-
|
280
|
-
revert IAccess.
|
281
|
-
}
|
344
|
+
// not core target
|
345
|
+
if(_targetInfo[target].ttype == IAccess.Type.Core) {
|
346
|
+
revert IAccess.ErrorIAccessTargetTypeInvalid(target, IAccess.Type.Core);
|
347
|
+
}
|
282
348
|
|
283
|
-
|
284
|
-
|
349
|
+
// not core role
|
350
|
+
if(_roleInfo[roleId].rtype == IAccess.Type.Core) {
|
351
|
+
revert IAccess.ErrorIAccessRoleTypeInvalid(roleId, IAccess.Type.Core);
|
285
352
|
}
|
286
353
|
|
287
|
-
|
288
|
-
|
289
|
-
revert IAccess.ErrorIAccessSetNoncustomRole(roleId);
|
290
|
-
}*/
|
354
|
+
_setTargetFunctionRole(target, nameShort, selectors, roleId);
|
355
|
+
}
|
291
356
|
|
292
|
-
|
293
|
-
|
357
|
+
function getTargetAddress(string memory targetName) public view returns(address targetAddress) {
|
358
|
+
ShortString nameShort = ShortStrings.toShortString(targetName);
|
359
|
+
return _targetAddressForName[nameShort];
|
294
360
|
}
|
295
361
|
|
296
362
|
function isTargetLocked(address target) public view returns (bool locked) {
|
297
|
-
return
|
363
|
+
return _targetInfo[target].isLocked;
|
298
364
|
}
|
299
365
|
|
300
366
|
function targetExists(address target) public view returns (bool exists) {
|
@@ -305,60 +371,63 @@ contract InstanceAccessManager is
|
|
305
371
|
return _targetInfo[target];
|
306
372
|
}
|
307
373
|
|
308
|
-
//--- internal view/pure functions --------------------------------------//
|
309
|
-
|
310
|
-
function _createRole(RoleId roleId, string memory name, bool isCustom)
|
374
|
+
//--- Role internal view/pure functions --------------------------------------//
|
375
|
+
function _createRole(RoleId roleId, string memory roleName, IAccess.Type rtype)
|
311
376
|
internal
|
312
377
|
{
|
313
|
-
|
314
|
-
|
315
|
-
|
378
|
+
ShortString name = ShortStrings.toShortString(roleName);
|
379
|
+
_validateRole(roleId, name, rtype);
|
380
|
+
|
381
|
+
if(roleExists(roleId)) {
|
382
|
+
revert IAccess.ErrorIAccessRoleIdExists(roleId);
|
383
|
+
}
|
384
|
+
|
385
|
+
if (_roleIdForName[name].gtz()) {
|
386
|
+
revert IAccess.ErrorIAccessRoleNameExists(roleId, _roleIdForName[name], name);
|
387
|
+
}
|
388
|
+
|
389
|
+
_roleInfo[roleId] = IAccess.RoleInfo(
|
390
|
+
name,
|
391
|
+
rtype,
|
316
392
|
ADMIN_ROLE(),
|
317
393
|
TimestampLib.blockTimestamp(),
|
318
|
-
TimestampLib.blockTimestamp()
|
319
|
-
|
320
|
-
|
321
|
-
_roleIdForName[role.name] = roleId;
|
394
|
+
TimestampLib.blockTimestamp()
|
395
|
+
);
|
396
|
+
_roleIdForName[name] = roleId;
|
322
397
|
_roleIds.push(roleId);
|
398
|
+
|
399
|
+
emit LogRoleCreation(roleId, name, rtype);
|
323
400
|
}
|
324
401
|
|
325
|
-
function
|
326
|
-
RoleId roleId,
|
327
|
-
string memory name,
|
328
|
-
bool isCustom
|
329
|
-
)
|
402
|
+
function _validateRole(RoleId roleId, ShortString name, IAccess.Type rtype)
|
330
403
|
internal
|
331
|
-
view
|
332
|
-
returns (IAccess.RoleInfo memory existingRole)
|
404
|
+
view
|
333
405
|
{
|
334
|
-
|
335
|
-
|
406
|
+
uint roleIdInt = roleId.toInt();
|
407
|
+
if(rtype == IAccess.Type.Custom && roleIdInt < CUSTOM_ROLE_ID_MIN) {
|
408
|
+
revert IAccess.ErrorIAccessRoleIdTooSmall(roleId);
|
336
409
|
}
|
337
410
|
|
338
|
-
|
339
|
-
|
340
|
-
|
341
|
-
|
342
|
-
|
411
|
+
if(
|
412
|
+
rtype != IAccess.Type.Custom &&
|
413
|
+
roleIdInt >= CUSTOM_ROLE_ID_MIN &&
|
414
|
+
roleIdInt != PUBLIC_ROLE().toInt())
|
415
|
+
{
|
416
|
+
revert IAccess.ErrorIAccessRoleIdTooBig(roleId);
|
343
417
|
}
|
344
418
|
|
345
419
|
// role name checks
|
346
|
-
|
347
|
-
if (ShortStrings.byteLength(nameShort) == 0) {
|
420
|
+
if (ShortStrings.byteLength(name) == 0) {
|
348
421
|
revert IAccess.ErrorIAccessRoleNameEmpty(roleId);
|
349
422
|
}
|
350
|
-
|
351
|
-
if (_roleIdForName[nameShort].gtz()) {
|
352
|
-
revert IAccess.ErrorIAccessRoleNameNotUnique(_roleIdForName[nameShort], nameShort);
|
353
|
-
}
|
354
423
|
}
|
355
424
|
|
356
|
-
function _revokeRole(RoleId roleId, address member)
|
425
|
+
function _revokeRole(RoleId roleId, address member)
|
357
426
|
internal
|
358
427
|
returns(bool revoked)
|
359
428
|
{
|
360
429
|
if (!roleExists(roleId)) {
|
361
|
-
revert IAccess.
|
430
|
+
revert IAccess.ErrorIAccessRoleIdDoesNotExist(roleId);
|
362
431
|
}
|
363
432
|
|
364
433
|
revoked = EnumerableSet.remove(_roleMembers[roleId], member);
|
@@ -367,41 +436,99 @@ contract InstanceAccessManager is
|
|
367
436
|
}
|
368
437
|
}
|
369
438
|
|
370
|
-
function _getNextCustomRoleId()
|
371
|
-
|
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);
|
372
450
|
}
|
373
451
|
|
374
|
-
|
375
|
-
|
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);
|
376
458
|
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
_accessManager.isTargetClosed(target), // sync with state in access manager
|
381
|
-
TimestampLib.blockTimestamp(),
|
382
|
-
TimestampLib.blockTimestamp());
|
459
|
+
if (_targetInfo[target].createdAt.gtz()) {
|
460
|
+
revert IAccess.ErrorIAccessTargetExists(target, _targetInfo[target].name);
|
461
|
+
}
|
383
462
|
|
384
|
-
|
385
|
-
|
463
|
+
if (_targetAddressForName[name] != address(0)) {
|
464
|
+
revert IAccess.ErrorIAccessTargetNameExists(
|
465
|
+
target,
|
466
|
+
_targetAddressForName[name],
|
467
|
+
name);
|
468
|
+
}
|
469
|
+
|
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;
|
386
479
|
_targets.push(target);
|
480
|
+
|
481
|
+
emit LogTargetCreation(target, name, ttype, isLocked);
|
387
482
|
}
|
388
483
|
|
389
|
-
function
|
390
|
-
|
391
|
-
|
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);
|
392
491
|
}
|
393
492
|
|
394
|
-
|
395
|
-
if (ShortStrings.byteLength(nameShort) == 0) {
|
493
|
+
if (ShortStrings.byteLength(name) == 0) {
|
396
494
|
revert IAccess.ErrorIAccessTargetNameEmpty(target);
|
397
495
|
}
|
496
|
+
}
|
398
497
|
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
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);
|
404
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);
|
405
532
|
}
|
406
533
|
|
407
534
|
function canCall(
|
@@ -411,4 +538,4 @@ contract InstanceAccessManager is
|
|
411
538
|
) public view virtual returns (bool immediate, uint32 delay) {
|
412
539
|
return _accessManager.canCall(caller, target, selector);
|
413
540
|
}
|
414
|
-
}
|
541
|
+
}
|