import { C64FileInfo } from '../types/index.js'; export declare class TapePulseDecoder { static readonly CLOCK_CYCLES = 985248; private static readonly THRESHOLD_SHORT_MAX; private static readonly THRESHOLD_MEDIUM_MAX; private static readonly THRESHOLD_PAUSE_MIN; private static readonly COUNTDOWN_FIRST; private static readonly COUNTDOWN_SECOND; private static readonly HEADER_CONTENT_SIZE; private static readonly MAX_DATA_BLOCK_BYTES; private static readonly MIN_PILOT_LENGTH; private static readonly CBM_TYPE_MAP; /** * Decode C64 programs from a stream of pulse cycles. * Uses pilot detection (runs of consecutive SHORT pulses) to locate * block boundaries, making it robust against small pulse discrepancies. */ decodeProgramsFromPulses(pulseCycles: number[], onProgress?: (current: number, total: number) => void): C64FileInfo[]; /** * Merge consecutive header+data pairs into single files if they match the Turbo Tape format */ private mergeTurboData; /** * Extract pulse cycles from a TAP buffer. Handles V0 and V1 formats. */ readTapPulses(buffer: Buffer, onProgress?: (current: number, total: number) => void): number[]; /** * Find pilot sequences: runs of consecutive SHORT pulses. * These signal the start of a data block in C64 tape format. */ private findPilots; /** * Try to decode a block of bytes starting from the given index. * Stops after maxBytes have been decoded, or when EOB is found. */ private tryDecodeBlockBounded; private classifyPulse; private tryDecodeByte; private findNextByteStart; private isEndOfBlock; private isCountdown; private cbmTypeFromHeader; private parseHeaderBlock; private isHeaderBlock; } //# sourceMappingURL=tapePulseDecoder.d.ts.map