import { z } from "@hono/zod-openapi";
import * as drizzle_zod15 from "drizzle-zod";
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";

//#region src/validation/drizzle-schema-helpers.d.ts
declare function createSelectSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod15.BuildSchema<"select", T["_"]["columns"], drizzle_zod15.BuildRefine<T["_"]["columns"], undefined>, undefined>;
declare function createInsertSchemaWithModifiers<T extends AnySQLiteTable>(table: T, overrides?: Partial<Record<keyof T['_']['columns'], (schema: z.ZodTypeAny) => z.ZodTypeAny>>): drizzle_zod15.BuildSchema<"insert", T["_"]["columns"], drizzle_zod15.BuildRefine<Pick<T["_"]["columns"], keyof T["$inferInsert"]>, undefined>, undefined>;
declare const createSelectSchema: typeof createSelectSchemaWithModifiers;
declare const createInsertSchema: typeof createInsertSchemaWithModifiers;
/**
 * Registers all field schemas in an object schema that match known field names.
 * This ensures metadata persists through transformations like .partial() and .omit().
 * For the 'id' field, also applies full validation constraints via .openapi().
 *
 * This function registers each field schema instance in the global registry using .meta(),
 * and ensures OpenAPI metadata is set via .openapi() for proper documentation generation.
 *
 * Note: This modifies the schemas in place by registering them in the global registry.
 * The schema shape itself is not modified, but the field schemas are registered.
 */
declare function registerFieldSchemas<T extends z.ZodObject<any>>(schema: T): T;
//#endregion
export { createInsertSchema, createSelectSchema, registerFieldSchemas };