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; }