import { z } from "zod";
import type { WorkflowType } from "@calcom/ee/workflows/components/WorkflowListPage";
import type { WorkflowStep } from "@calcom/ee/workflows/lib/types";
import { Prisma } from '../../../prisma/client';
import type { TFilteredListInputSchema } from '../../../trpc/server/routers/viewer/workflows/filteredList.schema';
import type { TGetVerifiedEmailsInputSchema } from '../../../trpc/server/routers/viewer/workflows/getVerifiedEmails.schema';
import type { TGetVerifiedNumbersInputSchema } from '../../../trpc/server/routers/viewer/workflows/getVerifiedNumbers.schema';
export declare const ZGetInputSchema: z.ZodObject<{
    id: z.ZodNumber;
}, "strip", z.ZodTypeAny, {
    id: number;
}, {
    id: number;
}>;
export type TGetInputSchema = z.infer<typeof ZGetInputSchema>;
export declare class WorkflowRepository {
    private static log;
    static getById({ id }: TGetInputSchema): Promise<{
        name: string;
        id: number;
        time: number | null;
        team: {
            name: string;
            id: number;
            members: {
                id: number;
                role: import('../../../prisma-client').$Enums.MembershipRole;
                userId: number;
                teamId: number;
                createdAt: Date | null;
                updatedAt: Date | null;
                disableImpersonation: boolean;
                accepted: boolean;
                customRoleId: string | null;
            }[];
            slug: string | null;
            isOrganization: boolean;
        } | null;
        trigger: import('../../../prisma-client').$Enums.WorkflowTriggerEvents;
        userId: number | null;
        teamId: number | null;
        steps: {
            id: number;
            template: import('../../../prisma-client').$Enums.WorkflowTemplates;
            action: import('../../../prisma-client').$Enums.WorkflowActions;
            workflowId: number;
            stepNumber: number;
            sendTo: string | null;
            reminderBody: string | null;
            emailSubject: string | null;
            numberRequired: boolean | null;
            sender: string | null;
            numberVerificationPending: boolean;
            includeCalendarEvent: boolean;
            verifiedAt: Date | null;
        }[];
        timeUnit: import('../../../prisma-client').$Enums.TimeUnit | null;
        isActiveOnAll: boolean;
        activeOn: {
            eventType: {
                id: number;
                length: number;
                title: string;
                metadata: Prisma.JsonValue;
                description: string | null;
                price: number;
                hidden: boolean;
                currency: string;
                slug: string;
                userId: number | null;
                interfaceLanguage: string | null;
                position: number;
                locations: Prisma.JsonValue;
                offsetStart: number;
                profileId: number | null;
                teamId: number | null;
                useEventLevelSelectedCalendars: boolean;
                eventName: string | null;
                parentId: number | null;
                bookingFields: Prisma.JsonValue;
                timeZone: string | null;
                periodType: import('../../../prisma-client').$Enums.PeriodType;
                periodStartDate: Date | null;
                periodEndDate: Date | null;
                periodDays: number | null;
                periodCountCalendarDays: boolean | null;
                lockTimeZoneToggleOnBookingPage: boolean;
                requiresConfirmation: boolean;
                requiresConfirmationWillBlockSlot: boolean;
                requiresConfirmationForFreeEmail: boolean;
                requiresBookerEmailVerification: boolean;
                canSendCalVideoTranscriptionEmails: boolean;
                autoTranslateDescriptionEnabled: boolean;
                recurringEvent: Prisma.JsonValue;
                disableGuests: boolean;
                hideCalendarNotes: boolean;
                hideCalendarEventDetails: boolean;
                minimumBookingNotice: number;
                beforeEventBuffer: number;
                afterEventBuffer: number;
                seatsPerTimeSlot: number | null;
                onlyShowFirstAvailableSlot: boolean;
                disableCancelling: boolean | null;
                disableRescheduling: boolean | null;
                seatsShowAttendees: boolean | null;
                seatsShowAvailabilityCount: boolean | null;
                schedulingType: import('../../../prisma-client').$Enums.SchedulingType | null;
                scheduleId: number | null;
                allowReschedulingCancelledBookings: boolean | null;
                slotInterval: number | null;
                successRedirectUrl: string | null;
                forwardParamsSuccessRedirect: boolean | null;
                bookingLimits: Prisma.JsonValue;
                durationLimits: Prisma.JsonValue;
                isInstantEvent: boolean;
                instantMeetingExpiryTimeOffsetInSeconds: number;
                instantMeetingScheduleId: number | null;
                instantMeetingParameters: string[];
                assignAllTeamMembers: boolean;
                assignRRMembersUsingSegment: boolean;
                rrSegmentQueryValue: Prisma.JsonValue;
                useEventTypeDestinationCalendarEmail: boolean;
                isRRWeightsEnabled: boolean;
                maxLeadThreshold: number | null;
                includeNoShowInRRCalculation: boolean;
                allowReschedulingPastBookings: boolean;
                hideOrganizerEmail: boolean;
                maxActiveBookingsPerBooker: number | null;
                maxActiveBookingPerBookerOfferReschedule: boolean;
                customReplyToEmail: string | null;
                eventTypeColor: Prisma.JsonValue;
                rescheduleWithSameRoundRobinHost: boolean;
                secondaryEmailId: number | null;
                useBookerTimezone: boolean;
                restrictionScheduleId: number | null;
            };
        }[];
        activeOnTeams: {
            team: {
                name: string;
                id: number;
                metadata: Prisma.JsonValue;
                bio: string | null;
                theme: string | null;
                slug: string | null;
                parentId: number | null;
                timeZone: string;
                bookingLimits: Prisma.JsonValue;
                createdAt: Date;
                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;
                hideTeamProfileLink: boolean;
                isPrivate: boolean;
                hideBookATeamMember: boolean;
                rrResetInterval: import('../../../prisma-client').$Enums.RRResetInterval | null;
                rrTimestampBasis: import('../../../prisma-client').$Enums.RRTimestampBasis;
                bannerUrl: string | null;
                isOrganization: boolean;
                pendingPayment: boolean;
                isPlatform: boolean;
                createdByOAuthClientId: string | null;
                includeManagedEventsInLimits: boolean;
            };
        }[];
    } | null>;
    static getVerifiedNumbers({ userId, teamId, }: TGetVerifiedNumbersInputSchema & {
        userId: number | null;
    }): Promise<{
        id: number;
        userId: number | null;
        teamId: number | null;
        phoneNumber: string;
    }[]>;
    static getVerifiedEmails({ userEmail, userId, teamId, }: TGetVerifiedEmailsInputSchema & {
        userEmail: string | null;
        userId: number | null;
    }): Promise<string[]>;
    static getFilteredList({ userId, input }: {
        userId?: number;
        input: TFilteredListInputSchema;
    }): Promise<{
        filtered: WorkflowType[];
        totalCount: number;
    } | undefined>;
    static getRemindersFromRemovedTeams(removedTeams: number[], workflowSteps: WorkflowStep[], activeOn?: number[]): Promise<{
        id: number;
        referenceId: string | null;
        method: string;
    }[]>;
    static deleteAllWorkflowReminders(remindersToDelete: {
        id: number;
        referenceId: string | null;
        method: string;
    }[] | null): Promise<void>;
}
//# sourceMappingURL=workflow.d.ts.map