export type TerrainStyle = "default" | "slope" | "elevation" | "satellite" | "map" | "light";
export type LandscapeProviderType = "free" | "mapbox";
export interface LandscapeDefinition {
    centerLat: number;
    centerLng: number;
    radiusMeters: number;
    layers: LandscapeLayerConfig[];
    provider?: LandscapeProviderType;
    gridExtent?: {
        x0: number;
        x1: number;
        z0: number;
        z1: number;
    };
    terrainStyle?: TerrainStyle;
}
export interface LandscapeLayerConfig {
    type: "terrain" | "buildings" | "roads" | "water" | "green";
    visible: boolean;
    color: number;
}
export interface LandscapeRecord {
    id: string;
    definition: LandscapeDefinition;
    timestamp: number;
}
export interface GeometryBuffers {
    positions: Float32Array;
    normals: Float32Array;
    indices: Uint32Array;
}
export interface ContourLineBuffers {
    minorPositions: Float32Array;
    majorPositions: Float32Array;
}
export interface OverpassElement {
    type: "node" | "way" | "relation";
    id: number;
    tags?: Record<string, string>;
    geometry?: Array<{
        lat: number;
        lon: number;
    }>;
    bounds?: {
        minlat: number;
        minlon: number;
        maxlat: number;
        maxlon: number;
    };
    members?: Array<{
        type: "node" | "way" | "relation";
        ref: number;
        role: string;
        geometry?: Array<{
            lat: number;
            lon: number;
        }>;
    }>;
}
export interface OverpassResponse {
    version: number;
    generator: string;
    osm3s: {
        timestamp_osm_base: string;
        copyright: string;
    };
    elements: OverpassElement[];
}
export interface OsmFeatures {
    buildings: OverpassElement[];
    roads: OverpassElement[];
    water: OverpassElement[];
    green: OverpassElement[];
}
