import { EApiControllerGetListQueryPaginationMode } from '../../../../../enum/decorator/api';
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, M extends EApiControllerGetListQueryPaginationMode = EApiControllerGetListQueryPaginationMode.PAGE>(entity: new () => E, action: TAction, options?: IApiAuthorizationPolicyBuildOptions<E, M>): Promise<IApiAuthorizationPolicy<E, TApiAuthorizationPolicyHookResult<TAction, E, M>> | undefined>;
    clear(): void;
    configureCache(options?: IApiAuthorizationPolicyCacheOptions): void;
    hasSubscriberForEntity(entity: new () => IApiBaseEntity): boolean;
    invalidateCache(entity?: new () => IApiBaseEntity): void;
    registerSubscriber<E extends IApiBaseEntity, M extends EApiControllerGetListQueryPaginationMode = EApiControllerGetListQueryPaginationMode.PAGE>(registration: IApiAuthorizationPolicySubscriberRegistration<E, M>): void;
}
