import React, { PureComponent, ReactNode } from 'react';
import PropTypes from 'prop-types';
import Store from '@douyinfe/semi-foundation/lib/es/utils/Store';
import { TableContextProps } from '../table-context';
import { ColumnProps, RenderGroupSection, OnGroupedRow, TableComponents, Virtualized, RowKey, OnRowReturnObject } from '../interface';
export interface SectionRowProps {
    record?: Record<string, any>;
    index?: number;
    columns?: ColumnProps[];
    group?: (string | number)[];
    groupKey: string | number;
    data?: Record<string, any>[];
    renderGroupSection?: RenderGroupSection;
    onGroupedRow?: OnGroupedRow<Record<string, any>>;
    clickGroupedRowToExpand?: boolean;
    components?: TableComponents;
    expanded?: boolean;
    prefixCls?: string;
    onExpand?: (willExpanded: boolean, groupKey: number | string, e: React.MouseEvent) => void;
    virtualized?: Virtualized;
    style?: React.CSSProperties;
    renderExpandIcon?: (record: Record<string, any>, isNested: boolean, groupKey: string | number) => ReactNode | null;
    className?: string;
    store?: Store;
    rowKey?: RowKey<any>;
}
/**
 * avoid affected by https://www.npmjs.com/package/babel-plugin-transform-react-remove-prop-types
 */
export declare const sectionRowPropTypes: {
    record: PropTypes.Requireable<object>;
    index: PropTypes.Requireable<number>;
    columns: PropTypes.Requireable<any[]>;
    group: PropTypes.Validator<object>;
    groupKey: PropTypes.Validator<NonNullable<NonNullable<string | number>>>;
    data: PropTypes.Requireable<any[]>;
    renderGroupSection: PropTypes.Requireable<(...args: any[]) => any>;
    onGroupedRow: PropTypes.Requireable<(...args: any[]) => any>;
    clickGroupedRowToExpand: PropTypes.Requireable<boolean>;
    components: PropTypes.Requireable<object>;
    expanded: PropTypes.Requireable<boolean>;
    prefixCls: PropTypes.Requireable<string>;
    onExpand: PropTypes.Requireable<(...args: any[]) => any>;
    virtualized: PropTypes.Requireable<NonNullable<boolean | object>>;
    style: PropTypes.Requireable<object>;
    renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>;
    className: PropTypes.Requireable<string>;
    store: PropTypes.Requireable<object>;
    rowKey: PropTypes.Requireable<NonNullable<string | number | ((...args: any[]) => any)>>;
};
/**
 * Grouping component title row
 */
declare class SectionRow extends PureComponent<SectionRowProps> {
    static contextType: React.Context<TableContextProps>;
    static propTypes: {
        record: PropTypes.Requireable<object>;
        index: PropTypes.Requireable<number>;
        columns: PropTypes.Requireable<any[]>;
        group: PropTypes.Validator<object>;
        groupKey: PropTypes.Validator<NonNullable<NonNullable<string | number>>>;
        data: PropTypes.Requireable<any[]>;
        renderGroupSection: PropTypes.Requireable<(...args: any[]) => any>;
        onGroupedRow: PropTypes.Requireable<(...args: any[]) => any>;
        clickGroupedRowToExpand: PropTypes.Requireable<boolean>;
        components: PropTypes.Requireable<object>;
        expanded: PropTypes.Requireable<boolean>;
        prefixCls: PropTypes.Requireable<string>;
        onExpand: PropTypes.Requireable<(...args: any[]) => any>;
        virtualized: PropTypes.Requireable<NonNullable<boolean | object>>;
        style: PropTypes.Requireable<object>;
        renderExpandIcon: PropTypes.Requireable<(...args: any[]) => any>;
        className: PropTypes.Requireable<string>;
        store: PropTypes.Requireable<object>;
        rowKey: PropTypes.Requireable<NonNullable<string | number | ((...args: any[]) => any)>>;
    };
    static defaultProps: {
        prefixCls: "semi-table";
        components: {
            body: {
                row: string;
                cell: string;
            };
        };
    };
    context: TableContextProps;
    onRow: (...args: any[]) => OnRowReturnObject;
    collectGroupedData: () => Record<string, any>[];
    renderExpandIcon: (record: any) => React.ReactNode;
    isInnerColumnKey(key: any): boolean;
    render(): React.JSX.Element;
}
export default SectionRow;
