import { BrowserLog } from '../browser-log';
import type { LogLevel } from '../log-level';
import type { HeadlessBrowser } from './Browser';
import type { CDPSession } from './Connection';
import { ConsoleMessage } from './ConsoleMessage';
import type { EvaluateFn, EvaluateFnReturnType, EvaluateHandleFn, SerializableOrJSHandle, UnwrapPromiseLike } from './EvalTypes';
import { EventEmitter } from './EventEmitter';
import type { Frame } from './FrameManager';
import type { HTTPResponse } from './HTTPResponse';
import type { JSHandle } from './JSHandle';
import type { Viewport } from './PuppeteerViewport';
import type { Target } from './Target';
import { TaskQueue } from './TaskQueue';
import type { SourceMapGetter } from './source-map-getter';
interface WaitForOptions {
    timeout?: number;
}
export declare const enum PageEmittedEvents {
    Error = "error",
    Disposed = "disposed"
}
interface PageEventObject {
    console: ConsoleMessage;
    error: Error;
    disposed: undefined;
}
export declare class Page extends EventEmitter {
    #private;
    id: string;
    static _create({ client, target, defaultViewport, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, }: {
        client: CDPSession;
        target: Target;
        defaultViewport: Viewport;
        browser: HeadlessBrowser;
        sourceMapGetter: SourceMapGetter;
        logLevel: LogLevel;
        indent: boolean;
        pageIndex: number;
        onBrowserLog: null | ((log: BrowserLog) => void);
    }): Promise<Page>;
    closed: boolean;
    browser: HeadlessBrowser;
    screenshotTaskQueue: TaskQueue;
    sourceMapGetter: SourceMapGetter;
    logLevel: LogLevel;
    indent: boolean;
    pageIndex: number;
    onBrowserLog: null | ((log: BrowserLog) => void);
    constructor({ client, target, browser, sourceMapGetter, logLevel, indent, pageIndex, onBrowserLog, }: {
        client: CDPSession;
        target: Target;
        browser: HeadlessBrowser;
        sourceMapGetter: SourceMapGetter;
        logLevel: LogLevel;
        indent: boolean;
        pageIndex: number;
        onBrowserLog: null | ((log: BrowserLog) => void);
    });
    /**
     * Listen to page events.
     */
    on<K extends keyof PageEventObject>(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter;
    once<K extends keyof PageEventObject>(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter;
    off<K extends keyof PageEventObject>(eventName: K, handler: (event: PageEventObject[K]) => void): EventEmitter;
    /**
     * @returns A target this page was created from.
     */
    target(): Target;
    _client(): CDPSession;
    /**
     * @returns The page's main frame.
     * @remarks
     * Page is guaranteed to have a main frame which persists during navigations.
     */
    mainFrame(): Frame;
    setViewport(viewport: Viewport): Promise<void>;
    setDefaultNavigationTimeout(timeout: number): void;
    setDefaultTimeout(timeout: number): void;
    evaluateHandle<HandlerType extends JSHandle = JSHandle>(pageFunction: EvaluateHandleFn, ...args: SerializableOrJSHandle[]): Promise<HandlerType>;
    url(): string;
    goto({ url, timeout, options, }: {
        url: string;
        timeout: number;
        options?: WaitForOptions & {
            referer?: string;
        };
    }): Promise<HTTPResponse | null>;
    bringToFront(): Promise<void>;
    evaluate<T extends EvaluateFn>(pageFunction: T, ...args: SerializableOrJSHandle[]): Promise<UnwrapPromiseLike<EvaluateFnReturnType<T>>>;
    evaluateOnNewDocument(pageFunction: Function | string, ...args: unknown[]): Promise<void>;
    close(options?: {
        runBeforeUnload?: boolean;
    }): Promise<void>;
    setBrowserSourceMapGetter(context: SourceMapGetter): void;
}
export {};
