import { IApiBaseEntity } from '../../../../api-base-entity.interface';
import { IApiAuthorizationPolicyBuildOptions } from './build-options.interface';
import { IApiAuthorizationPolicyCacheOptions } from './cache-options.interface';
import { IApiAuthorizationPolicy } from './interface';
import { IApiAuthorizationPolicySubscriberRegistration } from './subscriber/registration.interface';
import { TApiAuthorizationPolicyHookResult } from '../../../../../type/class/api/authorization/policy/hook';
export interface IApiAuthorizationPolicyRegistry {
    buildAggregatedPolicy<E extends IApiBaseEntity, TAction extends string>(entity: new () => E, action: TAction, options?: IApiAuthorizationPolicyBuildOptions<E>): Promise<IApiAuthorizationPolicy<E, TApiAuthorizationPolicyHookResult<TAction, E>> | undefined>;
    clear(): void;
    configureCache(options?: IApiAuthorizationPolicyCacheOptions): void;
    hasSubscriberForEntity(entity: new () => IApiBaseEntity): boolean;
    invalidateCache(entity?: new () => IApiBaseEntity): void;
    registerSubscriber<E extends IApiBaseEntity>(registration: IApiAuthorizationPolicySubscriberRegistration<E>): void;
}
