import INbtTag from "./INbtTag";
export declare enum NbtTagType {
    end = 0,
    byte = 1,
    short = 2,
    int = 3,
    long = 4,
    float = 5,
    double = 6,
    byteArray = 7,
    string = 8,
    list = 9,
    compound = 10,
    intArray = 11,
    longArray = 12,
    unknown = 99
}
export default class NbtBinaryTag {
    type: NbtTagType;
    childTagType: NbtTagType;
    name: string;
    value: string | number | bigint | bigint[] | number[] | boolean | null;
    isListChild: boolean;
    private _children;
    get childrenWithEnd(): NbtBinaryTag[];
    getTagChildren(): NbtBinaryTag[];
    getTagLength(): number;
    get lastTagIsEnd(): boolean;
    get valueAsString(): string;
    get valueAsJSONObject(): any;
    get valueAsNumericArray(): any[];
    get valueAsStringArray(): any[];
    get valueAsBoolean(): boolean;
    get valueAsInt(): number;
    get valueAsFloat(): number;
    get valueAsBigInt(): bigint;
    constructor(type: NbtTagType, name: string, isListChild: boolean);
    setListFromArray(arr: number[]): void;
    pushTag(tag: NbtBinaryTag): void;
    prepareForSave(includingChildren: boolean): void;
    getByteSize(): number;
    getJsonString(): string;
    getJson(): INbtTag;
    writeBytes(bytes: Uint8Array, index: number, littleEndian: boolean): number;
    removeTagByIndex(index: number): boolean;
    removeTag(tagName: string): boolean;
    ensureTag(tagName: string, tagType: NbtTagType): NbtBinaryTag;
    addTag(tagType: NbtTagType, tagName?: string): NbtBinaryTag;
    getProperty(name: string): NbtBinaryTag | null;
    child(name: string): NbtBinaryTag | null;
    find(name: string): NbtBinaryTag | null;
}
