import type { McpHostCallToolParams, McpHostCapabilities, McpHostContainerDimensions, McpHostContext, McpHostMessageResult, McpHostModelContextResult, McpHostOpenLinkParams, McpHostReadResourceResult, McpHostRequestDisplayModeResult, McpHostSendMessageParams, McpHostToolResult, McpUiDisplayMode, McpHostUpdateModelContextParams } from "./mcp-app-types";
export * from "./mcp-app-protocol";
export type * from "./mcp-app-types";
export interface McpHostBridgeState {
    isConnected: boolean;
    hostContext: McpHostContext | null;
    hostCapabilities: McpHostCapabilities | null;
}
export interface McpHostBridge {
    callTool: (name: McpHostCallToolParams["name"], args?: McpHostCallToolParams["arguments"]) => Promise<McpHostToolResult>;
    requestDisplayMode: (mode: McpUiDisplayMode) => Promise<McpHostRequestDisplayModeResult>;
    openLink: (url: McpHostOpenLinkParams["url"]) => Promise<void>;
    readResource: (uri: string) => Promise<McpHostReadResourceResult>;
    sendMessage: (params: McpHostSendMessageParams) => Promise<McpHostMessageResult>;
    updateModelContext: (params: McpHostUpdateModelContextParams) => Promise<McpHostModelContextResult>;
    logMessage: (params: McpHostSendMessageParams) => Promise<void>;
    notifySizeChanged: (params: McpHostContainerDimensions) => Promise<void>;
    getState: () => McpHostBridgeState;
    getHostContext: () => McpHostContext | null;
    getHostCapabilities: () => McpHostCapabilities | null;
    isConnected: () => boolean;
    subscribe: (listener: (state: McpHostBridgeState) => void) => () => void;
    dispose: () => void;
}
interface MessageEventLike {
    source: unknown;
    data: unknown;
}
interface MessageTargetLike {
    postMessage: (message: unknown, targetOrigin: string) => void;
}
interface WindowLike extends MessageTargetLike {
    parent: MessageTargetLike;
    open?: (url: string, target?: string, features?: string) => unknown;
    addEventListener: (type: "message", listener: (event: MessageEventLike) => void) => void;
    removeEventListener: (type: "message", listener: (event: MessageEventLike) => void) => void;
}
export interface CreateMcpHostBridgeOptions {
    targetWindow?: WindowLike;
    requestTimeoutMs?: number;
    connectionTimeoutMs?: number;
}
export declare function createMcpHostBridge(options?: CreateMcpHostBridgeOptions): McpHostBridge;
