import { ISubChartDefinition } from "../../Builder/buildSurface";
import { Rect } from "../../Core/Rect";
import { Thickness } from "../../Core/Thickness";
import { ESciChartSurfaceType } from "../../types/SciChartSurfaceType";
import { ESubChartClippingMode } from "../../types/SubChartClippingMode";
import { TSubSurfaceCoordinateMode } from "../../types/SubSurfaceCoordinateMode";
import { TSubSurfacePosition } from "../../types/SubSurfacePosition";
import { TSciChart } from "../../types/TSciChart";
import { BrushCache } from "../Drawing/BrushCache";
import { WebGlRenderContext2D } from "../Drawing/WebGlRenderContext2D";
import { I2DSubSurfaceOptions, I2DSurfaceOptions } from "./I2DSurfaceOptions";
import { ISciChartSubSurface } from "./ISciChartSubSurface";
import { ISciChartSurface } from "./ISciChartSurface";
import { ISciChartSubSurfaceOptions } from "./sciChartSubSurfaceCommon";
import { SciChartSurface } from "./SciChartSurface";
/**
 * @summary The {@link SciChartSubSurface} is the surface created within another surface
 * @description
 * It can be added using {@link SciChartSubSurface.createSubSurface} method.
 *
 * To update the positioning of the {@link SciChartSubSurface}, use {@link SciChartSubSurface.subPosition};
 * also you can call {@link SciChartSubSurface.updateSubLayout} to refresh the layout of the sub-surface.
 * @remarks
 * It is not possible to have more than one level of nested sub-surfaces.
 */
export declare class SciChartSubSurface extends SciChartSurface implements ISciChartSubSurface {
    static createSubSurface(parentSurface: ISciChartSurface, options?: I2DSubSurfaceOptions): SciChartSubSurface;
    readonly isSubSurface: boolean;
    /** @inheritDoc */
    readonly subChartContainer: HTMLDivElement;
    topSectionClass: string;
    leftSectionClass: string;
    bottomSectionClass: string;
    rightSectionClass: string;
    /** @inheritDoc */
    backgroundFillBrushCache: BrushCache;
    protected isTransparentProperty: boolean;
    protected clippingModeProperty: ESubChartClippingMode;
    private subPositionProperty;
    private coordinateModeProperty;
    private parentXAxisIdProperty;
    private parentYAxisIdProperty;
    private subChartContainerId;
    private parentSurfaceProperty;
    private isVisibleProperty;
    private sectionScaleProperty;
    /**
     * Creates an instance of the {@link SciChartSubSurface}
     * @param webAssemblyContext The {@link TSciChart | SciChart 2D WebAssembly Context} containing native methods and
     * access to our WebGL2 Engine and WebAssembly numerical methods
     * @param options optional parameters of type {@link ISciChartSubSurfaceOptions} used to configure the {@link SciChartSubSurface}
     */
    constructor(webAssemblyContext: TSciChart, options?: ISciChartSubSurfaceOptions);
    get viewRect(): Rect;
    get clipRect(): Rect;
    get clippingMode(): ESubChartClippingMode;
    set clippingMode(value: ESubChartClippingMode);
    /**
     * @inheritDoc
     */
    get isTransparent(): boolean;
    set isTransparent(value: boolean);
    /**
     * @inheritDoc
     */
    get coordinateMode(): TSubSurfaceCoordinateMode;
    set coordinateMode(coordinateMode: TSubSurfaceCoordinateMode);
    /**
     * @inheritDoc
     */
    get parentXAxisId(): string;
    set parentXAxisId(id: string);
    /**
     * @inheritDoc
     */
    get parentYAxisId(): string;
    set parentYAxisId(id: string);
    /**
     * @inheritDoc
     */
    get subPosition(): TSubSurfacePosition;
    set subPosition(value: TSubSurfacePosition);
    /**
     * @inheritDoc
     */
    get isVisible(): boolean;
    set isVisible(isVisible: boolean);
    /**
     * @inheritDoc
     */
    get sectionScale(): number;
    set sectionScale(value: number);
    /**
     * @inheritDoc
     */
    updateSubLayout(): void;
    /**
     * @inheritDoc
     */
    get parentSurface(): ISciChartSurface;
    /**
     * @inheritDoc
     */
    changeViewportSize(pixelWidth: number, pixelHeight: number): void;
    /**
     * @inheritDoc
     */
    getSubChartContainer(): HTMLDivElement;
    /**
     * @inheritDoc
     */
    getSubChartRect(): Rect;
    get currentWebGlRenderContext(): WebGlRenderContext2D;
    /**
     * @inheritDoc
     */
    delete(clearHtml?: boolean): void;
    protected getOptions(): I2DSurfaceOptions & Required<Omit<I2DSubSurfaceOptions, keyof I2DSurfaceOptions>>;
    /** Serializes the current {@link SciChartSubSurface} to a JSON definition. See {@link ISubChartDefinition} */
    toJSON(excludeData?: boolean): {
        type: ESciChartSurfaceType;
    } & ISubChartDefinition;
    protected calcPadding(): Thickness;
    /**
     * @inheritDoc
     */
    protected applySciChartBackground(background: string, renderContext: WebGlRenderContext2D): void;
    protected updateWrapper(subChartOffset: Thickness): void;
    protected getOffsets(subChartContainer: HTMLDivElement): Thickness;
}
