import { ReactNode } from 'react';
import { ErrorAdapter } from '../PageForm/typesErrorAdapter';
import { ITableColumn } from '../PageTable/PageTableColumn';
export type StatusWithMessageAndUrl = {
    message: string;
    url: string;
};
export interface BulkActionDialogProps<T extends object> {
    title: string;
    description?: ReactNode | string;
    items: T[];
    keyFn: (item: T) => string | number;
    actionColumns: ITableColumn<T>[];
    actionFn: (item: T, signal: AbortSignal) => Promise<unknown>;
    onComplete?: (successfulItems: T[]) => void;
    onClose?: (status: 'success' | 'failures' | 'canceled', successfulItems: T[], failedItems: T[], canceledItems: T[]) => void;
    processingText?: string;
    isDanger?: boolean;
    errorAdapter?: ErrorAdapter;
    statusParser?: (response: unknown) => null | StatusWithMessageAndUrl;
}
export declare function BulkActionDialog<T extends object>(props: BulkActionDialogProps<T>): import("react/jsx-runtime").JSX.Element;
export declare function useBulkActionDialog<T extends object>(defaultErrorAdapter?: ErrorAdapter, statusParser?: (response: unknown) => null | StatusWithMessageAndUrl): import("react").Dispatch<import("react").SetStateAction<BulkActionDialogProps<T> | undefined>>;
