/** * Block / ore statistics for a world (#531, Phase 4). * * Produced by a full region scan (every chunk's section block-state palette is * decoded and counted). This is expensive on large worlds, so it is a batch * (pre-computed) analysis rather than a live query. */ /** A single block id and its count. */ export interface BlockCount { id: string; count: number; } /** Aggregated, cached result of a world block-stats analysis. */ export interface BlockStatsResult { /** World that was analyzed. */ world: string; /** ISO timestamp of when the analysis completed. */ analyzedAt: string; /** Wall-clock duration of the scan in milliseconds. */ durationMs: number; /** Dimensions that were scanned (`overworld` | `nether` | `end`). */ dimensions: string[]; /** Region files scanned across all dimensions. */ regionsScanned: number; /** Total non-air blocks counted. */ totalBlocks: number; /** Number of distinct non-air block types. */ blockTypeCount: number; /** Ore block id → count (includes modded `*_ore` and ancient debris). */ ores: Record; /** Most common non-air blocks, descending. */ topBlocks: BlockCount[]; } /** True for air variants, which are excluded from totals/top blocks. */ export declare function isAir(id: string): boolean; /** True for ore blocks (vanilla + modded `*_ore`, plus ancient debris). */ export declare function isOre(id: string): boolean; /** * Aggregate raw block id → count data into the summary shape: total non-air * blocks, distinct type count, ore breakdown, and the top-N non-air blocks. */ export declare function aggregateBlockCounts(counts: Record | Map, topN?: number): Pick; //# sourceMappingURL=BlockStats.d.ts.map