/**-----------------------------------------------------------------------------------------
* Copyright © 2025 Progress Software Corporation. All rights reserved.
* Licensed under commercial license. See LICENSE.md in the project root for more information
*-------------------------------------------------------------------------------------------*/
import { drawing } from '@progress/kendo-drawing';
import { SeriesLabelsAlignment, SeriesLabelsContentArgs } from '../../common/property-types';
import { Border, Margin, Padding, SeriesLabelsVisualArgs } from '../../common/property-types';
import { SeriesLabelsPosition } from '../../common/property-types';
import { SeriesLabelsFrom } from './labels.from.interface';
import { SeriesLabelsTo } from './labels.to.interface';
/**
 * The configuration options of the series labels.
 */
export interface SeriesLabels {
    /**
     * The alignment of the label when [`series.type`]({% slug api_charts_series %}#toc-type) is set to `"donut"`, `"funnel"`, `"pyramid"` or `"pie"`.
     */
    align?: SeriesLabelsAlignment;
    /**
     * The background color of the labels. Accepts a valid CSS color string, including HEX and RGB.
     */
    background?: string;
    /**
     * The border of the labels.
     */
    border?: Border;
    /**
     * The text color of the labels. Accepts a valid CSS color string, including HEX and RGB.
     */
    color?: string;
    /**
     * The function which returns the Chart series label content.
     * You can split the text into multiple lines by using line feed characters (`"\n"`).
     */
    content?: (e: SeriesLabelsContentArgs) => string;
    /**
     * The function which returns the content for the ARIA label for the series labels.
     */
    ariaContent?: (e: SeriesLabelsContentArgs) => string;
    /**
     * The distance between the labels when [`series.type`]({% slug api_charts_series %}#toc-type) is set to `"donut"` or `"pie"`.
     */
    distance?: number;
    /**
     * The font style of the labels.
     */
    font?: string;
    /**
     * The format of the labels. Uses the [`format`]({% slug api_intl_intlservice %}#toc-format) method of the IntlService.
     */
    format?: string;
    /**
     * The margin of the labels. A numeric value sets all margins.
     */
    margin?: Margin | number;
    /**
     * The padding of the labels. A numeric value sets all paddings.
     * Bar and Column series always apply full padding and ignore this setting.
     */
    padding?: Padding | number;
    /**
     * The position of the labels.
     */
    position?: SeriesLabelsPosition;
    /**
     * The rotation angle of the labels. By default, the labels are not rotated.
     */
    rotation?: number;
    /**
     * If set to `true`, the Chart displays the series labels.
     * By default, the Chart series labels are not displayed.
     */
    visible?: boolean;
    /**
     * A function that can be used to create a custom visual for the labels.
     */
    visual?: (e: SeriesLabelsVisualArgs) => drawing.Element;
    /**
     * The `from` label configuration of the Chart series.
     * The Chart displays the series from labels when either the [`series.labels.visible`]({% slug api_charts_serieslabels %}#toc-visible) or
     * the [`series.labels.from.visible`]({% slug api_charts_serieslabelsfrom %}#toc-visible) option is set to `true`.
     */
    from?: SeriesLabelsFrom;
    /**
     * The `to` label configuration of the Chart series.
     * The Chart displays the series to labels when either the [`series.labels.visible`]({% slug api_charts_serieslabels %}#toc-visible) or
     * the [`series.labels.to.visible`]({% slug api_charts_serieslabelsto %}#toc-visible) option is set to `true`.
     */
    to?: SeriesLabelsTo;
}
