import { BaseDataSeries } from "../BaseDataSeries";
import { IXyFilterOptions, XyFilterBase } from "./XyFilterBase";
/**
 * Options for the {@link XyMovingAverageFilter}
 */
export interface IXyMovingAverageFilterOptions extends IXyFilterOptions {
    /**
     * The length of the moving average
     */
    length: number;
}
/**
 * An XyDataSeries that is the moving average of the original series
 */
export declare class XyMovingAverageFilter extends XyFilterBase {
    private lengthProperty;
    constructor(originalSeries: BaseDataSeries, options?: IXyMovingAverageFilterOptions);
    /**
     * Gets or Sets the length of the moving average
     */
    get length(): number;
    /**
     * Gets or Sets the length of the moving average
     */
    set length(value: number);
    toJSON(excludeData?: boolean): {
        options: IXyMovingAverageFilterOptions & {
            filter?: any;
        };
        type: import("../IDataSeries").EDataSeriesType;
    };
    protected onOriginalPropertyChanged(name: string): void;
    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;
    private calculateUpdate;
    /**
     * Computes the moving average for the latest `count` source points and appends them
     * to this filter. Used when the source is a FIFO data series so that newly appended
     * points continue to be processed once the source has reached capacity. If this filter
     * is also FIFO, the appendRange below will cause it to roll naturally.
     */
    private appendLatestMA;
    private calculate;
}
