import { IModelRes, IModelRules, IDbControllerModel, IDbControllerResult, TStateData, TQueryCb } from '../interface';
import { QueryData } from './QueryData';
import { DbController } from './DbController';
export declare abstract class Model<TState extends TStateData> {
    dbController: IDbControllerModel | DbController;
    queryData: QueryData;
    startIndex: number;
    state: Partial<TState>;
    abstract rules(): IModelRules[];
    abstract attributeLabels(): TState;
    abstract tableName(): string;
    protected constructor();
    isConnected(): Promise<boolean>;
    escapeString(text: string | number): string;
    validate(): void;
    protected getId(): string | number | null;
    init(data: IDbControllerResult[] | IDbControllerResult | null): void;
    selectOne(): Promise<IModelRes>;
    private _initData;
    save(isNew?: boolean): Promise<any>;
    update(): Promise<any>;
    add(): Promise<any>;
    remove(): Promise<boolean>;
    where(where?: any, isOne?: boolean): Promise<IModelRes>;
    whereOne(where?: any): Promise<boolean>;
    query(callback: TQueryCb): any;
    destroy(): void;
}
