import { Config } from "./config";
import { ZodValidator } from "./validators";
import { z, ZodTypeAny } from "zod";
import { HandlerFn, QueryFn } from "../types";
import { HandlerReturn } from "./handler";
import { QueryReturn } from "./query";
import { RetriesConfig } from "./handler-factory";
export declare class ActionHandler<C extends object, I extends ZodTypeAny = any, O extends ZodTypeAny = any> {
    private readonly validator;
    private readonly config?;
    constructor(validator: ZodValidator, config?: Config<C> | undefined);
    input<S extends ZodTypeAny>(schema: S): ActionHandler<C, S, O>;
    output<S extends ZodTypeAny>(schema: S): ActionHandler<C, I, S>;
    retry(config: RetriesConfig): ActionHandler<C, any, any>;
    handler<R extends O>(cb: HandlerFn<I, C, R>): HandlerReturn<I, R>;
    handler<R>(cb: HandlerFn<I, C, R>): HandlerReturn<I, z.infer<O>>;
    query<R extends O>(cb: QueryFn<R, C>): QueryReturn<R>;
    query<R>(cb: QueryFn<R, C>): QueryReturn<z.infer<O>>;
}
