///
import * as Discord from "db-discord-discord.js";
import { EventEmitter } from "events";
import { TableType } from "./db-discord";
import { KeyPairValue, Regexify } from "./utilities";
export interface SearchArguments {
searchTerm?: string;
searchObject?: Partial;
regexChecker?: Partial>;
callback?: (obj: T) => boolean;
}
export declare interface Table {
on(event: "write", listener: (obj: T) => void): this;
emit(event: "write", args: T): boolean;
}
export declare abstract class Table extends EventEmitter {
abstract type: TableType;
name: string;
id: string;
protected channel: Discord.TextChannel;
constructor(channel: Discord.TextChannel);
abstract write(obj: T): Promise;
abstract get(id: string): Promise;
delete(id: string): Promise<{}>;
abstract search(searchArguments: SearchArguments): Promise[]>;
}