import { QuestionMatrixBaseModel } from "./martixBase";
import { Question, IConditionObject, IQuestionPlainData, QuestionItemValueGetterContext } from "./question";
import { HashTable } from "./helpers";
import { Base } from "./base";
import { IElement, IQuestion, ISurveyData, ISurvey, ISurveyImpl, ITextProcessor, IProgressInfo, IPanel, IPlainDataOptions } from "./base-interfaces";
import { ItemValue } from "./itemvalue";
import { ILocalizableOwner, LocalizableString } from "./localizablestring";
import { PanelModel } from "./panel";
import { SurveyError } from "./survey-error";
import { IMatrixColumnOwner, MatrixDropdownColumn } from "./question_matrixdropdowncolumn";
import { QuestionMatrixDropdownRenderedCell, QuestionMatrixDropdownRenderedRow, QuestionMatrixDropdownRenderedTable } from "./question_matrixdropdownrendered";
import { IObjectValueContext, IValueGetterContext, IValueGetterContextGetValueParams, IValueGetterInfo } from "./conditionProcessValue";
import { ValidationContext } from "./question";
export interface IMatrixDropdownData extends IObjectValueContext {
    value: any;
    getFilteredData(): any;
    getSharedQuestionFromArray(name: string, rowIndex: number): Question;
    onRowChanged(row: MatrixDropdownRowModelBase, columnName: string, newRowValue: any, isDeletingValue: boolean): void;
    onRowChanging(row: MatrixDropdownRowModelBase, columnName: string, rowValue: any): any;
    isValidateOnValueChanging: boolean;
    getRowIndex(row: MatrixDropdownRowModelBase): number;
    getRowValue(rowIndex: number): any;
    checkIfValueInRowDuplicated(checkedRow: MatrixDropdownRowModelBase, cellQuestion: Question): boolean;
    hasDetailPanel(row: MatrixDropdownRowModelBase): boolean;
    getIsDetailPanelShowing(row: MatrixDropdownRowModelBase): boolean;
    setIsDetailPanelShowing(row: MatrixDropdownRowModelBase, val: boolean): void;
    createRowDetailPanel(row: MatrixDropdownRowModelBase): PanelModel;
    validateCell(row: MatrixDropdownRowModelBase, columnName: string, rowValue: any): SurveyError;
    columns: Array<MatrixDropdownColumn>;
    createQuestion(row: MatrixDropdownRowModelBase, column: MatrixDropdownColumn): Question;
    choices: Array<ItemValue>;
    getLocale(): string;
    getMarkdownHtml(text: string, name: string, item?: any): string;
    getRenderer(name: string): string;
    getRendererContext(locStr: LocalizableString): any;
    getProcessedText(text: string, context?: any): string;
    getParentTextProcessor(): ITextProcessor;
    getSharedQuestionByName(columnName: string, row: MatrixDropdownRowModelBase): Question;
    runTriggersInRow(row: MatrixDropdownRowModelBase, runName: string, newValue: any): void;
    onTotalValueChanged(): any;
    getSurvey(): ISurvey;
    isMatrixReadOnly(): boolean;
    onRowVisibilityChanged(row: MatrixDropdownRowModelBase): void;
}
export declare class MatrixDropdownCell {
    column: MatrixDropdownColumn;
    row: MatrixDropdownRowModelBase;
    data: IMatrixDropdownData;
    private questionValue;
    constructor(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, data: IMatrixDropdownData);
    private updateCellQuestionTitleDueToAccessebility;
    locStrsChanged(): void;
    protected createQuestion(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, data: IMatrixDropdownData): Question;
    get question(): Question;
    get value(): any;
    set value(value: any);
    getQuestionWrapperClassName(className: string): string;
    runCondition(properties: HashTable<any>): void;
}
export declare class MatrixDropdownTotalCell extends MatrixDropdownCell {
    column: MatrixDropdownColumn;
    row: MatrixDropdownRowModelBase;
    data: IMatrixDropdownData;
    constructor(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, data: IMatrixDropdownData);
    protected createQuestion(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, data: IMatrixDropdownData): Question;
    locStrsChanged(): void;
    updateCellQuestion(): void;
    getQuestionWrapperClassName(className: string): string;
    getTotalExpression(): string;
}
export declare class MatrixRowGetterContext extends QuestionItemValueGetterContext {
    private row;
    constructor(row: MatrixDropdownRowModelBase);
    protected getIndex(): number;
    protected getQuestionData(): Question;
    private get visibleIndex();
    getValue(params: IValueGetterContextGetValueParams): IValueGetterInfo;
    getRootObj(): IObjectValueContext;
    protected updateValueByItem(name: string, res: IValueGetterInfo): void;
    private getRowValue;
}
export declare class MatrixDropdownRowModelBase implements ISurveyData, ISurveyImpl, ILocalizableOwner, IObjectValueContext {
    data: IMatrixDropdownData;
    private static idCounter;
    private static getId;
    protected isSettingValue: boolean;
    private idValue;
    private textPreProcessor;
    private detailPanelValue;
    private visibleValue;
    cells: Array<MatrixDropdownCell>;
    showHideDetailPanelClick: any;
    onDetailPanelShowingChanged: () => void;
    visibleIndex: number;
    constructor(data: IMatrixDropdownData, value: any);
    get id(): string;
    get rowName(): any;
    get rowTitle(): any;
    get dataName(): string;
    get text(): any;
    getValueGetterContext(): IValueGetterContext;
    isRowEnabled(): boolean;
    protected isRowHasEnabledCondition(): boolean;
    get isVisible(): boolean;
    get visible(): boolean;
    set visible(val: boolean);
    protected isItemVisible(): boolean;
    get value(): any;
    set value(value: any);
    get filteredValue(): any;
    private getValueCore;
    get locText(): LocalizableString;
    getAccessbilityText(): string;
    get hasPanel(): boolean;
    get detailPanel(): PanelModel;
    get detailPanelId(): string;
    get isDetailPanelShowing(): boolean;
    private setIsDetailPanelShowing;
    private showHideDetailPanel;
    private isCreatingDetailPanel;
    showDetailPanel(): void;
    hideDetailPanel(destroyPanel?: boolean): void;
    private ensureDetailPanel;
    getAllValues(): any;
    getFilteredProperties(): any;
    private getDataRowValue;
    runCondition(properties: HashTable<any>, rowsVisibleIf?: string, alwaysVisible?: boolean): void;
    protected runRowsEnableCondition(properties: HashTable<any>): void;
    protected getRowsVisibleIfExpression(rowsVisibleIf: string): Array<string>;
    private getRowVisibleIfBaseOnExpression;
    updateElementVisibility(): void;
    getNamesWithDefaultValues(): Array<string>;
    clearValue(keepComment?: boolean, fromUI?: boolean): void;
    onAnyValueChanged(name: string, questionName: string): void;
    getDataValueCore(valuesHash: any, key: string): any;
    getValue(name: string): any;
    setValue(name: string, newColumnValue: any): void;
    getVariable(name: string): any;
    setVariable(name: string, newValue: any): void;
    getComment(name: string): string;
    setComment(name: string, newValue: string, locNotification: any): void;
    findQuestionByName(name: string): IQuestion;
    getEditingSurveyElement(): Base;
    private setValueCore;
    private updateQuestionsValue;
    private updateSharedQuestionsValue;
    runTriggers(name: string, value: any, keys?: any): void;
    private validateCellQuestion;
    get isEmpty(): boolean;
    hasValueAnyQuestion(visibleOnly?: boolean): boolean;
    getQuestionByColumn(column: MatrixDropdownColumn): Question;
    getCellByColumn(column: MatrixDropdownColumn): MatrixDropdownCell;
    private getCellByColumnName;
    getQuestionByColumnName(columnName: string): Question;
    get questions(): Array<Question>;
    get visibleQuestions(): Array<Question>;
    getQuestionByName(name: string): Question;
    getQuestionsByName(name: string): Array<Question>;
    getQuestionsByValueName(name: string, caseInsensitive?: boolean): Array<Question>;
    protected getSharedQuestionByName(columnName: string): Question;
    clearIncorrectValues(val: any): void;
    getLocale(): string;
    getMarkdownHtml(text: string, name: string, item?: any): string;
    getRenderer(name: string): string;
    getRendererContext(locStr: LocalizableString): any;
    getProcessedText(text: string): string;
    locStrsChanged(): void;
    updateCellQuestionOnColumnChanged(column: MatrixDropdownColumn, name: string, newValue: any): void;
    updateCellQuestionOnColumnItemValueChanged(column: MatrixDropdownColumn, propertyName: string, obj: ItemValue, name: string, newValue: any, oldValue: any): void;
    onQuestionReadOnlyChanged(): void;
    validate(context: ValidationContext): boolean;
    protected updateCellOnColumnChanged(cell: MatrixDropdownCell, name: string, newValue: any): void;
    updateCellOnColumnItemValueChanged(cell: MatrixDropdownCell, propertyName: string, obj: ItemValue, name: string, newValue: any, oldValue: any): void;
    protected buildCells(value: any): void;
    protected isTwoValueEquals(val1: any, val2: any): boolean;
    private getCellValue;
    protected createCell(column: MatrixDropdownColumn): MatrixDropdownCell;
    getSurveyData(): ISurveyData;
    getSurvey(): ISurvey;
    getTextProcessor(): ITextProcessor;
    get rowIndex(): number;
    protected getRowIndex(): number;
    get editingObj(): Base;
    private onEditingObjPropertyChanged;
    private editingObjValue;
    dispose(): void;
    private subscribeToChanges;
    private updateOnSetValue;
}
export declare class MatrixDropdownTotalRowModel extends MatrixDropdownRowModelBase {
    constructor(data: IMatrixDropdownData);
    protected createCell(column: MatrixDropdownColumn): MatrixDropdownCell;
    setValue(name: string, newValue: any): void;
    runCondition(properties: HashTable<any>, rowsVisibleIf?: string): void;
    protected updateCellOnColumnChanged(cell: MatrixDropdownCell, name: string, newValue: any): void;
}
export declare class MatrixSingleInputLocOwner implements ILocalizableOwner {
    private matrix;
    private row?;
    constructor(matrix: QuestionMatrixDropdownModelBase, row?: MatrixDropdownRowModelBase);
    getLocale(): string;
    getMarkdownHtml(text: string, name: string, item?: any): string;
    getProcessedText(text: string): string;
    getRenderer(name: string): string;
    getRendererContext(locStr: LocalizableString): any;
}
/**
 * A base class for the [`QuestionMatrixDropdownModel`](https://surveyjs.io/form-library/documentation/questionmatrixdropdownmodel) and [`QuestionMatrixDynamicModel`](https://surveyjs.io/form-library/documentation/questionmatrixdynamicmodel) classes.
 */
