import type { SciChartPieSurface } from "../Charting/Visuals/SciChartPieSurface/SciChartPieSurface";
import type { SciChartSurface, TWebAssemblyChart } from "../Charting/Visuals/SciChartSurface";
import type { SciChartSurfaceBase } from "../Charting/Visuals/SciChartSurfaceBase";
import type { TWebAssemblyChart3D } from "../Charting3D/Visuals/SciChart3DSurface";
import { ESciChartSurfaceType } from "../types/SciChartSurfaceType";
import type { TSciChart } from "../types/TSciChart";
import { TSciChart3D } from "../types/TSciChart3D";
import type { ISciChart2DDefinition, ISciChartPieDefinition, ISciChart3DDefinition } from "./types/SurfaceDefinitions";
import { chartReviver } from "./helpers/chartReviver";
type TSpreadSurfaceDefinition = ({
    type?: ESciChartSurfaceType.Default2D;
} & ISciChart2DDefinition) | ({
    type: ESciChartSurfaceType.Pie2D;
} & ISciChartPieDefinition) | ({
    type: ESciChartSurfaceType.Polar2D;
} & ISciChart2DDefinition) | ({
    type: ESciChartSurfaceType.Default3D;
} & ISciChart3DDefinition);
export type TSurfaceDefinition = {
    type?: ESciChartSurfaceType.Default2D;
    options?: ISciChart2DDefinition;
} | {
    type: ESciChartSurfaceType.Pie2D;
    options?: ISciChartPieDefinition;
} | {
    type: ESciChartSurfaceType.Polar2D;
    options?: ISciChart2DDefinition;
} | {
    type: ESciChartSurfaceType.Default3D;
    options?: ISciChart3DDefinition;
} | TSpreadSurfaceDefinition;
/**
 * Builds a 2D {@link SciChartSurface} using a {@link ISciChart2DDefinition} which can be pure data.
 * @remarks This method is async and must be awaited
 * @param divElementId The Div Element ID where the {@link SciChartSurface} will reside
 * @param definition the {@link ISciChart2DDefinition}
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/builder-api/simple-chart/}
 */
export declare function buildChart(divElementId: string | HTMLDivElement, definition: string | {
    type?: ESciChartSurfaceType.Default2D;
    options?: ISciChart2DDefinition;
} | ISciChart2DDefinition): Promise<TWebAssemblyChart>;
/**
 * Builds a Polar {@link SciChartPolarSurface} using a {@link ISciChart2DDefinition} which can be pure data.
 * @remarks This method is async and must be awaited
 * @param divElementId The Div Element ID where the {@link SciChartPolarSurface} will reside
 * @param definition the {@link ISciChart2DDefinition}
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/builder-api/polar-chart/}
 */
export declare function buildChart(divElementId: string | HTMLDivElement, definition: string | {
    type: ESciChartSurfaceType.Polar2D;
    options?: ISciChart2DDefinition;
} | (ISciChart2DDefinition & {
    type: ESciChartSurfaceType.Polar2D;
})): Promise<TWebAssemblyChart>;
/**
 * Builds a Pie {@link SciChartPieSurface} using a {@link ISciChartPieDefinition} which can be pure data.
 * @remarks This method is async and must be awaited
 * @param divElementId The Div Element ID where the {@link SciChartPieSurface} will reside
 * @param definition the {@link ISciChartPieDefinition}
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/builder-api/pie-chart/}
 */
export declare function buildChart(divElementId: string | HTMLDivElement, definition: string | {
    type: ESciChartSurfaceType.Pie2D;
    options?: ISciChartPieDefinition;
} | (ISciChartPieDefinition & {
    type: ESciChartSurfaceType.Pie2D;
})): Promise<SciChartPieSurface>;
/**
 * Builds a 3D {@link SciChart3DSurface} using a {@link ISciChartDefinition3D} which can be pure data.
 * @remarks This method is async and must be awaited
 * @param divElementId The Div Element ID where the {@link SciChart3DSurface} will reside
 * @param definition the {@link ISciChart3DDefinition}
 *
 * ---
 * 📚 Docs: {@link https://www.scichart.com/documentation/js/v4/2d-charts/builder-api/default-3d-chart/}
 */
