import { Observable } from 'rxjs'; import { ExtensionMethodContract, WorkerExtenderDefinition } from '../../../manifest/environment-modules'; import { ExtensionRect } from './extension-rect'; export interface ExtensionInstance { instanceId: string; listen: (eventType: string) => Observable; } export interface WorkerExtensionInstance extends ExtensionInstance { extenderDefinition?: WorkerExtenderDefinition; contract?: ExtensionMethodContract[]; call: (method: string, version: number, ...args: any[]) => Observable; destroy: () => Observable; } export interface SnapInExtensionInstance extends ExtensionInstance { call: (method: string, version: number, ...args: any[]) => Observable; destroy: () => Observable; move: (rect: ExtensionRect, zIndex?: number) => Observable; } export interface DialogExtensionInstance extends ExtensionInstance { extenderDefinition?: WorkerExtenderDefinition; contract?: ExtensionMethodContract[]; show: (version: number, ...args: any[]) => Observable; hide: () => Observable; }