/// <reference types="node" />
/**
 * An NBT reader implement in JS.
 */
import { File } from "gfsl";
export declare enum tagTypes {
    "TAG_End" = 0,
    "TAG_Byte" = 1,
    "TAG_Short" = 2,
    "TAG_Int" = 3,
    "TAG_Long" = 4,
    "TAG_Float" = 5,
    "TAG_Double" = 6,
    "TAG_Byte_Array" = 7,
    "TAG_String" = 8,
    "TAG_List" = 9,
    "TAG_Compound" = 10,
    "TAG_Int_Array" = 11,
    "TAG_Long_Array" = 12
}
export type typedNBT = {
    [key: string]: {
        tag: tagTypes.TAG_Compound;
        value: typedNBT;
    } | {
        tag: tagTypes.TAG_Byte_Array;
        value: {
            tag: tagTypes.TAG_Byte;
            value: number[];
        };
    } | {
        tag: tagTypes.TAG_Int_Array;
        value: {
            tag: tagTypes.TAG_Int;
            value: number[];
        };
    } | {
        tag: tagTypes.TAG_Long_Array;
        value: {
            tag: tagTypes.TAG_Long;
            value: number[];
        };
    } | {
        tag: tagTypes.TAG_List;
        value: {
            tag: tagTypes.TAG_Compound;
            value: typedNBT[];
        } | {
            tag: tagTypes.TAG_Byte_Array;
            value: {
                tag: tagTypes.TAG_Byte;
                value: number[][];
            };
        } | {
            tag: tagTypes.TAG_Int_Array;
            value: {
                tag: tagTypes.TAG_Int;
                value: number[][];
            };
        } | {
            tag: tagTypes.TAG_Long_Array;
            value: {
                tag: tagTypes.TAG_Long;
                value: number[][];
            };
        } | {
            tag: tagTypes.TAG_List;
            value: {
                tag: tagTypes;
                value: string[][] | number[][] | typedNBT[][];
            };
        } | {
            tag: tagTypes;
            value: string[] | number[];
        };
    } | {
        tag: tagTypes;
        value: string | number;
    };
};
/**Takes in NBT data and returns a json object representation of it */
export declare function readNBT<T>(raw: Buffer): T;
/**Takes in NBT data and returns a node based json representation of it */
export declare function readNBT(raw: Buffer, typed: true): typedNBT;
/**Reads a .DAT file and returns a json object representation of it */
export declare function readDat<T>(path: File): Promise<T>;
/**Reads a .DAT file and returns a  node based json representation of it */
export declare function readDat(path: File, typed: true): Promise<typedNBT>;
