import type { DataItem } from "../../core/render/Component";
import type { ILegendDataItem } from "../../core/render/Legend";
import type { Color } from "../../core/util/Color";
import type { ColorSet } from "../../core/util/ColorSet";
import type { Pattern } from "../../core/render/patterns/Pattern";
import type { PatternSet } from "../../core/util/PatternSet";
import { Series, ISeriesSettings, ISeriesDataItem, ISeriesPrivate } from "../../core/render/Series";
import { Graphics } from "../../core/render/Graphics";
import { Container } from "../../core/render/Container";
import { Label } from "../../core/render/Label";
import { ListTemplate } from "../../core/util/List";
export interface IVennDataItem extends ISeriesDataItem {
    /**
     * Array of categories that this data item is an intersection for.
     */
    intersections: Array<string>;
    /**
     * Category.
     */
    category: string;
    /**
     * Slice visual element.
     */
    slice: Graphics;
    /**
     * Slice label.
     */
    label: Label;
    /**
     * A related legend data item.
     */
    legendDataItem: DataItem<ILegendDataItem>;
    /**
     * Fill color used for the slice and related elements, e.g. legend marker.
     */
    fill: Color;
    /**
     * Fill pattern used for the slice and related elements, e.g. legend marker.
     *
     * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/} for more info
     * @since 5.10.0
     */
    fillPattern: Pattern;
}
export interface IVennSettings extends ISeriesSettings {
    /**
     * A field in data that holds array of categories that overlap.
     */
    intersectionsField?: string;
    /**
     * A [[ColorSet]] to use when asigning colors for slices.
     */
    colors?: ColorSet;
    /**
     * A [[PatternSet]] to use when asigning patterns for slices.
     *
     * @see {@link https://www.amcharts.com/docs/v5/concepts/colors-gradients-and-patterns/patterns/#Pattern_sets} for more info
     * @since 5.10.0
     */
    patterns?: PatternSet;
    /**
     * A field in data that holds category names.
     */
    categoryField?: string;
    /**
     * A field that holds color for slice fill.
     */
    fillField?: string;
}
export interface IVennPrivate extends ISeriesPrivate {
}
/**
 * Creates a Venn diagram.
 *
 * @see {@link https://www.amcharts.com/docs/v5/charts/venn/} for more info
 * @important
 */
export declare class Venn extends Series {
    static className: string;
    static classNames: Array<string>;
    _settings: IVennSettings;
    _privateSettings: IVennPrivate;
    _dataItemSettings: IVennDataItem;
    protected _sets: string;
    /**
     * A [[Container]] that holds all slices (circles and intersections).
     *
     * @default Container.new()
     */
    readonly slicesContainer: Container;
    /**
     * A [[Container]] that holds all labels.
     *
     * @default Container.new()
     */
    readonly labelsContainer: Container;
    /**
     * A [[Graphics]] element that is used to show the shape of the hovered slice
     * or intersection.
     *
     * @default Graphics.new()
     */
    readonly hoverGraphics: Graphics;
    protected _hovered?: Graphics;
    _applyThemes(force?: boolean): boolean;
    protected _afterNew(): void;
    /**
     * A [[ListTemplate]] of all slices in series.
     *
     * `slices.template` can also be used to configure slices.
     */
    readonly slices: ListTemplate<Graphics>;
    /**
     * @ignore
     */
    makeSlice(dataItem: DataItem<this["_dataItemSettings"]>): Graphics;
    protected _updateHover(): void;
    /**
     * A [[ListTemplate]] of all slice labels in series.
     *
     * `labels.template` can also be used to configure slice labels.
     */
    readonly labels: ListTemplate<Label>;
    /**
     * @ignore
     */
    makeLabel(dataItem: DataItem<this["_dataItemSettings"]>): Label;
    protected _makeSlices(): ListTemplate<Graphics>;
    protected _makeLabels(): ListTemplate<Label>;
    protected _onDataClear(): void;
    protected processDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
    _prepareChildren(): void;
    /**
     * Looks up and returns a data item by its category.
     *
     * @param   category  Category
     * @return      Data item
     */
    getDataItemByCategory(id: string): DataItem<this["_dataItemSettings"]> | undefined;
    /**
     * Shows series's data item.
     *
     * @param   dataItem  Data item
     * @param   duration  Animation duration in milliseconds
     * @return            Promise
     */
    showDataItem(dataItem: DataItem<this["_dataItemSettings"]>, duration?: number): Promise<void>;
    /**
     * Hides series's data item.
     *
     * @param   dataItem  Data item
     * @param   duration  Animation duration in milliseconds
     * @return            Promise
     */
    hideDataItem(dataItem: DataItem<this["_dataItemSettings"]>, duration?: number): Promise<void>;
    /**
     * @ignore
     */
    disposeDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
    /**
     * @ignore
     */
    updateLegendMarker(dataItem: DataItem<this["_dataItemSettings"]>): void;
    /**
     * Triggers hover on a series data item.
     *
     * @since 5.0.7
     * @param  dataItem  Target data item
     */
    hoverDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
    /**
     * Triggers un-hover on a series data item.
     *
     * @since 5.0.7
     * @param  dataItem  Target data item
     */
    unhoverDataItem(dataItem: DataItem<this["_dataItemSettings"]>): void;
}
//# sourceMappingURL=Venn.d.ts.map