interface MapPopupCall<M extends string> {
    popup: M;
    delayOpen?: number;
    delayClose?: number;
}
export interface MapPopupWithDataCall<M extends string, D> extends MapPopupCall<M> {
    data: D;
}
export type AnyMapPopupCall = MapPopupCall<string> | MapPopupWithDataCall<string, unknown>;
type MapPopupWithDataCallUnion<M extends string, D> = MapPopupWithDataCall<M, D>;
export type MapPopupCallData<Call> = Call extends MapPopupWithDataCallUnion<string, infer Data> ? Data : never;
export type MapPopupName<Call> = Call extends MapPopupCall<infer Name> ? Name : never;
export interface UseMapPopup<Data> {
    popup: string | null;
    popupData: Data;
    showPopup: <Call extends AnyMapPopupCall>(call: Call) => void;
    hidePopup: () => void;
    isOpen?: boolean;
}
export {};
