/// <reference types="node" />
import { EventEmitter } from 'events';
import { Page } from 'puppeteer';
import { PuppeteerScreenRecorderOptions } from './StreamTypes';
declare global {
    interface Window {
        dragonfly: any;
    }
}
/**
 * @ignore
 */
export declare class CDPScreencastRecorder extends EventEmitter {
    private page;
    private options;
    private CDPSessionsStack;
    private isStreamingEnded;
    private isFrameAckReceived;
    private _isReadyToAdvanceFrame;
    constructor(page: Page, options: PuppeteerScreenRecorderOptions);
    get isReadyToAdvanceFrame(): boolean;
    set isReadyToAdvanceFrame(newValue: boolean);
    private shouldFollowPopupWindow;
    private static createNewPageCDPSession;
    private getCurrentCDPSession;
    private addListenerOnTabOpens;
    private removeListenerOnTabClose;
    private registerTabListener;
    private startScreenCast;
    private stopScreenCastOfLastCDPSession;
    private startCDPSession;
    private setupScreencastFrameHandlers;
    private endSession;
    start(): Promise<void>;
    stop(): Promise<boolean>;
}
