import { Observable } from 'rxjs';
import { IQuery, IQueryObject, IQueryWhere } from 'blow-query';
import { BaseModel } from './BaseModel';
import { IPersistedAdapter, IPersistedModel, IBaseModelData } from './interfaces';
export declare class PersistedModel extends BaseModel implements IPersistedModel {
    destroy(): Observable<boolean>;
    save(): Observable<IPersistedModel>;
    refresh(): Observable<IPersistedModel>;
    protected static _prepareSave(data: IBaseModelData | PersistedModel): IBaseModelData;
    static init(data: IBaseModelData): PersistedModel;
    static count(where?: IQueryWhere): Observable<number>;
    static create(data: IBaseModelData | IPersistedModel): Observable<IPersistedModel>;
    static destroy(where?: IQueryWhere): Observable<number>;
    static destroyById(id: any): Observable<boolean>;
    static exists(id: any): Observable<boolean>;
    static find(query?: IQuery | IQueryObject): Observable<IPersistedModel>;
    static findOne(query?: IQuery | IQueryObject): Observable<IPersistedModel>;
    static findById(id: any): Observable<IPersistedModel>;
    static findOrCreate(where: IQueryWhere, data: IBaseModelData | IPersistedModel): Observable<IPersistedModel>;
    static update(where: IQueryWhere, data: IBaseModelData | IPersistedModel): Observable<number>;
    static updateOrCreate(data: IBaseModelData | IPersistedModel): Observable<IPersistedModel>;
    static adapter: IPersistedAdapter;
}