export declare function buildChart(divElementId: string | HTMLDivElement, definition: string | {
    type: ESciChartSurfaceType.Default3D;
    options?: ISciChart3DDefinition;
} | (ISciChart3DDefinition & {
    type: ESciChartSurfaceType.Default3D;
})): Promise<TWebAssemblyChart3D>;
/**
 * Configures an existing surface using a definition.
 * This is useful if you need to use the wasmContext in methods or classes you use in your definition
 * @param sciChartSurface
 * @param wasmContext The webassemply context.  Pass undefined for a pie surface.
 * @param definition
 */
export declare const configureChart: (sciChartSurface: SciChartSurfaceBase, wasmContext: TSciChart, definition: string | TSurfaceDefinition) => void;
/**
 * This is just something to call to ensure that all the registrations are run before a surface is created
 */
export declare const ensureRegistrations: () => void;
export declare const chartBuilder: {
    /** @inheritdoc */
    buildChart: typeof buildChart;
    /** @inheritdoc */
    chartReviver: typeof chartReviver;
    /** @inheritdoc */
    build2DChart: (divElementId: string | HTMLDivElement, definition: string | ISciChart2DDefinition) => Promise<TWebAssemblyChart<SciChartSurface>>;
    /** @inheritdoc */
    build2DPolarChart: (divElementId: string | HTMLDivElement, definition: string | ISciChart2DDefinition) => Promise<{
        wasmContext: TSciChart;
        sciChartSurface: import("..").SciChartPolarSurface;
    }>;
    /** @inheritdoc */
    buildPieChart: (divElementId: string | HTMLDivElement, definition: string | ISciChartPieDefinition) => Promise<SciChartPieSurface>;
    /** @inheritdoc */
    configureChart: (sciChartSurface: SciChartSurfaceBase, wasmContext: TSciChart, definition: string | TSurfaceDefinition) => void;
    /** @inheritdoc */
    buildSeries: (wasmContext: TSciChart, definition: import("..").TSeriesDefinition | import("..").TSeriesDefinition[], sharedData?: import("..").TSharedDataDefinition) => import("..").IRenderableSeries[];
    /** @inheritdoc */
    buildDataSeries: (wasmContext: TSciChart, dataSeriesDefinition: import("..").TDataSeriesDefinition, sharedData?: import("..").TSharedDataDefinition, originalDataSeries?: import("..").IDataSeries) => import("..").IDataSeries;
    /** @inheritdoc */
    buildModifiers: (definition: import("..").TModifierDefinition | import("..").TModifierDefinition[]) => import("..").ChartModifierBase2D[];
    /** @inheritdoc */
    buildAxes: (wasmContext: TSciChart, definition: import("..").TAxisDefinition | import("..").TAxisDefinition[]) => import("..").AxisBase2D[];
    /** @inheritdoc */
    buildAnnotations: (definition: import("..").TAnnotationDefinition | import("..").TAnnotationDefinition[]) => import("..").IAnnotation[];
    /** @inheritdoc */
    registerType: <T extends object>(baseType: import("..").EBaseType, type: string, constructor: (options?: any) => T, overWrite?: boolean) => void;
    /** @inheritdoc */
    registerWasmType: <T_1 extends object>(baseType: import("..").EBaseType, type: string, constructor: (wasmContext: TSciChart | TSciChart3D, options?: any) => T_1, overWrite?: boolean) => void;
    /** @inheritdoc */
    registerFunction: <T_2 extends Function>(baseType: import("..").EBaseType, type: string, constructor: T_2, overWrite?: boolean) => void;
    /** @inheritdoc */
    build3DChart: (divElementId: string | HTMLDivElement, definition: string | ISciChart3DDefinition) => Promise<TWebAssemblyChart3D>;
    /** @inheritdoc */
    buildAxis3D: (wasmContext: TSciChart3D, definition: import("..").TAxis3DDefinition) => import("..").AxisBase3D;
    /** @inheritdoc */
    buildModifiers3D: (definition: import("..").TModifier3DDefinition | import("..").TModifier3DDefinition[]) => import("..").ChartModifierBase3D[];
    /** @inheritdoc */
    buildSeries3D: (wasmContext: TSciChart3D, definition: import("..").TSeriesDefinition3D | import("..").TSeriesDefinition3D[], sharedData?: import("..").TSharedDataDefinition) => import("..").IRenderableSeries3D[];
    /** @inheritdoc */
    buildDataSeries3D: (wasmContext: TSciChart3D, dataSeriesDefinition: import("..").TDataSeriesDefinition3D, sharedData?: import("..").TSharedDataDefinition) => import("..").UniformGridDataSeries3D | import("..").XyzDataSeries3D;
};
export {};
