import { Class } from "./Class"; export interface IAutoExpand extends PropertyExt { owner(): PropertyExt; owner(_: PropertyExt): this; valid(): boolean; } export type TagTypes = "Private" | "Shared" | "Basic" | "Intermediate" | "Advanced" | "Theme" | "Serial"; export type PublishTypes = "any" | "number" | "boolean" | "string" | "set" | "array" | "object" | "widget" | "widgetArray" | "propertyArray" | "html-color" | "proxy"; export interface IPublishExt { override?: boolean; disable?: (w: any) => boolean; validate?: (w: any) => boolean; hidden?: (w: any) => boolean; optional?: boolean; tags?: TagTypes[]; autoExpand?: new () => IAutoExpand; noDeserialize?: boolean; render?: boolean; icons?: string[]; editor_input?: (context: any, widget: any, cell: any, param: any) => void; saveButton?: string; saveButtonID?: string; number?: any; reset?: boolean; min?: number; max?: number; step?: number; inputType?: string; internal?: boolean; range?: { min: number; max: number; step: number; }; multiline?: boolean; } export declare class Meta { id: any; type: PublishTypes; origDefaultValue: any; defaultValue: any; description: any; set: any; ext: IPublishExt; checkedAssign: any; constructor(id: any, defaultValue: any, type: any, description: any, set: any, ext?: IPublishExt); } declare class MetaProxy { id: string; type: any; proxy: any; method: any; defaultValue: any; ext: IPublishExt; constructor(id: string, proxy: any, method: any, defaultValue: any, ext?: IPublishExt); } export interface IMonitorHandle { remove(): void; } export declare class PropertyExt extends Class { protected _id: string; private _watchArrIdx; private _watchArr; private _publishedProperties; constructor(); id(): string; id(_: string): this; calcPublishedProperties(includePrivate?: boolean, expandProxies?: boolean): void; resolvePublishedProxy(meta: Meta | MetaProxy): Meta; publishedProperties(includePrivate?: boolean, expandProxies?: boolean): Meta[]; widgetWalker(visitor: (item: PropertyExt) => void): void; propertyWalker(visitor: (context: this, publishItem: Meta) => void, filter?: (context: this, publishItem: Meta) => boolean): void; serialize(): { __class: any; [id: string]: any; }; deserialize(props?: { __class: any; [id: string]: any; }): this; publishedProperty(id: any): any; publishedModified(): boolean; publishReset(privateArr?: any, exceptionsArr?: any): void; static prevClassID: string; publish(id: string, defaultValue: any, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string; text: string; }>) | IPublishExt, ext?: IPublishExt): void; publishWidget(prefix: any, WidgetType: any, id: any): void; publishProxy(id: string, proxy: any, method?: any, defaultValue?: any): void; monitorProperty(propID: string, func: (id: string, newVal: any, oldVal: any) => void): IMonitorHandle; monitor(func: (id: string, newVal: any, oldVal: any, source: PropertyExt) => void): { remove: () => void; }; broadcast(key: any, newVal: any, oldVal: any, source?: any): void; applyTheme(theme: any): void; copyPropsTo(other: PropertyExt, ignore?: string[]): this; private metaHash; propertyHash(properties?: string[], more?: {}): string; hashSum(ignore?: string[], more?: {}): string; on(eventID: any, func: any, stopPropagation?: boolean): this; } export declare function publish(defaultValue: any, type?: PublishTypes, description?: string, set?: string[] | (() => string[] | Array<{ value: string; text: string; }>) | IPublishExt, ext?: IPublishExt): (target: any, key: string) => void; export type publish = { (_: U): T; (): U; }; export declare function publishProxy(proxy: string, method?: string, defaultValue?: any, ext?: { reset?: boolean; }): (target: any, key: string) => void; export {}; //# sourceMappingURL=PropertyExt.d.ts.map