import { Subject } from 'rxjs';
import { t } from './common';
export declare type IModelArgs
, D extends P, L extends t.IModelLinksSchema, C extends t.IModelChildrenSchema> = {
db: t.IDb;
path: string;
initial: D;
typename?: string;
load?: boolean;
events$?: Subject;
links?: t.IModelLinkDefs;
children?: t.IModelChildrenDefs;
beforeSave?: t.BeforeModelSave;
beforeDelete?: t.BeforeModelDelete
;
};
export declare class Model
, D extends P = P, L extends t.IModelLinksSchema = any, C extends t.IModelChildrenSchema = any> implements t.IModel
{
static create: , D_1 extends P_1 = P_1, L_1 extends t.IModelLinksSchema = any, C_1 extends t.IModelChildrenSchema = any>(args: IModelArgs) => Model;
private constructor();
dispose(): void;
private _args;
private _item;
private _props;
private _links;
private _children;
private _linkCache;
private _childrenCache;
private _changes;
private _typename;
private readonly _dispose$;
readonly dispose$: import("rxjs").Observable;
private readonly _events$;
readonly events$: import("rxjs").Observable;
get isDisposed(): boolean;
get isLoaded(): boolean;
get isChanged(): boolean;
get exists(): boolean | undefined;
get db(): t.IDb;
get path(): string;
get typename(): string;
get ready(): Promise>;
get createdAt(): number;
get modifiedAt(): number;
get changes(): t.IModelChanges;
get doc(): D;
get props(): P;
get links(): t.IModelLinks;
get children(): t.IModelChildren;
load(options?: {
force?: boolean;
withLinks?: boolean;
withChildren?: boolean;
silent?: boolean;
}): Promise;
reset(): this;
set(props: Partial
): this;
beforeSave(options?: {
force?: boolean;
}): Promise<{
payload: t.IModelSave
;
}>;
save(options?: {
force?: boolean;
}): Promise>;
beforeDelete(): Promise<{
payload: t.IModelDelete;
}>;
delete(): Promise;
toObject(): P;
private throwIfDisposed;
private fire;
private resolveLink;
private resolveChildren;
private currentValue;
private readField;
private changeField;
private getChange;
}