export interface Config { entitlements?: import('../booking-ui/features').FeatureManifest; restUrl: string; nonce: string; page: 'editions' | 'getting-started' | 'system-status' | 'statistics' | 'usage-limits' | 'customer-restrictions' | 'receivables' | 'external-contacts' | 'sports' | 'resources' | 'seasons' | 'members' | 'membership-types' | SchedulePage | 'bookings' | 'price-lists' | 'credits' | 'cancellation-policies' | 'settings'; timezone: string; locale: string; membershipsEnabled: boolean; membershipSettingsUrl: string; membersUrl: string; usageLimitsUrl: string; pricesUrl: string; operationsUrl: string; canViewFinance?: boolean; canManageMembers: boolean; canManageBookings: boolean; canManagePrices: boolean; canManageCalendarSettings: boolean; } declare global { interface Window { ABeCeBookingConfig?: Config; } } export interface Sport { id: number; name: string; slug: string; description: string | null; is_active: boolean; sort_order: number; } export interface Resource extends Sport { sport_id: number | null; sport_name?: string; resource_type: string; surface: string | null; capacity: number | null; is_visible: boolean; is_bookable: boolean; payment_methods_override: string[] | null; access_mode: string; member_booking_days: number | null; guest_booking_days: number | null; public_release_hours: number | null; min_booking_minutes: number; max_booking_minutes: number; booking_step_minutes: number; } export type Item = Sport | Resource; export type Payload = { [key: string]: string | number | boolean | string[] | number[] | null | Payload; }; export type MembershipPage = 'seasons' | 'members' | 'membership-types'; export type ApiRoute = 'admin/usage-limit-rules' | Config['page'] | 'memberships' | 'wordpress-users'; export interface Season { id: number; name: string; starts_on: string; ends_on: string; is_active: boolean; is_default: boolean; } export interface WordPressUser { id: number; login: string; display_name: string; email?: string; } export interface Member { id: number; wp_user_id: number | null; member_number: string | null; first_name: string; last_name: string; email: string | null; phone: string | null; season_membership?: Membership & { season_name: string; type_name: string | null; starts_on: string; ends_on: string; } | null; current_membership?: { season_name: string; type_name: string | null; status: string; } | null; date_of_birth: string | null; is_active: boolean; wordpress_user: WordPressUser | null; } export interface Membership { id: number; member_id: number; season_id: number; membership_type_id: number | null; valid_from: string | null; valid_to: string | null; status: string; membership_fee_amount: number | null; membership_fee_currency: string | null; paid_at: string | null; } export type MembershipItem = Season | Member | Sport | Membership; export type SchedulePage = 'opening-hours' | 'schedule-exceptions' | 'resource-blocks'; export interface ScheduleItem { id: number; resource_id: number | null; [field: string]: string | number | boolean | number[] | null; } export interface ClubLocation { address?: string; latitude: number | null; longitude: number | null; }