import { Prisma } from '../../../prisma-client';
import type { z } from "zod";
import { teamMetadataSchema } from '../../../prisma/zod-utils';
type TeamGetPayloadWithParsedMetadata<TeamSelect extends Prisma.TeamSelect> = (Omit<Prisma.TeamGetPayload<{
    select: TeamSelect;
}>, "metadata" | "isOrganization"> & {
    metadata: z.infer<typeof teamMetadataSchema>;
    isOrganization: boolean;
}) | null;
type GetTeamOrOrgArg<TeamSelect extends Prisma.TeamSelect> = {
    lookupBy: ({
        id: number;
    } | {
        slug: string;
    }) & {
        havingMemberWithId?: number;
    };
    /**
     * If we are fetching a team, this is the slug of the organization that the team belongs to.
     */
    forOrgWithSlug: string | null;
    /**
     * If true, means that we need to fetch an organization with the given slug. Otherwise, we need to fetch a team with the given slug.
     */
    isOrg: boolean;
    teamSelect: TeamSelect;
};
export declare function getTeam<TeamSelect extends Prisma.TeamSelect>({ lookupBy, forOrgWithSlug: forOrgWithSlug, teamSelect, }: Omit<GetTeamOrOrgArg<TeamSelect>, "isOrg">): Promise<TeamGetPayloadWithParsedMetadata<TeamSelect>>;
export declare function getOrg<TeamSelect extends Prisma.TeamSelect>({ lookupBy, forOrgWithSlug: forOrgWithSlug, teamSelect, }: Omit<GetTeamOrOrgArg<TeamSelect>, "isOrg">): Promise<TeamGetPayloadWithParsedMetadata<TeamSelect>>;
export declare class TeamRepository {
    static findById({ id }: {
        id: number;
    }): Promise<(Omit<{
        metadata: Prisma.JsonValue;
        id: number;
        name: string;
        slug: string | null;
        parentId: number | null;
        organizationSettings: {
            id: number;
            organizationId: number;
            isOrganizationVerified: boolean;
            isOrganizationConfigured: boolean;
            isAdminReviewed: boolean;
            orgAutoAcceptEmail: string;
            isAdminAPIEnabled: boolean;
            lockEventTypeCreationForUsers: boolean;
            adminGetsNoSlotsNotification: boolean;
        } | null;
        logoUrl: string | null;
        isOrganization: boolean;
        isPlatform: 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 deleteById({ id }: {
        id: number;
    }): Promise<{
        metadata: Prisma.JsonValue;
        theme: string | null;
        id: number;
        name: string;
        timeZone: string;
        slug: string | null;
        parentId: number | null;
        bookingLimits: Prisma.JsonValue;
        createdAt: Date;
        logoUrl: string | null;
        calVideoLogo: string | null;
        appLogo: string | null;
        appIconLogo: string | null;
        bio: string | null;
        hideBranding: boolean;
        isPrivate: boolean;
        hideBookATeamMember: boolean;
        brandColor: string | null;
        darkBrandColor: string | null;
        bannerUrl: string | null;
        timeFormat: number | null;
        weekStart: string;
        isOrganization: boolean;
        pendingPayment: boolean;
        isPlatform: boolean;
        createdByOAuthClientId: string | null;
        smsLockState: import('../../../prisma-client').$Enums.SMSLockState;
        smsLockReviewedByAdmin: boolean;
        includeManagedEventsInLimits: boolean;
    }>;
    static inviteMemberByToken(token: string, userId: number): Promise<string>;
    static publish(teamId: number): Promise<import('../../../features/ee/billing/teams/team-billing').TeamBillingPublishResponse>;
    static removeMembers(teamIds: number[], memberIds: number[], isOrg?: boolean): Promise<void>;
}
export {};
//# sourceMappingURL=team.d.ts.map