/**
 * 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;
    /**
     * Source geography type (ward, lsoa21, country, etc.)
     */
    sourceType: GeographicEntityType;
    /**
     * Target geography code (for geography-to-geography coverage)
     * Mutually exclusive with coverageType
     */
    targetCode?: string;
    /**
     * Target geography type (for geography-to-geography coverage)
     * Required when targetCode is provided
     */
    targetType?: GeographicEntityType;
    /**
     * Coverage layer type (flood_risk, noise_pollution, etc.)
     * Mutually exclusive with targetCode/targetType
     */
    coverageType?: string;
    /**
     * Filter by specific coverage value (high, medium, low)
     * Only applicable with coverageType
     */
    coverageValue?: string;
    /**
     * Result aggregation method
     * - total: Single coverage percentage
     * - breakdown: Coverage by value/category
     */
    aggregation?: 'total' | 'breakdown';
}
/**
 * Individual coverage result
 */
export interface CoverageResult {
    /**
     * Identifier for the coverage area (targetCode OR coverageValue)
     */
    identifier: string;
    /**
     * Area covered in square metres
     */
    area: number;
    /**
     * Coverage percentage (0-100)
     */
    percentage: number;
    /**
     * Additional metadata about the coverage result
     */
    metadata?: Record<string, any>;
}
/**
 * Coverage endpoint response
 */
export interface CoverageResponse {
    /**
     * Source geography code that was analysed
     */
    sourceCode: string;
    /**
     * Source geography type
     */
    sourceType: GeographicEntityType;
    /**
     * Total area of source geography in square metres
     */
    totalArea: number;
    /**
     * Target geography code (for geography-to-geography queries)
     */
    targetCode?: string;
    /**
     * Target geography type (for geography-to-geography queries)
     */
    targetType?: GeographicEntityType;
    /**
     * Coverage layer type (for geography-to-type queries)
     */
    coverageType?: string;
    /**
     * Coverage value filter applied (for geography-to-type queries)
     */
    coverageValue?: string;
    /**
     * Array of coverage results
     */
    coverage: CoverageResult[];
}
