import { IModifierDescriptor } from "../types/modifiers"; import { IObservableValue } from "../types/observablevalue"; import { IObservableArray } from "../types/observablearray"; import { IObservableObject } from "../types/observableobject"; import { IObservableMapInitialValues, ObservableMap, IMap } from "../types/observablemap"; export interface IObservableFactory { (): IObservableValue; (wrapped: IModifierDescriptor): T; (target: Object, key: string, baseDescriptor?: PropertyDescriptor): any; (value: T[]): IObservableArray; (value: string): IObservableValue; (value: boolean): IObservableValue; (value: number): IObservableValue; (value: Date): IObservableValue; (value: RegExp): IObservableValue; (value: Function): IObservableValue; (value: null | undefined): IObservableValue; (value: null | undefined): IObservableValue; (): IObservableValue; (value: IMap): ObservableMap; (value: T): T & IObservableObject; (value: T): IObservableValue; } export interface IObservableFactories { box(value?: T, name?: string): IObservableValue; shallowBox(value?: T, name?: string): IObservableValue; array(initialValues?: T[], name?: string): IObservableArray; shallowArray(initialValues?: T[], name?: string): IObservableArray; map(initialValues?: IObservableMapInitialValues, name?: string): ObservableMap; shallowMap(initialValues?: IObservableMapInitialValues, name?: string): ObservableMap; object(props: T, name?: string): T & IObservableObject; shallowObject(props: T, name?: string): T & IObservableObject; /** * Decorator that creates an observable that only observes the references, but doesn't try to turn the assigned value into an observable.ts. */ ref(target: Object, property: string, descriptor?: PropertyDescriptor): any; ref(initialValue: T): T; /** * Decorator that creates an observable converts its value (objects, maps or arrays) into a shallow observable structure */ shallow(target: Object, property: string, descriptor?: PropertyDescriptor): any; shallow(initialValues: T[]): IObservableArray; shallow(initialValues: IMap): ObservableMap; shallow(value: T): T; deep(target: Object, property: string, descriptor?: PropertyDescriptor): any; deep(initialValues: T[]): IObservableArray; deep(initialValues: IMap): ObservableMap; deep(initialValue: T): T; struct(target: Object, property: string, descriptor?: PropertyDescriptor): any; struct(initialValues: T[]): IObservableArray; struct(initialValues: IMap): ObservableMap; struct(initialValue: T): T; } export declare const observable: IObservableFactory & IObservableFactories & { deep: { struct(initialValue?: T): T; }; ref: { struct(initialValue?: T): T; }; };