import { Prisma } from '../../../../kysely/types.ts';
import type { NewBookingEventType } from "./getEventTypesFromDB";
type EventType = Pick<NewBookingEventType, "hosts" | "users" | "id" | "schedulingType" | "team" | "assignAllTeamMembers" | "assignRRMembersUsingSegment" | "rrSegmentQueryValue">;
export declare const loadUsers: ({ eventType, dynamicUserList, hostname, forcedSlug, isPlatform, routedTeamMemberIds, contactOwnerEmail, }: {
    eventType: EventType;
    dynamicUserList: string[];
    routedTeamMemberIds: number[] | null;
    contactOwnerEmail: string | null;
    hostname: string;
    forcedSlug: string | undefined;
    isPlatform: boolean;
}) => Promise<(Omit<{
    schedules: {
        id: number;
        availability: {
            days: number[];
            date: Date | null;
            startTime: Date;
            endTime: Date;
        }[];
        timeZone: string | null;
    }[];
    name: string | null;
    id: number;
    metadata: import("@prisma/client/runtime/client").JsonValue;
    username: string | null;
    email: string;
    availability: {
        id: number;
        days: number[];
        date: Date | null;
        userId: number | null;
        eventTypeId: number | null;
        scheduleId: number | null;
        startTime: Date;
        endTime: Date;
    }[];
    theme: string | null;
    locked: boolean;
    locale: string | null;
    credentials: {
        key: import("@prisma/client/runtime/client").JsonValue;
        user: {
            email: string;
        } | null;
        id: number;
        type: string;
        userId: number | null;
        teamId: number | null;
        appId: string | null;
        invalid: boolean | null;
        delegationCredentialId: string | null;
    }[];
    timeZone: string;
    startTime: number;
    endTime: number;
    bufferTime: number;
    hideBranding: boolean;
    defaultScheduleId: number | null;
    timeFormat: number | null;
    brandColor: string | null;
    darkBrandColor: string | null;
    allowDynamicBooking: boolean | null;
    isPlatformManaged: boolean;
    destinationCalendar: {
        id: number;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        primaryEmail: string | null;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
    } | null;
    selectedCalendars: {
        error: string | null;
        id: string;
        userId: number;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
        googleChannelId: string | null;
        googleChannelKind: string | null;
        googleChannelResourceId: string | null;
        googleChannelResourceUri: string | null;
        googleChannelExpiration: string | null;
        channelId: string | null;
        channelKind: string | null;
        channelResourceId: string | null;
        channelResourceUri: string | null;
        channelExpiration: Date | null;
        syncSubscribedAt: Date | null;
        syncToken: string | null;
        syncedAt: Date | null;
        syncErrorAt: Date | null;
        syncErrorCount: number | null;
        lastErrorAt: Date | null;
        watchAttempts: number;
        unwatchAttempts: number;
        maxAttempts: number;
    }[];
    travelSchedules: {
        id: number;
        userId: number;
        timeZone: string;
        startDate: Date;
        endDate: Date | null;
        prevTimeZone: string | null;
    }[];
}, "selectedCalendars"> & {
    allSelectedCalendars: {
        error: string | null;
        id: string;
        userId: number;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
        googleChannelId: string | null;
        googleChannelKind: string | null;
        googleChannelResourceId: string | null;
        googleChannelResourceUri: string | null;
        googleChannelExpiration: string | null;
        channelId: string | null;
        channelKind: string | null;
        channelResourceId: string | null;
        channelResourceUri: string | null;
        channelExpiration: Date | null;
        syncSubscribedAt: Date | null;
        syncToken: string | null;
        syncedAt: Date | null;
        syncErrorAt: Date | null;
        syncErrorCount: number | null;
        lastErrorAt: Date | null;
        watchAttempts: number;
        unwatchAttempts: number;
        maxAttempts: number;
    }[];
    userLevelSelectedCalendars: {
        error: string | null;
        id: string;
        userId: number;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
        googleChannelId: string | null;
        googleChannelKind: string | null;
        googleChannelResourceId: string | null;
        googleChannelResourceUri: string | null;
        googleChannelExpiration: string | null;
        channelId: string | null;
        channelKind: string | null;
        channelResourceId: string | null;
        channelResourceUri: string | null;
        channelExpiration: Date | null;
        syncSubscribedAt: Date | null;
        syncToken: string | null;
        syncedAt: Date | null;
        syncErrorAt: Date | null;
        syncErrorCount: number | null;
        lastErrorAt: Date | null;
        watchAttempts: number;
        unwatchAttempts: number;
        maxAttempts: number;
    }[];
})[]>;
/**
 * This method is mostly same as the one in UserRepository but it includes a lot more relations which are specific requirement here
 * TODO: Figure out how to keep it in UserRepository and use it here
 */
