import IUnblockedPlugin from '@unblocked-web/specifications/plugin/IUnblockedPlugin';
import IEmulationProfile from '@unblocked-web/specifications/plugin/IEmulationProfile';
import { IBoundLog } from '@ulixee/commons/interfaces/ILog';
import IDeviceProfile from '@unblocked-web/specifications/plugin/IDeviceProfile';
import IBrowserEngine from '@unblocked-web/specifications/agent/browser/IBrowserEngine';
import IUserAgentOption from '@unblocked-web/specifications/plugin/IUserAgentOption';
import IHttpResourceLoadDetails from '@unblocked-web/specifications/agent/net/IHttpResourceLoadDetails';
import IDnsSettings from '@unblocked-web/specifications/agent/net/IDnsSettings';
import ITcpSettings from '@unblocked-web/specifications/agent/net/ITcpSettings';
import ITlsSettings from '@unblocked-web/specifications/agent/net/ITlsSettings';
import { IPage } from '@unblocked-web/specifications/agent/browser/IPage';
import { IWorker } from '@unblocked-web/specifications/agent/browser/IWorker';
import IHttp2ConnectSettings from '@unblocked-web/specifications/agent/net/IHttp2ConnectSettings';
import IHttpSocketAgent from '@unblocked-web/specifications/agent/net/IHttpSocketAgent';
import IBrowserLaunchArgs from '@unblocked-web/specifications/agent/browser/IBrowserLaunchArgs';
import IBrowser from '@unblocked-web/specifications/agent/browser/IBrowser';
import { IFrame } from '@unblocked-web/specifications/agent/browser/IFrame';
import IBrowserData from './interfaces/IBrowserData';
import IUserAgentData from './interfaces/IUserAgentData';
export declare const defaultBrowserEngine: import("@unblocked-web/specifications/agent/browser/IBrowserEngineOption").default & {
    version: import("@unblocked-web/specifications/plugin/IUserAgentOption").IVersion;
};
export interface IEmulatorOptions {
    userAgentSelector?: string;
}
export default class DefaultBrowserEmulator<T = IEmulatorOptions> implements IUnblockedPlugin<T> {
    readonly logger: IBoundLog;
    readonly emulationProfile: IEmulationProfile<T>;
    get userAgentString(): string;
    get browserEngine(): IBrowserEngine;
    get deviceProfile(): IDeviceProfile;
    protected readonly data: IBrowserData;
    private domOverridesBuilder;
    private readonly userAgentData;
    constructor(emulationProfile: IEmulationProfile<T>);
    configure(emulationProfile: IEmulationProfile<T>): void;
    onDnsConfiguration(settings: IDnsSettings): void;
    onTcpConfiguration(settings: ITcpSettings): void;
    onTlsConfiguration(settings: ITlsSettings): void;
    beforeHttpRequest(resource: IHttpResourceLoadDetails): void;
    onHttpAgentInitialized(agent: IHttpSocketAgent): Promise<void>;
    onHttp2SessionConnect(request: IHttpResourceLoadDetails, settings: IHttp2ConnectSettings): void;
    onNewBrowser(browser: IBrowser, options: IBrowserLaunchArgs): void;
    addDomOverride(runOn: 'page' | 'worker', script: string, args: Record<string, any> & {
        callbackName?: string;
    }, callback?: (data: string, frame: IFrame) => any): boolean;
    onNewPage(page: IPage): Promise<any>;
    onNewWorker(worker: IWorker): Promise<any>;
    protected getUserAgentData(): IUserAgentData;
    static shouldActivate(emulationProfile: IEmulationProfile<IEmulatorOptions>): boolean;
    static selectBrowserMeta(userAgentSelector?: string): {
        browserEngine: IBrowserEngine;
        userAgentOption: IUserAgentOption;
    };
    static default(): IBrowserEngine;
}
