import type { Dialect } from "./schemaValidator";
import type { NamedWithSchema } from "./cli/commands/migrate";
import type { ProxyParams } from "./serializer/studio";
import type { RunResult } from "better-sqlite3";
export type Proxy = (params: ProxyParams) => Promise<any[]>;
export type SqliteProxy = {
    proxy: (params: ProxyParams) => Promise<any[] | RunResult>;
};
export type DB = {
    query: <T extends any = any>(sql: string, params?: any[]) => Promise<T[]>;
};
export type SQLiteDB = {
    query: <T extends any = any>(sql: string, params?: any[]) => Promise<T[]>;
    run(query: string): Promise<void>;
};
export declare const copy: <T>(it: T) => T;
export declare const objectValues: <T extends object>(obj: T) => Array<T[keyof T]>;
export declare const assertV1OutFolder: (out: string) => void;
export type Journal = {
    version: string;
    dialect: Dialect;
    entries: {
        idx: number;
        version: string;
        when: number;
        tag: string;
        breakpoints: boolean;
    }[];
};
export declare const dryJournal: (dialect: Dialect) => Journal;
export declare const prepareOutFolder: (out: string, dialect: Dialect) => {
    meta: string;
    snapshots: string[];
    journal: any;
};
export declare const validateWithReport: (snapshots: string[], dialect: Dialect) => {
    malformed: string[];
    nonLatest: string[];
    idsMap: Record<string, {
        parent: string;
        snapshots: string[];
    }>;
    rawMap: Record<string, any>;
};
export declare const prepareMigrationFolder: (outFolder: string | undefined, dialect: Dialect) => {
    snapshots: string[];
    journal: any;
};
export declare const prepareMigrationMeta: (schemas: {
    from: string;
    to: string;
}[], tables: {
    from: NamedWithSchema;
    to: NamedWithSchema;
}[], columns: {
    from: {
        table: string;
        schema: string;
        column: string;
    };
    to: {
        table: string;
        schema: string;
        column: string;
    };
}[]) => {
    schemas: Record<string, string>;
    tables: Record<string, string>;
    columns: Record<string, string>;
};
export declare const schemaRenameKey: (it: string) => string;
export declare const tableRenameKey: (it: NamedWithSchema) => string;
export declare const columnRenameKey: (table: string, schema: string, column: string) => string;
export declare const kloudMeta: () => {
    pg: number[];
    mysql: number[];
    sqlite: number[];
};
