import { Action } from '@ngrx/store'; export interface TabWindowInfo { windowId: number; } export interface QueryInfo { status?: 'loading' | 'complete'; lastFocusedWindow?: boolean; windowId?: number; windowType?: 'normal' | 'popup' | 'panel' | 'app' | 'devtools'; active?: boolean; index?: number; title?: string; url?: string | string[]; currentWindow?: boolean; highlighted?: boolean; discarded?: boolean; autoDiscardable?: boolean; pinned?: boolean; audible?: boolean; muted?: boolean; } export interface MutedInfo { muted: boolean; reason?: string; extensionId?: string; } export interface Tab { status?: string; index: number; openerTabId?: number; title?: string; url?: string; pinned: boolean; highlighted: boolean; windowId: number; active: boolean; favIconUrl?: string; id?: number; incognito: boolean; selected: boolean; audible?: boolean; discarded: boolean; autoDiscardable: boolean; mutedInfo?: MutedInfo; width?: number; height?: number; sessionId?: string; } export interface Port { postMessage: (message: Object) => void; disconnect: () => void; sender?: MessageSender; onDisconnect: PortDisconnectEvent; onMessage: PortMessageEvent; name: string; } export interface MessageSender { id?: string; tab?: Tab; frameId?: number; url?: string; tlsChannelId?: string; } export interface Event { addListener(callback: T): void; getRules(callback: (rules: Rule[]) => void): void; getRules(ruleIdentifiers: string[], callback: (rules: Rule[]) => void): void; hasListener(callback: T): boolean; removeRules(ruleIdentifiers?: string[], callback?: () => void): void; removeRules(callback?: () => void): void; addRules(rules: Rule[], callback?: (rules: Rule[]) => void): void; removeListener(callback: T): void; hasListeners(): boolean; } export interface Rule { priority?: number; conditions: any[]; id?: string; actions: any[]; tags?: string[]; } export interface PortDisconnectEvent extends Event<(port: Port) => void> { } export interface PortMessageEvent extends Event<(message: any, port: Port) => void> { } export interface Iwe7Message extends Action { type: string; payload: any; } export interface RuntimePort { postMessage: (message: Object) => void; disconnect: () => void; sender?: MessageSender; onDisconnect: PortDisconnectEvent; onMessage: PortMessageEvent; name: string; }