import type { Prisma } from '../../../prisma-client';
import { z } from "zod";
import type { readonlyPrisma } from '../../../prisma';
export declare const insightsBookingServiceOptionsSchema: z.ZodDiscriminatedUnion<"scope", [z.ZodObject<{
    scope: z.ZodLiteral<"user">;
    userId: z.ZodNumber;
    orgId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    userId: number;
    scope: "user";
    orgId: number;
}, {
    userId: number;
    scope: "user";
    orgId: number;
}>, z.ZodObject<{
    scope: z.ZodLiteral<"org">;
    userId: z.ZodNumber;
    orgId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    userId: number;
    scope: "org";
    orgId: number;
}, {
    userId: number;
    scope: "org";
    orgId: number;
}>, z.ZodObject<{
    scope: z.ZodLiteral<"team">;
    userId: z.ZodNumber;
    orgId: z.ZodNumber;
    teamId: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    userId: number;
    teamId: number;
    scope: "team";
    orgId: number;
}, {
    userId: number;
    teamId: number;
    scope: "team";
    orgId: number;
}>]>;
export type InsightsBookingServiceOptions = z.infer<typeof insightsBookingServiceOptionsSchema>;
export type InsightsBookingServiceFilterOptions = {
    eventTypeId?: number;
    memberUserId?: number;
};
export declare class InsightsBookingService {
    private prisma;
    private options;
    private filters?;
    private cachedAuthConditions?;
    private cachedFilterConditions?;
    constructor({ prisma, options, filters, }: {
        prisma: typeof readonlyPrisma;
        options: InsightsBookingServiceOptions;
        filters?: InsightsBookingServiceFilterOptions;
    });
    findMany(findManyArgs: Prisma.BookingTimeStatusDenormalizedFindManyArgs): Promise<{
        id: number;
        title: string;
        status: import('../../../prisma-client').$Enums.BookingStatus;
        description: string | null;
        paid: boolean;
        location: string | null;
        rescheduled: boolean | null;
        rating: number | null;
        uid: string;
        userId: number | null;
        eventTypeId: number | null;
        teamId: number | null;
        startTime: Date;
        endTime: Date;
        createdAt: Date;
        updatedAt: Date | null;
        ratingFeedback: string | null;
        noShowHost: boolean | null;
        eventLength: number | null;
        eventParentId: number | null;
        userEmail: string | null;
        userName: string | null;
        userUsername: string | null;
        isTeamBooking: boolean;
        timeStatus: string | null;
    }[]>;
    getAuthorizationConditions(): Promise<Prisma.BookingTimeStatusDenormalizedWhereInput>;
    getFilterConditions(): Promise<Prisma.BookingTimeStatusDenormalizedWhereInput | null>;
    buildFilterConditions(): Promise<Prisma.BookingTimeStatusDenormalizedWhereInput | null>;
    buildAuthorizationConditions(): Promise<Prisma.BookingTimeStatusDenormalizedWhereInput>;
    private buildOrgAuthorizationCondition;
    private buildTeamAuthorizationCondition;
    private isOrgOwnerOrAdmin;
}
//# sourceMappingURL=insightsBooking.d.ts.map