import type { isValidFloat32Array, ProcessInput, ScanSegment, SpectrumConfig, SpectrumData, SpectrumOutputData, TemplateOverData, TimestampedFloat32Array } from './types';
export default class SpectrumAnalyzer {
    protected config: Required<Omit<SpectrumConfig, 'segments' | 'bandwidthConfig' | 'onSpectrumUpdate'>>;
    private segments;
    protected antennaFactorData: Float32Array;
    protected antennaFactorSwitch: boolean;
    protected realData: TimestampedFloat32Array;
    protected maxData: isValidFloat32Array;
    protected minData: isValidFloat32Array;
    protected avgData: isValidFloat32Array;
    protected templateData: Float32Array;
    protected backgroundNoiseData: Float32Array;
    protected waterfallData: TimestampedFloat32Array[];
    protected srcIndexCache: Uint32Array;
    protected realOutputData: Float32Array;
    protected waterfallOutputData: TimestampedFloat32Array[];
    protected scanProgress: number;
    protected lastIndex: number;
    protected processTimes: number;
    protected lastProcessTime: number;
    protected cachedExceedingDatas: TemplateOverData[];
    private readonly onSpectrumUpdate?;
    constructor(config: Partial<SpectrumConfig>);
    /**
     * 处理输入数据，包括验证、拼接、统计、采样等操作。
     * @param {ProcessInput} input - 输入数据，包含数据、时间戳、分段偏移和偏移量。
     */
    process({ data, timestamp, segmentOffset, offset }: ProcessInput): void;
    /**
     * 初始化扫描分段信息，并更新最大点数。
     * @param {ScanSegment[]} segments - 扫描分段信息数组。
     */
    initializeSegments(segments: ScanSegment[]): void;
    /**
     * 设置天线因子数据，并根据开关状态重新输出数据。
     * @param {Float32Array} data - 天线因子数据，默认为根据最大点数创建的数组。
     */
    setAntennaFactor(d: Float32Array | number[]): void;
    /**
     * 设置天线因子开关，并根据开关状态重新输出数据。
     * @param {boolean} newAntennaFactorSwitch - 新的天线因子开关状态。
     */
    setAntennaFactorSwitch(newAntennaFactorSwitch: boolean): void;
    /**
     * 设置瀑布图数据，用于从外部导入已缓存的瀑布图数据。
     * @param {TimestampedFloat32Array[]} data - 瀑布图数据数组。
     */
    setWaterfallData(newWaterfallData: TimestampedFloat32Array[]): void;
    /**
     * 设置实时值数据，用于从外部导入已缓存的实时值数据。
     * @param {TimestampedFloat32Array} data - 实时值数据。
     */
    setRealData(data: TimestampedFloat32Array): void;
    /**
     * 设置最大值数据，用于从外部导入已缓存的最大值数据。
     * @param {Float32Array} data - 最大值数据。
     */
    setMaxData(data: Float32Array): void;
    /**
     * 设置最小值数据，用于从外部导入已缓存的最小值数据。
     * @param {Float32Array} data - 最小值数据。
     */
    setMinData(data: Float32Array): void;
    /**
     * 设置平均值数据，用于从外部导入已缓存的平均值数据。
     * @param {Float32Array} data - 平均值数据。
     */
    setAvgData(data: Float32Array): void;
    /**
     * 重置频谱分析器的状态，包括数据和进度。
     */
    reset(): void;
    /**
     * 获取当前频谱分析器的缓存数据。
     * @returns {Readonly<SpectrumOutputData>} - 包含实时数据、最大值、最小值、平均值、瀑布图数据和处理次数的对象。
     */
    getData(): Readonly<SpectrumOutputData>;
    /**
     * 获取频谱分析器的性能指标，包括处理时间、数据点数、瀑布图帧数、初始化状态和内存使用情况。
     * @returns {Readonly<Record<string, number | boolean>>} - 包含性能指标的对象。
     */
    getPerformanceMetrics(): Readonly<Record<string, number | boolean>>;
    /**
     * 更新采样范围，并重新输出数据。
     * @param {number} start - 采样范围的起始位置。
     * @param {number} end - 采样范围的结束位置。
     * @returns {Uint32Array} - 输出值对应的原始数据索引数组。
     */
    updateSamplingRange(start: number, end: number): Uint32Array;
    /**
     * 设置模板数据
     * @param {Float32Array | number[]} data - 模板数据
     */
    setTemplateData(data?: Float32Array | number[]): void;
    /**
     * 设置背景噪声数据
     * @param {Float32Array | number[]} data - 背景噪声数据
     */
    setBackgroundNoiseData(data?: Float32Array | number[]): void;
    /**
     * 统一的超出数据段计算和缓存更新方法
     * @param forceFullCalculation - 是否强制进行全量计算
     * @param incrementalRange - 增量计算的范围
     * @returns 计算得到的超出数据段
     */
    private updateTemplateOverData;
    /**
     * 对数据进行重采样，生成频谱输出数据。
     * @returns {Readonly<SpectrumOutputData>} - 包含重采样后的实时数据、最大值、最小值和平均值的对象。
     */
    protected resampleDataSeries(): Readonly<SpectrumOutputData>;
    /**
     * 对瀑布图输出数据进行重采样。
     */
    protected resampleWaterfallOutputData(): void;
    /**
     * 更新瀑布图数据，包括添加新数据和移除旧数据。
     * @param {TimestampedFloat32Array} data - 输入的实时数据。
     * @param {TimestampedFloat32Array} outputData - 输出的实时数据。
     */
    protected updateWaterfallData(data: TimestampedFloat32Array, outputData: TimestampedFloat32Array): void;
    /**
     * 更新最大点数，并重置。
     * @param {number} maxPoints - 新的最大点数。
     */
    protected updateMaxPoints(maxPoints: number): void;
    /**
     * 验证输入数据的索引是否在有效范围内。
     * @param {Float32Array} data - 输入数据。
     * @param {number} index - 数据的起始索引。
     */
    protected validateInput(data: Float32Array, index: number): void;
    /**
     * 统计计算，处理数据点，更新统计值（最大值、最小值、平均值）。
     * @param {Float32Array} data - 输入数据。
     * @param {number} index - 数据的起始索引。
     * @param {boolean} isOver - 数据是否处理完成。
     */
    private processDataPoints;
    private isAllValid;
    /**
     * 通知频谱数据更新，调用回调函数。
     * @param {SpectrumOutputData} processedData - 处理后的频谱数据。
     */
    private notifySpectrumUpdate;
    /**
     * 计算当前频谱分析器的内存使用情况。
     * @returns {number} - 内存使用量（字节）。
     */
    private calculateMemoryUsage;
    /**
     * 获取输出数据，根据配置的输出范围截取数据。
     * @param {TimestampedFloat32Array} [data] - 可选的输入数据，默认为实时数据。
     * @returns {Readonly<TimestampedFloat32Array>} - 输出数据。
     */
    private getOutputData;
    /**
     * 获取所有原始数据，包括实时数据、最大值、最小值、平均值、模板数据、背景噪声数据和瀑布图数据。
     * 注意：返回的是原始数据的引用，修改这些数据会直接影响分析器内部状态。
     */
    getAllRawData(): Readonly<SpectrumData>;
}
//# sourceMappingURL=index.d.ts.map