## API Report File for "@zwave-js/serial"

> Do not edit this file. It is a report generated by [API Extractor](https://api-extractor.com/).

```ts

/// <reference types="jest" />
/// <reference types="node" />

import type { BindingPortInterface } from '@serialport/bindings-interface';
import type { DataDirection } from '@zwave-js/core/safe';
import { DataDirection as DataDirection_2 } from '@zwave-js/core';
import { Duplex } from 'stream';
import { EventEmitter } from 'events';
import { IZWaveNode } from '@zwave-js/core';
import type { JSONObject } from '@zwave-js/shared/safe';
import type { LogContext } from '@zwave-js/core/safe';
import { MessageOrCCLogEntry } from '@zwave-js/core';
import { MessagePriority } from '@zwave-js/core';
import * as net from 'net';
import type { OpenOptions } from '@serialport/bindings-interface';
import { PassThrough } from 'stream';
import type { PortInfo } from '@serialport/bindings-interface';
import type { PortStatus } from '@serialport/bindings-interface';
import { SerialPort } from 'serialport';
import type { SetOptions } from '@serialport/bindings-interface';
import { Transform } from 'stream';
import { TransformCallback } from 'stream';
import type { TypedClassDecorator } from '@zwave-js/shared/safe';
import { TypedEventEmitter } from '@zwave-js/shared';
import type { UpdateOptions } from '@serialport/bindings-interface';
import type { ZWaveApplicationHost } from '@zwave-js/host';
import type { ZWaveHost } from '@zwave-js/host';
import { ZWaveLogContainer } from '@zwave-js/core';
import { ZWaveLoggerBase } from '@zwave-js/core';

// Warning: (ae-missing-release-tag) "createAndOpenMockedZWaveSerialPort" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function createAndOpenMockedZWaveSerialPort(path: string): Promise<{
    port: ZWaveSerialPort;
    binding: MockPortBinding;
}>;

// Warning: (ae-missing-release-tag) "DeserializingMessageConstructor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type DeserializingMessageConstructor<T extends Message> = new (host: ZWaveHost, options: MessageDeserializationOptions) => T;

// Warning: (ae-missing-release-tag) "expectedCallback" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function expectedCallback<TSent extends Message>(typeOrPredicate: FunctionType | typeof Message | ResponsePredicate<TSent>): TypedClassDecorator<Message>;

// Warning: (ae-missing-release-tag) "expectedResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const expectedResponse: <TTarget extends Message>(typeOrPredicate: FunctionType | typeof Message | ResponsePredicate<Message>) => TypedClassDecorator<TTarget>;

// Warning: (ae-missing-release-tag) "FunctionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export enum FunctionType {
    // (undocumented)
    AddNodeToNetwork = 74,
    // (undocumented)
    ApplicationCommand = 4,
    // (undocumented)
    ApplicationUpdateRequest = 73,
    // (undocumented)
    AssignReturnRoute = 70,
    // (undocumented)
    AssignSUCReturnRoute = 81,
    // (undocumented)
    BridgeApplicationCommand = 168,
    // (undocumented)
    DeleteReturnRoute = 71,
    // (undocumented)
    DeleteSUCReturnRoute = 85,
    // (undocumented)
    ExtExtWriteLongByte = 45,
    // (undocumented)
    ExtNVMReadLongBuffer = 42,
    // (undocumented)
    ExtNVMReadLongByte = 44,
    // (undocumented)
    ExtNVMWriteLongBuffer = 43,
    // (undocumented)
    FUNC_ID_APPLICATION_SLAVE_COMMAND_HANDLER = 161,
    // (undocumented)
    FUNC_ID_PROMISCUOUS_APPLICATION_COMMAND_HANDLER = 209,
    // (undocumented)
    FUNC_ID_SERIAL_API_SLAVE_NODE_INFO = 160,
    // (undocumented)
    FUNC_ID_ZW_CONTROLLER_CHANGE = 77,
    // (undocumented)
    FUNC_ID_ZW_CREATE_NEW_PRIMARY = 76,
    // (undocumented)
    FUNC_ID_ZW_ENABLE_SUC = 82,
    // (undocumented)
    FUNC_ID_ZW_EXPLORE_REQUEST_INCLUSION = 94,
    // (undocumented)
    FUNC_ID_ZW_GET_RANDOM = 28,
    // (undocumented)
    FUNC_ID_ZW_GET_VIRTUAL_NODES = 165,
    // (undocumented)
    FUNC_ID_ZW_IS_VIRTUAL_NODE = 166,
    // (undocumented)
    FUNC_ID_ZW_NEW_CONTROLLER = 67,
    // (undocumented)
    FUNC_ID_ZW_R_F_POWER_LEVEL_SET = 23,
    // (undocumented)
    FUNC_ID_ZW_REPLICATION_COMMAND_COMPLETE = 68,
    // (undocumented)
    FUNC_ID_ZW_REPLICATION_SEND_DATA = 69,
    // (undocumented)
    FUNC_ID_ZW_REQUEST_NETWORK_UPDATE = 83,
    // (undocumented)
    FUNC_ID_ZW_REQUEST_NODE_NEIGHBOR_UPDATE_OPTIONS = 90,
    // (undocumented)
    FUNC_ID_ZW_SEND_NODE_INFORMATION = 18,
    // (undocumented)
    FUNC_ID_ZW_SEND_SLAVE_DATA = 163,
    // (undocumented)
    FUNC_ID_ZW_SEND_SLAVE_NODE_INFO = 162,
    // (undocumented)
    FUNC_ID_ZW_SET_LEARN_MODE = 80,
    // (undocumented)
    FUNC_ID_ZW_SET_LEARN_NODE_STATE = 64,
    // (undocumented)
    FUNC_ID_ZW_SET_PROMISCUOUS_MODE = 208,
    // (undocumented)
    FUNC_ID_ZW_SET_SLAVE_LEARN_MODE = 164,
    // (undocumented)
    GetBackgroundRSSI = 59,
    // (undocumented)
    GetControllerCapabilities = 5,
    // (undocumented)
    GetControllerId = 32,
    // (undocumented)
    GetControllerVersion = 21,
    // (undocumented)
    GetNodeProtocolInfo = 65,
    // (undocumented)
    GetNVMId = 41,
    // (undocumented)
    GetProtocolVersion = 9,
    // (undocumented)
    GetRoutingInfo = 128,
    // (undocumented)
    GetSerialApiCapabilities = 7,
    // (undocumented)
    GetSerialApiInitData = 2,
    // (undocumented)
    GetSUCNodeId = 86,
    // (undocumented)
    HardReset = 66,
    // (undocumented)
    IsFailedNode = 98,
    // (undocumented)
    NVMOperations = 46,
    // (undocumented)
    RemoveFailedNode = 97,
    // (undocumented)
    RemoveNodeFromNetwork = 75,
    // (undocumented)
    ReplaceFailedNode = 99,
    // (undocumented)
    RequestNodeInfo = 96,
    // (undocumented)
    RequestNodeNeighborUpdate = 72,
    // (undocumented)
    SendData = 19,
    // (undocumented)
    SendDataAbort = 22,
    // (undocumented)
    SendDataBridge = 169,
    // (undocumented)
    SendDataMulticast = 20,
    // (undocumented)
    SendDataMulticastBridge = 171,
    // (undocumented)
    SerialAPISetup = 11,
    // (undocumented)
    SerialAPIStarted = 10,
    // (undocumented)
    SetApplicationNodeInformation = 3,
    // (undocumented)
    SetRFReceiveMode = 16,
    // (undocumented)
    SetSerialApiTimeouts = 6,
    // (undocumented)
    SetSUCNodeId = 84,
    // (undocumented)
    SoftReset = 8,
    // (undocumented)
    UNKNOWN_FUNC_AssignPrioritySUCReturnRoute = 88,
    // (undocumented)
    UNKNOWN_FUNC_ClearNetworkStats = 57,
    // (undocumented)
    UNKNOWN_FUNC_CLOCK_COMPARE = 50,
    // (undocumented)
    UNKNOWN_FUNC_CLOCK_GET = 49,
    // (undocumented)
    UNKNOWN_FUNC_CLOCK_SET = 48,
    // (undocumented)
    UNKNOWN_FUNC_FlashAutoProgSet = 39,
    // (undocumented)
    UNKNOWN_FUNC_GET_LIBRARY_TYPE = 189,
    // (undocumented)
    UNKNOWN_FUNC_GET_PRIORITY_ROUTE = 146,
    // (undocumented)
    UNKNOWN_FUNC_GET_PROTOCOL_STATUS = 191,
    // (undocumented)
    UNKNOWN_FUNC_GetNetworkStats = 58,
    // (undocumented)
    UNKNOWN_FUNC_GetTXCounter = 129,
    // (undocumented)
    UNKNOWN_FUNC_LOCK_ROUTE_RESPONSE = 144,
    // (undocumented)
    UNKNOWN_FUNC_MEMORY_GET_BUFFER = 35,
    // (undocumented)
    UNKNOWN_FUNC_MEMORY_GET_BYTE = 33,
    // (undocumented)
    UNKNOWN_FUNC_MEMORY_PUT_BUFFER = 36,
    // (undocumented)
    UNKNOWN_FUNC_MEMORY_PUT_BYTE = 34,
    // (undocumented)
    UNKNOWN_FUNC_REDISCOVERY_NEEDED = 89,
    // (undocumented)
    UNKNOWN_FUNC_RemoveNodeIdFromNetwork = 63,
    // (undocumented)
    UNKNOWN_FUNC_ResetTXCounter = 130,
    // (undocumented)
    UNKNOWN_FUNC_RF_POWERLEVEL_GET = 186,
    // (undocumented)
    UNKNOWN_FUNC_RTC_TIMER_CALL = 54,
    // (undocumented)
    UNKNOWN_FUNC_RTC_TIMER_CREATE = 51,
    // (undocumented)
    UNKNOWN_FUNC_RTC_TIMER_DELETE = 53,
    // (undocumented)
    UNKNOWN_FUNC_RTC_TIMER_READ = 52,
    // (undocumented)
    UNKNOWN_FUNC_SEND_DATA_META = 24,
    // (undocumented)
    UNKNOWN_FUNC_SEND_DATA_ROUTE_DEMO = 145,
    // (undocumented)
    UNKNOWN_FUNC_SEND_SUC_ID = 87,
    // (undocumented)
    UNKNOWN_FUNC_SEND_TEST_FRAME = 190,
    // (undocumented)
    UNKNOWN_FUNC_SERIAL_API_TEST = 149,
    // (undocumented)
    UNKNOWN_FUNC_SET_PRIORITY_ROUTE = 147,
    // (undocumented)
    UNKNOWN_FUNC_SET_SLEEP_MODE = 17,
    // (undocumented)
    UNKNOWN_FUNC_StoreHomeId = 132,
    // (undocumented)
    UNKNOWN_FUNC_StoreNodeInfo = 131,
    // (undocumented)
    UNKNOWN_FUNC_TIMER_CALL = 115,
    // (undocumented)
    UNKNOWN_FUNC_TIMER_CANCEL = 114,
    // (undocumented)
    UNKNOWN_FUNC_TIMER_RESTART = 113,
    // (undocumented)
    UNKNOWN_FUNC_TIMER_START = 112,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0x28 = 40,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0x66 = 102,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0x67 = 103,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0x78 = 120,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0x98 = 152,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xB4 = 180,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xB9 = 185,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xD2 = 210,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xD3 = 211,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xD4 = 212,
    // (undocumented)
    UNKNOWN_FUNC_UNKNOWN_0xEF = 239,
    // (undocumented)
    UNKNOWN_FUNC_WATCH_DOG_DISABLE = 183,
    // (undocumented)
    UNKNOWN_FUNC_WATCH_DOG_ENABLE = 182,
    // (undocumented)
    UNKNOWN_FUNC_WATCH_DOG_KICK = 184,
    // (undocumented)
    UNKNOWN_FUNC_ZMEBootloaderFlash = 244,
    // (undocumented)
    UNKNOWN_FUNC_ZMECapabilities = 245,
    // (undocumented)
    UNKNOWN_FUNC_ZMEFreqChange = 242,
    // (undocumented)
    UNKNOWN_FUNC_ZMERestore = 243,
    // (undocumented)
    UNKNOWN_FUNC_ZMESerialAPIOptions = 248
}

// Warning: (ae-missing-release-tag) "getDefaultPriority" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getDefaultPriority<T extends Message>(messageClass: T): MessagePriority | undefined;

// Warning: (ae-missing-release-tag) "getDefaultPriorityStatic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getDefaultPriorityStatic<T extends MessageConstructor<Message>>(classConstructor: T): MessagePriority | undefined;

// Warning: (ae-missing-release-tag) "getExpectedCallback" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getExpectedCallback<T extends Message>(messageClass: T): FunctionType | typeof Message | ResponsePredicate | undefined;

// Warning: (ae-missing-release-tag) "getExpectedCallbackStatic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getExpectedCallbackStatic<T extends MessageConstructor<Message>>(classConstructor: T): FunctionType | typeof Message | ResponsePredicate | undefined;

// Warning: (ae-missing-release-tag) "getExpectedResponse" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getExpectedResponse<T extends Message>(messageClass: T): FunctionType | typeof Message | ResponsePredicate | undefined;

// Warning: (ae-missing-release-tag) "getExpectedResponseStatic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getExpectedResponseStatic<T extends MessageConstructor<Message>>(classConstructor: T): FunctionType | typeof Message | ResponsePredicate | undefined;

// Warning: (ae-missing-release-tag) "getFunctionType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getFunctionType<T extends Message>(messageClass: T): FunctionType | undefined;

// Warning: (ae-missing-release-tag) "getFunctionTypeStatic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getFunctionTypeStatic<T extends MessageConstructor<Message>>(classConstructor: T): FunctionType | undefined;

// Warning: (ae-missing-release-tag) "getMessageType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getMessageType<T extends Message>(messageClass: T): MessageType | undefined;

// Warning: (ae-missing-release-tag) "getMessageTypeStatic" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function getMessageTypeStatic<T extends MessageConstructor<Message>>(classConstructor: T): MessageType | undefined;

// Warning: (ae-missing-release-tag) "gotDeserializationOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function gotDeserializationOptions(options: Record<any, any> | undefined): options is MessageDeserializationOptions;

// Warning: (ae-missing-release-tag) "INodeQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface INodeQuery {
    // (undocumented)
    nodeId: number;
}

// Warning: (ae-missing-release-tag) "isMultiStageCallback" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function isMultiStageCallback<T extends Message>(msg: T): msg is T & MultiStageCallback;

// Warning: (ae-missing-release-tag) "isNodeQuery" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function isNodeQuery<T extends Message>(msg: T): msg is T & INodeQuery;

// Warning: (ae-missing-release-tag) "isSuccessIndicator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function isSuccessIndicator<T extends Message>(msg: T): msg is T & SuccessIndicator;

// Warning: (ae-missing-release-tag) "isZWaveSerialPortImplementation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export function isZWaveSerialPortImplementation(obj: unknown): obj is ZWaveSerialPortImplementation;

// Warning: (ae-missing-release-tag) "Message" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class Message {
    constructor(host: ZWaveHost, options?: MessageOptions);
    get callbackId(): number;
    set callbackId(v: number | undefined);
    // (undocumented)
    get completedTimestamp(): number | undefined;
    // (undocumented)
    expectedCallback: FunctionType | typeof Message | ResponsePredicate | undefined;
    // (undocumented)
    expectedResponse: FunctionType | typeof Message | ResponsePredicate | undefined;
    expectsCallback(): boolean;
    expectsNodeUpdate(): boolean;
    expectsResponse(): boolean;
    static extractPayload(data: Buffer): Buffer;
    static from(host: ZWaveHost, options: MessageDeserializationOptions): Message;
    // (undocumented)
    functionType: FunctionType;
    getCallbackTimeout(): number | undefined;
    static getConstructor(data: Buffer): MessageConstructor<Message>;
    static getMessageLength(data: Buffer): number;
    getNodeId(): number | undefined;
    getNodeUnsafe(applHost: ZWaveApplicationHost): IZWaveNode | undefined;
    hasCallbackId(): boolean;
    // (undocumented)
    protected host: ZWaveHost;
    static isComplete(data?: Buffer): boolean;
    isExpectedCallback(msg: Message): boolean;
    isExpectedNodeUpdate(msg: Message): boolean;
    isExpectedResponse(msg: Message): boolean;
    markAsCompleted(): void;
    markAsSent(): void;
    needsCallbackId(): boolean;
    // (undocumented)
    payload: Buffer;
    get rtt(): number | undefined;
    serialize(): Buffer;
    toJSON(): JSONObject;
    toLogEntry(): MessageOrCCLogEntry;
    get transmissionTimestamp(): number | undefined;
    // (undocumented)
    type: MessageType;
}

// Warning: (ae-missing-release-tag) "MessageBaseOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface MessageBaseOptions {
    // (undocumented)
    callbackId?: number;
}

// Warning: (ae-missing-release-tag) "MessageConstructor" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type MessageConstructor<T extends Message> = new (host: ZWaveHost, options?: MessageOptions) => T;

// Warning: (ae-missing-release-tag) "MessageCreationOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface MessageCreationOptions extends MessageBaseOptions {
    // (undocumented)
    expectedCallback?: FunctionType | typeof Message | ResponsePredicate;
    // (undocumented)
    expectedResponse?: FunctionType | typeof Message | ResponsePredicate;
    // (undocumented)
    functionType?: FunctionType;
    // (undocumented)
    payload?: Buffer;
    // (undocumented)
    type?: MessageType;
}

// Warning: (ae-missing-release-tag) "MessageDeserializationOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface MessageDeserializationOptions {
    // (undocumented)
    data: Buffer;
    // (undocumented)
    origin?: MessageOrigin;
    parseCCs?: boolean;
}

// Warning: (ae-missing-release-tag) "MessageHeaders" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export enum MessageHeaders {
    // (undocumented)
    ACK = 6,
    // (undocumented)
    CAN = 24,
    // (undocumented)
    NAK = 21,
    // (undocumented)
    SOF = 1
}

// Warning: (ae-missing-release-tag) "MessageOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type MessageOptions = MessageCreationOptions | MessageDeserializationOptions;

// Warning: (ae-missing-release-tag) "MessageOrigin" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export enum MessageOrigin {
    // (undocumented)
    Controller = 0,
    // (undocumented)
    Host = 1
}

// Warning: (ae-missing-release-tag) "MessageType" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export enum MessageType {
    // (undocumented)
    Request = 0,
    // (undocumented)
    Response = 1
}

// Warning: (ae-missing-release-tag) "messageTypes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const messageTypes: <TTarget extends Message>(messageType: MessageType, functionType: FunctionType) => TypedClassDecorator<TTarget>;

// Warning: (ae-missing-release-tag) "MockSerialPort" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
// Warning: (ae-missing-release-tag) "MockSerialPort" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface MockSerialPort {
    // (undocumented)
    addListener<TEvent extends MockSerialPortEvents>(event: TEvent, callback: MockSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    emit<TEvent extends MockSerialPortEvents>(event: TEvent, ...args: Parameters<MockSerialPortEventCallbacks[TEvent]>): boolean;
    // (undocumented)
    off<TEvent extends MockSerialPortEvents>(event: TEvent, callback: MockSerialPortEventCallbacks[TEvent]): this;
    // Warning: (ae-forgotten-export) The symbol "MockSerialPortEvents" needs to be exported by the entry point index.d.ts
    // Warning: (ae-forgotten-export) The symbol "MockSerialPortEventCallbacks" needs to be exported by the entry point index.d.ts
    //
    // (undocumented)
    on<TEvent extends MockSerialPortEvents>(event: TEvent, callback: MockSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    once<TEvent extends MockSerialPortEvents>(event: TEvent, callback: MockSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    removeAllListeners(event?: MockSerialPortEvents): this;
    // (undocumented)
    removeListener<TEvent extends MockSerialPortEvents>(event: TEvent, callback: MockSerialPortEventCallbacks[TEvent]): this;
}

// @public (undocumented)
export class MockSerialPort extends ZWaveSerialPort {
    constructor(port: string, loggers: ZWaveLogContainer);
    // (undocumented)
    close(): Promise<void>;
    // (undocumented)
    readonly closeStub: jest.Mock;
    // (undocumented)
    static getInstance(port: string): MockSerialPort | undefined;
    // (undocumented)
    get isOpen(): boolean;
    // (undocumented)
    get lastWrite(): string | number[] | Buffer | undefined;
    // (undocumented)
    open(): Promise<void>;
    // (undocumented)
    readonly openStub: jest.Mock;
    // (undocumented)
    raiseError(err: Error): void;
    // (undocumented)
    receiveData(data: Buffer): void;
    // (undocumented)
    writeAsync(data: Buffer): Promise<void>;
    // (undocumented)
    readonly writeStub: jest.Mock;
}

// Warning: (ae-missing-release-tag) "MultiStageCallback" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export interface MultiStageCallback {
    isFinal(): boolean;
}

// Warning: (ae-missing-release-tag) "priority" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export const priority: <TTarget extends Message>(prio: MessagePriority) => TypedClassDecorator<TTarget>;

// Warning: (ae-missing-release-tag) "ResponsePredicate" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export type ResponsePredicate<TSent extends Message = Message> = (sentMessage: TSent, receivedMessage: Message) => boolean;

// Warning: (ae-missing-release-tag) "ResponseRole" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ResponseRole = "unexpected" | "confirmation" | "final" | "fatal_controller" | "fatal_node";

// Warning: (ae-missing-release-tag) "SerialAPIParser" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export class SerialAPIParser extends Transform {
    // Warning: (ae-forgotten-export) The symbol "SerialLogger" needs to be exported by the entry point index.d.ts
    constructor(logger?: SerialLogger | undefined);
    // (undocumented)
    _transform(chunk: any, encoding: string, callback: TransformCallback): void;
}

// Warning: (ae-missing-release-tag) "SerialLogContext" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface SerialLogContext extends LogContext<"serial"> {
    // (undocumented)
    direction: DataDirection;
    // (undocumented)
    header?: string;
}

// Warning: (ae-missing-release-tag) "skipBytes" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export function skipBytes(buf: Buffer, n: number): Buffer;

// Warning: (ae-missing-release-tag) "SuccessIndicator" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export interface SuccessIndicator {
    isOK(): boolean;
}

// Warning: (ae-missing-release-tag) "ZWaveSerialChunk" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ZWaveSerialChunk = MessageHeaders.ACK | MessageHeaders.NAK | MessageHeaders.CAN | Buffer;

// Warning: (ae-missing-release-tag) "ZWaveSerialPort" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class ZWaveSerialPort extends ZWaveSerialPortBase {
    constructor(port: string, loggers: ZWaveLogContainer, Binding?: typeof SerialPort);
    // (undocumented)
    get isOpen(): boolean;
}

// Warning: (ae-missing-release-tag) "ZWaveSerialPortBase" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
// Warning: (ae-missing-release-tag) "ZWaveSerialPortBase" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ZWaveSerialPortBase {
    // (undocumented)
    addListener<TEvent extends ZWaveSerialPortEvents>(event: TEvent, callback: ZWaveSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    emit<TEvent extends ZWaveSerialPortEvents>(event: TEvent, ...args: Parameters<ZWaveSerialPortEventCallbacks[TEvent]>): boolean;
    // (undocumented)
    off<TEvent extends ZWaveSerialPortEvents>(event: TEvent, callback: ZWaveSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    on<TEvent extends ZWaveSerialPortEvents>(event: TEvent, callback: ZWaveSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    once<TEvent extends ZWaveSerialPortEvents>(event: TEvent, callback: ZWaveSerialPortEventCallbacks[TEvent]): this;
    // (undocumented)
    removeAllListeners(event?: ZWaveSerialPortEvents): this;
    // (undocumented)
    removeListener<TEvent extends ZWaveSerialPortEvents>(event: TEvent, callback: ZWaveSerialPortEventCallbacks[TEvent]): this;
}

// @public (undocumented)
export class ZWaveSerialPortBase extends PassThrough {
    // (undocumented)
    [Symbol.asyncIterator]: () => AsyncIterableIterator<ZWaveSerialChunk>;
    constructor(implementation: ZWaveSerialPortImplementation, loggers: ZWaveLogContainer);
    // (undocumented)
    close(): Promise<void>;
    // (undocumented)
    get isOpen(): boolean;
    // (undocumented)
    protected logger: SerialLogger;
    // (undocumented)
    open(): Promise<void>;
    // (undocumented)
    protected serial: ReturnType<ZWaveSerialPortImplementation["create"]>;
    // (undocumented)
    writeAsync(data: Buffer): Promise<void>;
}

// Warning: (ae-missing-release-tag) "ZWaveSerialPortEventCallbacks" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ZWaveSerialPortEventCallbacks {
    // (undocumented)
    data: (data: ZWaveSerialChunk) => void;
    // (undocumented)
    error: (e: Error) => void;
}

// Warning: (ae-missing-release-tag) "ZWaveSerialPortEvents" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ZWaveSerialPortEvents = Extract<keyof ZWaveSerialPortEventCallbacks, string>;

// Warning: (ae-missing-release-tag) "ZWaveSerialPortImplementation" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export interface ZWaveSerialPortImplementation {
    // (undocumented)
    close(port: ReturnType<ZWaveSerialPortImplementation["create"]>): Promise<void>;
    // (undocumented)
    create(): Duplex & EventEmitter;
    // (undocumented)
    open(port: ReturnType<ZWaveSerialPortImplementation["create"]>): Promise<void>;
}

// Warning: (ae-missing-release-tag) "ZWaveSocket" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public
export class ZWaveSocket extends ZWaveSerialPortBase {
    constructor(socketOptions: ZWaveSocketOptions, loggers: ZWaveLogContainer);
}

// Warning: (ae-missing-release-tag) "ZWaveSocketOptions" is exported by the package, but it is missing a release tag (@alpha, @beta, @public, or @internal)
//
// @public (undocumented)
export type ZWaveSocketOptions = Omit<net.TcpSocketConnectOpts, "onread"> | Omit<net.IpcSocketConnectOpts, "onread">;

// Warnings were encountered during analysis:
//
// src/MockSerialPort.ts:109:2 - (ae-forgotten-export) The symbol "MockPortBinding" needs to be exported by the entry point index.d.ts

// (No @packageDocumentation comment for this package)

```
