declare namespace Ext { export namespace data { export interface ModelConfig { associations?: object[]; belongsTo?: string | object | string[] | object[]; clientIdProperty?: string; convertOnSet?: boolean; fields?: object[] | string[]; hasMany?: string | object | string[] | object[]; hasOne?: string | object | string[] | object[]; identifier?: string | object; idProperty?: string; manyToMany?: object; proxy?: string | object | Ext.data.proxy.Proxy; schema?: string | object; validationSeparator?: string; validators?: object[]; versionProperty?: string; } export class Model extends Ext.Base { public crudState?: "C" | "R" | "U" | "D"; public crudStateWas?: "C" | "R" | "U" | "D"; public dirty?: boolean; public dropped?: boolean; public editing?: boolean; public entityName?: string; public erased?: boolean; public generation?: number; public isEntity?: boolean; public isModel?: boolean; public modified?: object; public phantom?: boolean; public schema?: Ext.data.schema.Schema; public session?: Ext.data.Session; public store?: Ext.data.Store; public static defaultProxy?: string | object; public abort(): void; public beginEdit(): void; public cancelEdit(): void; public clone(session?: Ext.data.Session): Ext.data.Model; public commit(silent?: boolean, modifiedFieldNames?: string[]): void; public copy(newId?: string, session?: Ext.data.Session): Ext.data.Model; public drop(cascade?: boolean): void; public endEdit(silent?: boolean, modifiedFieldNames?: string[]): void; public erase(options?: object): Ext.data.operation.Destroy; public get(fieldName?: string): object; public getAssociatedData(result?: object, options?: boolean | object): object; public getChanges(): object; public getCriticalFields(): Ext.data.field.Field[]; public getData(options?: boolean | object): object; public getFields(): void; public getId(): number | string; public getIdProperty(): void; public getModified(fieldName?: string): object; public getObservableId(): void; public getPrevious(fieldName?: string): object; public getProxy(): void; public getTransientFields(): Ext.data.field.Field[]; public getValidation(refresh?: boolean): Ext.data.Validation; public isLoading(): boolean; public isModified(fieldName?: string): boolean; public isValid(): boolean; public join(owner?: Ext.data.Store): void; public load(options?: object): Ext.data.operation.Read; public onLoad(): void; public reject(silent?: boolean): void; public save(options?: object): Ext.data.operation.Create | Ext.data.operation.Update | Ext.data.operation.Destroy; public set(fieldName?: string | object, newValue?: object, options?: object): string[]; public setId(id?: number | string, options?: object): void; public toUrl(): string; public unjoin(owner?: Ext.data.Store): void; public validate(): Ext.data.ErrorCollection; public static addFields(newFields?: string[] | object[]): void; public static removeFields(removeFields?: boolean | string[]): void; public static replaceFields(newFields?: string[] | object[], removeFields?: boolean | string[]): void; public static setProxy(proxy?: string | object | Ext.data.proxy.Proxy): Ext.data.proxy.Proxy; } } }