import { Table } from '@tanstack/react-table';
import React__default from 'react';
import * as react_jsx_runtime from 'react/jsx-runtime';

type FormatterFn<T> = (value: unknown, originalRow: T) => string | number | null;
interface ExportConfig<TData> {
    exportableFields: readonly string[];
    columnMapping: Partial<Record<string, string>>;
    fieldFormatters?: Partial<Record<string, FormatterFn<TData>>>;
    defaultFileName: string;
    worksheetName: string;
    emptyMessage?: string;
}

interface ButtonExportCsvProps<TData extends object> {
    table: Table<TData>;
    disabled?: boolean;
    action?: () => void;
    fileName?: string;
    config?: ExportConfig<TData>;
    text?: string;
    rowsToExport?: TData[];
}
declare const ButtonExportCsv: <TData extends object>({ table, disabled, action, fileName, config, text, rowsToExport, }: ButtonExportCsvProps<TData>) => React__default.ReactElement;

interface ButtonExportXlsProps<TData extends object> {
    table: Table<TData>;
    disabled?: boolean;
    action?: () => void;
    fileName?: string;
    config: ExportConfig<TData>;
    text?: string;
    rowsToExport?: TData[];
}
declare const ButtonExportXls: <TData extends object>({ table, disabled, action, fileName, config, text, rowsToExport, }: ButtonExportXlsProps<TData>) => React__default.JSX.Element;

interface ExportOption {
    label: string;
    onExport: () => Promise<void> | void;
    disabled?: boolean;
}
interface ExportButtonsProps {
    options: ExportOption[];
    buttonLabel?: string;
    disabledButtons?: boolean;
}
declare function ExportButtons({ options, buttonLabel, disabledButtons, }: ExportButtonsProps): react_jsx_runtime.JSX.Element | null;

export { ButtonExportCsv, ButtonExportXls, ExportButtons };
export type { ExportOption };
