import { VoidFunc, VoidFuncNoParam } from "../../../fd-toolbox/functions/internal-getter-setter-functions";
import React from "react";
import { WithId } from "../../../fd-toolbox-core/types/resource-with-id";
import { UiResourceMeta } from "../ui-resource-meta";
import { TableConfig, TableSort, Paging, TableComponent, DataInfo } from "./table-models";
/**
 * Props for {@link Table}
 */
export interface TableProps {
    /** Array of items to display in the table */
    items: WithId[];
    /** Unique identifier for the table */
    id?: string;
    /** Configuration for the table behavior and appearance */
    tableConfig: TableConfig;
    /** Ui metadata for items */
    uiResourceMeta?: UiResourceMeta;
    /**
     * Event handler called when sorting is requested
     * Receives the sort configuration as parameter
     * Called when {@link TableConfig.externalSorting} is true
     */
    onSort?: VoidFunc<TableSort>;
    /**
     * Event handler called when pagination changes
     * Receives the pagination configuration as parameter
     */
    onPaging?: VoidFunc<Paging>;
    /**
     * Event handler called when items need to be refreshed
     * Typically called after actions like sort, filter, or data updates
     */
    onRefreshItems?: VoidFuncNoParam;
    /** Callback function invoked after an item has been deleted */
    onItemDeleted?: VoidFuncNoParam;
    /**
     * Event handler called when a row is clicked
     * Receives the clicked row's data item as parameter
     */
    onRowClick?: VoidFunc<WithId>;
    /**
     * Event handler called when rows are updated
     * Receives array of updated data items to synchronize with external state
     */
    onRowsUpdate?: VoidFunc<WithId[]>;
    /** Controls whether the table should display a loading state. Used when data is being fetched or processed externally */
    loading?: boolean;
    dataInfo?: DataInfo;
}
/**
 * Advanced data table component with sorting, pagination, and extensive configuration options through {@link TableConfig}
 *
 * @see {@link TableProps} for component props
 * @see {@link TableComponent} for available ref methods
 * @see {@link TableConfig} for configuration options
 */
export declare function Table({ id: idProp, tableConfig, uiResourceMeta, items, onSort, onPaging, onRefreshItems, onItemDeleted, onRowClick, onRowsUpdate, loading, dataInfo, ref, }: TableProps & {
    ref?: React.RefObject<TableComponent | undefined>;
}): React.JSX.Element;
export declare namespace Table {
    var displayName: "Table";
}
export type { TableComponent };
