import { BaseDataSeries } from "../BaseDataSeries";
import { EDataSeriesType } from "../IDataSeries";
import { EDataSeriesField, IXyFilterOptions, XyFilterBase } from "./XyFilterBase";
/**
 * Options for the {@link XyRatioFilter}
 */
export interface IXyRatioFilterOptions extends IXyFilterOptions {
    /** The dataSeries to divide by */
    divisorSeries: BaseDataSeries;
    /** The field in the divisor series to use */
    divisorField?: EDataSeriesField;
}
/**
 * An XyDataSeries where each point is the ratio of the original series and the given divisorSeries
 */
export declare class XyRatioFilter extends XyFilterBase {
    private readonly divisorSeries;
    private readonly divisorField;
    constructor(originalSeries: BaseDataSeries, options: IXyRatioFilterOptions);
    toJSON(excludeData?: boolean): {
        options: IXyRatioFilterOptions & {
            filter?: any;
        };
        type: EDataSeriesType;
    };
    protected filterOnAppend(count: number): void;
    protected filterOnUpdate(index: number): void;
    protected filterOnInsert(startIndex: number, count: number): void;
    protected filterOnRemove(startIndex: number, count: number): void;
    protected filterAll(): void;
    /**
     * Both series must be the same length AND aligned at the latest index before computing the
     * ratio. The latest-X comparison catches the FIFO-at-capacity case where both counts saturate
     * at fifoCapacity even though one series has been appended to and the other has not yet.
     */
    private areSourcesInSync;
    private filter;
    private getDivisorYValues;
    private onDivisorDataChanged;
}
