/**
 * This is an iframe widget. It is used for rendering an iframe that
 *  then communicates its state via window.postMessage
 * This is useful for embedding arbitrary visualizations/simulations with
 *  completed conditions, such as the mazes and games in Algorithms.
 * It's particularly well suited for embedding our ProcessingJS programs,
 *  but could also be used for embedding viz's hosted elsewhere.
 */
import * as React from "react";
import type { WidgetProps, Widget } from "../../types";
import type { UnsupportedWidgetPromptJSON } from "../../widget-ai-utils/unsupported-widget";
import type { PerseusIFrameUserInput, PerseusIFrameWidgetOptions } from "@khanacademy/perseus-core";
type Props = WidgetProps<PerseusIFrameWidgetOptions, PerseusIFrameUserInput>;
type DefaultProps = {
    allowFullScreen: Props["allowFullScreen"];
    allowTopNavigation: Props["allowTopNavigation"];
    userInput: Props["userInput"];
};
declare class Iframe extends React.Component<Props> implements Widget {
    static defaultProps: DefaultProps;
    componentDidMount(): void;
    componentWillUnmount(): void;
    getPromptJSON(): UnsupportedWidgetPromptJSON;
    /**
     * @deprecated and likely very broken API
     * [LEMS-3185] do not trust serializedState
     */
    getSerializedState(): any;
    handleMessageEvent: (arg1: any) => void;
    render(): React.ReactNode;
}
/**
 * @deprecated and likely a very broken API
 * [LEMS-3185] do not trust serializedState
 */
declare function getUserInputFromSerializedState(serializedState: any): PerseusIFrameUserInput;
declare function getStartUserInput(): PerseusIFrameUserInput;
declare const _default: {
    name: string;
    displayName: string;
    widget: typeof Iframe;
    hidden: true;
    getStartUserInput: typeof getStartUserInput;
    getUserInputFromSerializedState: typeof getUserInputFromSerializedState;
};
export default _default;
