import { defaultEndpointsFactory, Method } from "express-zod-api";
import { z, ZodType } from "zod";
import { Logger } from "pino";
import { VaultClient } from "./vault.js";
type OptionsProvider = () => Promise<{
    vault: VaultClient;
}>;
export declare const setOptionsProvider: (provider: OptionsProvider) => void;
export type CreateEndpointOptions<I extends ZodType, O extends ZodType> = {
    method: Method;
    input: I;
    output: O;
    handler: (input: z.infer<I>, options: {
        vault: VaultClient;
    }, logger: Logger) => Promise<z.infer<O>>;
};
export declare const createEndpoint: <I extends ZodType, O extends ZodType>(opts: CreateEndpointOptions<I, O>) => {
    "__#6@#private": any;
    deprecated(): /*elided*/ any;
    execute({ request, response, logger, config, }: {
        request: import("express").Request;
        response: import("express").Response;
        logger: {
            error: (message: string, meta?: any) => any;
            warn: (message: string, meta?: any) => any;
            info: (message: string, meta?: any) => any;
            debug: (message: string, meta?: any) => any;
        } & import("express-zod-api").LoggerOverrides;
        config: import("express-zod-api").CommonConfig;
    }): Promise<undefined>;
    nest(routing: import("express-zod-api").Routing): import("express-zod-api").Routing;
};
export type ZodRoute = {
    [key in Method]?: ReturnType<typeof defaultEndpointsFactory.build>;
};
export declare const createRoute: (routes: ZodRoute) => ZodRoute;
export {};
