import { NumberRange } from "../../../Core/NumberRange";
import type { SCRTDoubleVector, TSciChart } from "../../../types/TSciChart";
import type { WebGlRenderContext2D } from "../../Drawing/WebGlRenderContext2D";
import { RenderPassData } from "../../Services/RenderPassData";
import type { SciChartSurface } from "../SciChartSurface";
import type { IBaseStackedCollectionOptions } from "./BaseStackedCollection";
import { BaseStackedCollection } from "./BaseStackedCollection";
import type { BaseStackedRenderableSeries } from "./BaseStackedRenderableSeries";
/**
 * Options for {@link StackedXyCollection} and its subclasses (e.g. {@link StackedMountainCollection})
 */
export interface IStackedXyCollectionOptions extends IBaseStackedCollectionOptions {
    /**
     * When true (default), positive values stack upward from the zero line and negative values stack downward independently.
     * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour.
     */
    separatePositiveNegativeStacks?: boolean;
}
export declare abstract class StackedXyCollection<T extends BaseStackedRenderableSeries> extends BaseStackedCollection<T> {
    private separatePositiveNegativeStacksProperty;
    /**
     * X values unwound from a FIFO circular buffer into logical (time) order. Only populated when
     * the source series are FIFO and not sweeping. The accumulated value vectors are built in the
     * same logical order, so X and Y stay aligned without going through the resampler (which
     * stacked collections bypass — they build their own RenderPassData in {@link draw}).
     */
    private unwoundXValuesProperty;
    /**
     * Creates an instance of the {@link StackedMountainCollection}
     * @param webAssemblyContext The {@link TSciChart | SciChart WebAssembly Context} containing
     * native methods and access to our WebGL2 WebAssembly Drawing Engine
     * @param options Optional parameters of type {@link IStackedXyCollectionOptions} to configure the series
     */
    constructor(webAssemblyContext: TSciChart, options?: IStackedXyCollectionOptions);
    /** @inheritDoc */
    updateAccumulatedVectors(): void;
    /**
     * True when the stacked source series are FIFO and not sweeping, in which case the circular
     * buffer must be unwound into logical order for drawing.
     */
    private get isSourceFifo();
    /**
     * Rebuilds {@link unwoundXValuesProperty} in logical order from the (shared) source X values
     * when the source is a non-sweeping FIFO buffer. Cleared/ignored otherwise.
     */
    private buildUnwoundXValues;
    /** @inheritDoc */
    protected getXValuesForRange(): SCRTDoubleVector;
    /** @inheritDoc */
    delete(): void;
    /** @inheritDoc */
    draw(renderContext: WebGlRenderContext2D, renderPassData: RenderPassData): void;
    /** @inheritDoc */
    getXRange(): NumberRange;
    /** @inheritDoc */
    getYRange(xVisibleRange: NumberRange, isXCategoryAxis: boolean): NumberRange;
    /** @inheritDoc */
    onAttach(scs: SciChartSurface): void;
    /** @inheritDoc */
    onDetach(): void;
    /** @inheritDoc */
    notifyPropertyChanged(propertyName: string): void;
    /**
     * When true (default), positive values stack upward from the zero line and negative values stack downward independently.
     * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour.
     */
    get separatePositiveNegativeStacks(): boolean;
    /**
     * When true (default), positive values stack upward from the zero line and negative values stack downward independently.
     * When false, all values accumulate continuously from the previous series top, preserving legacy behaviour.
     */
    set separatePositiveNegativeStacks(value: boolean);
    /** @inheritDoc */
    hasDataSeriesValues(): boolean;
    private detachChildSeries;
    private attachChildSeries;
    private checkXValuesCorrect;
    /**
     * @param numberOfElements - number of element expected is used for performance to reserve memory
     */
    private clearAccumulatedVectors;
    private getLastVisibleSeries;
}
