type ConfigureHostedTheme = "light" | "dark"; type ConfigureHostedPresentation = "inline" | "modal"; type ConfigureHostedIntent = "link" | "signin"; 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 ConfigurePopupController extends ConfigureController { popup: Window | null; } interface ConfigurePersonalizationEntry extends ConfigureController { root: HTMLElement; open(): void; } interface ConfigureHostedEvent { type: string; frameId?: string; payload: Record; } 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; intent?: ConfigureHostedIntent; /** Legacy alias for intent; public docs should use intent. */ flow?: ConfigureHostedIntent; /** Optional human-facing label for UI copy only. `agent` remains the identity handle. */ displayName?: string; /** Legacy alias for displayName. Public integrations should use displayName. */ agentName?: string; agentLogo?: string; /** Copy variant for hosted auth. Use "hosted" for co-branded agent sign-in, "configure" for Configure-owned surfaces. */ copyMode?: "configure" | "hosted" | string; font?: string; /** Optional max width for inline hosted artifacts. Defaults by surface. */ inlineWidth?: number | string; /** Alias for inlineWidth. */ inlineMaxWidth?: number | string; /** Legacy alias for inlineWidth. */ maxWidth?: number | string; onEvent?: (event: ConfigureHostedEvent) => void; props?: Record; } 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; connected?: boolean; reconnectRequired?: boolean; error?: string; providers?: string[] | string; message?: string; description?: string; memories?: unknown[]; confirmLabel?: string; cancelLabel?: string; params?: Record; 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 ConfigureSignInOptions extends ConfigureLinkOptions { } interface ConfigureSignInPopupOptions extends Omit { returnTo?: string; return_to?: string; callbackUrl?: string; callbackURL?: string; state?: string; /** If popup opening is blocked, redirect the current window to accounts.configure.dev. Defaults to "error". */ fallback?: "error" | "redirect"; popupName?: string; popupFeatures?: string; accountsOrigin?: string; } interface ConfigureProfileEditorOptions extends ConfigureHostedSessionOptions { } interface ConfigureConnectionsOptions extends ConfigureHostedSessionOptions { connectors?: string[] | string; tools?: string[] | string; } interface ConfigureSingleConnectorOptions extends ConfigureHostedSessionOptions { connector?: string; tool?: string; message?: string; name?: string; connected?: boolean; reconnectRequired?: boolean; error?: 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; actionId?: string; timeoutSeconds?: number; } interface ConfigurePersonalizationButtonOptions extends ConfigureHostedBaseOptions { token?: string; userId?: string; externalId?: string; /** Mount Configure Link into a separate inline chat panel instead of inside the trigger. */ linkEl?: string | Element; /** Alias for linkEl. */ inlineEl?: string | Element; /** Alias for linkEl. */ panelEl?: string | Element; connectors?: string[] | string; tools?: string[] | string; placeholder?: string; personalizationLabel?: string; imageLabel?: string; fileLabel?: string; variant?: 'menu' | 'integration' | 'lockup'; trigger?: 'menu' | 'integration' | 'lockup'; lockupSrc?: string; showImages?: boolean; showFiles?: boolean; onImage?: () => void; onFile?: () => void; onPersonalizationToggle?: (enabled: boolean) => void; } interface ConfigureWindow { mount(options: ConfigureMountOptions): ConfigureFrame | null; link(options: ConfigureLinkOptions): ConfigureFrame | null; signIn(options: ConfigureSignInOptions): ConfigureFrame | null; signInWithPopup(options: ConfigureSignInPopupOptions): ConfigurePopupController | null; signInPopup(options: ConfigureSignInPopupOptions): ConfigurePopupController | 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, ConfigureHostedIntent, ConfigureHostedMethod, ConfigureHostedPresentation, ConfigureHostedSessionOptions, ConfigureHostedSurface, ConfigureHostedTheme, ConfigureLinkOptions, ConfigureMemoryCardOptions, ConfigureMemoryImportOptions, ConfigureMountOptions, ConfigurePersonalizationButtonOptions, ConfigurePersonalizationEntry, ConfigurePopupController, ConfigureProfileEditorOptions, ConfigureSignInOptions, ConfigureSignInPopupOptions, ConfigureSingleConnectorOptions, ConfigureToolApprovalOptions, ConfigureWindow };