/**
 * @fileoverview DDL generation for the SQLite mirror store. Builds the primary
 * table, secondary indexes, an optional FTS5 external-content index with sync
 * triggers, the single-row `mirror_sync_state` table, and the `schema_version`
 * table — all from a declarative column/FTS spec.
 * @module services/mirror/sqlite/schema
 */
/** Default FTS5 tokenizer — Unicode-aware, diacritic-stripping, no stemming. */
export declare const DEFAULT_FTS_TOKENIZER = "unicode61 remove_diacritics 2";
/** Declarative schema spec consumed by {@link buildSchemaSql}. */
export interface SchemaSpec {
    /** Column name → SQLite type/declaration (e.g. `'TEXT'`, `'INTEGER NOT NULL'`). */
    columns: Record<string, string>;
    /** Columns to index in FTS5 (subset of `columns`). Omit/empty to skip FTS. */
    fts?: string[];
    /** FTS5 tokenizer directive. Defaults to {@link DEFAULT_FTS_TOKENIZER}. */
    ftsTokenizer?: string;
    /** Secondary indexes over declared columns. */
    indexes?: Array<{
        name?: string;
        columns: string[];
    }>;
    /** Primary-key column — receives `PRIMARY KEY NOT NULL` and drives upsert/tombstone. */
    primaryKey: string;
    /** Primary table name. */
    table: string;
}
/** Validate a {@link SchemaSpec} and return its FTS column set (validated). */
export declare function validateSchemaSpec(spec: SchemaSpec): {
    ftsColumns: string[];
    tokenizer: string;
};
/**
 * Build the full idempotent DDL for a mirror store. Safe to run on every open
 * (`CREATE … IF NOT EXISTS` throughout). Returns one SQL string.
 */
export declare function buildSchemaSql(spec: SchemaSpec): string;
//# sourceMappingURL=schema.d.ts.map