import { OrmDriver } from "./OrmDriver"; import { Subject } from "rxjs/Subject"; import Query from "./Query"; import Collection from "./Collection"; import { ISubscription } from "rxjs/Subscription"; /** * @deprecated */ export declare type ModelClass = { new (): T; } & typeof Model; export declare type FieldValue = any; export interface FieldObject extends Object { [key: string]: FieldValue | FieldObject; } export declare type AttrType = { type?: "number" | "string" | "boolean" | "date" | "object" | ModelClass | [ModelClass]; default?: FieldValue; readOnly?: boolean; required?: boolean; embedded?: boolean; setter?: (value: any) => any; getter?: (value: any) => any; transient?: boolean; }; export declare type AttrTypes = { [key: string]: AttrType; }; export declare type IObservable = { observe: (handler: (value: any) => void) => ISubscription; }; export declare type ISubscription = ISubscription; export declare class Cid { static lastCid: number; cid: number; toString(): string; equalsTo(cid: Cid): boolean; } /** * @deprecated */ export default class Model implements IObservable { protected static _attrTypes: AttrTypes; static idAttribute: any; protected static _collection: Collection; protected static discriminator: string; cid: Cid; protected attributes: any; protected changes: any; _subject: Subject<{}>; _subs: { [k: string]: ISubscription; }; static getAttrTypes(): AttrTypes; static getCollection(this: ModelClass): Collection; static getSuperClass(): any; static getById(ormDriver: OrmDriver, id: string | number): Promise; static create(this: ModelClass): T; static create(this: ModelClass, attributes: Array): T[]; static create(this: ModelClass, attributes: FieldObject): T; static _resolve(setHash: FieldObject, owner: Model): FieldObject; static observeQuery(ormDriver: OrmDriver, query: Query, handler: (array: T[]) => void): ISubscription; static executeQuery(ormDriver: OrmDriver, query: Query): Promise; static find(this: ModelClass, ormDriver: OrmDriver): Query; resolve(setHash: FieldObject): FieldObject; onChange(handler: (value: {}) => void): ISubscription; observe: (handler: (value: {}) => void) => ISubscription; getClass(): ModelClass; getId(): string | number | null; getRef(): { [k: string]: string | number | null; }; setId(id: string | number): this; private _processChanges(current, next); clone(): this; /** * Sets properties and if something changes isChanged will return true and getChanges will return changed fields */ set(setHash: FieldObject): this; fetch(setHash: FieldObject): this; getAttrType(attrName: string): AttrType; /** * Gets the current value for the given property * if key is null gets all properties hash */ get(key: string): any; getAttributes(): any; getChanges(): FieldObject | null; save(this: T, ormDriver: OrmDriver): Promise; delete(ormDriver: OrmDriver): Promise; }