import { ProtocolJSONSchema } from '../../schema/ProtocolJSONSchema';
import { BaseHeader } from '../abstracts/BaseHeader';
import TLV from 'node-tlv';
declare enum ItemDataType {
    Boolean = "Boolean",
    INT8 = "INT8",
    INT16 = "INT16",
    INT32 = "INT32",
    INT64 = "INT64",
    INT8U = "INT8U",
    INT16U = "INT16U",
    INT32U = "INT32U",
    FLOAT32 = "FLOAT32",
    CODEDENUM = "CODED-ENUM",
    OCTETSTRING = "OCTET-STRING",
    VISIBLESTRING = "VISIBLE-STRING",
    TimeStamp = "TimeStamp",
    Quality = "Quality",
    Structure = "Structure"
}
type BooleanDataItem = {
    dataType: ItemDataType.Boolean;
    value: boolean;
};
type INT8DataItem = {
    dataType: ItemDataType.INT8;
    value: number;
};
type INT16DataItem = {
    dataType: ItemDataType.INT16;
    value: number;
};
type INT32DataItem = {
    dataType: ItemDataType.INT32;
    value: number;
};
type INT64DataItem = {
    dataType: ItemDataType.INT64;
    value: bigint;
};
type INT8UDataItem = {
    dataType: ItemDataType.INT8U;
    value: number;
};
type INT16UDataItem = {
    dataType: ItemDataType.INT16U;
    value: number;
};
type INT32UDataItem = {
    dataType: ItemDataType.INT32U;
    value: number;
};
type FLOAT32DataItem = {
    dataType: ItemDataType.FLOAT32;
    value: number;
};
type CODEDENUMDataItem = {
    dataType: ItemDataType.CODEDENUM;
    value: number;
};
type OCTETSTRINGDataItem = {
    dataType: ItemDataType.OCTETSTRING;
    value: string;
};
type VISIBLESTRINGDataItem = {
    dataType: ItemDataType.VISIBLESTRING;
    value: string;
};
type TimeStampDataItem = {
    dataType: ItemDataType.TimeStamp;
    value: string;
};
type QualityDataItem = {
    dataType: ItemDataType.Quality;
    value: string;
};
type StructureDataItem = {
    dataType: ItemDataType.Structure;
    value: DataItem[];
};
type DataItem = BooleanDataItem | INT8DataItem | INT16DataItem | INT32DataItem | INT64DataItem | INT8UDataItem | INT16UDataItem | INT32UDataItem | FLOAT32DataItem | CODEDENUMDataItem | OCTETSTRINGDataItem | VISIBLESTRINGDataItem | TimeStampDataItem | QualityDataItem | StructureDataItem;
export declare class Goose extends BaseHeader {
    protected TLVInstance: TLV;
    protected TLVChild: TLV[];
    SCHEMA: ProtocolJSONSchema;
    /**
     * Decode data TLV items
     * @param dataTLVs
     * @protected
     */
    protected decodeDataTLVItem(dataTLVs: TLV[]): DataItem[];
    /**
     * Encode data TLV items
     * @param dataItems
     * @protected
     */
    protected encodeDataTLVItem(dataItems: DataItem[]): TLV[];
    readonly id: string;
    readonly name: string;
    readonly nickname: string;
    match(): boolean;
}
export {};
//# sourceMappingURL=Goose.d.ts.map