/**
 * Block API Client
 *
 * Centralized, type-safe API client for all block client-side API calls.
 *
 * @example
 * ```tsx
 * // In a server component, read token from cookies and pass config
 * import { cookies } from 'next/headers';
 *
 * export default async function Page() {
 *   const previewToken = cookies().get('preview_token')?.value;
 *
 *   const apiConfig = {
 *     baseUrl: process.env.NEXT_PUBLIC_DASHBOARD_URL + '/api',
 *     auth: previewToken
 *       ? { type: 'bearer', token: previewToken }
 *       : { type: 'none' },
 *     siteId: site.id,
 *     isPreview: !!previewToken,
 *   };
 *
 *   return (
 *     <BlockApiProvider config={apiConfig}>
 *       <PageContent />
 *     </BlockApiProvider>
 *   );
 * }
 *
 * // In a client component
 * function MyBlock() {
 *   const api = useBlockApi();
 *
 *   useEffect(() => {
 *     api.getPublicEvents({ from, to }).then(events => {
 *       // Handle events
 *     });
 *   }, [api]);
 * }
 * ```
 */
export { createBlockApi, BlockApiError } from './client';
export type { BlockApiClient } from './client';
export { BlockApiProvider, useBlockApi, useBlockApiOptional } from './context';
export type { BlockApiProviderProps } from './context';
export type { BlockApiConfig, BlockApiAuth, ApiKeyAuth, BearerAuth, NoAuth, ApiResponse, ApiSuccessResponse, ApiErrorResponse, FormSubmitRequest, FormSubmitResponse, FormConfigResponse, FormField, BookingSubmitRequest, BookingSubmitResponse, AppointmentBookingStatusRequest, AppointmentBookingStatusResponse, AvailableSlotsRequest, AvailableSlotsResponse, TimeSlot, AvailableDatesRequest, AvailableDatesResponse, BookingService, BookingServicesRequest, BookingServicesResponse, BookingServiceResponse, BookingResource, BookingResourcesRequest, BookingResourcesResponse, PublicEvent, PublicEventsRequest, PublicEventsResponse, EventVenue, PricingType, AccessRestriction, EventFilterCategory, EventFilterStaffMember, EventFilterVenue, EventFiltersResponse, EventRegisterRequest, EventRegisterResponse, EventCheckoutRequest, EventCheckoutResponse, PaymentMethod, EligibilityCheckRequest, EligibilityCheckResponse, EligiblePass, EligibleMembership, AvailablePass, AvailableMembership, CoursePaymentMethod, CourseEnrollRequest, CourseEnrollResponse, CourseEnrollSuccessResponse, CourseWaitlistResponse, CourseCheckoutRequest, CourseCheckoutResponse, DiscountContext, DiscountsAvailableRequest, DiscountsAvailableResponse, ShopCheckoutRequest, ShopCheckoutResponse, ShopDuplicateMembershipWarning, CustomerProfile, CustomerOrder, CustomerOrderInstalmentPlan, CustomerOrderInstalmentPlanStatus, CustomerOrderInstalmentRow, CustomerOrderInstalmentStatus, CustomerOrderPaymentState, EnabledModules, PortalMeResponse, PortalMeUpdateRequest, CustomerPass, CustomerPassCreditHistoryEntry, CustomerMembership, CustomerEventRegistration, PortalEventTicket, CustomerAppointment, AppointmentBookingQuestionsTaskDetail, BookingQuestionsTaskDetail, BookingQuestionsAnswerValue, BookingQuestionsField, BookingQuestionsFieldOption, BookingQuestionsSection, BeforeYouComeTaskSummary, CustomerCourseEnrollment, EventGuest, PortalCredit, PortalCreditSummary, PortalCreditTransaction, PortalCreditResponse, PortalOrderCheckoutRequest, PortalOrderCheckoutResponse, PortalDigitalProduct, PortalDigitalProductFile, PortalDigitalProductsResponse, PortalDigitalProductAccessResponse, PortalDigitalProductDownloadUrlResponse, PortalAppointmentBookingQuestionsResponse, PortalCreateAppointmentBookingQuestionsUploadUrlRequest, PortalCreateAppointmentBookingQuestionsUploadUrlResponse, PortalFinalizeAppointmentBookingQuestionsUploadRequest, PortalFinalizeAppointmentBookingQuestionsUploadResponse, PortalUpdateAppointmentBookingQuestionsRequest, PortalUpdateAppointmentBookingQuestionsResponse, PortalEventBookingQuestionsResponse, PortalCreateEventBookingQuestionsUploadUrlRequest, PortalCreateEventBookingQuestionsUploadUrlResponse, PortalFinalizeEventBookingQuestionsUploadRequest, PortalFinalizeEventBookingQuestionsUploadResponse, PortalUpdateEventBookingQuestionsRequest, PortalUpdateEventBookingQuestionsResponse, PortalCourseBookingQuestionsResponse, PortalCreateCourseBookingQuestionsUploadUrlRequest, PortalCreateCourseBookingQuestionsUploadUrlResponse, PortalFinalizeCourseBookingQuestionsUploadRequest, PortalFinalizeCourseBookingQuestionsUploadResponse, PortalUpdateCourseBookingQuestionsRequest, PortalUpdateCourseBookingQuestionsResponse, UpdateEventGuestsRequest, EventGuestsResponse, PortalCancelCourseEnrollmentRequest, PortalCancelCourseEnrollmentResult, PortalCancelAppointmentRequest, PortalCancelAppointmentResult, PortalCancelEventRegistrationRequest, PortalRefundInfo, PortalCancelEventRegistrationResult, PortalTransferEventRegistrationRequest, PortalTransferEventRegistrationResult, PortalRescheduleAppointmentRequest, PortalRescheduleAppointmentResponse, PortalCancelMembershipAtPeriodEndResult, MagicLinkRequest, } from './types';
export type { BookingQuestionsDocumentAnswerValue } from '../../../portal/types';
export { deriveCreditProductLabels, getCreditProductCreditUnit, getCreditProductTypeLabel, getPortalCreditProductCreditNoun, } from './creditProducts';
export type { CreditProductCreditUnit, CreditProductLabelStyle, CreditProductSource, CreditProductUseCase, DerivedCreditProductLabels, EnabledCreditProductModules, } from './creditProducts';
export { ENDPOINTS, buildPath, appendQuery } from './endpoints';
export type { EndpointDefinition, HttpMethod } from './endpoints';
export { createDeduplicationCache } from './deduplication';
export type { DeduplicationCache, DeduplicationOptions } from './deduplication';
