import type { Connection, FilterQuery } from 'mongoose';
import * as factory from '../../factory';
import { IDocType } from '../mongoose/schemas/civicStructure';
export type IScreeningRoomFoundByBranchCode = Pick<factory.place.screeningRoom.IPlace, 'typeOf' | 'branchCode' | 'name' | 'containsPlace' | 'seatCount' | 'parentOrganization'>;
export type IMovieTheaterIncludingScreeningRooms = Pick<factory.place.movieTheater.IPlace, 'additionalProperty' | 'branchCode' | 'kanaName' | 'name' | 'offers' | 'parentOrganization' | 'project' | 'telephone' | 'typeOf'> & {
    containsPlace: factory.place.screeningRoom.IPlace[];
};
type IKeyOfProjection = keyof factory.place.movieTheater.IPlace;
/**
 * 施設リポジトリ
 */
export declare class MovieTheaterRepo {
    private readonly civicStructureModel;
    constructor(connection: Connection);
    static CREATE_MOVIE_THEATER_MONGO_CONDITIONS(params: factory.place.movieTheater.ISearchConditions): FilterQuery<import("@chevre/factory/lib/place/movieTheater").IPlace>[];
    /**
     * 施設を保管する
     */
    saveMovieTheater(params: factory.place.movieTheater.IPlace): Promise<{
        id: string;
    }>;
    saveMovieTheaterByBranchCode4coa(params: IMovieTheaterIncludingScreeningRooms): Promise<void>;
    /**
     * 施設のpublic属性検索
     * 2024-09-18~
     */
    projectPublicFields(params: factory.place.movieTheater.ISearchConditions): Promise<Omit<factory.place.movieTheater.IPlace, 'screenCount'>[]>;
    /**
     * 施設検索
     * redefine(2024-09-18~)
     */
    projectFields(params: factory.place.movieTheater.ISearchConditions, inclusion: IKeyOfProjection[]): Promise<Omit<factory.place.movieTheater.IPlace, 'screenCount'>[]>;
    deleteMovieTheaterById(params: {
        project: {
            id: string;
        };
        id: string;
    }): Promise<void>;
    /**
     * 販売者に属する施設を全削除
     */
    deleteMovieTheatersByParentOrganizationId(params: {
        project: {
            id: string;
        };
        parentOrganization: {
            /**
             * 販売者ID
             */
            id: string;
        };
    }): Promise<import("mongodb").DeleteResult>;
    /**
     * プロジェクトに属する施設を全削除
     */
    deleteMovieTheatersByProject(params: {
        project: {
            id: string;
        };
    }): Promise<void>;
    getCursor(conditions: FilterQuery<any>, projection: any): import("mongoose").Cursor<import("mongoose").Document<unknown, {}, IDocType> & Omit<import("@chevre/factory/lib/place/movieTheater").IPlace, "id"> & {
        hasPOS?: factory.place.movieTheater.IPOS[];
    } & {
        _id: import("mongoose").Types.ObjectId;
    }, import("mongoose").QueryOptions<import("mongoose").Document<unknown, {}, IDocType> & Omit<import("@chevre/factory/lib/place/movieTheater").IPlace, "id"> & {
        hasPOS?: factory.place.movieTheater.IPOS[];
    } & {
        _id: import("mongoose").Types.ObjectId;
    }>>;
    unsetUnnecessaryFields(params: {
        filter: any;
        $unset: any;
    }): Promise<import("mongoose").UpdateWriteOpResult>;
}
export {};
