///
import * as ko from 'knockout';
import { DataSourceBrowser } from '../../../../common/_data-source-browser';
import { DashboardItemFormatRule } from '../../../../model';
import { DateTimeGroupInterval } from '../../../../model/enums';
import { CardItemDeltaFormatRule } from '../../../../model/format-rules/card-item-delta-format-rule';
import { CardItemFormatRule } from '../../../../model/format-rules/card-item-format-rule';
import { CellsItemFormatRule } from '../../../../model/format-rules/cells-item-format-rule';
import { ChartItemFormatRule } from '../../../../model/format-rules/chart-item-format-rule';
import { ScatterChartItemFormatRule } from '../../../../model/format-rules/scatter-chart-item-format-rule';
import { DataDashboardItem } from '../../../../model/items/data-dashboard-item';
import { ObjectPropertiesInfo, ObjectPropertiesWrapper } from '../../../form-adapter/_object-properties-wrapper';
import { IComposeTabsArgs, IDetailsPropertiesComposerBase } from '../../../items/properties-composers/_base-properties-composer';
import { AccordionTab } from '../../../properties-controller/_accordion-tab';
import { ConditionTypesFilters } from '../../_condition-type-editor';
export interface KeyText {
uniqueName: string | ko.Observable;
displayName: string | ko.Observable;
}
export interface FormatRulePropertiesComposerOptions {
conditionTypeFilter?: ConditionTypesFilters;
createDataTypeObservable: (model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser) => ConditionEditorDataType;
getCommonFormatRuleProperties: (model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser, ruleAdded?: JQueryCallback) => ObjectPropertiesInfo;
getConditionFormatRuleProperties: (model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser) => ObjectPropertiesInfo;
getMiscFormatRuleProperties: (model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser) => ObjectPropertiesInfo;
getAdditionalTabs?: (model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser) => AccordionTab[];
}
export declare class FormatRulePropertiesComposer implements IDetailsPropertiesComposerBase> {
private _options;
constructor(_options: FormatRulePropertiesComposerOptions);
composeTabs(model: TRule, args: FormatRuleComposeTabsArgs): AccordionTab[];
private _fillCommonFormatRuleCommonWrapper;
private _fillConditionWrapper;
protected _fillMiscWrapper(tab: AccordionTab, model: TRule, dashboardItem: TDashboardItem, dataSourceBrowser: DataSourceBrowser): void;
}
export declare function createDeltaDataTypeObservable(model: CardItemDeltaFormatRule, dashboardItem: DataDashboardItem, dataSourceBrowser: DataSourceBrowser): ConditionEditorDataType;
export interface ConditionEditorDataType {
dataType: ko.Observable;
dateTimeGroupInterval: ko.Observable;
}
export declare function createDataTypeObservable(formatRule: ChartItemFormatRule | ScatterChartItemFormatRule | CellsItemFormatRule | CardItemFormatRule, dashboardItem: DataDashboardItem, dataSourceBrowser: DataSourceBrowser): ConditionEditorDataType;
export declare function addConditionEditor(wrapper: ObjectPropertiesWrapper, dataTypeInfo: ConditionEditorDataType, formatRuleModel: DashboardItemFormatRule, dashboardItem: DataDashboardItem, requestRecalculation: JQueryCallback, specificTypeChanged: () => void, conditionTypeFilter?: ConditionTypesFilters): void;
export declare function getCommonCellsFormatRuleProperties(formatRule: CellsItemFormatRule, getDataItems: () => KeyText[], getApplyToDataItems: () => KeyText[]): ObjectPropertiesInfo;
export interface FormatRuleComposeTabsArgs extends IComposeTabsArgs {
dashboardItem: TDashboardItem;
dataSourceBrowser: DataSourceBrowser;
requestRecalculation: JQueryCallback;
specificTypeChanged: () => void;
}