import type { RoutingFormResponse } from '../getLuckyUser';
import type { BookingRepository } from '../../repositories/BookingRepository';
import type { EventType } from '../../../users/lib/getRoutedUsers';
import type { SelectedCalendar } from '../../../../kysely/types.ts';
import { SchedulingType } from '../../../../prisma/enums';
import type { CredentialForCalendarService, CredentialPayload } from "@calcom/types/Credential";
import type { FilterHostsService } from "./filterHostsBySameRoundRobinHost";
export interface IQualifiedHostsService {
    bookingRepo: BookingRepository;
    filterHostsService: FilterHostsService;
}
type Host<T> = {
    isFixed: boolean;
    createdAt: Date;
    priority?: number | null;
    weight?: number | null;
    groupId: string | null;
} & {
    user: T;
};
export declare class QualifiedHostsService {
    readonly dependencies: IQualifiedHostsService;
    constructor(dependencies: IQualifiedHostsService);
    _findQualifiedHostsWithDelegationCredentials<T extends {
        email: string;
        id: number;
        credentials: CredentialPayload[];
        userLevelSelectedCalendars: SelectedCalendar[];
    } & Record<string, unknown>>({ eventType, rescheduleUid, routedTeamMemberIds, contactOwnerEmail, routingFormResponse, rrHostSubsetIds, }: {
        eventType: {
            id: number;
            maxLeadThreshold?: number | null;
            hosts?: Host<T>[];
            users: T[];
            schedulingType: SchedulingType | null;
            isRRWeightsEnabled: boolean;
            rescheduleWithSameRoundRobinHost: boolean;
            includeNoShowInRRCalculation: boolean;
            rrHostSubsetEnabled?: boolean;
        } & EventType;
        rescheduleUid: string | null;
        routedTeamMemberIds: number[];
        contactOwnerEmail: string | null;
        routingFormResponse: RoutingFormResponse | null;
        rrHostSubsetIds?: number[];
    }): Promise<{
        qualifiedRRHosts: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
        fixedHosts: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
        allFallbackRRHosts?: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
    }>;
    findQualifiedHostsWithDelegationCredentials: <T extends {
        email: string;
        id: number;
        credentials: CredentialPayload[];
        userLevelSelectedCalendars: SelectedCalendar[];
    } & Record<string, unknown>>(args_0: {
        eventType: {
            id: number;
            maxLeadThreshold?: number | null;
            hosts?: Host<T>[];
            users: T[];
            schedulingType: SchedulingType | null;
            isRRWeightsEnabled: boolean;
            rescheduleWithSameRoundRobinHost: boolean;
            includeNoShowInRRCalculation: boolean;
            rrHostSubsetEnabled?: boolean;
        } & EventType;
        rescheduleUid: string | null;
        routedTeamMemberIds: number[];
        contactOwnerEmail: string | null;
        routingFormResponse: RoutingFormResponse | null;
        rrHostSubsetIds?: number[];
    }) => Promise<{
        qualifiedRRHosts: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
        fixedHosts: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
        allFallbackRRHosts?: {
            isFixed: boolean;
            createdAt: Date | null;
            priority?: number | null;
            weight?: number | null;
            user: Omit<T, "credentials"> & {
                credentials: CredentialForCalendarService[];
            };
        }[];
    }>;
}
export {};
//# sourceMappingURL=findQualifiedHostsWithDelegationCredentials.d.ts.map