import { LogLevel } from "../dtc.js";
import { BaseDecoder } from "./BaseDecoder.js";
export declare class CanDecoder extends BaseDecoder {
    private singleFrameDecoder;
    protected leftoverByte: string | null;
    protected expectedDTCCount: number;
    protected currentDTCCount: number;
    protected rawDtcObjects: string[];
    private modeResponse;
    constructor(modeResponse?: number);
    setModeResponse(response: number): void;
    private bindMethodsToSingleFrameDecoder;
    decodeDTCs(rawResponseBytes: number[][]): string[];
    reset(): void;
    private _extractBytesFromCANFrame;
    private _extractBytesFromData;
    private _getNibbleValue;
    private _processDTCBytes;
    protected _decodeDTC(byte1: string, byte2: string): string | null;
    protected _dtcToString(dtc: string): string | null;
    protected _log(level: LogLevel, ...message: unknown[]): void;
    protected setDTC(dtc: string): void;
    protected getModeResponseByte(): number;
    private _determineFrameType;
    private _extractBytesFromColonFrame;
    private _extractBytesFromNoColonFrame;
    protected parseDTCStatus(statusByte: number): {
        milActive: boolean;
        dtcCount: number;
        currentError: boolean;
        pendingError: boolean;
        confirmedError: boolean;
        egrSystem: boolean;
        oxygenSensor: boolean;
        catalyst: boolean;
    };
    private _isMultiFrameResponse;
    private _isCarFormat;
    private _isEmptyAsciiFormat;
    private _isAsciiHexFormat;
    private _processStandardAsciiHexFormat;
    private _processCarAsciiHexFormat;
}
