import type { OrganizationSettings } from '../../../prisma/client';
type MinimumOrganizationSettings = Pick<OrganizationSettings, "orgAutoAcceptEmail" | "orgProfileRedirectsToVerifiedDomain" | "allowSEOIndexing">;
type SEOOrganizationSettings = Pick<OrganizationSettings, "allowSEOIndexing">;
export declare class OrganizationRepository {
    static createWithExistingUserAsOwner({ orgData, owner, }: {
        orgData: {
            name: string;
            slug: string;
            isOrganizationConfigured: boolean;
            isOrganizationAdminReviewed: boolean;
            autoAcceptEmail: string;
            seats: number | null;
            pricePerSeat: number | null;
            isPlatform: boolean;
            billingPeriod?: "MONTHLY" | "ANNUALLY";
        };
        owner: {
            id: number;
            email: string;
            nonOrgUsername: string;
        };
    }): Promise<{
        organization: {
            metadata: import('../../../prisma-client').Prisma.JsonValue;
            theme: string | null;
            id: number;
            name: string;
            timeZone: string;
            slug: string | null;
            parentId: number | null;
            bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
            createdAt: Date;
            bio: string | null;
            weekStart: string;
            hideBranding: boolean;
            timeFormat: number | null;
            brandColor: string | null;
            darkBrandColor: string | null;
            smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
            smsLockReviewedByAdmin: boolean;
            logoUrl: string | null;
            calVideoLogo: string | null;
            appLogo: string | null;
            appIconLogo: string | null;
            isPrivate: boolean;
            hideBookATeamMember: boolean;
            bannerUrl: string | null;
            isOrganization: boolean;
            pendingPayment: boolean;
            isPlatform: boolean;
            createdByOAuthClientId: string | null;
            includeManagedEventsInLimits: boolean;
        };
        ownerProfile: {
            id: number;
            organizationId: number;
            userId: number;
            uid: string;
            username: string;
            createdAt: Date;
            updatedAt: Date;
        };
    }>;
    static createWithNonExistentOwner({ orgData, owner, }: {
        orgData: {
            name: string;
            slug: string;
            isOrganizationConfigured: boolean;
            isOrganizationAdminReviewed: boolean;
            autoAcceptEmail: string;
            seats: number | null;
            billingPeriod?: "MONTHLY" | "ANNUALLY";
            pricePerSeat: number | null;
            isPlatform: boolean;
        };
        owner: {
            email: string;
        };
    }): Promise<{
        orgOwner: {
            metadata: import('../../../prisma-client').Prisma.JsonValue;
            theme: string | null;
            id: number;
            name: string | null;
            email: string;
            organizationId: number | null;
            timeZone: string;
            username: string | null;
            locale: string | null;
            startTime: number;
            endTime: number;
            movedToProfileId: number | null;
            emailVerified: Date | null;
            bio: string | null;
            avatarUrl: string | null;
            weekStart: string;
            bufferTime: number;
            hideBranding: boolean;
            appTheme: string | null;
            createdDate: Date;
            trialEndsAt: Date | null;
            lastActiveAt: Date | null;
            defaultScheduleId: number | null;
            completedOnboarding: boolean;
            timeFormat: number | null;
            twoFactorSecret: string | null;
            twoFactorEnabled: boolean;
            backupCodes: string | null;
            identityProvider: import('../../../prisma-client').$Enums.IdentityProvider;
            identityProviderId: string | null;
            invitedTo: number | null;
            brandColor: string | null;
            darkBrandColor: string | null;
            allowDynamicBooking: boolean | null;
            allowSEOIndexing: boolean | null;
            receiveMonthlyDigestEmail: boolean | null;
            verified: boolean | null;
            role: import('../../../prisma-client').$Enums.UserPermissionRole;
            disableImpersonation: boolean;
            locked: boolean;
            isPlatformManaged: boolean;
            smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
            smsLockReviewedByAdmin: boolean;
            referralLinkId: string | null;
        };
        organization: {
            metadata: import('../../../prisma-client').Prisma.JsonValue;
            theme: string | null;
            id: number;
            name: string;
            timeZone: string;
            slug: string | null;
            parentId: number | null;
            bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
            createdAt: Date;
            bio: string | null;
            weekStart: string;
            hideBranding: boolean;
            timeFormat: number | null;
            brandColor: string | null;
            darkBrandColor: string | null;
            smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
            smsLockReviewedByAdmin: boolean;
            logoUrl: string | null;
            calVideoLogo: string | null;
            appLogo: string | null;
            appIconLogo: string | null;
            isPrivate: boolean;
            hideBookATeamMember: boolean;
            bannerUrl: string | null;
            isOrganization: boolean;
            pendingPayment: boolean;
            isPlatform: boolean;
            createdByOAuthClientId: string | null;
            includeManagedEventsInLimits: boolean;
        };
        ownerProfile: {
            username: string;
        };
    }>;
    static create(orgData: {
        name: string;
        slug: string;
        isOrganizationConfigured: boolean;
        isOrganizationAdminReviewed: boolean;
        autoAcceptEmail: string;
        seats: number | null;
        billingPeriod?: "MONTHLY" | "ANNUALLY";
        pricePerSeat: number | null;
        isPlatform: boolean;
    }): Promise<{
        metadata: import('../../../prisma-client').Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
    }>;
    static findById({ id }: {
        id: number;
    }): Promise<{
        id: number;
        name: string;
        slug: string | null;
        logoUrl: string | null;
    } | null>;
    static findByIdIncludeOrganizationSettings({ id }: {
        id: number;
    }): Promise<{
        id: number;
        name: string;
        slug: string | null;
        organizationSettings: {
            id: number;
            organizationId: number;
            isOrganizationVerified: boolean;
            isOrganizationConfigured: boolean;
            isAdminReviewed: boolean;
            orgAutoAcceptEmail: string;
            isAdminAPIEnabled: boolean;
            allowSEOIndexing: boolean;
            lockEventTypeCreationForUsers: boolean;
            adminGetsNoSlotsNotification: boolean;
            orgProfileRedirectsToVerifiedDomain: boolean;
        } | null;
        logoUrl: string | null;
    } | null>;
    static findUniqueNonPlatformOrgsByMatchingAutoAcceptEmail({ email }: {
        email: string;
    }): Promise<(Omit<{
        metadata: import('../../../prisma-client').Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
    }, "metadata"> & {
        requestedSlug: string | null;
        metadata: {
            requestedSlug: string | null;
            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;
        };
    }) | null>;
    static findCurrentOrg({ userId, orgId }: {
        userId: number;
        orgId: number;
    }): Promise<{
        metadata: {
            requestedSlug?: string | null | 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;
        } | null;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
        canAdminImpersonate: boolean;
        organizationSettings: {
            lockEventTypeCreationForUsers: boolean | undefined;
            adminGetsNoSlotsNotification: boolean | undefined;
            allowSEOIndexing: boolean | undefined;
            orgProfileRedirectsToVerifiedDomain: boolean | undefined;
            orgAutoAcceptEmail: string | undefined;
        };
        user: {
            role: import('../../../prisma-client').$Enums.MembershipRole;
            accepted: boolean;
        };
    }>;
    static findTeamsInOrgIamNotPartOf({ userId, parentId }: {
        userId: number;
        parentId: number | null;
    }): Promise<{
        metadata: import('../../../prisma-client').Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
    }[]>;
    static adminFindById({ id }: {
        id: number;
    }): Promise<{
        metadata: {
            requestedSlug?: string | null | 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;
        } | null;
        id: number;
        name: string;
        slug: string | null;
        organizationSettings: {
            isOrganizationVerified: boolean;
            isOrganizationConfigured: boolean;
            orgAutoAcceptEmail: string;
        } | null;
        isOrganization: boolean;
        members: {
            user: {
                id: number;
                name: string | null;
                email: string;
            };
        }[];
    }>;
    static findByMemberEmail({ email }: {
        email: string;
    }): Promise<{
        metadata: import('../../../prisma-client').Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
    } | null>;
    static findByMemberEmailId({ email }: {
        email: string;
    }): Promise<{
        metadata: import('../../../prisma-client').Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: import('../../../prisma-client').Prisma.JsonValue;
        createdAt: Date;
        bio: string | null;
        weekStart: string;
        hideBranding: boolean;
        timeFormat: number | null;
        brandColor: string | null;
        darkBrandColor: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        bannerUrl: string | null;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        includeManagedEventsInLimits: boolean;
    } | null>;
    static findCalVideoLogoByOrgId({ id }: {
        id: number;
    }): Promise<string | null | undefined>;
    static utils: {
        /**
         * Gets the organization setting if the team is an organization.
         * If not, it gets the organization setting of the parent organization.
         */
        getOrganizationSettings: (team: {
            isOrganization: boolean;
            organizationSettings: MinimumOrganizationSettings | null;
            parent: {
                organizationSettings: MinimumOrganizationSettings | null;
            } | null;
        }) => MinimumOrganizationSettings | null;
        getOrganizationSEOSettings: (team: {
            isOrganization: boolean;
            organizationSettings: SEOOrganizationSettings | null;
            parent: {
                organizationSettings: SEOOrganizationSettings | null;
            } | null;
        }) => SEOOrganizationSettings | null;
        getVerifiedDomain(settings: Pick<OrganizationSettings, "orgAutoAcceptEmail">): string;
    };
}
export {};
//# sourceMappingURL=organization.d.ts.map