///
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 {};