import { INameGiver } from './INameGiver';
import { Column } from './Column';
import { Database } from './Database';
import { Table } from './Table';
type TablesObj = {
    [tableName: string]: Table;
};
type SchemaObj<T extends TablesObj> = {
    name?: string;
    tables: T;
};
export declare class Schema<T extends TablesObj = TablesObj> implements INameGiver {
    private readonly data;
    private mDatabase?;
    private readonly mTables;
    private readonly tableArray;
    private readonly mName;
    constructor(data: SchemaObj<T>);
    set database(database: Database);
    get database(): Database;
    get name(): string;
    get fqName(): string;
    get tables(): T;
    /** Alias to get tables() */
    get t(): T;
    isTableExist(table: Table): boolean;
    isColumnExist(column: Column): boolean;
}
export {};
