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;
}
