/**
 * Custom hook for fetching dates with available appointment slots
 *
 * Uses the Block API Client for type-safe API calls.
 * Must be used within a BlockApiProvider.
 *
 * Prefetches available dates for a date range with support for progressive loading.
 * Returns a Set for O(1) lookup when filtering DatePicker options.
 */
export type UseAvailableDatesOptions = {
    siteId: string;
    serviceId: string | undefined;
    resourceId?: string;
    timezone: string;
    initialDays?: number;
};
export type UseAvailableDatesResult = {
    availableDates: Set<string>;
    isLoading: boolean;
    error: string | null;
    hasMore: boolean;
    loadMore: () => void;
    loadedRange: {
        start: string;
        end: string;
    } | null;
};
/**
 * Fetches dates with availability for a service
 *
 * On mount, fetches the first `initialDays` days.
 * Call `loadMore()` to fetch the next chunk of dates.
 * Uses requestId pattern to handle race conditions.
 *
 * @example
 * ```tsx
 * function DatePicker({ siteId, serviceId }) {
 *   const { availableDates, hasMore, loadMore, isLoading } = useAvailableDates({
 *     siteId,
 *     serviceId,
 *     timezone: 'America/New_York',
 *     initialDays: 30,
 *   });
 *
 *   // Check if a date has availability
 *   const isDateAvailable = (date) => availableDates.has(date);
 * }
 * ```
 */
export declare function useAvailableDates({ siteId: _siteId, // siteId now comes from BlockApiProvider context
serviceId, resourceId, timezone, initialDays, }: UseAvailableDatesOptions): UseAvailableDatesResult;
