/// export declare const enum SlingMessageType { RUN = "run", STOP = "stop", PING = "ping", STATUS = "status", DISPLAY = "display", INPUT = "input", HELLO = "hello", MONITOR = "monitor" } export declare const slingDeviceMessageTypes: SlingMessageType[]; export declare const slingClientMessageTypes: SlingMessageType[]; export declare const slingMessageTypes: SlingMessageType[]; export declare function isValidSlingMessageType(type: string): type is SlingMessageType; export interface SlingEmptyMessage { type: T; } export declare type SlingDisplayPayloadType = keyof typeof displayPayloadTypeToId; declare const displayPayloadTypeToId: { readonly undefined: 1; readonly null: 2; readonly boolean: 3; readonly i32: 4; readonly f32: 5; readonly str: 6; readonly array: 7; readonly function: 8; }; export declare type SlingDisplayMessageType = keyof typeof displayMessageTypeToId; declare const displayMessageTypeToId: { readonly output: 0; readonly error: 1; readonly result: 2; readonly response: 4; readonly flush: 100; }; export interface SlingEmptyDisplayMessageGeneric extends SlingEmptyMessage { displayType: MT; selfFlushing: boolean; } export interface SlingValuedDisplayMessageGeneric extends SlingEmptyDisplayMessageGeneric { payloadType: PT; value: P; } export declare type SlingDisplayMessageGeneric = SlingValuedDisplayMessageGeneric | SlingValuedDisplayMessageGeneric | SlingValuedDisplayMessageGeneric | SlingValuedDisplayMessageGeneric | SlingValuedDisplayMessageGeneric; export interface SlingDisplayFlushMessage extends SlingEmptyDisplayMessageGeneric { startingId: number; endingId: number; } export declare type SlingNonFlushDisplayMessage = SlingDisplayMessageGeneric | SlingDisplayMessageGeneric; export declare type SlingDisplayMessage = SlingNonFlushDisplayMessage | SlingDisplayFlushMessage; export interface SlingMonitorNonFlushMessage extends SlingEmptyMessage { isFlush: boolean; data: string; } export interface SlingMonitorFlushMessage extends SlingEmptyMessage { isFlush: boolean; startingId: number; endingId: number; } export declare type SlingMonitorMessage = SlingMonitorFlushMessage | SlingMonitorNonFlushMessage; export declare type SlingStatus = keyof typeof slingStatusToId; declare const slingStatusToId: { readonly idle: 0; readonly running: 1; readonly prompt: 2; }; export declare type SlingStatusMessage = SlingEmptyMessage & ({ status: Exclude; } | { status: 'prompt'; prompt: string; }); export interface SlingRunMessage extends SlingEmptyMessage { code: Buffer; } export declare type SlingStopMessage = SlingEmptyMessage; export declare type SlingPingMessage = SlingEmptyMessage; export declare type SlingHelloMessage = SlingEmptyMessage & { nonce: number; }; export declare type SlingNoIdMessage = SlingRunMessage | SlingDisplayMessage | SlingStatusMessage | SlingStopMessage | SlingPingMessage | SlingHelloMessage | SlingMonitorMessage; export declare type SlingOptionalIdMessage = SlingNoIdMessage & { id?: number; }; export declare type SlingMessage = SlingNoIdMessage & { id: number; }; export declare function deserialiseMqttMessage(topic: string, data: Buffer): SlingMessage | null; export declare function serialiseMqttMessage(message: SlingOptionalIdMessage): Buffer | null; export {};