import { ChartModifierBase } from "../../Charting/ChartModifiers/ChartModifierBase";
import { IncludedItems } from "../../Core/IncludedItems";
import type { EChart3DModifierType } from "../../types/ChartModifierType";
import type { TModifierExecuteCondition } from "../../types/ChartModifiers/TModifierExecuteCondition";
import { EModifierType } from "../../types/ModifierType";
import type { IRenderableSeries3D } from "../Visuals/RenderableSeries/BaseRenderableSeries3D";
import type { SciChart3DSurface } from "../Visuals/SciChart3DSurface";
export interface IChartModifierBase3DOptions {
    /**
     * A unique Id for the {@link ChartModifierBase3D}
     */
    id?: string;
    /**
     * The primary action execute condition that modifier should respond to
     */
    executeCondition?: TModifierExecuteCondition;
    /**
     * A list of 3D renderable series to include to this modifier
     * @remarks Also see {@link ChartModifierBase3D.includedSeries} which has methods to include or exclude a series by instance
     */
    includedSeriesIds?: string[];
    /**
     * A list of 3D renderable series to exclude from this modifier
     * @remarks Also see {@link ChartModifierBase3D.includedSeries} which has methods to include or exclude a series by instance
     */
    excludedSeriesIds?: string[];
}
/**
 * Defines a base class to a ChartModifier3D - a class which provides Zoom, Pan, Tooltip or interaction behavior
 * to SciChart - High Performance Realtime {@link https://www.scichart.com/javascript-chart-features | JavaScript 3D Charts}
 */
export declare abstract class ChartModifierBase3D extends ChartModifierBase<SciChart3DSurface> {
    /**
     * The type of chartmodifier. See {@link EChart3DModifierType} for available options
     */
    abstract readonly type: EChart3DModifierType | string;
    protected typeMap: Map<string, string>;
    /**
     * The helper property to get and set the list of included renderable series
     */
    includedSeries: IncludedItems;
    /**
     * Creates an instance of a {@link ChartModifierBase3D}
     * @param options Optional parameters of type {@link IChartModifierBase3DOptions} used to configure the modifier
     */
    constructor(options?: IChartModifierBase3DOptions);
    /**
     * @inheritDoc
     */
    get modifierType(): EModifierType;
    /**
     * Gets all series on the parent surface.
     * @remarks This function allows mocking in tests
     */
    getAllSeries(): IRenderableSeries3D[];
    /**
     * Tests if the series is included or excluded, by default it must also be visible to be included.
     * To ignore the visibility check, override this with
     * ```return this.includedSeries.testIsIncluded(series.id);```
     * @param series
     * @private
     */
    protected testIsIncludedSeries(series: IRenderableSeries3D): boolean;
    /**
     * Includes renderable series. Returns True if the included items list has changed after the operation.
     */
    includeSeries(series: IRenderableSeries3D, isIncluded: boolean): boolean;
    /**
     * Returns all visible and included renderable series. The list also contains included visible stacked renderable series
     * This calls this.testIsIncludedSeries so it is best to customise the including check behaviour there.
     */
    getIncludedRenderableSeries(): IRenderableSeries3D[];
    toJSON(): {
        type: string;
        options: Required<Omit<IChartModifierBase3DOptions, never>>;
    };
}
