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<any>;
}
export interface WorkerExtensionInstance extends ExtensionInstance {
    extenderDefinition?: WorkerExtenderDefinition;
    contract?: ExtensionMethodContract[];
    call: (method: string, version: number, ...args: any[]) => Observable<any>;
    destroy: () => Observable<void>;
}
export interface SnapInExtensionInstance extends ExtensionInstance {
    call: (method: string, version: number, ...args: any[]) => Observable<any>;
    destroy: () => Observable<void>;
    move: (rect: ExtensionRect, zIndex?: number) => Observable<void>;
}
export interface DialogExtensionInstance extends ExtensionInstance {
    extenderDefinition?: WorkerExtenderDefinition;
    contract?: ExtensionMethodContract[];
    show: (version: number, ...args: any[]) => Observable<any>;
    hide: () => Observable<any>;
}
