/// /// import TypedEmitter from "typed-emitter"; import { MgmtInterfaceSampleRequestSample, MgmtInterfaceInferenceInfo, ClientConnectionType } from "../shared/MgmtInterfaceTypes"; import { IWebsocket } from "../shared/daemon/iwebsocket"; import { ImpulseRecord, ImpulseRecordError, InferenceMetrics, ModelMonitor } from './model-monitor'; import { ModelInformation } from "../library/classifier/linux-impulse-runner-types"; export type RemoteMgmtDeviceSampleEmitter = TypedEmitter<{ started: () => void; uploading: () => void; reading: (progressPercentage: number) => void; processing: () => void; }>; export interface RemoteMgmtDevice extends TypedEmitter<{ snapshot: (buffer: Buffer, filename: string) => void; }> { connected: () => boolean; getDeviceId: () => Promise; getDeviceType: () => Promise; getSensors: () => { name: string; maxSampleLengthS: number; frequencies: number[]; }[]; getConnectionType: () => ClientConnectionType; sampleRequest: (data: MgmtInterfaceSampleRequestSample, ee: RemoteMgmtDeviceSampleEmitter) => Promise; supportsSnapshotStreaming: () => boolean; supportsSnapshotStreamingWhileCapturing: () => boolean; startSnapshotStreaming: (resolution: 'high' | 'low') => Promise; stopSnapshotStreaming: () => Promise; beforeConnect: () => Promise; } export interface RemoteMgmtConfig { command: 'edge-impulse-linux' | 'edge-impulse-daemon'; endpoints: { internal: { ws: string; api: string; ingestion: string; }; }; api: { projects: { getProjectInfo(projectId: number, queryParams: { impulseId?: number; }): Promise<{ success: boolean; error?: string; project: { name: string; whitelabelId: number | null; }; }>; }; devices: { renameDevice(projectId: number, deviceId: string, opts: { name: string; }): Promise<{ success: boolean; error?: string; }>; createDevice(projectId: number, opts: { deviceId: string; deviceType: string; ifNotExists: boolean; }): Promise<{ success: boolean; error?: string; }>; getDevice(projectId: number, deviceId: string): Promise<{ success: boolean; error?: string; device?: { name: string; }; }>; }; whitelabels: { getWhitelabelDomain(whitelabelId: number | null): Promise<{ success: boolean; domain?: string; }>; }; }; } declare const RemoteMgmt_base: new () => TypedEmitter<{ authenticationFailed: () => void; newModelAvailable: () => void; }>; export declare class RemoteMgmt extends RemoteMgmt_base { private _ws; private _projectId; private _devKeys; private _eiConfig; private _device; private _state; private _snapshotStreamResolution; private _createWebsocket; private _checkNameCb; private _monitor; private _isConnected; private _inferenceInfo; constructor(projectId: number, devKeys: { apiKey: string; hmacKey: string; }, eiConfig: RemoteMgmtConfig, device: RemoteMgmtDevice, monitor: ModelMonitor | undefined, createWebsocket: (url: string) => IWebsocket, checkNameCb: (currName: string) => Promise); get isConnected(): boolean; connect(reconnectOnFailure?: boolean, inferenceInfo?: MgmtInterfaceInferenceInfo | undefined): Promise; disconnect(): void; inferenceSummaryListener(ev: InferenceMetrics): void; impulseRecordListener(ev: ImpulseRecord): void; impulseRecordsResponseListener(ev: ImpulseRecord | ImpulseRecordError): void; private registerPingPong; private attachWsHandlers; sendModelUpdateStatus(model: ModelInformation, success: boolean, error?: string): Promise; private sendHello; private checkName; private getProjectInfo; private waitForSnapshotStartedOrIdle; private waitForInferenceStreamStartedOrIdle; private sleep; } export {};