import * as Discord from "db-discord-discord.js";
import { Table } from "./Table";
import { LongTable } from "./LongTable";
import { FileTable } from "./FileTable";
import { ShortTable } from "./ShortTable";
import { KeyPairValue } from "./utilities";
export declare type TableType = "long" | "short" | "file";
export interface MetaTableData {
    name: string;
    id: string;
    objectTypes: {
        [property: string]: string;
    } | null;
    type: TableType;
}
export declare class discordDB {
    private guild;
    private channels;
    metatable: ShortTable<MetaTableData>;
    tables: KeyPairValue<MetaTableData, Table<any>>[];
    private constructor();
    static init(guild: Discord.Guild): Promise<discordDB>;
    getShortTableFromName<T>(name: string): ShortTable<T> | null;
    getLongTableFromName<T>(name: string): LongTable<T> | null;
    getFileTableFromName(id: string): FileTable | null;
    getShortTableFromID<T>(id: string): ShortTable<T> | null;
    getLongTableFromID<T>(id: string): LongTable<T> | null;
    getFileTableFromID(id: string): FileTable | null;
    createNewShortTable<T>(name: string): Promise<ShortTable<T>>;
    createNewLongTable<T>(name: string): Promise<LongTable<T>>;
    createNewFileTable(name: string): Promise<FileTable>;
    getOrCreateShortTable<T>(name: string): Promise<ShortTable<T>>;
    getOrCreateLongTable<T>(name: string): Promise<LongTable<T>>;
    getOrCreateFileTable(name: string): Promise<FileTable>;
    deleteTable(table: Table<any>): Promise<{}>;
    protected addToMetatable(table: Table<any>): Promise<string>;
}
