/**
 * Geotemporal grid downsampling strategy implementation
 *
 * Specialized for weather and sea state data using a grid-based approach
 * that combines spatial and temporal dimensions.
 */
import { Downsampler, StoredData, GeotemporalGridStrategy } from '../../types';
/**
 * Geotemporal grid downsampler implementation
 */
export declare class GeotemporalGridDownsampler implements Downsampler {
    readonly type = "geotemporal-grid";
    /**
     * Downsample data using geotemporal grid strategy
     *
     * @param data - Data to downsample
     * @param strategy - Geotemporal grid strategy
     * @returns Downsampled data
     */
    downsample(data: StoredData[], strategy: GeotemporalGridStrategy): Promise<StoredData[]>;
    /**
     * Extract geotemporal points from data
     *
     * @param data - Data to extract points from
     * @returns Extracted points
     */
    private extractGeotemporalPoints;
    /**
     * Extract coordinate from data
     *
     * @param item - Data item
     * @param primaryKey - Primary key to look for
     * @param alternateKeys - Alternate keys to look for
     * @returns Coordinate value or null if not found
     */
    private extractCoordinate;
    /**
     * Create adaptive grid based on data distribution
     *
     * @param points - Points to create grid for
     * @param baseGridSize - Base grid size in degrees
     * @param adaptiveGridLevels - Number of resolution levels
     * @param vesselPosition - Current vessel position
     * @param plannedRoute - Planned route
     * @param coastalResolutionBoost - Factor to increase resolution near coasts
     * @returns Grid structure
     */
    private createAdaptiveGrid;
    /**
     * Create adaptive grid levels
     *
     * @param grid - Base grid
     * @param baseGridSize - Base grid size in degrees
     * @param adaptiveGridLevels - Number of resolution levels
     * @param vesselPosition - Current vessel position
     * @param plannedRoute - Planned route
     * @param coastalResolutionBoost - Factor to increase resolution near coasts
     */
    private createAdaptiveGridLevels;
    /**
     * Get cell key for grid
     *
     * @param lat - Latitude
     * @param lon - Longitude
     * @param level - Grid level
     * @returns Cell key
     */
    private getCellKey;
    /**
     * Assign points to grid cells
     *
     * @param points - Points to assign
     * @param grid - Grid structure
     */
    private assignPointsToGridCells;
    /**
     * Create temporal buckets within each grid cell
     *
     * @param grid - Grid structure
     * @param temporalHierarchy - Temporal hierarchy configuration
     */
    private createTemporalBuckets;
    /**
     * Create temporal level buckets
     *
     * @param cell - Grid cell
     * @param points - Points to assign
     * @param levelName - Level name
     * @param levelConfig - Level configuration
     * @param now - Current time
     */
    private createTemporalLevel;
    /**
     * Identify critical weather features
     *
     * @param points - Points to check
     * @param thresholds - Critical feature thresholds
     */
    private identifyCriticalFeatures;
    /**
     * Aggregate data within each cell-time bucket
     *
     * @param grid - Grid structure
     */
    private aggregateDataInBuckets;
    /**
     * Collect numeric fields from data object
     *
     * @param data - Data object
     * @param prefix - Field prefix
     * @param fields - Set to collect fields in
     */
    private collectNumericFields;
    /**
     * Extract values for a field from data points
     *
     * @param points - Data points
     * @param field - Field to extract
     * @returns Extracted values
     */
    private extractValues;
    /**
     * Get nested value from object
     *
     * @param obj - Object to get value from
     * @param path - Path to value
     * @returns Value or undefined
     */
    private getNestedValue;
    /**
     * Generate representative points from aggregated buckets
     *
     * @param grid - Grid structure
     * @returns Representative points
     */
    private generateRepresentativePoints;
}
/**
 * Create a new geotemporal grid downsampler
 *
 * @returns Geotemporal grid downsampler
 */
export declare function createGeotemporalGridDownsampler(): Downsampler;
