import { MediaManager, ScryptedNativeId, ScryptedStatic, SystemDeviceState, SystemManager } from '@scrypted/types'; import { RpcPeer } from '../rpc'; import { DeviceManagerImpl } from './device'; import { PluginAPI, PluginHostInfo, PluginRemote, PluginRemoteLoadZipOptions, PluginZipAPI } from './plugin-api'; import { WebSocketMethods } from './plugin-remote-websocket'; export declare function setupPluginRemote(peer: RpcPeer, api: PluginAPI, pluginId: string, hostInfo: PluginHostInfo, getSystemState: () => { [id: string]: { [property: string]: SystemDeviceState; }; }): Promise; export interface WebSocketCustomHandler { id: string; methods: WebSocketMethods; } export interface PluginRemoteAttachOptions { createMediaManager?: (systemManager: SystemManager, deviceManager: DeviceManagerImpl) => Promise; getServicePort?: (name: string, ...args: any[]) => Promise<[number, string]>; getDeviceConsole?: (nativeId?: ScryptedNativeId) => Console; getPluginConsole?: () => Console; getMixinConsole?: (id: string, nativeId?: ScryptedNativeId) => Console; onLoadZip?: (scrypted: ScryptedStatic, params: any, packageJson: any, zipAPI: PluginZipAPI, zipOptions: PluginRemoteLoadZipOptions) => Promise; onGetRemote?: (api: PluginAPI, pluginId: string) => Promise; } export declare function attachPluginRemote(peer: RpcPeer, options?: PluginRemoteAttachOptions): Promise;