/**
 * Copyright IBM Corp. 2016, 2025
 *
 * This source code is licensed under the Apache-2.0 license found in the
 * LICENSE file in the root directory of this source tree.
 */
import React, { type HTMLAttributes, type MouseEventHandler, type ReactNode } from 'react';
import { sortStates } from './state/sorting';
import { TranslateWithId } from '../../types/common';
import { DataTableSortState } from './state/sortStates';
export type TableHeaderTranslationKey = 'carbon.table.header.icon.description';
export interface TableHeaderTranslationArgs {
    header: ReactNode;
    isSortHeader?: boolean;
    sortDirection?: DataTableSortState;
    sortStates: typeof sortStates;
}
export interface TableHeaderProps extends HTMLAttributes<HTMLTableCellElement & HTMLButtonElement>, TranslateWithId<TableHeaderTranslationKey, {
    header: any;
    sortDirection: any;
    isSortHeader: any;
    sortStates: any;
}> {
    /**
     * Pass in children that will be embedded in the table header label
     */
    children?: ReactNode;
    /**
     * Specify an optional className to be applied to the container node
     */
    className?: string;
    /**
     * Specify `colSpan` as a non-negative integer value to indicate how
     * many columns the TableHeader cell extends in a table
     */
    colSpan?: number;
    /**
     * Supply an id to the th element.
     */
    id?: string;
    /**
     * Specify whether this header is the header by which a table is being sorted
     * by
     */
    isSortHeader?: boolean;
    /**
     * Specify whether this header is one through which a user can sort the table
     */
    isSortable?: boolean;
    /**
     * Hook that is invoked when the header is clicked
     */
    onClick?: MouseEventHandler<HTMLButtonElement>;
    /**
     * Specify the scope of this table header. You can find more info about this
     * attribute at the following URL:
     * https://developer.mozilla.org/en-US/docs/Web/HTML/Element/th#attr-scope
     */
    scope?: string;
    /**
     * @deprecated please use decorator instead.
     * Provide a `Slug` component to be rendered inside the `TableSlugRow` component
     */
    slug?: ReactNode;
    /**
     * **Experimental**: Provide a `decorator` component to be rendered inside the `TableDecoratorRow` component
     */
    decorator?: ReactNode;
    /**
     * Specify which direction we are currently sorting by, should be one of DESC,
     * NONE, or ASC.
     */
    sortDirection?: string;
}
declare const TableHeader: React.ForwardRefExoticComponent<TableHeaderProps & React.RefAttributes<HTMLTableCellElement>>;
export default TableHeader;
