import { ModalVariant } from '@patternfly/react-core';
import { ReactNode } from 'react';
interface IManageItemColumn<ItemT extends object> {
    header: string;
    cell: (item: ItemT, setItem: (item: ItemT) => void) => ReactNode;
}
export interface ManageItemsProps<ItemT extends object> {
    id: string;
    title: string;
    description?: string;
    keyFn: (item: ItemT) => string | number;
    items: ItemT[];
    columns: IManageItemColumn<ItemT>[];
    hideColumnHeaders?: boolean;
    variant?: ModalVariant;
    saveFn?: (items: ItemT) => unknown;
    loadFn?: (items: ItemT, data: unknown) => void;
    hideSelection?: boolean;
    onSubmit?: (items: ItemT[]) => void;
}
export declare function useManageItems<ItemT extends object>(options: ManageItemsProps<ItemT>): {
    openManageItems: () => void;
    managedItems: ItemT[];
};
export declare function ManageItemsModal<ItemT extends object>(props: ManageItemsProps<ItemT> & {
    defaultSelectedItems?: ItemT[];
    onApplyChanges: (items: ItemT[], selectedItems: ItemT[]) => void;
}): import("react/jsx-runtime").JSX.Element;
export {};
