/**
 * Defines the type of chart to output.
 */
export declare enum ChartType {
    Line = "line",
    Bar = "bar",
    Scatter = "scatter",
}
/**
 * Defines the type of an axis.
 */
export declare enum AxisType {
    Indexed = "indexed",
    Timeseries = "timeseries",
    Category = "category",
}
/**
 * Defines the position of a horizontal label.
 */
export declare enum HorizontalLabelPosition {
    InnerRight = "inner-right",
    InnerCenter = "inner-center",
    InnerLeft = "inner-left",
    OuterRight = "outer-right",
    OuterCenter = "outer-center",
    OuterLeft = "outer-left",
}
/**
 * Defines the position of a vertical label.
 */
export declare enum VerticalLabelPosition {
    InnerTop = "inner-top",
    InnerMiddle = "inner-middle",
    InnerBottom = "inner-bottom",
    OuterTop = "outer-top",
    OuterMiddle = "outer-middle",
    OuterBottom = "outer-bottom",
}
export interface ILabelConfig {
    /**
     * The text for the label.
     */
    text?: string;
    /**
     * Position of the label.
     */
    position?: HorizontalLabelPosition | VerticalLabelPosition;
}
/**
 * Configures an axis of the chart.
 */
export interface IAxisConfig {
    /**
     * Sets the type of the axis' data.
     * Default: AxisType.Indexed ("indexed")
     */
    axisType?: AxisType;
    /**
     * Label for the axis.
     */
    label?: string | ILabelConfig;
}
/**
 * Configuration for a single series.
 */
export interface ISeriesConfig {
    /**
     * The label for the series.
     */
    label: string;
}
/**
 * Configuration for all series.
 */
export interface ISeriesConfiguration {
    [index: string]: string | ISeriesConfig;
}
/**
 * Defines the chart.
 */
export interface IPlotDef {
    /**
     * The type of chart to render.
     */
    chartType?: ChartType;
    /**
     * Width of the plot.
     */
    width?: number;
    /**
     * Height of the plot.
     */
    height?: number;
    /**
     * Configuration for the x axis.
     */
    x?: IAxisConfig;
    /**
     * Configuration for the y axis.
     */
    y?: IAxisConfig;
    /**
     * Configuration for the second y axis.
     */
    y2?: IAxisConfig;
}
/**
 * Maps the columns in a dataframe to axis in the chart.
 */
export interface IAxisMap {
    /**
     * The x axis for the chart.
     */
    x?: string;
    /**
     * The y axis for the chart.
     */
    y?: string | string[];
    /**
     * The optional  second y axis for the chart.
     */
    y2?: string | string[];
    /**
     * Configuration for all series.
     */
    series?: ISeriesConfiguration;
}
/**
 * A chart definition that is suitable for serialization to JSON and transfer to the browser via REST API.
 * Can be used to instantiate a Data-Forge chart in the browser.
 */
export interface IChartDef {
    /**
     * JSON serializable representation of the data.
     */
    data: any[];
    /**
     * Defines the look of the chart.
     */
    plotDef: IPlotDef;
    /**
     * Maps fields in the data to axis' on the chart.
     */
    axisMap: IAxisMap;
}
/**
 * Options for image rendering.
 */
export interface IRenderOptions {
    /**
     * Open the image in your default image viewer.
     */
    openImage: boolean;
}
/**
 * Options for exporting web projects for interactive charts.
 */
export interface IWebExportOptions {
    /**
     * Open the exported web visualization in the browser after exporting it.
     * Default: false
     */
    openBrowser?: boolean;
    /**
     * Set to true to overwrite existing output.
     * Default: false
     */
    overwrite?: boolean;
}
/**
 * Options for exporting Node.js projects for interactive charts.
 */
export interface INodejsExportOptions {
    /**
     * Set to true to overwrite existing output.
     * Default: false
     */
    overwrite?: boolean;
}
/**
 * Fluent API for configuring the plot.
 */
export interface IPlotAPI {
    /**
     * Set the type of the chart to be plotted.
     *
     * @param chartType Specifies the chart type.
     */
    chartType(chartType: ChartType): IPlotAPI;
    /**
     * Set the width of the chart.
     */
    width(width: number): IPlotAPI;
    /**
     * Set the height of the chart.
     */
    height(height: number): IPlotAPI;
    /**
     * Configure the x axis.
     */
    x(): IAxisPlotAPI;
    /**
     * Configure the y axis.
     */
    y(): IAxisPlotAPI;
    /**
     * Configure the y axis.
     */
    y2(): IAxisPlotAPI;
    /**
     * Render the plot to an image file.
     */
    renderImage(imageFilePath: string, renderOptions?: IRenderOptions): Promise<void>;
    /**
     * Export an interactive web visualization of the chart.
     */
    exportWeb(outputFolderPath: string, exportOptions?: IWebExportOptions): Promise<void>;
    /**
     * Export a Node.js project to host a web visualization of the char.
     */
    exportNodejs(outputFolderPath: string, exportOptions?: INodejsExportOptions): Promise<void>;
    /**
     * Serialize the plot definition so that it can be converted to JSON.
     * The JSON definition of the chart can be used to instantiate the chart in a browser.
     */
    serialize(): IChartDef;
}
/**
 * Plot API for configuring a particular axis.
 */
export interface IAxisPlotAPI extends IPlotAPI {
    /**
     * Set the label for the axis.
     */
    label(label: string): IAxisPlotAPI;
    /**
     * Set the position for the label.
     */
    labelPosition(position: VerticalLabelPosition | HorizontalLabelPosition): IAxisPlotAPI;
}
declare module "data-forge/build/lib/series" {
    interface ISeries<IndexT, ValueT> {
        startPlot(): void;
        endPlot(): void;
        plot(plotDef?: IPlotDef, axisMap?: IAxisMap): IPlotAPI;
    }
    interface Series<IndexT, ValueT> {
        startPlot(): void;
        endPlot(): void;
        plot(plotDef?: IPlotDef, axisMap?: IAxisMap): IPlotAPI;
    }
}
declare module "data-forge/build/lib/dataframe" {
    interface IDataFrame<IndexT, ValueT> {
        startPlot(): void;
        endPlot(): void;
        plot(plotDef?: IPlotDef, axisMap?: IAxisMap): IPlotAPI;
    }
    interface DataFrame<IndexT, ValueT> {
        startPlot(): void;
        endPlot(): void;
        plot(plotDef?: IPlotDef, axisMap?: IAxisMap): IPlotAPI;
    }
}
export {};
