import { ReservationState } from '@core/types';
import { UserModifiableEntity } from '../entity';
import { Order } from '../order';
import { Table, TableCombination } from '../room-plan';
import { CustomerData } from './customer-data.model';
import { ReservationSource } from './enums';
export declare class Reservation extends UserModifiableEntity<Reservation> {
    noOfPersons: number;
    startDate: Date;
    endDate: Date;
    state: ReservationState;
    comment?: string;
    reminderSent: boolean;
    /**
     * Client-provided token to deduplicate booking requests (e.g. Google Booking Server
     * CreateBooking). Unique per tenant when set.
     */
    idempotencyToken?: string;
    source: ReservationSource;
    /**
     * Cryptographically random secret that authorizes guest self-service
     * (view/update/cancel) for this reservation without an account.
     * Globally unique when set; never expose it in logs or list responses.
     */
    managementToken?: string | null;
    customerData: CustomerData;
    /**
     * Optional additional guest emails (friends of the booker). They receive the
     * guest notifications but never the management link — only the booker may
     * change or cancel the reservation.
     */
    companionEmails?: string[] | null;
    /**
     * List of tables in the combination
     */
    tables?: Table[];
    /** If reservation tables were assigned from a table combination */
    tableCombination?: TableCombination;
    order?: Order;
}
export declare const OpenReservationFilter: ReservationState[];
export declare const ApprovedOpenReservationFilter: ReservationState[];
