import type { CrudEventVerb, FieldDef, FieldTypeDef, IndexDef, MockServerConfig, QueryDef, RequestReplyDef, Row, TableDef } from '../types.ts'; import type { Store } from './store.ts'; export interface ResolvedField { name: string; type: string; nullable: boolean; generated: boolean; values?: string[]; default?: unknown; maxSize?: number; minLength?: number; min?: number; max?: number; scale?: number; description?: string; title?: string; optional?: boolean; table?: string; items?: FieldTypeDef; unique?: boolean; className?: string; fields?: FieldDef[]; enumClass?: string; dao?: boolean; } export interface ResolvedSchema { fields: ResolvedField[]; declared: boolean; } export declare function pkFieldsOf(def: TableDef): string[]; export declare function generatedFieldsOf(def: TableDef): Set; export declare function generatedFieldList(def: TableDef): string[]; export declare function isDeclared(source: string, config: MockServerConfig, store: Store): boolean; export declare function resolveSourceSchema(source: string, config: MockServerConfig, store: Store): ResolvedSchema; export declare function withTypeOverrides(schema: ResolvedSchema, fieldTypes: Record | undefined): ResolvedSchema; export declare function projectSchema(schema: ResolvedSchema, names: string[] | undefined): ResolvedSchema; export declare function querySchema(query: QueryDef, config: MockServerConfig, store: Store): ResolvedSchema; export declare function queryCriteriaTypes(query: QueryDef, config: MockServerConfig, store: Store): Map; export declare function requestReplySchema(requestReply: RequestReplyDef, config: MockServerConfig, store: Store): ResolvedSchema; export declare const RECORD_IDENTITY_FIELDS: ResolvedField[]; export declare function requestReplySourceSchema(requestReply: RequestReplyDef, config: MockServerConfig, store: Store): ResolvedSchema; export declare function requestReplyReplySchema(requestReply: RequestReplyDef, config: MockServerConfig, store: Store): ResolvedSchema; export declare function requestReplyFieldNames(requestReply: RequestReplyDef, config: MockServerConfig, store: Store): string[] | undefined; export declare function requestFieldsOf(requestReply: RequestReplyDef, store: Store): string[]; export declare function knownValues(field: ResolvedField): string[] | undefined; export declare function eventDefaultOf(field: ResolvedField): unknown; export declare function queryFieldNames(query: QueryDef | undefined, config: MockServerConfig, store: Store): string[] | undefined; export declare function projectRow(row: Row, names: string[] | undefined): Row; export declare function defaultIndexName(table: string, fields: string[]): string; export declare function primaryKeyIndexName(table: string, def: TableDef): string; export declare function secondaryUniqueIndexes(def: TableDef): IndexDef[]; export declare const CRUD_EVENT_VERBS: readonly CrudEventVerb[]; export declare function crudEventName(table: string, verb: CrudEventVerb): string; export declare function crudEventOf(name: string | undefined, config: MockServerConfig): { table: string; verb: CrudEventVerb; } | undefined; export declare function crudEventNames(config: MockServerConfig): string[]; export declare function isDeleteEventName(name: string): boolean; export declare function inferEventTable(eventName: string | undefined, tableNames: string[]): string | undefined; export interface EventTarget { kind: 'table' | 'byId' | 'dto'; table?: string; className: string; title?: string; fieldTypes?: Record; fields?: FieldDef[]; } export declare function resolveEventTarget(name: string | undefined, config: MockServerConfig, { bareTable }?: { bareTable?: boolean; }): EventTarget | undefined; export declare function typedFields(fields: FieldDef[]): ResolvedField[]; export declare function dtoFields(fields: FieldDef[], table?: string, fieldTypes?: Record): ResolvedField[]; export declare function eventFields(target: EventTarget, config: MockServerConfig, store: Store): ResolvedField[];