import type { PaymentInstructions } from './BankInstructions';
import type { FinancialState } from './settlement';
export interface Participant {
    id: number;
    member_id: number | null;
    participant_type: string;
    name: string | null;
}
export interface History {
    id: number;
    event_type: string;
    old_status: string | null;
    new_status: string;
    performed_by_user_id: number;
    performed_by_name?: string;
    created_at: string;
    description: string | null;
    metadata: string | null;
}
export interface Notification {
    last_error?: string | null;
    id: number;
    notification_type: string;
    status: string;
    attempts: number;
    sent_at: string | null;
}
export interface PaymentTransaction {
    id: number;
    transaction_type: string;
    provider: string;
    amount: number;
    currency: string;
    status: string;
    created_at: string;
    payment_medium?: string | null;
    metadata?: string | null;
}
export interface Booking {
    series_id?: number | null;
    series_occurrence_key?: string | null;
    series_is_exception?: number;
    customer_restriction_warnings?: import('./usage').Restriction[];
    payment_instructions?: PaymentInstructions | null;
    financial: FinancialState;
    cancellation_fee: number;
    no_show_fee: number;
    can_override_cancellation_fee: boolean;
    id: number;
    reference: string;
    resource_name: string;
    starts_at_local: string;
    ends_at_local: string;
    timezone: string;
    booker_name: string;
    status: string;
    created_at: string;
    base_amount: number;
    discount_amount: number;
    final_amount: number;
    currency: string;
    payment_method: string | null;
    payment_transactions: PaymentTransaction[];
    mark_paid_methods: string[];
    can_mark_paid: boolean;
    can_refund: boolean;
    can_edit_price: boolean;
    payment_status: string;
    pricing_snapshot: string | null;
    customer_note: string | null;
    can_cancel: boolean;
    can_mark_no_show: boolean;
    duration_minutes: number;
    cancelled_at: string | null;
    cancelled_by_name: string | null;
    cancelled_by_role?: string | null;
    cancellation_reason: string | null;
    participants: Participant[];
    history: History[];
    notifications: Notification[];
    resource_id: number;
    customer_user_id: number | null;
    customer_member_id: number | null;
    created_by_user_id: number;
    created_by_name: string;
    customer_type: string;
    booking_source: string;
    participant_count: number;
    eligible_member_count: number;
    non_member_count: number;
    full_public_price: boolean;
    external_contact_id?: number | null;
    external_customer_label?: string | null;
    external_contact_snapshot?: string | null;
    booker_participates: boolean;
    can_edit: boolean;
    can_void: boolean;
    admin_note?: string | null;
}
export interface BookingList {
    items: Booking[];
    total: number;
}
export interface MemberResult {
    member_id: number;
    display_name: string;
    member_number?: string;
    customer_user_id?: number | null;
}
export interface EndTime {
    ends_at: string;
    duration_minutes: number;
}
export interface Slot {
    end_times: EndTime[];
    earliest_end_at: string;
    latest_end_at: string;
    starts_at: string;
    min_duration_minutes: number;
    max_duration_minutes: number;
    booking_step_minutes: number;
}
export interface BookingResource {
    id: number;
    sport_id: number | null;
    sport_name: string | null;
    name: string;
    capacity: number | null;
    min_booking_minutes: number;
    max_booking_minutes: number;
    booking_step_minutes: number;
}
export interface Options {
    memberships_enabled: boolean;
    sports: {
        id: number;
        name: string;
    }[];
    resources: BookingResource[];
    today: string;
    date: string;
    timezone: string;
    current_user: {
        member_id: number | null;
        is_member: boolean;
        profile_complete: boolean;
        can_search_members: boolean;
        can_manage_credit: boolean;
        can_manage_bookings: boolean;
    };
}
export interface Profile {
    first_name: string;
    last_name: string;
    email: string;
    abece_booking_phone: string;
    require_phone: boolean;
    profile_complete: boolean;
}
