import { Kysely } from "kysely";
import type { SqliteWasmDatabase } from "./sqlite/create-in-memory-database.js";
import type { LixDatabaseSchema } from "./schema.js";
import type { LixEngine } from "../engine/boot.js";
/**
 * Configuration for JSON columns in database views.
 *
 * Specifies which columns contain JSON data and what types of JSON values they accept.
 * This is used by the JSONColumnPlugin to properly serialize/deserialize JSON data.
 *
 * Column types:
 * - `type: 'object'` - Column only accepts JSON objects. String values are assumed to be
 *   pre-serialized JSON to prevent double serialization when data flows between views.
 * - `type: ['string', 'number', 'boolean', 'object', 'array', 'null']` - Column accepts
 *   any valid JSON value. All values are properly serialized.
 *
 * @example
 * ```typescript
 * {
 *   change: {
 *     snapshot_content: { type: 'object' } // Only objects, prevents double serialization
 *   },
 *   key_value: {
 *     value: { type: ['string', 'number', 'boolean', 'object', 'array', 'null'] } // Any JSON
 *   }
 * }
 * ```
 */
export declare function prepareEngineDatabase(args: {
    engine: Pick<LixEngine, "sqlite" | "hooks" | "executeSync" | "runtimeCacheRef" | "preprocessQuery">;
}): void;
export declare function initKysely(args: {
    sqlite: SqliteWasmDatabase;
}): Kysely<LixDatabaseSchema>;
//# sourceMappingURL=init-db.d.ts.map