import type { TableMetadata } from "kysely";
import type { IndexMetadata } from "../connection/Connection";
import type { Entity, EntityManager } from "../entities";
type IntrospectedTable = TableMetadata & {
    indices: IndexMetadata[];
};
type SchemaDiffTable = {
    name: string;
    isNew: boolean;
    isDrop?: boolean;
    columns: {
        add: string[];
        drop: string[];
        change: string[];
    };
    indices: {
        add: string[];
        drop: string[];
    };
};
/**
 * @todo: add modified fields
 * @todo: add drop tables
 *
 * @todo: change exclude tables to startWith, then add "bknd_" tables
 */
export declare class SchemaManager {
    private readonly em;
    static EXCLUDE_TABLES: string[];
    constructor(em: EntityManager<any>);
    private getIntrospector;
    introspect(): Promise<IntrospectedTable[]>;
    getIntrospectionFromEntity(entity: Entity): IntrospectedTable;
    getDiff(): Promise<SchemaDiffTable[]>;
    private collectFieldSchemas;
    sync(config?: {
        force?: boolean;
        drop?: boolean;
    }): Promise<{
        sql: string;
        parameters: readonly unknown[];
    }[]>;
}
export {};