export declare class QuestionMatrixDropdownModelBase extends QuestionMatrixBaseModel<MatrixDropdownRowModelBase, MatrixDropdownColumn> implements IMatrixDropdownData, IMatrixColumnOwner {
    static get defaultCellType(): string;
    static set defaultCellType(val: string);
    static addDefaultColumns(matrix: QuestionMatrixDropdownModelBase): void;
    private detailPanelValue;
    private useCaseSensitiveComparisonValue;
    protected isRowChanging: boolean;
    columnsChangedCallback: () => void;
    onRenderedTableResetCallback: () => void;
    onCellCreatedCallback: (options: any) => void;
    onCellValueChangedCallback: (options: any) => void;
    onHasDetailPanelCallback: (row: MatrixDropdownRowModelBase) => boolean;
    onCreateDetailPanelCallback: (row: MatrixDropdownRowModelBase, panel: PanelModel) => void;
    onCreateDetailPanelRenderedRowCallback: (renderedRow: QuestionMatrixDropdownRenderedRow) => void;
    onAddColumn: (column: MatrixDropdownColumn) => void;
    onRemoveColumn: (column: MatrixDropdownColumn) => void;
    cellValueChangingCallback: (row: any, columnName: string, value: any, oldValue: any) => any;
    protected createColumnValues(): any[];
    constructor(name: string);
    protected onPropertyValueChanged(name: string, oldValue: any, newValue: any): void;
    getType(): string;
    dispose(): void;
    get isContainer(): boolean;
    get isRowsDynamic(): boolean;
    private isUpdating;
    protected get isUpdateLocked(): boolean;
    beginUpdate(): void;
    endUpdate(): void;
    protected updateColumnsAndRows(): void;
    itemValuePropertyChanged(item: ItemValue, name: string, oldValue: any, newValue: any): void;
    /**
     * Specifies whether to display [`columns`](#columns) as rows and [`rows`](#rows) as columns.
     *
     * Default value: `false`
     *
     * [Multi-Select Matrix Demo](https://surveyjs.io/form-library/examples/multi-select-matrix-question/ (linkStyle))
     *
     * [Dynamic Matrix Demo](https://surveyjs.io/form-library/examples/transpose-dynamic-rows-to-columns-in-matrix/ (linkStyle))
     */
    get transposeData(): boolean;
    set transposeData(val: boolean);
    /**
     * @deprecated Use the [`transposeData`](#transposeData) property instead.
     */
    get columnLayout(): string;
    set columnLayout(val: string);
    get columnsLocation(): string;
    set columnsLocation(val: string);
    /**
     * Specifies the error message position for questions within detail sections.
     *
     * Possible values:
     *
     * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
     * - `"top"` - Displays error messages above questions.
     * - `"bottom"` - Displays error messages below questions.
     * @see cellErrorLocation
     */
    get detailErrorLocation(): string;
    set detailErrorLocation(value: string);
    /**
     * Specifies the error message position relative to matrix cells.
     *
     * Possible values:
     *
     * - `"default"` (default) - Inherits the setting from the [`errorLocation`](#errorLocation) property.
     * - `"top"` - Displays error messages above matrix cells.
     * - `"bottom"` - Displays error messages below matrix cells.
     * @see detailErrorLocation
     */
    get cellErrorLocation(): string;
    set cellErrorLocation(value: string);
    getChildErrorLocation(child: Question): string;
    /**
     * Returns `true` if [`columns`](#columns) are placed in the horizontal direction and [`rows`](#columns) in the vertical direction.
     *
     * To specify the layout, use the [`transposeData`](#transposeData) property. If you set it to `true`, the survey applies it only when the screen has enough space. Otherwise, the survey falls back to the original layout, but the `transposeData` property remains set to `true`. Unlike `transposeData`, the `isColumnLayoutHorizontal` property always indicates the current layout.
     * @see transposeData
     */
    get isColumnLayoutHorizontal(): boolean;
    /**
     * Enables case-sensitive comparison in columns with the `isUnique` property set to `true`.
     *
     * When this property is `true`, `"ABC"` and `"abc"` are considered different values.
     *
     * Default value: `false`
     * @see keyDuplicationError
     */
    get useCaseSensitiveComparison(): boolean;
    set useCaseSensitiveComparison(val: boolean);
    /**
     * @deprecated Use the [`useCaseSensitiveComparison`](#useCaseSensitiveComparison) property instead.
     */
    get isUniqueCaseSensitive(): boolean;
    set isUniqueCaseSensitive(val: boolean);
    /**
     * Specifies the location of detail sections.
     *
     * Possible values:
     *
     * - `"underRow"` - Displays detail sections under their respective rows. Users can expand any number of detail sections.
     * - `"underRowSingle"` - Displays detail sections under their respective rows, but only one detail section can be expanded at a time.
     * - `"none"` (default) - Hides detail sections.
     *
     * Use the [`detailElements`](#detailElements) property to specify content of detail sections.
     *
     * [View Demo](https://surveyjs.io/form-library/examples/add-expandable-details-section-under-matrix-rows/ (linkStyle))
     * @see detailPanel
     */
    get detailPanelMode(): string;
    set detailPanelMode(val: string);
    /**
     * Contains a [`PanelModel`](https://surveyjs.io/form-library/documentation/panelmodel) instance that represents a detail section template.
     * @see detailElements
     * @see detailPanelMode
     */
    get detailPanel(): PanelModel;
    getPanels(): Array<IPanel>;
    getPanelInDesignMode(): PanelModel;
    /**
     * An array of survey elements (questions and panels) to be displayed in detail sections.
     *
     * Detail sections are expandable panels displayed under each matrix row. You can use them to display questions that do not fit into the row.
     *
     * Set the [`detailPanelMode`](#detailPanelMode) property to `"underRow"` or `"underRowSingle"` to display detail sections.
     *
     * [View Demo](https://surveyjs.io/form-library/examples/add-expandable-details-section-under-matrix-rows/ (linkStyle))
     * @see detailPanel
     */
    get detailElements(): Array<IElement>;
    protected createNewDetailPanel(): PanelModel;
    get hasRowText(): boolean;
    getFooterText(): LocalizableString;
    get canAddRow(): boolean;
    get canRemoveRows(): boolean;
    canRemoveRow(row: MatrixDropdownRowModelBase): boolean;
    onPointerDown(pointerDownEvent: PointerEvent, row: MatrixDropdownRowModelBase): void;
    protected onRowsChanged(): void;
    private updateRowsVisibleIndexes;
    private lockResetRenderedTable;
    protected onStartRowAddingRemoving(): void;
    protected onEndRowAdding(): void;
    protected onEndRowRemoving(row: MatrixDropdownRowModelBase): void;
    protected clearRowsAndResetRenderedTable(): void;
    resetRenderedTable(columnVisibilityChanged?: boolean): void;
    protected clearGeneratedRows(): void;
    protected get isRendredTableCreated(): boolean;
    get renderedTable(): QuestionMatrixDropdownRenderedTable;
    protected createRenderedTable(): QuestionMatrixDropdownRenderedTable;
    protected getRowByQuestion(question: Question): MatrixDropdownRowModelBase;
    protected onMatrixRowCreated(row: MatrixDropdownRowModelBase): void;
    /**
     * Specifies the type of matrix cells. You can override this property for individual columns.
     *
     * Possible values:
     *
     * - [`"dropdown"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-menu-model)
     * - [`"checkbox"`](https://surveyjs.io/form-library/documentation/api-reference/checkbox-question-model)
     * - [`"radiogroup"`](https://surveyjs.io/form-library/documentation/api-reference/radio-button-question-model)
     * - [`"tagbox"`](https://surveyjs.io/form-library/documentation/api-reference/dropdown-tag-box-model)
     * - [`"text"`](https://surveyjs.io/form-library/documentation/api-reference/text-entry-question-model)
     * - [`"comment"`](https://surveyjs.io/form-library/documentation/api-reference/comment-field-model)
     * - [`"boolean"`](https://surveyjs.io/form-library/documentation/api-reference/boolean-question-model)
     * - [`"expression"`](https://surveyjs.io/form-library/documentation/api-reference/expression-model)
     * - [`"rating"`](https://surveyjs.io/form-library/documentation/api-reference/rating-scale-question-model)
     * - [`"slider"`](https://surveyjs.io/form-library/documentation/api-reference/questionslidermodel)
     *
     * Default value: `"dropdown"` (inherited from [`settings.matrix.defaultCellType`](https://surveyjs.io/form-library/documentation/settings#matrixDefaultCellType))
     *
     * [Multi-Select Matrix Demo](https://surveyjs.io/form-library/examples/multi-select-matrix-question/ (linkStyle))
     *
     * [Dynamic Matrix Demo](https://surveyjs.io/form-library/examples/dynamic-matrix-add-new-rows/ (linkStyle))
     */
    get cellType(): string;
    set cellType(val: string);
    isSelectCellType(): boolean;
    private updateColumnsCellType;
    private updateColumnsIndexes;
    /**
     * Specifies the number of columns in Radiogroup and Checkbox cells.
     *
     * Default value: 0 (the number of columns is selected automatically based on the available column width)
     * @see cellType
     */
    get columnColCount(): number;
    set columnColCount(value: number);
    get horizontalScroll(): boolean;
    set horizontalScroll(val: boolean);
    get allowAdaptiveActions(): boolean;
    set allowAdaptiveActions(val: boolean);
    hasChoices(): boolean;
    onColumnPropertyChanged(column: MatrixDropdownColumn, name: string, newValue: any): void;
    onColumnNestedPropertyChanged(column: MatrixDropdownColumn, name: string, nestedName: string, newValue: any): void;
    onColumnItemValuePropertyChanged(column: MatrixDropdownColumn, propertyName: string, obj: ItemValue, name: string, newValue: any, oldValue: any): void;
    onShowInMultipleColumnsChanged(column: MatrixDropdownColumn): void;
    onColumnVisibilityChanged(column: MatrixDropdownColumn): void;
    onColumnCellTypeChanged(column: MatrixDropdownColumn): void;
    private updateDefaultRowValue;
    private resetTableAndRows;
    getRowTitleWidth(): string;
    get hasFooter(): boolean;
    getAddRowLocation(): string;
    getShowColumnsIfEmpty(): boolean;
    protected updateShowTableAndAddRow(): void;
    protected updateHasFooter(): void;
    get hasTotal(): boolean;
    getCellType(): string;
    getCustomCellType(column: MatrixDropdownColumn, row: MatrixDropdownRowModelBase, cellType: string): string;
    getConditionJson(operator?: string, path?: string): any;
    clearIncorrectValues(): void;
    clearErrors(): void;
    localeChanged(): void;
    private runFuncForCellQuestions;
    protected runItemsCondition(properties: HashTable<any>): void;
    runTriggers(name: string, value: any, keys?: any): void;
    updateElementVisibility(): void;
    protected shouldRunColumnExpression(): boolean;
    protected runCellsCondition(properties: HashTable<any>): boolean;
    protected runConditionsForColumns(properties: HashTable<any>): boolean;
    private checkColumnsVisibility;
    private checkColumnsRenderedRequired;
    private isColumnVisibilityChanged;
    private updateNewVisibleChoices;
    protected runTotalsCondition(properties: HashTable<any>): void;
    IsMultiplyColumn(column: MatrixDropdownColumn): boolean;
    locStrsChanged(): void;
    /**
     * Returns a matrix column with a given `name` or `null` if a column with this is not found.
     * @param columnName A column name.
     */
    getColumnByName(columnName: string): MatrixDropdownColumn;
    getColumnName(columnName: string): MatrixDropdownColumn;
    getColumnWidth(column: MatrixDropdownColumn): string;
    /**
     * Gets or sets choice items for Dropdown, Checkbox, and Radiogroup matrix cells. You can override this property for individual columns.
     *
     * This property accepts an array of objects with the following structure:
     *
     * ```js
     * {
     *   "value": any, // A value to be saved in survey results
     *   "text": string, // A display text. This property supports Markdown. When `text` is undefined, `value` is used.
     *   "customProperty": any // Any property that you find useful.
     * }
     * ```
     *
     * To enable Markdown support for the `text` property, implement Markdown-to-HTML conversion in the [onTextMarkdown](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#onTextMarkdown) event handler. For an example, refer to the following demo: [Convert Markdown to HTML with markdown-it](https://surveyjs.io/form-library/examples/edit-survey-questions-markdown/).
     *
     * If you add custom properties, refer to the following help topic to learn how to serialize them into JSON: [Add Custom Properties to Property Grid](https://surveyjs.io/survey-creator/documentation/property-grid#add-custom-properties-to-the-property-grid).
     *
     * If you need to specify only the `value` property, you can set the `choices` property to an array of primitive values, for example, `[ "item1", "item2", "item3" ]`. These values are both saved in survey results and used as display text.
     * @see cellType
     */
    get choices(): Array<any>;
    set choices(val: Array<any>);
    /**
     * A placeholder for Dropdown matrix cells.
     * @see cellType
     */
    get placeholder(): string;
    set placeholder(val: string);
    get locPlaceholder(): LocalizableString;
    get optionsCaption(): string;
    set optionsCaption(val: string);
    /**
     * An error message displayed when users enter a duplicate value into a column that accepts only unique values (`isUnique` is set to `true` or `keyName` is specified).
     *
     * A default value for this property is taken from a [localization dictionary](https://github.com/surveyjs/survey-library/tree/01bd8abd0c574719956d4d579d48c8010cd389d4/packages/survey-core/src/localization). Refer to the following help topic for more information: [Localization & Globalization](https://surveyjs.io/form-library/documentation/localization).
     * @see useCaseSensitiveComparison
     */
    get keyDuplicationError(): string;
    set keyDuplicationError(val: string);
    get locKeyDuplicationError(): LocalizableString;
    /**
     * A title template that applies when the survey is in [input-per-page mode](https://surveyjs.io/form-library/documentation/api-reference/survey-data-model#questionsOnPageMode).
     *
     * Default value: `"Row {rowIndex}"` for Dynamic Matrix | `"{rowTitle}"` for Multi-Select Matrix
     *
     * The template can contain the following placeholders:
     *
     * - `{rowIndex}` - A row index within the collection of all rows. Starts with 1.
     * - `{visibleRowIndex}` - A row index within the collection of visible rows. Starts with 1.
     * - `{rowName}` - A row name (the `value` property within objects in the [`rows`](#rows) array). Use this placeholder if you need to distinguish between matrix rows.
     * - `{rowTitle}` - A row title (the `text` property within objects in the `rows` array).
     * - `{row.columnname}` - The value of a cell in the same row.
     *
     * [View Demo](https://surveyjs.io/form-library/examples/loop-and-merge/ (linkStyle))
     */
    get singleInputTitleTemplate(): string;
    set singleInputTitleTemplate(val: string);
    get locSingleInputTitleTemplate(): LocalizableString;
    protected getSingleQuestionLocTitleCore(): LocalizableString;
    protected getSingleInputTitleTemplate(): string;
    processSingleInputTitle(text: string, row: MatrixDropdownRowModelBase): string;
    protected singleInputMoveToFirstCore(): void;
    protected singleInputEditRow(row: MatrixDropdownRowModelBase): void;
    get storeOthersAsComment(): boolean;
    addColumn(name: string, title?: string): MatrixDropdownColumn;
    private visibleRowsArray;
    protected clearVisibleRows(): void;
    protected isColumnVisible(column: any): boolean;
    private isGenereatingRows;
    protected getVisibleRows(): Array<MatrixDropdownRowModelBase>;
    get allRows(): Array<MatrixDropdownRowModelBase>;
    private generateVisibleRowsIfNeeded;
    private runTriggersOnNewRows;
    private getVisibleFromGenerated;
    private updateValueOnRowsGeneration;
    get totalValue(): any;
    protected getVisibleTotalRow(): MatrixDropdownRowModelBase;
    get visibleTotalRow(): MatrixDropdownRowModelBase;
    onSurveyLoad(): void;
    /**
     * Returns an object with row values. If a row has no answers, this method returns an empty object.
     * @param rowIndex A zero-based row index.
     * @see setRowValue
     */
    getRowValue(rowIndex: number): any;
    checkIfValueInRowDuplicated(checkedRow: MatrixDropdownRowModelBase, cellQuestion: Question): boolean;
    /**
     * Assigns values to a row.
     * @param rowIndex A zero-based row index.
     * @param rowValue An object with the following structure: `{ "column_name": columnValue, ... }`
     * @see getRowValue
     */
    setRowValue(rowIndex: number, rowValue: any): any;
    protected generateRows(): Array<MatrixDropdownRowModelBase>;
    protected generateTotalRow(): MatrixDropdownRowModelBase;
    protected createNewValue(nullOnEmpty?: boolean): any;
    protected getRowValueCore(row: MatrixDropdownRowModelBase, questionValue: any, create?: boolean): any;
    protected getRowObj(row: MatrixDropdownRowModelBase): any;
    protected getRowDisplayValue(keysAsText: boolean, row: MatrixDropdownRowModelBase, rowValue: any): any;
    getPlainData(options?: IPlainDataOptions): IQuestionPlainData;
    addConditionObjectsByContext(objects: Array<IConditionObject>, context: any): void;
    onHidingContent(): void;
    protected getIsReadyNestedQuestions(): Array<Question>;
    protected collectNestedQuestionsCore(questions: Array<Question>, visibleOnly: boolean, includeNested: boolean, includeItSelf: boolean): void;
    protected collectNestedQuestonsInRows(rows: Array<MatrixDropdownRowModelBase>, questions: Question[], visibleOnly: boolean, includeNested: boolean, includeItSelf: boolean): void;
    protected getConditionObjectRowName(index: number): string;
    protected getConditionObjectRowText(index: number): string;
    protected getConditionObjectsRowIndeces(): Array<number>;
    getProgressInfo(): IProgressInfo;
    protected getIsRequireToGenerateRows(): boolean;
    protected updateProgressInfoByValues(res: IProgressInfo): void;
    protected updateProgressInfoByRow(res: IProgressInfo, rowValue: any): void;
    private getCellQuestions;
    protected onBeforeValueChanged(val: any): void;
    private onSetQuestionValue;
    protected setQuestionValue(newValue: any): void;
    supportAutoAdvance(): boolean;
    protected getContainsErrors(): boolean;
    protected getIsAnswered(): boolean;
    private checkForAnswersOrErrors;
    protected validateElementCore(context: ValidationContext): boolean;
    protected getIsRunningValidators(): boolean;
    getAllErrors(): Array<SurveyError>;
    private validateRows;
    private isValueDuplicated;
    protected getUniqueColumnsNames(): Array<string>;
    private isValueInColumnDuplicated;
    private getDuplicatedRowAndShowErrors;
    private getDuplicatedRows;
    private showDuplicatedErrorsInRows;
    private removeDuplicatedErrorsInRows;
    private getDuplicationError;
    private addDuplicationError;
    private removeDuplicationError;
    getFirstQuestionToFocus(withError: boolean): Question;
    protected getFirstInputElementId(): string;
    protected getFirstErrorInputElementId(): string;
    protected getFirstCellQuestion(onError: boolean): Question;
    protected onReadOnlyChanged(): void;
    createQuestion(row: MatrixDropdownRowModelBase, column: MatrixDropdownColumn): Question;
    protected createQuestionCore(row: MatrixDropdownRowModelBase, column: MatrixDropdownColumn): Question;
    protected deleteRowValue(newValue: any, row: MatrixDropdownRowModelBase): any;
    private isDoingonAnyValueChanged;
    private isValueChangedWithoutRows;
    onAnyValueChanged(name: string, questionName: string): void;
    protected isObject(value: any): boolean;
    private getOnCellValueChangedOptions;
    protected onCellValueChanged(row: MatrixDropdownRowModelBase, columnName: string, rowValue: any): void;
    validateCell(row: MatrixDropdownRowModelBase, columnName: string, rowValue: any): SurveyError;
    get isValidateOnValueChanging(): boolean;
    protected get hasInvisibleRows(): boolean;
    getFilteredData(): any;
    protected getFilteredDataCore(): any;
    onRowChanging(row: MatrixDropdownRowModelBase, columnName: string, rowValue: any): any;
    getSharedQuestionFromArray(name: string, rowIndex: number): Question;
    onRowChanged(row: MatrixDropdownRowModelBase, columnName: string, newRowValue: any, isDeletingValue: boolean): void;
    private getNewValueOnRowChanged;
    protected correctValueForMinMaxRows(newValue: any): any;
    getRowIndex(row: MatrixDropdownRowModelBase): number;
    getElementsInDesign(includeHidden?: boolean): Array<IElement>;
    hasDetailPanel(row: MatrixDropdownRowModelBase): boolean;
    getIsDetailPanelShowing(row: MatrixDropdownRowModelBase): boolean;
    setIsDetailPanelShowing(row: MatrixDropdownRowModelBase, val: boolean): void;
    getDetailPanelButtonCss(row: MatrixDropdownRowModelBase): string;
    getDetailPanelIconCss(row: MatrixDropdownRowModelBase): string;
    getDetailPanelIconId(row: MatrixDropdownRowModelBase): string;
    private updateDetailPanelButtonCss;
    createRowDetailPanel(row: MatrixDropdownRowModelBase): PanelModel;
    getSharedQuestionByName(columnName: string, row: MatrixDropdownRowModelBase): Question;
    runTriggersInRow(row: MatrixDropdownRowModelBase, runName: string, newValue: any): void;
    onTotalValueChanged(): any;
    getParentTextProcessor(): ITextProcessor;
    isMatrixReadOnly(): boolean;
    onRowVisibilityChanged(row: MatrixDropdownRowModelBase): void;
    protected clearValueIfInvisibleCore(reason: string): void;
    protected clearInvisibleValuesInRows(): void;
    protected isRowsFiltered(): boolean;
    getQuestionFromArray(name: string, index: number): IQuestion;
    private isMatrixValueEmpty;
    private get SurveyModel();
    getCellTemplateData(cell: QuestionMatrixDropdownRenderedCell): any;
    getCellWrapperComponentName(cell: MatrixDropdownCell): string;
    getCellWrapperComponentData(cell: MatrixDropdownCell): any;
    getColumnHeaderWrapperComponentName(cell: MatrixDropdownCell): string;
    getColumnHeaderWrapperComponentData(cell: MatrixDropdownCell): any;
    getRowHeaderWrapperComponentName(cell: MatrixDropdownCell): string;
    getRowHeaderWrapperComponentData(cell: MatrixDropdownCell): any;
    protected onMobileChanged(): void;
    getRootCss(): string;
    afterRenderQuestionElement(el: HTMLElement): void;
    beforeDestroyQuestionElement(el: HTMLElement): void;
    private rootElement;
    setRootElement(val: HTMLElement): void;
    getRootElement(): HTMLElement;
    get dragDropMatrixAttribute(): string;
}
