import type { EmptyParams, EmptyResult, JsInt, JsUint } from './common.js';
import type { SessionProxyConfiguration, SessionUserPromptHandler } from './session.js';
export type BrowserCommand = BrowserClose | BrowserCreateUserContext | BrowserGetClientWindows | BrowserGetUserContexts | BrowserRemoveUserContext | BrowserSetClientWindowState | BrowserSetDownloadBehavior;
export type BrowserResult = BrowserCloseResult | BrowserCreateUserContextResult | BrowserGetClientWindowsResult | BrowserGetUserContextsResult | BrowserRemoveUserContextResult | BrowserSetClientWindowStateResult | BrowserSetDownloadBehaviorResult;
export type BrowserClientWindow = string;
export interface BrowserClientWindowInfo {
    active: boolean;
    clientWindow: BrowserClientWindow;
    height: JsUint;
    state: "fullscreen" | "maximized" | "minimized" | "normal";
    width: JsUint;
    x: JsInt;
    y: JsInt;
}
export type BrowserUserContext = string;
export interface BrowserUserContextInfo {
    userContext: BrowserUserContext;
}
export interface BrowserClose {
    method: "browser.close";
    params: EmptyParams;
}
export type BrowserCloseResult = EmptyResult;
export interface BrowserCreateUserContext {
    method: "browser.createUserContext";
    params: BrowserCreateUserContextParameters;
}
export interface BrowserCreateUserContextParameters {
    acceptInsecureCerts?: boolean;
    proxy?: SessionProxyConfiguration;
    unhandledPromptBehavior?: SessionUserPromptHandler;
}
export type BrowserCreateUserContextResult = BrowserUserContextInfo;
export interface BrowserGetClientWindows {
    method: "browser.getClientWindows";
    params: EmptyParams;
}
export interface BrowserGetClientWindowsResult {
    clientWindows: BrowserClientWindowInfo[];
}
export interface BrowserGetUserContexts {
    method: "browser.getUserContexts";
    params: EmptyParams;
}
export interface BrowserGetUserContextsResult {
    userContexts: BrowserUserContextInfo[];
}
export interface BrowserRemoveUserContext {
    method: "browser.removeUserContext";
    params: BrowserRemoveUserContextParameters;
}
export interface BrowserRemoveUserContextParameters {
    userContext: BrowserUserContext;
}
export type BrowserRemoveUserContextResult = EmptyResult;
export interface BrowserSetClientWindowState {
    method: "browser.setClientWindowState";
    params: BrowserSetClientWindowStateParameters;
}
export type BrowserSetClientWindowStateParameters = (BrowserClientWindowNamedState | BrowserClientWindowRectState) & {
    clientWindow: BrowserClientWindow;
};
export interface BrowserClientWindowNamedState {
    state: "fullscreen" | "maximized" | "minimized";
}
export interface BrowserClientWindowRectState {
    state: "normal";
    width?: JsUint;
    height?: JsUint;
    x?: JsInt;
    y?: JsInt;
}
export type BrowserSetClientWindowStateResult = BrowserClientWindowInfo;
export interface BrowserSetDownloadBehavior {
    method: "browser.setDownloadBehavior";
    params: BrowserSetDownloadBehaviorParameters;
}
export interface BrowserSetDownloadBehaviorParameters {
    downloadBehavior: BrowserDownloadBehavior | null;
    userContexts?: BrowserUserContext[];
}
export type BrowserDownloadBehavior = (BrowserDownloadBehaviorAllowed | BrowserDownloadBehaviorDenied);
export interface BrowserDownloadBehaviorAllowed {
    type: "allowed";
    destinationFolder: string;
}
export interface BrowserDownloadBehaviorDenied {
    type: "denied";
}
export type BrowserSetDownloadBehaviorResult = EmptyResult;
/** @deprecated Use {@link Browser.create} instead — will be removed in a future major version. */
export declare function getBrowserInstance(driver: unknown): Promise<Browser>;
export declare class Browser {
    private readonly bidi;
    private constructor();
    static create(driver: unknown): Promise<Browser>;
    close(): Promise<void>;
    createUserContext(params: BrowserCreateUserContextParameters): Promise<BrowserCreateUserContextResult>;
    getClientWindows(): Promise<BrowserGetClientWindowsResult>;
    getUserContexts(): Promise<BrowserGetUserContextsResult>;
    removeUserContext(params: BrowserRemoveUserContextParameters): Promise<void>;
    setClientWindowState(params: BrowserSetClientWindowStateParameters): Promise<BrowserSetClientWindowStateResult>;
    setDownloadBehavior(params: BrowserSetDownloadBehaviorParameters): Promise<void>;
}
