import { CDPEventEmitter } from "../emitter";
import { CDPConnection } from "../connection";
import type { CDPBrowserContextId, CDPSessionId, CDPTargetId, CDPTargetInfo } from "../types";
interface GetBrowserContextsResponse {
    browserContextIds: CDPBrowserContextId[];
}
interface CreateBrowserContextResponse {
    browserContextId: CDPBrowserContextId;
}
interface CreateTargetResponse {
    targetId: CDPTargetId;
}
interface CreateTargetResponse {
    targetId: CDPTargetId;
}
interface AttachToTargetResponse {
    sessionId: CDPSessionId;
}
interface GetTargetsResponse {
    targetInfos: CDPTargetInfo[];
}
interface SetAutoAttachRequest {
    autoAttach: boolean;
    waitForDebuggerOnStart: boolean;
    flatten?: boolean;
}
export interface TargetEvents {
    receivedMessageFromTarget: {
        sessionId: CDPSessionId;
        message: string;
    };
    targetCrashed: {
        targetId: CDPTargetId;
        /** Termination status type. */
        status: string;
        /** Termination error code. */
        errorCode: number;
    };
    targetCreated: {
        targetInfo: CDPTargetInfo;
    };
    targetDestroyed: {
        targetId: CDPTargetId;
    };
    targetInfoChanged: {
        targetInfo: CDPTargetInfo;
    };
}
/** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/ */
export declare class CDPTarget extends CDPEventEmitter<TargetEvents> {
    private readonly _connection;
    constructor(connection: CDPConnection);
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-getBrowserContexts */
    getBrowserContexts(): Promise<GetBrowserContextsResponse>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-createBrowserContext */
    createBrowserContext(): Promise<CreateBrowserContextResponse>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-disposeBrowserContext */
    disposeBrowserContext(browserContextId: CDPBrowserContextId): Promise<void>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-createTarget */
    createTarget({ url, browserContextId, }: {
        url?: string;
        browserContextId?: CDPBrowserContextId;
    }): Promise<CreateTargetResponse>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-closeTarget */
    closeTarget(targetId: CDPTargetId): Promise<void>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-activateTarget */
    activateTarget(targetId: CDPTargetId): Promise<void>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-attachToTarget */
    attachToTarget(targetId: CDPTargetId): Promise<AttachToTargetResponse>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-detachFromTarget */
    detachFromTarget(sessionId: CDPSessionId): Promise<AttachToTargetResponse["sessionId"]>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-getTargets */
    getTargets(): Promise<GetTargetsResponse>;
    /** @link https://chromedevtools.github.io/devtools-protocol/1-3/Target/#method-setAutoAttach */
    setAutoAttach(sessionId: CDPSessionId, params: SetAutoAttachRequest): Promise<void>;
}
export {};
