import { Observable } from 'rxjs';
import { ModelMetadata } from './ModelMetadata';
import { Connection } from './Connection';
import { Validator } from './Validator';
import { IBaseModel, IValidationResult, IBaseModelData } from './interfaces';
export declare class BaseModel implements IBaseModel {
    protected _data: Map<string, any>;
    protected static _metadata: ModelMetadata;
    protected static _connection: Connection;
    static ready: boolean;
    static _validator: Validator;
    constructor(data?: IBaseModelData);
    static metadata: ModelMetadata;
    static connection: Connection;
    static validator: Validator;
    validate(): Observable<IValidationResult>;
    merge(data: IBaseModelData | IBaseModel): IBaseModel;
    toJSON(withHidden?: boolean): IBaseModelData;
    toSafeJSON(): IBaseModelData;
    inspect(): IBaseModelData;
}
