/**
 * Coverage API Types
 *
 * /api/areas/coverage endpoint
 */
import { GeographicEntityType } from '../../common';
/**
 * Coverage endpoint query parameters
 */
export interface CoverageQueryParams {
    /**
     * Source geography code to analyse coverage for
     */
    sourceCode: string;
    /**
     * Target geography code (for geography-to-geography coverage)
     * Mutually exclusive with coverageType
     */
    targetCode?: string;
    /**
     * Coverage layer type (flood_risk, noise_road_lden, etc.)
     * Mutually exclusive with targetCode
     */
    coverageType?: string;
    /**
     * Entity type filter for intersection analysis
     * Only applicable with coverageType
     * Examples: 'building', 'parcels_gb', 'postcode'
     */
    intersectsWith?: GeographicEntityType;
}
/**
 * Individual coverage result
 */
export interface CoverageResult {
    /**
     * Identifier for the coverage area (e.g., 'flood_risk_high', 'E06000001')
     */
    identifier: string;
    /**
     * Area covered in square metres
     */
    area: number;
    /**
     * Coverage percentage of relevant area (source area or intersecting entities)
     */
    percentage: number;
    /**
     * Additional metadata about the coverage result
     */
    metadata?: {
        /**
         * Category name for categorized data (high, medium, low)
         */
        category?: string;
        /**
         * Count of entities affected (for intersectsWith queries)
         */
        entityCount?: number;
        /**
         * Total count of entities in source area (for intersectsWith queries)
         */
        totalEntities?: number;
        /**
         * Additional context (e.g., dB range for noise)
         */
        [key: string]: any;
    };
}
/**
 * Coverage endpoint response
 */
export interface CoverageResponse {
    /**
     * Source geography code that was analysed
     */
    sourceCode: string;
    /**
     * Source geography name (looked up from database)
     */
    sourceName: string;
    /**
     * Source geography type (looked up from database)
     */
    sourceType: GeographicEntityType;
    /**
     * Total area of source geography in square metres
     */
    sourceArea: number;
    /**
     * Target geography code (for geography-to-geography queries)
     */
    targetCode?: string;
    /**
     * Target geography name (for geography-to-geography queries)
     */
    targetName?: string;
    /**
     * Coverage layer type (for environmental coverage queries)
     */
    coverageType?: string;
    /**
     * Entity type used for intersection analysis
     */
    intersectsWith?: GeographicEntityType;
    /**
     * Array of coverage results
     */
    coverage: CoverageResult[];
}
