import dxForm from 'devextreme/ui/form'; import * as ko from 'knockout'; import { DxElement } from '../../common/common-interfaces'; import { DisposableType } from '../../model/disposable-object'; import { FormAdapterItem, PropertyEditorInfo, SimpleFormAdapterItems } from '../../model/metadata/_base-metadata'; export interface WrapperPropertyInfo extends PropertyEditorInfo { replacementPropertyName?: string; sourceObject?: any; } export interface PropertyDesciptors extends Array { } export interface ObjectPropertiesRules { [key: string]: Array | ((model: any) => boolean); } export interface DynamicEditorInfo { simpleFormAdapterItem?: SimpleFormAdapterItems; formAdapterItem?: FormAdapterItem; editor?: any; editorOptions?: Object; } export interface IDynamicEditorRules { [key: string]: (model: T) => DynamicEditorInfo; } export interface ObjectPropertiesInfo { properties: PropertyDesciptors; visibilityFilterRules?: ObjectPropertiesRules; disabledFilterRules?: ObjectPropertiesRules; dynamicEditorRules?: IDynamicEditorRules; disposableModelSubscriptions?: DisposableType[]; } export interface ObjectPropertiesWrapperOptions extends ObjectPropertiesInfo { model: TModel; modelExtention?: any; summary?: ko.Computed; } export declare class ObjectPropertiesWrapper { private _serializationInfo; private _modelSubscriptions; model: TModel; visibilityFilterRules: ObjectPropertiesRules; disabledFilterRules: ObjectPropertiesRules; summary: ko.Computed; dynamicEditorRules: IDynamicEditorRules; onContentReady: ((e: { component?: dxForm; element?: DxElement; }) => void); onInitialized: ((e: { component?: dxForm; element?: DxElement; }) => void); onFieldDataChanged: (e: { component?: dxForm; element?: DxElement; model?: any; dataField?: string; value?: any; }) => any; constructor(options: ObjectPropertiesWrapperOptions); getPropertiesFromContainer(cur: any, properties: PropertyDesciptors): void; _validationProvider: dxForm; assignValidationPovider(validationProvider: dxForm): void; _assignPropertyCore(propertyObject: any, info: PropertyEditorInfo): void; addProperty(propertyValue: any, info: PropertyEditorInfo): void; getInfo(): PropertyEditorInfo[]; isEmpty(): boolean; isPropertyVisible: (name: string) => boolean; isPropertyDisabled: (name: string) => boolean; getDynamicEditor: (name: string) => DynamicEditorInfo; unbindModel(): void; }