import { Prisma } from '../../../../prisma-client';
import type { Team } from '../../../../prisma/client';
export type TeamWithMembers = Awaited<ReturnType<typeof getTeamWithMembers>>;
export declare function getTeamWithMembers(args: {
    id?: number;
    slug?: string;
    userId?: number;
    orgSlug?: string | null;
    isTeamView?: boolean;
    currentOrg?: Pick<Team, "id"> | null;
    /**
     * If true, means that you are fetching an organization and not a team
     */
    isOrgView?: boolean;
}): Promise<{
    /** To prevent breaking we only return non-email attached token here, if we have one */
    inviteToken: {
        expires: Date;
        identifier: string;
        token: string;
        expiresInDays: number | null;
    } | undefined;
    metadata: {
        requestedSlug?: 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;
    };
    eventTypes: {
        metadata: {
            config?: {
                useHostSchedulesForTeamEvent?: boolean | undefined;
            } | undefined;
            smartContractAddress?: string | undefined;
            blockchainId?: number | undefined;
            multipleDuration?: number[] | undefined;
            giphyThankYouPage?: string | undefined;
            additionalNotesRequired?: boolean | undefined;
            disableSuccessPage?: boolean | undefined;
            disableStandardEmails?: {
                all?: {
                    host?: boolean | undefined;
                    attendee?: boolean | undefined;
                } | undefined;
                confirmation?: {
                    host?: boolean | undefined;
                    attendee?: boolean | undefined;
                } | undefined;
            } | undefined;
            managedEventConfig?: {
                unlockedFields?: {
                    schedule?: true | undefined;
                    profile?: true | undefined;
                    bookings?: true | undefined;
                    users?: true | undefined;
                    children?: true | undefined;
                    length?: true | undefined;
                    title?: true | undefined;
                    metadata?: true | undefined;
                    description?: true | undefined;
                    price?: true | undefined;
                    webhooks?: true | undefined;
                    owner?: true | undefined;
                    hidden?: true | undefined;
                    team?: true | undefined;
                    availability?: true | undefined;
                    workflows?: true | undefined;
                    hosts?: true | undefined;
                    currency?: true | undefined;
                    slug?: true | undefined;
                    userId?: true | undefined;
                    position?: true | undefined;
                    locations?: true | undefined;
                    offsetStart?: true | undefined;
                    profileId?: true | undefined;
                    teamId?: true | undefined;
                    useEventLevelSelectedCalendars?: true | undefined;
                    eventName?: true | undefined;
                    parentId?: true | undefined;
                    bookingFields?: true | undefined;
                    timeZone?: true | undefined;
                    periodType?: true | undefined;
                    periodStartDate?: true | undefined;
                    periodEndDate?: true | undefined;
                    periodDays?: true | undefined;
                    periodCountCalendarDays?: true | undefined;
                    lockTimeZoneToggleOnBookingPage?: true | undefined;
                    requiresConfirmation?: true | undefined;
                    requiresConfirmationWillBlockSlot?: true | undefined;
                    requiresConfirmationForFreeEmail?: true | undefined;
                    requiresBookerEmailVerification?: true | undefined;
                    canSendCalVideoTranscriptionEmails?: true | undefined;
                    autoTranslateDescriptionEnabled?: true | undefined;
                    recurringEvent?: true | undefined;
                    disableGuests?: true | undefined;
                    hideCalendarNotes?: true | undefined;
                    hideCalendarEventDetails?: true | undefined;
                    minimumBookingNotice?: true | undefined;
                    beforeEventBuffer?: true | undefined;
                    afterEventBuffer?: true | undefined;
                    seatsPerTimeSlot?: true | undefined;
                    onlyShowFirstAvailableSlot?: true | undefined;
                    seatsShowAttendees?: true | undefined;
                    seatsShowAvailabilityCount?: true | undefined;
                    schedulingType?: true | undefined;
                    scheduleId?: true | undefined;
                    slotInterval?: true | undefined;
                    successRedirectUrl?: true | undefined;
                    forwardParamsSuccessRedirect?: true | undefined;
                    bookingLimits?: true | undefined;
                    durationLimits?: true | undefined;
                    isInstantEvent?: true | undefined;
                    instantMeetingExpiryTimeOffsetInSeconds?: true | undefined;
                    instantMeetingScheduleId?: true | undefined;
                    instantMeetingParameters?: true | undefined;
                    assignAllTeamMembers?: true | undefined;
                    assignRRMembersUsingSegment?: true | undefined;
                    rrSegmentQueryValue?: true | undefined;
                    useEventTypeDestinationCalendarEmail?: true | undefined;
                    isRRWeightsEnabled?: true | undefined;
                    maxLeadThreshold?: true | undefined;
                    allowReschedulingPastBookings?: true | undefined;
                    eventTypeColor?: true | undefined;
                    rescheduleWithSameRoundRobinHost?: true | undefined;
                    secondaryEmailId?: true | undefined;
                    hashedLink?: true | undefined;
                    destinationCalendar?: true | undefined;
                    customInputs?: true | undefined;
                    parent?: true | undefined;
                    instantMeetingSchedule?: true | undefined;
                    aiPhoneCallConfig?: true | undefined;
                    fieldTranslations?: true | undefined;
                    selectedCalendars?: true | undefined;
                    secondaryEmail?: true | undefined;
                    _count?: true | undefined;
                } | undefined;
            } | undefined;
            requiresConfirmationThreshold?: {
                time: number;
                unit: "months" | "years" | "days" | "hours" | "minutes" | "milliseconds" | "seconds" | "dates";
            } | undefined;
            bookerLayouts?: {
                enabledLayouts: import('../../../../prisma/zod-utils').BookerLayouts[];
                defaultLayout: import('../../../../prisma/zod-utils').BookerLayouts;
            } | null | undefined;
            apps?: unknown;
        } | null;
        users: ({
            name: string | null;
            id: number;
            username: string | null;
            email: string;
            teams: {
                team: {
                    id: number;
                    slug: string | null;
                };
            }[];
            bio: string | null;
            avatarUrl: string | null;
            credentials: {
                app: {
                    categories: import('../../../../prisma-client').$Enums.AppCategories[];
                    slug: string;
                } | null;
                destinationCalendars: {
                    externalId: string;
                }[];
            }[];
        } & {
            nonProfileUsername: string | null;
            profile: import("@calcom/types/UserProfile").UserProfile;
        })[];
        id: number;
        length: number;
        title: string;
        description: string | null;
        price: number;
        hidden: boolean;
        hosts: {
            user: {
                name: string | null;
                id: number;
                username: string | null;
                email: string;
                teams: {
                    team: {
                        id: number;
                        slug: string | null;
                    };
                }[];
                bio: string | null;
                avatarUrl: string | null;
                credentials: {
                    app: {
                        categories: import('../../../../prisma-client').$Enums.AppCategories[];
                        slug: string;
                    } | null;
                    destinationCalendars: {
                        externalId: string;
                    }[];
                }[];
            };
        }[];
        currency: string;
        slug: string;
        lockTimeZoneToggleOnBookingPage: boolean;
        requiresConfirmation: boolean;
        requiresBookerEmailVerification: boolean;
        canSendCalVideoTranscriptionEmails: boolean;
        recurringEvent: Prisma.JsonValue;
        schedulingType: import('../../../../prisma-client').$Enums.SchedulingType | null;
    }[] | null;
    members: {
        username: string | null;
        role: import('../../../../prisma-client').$Enums.MembershipRole;
        profile: import("@calcom/types/UserProfile").UserProfile;
        organizationId: number | null;
        organization: any;
        accepted: boolean;
        disableImpersonation: boolean;
        subteams: (string | null)[] | null;
        bookerUrl: string;
        connectedApps: {
            name: any;
            logo: any;
            app: {
                categories: import('../../../../prisma-client').$Enums.AppCategories[];
                slug: string;
            } | null;
            externalId: string | null;
        }[] | null;
        name: string | null;
        id: number;
        email: string;
        teams: {
            team: {
                id: number;
                slug: string | null;
            };
        }[];
        bio: string | null;
        avatarUrl: string | null;
        nonProfileUsername: string | null;
    }[];
    logo?: string | undefined;
    name: string;
    id: number;
    children: {
        name: string;
        slug: string | null;
    }[];
    bio: string | null;
    theme: string | null;
    slug: string | null;
    parentId: number | null;
    parent: {
        name: string;
        id: number;
        metadata: Prisma.JsonValue;
        slug: string | null;
        organizationSettings: {
            orgAutoAcceptEmail: string;
            allowSEOIndexing: boolean;
            orgProfileRedirectsToVerifiedDomain: boolean;
        } | null;
        logoUrl: string | null;
        isPrivate: boolean;
        isOrganization: boolean;
    } | null;
    organizationSettings: {
        orgAutoAcceptEmail: string;
        allowSEOIndexing: boolean;
        orgProfileRedirectsToVerifiedDomain: boolean;
    } | null;
    hideBranding: boolean;
    brandColor: string | null;
    darkBrandColor: string | null;
    logoUrl: string | null;
    isPrivate: boolean;
    hideBookATeamMember: boolean;
    isOrganization: boolean;
} | null>;
export declare function getTeamWithoutMembers(args: {
    id?: number;
    slug?: string;
    userId?: number;
    orgSlug?: string | null;
    /**
     * If true, means that you are fetching an organization and not a team
     */
    isOrgView?: boolean;
}): Promise<{
    /** To prevent breaking we only return non-email attached token here, if we have one */
    inviteToken: {
        expires: Date;
        identifier: string;
        token: string;
        expiresInDays: number | null;
    } | undefined;
    metadata: {
        requestedSlug?: 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;
    };
    bookingLimits: Partial<Record<"PER_WEEK" | "PER_MONTH" | "PER_YEAR" | "PER_DAY", number | undefined>> | null;
    logo?: string | undefined;
    name: string;
    id: number;
    children: {
        name: string;
        slug: string | null;
    }[];
    bio: string | null;
    theme: string | null;
    slug: string | null;
    parentId: number | null;
    parent: {
        name: string;
        id: number;
        metadata: Prisma.JsonValue;
        slug: string | null;
        logoUrl: string | null;
        isPrivate: boolean;
        isOrganization: boolean;
    } | null;
    hideBranding: boolean;
    brandColor: string | null;
    darkBrandColor: string | null;
    logoUrl: string | null;
    isPrivate: boolean;
    hideBookATeamMember: boolean;
    rrResetInterval: import('../../../../prisma-client').$Enums.RRResetInterval | null;
    includeManagedEventsInLimits: boolean;
    isOrganization: boolean;
} | null>;
export declare function isTeamAdmin(userId: number, teamId: number): Promise<false | ({
    team: {
        metadata: Prisma.JsonValue;
        parentId: number | null;
        isOrganization: boolean;
    };
} & {
    id: number;
    role: import('../../../../prisma-client').$Enums.MembershipRole;
    userId: number;
    teamId: number;
    disableImpersonation: boolean;
    accepted: boolean;
})>;
export declare function isTeamOwner(userId: number, teamId: number): Promise<boolean>;
export declare function isTeamMember(userId: number, teamId: number): Promise<boolean>;
export declare function updateNewTeamMemberEventTypes(userId: number, teamId: number): Promise<void>;
//# sourceMappingURL=index.d.ts.map