import { record } from '@synnaxlabs/x';
import { FrameProps } from './Frame';
interface GetItem<K extends record.Key = record.Key, E extends record.Keyed<K> = record.Keyed<K>> {
    (key?: K): E | undefined;
    (key: K[]): E[];
}
export interface UseMapDataReturn<K extends record.Key = record.Key, E extends record.Keyed<K> = record.Keyed<K>> extends Required<Pick<FrameProps<K, E>, "subscribe">> {
    setItem: (item: E | E[]) => void;
    deleteItem: (key: K | K[]) => void;
    hasItem: (key: K) => boolean;
    getItem: GetItem<K, E>;
}
export interface UseMapDataProps<K extends record.Key = record.Key, E extends record.Keyed<K> = record.Keyed<K>> {
    initialData?: E[];
}
export declare const useMapData: <K extends record.Key = record.Key, E extends record.Keyed<K> = record.Keyed<K>>({ initialData }?: UseMapDataProps<K, E>) => UseMapDataReturn<K, E>;
export {};
//# sourceMappingURL=useMapData.d.ts.map