import type { Prisma } from '../../../prisma-client';
type WhereCondition = {
    slotUtcStartDate?: Date | string;
    slotUtcEndDate?: Date | string;
    eventTypeId?: number;
    uid?: string | {
        not: string;
    };
    releaseAt?: {
        gt: Date;
    };
};
export type FindManyArgs = {
    where?: WhereCondition & {
        OR?: WhereCondition[];
    };
    select?: Prisma.SelectedSlotsSelect;
};
export type TimeSlot = {
    utcStartIso: string;
    utcEndIso: string;
};
export declare class SelectedSlotsRepository {
    static findMany({ where, select }: FindManyArgs): Promise<{
        id: number;
        uid: string;
        userId: number;
        eventTypeId: number;
        slotUtcStartDate: Date;
        slotUtcEndDate: Date;
        releaseAt: Date;
        isSeat: boolean;
    }[]>;
    static findFirst({ where }: {
        where: Prisma.SelectedSlotsWhereInput;
    }): Promise<{
        id: number;
        uid: string;
        userId: number;
        eventTypeId: number;
        slotUtcStartDate: Date;
        slotUtcEndDate: Date;
        releaseAt: Date;
        isSeat: boolean;
    } | null>;
    static findReservedByOthers({ slot, eventTypeId, uid, }: {
        slot: TimeSlot;
        eventTypeId: number;
        uid: string;
    }): Promise<{
        id: number;
        uid: string;
        userId: number;
        eventTypeId: number;
        slotUtcStartDate: Date;
        slotUtcEndDate: Date;
        releaseAt: Date;
        isSeat: boolean;
    } | null>;
    static findManyReservedByOthers(slots: TimeSlot[], eventTypeId: number, uid: string): Promise<{
        id: number;
        uid: string;
        userId: number;
        eventTypeId: number;
        slotUtcStartDate: Date;
        slotUtcEndDate: Date;
        releaseAt: Date;
        isSeat: boolean;
    }[]>;
}
export {};
//# sourceMappingURL=selectedSlots.d.ts.map