import { Connection } from 'mongoose';
import creativeWorkModel from './mongoose/model/creativeWork';
import * as factory from '../factory';
/**
 * 作品抽象リポジトリー
 */
export declare abstract class Repository {
    abstract saveMovie(movie: factory.creativeWork.movie.ICreativeWork): Promise<void>;
}
/**
 * 作品リポジトリー
 */
export declare class MongoRepository implements Repository {
    readonly creativeWorkModel: typeof creativeWorkModel;
    constructor(connection: Connection);
    static CREATE_MONGO_CONDITIONS(params: factory.creativeWork.movie.ISearchConditions): any[];
    /**
     * 映画作品を保管する
     */
    saveMovie(movie: factory.creativeWork.movie.ICreativeWork): Promise<void>;
    /**
     * 識別子で映画作品を検索する
     */
    findMovieByIdentifier(params: {
        identifier: string;
    }): Promise<factory.creativeWork.movie.ICreativeWork>;
    countMovies(params: factory.creativeWork.movie.ISearchConditions): Promise<number>;
    /**
     * 映画作品を検索する
     */
    searchMovies(params: factory.creativeWork.movie.ISearchConditions): Promise<factory.creativeWork.movie.ICreativeWork[]>;
    /**
     * 映画作品を削除する
     */
    deleteMovie(params: {
        identifier: string;
    }): Promise<void>;
}
