import * as React from "react";
import { Base, Question, PageModel, SurveyError, SurveyModel, IAttachKey2clickOptions } from "survey-core";
import { ISurveyCreator } from "./reactquestion";
import { SurveyElementBase } from "./reactquestion_element";
export declare class Survey extends SurveyElementBase<any, any> implements ISurveyCreator {
    private previousJSON;
    private rootRef;
    protected survey: SurveyModel;
    private rootNodeId;
    private rootNodeClassName;
    constructor(props: any);
    protected getStateElement(): Base;
    private isSurveyUpdated;
    private onSurveyUpdated;
    shouldComponentUpdate(nextProps: any, nextState: any): boolean;
    componentDidUpdate(prevProps: any, prevState: any): void;
    componentDidMount(): void;
    destroySurvey(): void;
    componentWillUnmount(): void;
    doRender(): React.JSX.Element;
    protected renderElement(): React.JSX.Element;
    get css(): any;
    set css(value: any);
    protected renderCompleted(): React.JSX.Element | null;
    protected renderCompletedBefore(): React.JSX.Element;
    protected renderLoading(): React.JSX.Element;
    protected renderSurvey(): React.JSX.Element;
    protected renderPage(page: PageModel): React.JSX.Element;
    protected renderEmptySurvey(): React.JSX.Element;
    protected createSurvey(newProps: any): void;
    private isModelJSONChanged;
    protected updateSurvey(newProps: any, oldProps?: any): void;
    protected setSurveyEvents(): void;
    createQuestionElement(question: Question): React.JSX.Element | null;
    renderError(key: string, error: SurveyError, cssClasses: any, element?: any): React.JSX.Element;
    questionTitleLocation(): string;
    questionErrorLocation(): string;
}
export declare function attachKey2click(element: React.JSX.Element, viewModel?: any, options?: IAttachKey2clickOptions): React.JSX.Element;
