import React__default from 'react';

interface OrderableItem {
    id: number;
    [key: string]: any;
}
interface OrderManagerOperations<T extends OrderableItem> {
    loadItems: () => Promise<T[]>;
    moveItemUp: (id: number) => Promise<void>;
    moveItemDown: (id: number) => Promise<void>;
    updateItemOrder: (orders: {
        id: number;
        order: number;
    }[]) => Promise<void>;
}
interface GenericOrderManagerProps<T extends OrderableItem> {
    operations: OrderManagerOperations<T>;
    renderItem: (item: T, index: number, isFirst: boolean, isLast: boolean) => React__default.ReactNode;
    className?: string;
    title?: string;
    description?: string;
    onOrderChanged?: () => void;
    emptyMessage?: string;
    loadingMessage?: string;
}
declare function GenericOrderManager<T extends OrderableItem>({ operations, renderItem, className, title, description, onOrderChanged, emptyMessage, loadingMessage }: GenericOrderManagerProps<T>): React__default.JSX.Element;

export { GenericOrderManager as G, type OrderableItem as O, type GenericOrderManagerProps as a, type OrderManagerOperations as b };
