import { IApiBaseEntity } from '../../../../interface/api-base-entity.interface';
import { IApiAuthorizationPolicy, IApiAuthorizationPolicyRegistry, IApiAuthorizationPolicySubscriberRegistration } from '../../../../interface/class/api/authorization';
import { IApiAuthorizationPolicyBuildOptions } from '../../../../interface/class/api/authorization/policy/build-options.interface';
import { IApiAuthorizationPolicyCacheOptions } from '../../../../interface/class/api/authorization/policy/cache-options.interface';
import { TApiAuthorizationPolicyHookResult } from '../../../../type/class/api/authorization/policy/hook';
export declare class ApiAuthorizationPolicyRegistry implements IApiAuthorizationPolicyRegistry {
    private cacheOptions;
    private readonly POLICY_REGISTRY;
    private readonly POLICY_RULE_CACHE;
    constructor();
    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;
    private cacheRules;
    private createPolicyCacheKey;
    private getCachedRules;
    private getEntityName;
    private getSubscriberName;
    private invalidateCacheForEntity;
    private isCacheExpired;
    private normalizeRule;
    private resolveCacheOptions;
    private resolvePolicyId;
    private resolvePolicyRules;
    private resolvePrincipal;
}
export declare const apiAuthorizationPolicyRegistry: ApiAuthorizationPolicyRegistry;
