import { Endpoint, HeaderParams, PathParams, QueryParams } from "./types.js";
type JsonSchema = Record<string, unknown>;
type RequireSchema<T> = {
    [K in keyof T]-?: Schema;
};
export type SchemaDefinition<ReqType extends Endpoint["request"]> = (ReqType["params"] extends PathParams ? {
    params: RequireSchema<ReqType["params"]>;
} : {
    params?: never;
}) & (ReqType["query"] extends QueryParams ? {
    query: RequireSchema<ReqType["query"]>;
} : {
    query?: never;
}) & (ReqType["headers"] extends HeaderParams ? {
    headers: RequireSchema<ReqType["headers"]>;
} : {
    headers?: never;
}) & (ReqType extends {
    body: unknown;
} ? {
    body: Schema;
} : {
    body?: never;
});
export declare enum Schema {
    Uint = 0,
    UintRequired = 1,
    UintArray = 2,
    String = 3,
    StringRequired = 4,
    StringArray = 5,
    StringArrayRequired = 6,
    UintOrStringRequired = 7,
    UintOrStringArray = 8,
    Object = 9,
    ObjectArray = 10,
    AnyArray = 11,
    Boolean = 12
}
export declare function getFastifySchema<T extends Endpoint["request"]>(schemaDef: SchemaDefinition<T>): JsonSchema;
export {};
//# sourceMappingURL=schema.d.ts.map