import type { Connection } from 'mongoose';
import * as factory from '../../factory';
export type IScreeningRoomFoundByBranchCode = Pick<factory.place.screeningRoom.IPlace, 'typeOf' | 'branchCode' | 'name' | 'containsPlace' | 'seatCount' | 'parentOrganization'>;
/**
 * ルーム編集時レスポンス
 */
interface IUpdateScreeningRoomResult {
    containedInPlace: {
        /**
         * 施設ID
         */
        id: string;
    };
    typeOf: factory.placeType.ScreeningRoom;
}
type IMovieTheaterIncludingScreeningRooms = Pick<factory.place.movieTheater.IPlace, 'name' | 'branchCode' | 'typeOf' | 'project'> & {
    containsPlace: factory.place.screeningRoom.IPlace[];
};
/**
 * ルームリポジトリ
 */
export declare class ScreeningRoomRepo {
    private readonly civicStructureModel;
    private readonly placeModel;
    constructor(connection: Connection);
    saveScreeningRooms4coa(params: IMovieTheaterIncludingScreeningRooms): Promise<void>;
    createScreeningRoom(screeningRoom: Omit<factory.place.screeningRoom.IPlace, 'containedInPlace' | 'containsPlace' | 'parentOrganization'> & {
        containedInPlace: {
            branchCode: string;
        };
        parentOrganization?: {
            id?: string;
        };
    }): Promise<IUpdateScreeningRoomResult>;
    updateScreeningRoom(screeningRoom: Omit<factory.place.screeningRoom.IPlace, 'containedInPlace' | 'containsPlace' | 'parentOrganization'> & {
        containedInPlace: {
            branchCode: string;
        };
        parentOrganization?: {
            id?: string;
        };
    }, $unset: any): Promise<IUpdateScreeningRoomResult>;
    updateScreeningRoomsByContainedInPlaceId(screeningRoom: {
        project: {
            id: string;
        };
        containedInPlace: Pick<factory.place.screeningRoom.IContainedInPlace, 'id' | 'name'>;
    }): Promise<void>;
    deleteScreeningRoom(screeningRoom: {
        project: {
            id: string;
        };
        parentOrganization?: {
            id?: string;
        };
        /**
         * ルームコード
         */
        branchCode: string;
        containedInPlace: {
            /**
             * 施設コード
             */
            branchCode: string;
        };
    }): Promise<IUpdateScreeningRoomResult>;
    deleteScreeningRoomsByMovieTheaterId(params: {
        project: {
            id: string;
        };
        containedInPlace: {
            /**
             * 施設ID
             */
            id: string;
        };
    }): Promise<import("mongodb").DeleteResult>;
    searchScreeningRooms(searchConditions: factory.place.screeningRoom.ISearchConditions): Promise<Omit<factory.place.screeningRoom.IPlace, 'containsPlace' | 'parentOrganization'>[]>;
    /**
     * セクションと座席も含めたひとつのルームを取得する
     */
    findScreeningRoomsByBranchCode(params: {
        project: {
            id: string;
        };
        branchCode: {
            $eq: string;
        };
        containedInPlace: {
            id: {
                $eq: string;
            };
        };
    }): Promise<IScreeningRoomFoundByBranchCode>;
    /**
     * 販売者に属するルームを全削除
     */
    deleteScreeningRoomsByParentOrganizationId(params: {
        project: {
            id: string;
        };
        parentOrganization: {
            /**
             * 販売者ID
             */
            id: string;
        };
    }): Promise<import("mongodb").DeleteResult>;
    /**
     * プロジェクトに属するルームを全削除
     */
    deleteScreeningRoomsByProject(params: {
        project: {
            id: string;
        };
    }): Promise<void>;
}
export {};
