import type { JSONSchema } from "./types.js"; type SchemaPropertyType = "string" | "number" | "integer" | "boolean" | "object" | "array"; interface SchemaPropertyDef { type: SchemaPropertyType; description?: string; optional?: boolean; [keyword: string]: unknown; } type SchemaDefinition = Record; type InferType = T extends "string" ? string : T extends "number" | "integer" ? number : T extends "boolean" ? boolean : T extends "object" ? Record : T extends "array" ? unknown[] : never; type InferSchema = { [K in keyof T as T[K]["optional"] extends true ? never : K]: InferType; } & { [K in keyof T as T[K]["optional"] extends true ? K : never]?: InferType; }; export interface TypedSchema extends JSONSchema { __type?: T; } export declare function defineSchema(definition: T): TypedSchema>; export {};