import { EApiFunctionType, EApiRouteType } from '../../../enum/decorator/api';
import { IApiBaseEntity } from '../../../interface/api-base-entity.interface';
import { IApiSubscriberFunction } from '../../../interface/class/api/subscriber/function';
import { IApiSubscriberRoute } from '../../../interface/class/api/subscriber/route.interface';
import { IApiFunctionSubscriberProperties, IApiRouteSubscriberProperties } from '../../../interface/decorator/api/subscriber';
declare class ApiSubscriberRegistry {
    private readonly FUNCTION_SUBSCRIBER_REGISTRATION_ORDER;
    private readonly FUNCTION_SUBSCRIBERS;
    private nextFunctionSubscriberRegistrationOrder;
    private readonly ROUTE_SUBSCRIBERS;
    constructor();
    getFunctionSubscriberProperties<E extends IApiBaseEntity>(subscriber: IApiSubscriberFunction<E>): IApiFunctionSubscriberProperties<E> | undefined;
    getFunctionSubscriberRegistrationOrder<E extends IApiBaseEntity>(subscriber: IApiSubscriberFunction<E>): number;
    getFunctionSubscribers<E extends IApiBaseEntity>(entityName: string, functionType?: EApiFunctionType, action?: string): Array<IApiSubscriberFunction<E>>;
    getRouteSubscribers<E extends IApiBaseEntity>(entityName: string, controller?: new (...arguments_: Array<unknown>) => unknown, routeType?: EApiRouteType, action?: string): Array<IApiSubscriberRoute<E>>;
    registerFunctionSubscriber<E extends IApiBaseEntity>(properties: IApiFunctionSubscriberProperties<E>, subscriber: IApiSubscriberFunction<E>): void;
    registerRouteSubscriber<E extends IApiBaseEntity>(properties: IApiRouteSubscriberProperties<E>, subscriber: IApiSubscriberRoute<E>): void;
    private isFunctionSubscriberMatching;
    private isRouteSubscriberMatching;
}
export declare const apiSubscriberRegistry: ApiSubscriberRegistry;
export {};
