import { QuestionMatrixModel, MatrixRowModel, ItemValue } from 'survey-core';
import { SurveyPDF } from '../survey';
import { DocController, IPoint } from '../doc_controller';
import { FlatQuestion } from './flat_question';
import { IPdfBrick } from '../pdf_render/pdf_brick';
import { RadioItemBrick } from '../pdf_render/pdf_radioitem';
import { CheckItemBrick } from '../pdf_render/pdf_checkitem';
import { ContainerBrick } from '../pdf_render/pdf_container';
import { IQuestionMatrixStyle, ISelectionInputStyle } from '../style/types';
export declare class FlatMatrix extends FlatQuestion<QuestionMatrixModel, IQuestionMatrixStyle> {
    protected question: QuestionMatrixModel;
    generateFlatsContent(point: IPoint): Promise<IPdfBrick[]>;
}
export declare abstract class FlatMatrixContent {
    protected controller: DocController;
    protected survey: SurveyPDF;
    protected question: QuestionMatrixModel;
    protected style: IQuestionMatrixStyle;
    constructor(controller: DocController, survey: SurveyPDF, question: QuestionMatrixModel, style: IQuestionMatrixStyle);
    protected generateFlatCell(point: IPoint, contentCallback: (point: IPoint, bricks: Array<IPdfBrick>) => Promise<void>): Promise<ContainerBrick>;
    protected generateTextComposite(point: IPoint, options: {
        item: ItemValue;
        row: MatrixRowModel;
        rowIndex: number;
        itemIndex: number;
    }): Promise<IPdfBrick>;
    private radioGroupWraps;
    private getRadioGroupWrap;
    getInputStyle(isReadOnly: boolean, isChecked: boolean, isMultiSelect: boolean): ISelectionInputStyle;
    protected generateFlatItem(point: IPoint, options: {
        item: ItemValue;
        row: MatrixRowModel;
        rowIndex: number;
        itemIndex: number;
    }): CheckItemBrick | RadioItemBrick;
    protected getGapBetweenRows(): number;
    generateFlats(point: IPoint): Promise<IPdfBrick[]>;
    protected abstract generateFlatsRow(point: IPoint, row: MatrixRowModel, rowIndex: number): Promise<Array<IPdfBrick>>;
}
export declare class FlatMatrixContentVertical extends FlatMatrixContent {
    protected generateItemComposite(point: IPoint, options: {
        item: ItemValue;
        row: MatrixRowModel;
        rowIndex: number;
        itemIndex: number;
    }): Promise<IPdfBrick>;
    protected getGapBetweenRows(): number;
    protected generateFlatsRow(point: IPoint, row: MatrixRowModel, rowIndex: number): Promise<Array<IPdfBrick>>;
}
export declare class FlatMatrixContentHorizontal extends FlatMatrixContent {
    private columnWidth;
    private rowTitleWidth;
    private setup;
    protected generateFlatsRow(point: IPoint, row: MatrixRowModel, rowIndex: number): Promise<Array<IPdfBrick>>;
    protected generateFlatsHeader(point: IPoint): Promise<IPdfBrick[]>;
    generateFlats(point: IPoint): Promise<IPdfBrick[]>;
}
