/**
 * @jsxRuntime classic
 * @jsx jsx
 */
import React, { type ReactNode } from 'react';
import type UIAnalyticsEvent from '@atlaskit/analytics-next/UIAnalyticsEvent';
export interface RowProps<Item> {
    /**
     * Whether the row has children.
     */
    hasChildren?: boolean;
    /**
     * Children contained in the row. Should be one or more cell components.
     */
    children?: ReactNode;
    /**
     * ID for the row item.
     */
    itemId?: string;
    /**
    The data used to render the row and descendants. Pass down from `children` render prop.

    In addition to these props, any other data can be added to the object, and it will
    be provided as props when rendering each cell.
   */
    items?: Item[] | null;
    /**
     * Controls the expanded state of the row.
     */
    isExpanded?: boolean;
    /**
     * Sets the default expanded state of the row.
     */
    isDefaultExpanded?: boolean;
    /**
     * This is the accessible name for the expand chevron button, used to tell assistive technology what the button is for.
     */
    expandLabel?: string;
    /**
     * This is the accessible name for the collapse chevron button, used to tell assistive technology what the button is for.
     */
    collapseLabel?: string;
    /**
     * Callback called when the row collapses.
     */
    onCollapse?: (data: Item, analytics?: UIAnalyticsEvent) => void | Promise<void>;
    /**
     * Callback called when the row expands.
     */
    onExpand?: (data: Item, analytics?: UIAnalyticsEvent) => void | Promise<void>;
    /**
     * Children to render under the row.
     * This is normally set by the parent item component, and doesn't need to be configured.
     */
    renderChildren?: () => React.ReactNode;
    /**
    Use this to set whether a row with children should expand when clicked anywhere within the row. If `false` or unset, a row with children will only expand when the chevron is clicked.

    If your cells contain interactive elements, always set this to `false` to avoid unexpected expanding or collapsing.
   */
    shouldExpandOnClick?: boolean;
    /**
     * Data to render. Passed down by `item` and passed into `onExpand` and `onCollapse` callbacks.
     * This is normally set by the parent `item` component, and doesn't need to be configured.
     */
    data?: Item;
    /**
     * The depth used for rendering an indent.
     * This is normally set by parent `item` component, and doesn't need to be configured.
     */
    depth?: number;
    /**
    Adds detail to the expand and collapse row button's aria label by appending the value from the given column. If you don't set this prop, the aria label will read out "Expand `itemId` row".

    Should be a string when we pass data via `items` property in the table tree. The value should be one of the property `columns` names in the table tree.

    Should be a number  when we pass data via the `Rows` component as children in the table tree.
   */
    mainColumnForExpandCollapseLabel?: string | number;
}
declare function Row<Item extends {
    id: string;
}>({ shouldExpandOnClick, hasChildren, depth, renderChildren, isDefaultExpanded, data, onExpand: providedOnExpand, onCollapse: providedOnCollapse, mainColumnForExpandCollapseLabel, expandLabel, collapseLabel, itemId, children, isExpanded: isProvidedExpanded, }: RowProps<Item>): JSX.Element;
export default Row;
