import type { ZodObject } from 'zod'; import type { DefinitionInterfaceMap, AssertInterfaceMap, SerializeInterfaceMap, UnserializeInterfaceMap } from '../types.js'; import DefinitionInterface from './DefinitionInterface.js'; export default interface SchemaInterface, C extends DefinitionInterfaceMap = DefinitionInterfaceMap> extends DefinitionInterface<{ [key in keyof C]: C[key]['defaults']; }, AssertInterfaceMap, SerializeInterfaceMap, UnserializeInterfaceMap, ZodObject<{ [key in keyof C]: C[key]['shape']; }>> { columns: C; assert(value: Record, required?: boolean): AssertInterfaceMap | null; filter>(value: V, populate?: boolean): Partial<{ [K in keyof T]: T[K]; }>; populate>(value: V): { [key in keyof C]: C[key]['defaults']; } & V; serialize(value: Record, encrypt?: boolean): SerializeInterfaceMap; unserialize(value: Record, decrypt?: boolean): UnserializeInterfaceMap; }