import type { AttributesQueryValue } from '../raqb/types';
import { SchedulingType } from '../../prisma/enums';
export declare const getRoutedHostsWithContactOwnerAndFixedHosts: <T extends {
    user: {
        id: number;
        email: string;
    };
    isFixed?: boolean;
}>({ routedTeamMemberIds, hosts, contactOwnerEmail, }: {
    routedTeamMemberIds: number[] | null;
    hosts: T[];
    contactOwnerEmail: string | null;
}) => T[];
export declare const getRoutedUsersWithContactOwnerAndFixedUsers: <T extends {
    id: number;
    isFixed?: boolean;
    email: string;
}>({ routedTeamMemberIds, users, contactOwnerEmail, }: {
    routedTeamMemberIds: number[] | null;
    users: T[];
    contactOwnerEmail: string | null;
}) => T[];
type BaseUser = {
    id: number;
    email: string;
};
type BaseHost<User extends BaseUser> = {
    isFixed: boolean;
    createdAt: Date;
    priority?: number | null;
    weight?: number | null;
    weightAdjustment?: number | null;
    user: User;
};
type EventType = {
    assignAllTeamMembers: boolean;
    assignRRMembersUsingSegment: boolean;
    rrSegmentQueryValue: AttributesQueryValue | null | undefined;
    team: {
        id: number;
    } | null;
};
export declare function getNormalizedHosts<User extends BaseUser, Host extends BaseHost<User>>({ eventType, }: {
    eventType: {
        schedulingType: SchedulingType | null;
        hosts?: Host[];
        users: User[];
    };
}): {
    hosts: {
        isFixed: boolean;
        email: string;
        user: User;
        priority: number | null | undefined;
        weight: number | null | undefined;
        createdAt: Date;
    }[];
    fallbackHosts: null;
} | {
    hosts: null;
    fallbackHosts: {
        isFixed: boolean;
        email: string;
        user: User;
        createdAt: null;
    }[];
};
export declare function findMatchingHostsWithEventSegment<User extends BaseUser>({ eventType, normalizedHosts, }: {
    eventType: EventType;
    normalizedHosts: {
        isFixed: boolean;
        email: string;
        user: User;
        priority?: number | null;
        weight?: number | null;
        createdAt: Date | null;
    }[];
}): Promise<{
    isFixed: boolean;
    email: string;
    user: User;
    priority?: number | null;
    weight?: number | null;
    createdAt: Date | null;
}[]>;
export {};
//# sourceMappingURL=getRoutedUsers.d.ts.map