/// <reference types="node" />
/// <reference types="node" />
import 'reflect-metadata';
export declare function EnumField(enumType: object): (target: any, propertyKey: string) => void;
export declare enum OperationMode {
    OFF = 0,
    LOW_POWER = 1,
    FAULT = 2,
    BULK = 3,
    ABSORPTION = 4,
    FLOAT = 5,
    STORAGE = 6,
    EQUALIZE_MANUAL = 7,
    INVERTING = 9,
    POWER_SUPPLY = 11,
    STARTING_UP = 245,
    REPEATED_ABSORPTION = 246,
    RECONDITION = 247,
    BATTERY_SAFE = 248,
    ACTIVE = 249,
    EXTERNAL_CONTROL = 252,
    NOT_AVAILABLE = 255
}
export declare enum ChargerError {
    NO_ERROR = 0,
    TEMPERATURE_BATTERY_HIGH = 1,
    VOLTAGE_HIGH = 2,
    REMOTE_TEMPERATURE_A = 3,
    REMOTE_TEMPERATURE_B = 4,
    REMOTE_TEMPERATURE_C = 5,
    REMOTE_BATTERY_A = 6,
    REMOTE_BATTERY_B = 7,
    REMOTE_BATTERY_C = 8,
    HIGH_RIPPLE = 11,
    TEMPERATURE_BATTERY_LOW = 14,
    TEMPERATURE_CHARGER = 17,
    OVER_CURRENT = 18,
    BULK_TIME = 20,
    CURRENT_SENSOR = 21,
    INTERNAL_TEMPERATURE_A = 22,
    INTERNAL_TEMPERATURE_B = 23,
    FAN = 24,
    OVERHEATED = 26,
    SHORT_CIRCUIT = 27,
    CONVERTER_ISSUE = 28,
    OVER_CHARGE = 29,
    INPUT_VOLTAGE = 33,
    INPUT_CURRENT = 34,
    INPUT_POWER = 35,
    INPUT_SHUTDOWN_VOLTAGE = 38,
    INPUT_SHUTDOWN_CURRENT = 39,
    INPUT_SHUTDOWN_FAILURE = 40,
    INVERTER_SHUTDOWN_41 = 41,
    INVERTER_SHUTDOWN_42 = 42,
    INVERTER_SHUTDOWN_43 = 43,
    INVERTER_OVERLOAD = 50,
    INVERTER_TEMPERATURE = 51,
    INVERTER_PEAK_CURRENT = 52,
    INVERTER_OUPUT_VOLTAGE_A = 53,
    INVERTER_OUPUT_VOLTAGE_B = 54,
    INVERTER_SELF_TEST_A = 55,
    INVERTER_SELF_TEST_B = 56,
    INVERTER_AC = 57,
    INVERTER_SELF_TEST_C = 58,
    COMMUNICATION = 65,
    SYNCHRONISATION = 66,
    BMS = 67,
    NETWORK_A = 68,
    NETWORK_B = 69,
    NETWORK_C = 70,
    NETWORK_D = 71,
    PV_INPUT_SHUTDOWN_80 = 80,
    PV_INPUT_SHUTDOWN_81 = 81,
    PV_INPUT_SHUTDOWN_82 = 82,
    PV_INPUT_SHUTDOWN_83 = 83,
    PV_INPUT_SHUTDOWN_84 = 84,
    PV_INPUT_SHUTDOWN_85 = 85,
    PV_INPUT_SHUTDOWN_86 = 86,
    PV_INPUT_SHUTDOWN_87 = 87,
    CPU_TEMPERATURE = 114,
    CALIBRATION_LOST = 116,
    FIRMWARE = 117,
    SETTINGS = 119,
    TESTER_FAIL = 121,
    INTERNAL_DC_VOLTAGE_A = 200,
    INTERNAL_DC_VOLTAGE_B = 201,
    SELF_TEST = 202,
    INTERNAL_SUPPLY_A = 203,
    INTERNAL_SUPPLY_B = 205,
    INTERNAL_SUPPLY_C = 212,
    INTERNAL_SUPPLY_D = 215
}
export declare enum OffReason {
    NO_REASON = 0,
    NO_INPUT_POWER = 1,
    SWITCHED_OFF_SWITCH = 2,
    SWITCHED_OFF_REGISTER = 4,
    REMOTE_INPUT = 8,
    PROTECTION_ACTIVE = 16,
    PAY_AS_YOU_GO_OUT_OF_CREDIT = 32,
    BMS = 64,
    ENGINE_SHUTDOWN = 128,
    ANALYSING_INPUT_VOLTAGE = 256
}
export declare enum AlarmReason {
    NO_ALARM = 0,
    LOW_VOLTAGE = 1,
    HIGH_VOLTAGE = 2,
    LOW_SOC = 4,
    LOW_STARTER_VOLTAGE = 8,
    HIGH_STARTER_VOLTAGE = 16,
    LOW_TEMPERATURE = 32,
    HIGH_TEMPERATURE = 64,
    MID_VOLTAGE = 128,
    OVERLOAD = 256,
    DC_RIPPLE = 512,
    LOW_V_AC_OUT = 1024,
    HIGH_V_AC_OUT = 2048,
    SHORT_CIRCUIT = 4096
}
export declare enum AlarmNotification {
    NO_ALARM = 0,
    WARNING = 1,
    ALARM = 2
}
export declare enum ACInState {
    AC_IN_1 = 0,
    AC_IN_2 = 1,
    NOT_CONNECTED = 2,
    UNKNOWN = 3
}
export interface AdvertisementContainer {
    prefix: number;
    modelId: number;
    readoutType: number;
    iv: number;
    encryptedData: Buffer;
}
export declare abstract class Device {
    protected advertisementKey: string;
    constructor(advertisementKey: string);
    protected parseContainer(data: Buffer): AdvertisementContainer;
    protected getModelId(data: Buffer): number;
    protected decrypt(data: Buffer): Buffer;
    parse(data: Buffer): void;
    abstract parseDecrypted(decrypted: Buffer): void;
    toJson(): Record<string, any>;
}
export declare function kelvinToCelsius(tempInKelvin: number): number;
export declare class BitReader {
    private data;
    private bitPosition;
    constructor(data: Buffer);
    readBit(): number;
    readUnsignedInt(numBits: number): number;
    readSignedInt(numBits: number): number;
    static toSignedInt(value: number, numBits: number): number;
}
