import { Connection } from 'mongoose';
import reservationModel from './mongoose/model/reservation';
import * as factory from '../factory';
/**
 * 予約リポジトリー
 */
export declare class MongoRepository {
    readonly reservationModel: typeof reservationModel;
    constructor(connection: Connection);
    static CREATE_EVENT_RESERVATION_MONGO_CONDITIONS(params: factory.reservation.event.ISearchConditions): any[];
    countScreeningEventReservations(params: factory.reservation.event.ISearchConditions): Promise<number>;
    /**
     * 上映イベント予約を検索する
     */
    searchScreeningEventReservations(params: factory.reservation.event.ISearchConditions): Promise<factory.reservation.event.IReservation<factory.event.screeningEvent.IEvent>[]>;
    /**
     * IDで上映イベント予約を検索する
     */
    findScreeningEventReservationById(params: {
        id: string;
    }): Promise<factory.reservation.event.IReservation<factory.event.screeningEvent.IEvent>>;
    /**
     * 予約確定
     */
    confirm(params: factory.reservation.event.IReservation<factory.event.screeningEvent.IEvent>): Promise<void>;
    /**
     * 予約取消
     */
    cancel(params: {
        id: string;
    }): Promise<void>;
    /**
     * チェックイン(発券)する
     */
    checkIn(params: {
        id?: string;
        reservationNumber?: string;
    }): Promise<void>;
    /**
     * 入場する
     */
    attend(params: {
        id: string;
    }): Promise<factory.reservation.event.IReservation<factory.event.screeningEvent.IEvent>>;
}
