import IPresenter from "../presenters/Presenter.interface";
type SuccessControllerReturn<PresenterOutput> = {
    error: false;
    message?: string;
    data: PresenterOutput;
};
type ErrorControllerReturn = {
    error: true;
    message?: string;
};
type ControllerReturn<PresenterOutput> = SuccessControllerReturn<PresenterOutput> | ErrorControllerReturn;
export declare abstract class BaseController<ControllerInput, UseCaseOutput, PresenterOutput> {
    private readonly dependency;
    private logRepository;
    constructor(dependency: {
        presenter: IPresenter<UseCaseOutput, PresenterOutput>;
    });
    execute(input: ControllerInput): Promise<ControllerReturn<PresenterOutput>>;
    protected handleError(e: any): Promise<void>;
    abstract useCasesImplementation(input: ControllerInput): Promise<UseCaseOutput>;
}
export {};
//# sourceMappingURL=BaseController.d.ts.map