export declare enum ValueType {
    Bit = "Bit",
    Enum = "Enum",
    Range = "Range",
    Reference = "Reference",
    StringComment = "StringComment"
}
export interface ModelDataValue {
    type: string;
    [key: string]: any;
}
export interface MonitoringValue {
    dataType: string;
    valueMapping: {
        [key: string]: {
            index: string;
            label: string;
        };
    };
}
export interface ModelData {
    Info: {
        productType: string;
        productCode: string;
        coutnry: string;
        modelType: string;
        model: string;
        modelName: string;
        networkType: string;
        version: string;
    };
    Value: {
        [key: string]: ModelDataValue;
    };
    MonitoringValue: {
        [key: string]: MonitoringValue;
    };
    [key: string]: any;
}
export interface BitValue {
    type: ValueType.Bit;
    options: any;
}
export interface EnumValue {
    type: ValueType.Enum;
    options: any;
}
export interface RangeValue {
    type: ValueType.Range;
    min: number;
    max: number;
    step: number;
}
export interface ReferenceValue {
    type: ValueType.Reference;
    reference: any;
}
export interface StringCommentValue {
    type: ValueType.StringComment;
    comment: string;
}
export declare class DeviceModel {
    data: ModelData;
    constructor(data: ModelData);
    get monitoringValue(): {
        [key: string]: MonitoringValue;
    };
    value(name: string): BitValue | EnumValue | RangeValue | ReferenceValue | StringCommentValue | null;
    default(name: string): any;
    enumValue(key: string, name: string): any;
    enumName(key: string, value: string): any;
    monitoringValueMapping(key: any): any;
    lookupMonitorValue(key: string, name: string, default_value?: null | string): any;
    lookupMonitorName(key: string, label: string): any;
    decodeMonitor(data: any): any;
    private decodeMonitorBinary;
}
//# sourceMappingURL=DeviceModel.d.ts.map