import { Question, QuestionCheckboxModel, QuestionCompositeModel, QuestionCustomModel, QuestionDropdownModel, QuestionFileModel, QuestionMatrixDropdownModel, QuestionMatrixDynamicModel, QuestionMatrixModel, QuestionPanelDynamicModel, QuestionRadiogroupModel, QuestionSelectBase } from "survey-core";
import { BaseColumn, CompositeQuestionColumn, CustomQuestionColumn, FileColumn, ImageColumn, MatrixDynamicColumn, PanelDynamicColumn } from "./columns";
import { IColumn } from "./config";
import { Table } from "./table";
export interface IColumnsBuilder {
    buildColumns(question: Question, table: Table): Array<IColumn>;
}
export declare class DefaultColumnsBuilder<T extends Question = Question> implements IColumnsBuilder {
    protected createColumn(question: T, table: Table): BaseColumn<T>;
    protected buildColumnsCore(question: T, table: Table): Array<IColumn>;
    buildColumns(question: T, table: Table): Array<IColumn>;
}
export declare class ColumnsBuilderFactory {
    static Instance: ColumnsBuilderFactory;
    private constructor();
    private readonly columnsBuilders;
    private readonly defaultColumnsBuilder;
    registerBuilderColumn(type: string, columnsBuilder: IColumnsBuilder): void;
    getColumnsBuilder(type: string): IColumnsBuilder;
}
export declare class SelectBaseColumnsBuilder<T extends QuestionSelectBase> extends DefaultColumnsBuilder<T> {
    buildColumns(question: T, table: Table): Array<IColumn>;
}
export declare class CheckboxColumnsBuilder extends SelectBaseColumnsBuilder<QuestionCheckboxModel> {
    protected createColumn(question: QuestionCheckboxModel, table: Table): BaseColumn<QuestionCheckboxModel>;
    protected buildColumnsCore(question: QuestionCheckboxModel, table: Table): Array<IColumn>;
}
export declare class SingleChoiceColumnsBuilder extends SelectBaseColumnsBuilder<QuestionDropdownModel | QuestionRadiogroupModel> {
    protected createColumn(question: QuestionDropdownModel | QuestionRadiogroupModel, table: Table): BaseColumn<QuestionDropdownModel | QuestionRadiogroupModel>;
}
export declare class MatrixColumnsBuilder extends DefaultColumnsBuilder<QuestionMatrixModel> {
    protected buildColumnsCore(questionBase: Question, table: Table): IColumn[];
}
export declare class ImageColumnsBuilder extends DefaultColumnsBuilder {
    protected createColumn(question: Question, table: Table): ImageColumn;
}
export declare class FileColumnsBuilder extends DefaultColumnsBuilder<QuestionFileModel> {
    protected createColumn(question: QuestionFileModel, table: Table): FileColumn;
}
export declare class MatrixDropdownColumnBuilder extends DefaultColumnsBuilder {
    buildColumns(questionBase: QuestionMatrixDropdownModel, table: Table): Array<IColumn>;
}
export declare class CustomColumnsBuilder extends DefaultColumnsBuilder<QuestionCustomModel> {
    protected createColumn(question: QuestionCustomModel, table: Table): CustomQuestionColumn;
}
export declare class CompositeColumnsBuilder extends DefaultColumnsBuilder<QuestionCompositeModel> {
    static ShowAsSeparateColumns: boolean;
    protected getDisplayName(question: QuestionCompositeModel, table: Table): string;
    protected buildColumnsCore(question: QuestionCompositeModel, table: Table): Array<IColumn>;
    protected createColumn(question: QuestionCompositeModel, table: Table): CompositeQuestionColumn;
}
export declare class MatrixDynamicColumnsBuilder extends DefaultColumnsBuilder<QuestionMatrixDynamicModel> {
    protected createColumn(question: QuestionMatrixDynamicModel, table: Table): MatrixDynamicColumn;
}
export declare class PanelDynamicColumnsBuilder extends DefaultColumnsBuilder<QuestionPanelDynamicModel> {
    protected createColumn(question: QuestionPanelDynamicModel, table: Table): PanelDynamicColumn;
}
