import { z } from 'zod';
type HttpMethod = 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH';
interface NamedField {
    name: string;
    type: string;
    description: string;
    required?: boolean;
}
interface FieldSource {
    schema: z.ZodType;
    prefix?: string;
    pick?: string[];
    omit?: string[];
    overrides?: Record<string, Partial<Pick<NamedField, 'type' | 'description'>>>;
    stripRequired?: boolean;
}
type FieldDefinition = NamedField[] | FieldSource;
interface RequestBody {
    description: string;
    fields?: FieldDefinition;
}
interface Param {
    name: string;
    type: string;
    description: string;
    required?: boolean;
}
interface EndpointStatus {
    code: number;
    description: string;
}
interface ResponseHeader {
    name: string;
    description: string;
}
interface Endpoint {
    id: string;
    title: string;
    sectionTitle?: string;
    method: HttpMethod;
    path: string;
    description: string;
    pathParams: Param[];
    queryParams: Param[];
    requestBody: RequestBody | null;
    responseDescription: string;
    responseHeaders?: ResponseHeader[];
    responseFields?: FieldDefinition;
    statuses: EndpointStatus[];
    examplePath: string;
    exampleBody?: string | object;
    exampleHeaders?: Record<string, string>;
    ttlNote?: string;
    public?: boolean;
}
interface Service {
    name: string;
    slug: string;
    description: string;
    host?: string;
    hasPublicEndpoints?: boolean;
    endpoints: Endpoint[];
    icon?: string;
}
declare function fieldsFromSchema(schema: z.ZodType, prefix?: string): NamedField[];
declare function resolveFields(definition: FieldDefinition | undefined): NamedField[] | undefined;
export type { HttpMethod, NamedField, FieldSource, FieldDefinition, RequestBody, Param, EndpointStatus, ResponseHeader, Endpoint, Service, };
export { fieldsFromSchema, resolveFields };
//# sourceMappingURL=api-reference.d.ts.map