type ConfigureHostedTheme = "light" | "dark";
type ConfigureHostedPresentation = "inline" | "modal";
type ConfigureHostedMethod = "phone";
type ConfigureHostedSurface = "auth" | "profile" | "connections" | "single_connector" | "access_request" | "memory_import" | "memory_card" | "confirmation" | "tool_approval";
interface ConfigureFrame {
    id: string;
    iframe: HTMLIFrameElement;
    destroy(): void;
    close(): void;
    refresh(): void;
}
interface ConfigureController {
    destroy(): void;
    close(): void;
    refresh(): void;
}
interface ConfigurePersonalizationEntry extends ConfigureController {
    root: HTMLElement;
    open(): void;
}
interface ConfigureHostedEvent {
    type: string;
    frameId?: string;
    payload: Record<string, unknown>;
}
interface ConfigureHostedBaseOptions {
    el?: string | Element;
    publishableKey: string;
    agent: string;
    baseUrl?: string;
    theme?: ConfigureHostedTheme;
    presentation?: ConfigureHostedPresentation;
    /** Legacy alias for presentation; public docs should use presentation. */
    mode?: ConfigureHostedPresentation;
    agentName?: string;
    /** Legacy alias for agentName; public docs should use agentName. */
    displayName?: string;
    agentLogo?: string;
    font?: string;
    onEvent?: (event: ConfigureHostedEvent) => void;
    props?: Record<string, unknown>;
}
interface ConfigureHostedSessionOptions extends ConfigureHostedBaseOptions {
    token?: string;
    userId?: string;
}
interface ConfigureMountOptions extends ConfigureHostedBaseOptions {
    surface: ConfigureHostedSurface;
    token?: string;
    userId?: string;
    externalId?: string;
    loginHint?: string;
    methods?: ConfigureHostedMethod[] | string;
    connectors?: string[] | string;
    connector?: string;
    tool?: string;
    tools?: string[] | string;
    providers?: string[] | string;
    message?: string;
    description?: string;
    memories?: unknown[];
    confirmLabel?: string;
    cancelLabel?: string;
    params?: Record<string, unknown>;
    actionId?: string;
    timeoutSeconds?: number;
    maxVisible?: number;
    showSettings?: boolean;
    showActions?: boolean;
}
interface ConfigureLinkOptions extends ConfigureHostedBaseOptions {
    externalId?: string;
    loginHint?: string;
    methods?: ConfigureHostedMethod[] | string;
    token?: string;
    userId?: string;
    connectors?: string[] | string;
    tools?: string[] | string;
}
interface ConfigureProfileEditorOptions extends ConfigureHostedSessionOptions {
}
interface ConfigureConnectionsOptions extends ConfigureHostedSessionOptions {
    connectors?: string[] | string;
    tools?: string[] | string;
}
interface ConfigureSingleConnectorOptions extends ConfigureHostedSessionOptions {
    connector?: string;
    tool?: string;
}
interface ConfigureAccessRequestOptions extends ConfigureHostedSessionOptions {
    connector?: string;
    tool?: string;
    message?: string;
    description?: string;
}
interface ConfigureMemoryImportOptions extends ConfigureHostedSessionOptions {
    providers?: string[] | string;
}
interface ConfigureMemoryCardOptions extends ConfigureHostedBaseOptions {
    memories: unknown[];
    maxVisible?: number;
    showSettings?: boolean;
    showActions?: boolean;
}
interface ConfigureConfirmationOptions extends ConfigureHostedBaseOptions {
    message: string;
    confirmLabel?: string;
    cancelLabel?: string;
}
interface ConfigureToolApprovalOptions extends ConfigureHostedBaseOptions {
    tool: string;
    params?: Record<string, unknown>;
    actionId?: string;
    timeoutSeconds?: number;
}
interface ConfigurePersonalizationButtonOptions extends ConfigureHostedBaseOptions {
    token?: string;
    userId?: string;
    externalId?: string;
    connectors?: string[] | string;
    tools?: string[] | string;
    placeholder?: string;
    personalizationLabel?: string;
    imageLabel?: string;
    fileLabel?: string;
    showImages?: boolean;
    showFiles?: boolean;
    onImage?: () => void;
    onFile?: () => void;
}
interface ConfigureWindow {
    mount(options: ConfigureMountOptions): ConfigureFrame | null;
    link(options: ConfigureLinkOptions): ConfigureFrame | null;
    profileEditor(options: ConfigureProfileEditorOptions): ConfigureFrame | null;
    connections(options: ConfigureConnectionsOptions): ConfigureFrame | null;
    singleConnector(options: ConfigureSingleConnectorOptions): ConfigureFrame | null;
    accessRequest(options: ConfigureAccessRequestOptions): ConfigureFrame | null;
    memoryImport(options: ConfigureMemoryImportOptions): ConfigureFrame | null;
    memoryCard(options: ConfigureMemoryCardOptions): ConfigureFrame | null;
    confirmation(options: ConfigureConfirmationOptions): ConfigureFrame | null;
    toolApproval(options: ConfigureToolApprovalOptions): ConfigureFrame | null;
    personalizationButton(options: ConfigurePersonalizationButtonOptions): ConfigurePersonalizationEntry | ConfigureController | null;
}
declare global {
    interface Window {
        Configure?: ConfigureWindow;
    }
}

export type { ConfigureAccessRequestOptions, ConfigureConfirmationOptions, ConfigureConnectionsOptions, ConfigureController, ConfigureFrame, ConfigureHostedBaseOptions, ConfigureHostedEvent, ConfigureHostedMethod, ConfigureHostedPresentation, ConfigureHostedSessionOptions, ConfigureHostedSurface, ConfigureHostedTheme, ConfigureLinkOptions, ConfigureMemoryCardOptions, ConfigureMemoryImportOptions, ConfigureMountOptions, ConfigurePersonalizationButtonOptions, ConfigurePersonalizationEntry, ConfigureProfileEditorOptions, ConfigureSingleConnectorOptions, ConfigureToolApprovalOptions, ConfigureWindow };
