import AbstractDataset from './abstract';
export interface InterfaceColumnDataset<T> {
    getName: () => string;
    flatColumns: () => T[];
    setReference: () => void;
    getFullname(withBracketsForThisColumn?: boolean, withBrackets?: boolean): string;
}
export default abstract class AbstractColumnsDataset<P, T extends InterfaceColumnDataset<T>> extends AbstractDataset<P> {
    protected abstract columns: T[];
    getColumns(): T[];
    getColumn(name: string, withSubColumns?: boolean): T | undefined;
    addColumn(column: T): T;
    flatColumns(): T[];
    removeColumn(column: T): void;
    sortColumns(): void;
}
