import { AnyMySqlTable } from "drizzle-orm/mysql-core";
import { Relations } from "drizzle-orm";
import { AnyPgTable, PgDatabase } from "drizzle-orm/pg-core";
import { Config, DbConnection } from ".";
import { PgSchema } from "./serializer/pgSchema";
import { AnySQLiteTable } from "drizzle-orm/sqlite-core";
export type DrizzleSnapshotJSON = PgSchema;
export declare const generateDrizzleJson: (imports: Record<string, unknown>, prevId?: string) => DrizzleSnapshotJSON;
export declare const generateMigration: (prev: DrizzleSnapshotJSON, cur: DrizzleSnapshotJSON) => Promise<string[]>;
export declare const pushSchema: (imports: Record<string, unknown>, db: PgDatabase<any>) => Promise<{
    hasDataLoss: boolean;
    warnings: string[];
    statementsToExecute: string[];
    apply: () => Promise<void>;
}>;
export declare const prepareFrom: (connection: DbConnection) => Promise<{
    db: import("drizzle-orm/node-postgres").NodePgDatabase<Record<string, never>>;
    type: "pg";
    schema: Record<string, AnyPgTable<{}> | Relations>;
} | {
    db: import("drizzle-orm/mysql2").MySql2Database<Record<string, never>>;
    type: "mysql2";
    schema: Record<string, AnyMySqlTable<{}> | Relations>;
} | {
    db: import("drizzle-orm/better-sqlite3").BetterSQLite3Database<Record<string, never>>;
    type: "sqlite";
    schema: Record<string, AnySQLiteTable<{}> | Relations>;
} | {
    db: import("drizzle-orm/libsql").LibSQLDatabase<Record<string, never>>;
    type: "sqlite";
    schema: Record<string, AnySQLiteTable<{}> | Relations>;
}>;
export declare function defineConfig(config: Config): Config;
