/**
 * Copyright (c) 2020-present, Goldman Sachs
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
import type { DataCubeEditorState } from './DataCubeEditorState.js';
import type { DataCubeQuerySortDirection } from '../../core/DataCubeQueryEngine.js';
export declare class DataCubeEditorColumnsSelectorColumnState {
    readonly name: string;
    readonly type: string;
    constructor(name: string, type: string);
}
export declare abstract class DataCubeEditorColumnsSelectorState<T extends DataCubeEditorColumnsSelectorColumnState> {
    protected readonly _editor: DataCubeEditorState;
    selectedColumns: T[];
    availableColumnsSearchText: string;
    selectedColumnsSearchText: string;
    readonly onChange?: ((selector: DataCubeEditorColumnsSelectorState<T>) => void) | undefined;
    constructor(editor: DataCubeEditorState, options?: {
        onChange?: ((select: DataCubeEditorColumnsSelectorState<T>) => void) | undefined;
    });
    abstract get availableColumns(): T[];
    get availableColumnsForDisplay(): T[];
    get selectedColumnsForDisplay(): T[];
    setSelectedColumns(val: T[]): void;
    setAvailableColumnsSearchText(val: string): void;
    setSelectedColumnsSearchText(val: string): void;
    getColumn(colName: string): T;
    protected abstract cloneColumn(column: T): T;
}
export declare class DataCubeEditorColumnsSelectorSortColumnState extends DataCubeEditorColumnsSelectorColumnState {
    readonly onChange?: (() => void) | undefined;
    direction: DataCubeQuerySortDirection;
    constructor(name: string, type: string, direction: DataCubeQuerySortDirection, onChange?: (() => void) | undefined);
    setDirection(val: DataCubeQuerySortDirection): void;
}
//# sourceMappingURL=DataCubeEditorColumnsSelectorState.d.ts.map