import type { Connection } from 'mongoose';
import * as factory from '../factory';
export type ISearchConditions<T extends factory.tripType> = factory.trip.ISearchConditions<T>;
export interface IAttributes4patchUpdate<T extends factory.tripType> {
    typeOf: T;
}
/**
 * トリップリポジトリ
 */
export declare class TripRepo {
    private readonly tripModel;
    constructor(connection: Connection);
    static CREATE_MONGO_CONDITIONS<T extends factory.tripType>(conditions: ISearchConditions<T>): any[];
    createMany<T extends factory.tripType>(params: factory.trip.ITrip<T>[]): Promise<factory.trip.ITrip<T>[]>;
    updatePartiallyById<T extends factory.tripType>(params: {
        id: string;
        attributes: IAttributes4patchUpdate<T>;
    }): Promise<factory.trip.ITrip<T>>;
    /**
     * イベントを保管する
     */
    save<T extends factory.tripType>(params: {
        id?: string;
        attributes: factory.trip.ITrip<T>;
        $unset?: {
            [key: string]: number;
        };
        upsert?: boolean;
    }): Promise<factory.trip.ITrip<T>>;
    saveMany<T extends factory.tripType>(params: {
        id?: string;
        attributes: factory.trip.ITrip<T>;
        $unset?: {
            [key: string]: number;
        };
        upsert?: boolean;
    }[]): Promise<void>;
    search<T extends factory.tripType>(params: ISearchConditions<T>, projection?: {
        [key: string]: number;
    }): Promise<factory.trip.ITrip<T>[]>;
    findById<T extends factory.tripType>(params: {
        id: string;
    }, projection?: {
        [key: string]: number;
    }): Promise<factory.trip.ITrip<T>>;
    deleteById(params: {
        id: string;
    }): Promise<void>;
    deleteByProject(params: {
        project: {
            id: string;
        };
    }): Promise<void>;
    unsetUnnecessaryFields(params: {
        filter: any;
        $unset: any;
    }): Promise<import("mongoose").UpdateWriteOpResult>;
}
