import * as React from "react";
import Editor from "./editor";
import IframeContentRenderer from "./iframe-content-renderer";
import ItemExtrasEditor from "./item-extras-editor";
import type { Issue } from "./components/issues-panel";
import type { APIOptions, ImageUploader, ChangeHandler, DeviceType } from "@khanacademy/perseus";
import type { PerseusAnswerArea, PerseusWidgetsMap, PerseusRenderer, PerseusItem } from "@khanacademy/perseus-core";
type Props = {
    /** Additional templates that the host application would like to display
     * within the Perseus Editor.
     */
    additionalTemplates?: Record<string, string>;
    apiOptions?: APIOptions;
    deviceType?: DeviceType;
    widgetIsOpen?: boolean;
    imageUploader?: ImageUploader;
    question?: PerseusRenderer;
    answerArea?: PerseusAnswerArea | null;
    /** URL of the route to show on initial load of the preview frames. */
    previewURL: string;
    onChange: (changed: Partial<PerseusItem>) => void;
    /** The content ID of the AssessmentItem being edited. It may not be set
     * for non-content library exercise questions.
     */
    itemId?: string;
    issues?: Issue[];
};
type State = {
    issues: Issue[];
    axeCoreIssues: Issue[];
    showAxeCoreIssues: boolean;
};
declare class ItemEditor extends React.Component<Props, State> {
    static defaultProps: {
        answerArea: Record<any, any>;
        onChange: () => void;
        question: Record<any, any>;
    };
    static prevContent: string | undefined;
    static prevWidgets: PerseusWidgetsMap | undefined;
    a11yCheckerTimeoutId: any;
    frame: React.RefObject<IframeContentRenderer>;
    questionEditor: React.RefObject<Editor>;
    itemExtrasEditor: React.RefObject<ItemExtrasEditor>;
    state: {
        issues: never[];
        axeCoreIssues: never[];
        showAxeCoreIssues: boolean;
    };
    componentDidUpdate(prevProps: Props): void;
    updateProps: (newProps: Partial<PerseusItem>) => void;
    triggerPreviewUpdate: (newData?: any) => void;
    handleEditorChange: ChangeHandler;
    handleItemExtrasChange: (newProps: Partial<PerseusAnswerArea>) => void;
    getSaveWarnings: () => any;
    serialize(): {
        answerArea: PerseusAnswerArea;
        question: PerseusRenderer;
    };
    render(): React.ReactNode;
}
export default ItemEditor;
