import type { Knex } from 'knex';
/** Active Knex instance. Available after calling {@link configure} or {@link configureDatabase}. */
declare let DB: Knex | undefined;
type SupportedClient = 'sqlite3' | 'sqlite' | 'better-sqlite3' | 'mysql' | 'mysql2' | 'postgres' | 'postgresql' | 'pg' | 'pgnative' | 'cockroachdb' | 'redshift' | 'mssql' | 'oracledb' | 'oracle';
interface SimpleDatabaseConfig {
    client?: SupportedClient;
    dialect?: SupportedClient;
    connection?: NonNullable<Knex.Config['connection']>;
    connectionString?: string;
    filename?: string;
    host?: string;
    port?: number;
    user?: string;
    password?: string;
    database?: string;
    ssl?: boolean | Record<string, unknown>;
    debug?: boolean;
    pool?: Knex.PoolConfig;
}
interface MigrationResult {
    batch: number;
    log: string[];
}
/**
 * Returns the active Knex instance.
 *
 * @returns Configured Knex client.
 * @throws When {@link configure} or {@link configureDatabase} has not been called.
 */
declare const getDB: () => Knex;
/**
 * Initialises the ORM with a raw Knex config object or an existing Knex instance.
 *
 * @param config - Knex configuration or a pre-built Knex instance.
 * @returns The active Knex client (also available as {@link DB}).
 */
declare const configure: (config: Knex.Config | Knex) => Knex;
/**
 * Sets default migration options used by {@link makeMigration}, {@link migrateLatest},
 * and other migration helpers.
 *
 * @param config - Knex migrator config (typically `directory` and `extension`).
 * @returns A copy of the stored migration config.
 *
 * @example
 * ```ts
 * setMigrationConfig({ directory: './migrations', extension: 'ts' })
 * ```
 */
declare const setMigrationConfig: (config: Knex.MigratorConfig) => Knex.MigratorConfig;
/**
 * Returns the currently configured default migration options.
 *
 * @returns Copy of the migration config set via {@link setMigrationConfig}.
 */
declare const getMigrationConfig: () => Knex.MigratorConfig;
/**
 * Builds a Knex config from simple database options.
 *
 * Prefer `client` over the deprecated `dialect` field. Connection details can be
 * supplied as a `connection` object/string or as top-level `host`/`filename` fields.
 *
 * @param config - Simplified database configuration.
 * @returns Knex config ready for {@link configure}.
 */
declare const createKnexConfig: (config: SimpleDatabaseConfig) => Knex.Config;
/**
 * Initialises the ORM from simple database options.
 *
 * This is the recommended entry point for most applications.
 *
 * @param config - Simplified database configuration with `client` and connection fields.
 * @returns The active Knex client (also available as {@link DB}).
 *
 * @example
 * ```ts
 * configureDatabase({
 *   client: 'better-sqlite3',
 *   connection: { filename: './dev.sqlite' }
 * })
 * ```
 *
 * SQLite note: `client: 'sqlite3'` and `client: 'sqlite'` are accepted for
 * compatibility but resolve to the Knex `better-sqlite3` driver. Prefer
 * installing and configuring `better-sqlite3`; the older `sqlite3` package is
 * discouraged because it requires native builds.
 */
declare const configureDatabase: (config: SimpleDatabaseConfig) => Knex;
/**
 * Generates a Knex migration file and returns its absolute path.
 *
 * @param name - Migration name (e.g. `create_users_table`).
 * @param config - Optional per-call migrator overrides.
 * @returns Path to the created migration file.
 */
declare const makeMigration: (name: string, config?: Knex.MigratorConfig) => Promise<string>;
/**
 * Runs all pending migrations.
 *
 * @param config - Optional per-call migrator overrides.
 * @returns Batch number and filenames of migrations executed in this run.
 */
declare const migrateLatest: (config?: Knex.MigratorConfig) => Promise<MigrationResult>;
/**
 * Rolls back the most recent migration batch.
 *
 * @param config - Optional per-call migrator overrides.
 * @param all - When `true`, rolls back all completed batches.
 * @returns Batch number and filenames of migrations rolled back.
 */
declare const migrateRollback: (config?: Knex.MigratorConfig, all?: boolean) => Promise<MigrationResult>;
/**
 * Returns the current migration version recorded by Knex.
 *
 * @param config - Optional per-call migrator overrides.
 * @returns Latest applied migration name, or `'none'` when no migrations have run.
 */
declare const migrateCurrentVersion: (config?: Knex.MigratorConfig) => Promise<string>;
/**
 * Lists completed and pending migration filenames.
 *
 * @param config - Optional per-call migrator overrides.
 * @returns Object with `completed` and `pending` migration filename arrays.
 */
declare const migrateList: (config?: Knex.MigratorConfig) => Promise<{
    completed: string[];
    pending: string[];
}>;
export { DB, getDB, configure, createKnexConfig, configureDatabase, setMigrationConfig, getMigrationConfig, makeMigration, migrateLatest, migrateRollback, migrateCurrentVersion, migrateList, };
