declare module "2d-dungeon" {
  export interface DungeonConfig {
    size?: number[];
    seed?: string;
    rooms?: Rooms;
    max_corridor_length?: number;
    min_corridor_length?: number;
    corridor_density?: number;
    symmetric_rooms?: boolean;
    interconnects?: number;
    max_interconnect_length?: number;
    room_count?: number;
  }

  export interface Rooms {
    initial?: Room;
    any?: Omit<Room, "position">;
  }

  export interface Room {
    min_size?: number[];
    max_size?: number[];
    max_exits?: number;
    position?: number[];
  }

  export class Dungeon {
    constructor(config?: DungeonConfig);

    generate(): void;

    minx: number;
    miny: number;
    maxx: number;
    maxy: number;
    walls: {
      rows: boolean[][];
    };
  }

  export function createDungeon(
    size: number,
    scale: number,
    options: DungeonConfig
  ): boolean[][];
}
