import type { IApiBaseEntity } from '../../../../interface/api-base-entity.interface';
import type { IApiAuthorizationPolicy, IApiAuthorizationPolicyRegistry, IApiAuthorizationPolicySubscriberRegistration } from '../../../../interface/class/api/authorization/index';
import type { TApiAuthorizationPolicyHookResult } from '../../../../type/class/api/authorization/policy/hook/index';
type TEntityConstructor<E extends IApiBaseEntity> = new () => E;
export declare class ApiAuthorizationPolicyRegistry implements IApiAuthorizationPolicyRegistry {
    private readonly POLICY_CACHE;
    private readonly POLICY_REGISTRY;
    constructor();
    buildAggregatedPolicy<E extends IApiBaseEntity, TAction extends string>(entity: TEntityConstructor<E>, action: TAction): Promise<IApiAuthorizationPolicy<E, TApiAuthorizationPolicyHookResult<TAction, E>> | undefined>;
    clear(): void;
    registerSubscriber<E extends IApiBaseEntity>(registration: IApiAuthorizationPolicySubscriberRegistration<E>): void;
    private cachePolicy;
    private createCacheKey;
    private getEntityName;
    private invalidateCacheForEntity;
    private normalizeRule;
    private resolvePolicyId;
    private resolveRouteType;
    private toBasePolicy;
}
export declare const apiAuthorizationPolicyRegistry: ApiAuthorizationPolicyRegistry;
export {};
