import { AllCacheItems, CachePermission, FunctionPermission, Permission, Permissions, PredefinedScope } from './permission-scope';
export interface CacheItemKey {
    key: string;
}
export interface CacheItemKeyPrefix {
    keyPrefix: string;
}
export declare function isCacheItemKey(cacheItem: CacheItemSelector): cacheItem is CacheItemKey;
export declare function isCacheItemKeyPrefix(cacheItem: CacheItemSelector): cacheItem is CacheItemKeyPrefix;
export type CacheItemSelector = typeof AllCacheItems | CacheItemKey | CacheItemKeyPrefix | string;
export interface DisposableTokenCachePermission extends CachePermission {
    /**
     * Scope the token permissions to select cache items
     */
    item: CacheItemSelector;
}
export declare function isDisposableTokenCachePermission(p: Permission): boolean;
export declare function asDisposableTokenCachePermission(p: Permission): DisposableTokenCachePermission;
export interface DisposableTokenPermissions {
    permissions: Array<DisposableTokenCachePermission | FunctionPermission>;
}
export type DisposableTokenScope = Permissions | PredefinedScope | DisposableTokenPermissions;
export interface DisposableTokenProps {
    tokenId?: string;
}
export declare function isDisposableTokenPermissionsObject(scope: DisposableTokenScope): boolean;
export declare function asDisposableTokenPermissionsObject(scope: DisposableTokenScope): DisposableTokenPermissions;
