import { QdChipColor } from '../../chips/chips.module';
import { QdDataFacetsChipConfig, QdDataFacetsCurrencyConfig, QdDataFacetsDateConfig, QdDataFacetsLinkConfig, QdDataFacetsStatusData, QdDataFacetsTextConfig } from '../../core/data-facets/data-facets.module';
export type QdTableColumnOptions = QdTableConfigColumnLinkOptions | QdTableConfigColumnCurrencyOptions | QdTableConfigColumnDateOptions | QdTableConfigColumnTextOptions;
/**
 * @description Defines the types and therefore the appearance of the content items.
 *
 * * Attention: Not all Content Types are actually implemented yet! They will follow later.
 */
export type QdTableConfigColumnType = 
/**
 * @description Renders a blank cell.
 */
{
    type: 'blank';
}
/**
 * @description Renders a checkmark icon if the value is true.
 */
 | {
    type: 'boolean';
}
/**
 * @description Renders a number/quantity.
 */
 | {
    type: 'integer';
}
/**
 * @description Renders a progress bar.
 */
 | {
    type: 'progress';
}
/**
 * @description Renders one or multiple links.
 */
 | {
    type: 'link';
    options: QdDataFacetsLinkConfig;
}
/**
 * @description Renders a text.
 */
 | {
    type: 'text';
    options?: QdDataFacetsTextConfig;
}
/**
 * @description Renders a single chip.
 *
 * * Note: The content type "chip" can handle a single chip or an array of chips.
 *         A chip can be a simple string or an object of the form { label: string; level: QdChipColor }.
 */
 | {
    type: 'chip';
    options?: QdDataFacetsChipConfig;
}
/**
 * @description Renders the status with status indicator.
 */
 | {
    type: 'status';
    options?: QdDataFacetsStatusData;
}
/**
 * @description Renders an icon of the QD icon set.
 */
 | {
    type: 'icon';
}
/**
 * @description Renders a date and time either with default format or with the format specified in the provided options.
 *
 * * Note: Like the Angular DatePipe it is based on, the content type "dateTime" can handle multiple input types: string | number | Date
 */
 | {
    type: 'date';
    options?: QdDataFacetsDateConfig;
}
/**
 * @description Configuration options for currency values.
 */
 | {
    type: 'currency';
    options?: QdDataFacetsCurrencyConfig;
};
/**
 * @description Type definitions for the 'text' options.
 */
export type QdTableConfigColumnTextOptions = {
    /**
     * @description If "true", the value is used as i18n key segment.
     *
     *  * @default: false
     */
    isTranslated?: boolean;
    /**
     * @description Defines the text transform operation of the value.
     *
     *  * @default: 'none'
     */
    textTransform?: 'capitalize' | 'uppercase' | 'lowercase' | 'full-width' | 'full-size-kana' | 'none';
};
/**
 * @description Type definitions for the 'chip' options.
 */
export type QdTableConfigColumnChipOptions = {
    /**
     * @description If "true", the value is used as i18n key segment.
     *
     *  * @default: false
     */
    isTranslated?: boolean;
    /**
     * @description With this mapping you can define the chip level for each label.
     */
    levelMapping?: {
        [label: string]: QdChipColor;
    };
    /**
     * @description Maximum number of chips that will be displayed in the cell.
     * If this number is exceeded, a small chip with the number of exceeding chips will be displayed.
     * When this small chip is hovered or tapped, the truncated chips will be displayed in a tooltip.
     *
     * @default null (unlimited)
     */
    maxChipCount?: number;
};
/**
 * @description Type definitions for the 'link' options.
 * Handler to handle the event.
 */
export type QdTableConfigColumnLinkOptions = {
    handler: (unknown: any) => void;
};
/**
 * @description Configuration options for date display in the QdTableDataDateComponent.
 * The "date" type supports formatting for strings, numbers or Date objects, providing multiple display options.
 */
export type QdTableConfigColumnDateOptions = {
    /**
     * @description Set the format to be used for date display.
     * * Note: Supports both the pre-defined format options (long, short, narrow) for relative time, and custom formats from Intl API for absolute Date/Time.
     *
     *  * @default: 'long'
     */
    format?: 'long' | 'short' | 'narrow';
    /**
     * @description Set the timezone to be used for date display.
     *
     * * @note Will be used for absolute time display using the Intl.DateTimeFormat.
     *
     * * If not provided, the timezone will be determined based on the user's browser settings.
     * * The provided timezone takes precedence over the timezone derived from the ISO string or numeric timestamp.
     * * If both ISO string/numeric timestamp and timezone are provided, the date will be formatted in the specified timezone.
     * * If only the ISO string/numeric timestamp is provided, it will be formatted in the user's local timezone or the browser's timezone.
     *
     * @default undefined
     */
    timezone?: string;
    /**
     * @description If "true", the value is used as relative time format.
     * * Note: When `isRelative` is set to `true`, the component utilizes the Intl.RelativeTimeFormat API for displaying relative time.
     *
     *  * @default: false
     */
    isRelative?: boolean;
    /**
     * @description The time unit to use when displaying relative time.
     *
     * * @note Possible values: "year", "quarter", "month", "week", "day", "hour", "minute", "second".This unit is determined by the Intl.RelativeTimeFormat API.
     *
     * * @default: "day"
     */
    unitIfRelative?: 'year' | 'quarter' | 'month' | 'week' | 'day' | 'hour' | 'minute' | 'second';
    /**
     * @description If "true", the time portion of the value is included in the display.
     *
     *  * @default: true
     */
    hasTime?: boolean;
};
/**
 * @description Configuration options for currency values.
 */
export type QdTableConfigColumnCurrencyOptions = {
    /**
     * @description The currency code (e.g., 'usd', 'eur', 'chf') for formatting currency values.
     *
     * * @default 'chf'
     */
    currency?: string;
    /**
     * @description Show or hide the currency unit per column. Useful when the currency per column is always the same. If this is the case, the currency unit can be displayed in the table header instead.
     *
     * * @default false
     */
    showCurrencyUnit?: boolean;
};
//# sourceMappingURL=table-config-content.interface.d.ts.map