import { type IframeHTMLAttributes } from "react";
import { type EmbeddedAppUrlOptions } from "./protocol.js";
export interface EmbeddedAppRef {
iframe: HTMLIFrameElement | null;
origin: string | null;
postMessage(name: string, payload?: TPayload): boolean;
request(name: string, payload?: TPayload, options?: {
timeoutMs?: number;
}): Promise;
focus(): void;
}
export interface EmbeddedAppMessageInfo {
name: string;
payload: TPayload;
event: MessageEvent;
ref: EmbeddedAppRef;
}
export interface EmbeddedAppProps extends Omit, "src" | "onLoad"> {
url: string;
/**
* Origin used when posting messages to the iframe. Defaults to url's origin.
*/
targetOrigin?: string;
/**
* Origins allowed to send messages back. Defaults to targetOrigin.
*/
allowedOrigins?: string[];
/**
* Adds `embedded=1` by default. Pass false to use the URL untouched.
*/
embed?: boolean | EmbeddedAppUrlOptions;
onLoad?: (ref: EmbeddedAppRef) => void;
onReady?: (payload: unknown, event: MessageEvent, ref: EmbeddedAppRef) => void;
onMessage?: (name: string, payload: TPayload, event: MessageEvent, ref: EmbeddedAppRef) => void;
onRequest?: (name: string, payload: unknown, event: MessageEvent, ref: EmbeddedAppRef) => unknown | Promise;
}
export declare function isEmbeddedAppMessageSource(event: Pick, iframe: Pick | null): boolean;
export declare const EmbeddedApp: import("react").ForwardRefExoticComponent>;
//# sourceMappingURL=react.d.ts.map