import type { Hono, ValidationTargets } from "hono";
import type * as t from "./openapi/types";
import type { JSONSchemaDefinition, ObjectSchema } from "jsonv-ts";
import type { RouterRoute } from "hono/types";
export type RouteInfo<Options extends InfoOptions = InfoOptions> = {
    method: string;
    openAPI?: Options extends {
        skipOpenAPI: true;
    } ? undefined : Partial<t.OperationObject>;
    validation?: Partial<Record<keyof ValidationTargets, Options extends {
        useSchemas: true;
    } ? ObjectSchema : JSONSchemaDefinition>>;
    handler?: RouterRoute["handler"];
} & (Options extends {
    extra: (route: RouterRoute) => infer T;
} ? T : {});
export type InfoOptions = {
    useSchemas?: boolean;
    skipOpenAPI?: boolean;
    extra?: (route: RouterRoute) => Record<string, any>;
};
export declare function info<Options extends InfoOptions = InfoOptions>(hono: Hono<any>, options?: Options): Record<string, {
    [method: string]: RouteInfo<Options>;
}>;
