import { PzTableColumn, PzTablePathValue, PzTableRow } from '../PzTable';
export type PzAccordionTableRow = PzTableRow;
export type PzAccordionTableLocalRow<TRow extends object = PzAccordionTableRow> = TRow & {
    showSubRow: boolean;
};
export type PzAccordionTableRowIdFn<TRow extends object = PzAccordionTableRow> = (row: TRow) => string;
export type PzAccordionTableRowPredicateFn<TRow extends object = PzAccordionTableRow> = (row: TRow) => boolean;
export interface PzAccordionTableCellSlotProps<TRow extends object = PzAccordionTableRow, TKey extends string = string> {
    data: PzAccordionTableLocalRow<TRow>;
    column: PzTableColumn<TKey>;
    value: PzTablePathValue<TRow, TKey> | string;
    expanded: boolean;
    toggle: () => void;
}
export interface PzAccordionTableSubRowSlotProps<TRow extends object = PzAccordionTableRow> {
    data: PzAccordionTableLocalRow<TRow>;
    expanded: boolean;
    toggle: () => void;
}
export type PzAccordionTableSlots<TRow extends object = PzAccordionTableRow, TKey extends string = Extract<keyof TRow, string>> = {
    [K in TKey]?: (props: PzAccordionTableCellSlotProps<TRow, K>) => unknown;
} & {
    subRow?: (props: PzAccordionTableSubRowSlotProps<TRow>) => unknown;
} & {
    [name: string]: ((props: PzAccordionTableCellSlotProps<TRow>) => unknown) | undefined;
};
export interface PzAccordionTableProps<TRow extends object = PzAccordionTableRow, TKey extends string = string> {
    rowIdFn?: PzAccordionTableRowIdFn<TRow>;
    defaultOpenedSubRowFn?: PzAccordionTableRowPredicateFn<TRow>;
    visibleToggleBtnFn?: PzAccordionTableRowPredicateFn<TRow>;
    fields: PzTableColumn<TKey>[];
    data: TRow[];
    defaultValue?: string;
    visibleHeader?: boolean;
}
