import type { CommandClass } from "@zwave-js/cc"; import { LongRangeMPDU, MPDU, type MPDULogContext, type MPDUParsingContext, type MessageOrCCLogEntry, NODE_ID_BROADCAST, NODE_ID_BROADCAST_LR, Protocols, type RSSI, ZWaveMPDU, type ZnifferProtocolDataRate, type ZnifferRegion } from "@zwave-js/core"; import { type ZnifferDataMessage, type ZnifferFrameInfo } from "@zwave-js/serial"; import { type AllOrNone, type Bytes, type BytesView } from "@zwave-js/shared"; import { LongRangeFrameType, ZWaveFrameType } from "./_Types.js"; /** MPDULogContext extends MPDUParsingContext, so one context serves both purposes */ export declare function znifferFrameInfoToMPDUParsingContext(frameInfo: ZnifferFrameInfo): MPDUParsingContext; export declare function znifferFrameInfoToMPDULogContext(frameInfo: ZnifferFrameInfo): MPDULogContext; export declare function parseMPDU(frame: ZnifferDataMessage, frameInfo: ZnifferFrameInfo): ZWaveMPDU | LongRangeMPDU; export declare function parseBeamFrame(frame: ZnifferDataMessage, frameInfo: ZnifferFrameInfo): ZWaveBeamStart | LongRangeBeamStart | BeamStop; export interface ZWaveBeamStartOptions { destinationNodeId: number; homeIdHash?: number; } /** The Zniffer signals the start of a beam with a separate frame */ export declare class ZWaveBeamStart { constructor(options: ZWaveBeamStartOptions); static parse(data: Bytes, ctx: MPDUParsingContext): ZWaveBeamStart; readonly homeIdHash?: number; readonly destinationNodeId: number; toLogEntry(ctx: MPDULogContext): MessageOrCCLogEntry; } export interface LongRangeBeamStartOptions { txPower: number; destinationNodeId: number; homeIdHash: number; } /** The Zniffer signals the start of a Long Range beam with a separate frame */ export declare class LongRangeBeamStart { constructor(options: LongRangeBeamStartOptions); static parse(data: Bytes, ctx: MPDUParsingContext): LongRangeBeamStart; readonly homeIdHash: number; readonly destinationNodeId: number; readonly txPower: number; toLogEntry(ctx: MPDULogContext): MessageOrCCLogEntry; } /** The Zniffer signals the end of an ongoing beam with a separate frame */ export declare class BeamStop { toLogEntry(ctx: MPDULogContext): MessageOrCCLogEntry; } /** An application-oriented representation of a Z-Wave frame that was captured by the Zniffer */ export type ZWaveFrame = { protocol: Protocols.ZWave; channel: number; region: number; rssiRaw: number; rssi?: RSSI; protocolDataRate: ZnifferProtocolDataRate; speedModified: boolean; sequenceNumber: number; homeId: number; sourceNodeId: number; } & (({ type: ZWaveFrameType.Singlecast; destinationNodeId: number; ackRequested: boolean; payload: BytesView | CommandClass; } & AllOrNone<{ direction: "outbound" | "inbound"; hop: number; repeaters: number[]; repeaterRSSI?: RSSI[]; } & ({ routedAck: false; routedError: false; failedHop?: undefined; } | { routedAck: true; routedError: false; failedHop?: undefined; } | { routedAck: false; routedError: true; failedHop: number; })>) | { type: ZWaveFrameType.Broadcast; destinationNodeId: typeof NODE_ID_BROADCAST; ackRequested: boolean; payload: BytesView | CommandClass; } | { type: ZWaveFrameType.Multicast; destinationNodeIds: number[]; payload: BytesView | CommandClass; } | { type: ZWaveFrameType.AckDirect; destinationNodeId: number; } | (({ type: ZWaveFrameType.ExplorerNormal; payload: BytesView | CommandClass; } | { type: ZWaveFrameType.ExplorerSearchResult; searchingNodeId: number; frameHandle: number; resultTTL: number; resultRepeaters: readonly number[]; } | { type: ZWaveFrameType.ExplorerInclusionRequest; networkHomeId: number; payload: BytesView | CommandClass; }) & { destinationNodeId: number; ackRequested: boolean; direction: "outbound" | "inbound"; repeaters: number[]; ttl: number; })); export type LongRangeFrame = { protocol: Protocols.ZWaveLongRange; channel: number; region: ZnifferRegion; protocolDataRate: ZnifferProtocolDataRate; rssiRaw: number; rssi?: RSSI; noiseFloor: RSSI; txPower: number; sequenceNumber: number; homeId: number; sourceNodeId: number; destinationNodeId: number; } & ({ type: LongRangeFrameType.Singlecast; ackRequested: boolean; payload: BytesView | CommandClass; } | { type: LongRangeFrameType.Broadcast; destinationNodeId: typeof NODE_ID_BROADCAST_LR; ackRequested: boolean; payload: BytesView | CommandClass; } | { type: LongRangeFrameType.Ack; incomingRSSI: RSSI; payload: BytesView; }); export type BeamFrame = { channel: number; } & ({ protocol: Protocols.ZWave; type: ZWaveFrameType.BeamStart; protocolDataRate: ZnifferProtocolDataRate; rssiRaw: number; rssi?: RSSI; region: ZnifferRegion; homeIdHash?: number; destinationNodeId: number; } | { protocol: Protocols.ZWaveLongRange; type: LongRangeFrameType.BeamStart; protocolDataRate: ZnifferProtocolDataRate; rssiRaw: number; rssi?: RSSI; region: ZnifferRegion; txPower: number; homeIdHash: number; destinationNodeId: number; } | { protocol: Protocols.ZWave; type: ZWaveFrameType.BeamStop; } | { protocol: Protocols.ZWaveLongRange; type: LongRangeFrameType.BeamStop; }); export type Frame = ZWaveFrame | LongRangeFrame | BeamFrame; export type CorruptedFrame = { channel: number; region: number; rssiRaw: number; rssi?: RSSI; protocolDataRate: ZnifferProtocolDataRate; payload: BytesView; }; export declare function mpduToFrame(mpdu: MPDU, frameInfo: ZnifferFrameInfo, payloadCC?: CommandClass): Frame; export declare function mpduToZWaveFrame(mpdu: ZWaveMPDU, frameInfo: ZnifferFrameInfo, payloadCC?: CommandClass): ZWaveFrame; export declare function mpduToLongRangeFrame(mpdu: LongRangeMPDU, frameInfo: ZnifferFrameInfo, payloadCC?: CommandClass): LongRangeFrame; export declare function beamToFrame(beam: ZWaveBeamStart | LongRangeBeamStart | BeamStop, frameInfo: ZnifferFrameInfo): Frame; export declare function znifferDataMessageToCorruptedFrame(msg: ZnifferDataMessage, frameInfo: ZnifferFrameInfo): CorruptedFrame; //# sourceMappingURL=MPDU.d.ts.map