import type { AgChartInstance, AgSparklineOptions } from 'ag-charts-types';
import { AdaptableColumn } from '../AdaptableState/Common/AdaptableColumn';
import { StyledColumn, StyledColumnState } from '../AdaptableState/StyledColumnState';
import { LayoutExtendedConfig } from '../types';
/**
 * Provides run-time access to Styled Column Module and associated state
 */
export interface StyledColumnApi {
    /**
     * Retrieves Styled Column section from Adaptable State
     */
    getStyledColumnState(): StyledColumnState;
    /**
     * Retrieves all Styled Columns in Adaptable State
     * @returns Styled Columns
     */
    getStyledColumns(config?: LayoutExtendedConfig): StyledColumn[];
    /**
     * Retrieves Styled Column by Id
     * @param id Styled Column id
     * @returns Styled Column
     */
    getStyledColumnById(id: StyledColumn['Uuid'], config?: LayoutExtendedConfig): StyledColumn;
    /**
     * Retrieves Styled Column by Name
     * @param name Styled Column name
     * @returns Styled Column
     */
    getStyledColumnByName(name: StyledColumn['Name'], config?: LayoutExtendedConfig): StyledColumn | undefined;
    /**
     * Retrieves Styled Column for given Column Id
     * @param columnId Styled Column id
     * @returns Styled Column
     */
    getStyledColumnForColumnId(columnId: StyledColumn['ColumnId'], config?: LayoutExtendedConfig): StyledColumn;
    /**
     * Retrieves all active (not-suspended) Styled Columns in Adaptable State
     * @returns Styled Columns
     */
    getActiveStyledColumns(config?: LayoutExtendedConfig): StyledColumn[];
    /**
     * Retrieves all suspended Styled Columns in Adaptable State
     * @returns Styled Columns
     */
    getSuspendedStyledColumns(config?: LayoutExtendedConfig): StyledColumn[];
    /**
     * Delete a Styled column
     * @param styledColumn
     */
    deleteStyledColumn(styledColumn: StyledColumn): void;
    /**
     * Edits a Styled Column
     * @param styledColumn Styled Column to edit
     */
    editStyledColumn(styledColumn: StyledColumn): StyledColumn;
    /**
     * Delete all Styled Columns in State
     */
    deleteAllStyledColumns(): void;
    /**
     * Create a Styled column
     * @param styledColumn
     */
    addStyledColumn(styledColumn: StyledColumn): void;
    /**
     * Suspends an active Styled Column
     * @param styledColumn
     */
    suspendStyledColumn(styledColumn: StyledColumn): void;
    /**
     * Activates a suspended Styled Column
     * @param styledColumn
     */
    unSuspendStyledColumn(styledColumn: StyledColumn): void;
    /**
     * Suspends all Styled Columns
     */
    suspendAllStyledColumn(): void;
    /**
     * Activates all suspended Styled Column
     */
    unSuspendAllStyledColumn(): void;
    /**
     * Checks whether Column with given `columnId` has a PercentBar Style applied
     * @param columnId column ID
     */
    hasPercentBarStyle(columnId: string): boolean;
    /**
     * Checks whether Column with given `columnId` has a Gradient Style applied
     * @param columnId column ID
     */
    hasGradientStyle(columnId: string): boolean;
    /**
     * Checks whether Column with given `columnId` has a Bullet Chart Style applied
     * @param columnId column ID
     */
    hasBulletChartStyle(columnId: string): boolean;
    /**
     * Checks whether Column with given `columnId` has a Rating Style applied
     * @param columnId column ID
     */
    hasRatingStyle(columnId: string): boolean;
    /**
     * Checks whether Column is a Sparkline Column
     * @param columnId column ID
     */
    isSparklineStyleStyledColumn(column: AdaptableColumn): boolean;
    /**
     * Returns a Styled Column for a given column
     * @param column Column to check
     */
    getActiveStyledColumnForColumn(column: AdaptableColumn): StyledColumn | undefined;
    /**
     * Open Styled Column section of Settings Panel
     */
    openStyledColumnSettingsPanel(): void;
    /**
     * Can this AdapTable instance display Sparklines (e.g. is AG Grid SparklinesModule installed)
     */
    canDisplaySparklines(): boolean;
    /**
     * Renders a standalone [Sparkline](https://www.ag-grid.com/javascript-data-grid/sparklines-overview/)
     * into a DOM element you provide, using the same AG Charts engine as Sparkline Styled Columns.
     *
     * Provide at least `container` (where to render) and `data` (what to plot) on `options`; see
     * [AgSparklineOptions](https://www.ag-grid.com/javascript-data-grid/sparklines-overview/) for the
     * full set (`type`, `width`/`height`, `min`/`max`, etc.).
     *
     * The caller owns the returned instance and is responsible for its lifecycle: call `update()` to
     * re-render it when the data or options change, and `destroy()` to dispose of it (e.g. when the
     * `container` is removed) to avoid memory leaks. AdapTable does not track or clean it up for you.
     */
    renderSparkline(options: AgSparklineOptions): AgChartInstance<AgSparklineOptions> | null;
}
