export default interface BrowserService {
    getExtensionVesion():string;

    createWindow(url?:string):Promise<number>;

    getCurrentWindow() : Promise<{windowId:number, tabsId?:number[]}>;

    getTabIdListOfWindow(windowId: number): Promise<number[]>;

    drawAttentionToWindow(windowId: number):Promise<void>;

    closeWindow(windowId: number):Promise<void>;

    runScript(tabId: number): Promise<boolean>;

    restartWindow(windowId : number, url?:string):Promise<void>;

    drawAttentionToWindow(windowId : number):Promise<void>;

    takeScreenshot(): Promise<string> ;

    captureStreamOnWindow(): Promise<{stream:MediaStream, id: number}> ;

    hideCapture(id: number) : void ;

    attachWindowCreatedHandler( handler : (windowId:number) => void);

    attachWindowRemovedHandler( handler : (windowId:number) => void);

    attachTabCreatedHandler( handler : (tabId:number, windowId:number) => void);

    attachTabRemovedHandler( handler : (tabId:number, windowId:number) => void);

    attachTabDetachedHandler( handler : (tabId:number, windowId:number) => void);

    attachTabAttachedHandler( handler : (tabId:number, windowId:number) => void);

    attachTabActivatedHandler( handler : (tabId:number, windowId:number) => void);

    attachOnDomLoadedHandler( handler : (tabId:number) => void);

    attachOnCommittedHandler( handler : (tabId:number) => void);

}