import { SerialParser } from '../types/index.js';
export interface SpacePacketOptions {
    /** Length in bytes of the Time Code Field in the secondary header. Defaults to 0. */
    timeCodeFieldLength?: number;
    /** Length in bytes of the Ancillary Data Field in the secondary header. Defaults to 0. */
    ancillaryDataFieldLength?: number;
}
export interface SpacePacketHeader {
    versionNumber: number;
    identification: {
        apid: number;
        secondaryHeader: number;
        type: number;
    };
    sequenceControl: {
        packetName: number;
        sequenceFlags: number;
    };
    dataLength: number;
}
export interface SpacePacketSecondaryHeader {
    timeCode?: string;
    ancillaryData?: string;
}
export interface SpacePacket {
    header: SpacePacketHeader;
    secondaryHeader?: SpacePacketSecondaryHeader;
    data: string;
}
/**
 * Creates a Space Packet Protocol parser that buffers bytes and emits a
 * structured {@link SpacePacket} object for each complete packet received.
 *
 * @param options - Optional secondary-header field lengths.
 * @returns A {@link SerialParser} that emits {@link SpacePacket} objects.
 *
 * @example
 * ```ts
 * import { AbstractSerialDevice, spacePacket } from 'webserial-core';
 *
 * class TelemetryDevice extends AbstractSerialDevice<SpacePacket> {
 *   constructor() {
 *     super({ baudRate: 115200, parser: spacePacket({ timeCodeFieldLength: 8 }) });
 *   }
 * }
 * ```
 */
export declare function spacePacket(options?: SpacePacketOptions): SerialParser<SpacePacket>;
