import { FieldNamingStyle, GenericModelData, ModelAttributeMap } from "../smart-db-interfaces";
export declare abstract class AbstractModel<T extends AbstractModel<T, D>, D extends GenericModelData> {
    abstract clone(): T;
    abstract getClassName(): string;
    abstract getTableName(): string;
    abstract getPrimaryKey(): string;
    abstract getAttributeMap(): ModelAttributeMap;
    static readonly attributeMap: ModelAttributeMap;
    static getTableName(): string;
    static from(other: any): any;
    assign(other: T | D, options?: {
        only?: string[];
        exclude?: string[];
        skipUndefined?: boolean;
    }): void;
    setValue(attribute: string, value: string | number | boolean | Date): void;
    getValue(attribute: string): string | number | boolean;
    hasAttribute(attribute: string): boolean;
    clear(attributes: string | string[]): void;
    getPlainObject(includeVirtuals?: boolean, fields?: string[]): D;
    getPlainObject(style?: FieldNamingStyle, includeVirtuals?: boolean, fields?: string[]): GenericModelData;
    private toDbTimestamp;
}
