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