UNPKG

rxpoweredup

Version:

A Typescript RxJS-based library for controlling LEGO Powered UP hubs & peripherals.

14 lines (13 loc) 931 B
import { Observable } from 'rxjs'; import { IDisposable, LastOfTuple, RawMessage } from '../types'; import { MessageType, OutboundMessageTypes } from '../constants'; import { PortCommandExecutionStatus } from './i-motors-feature'; export type WithResponseSequenceItem<TResponse> = { readonly message: RawMessage<OutboundMessageTypes>; readonly reply: Observable<TResponse>; }; export interface IOutboundMessenger extends IDisposable { sendWithResponse<TSequenceItems extends [...Array<WithResponseSequenceItem<unknown>>, WithResponseSequenceItem<unknown>], TResult extends LastOfTuple<TSequenceItems> extends WithResponseSequenceItem<infer R> ? R : never>(...sequenceItems: TSequenceItems): Observable<TResult>; sendWithoutResponse(message: RawMessage<OutboundMessageTypes>): Observable<void>; sendPortOutputCommand(message: RawMessage<MessageType.portOutputCommand>): Observable<PortCommandExecutionStatus>; }