import type { MapEvent, GeneratorOptions, MapTemplate } from '../types/rpgmaker.js'; interface AvailableTiles { ground?: number[]; water?: number[]; wallSide?: number[]; wallTop?: number[]; roof?: number[]; decoration?: number[]; } interface GeneratorContext { stampTileset: number; availableTiles?: AvailableTiles; interiorRoom: string; _resolved?: Record>; } declare function normalizeAvailableTiles(raw: unknown): AvailableTiles | undefined; declare function resolveTilesConfig(base: Record, avail?: AvailableTiles): Record; declare function pickTiles(ctx: GeneratorContext, key: string): Record; declare class PerlinNoise { private perm; private grad; constructor(seed: number); private fade; private lerp; private dot2; noise2d(x: number, y: number): number; fbm(x: number, y: number, octaves: number, lacunarity?: number, gain?: number): number; } declare class PRNG { private state; constructor(seed: number); next(): number; nextFloat(): number; nextInt(min: number, max: number): number; nextBool(chance?: number): boolean; } declare function makeAutotileId(kind: number, shape?: number, sheetBase?: number): number; declare const TILESETS: Record>; declare function noiseScale(base: number, w: number, h: number): number; declare const THEME_CATEGORIES: Record; declare const THEME_TEMPLATE_THEMES: Record; type TemplateMeta = { id: number; category: string; theme: string; width: number; height: number; tilesetId: number; }; declare function scoreTemplate(t: TemplateMeta, w: number, h: number, theme: string, preferredTileset: number, affinityThemes?: string[]): number; declare function bestCropOffset(map: { width: number; height: number; data: number[]; }, w: number, h: number): { ox: number; oy: number; }; declare function dominantGround(map: { width: number; height: number; data: number[]; }): number; declare function isPlaceableFloor(data: number[], w: number, h: number, x: number, y: number, flags?: number[]): boolean; declare function findFloorTile(data: number[], w: number, h: number, rng: PRNG, preferX: number, preferY: number, flags?: number[]): { x: number; y: number; } | null; declare function makeNpcEvent(id: number, x: number, y: number, name: string, dialogue?: string): MapEvent; declare function makeChestEvent(id: number, x: number, y: number): MapEvent; declare function makeBossEvent(id: number, x: number, y: number, troopId?: number): MapEvent; declare function makeTransferEvent(id: number, x: number, y: number, destMapId: number, destX: number, destY: number, trigger?: number): MapEvent; declare function makeDoorEvent(id: number, x: number, y: number, destMapId: number, destX: number, destY: number): MapEvent; declare const THEMES: string[]; declare const THEME_TILESET: Record; declare function generateTileLayoutV3(width: number, height: number, theme: string, opts?: GeneratorOptions, _unused1?: unknown, _unused2?: unknown): Promise<{ data: number[]; events: (MapEvent | null)[]; seed: number; theme: string; width: number; height: number; houses?: { x: number; y: number; w: number; h: number; doorX?: number; doorY?: number; }[]; }>; declare function loadTemplateIndex(): Promise; declare function searchTemplates(category: string, theme: string): Promise; declare function generateFromTemplate(templateId: number, opts?: GeneratorOptions): Promise<{ data: number[]; width: number; height: number; events: (MapEvent | null)[]; } | null>; declare function generateMap(opts?: GeneratorOptions): Promise<{ data: number[]; width: number; height: number; events?: (MapEvent | null)[]; seed?: number; theme?: string; } | null>; export { generateTileLayoutV3, makeNpcEvent, makeChestEvent, makeBossEvent, makeTransferEvent, makeDoorEvent }; export { scoreTemplate, bestCropOffset, dominantGround }; export { THEME_CATEGORIES, THEME_TEMPLATE_THEMES }; export { normalizeAvailableTiles, resolveTilesConfig, pickTiles }; export { generateMap }; export { generateFromTemplate }; export { searchTemplates }; export { loadTemplateIndex }; export { THEMES }; export { THEME_TILESET }; export { TILESETS }; export { PerlinNoise }; export { PRNG }; export { makeAutotileId, noiseScale, isPlaceableFloor, findFloorTile };