export declare const findUsersByUsername: ({ usernameList, orgSlug, }: {
    orgSlug: string | null;
    usernameList: string[];
}) => Promise<{
    organizationId: number | null;
    profile: {
        organization: Omit<{
            name: string;
            id: number;
            metadata: import("@prisma/client/runtime/client").JsonValue;
            theme: string | null;
            slug: string | null;
            hideBranding: boolean;
            brandColor: string | null;
            darkBrandColor: string | null;
            logoUrl: string | null;
            bannerUrl: string | null;
            isPlatform: boolean;
            organizationSettings: {
                allowSEOIndexing: boolean;
                orgProfileRedirectsToVerifiedDomain: boolean;
                disableAutofillOnBookingPage: boolean;
            } | null;
        } & Omit<Pick<{
            name: string;
            id: number;
            metadata: import("@prisma/client/runtime/client").JsonValue | null;
            bio: string | null;
            theme: string | null;
            slug: string | null;
            createdAt: Date;
            parentId: number | null;
            timeZone: string;
            bookingLimits: import("@prisma/client/runtime/client").JsonValue | null;
            weekStart: string;
            hideBranding: boolean;
            timeFormat: number | null;
            brandColor: string | null;
            darkBrandColor: string | null;
            smsLockState: import('../../../../kysely/types.ts').SMSLockState;
            smsLockReviewedByAdmin: boolean;
            logoUrl: string | null;
            calVideoLogo: string | null;
            appLogo: string | null;
            appIconLogo: string | null;
            hideTeamProfileLink: boolean;
            isPrivate: boolean;
            hideBookATeamMember: boolean;
            rrResetInterval: import('../../../../kysely/types.ts').RRResetInterval | null;
            rrTimestampBasis: import('../../../../kysely/types.ts').RRTimestampBasis;
            bannerUrl: string | null;
            isOrganization: boolean;
            pendingPayment: boolean;
            isPlatform: boolean;
            createdByOAuthClientId: string | null;
            includeManagedEventsInLimits: boolean;
        }, "name" | "id" | "metadata" | "theme" | "slug" | "hideBranding" | "brandColor" | "darkBrandColor" | "logoUrl" | "bannerUrl" | "isPlatform">, "metadata"> & {
            requestedSlug: string | null;
            metadata: {
                requestedSlug: string | null;
                defaultConferencingApp?: {
                    appSlug?: string | undefined;
                    appLink?: string | undefined;
                } | undefined;
                paymentId?: string | undefined;
                subscriptionId?: string | null | undefined;
                subscriptionItemId?: string | null | undefined;
                orgSeats?: number | null | undefined;
                orgPricePerSeat?: number | null | undefined;
                migratedToOrgFrom?: {
                    teamSlug?: string | null | undefined;
                    lastMigrationTime?: string | undefined;
                    reverted?: boolean | undefined;
                    lastRevertTime?: string | undefined;
                } | undefined;
                billingPeriod?: import('../../../../prisma/zod-utils').BillingPeriod | undefined;
            };
        }, "metadata"> & {
            requestedSlug: string | null;
            metadata: {
                requestedSlug: string | null;
                defaultConferencingApp?: {
                    appSlug?: string | undefined;
                    appLink?: string | undefined;
                } | undefined;
                paymentId?: string | undefined;
                subscriptionId?: string | null | undefined;
                subscriptionItemId?: string | null | undefined;
                orgSeats?: number | null | undefined;
                orgPricePerSeat?: number | null | undefined;
                migratedToOrgFrom?: {
                    teamSlug?: string | null | undefined;
                    lastMigrationTime?: string | undefined;
                    reverted?: boolean | undefined;
                    lastRevertTime?: string | undefined;
                } | undefined;
                billingPeriod?: import('../../../../prisma/zod-utils').BillingPeriod | undefined;
            };
        };
        user: {
            name: string | null;
            id: number;
            username: string | null;
            email: string;
            locale: string | null;
            avatarUrl: string | null;
            startTime: number;
            endTime: number;
            bufferTime: number;
            defaultScheduleId: number | null;
            isPlatformManaged: boolean;
        };
        id: number;
        username: string;
        uid: string;
        organizationId: number;
        userId: number;
        createdAt: Date & string;
        updatedAt: Date & string;
        upId: string;
    } | null;
    schedules: {
        id: number;
        availability: {
            days: number[];
            date: Date | null;
            startTime: Date;
            endTime: Date;
        }[];
        timeZone: string | null;
    }[];
    name: string | null;
    id: number;
    metadata: import("@prisma/client/runtime/client").JsonValue;
    username: string | null;
    email: string;
    availability: {
        id: number;
        days: number[];
        date: Date | null;
        userId: number | null;
        eventTypeId: number | null;
        scheduleId: number | null;
        startTime: Date;
        endTime: Date;
    }[];
    theme: string | null;
    locked: boolean;
    locale: string | null;
    credentials: {
        key: import("@prisma/client/runtime/client").JsonValue;
        user: {
            email: string;
        } | null;
        id: number;
        type: string;
        userId: number | null;
        teamId: number | null;
        appId: string | null;
        invalid: boolean | null;
        delegationCredentialId: string | null;
    }[];
    timeZone: string;
    startTime: number;
    endTime: number;
    bufferTime: number;
    hideBranding: boolean;
    defaultScheduleId: number | null;
    timeFormat: number | null;
    brandColor: string | null;
    darkBrandColor: string | null;
    allowDynamicBooking: boolean | null;
    isPlatformManaged: boolean;
    destinationCalendar: {
        id: number;
        userId: number | null;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        primaryEmail: string | null;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
    } | null;
    travelSchedules: {
        id: number;
        userId: number;
        timeZone: string;
        startDate: Date;
        endDate: Date | null;
        prevTimeZone: string | null;
    }[];
    allSelectedCalendars: {
        error: string | null;
        id: string;
        userId: number;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
        googleChannelId: string | null;
        googleChannelKind: string | null;
        googleChannelResourceId: string | null;
        googleChannelResourceUri: string | null;
        googleChannelExpiration: string | null;
        channelId: string | null;
        channelKind: string | null;
        channelResourceId: string | null;
        channelResourceUri: string | null;
        channelExpiration: Date | null;
        syncSubscribedAt: Date | null;
        syncToken: string | null;
        syncedAt: Date | null;
        syncErrorAt: Date | null;
        syncErrorCount: number | null;
        lastErrorAt: Date | null;
        watchAttempts: number;
        unwatchAttempts: number;
        maxAttempts: number;
    }[];
    userLevelSelectedCalendars: {
        error: string | null;
        id: string;
        userId: number;
        eventTypeId: number | null;
        createdAt: Date | null;
        updatedAt: Date | null;
        delegationCredentialId: string | null;
        integration: string;
        externalId: string;
        credentialId: number | null;
        domainWideDelegationCredentialId: string | null;
        googleChannelId: string | null;
        googleChannelKind: string | null;
        googleChannelResourceId: string | null;
        googleChannelResourceUri: string | null;
        googleChannelExpiration: string | null;
        channelId: string | null;
        channelKind: string | null;
        channelResourceId: string | null;
        channelResourceUri: string | null;
        channelExpiration: Date | null;
        syncSubscribedAt: Date | null;
        syncToken: string | null;
        syncedAt: Date | null;
        syncErrorAt: Date | null;
        syncErrorCount: number | null;
        lastErrorAt: Date | null;
        watchAttempts: number;
        unwatchAttempts: number;
        maxAttempts: number;
    }[];
}[]>;
export type LoadedUsers = Awaited<ReturnType<typeof loadUsers>>;
export type OrganizerUser = LoadedUsers[number] & {
    isFixed?: boolean;
    metadata?: Prisma.JsonValue;
};
export {};
//# sourceMappingURL=loadUsers.d.ts.map