import { IApiBaseEntity } from '../interface/api-base-entity.interface';
import { IApiControllerProperties } from '../interface/decorator/api';
import { IApiEntity } from '../interface/entity';
import { TApiControllerMethodName, TApiControllerTargetMethod } from '../type/factory/api/controller';
import { EApiRouteType } from '../enum/decorator/api';
export declare class ApiControllerFactory<E extends IApiBaseEntity> {
    protected target: TApiControllerTargetMethod<E>;
    private readonly properties;
    protected get targetPrototype(): InstanceType<typeof this.target>;
    private readonly ENTITY;
    constructor(target: TApiControllerTargetMethod<E>, properties: IApiControllerProperties<E>);
    createMethod(method: EApiRouteType): void;
    init(): void;
    protected [EApiRouteType.CREATE](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.CREATE>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    protected [EApiRouteType.DELETE](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.DELETE>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    protected [EApiRouteType.GET](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.GET>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    protected [EApiRouteType.GET_LIST](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.GET_LIST>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    protected [EApiRouteType.PARTIAL_UPDATE](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.PARTIAL_UPDATE>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    protected [EApiRouteType.UPDATE](method: EApiRouteType, methodName: TApiControllerMethodName<typeof EApiRouteType.UPDATE>, properties: IApiControllerProperties<E>, entityMetadata: IApiEntity<E>): void;
    private defineUpdateRouteMethod;
}
