import { BlockDataParser, BlockStates, ChunkRootTag, ChunkSectionTag, Palette } from "..";
import { TagData } from "../..";
import { Coordinate3D } from "../types";
export declare function mod(n: number, m: number): number;
export declare function chunkCoordinateFromIndex(index: number): Coordinate3D;
export declare function indexFromChunkCoordinate(coordinate: Coordinate3D): number;
export declare function biomeCoordinateFromIndex(index: number): Coordinate3D;
export declare function indexFromBiomeCoordinate(coordinate: Coordinate3D): number;
export declare function sectionBlockStates(section: TagData[]): BlockStates | undefined;
export declare function sectionPalette(section: TagData[]): Palette | undefined;
export declare function blockParserFromSection(section: TagData[]): BlockDataParser | undefined;
export declare class Chunk {
    static readonly AIR = -968583441;
    static readonly BLOCKS_PER_CHUNK = 4096;
    private blockStates;
    private palettes;
    private blockStatesDirty;
    root: TagData;
    static isValidChunkSectionTag(tag?: TagData): tag is ChunkSectionTag;
    static isValidChunkRootTag(tag?: TagData): tag is ChunkRootTag;
    static emptyX(y?: number, z?: number): number[][];
    constructor(root: TagData);
    containsCoordinate(c: Coordinate3D): boolean;
    coordinateKey(): string | undefined;
    getChunkCoordinates(): [number, number] | undefined;
    getCoordinates(): [number, number] | undefined;
    sections(): ChunkSectionTag | undefined;
    sortedSections(): TagData[][] | undefined;
    findBlocksByName(name: string): Coordinate3D[];
    getBlock(coordinates: Coordinate3D): {
        name: string;
        properties: {
            [key: string]: string;
        };
    };
    getSectionContainingCoordinate(coordinates: Coordinate3D): TagData[] | undefined;
    setBlock(coordinates: Coordinate3D, name: string, properties: {
        [key: string]: string;
    }): void;
    uniqueBlockNames(): Set<string>;
    worldHeights(name?: string): number[][] | undefined;
    sectionBlockStateTensor(yIndex: number): [number[][][], Palette | undefined];
    blockStateTensor(): number[][][];
    chunkData(): TagData;
}
