import { RaRecord } from "../../types.cjs";
type UseRecordSelectionWithResourceArgs = {
    resource: string;
    storeKey?: string;
    disableSyncWithStore?: false;
};
type UseRecordSelectionWithNoStoreArgs = {
    resource?: string;
    storeKey?: string;
    disableSyncWithStore: true;
};
export type UseRecordSelectionArgs = UseRecordSelectionWithResourceArgs | UseRecordSelectionWithNoStoreArgs;
export type UseRecordSelectionResult<RecordType extends RaRecord = any> = [
    RecordType['id'][],
    {
        select: (ids: RecordType['id'][]) => void;
        unselect: (ids: RecordType['id'][], fromAllStoreKeys?: boolean) => void;
        toggle: (id: RecordType['id']) => void;
        clearSelection: (fromAllStoreKeys?: boolean) => void;
    }
];
/**
 * Get the list of selected items for a resource, and callbacks to change the selection
 *
 * @param args.resource The resource name, e.g. 'posts'
 * @param args.storeKey The key to use to store selected items. Pass false to disable synchronization with the store.
 * @param args.disableSyncWithStore Controls the selection synchronization with the store
 *
 * @returns {Object} Destructure as [selectedIds, { select, unselect, toggle, clearSelection }].
 */
export declare const useRecordSelection: <RecordType extends RaRecord = any>(args: UseRecordSelectionArgs) => UseRecordSelectionResult<RecordType>;
export {};
//# sourceMappingURL=useRecordSelection.d.ts.map