///
import { Disposable } from '@devexpress/analytics-core/analytics-utils';
import * as ko from 'knockout';
import { DxPromise } from '@devexpress/analytics-core/analytics-internal';
import { IParameterValueViewModel } from '../data/_parameters';
import { Dimension } from '../model/data-item/dimension';
import { DataField, IDataField } from '../model/data-sources/_data-field';
import { CalculatedField } from '../model/data-sources/calculated-field';
import { DataSource, IDataSourceConsumer } from '../model/data-sources/data-source';
import { DashboardItem } from '../model/items/dashboard-item';
import { DynamicListLookUpSettings } from '../model/parameters/dynamic-list-lookup-settings';
import { Parameter } from '../model/parameters/parameter';
import { IDataServiceClient } from './_service-client';
export interface IFilterItem {
Level: number;
Text: string;
Value: any;
IsBlank: boolean;
IsChecked: boolean;
IsVisible: boolean;
}
export interface IFieldConstraint {
(field: IDataField): boolean;
}
export interface IDataFieldsProvider {
findDataField(dataSourceName: string, dataMemberName: string, fullFieldName: string, hasGroupSeparator?: boolean): JQueryPromise;
getDataFieldsArray: (dataSourceName: string, dataMember: string, fieldPath: string, filterDelegate: (field: IDataField) => boolean) => JQueryPromise>;
}
export interface IDataItemValuesProvider {
getDimensionUniqueValues(dataSourceName: string, dataMember: string, dimension: Dimension): JQueryPromise>;
}
export declare function patchCalcFieldPath(dataSource: DataSource, calculatedField: CalculatedField, fieldName: string): string;
export declare function trimLeadingPathElement(path: string, element: string): string;
export declare function splitFullFieldName(fullFieldName: string): {
path: string;
name: string;
};
export declare function isStartedWith(path: any, value: any): boolean;
export declare function findDataMember(dataSource: DataSource, path: string): {
dataMember: string;
fieldPath: string;
};
export declare function getFirstDataMember(dataSource: DataSource): string;
export interface IDataSourceProvider {
findDataSource: (dsName: string) => DataSource;
}
export declare class DataSourceBrowser extends Disposable implements IDataFieldsProvider, IDataItemValuesProvider, IDataSourceProvider {
_dataSources: ko.ObservableArray;
private isDesignMode;
parameters?: ko.ObservableArray;
_serviceClient?: ko.Observable;
isLoading: ko.Observable;
private _dynamicParametersValueCache;
private _dimensionValuesCache;
private _fieldsCache;
private _dataSourcesSubscription;
_cacheNestedFields(path: string, field: DataField): void;
private _findInFieldsCache;
constructor(_dataSources: ko.ObservableArray, isDesignMode: ko.Observable, parameters?: ko.ObservableArray, _serviceClient?: ko.Observable, isLoading?: ko.Observable);
getDimensionFilterItems(dashboardItem: DashboardItem, dimensionDataMember: string, previousState: Array, branch: Array): JQueryPromise>;
getDimensionFilterString(dashboardItem: DashboardItem, dimensionDataMember: string, previousState: Array): JQueryPromise;
getDataFieldsArray(dataSourceName: string, dataMember: string, fieldPath: string, filterDelegate?: (field: IDataField) => boolean): JQueryPromise>;
isFolder(path: string): boolean;
findPathToFieldInTree(dataSourceName: string, dataMemberName: string, fieldName: string, constraint: IFieldConstraint): JQueryPromise;
findDataField(dataSourceName: string, dataMemberName: string, fullFieldName: string, separateGroupFields?: boolean): JQueryPromise;
fuzzyFindFields(startPath: string, searchFor: string): JQueryPromise>;
findDataSource(dsName: string): DataSource;
dataMembersSupported(dsc: IDataSourceConsumer): boolean;
getDataFields(dsc: IDataSourceConsumer): ko.ObservableArray;
clearFieldsCache(path: string): void;
clearDynamicParametersValueCache(): void;
clearDimensionValuesCache(): void;
removeDataSource: (dataSource: DataSource) => void;
initDataSource(dataSource: DataSource): void;
dynamicLookUpValuesLoaded: (dynamicListLookUpSettings: DynamicListLookUpSettings) => void;
getParameterValues(parameterType: string, dynamicListLookUpSettings: DynamicListLookUpSettings, forceRequest?: boolean, tempParameterValues?: {
[key: string]: any;
}, changedParameters?: string[]): DxPromise;
getDimensionUniqueValues(dataSourceName: string, dataMember: string, dimension: Dimension): JQueryPromise>;
splitFullPath(fullPath?: string): {
dataSource: string;
dataMember: string;
fieldPath: string;
};
private _subscribeDataSources;
private _unsubscribeDataSources;
dispose(): void;
}
export declare function isNonCollectionDataField(dataField: IDataField): boolean;
export declare function getDataFields(fieldsNames: Array, dataSource: string, dataMember: string, dataFieldProvider: IDataFieldsProvider): JQueryPromise>;