import { MarketData } from '../interfaces';
export interface AggregatedData extends MarketData {
    [key: string]: any;
}
type IntervalUnit = 's' | 'm' | 'h' | 'd' | 'w' | 'M' | 'y';
interface IntervalConfig {
    value: number;
    unit: IntervalUnit;
}
/**
 * Parse interval string like '1s', '5m', '1h', etc.
 */
export declare function parseInterval(interval?: string): IntervalConfig;
/**
 * Get the start of an interval for a given date
 */
export declare function getIntervalStart(date: Date, config: IntervalConfig): Date;
/**
 * Default aggregators using lodash
 */
export declare const defaultAggregators: {
    sum: (values: number[]) => number;
    mean: (values: number[]) => number;
    avg: (values: number[]) => number;
    average: (values: number[]) => number;
    median: (values: number[]) => number;
    min: (values: number[]) => number;
    max: (values: number[]) => number;
    first: (values: any[]) => any;
    last: (values: any[]) => any;
    count: (values: any[]) => number;
    stdDev: (values: number[]) => number;
};
/**
 * Aggregate market data by time intervals
 * @param data Array of market data points
 * @param interval Interval string (e.g., '1s', '5m', '1h', '1d', '1w', '1M', '1y')
 * @param customAggregators Optional custom aggregation functions for additional fields
 */
export declare function aggregateByInterval(data: MarketData[], interval: string, customAggregators?: Record<string, (values: any[]) => any>): AggregatedData[];
/**
 * Helper function to create common aggregation patterns
 */
export declare function createAggregator(data: MarketData[], interval: string, fieldAggregators: Record<string, keyof typeof defaultAggregators | ((values: any[]) => any)>): AggregatedData[];
export declare function aggregateWithStats(data: MarketData[], interval: string): AggregatedData[];
export {};
