import type { ScheduleWorkflowRemindersArgs } from "@calcom/ee/workflows/lib/reminders/reminderScheduler";
import type { Workflow, WorkflowStep } from "@calcom/ee/workflows/lib/types";
import type { CreditCheckFn } from '../../../billing/credit-service';
import { WorkflowTriggerEvents } from '../../../../../prisma/enums';
import type { TimeUnit } from '../../../../../prisma/enums';
import type { FORM_SUBMITTED_WEBHOOK_RESPONSES } from "@calcom/routing-forms/lib/formSubmissionUtils";
import { CalendarEvent } from "@calcom/types/Calendar";
export declare class WorkflowService {
    static _beforeAfterEventTriggers: WorkflowTriggerEvents[];
    static getAllWorkflowsFromRoutingForm(routingForm: {
        id: string;
        userId: number | null;
        teamId: number | null;
    }): Promise<Workflow[]>;
    static deleteWorkflowRemindersOfRemovedTeam(teamId: number): Promise<void>;
    static scheduleFormWorkflows({ workflows, responses, form, responseId, routedEventTypeId, creditCheckFn, }: {
        responseId: number;
        workflows: Workflow[];
        responses: FORM_SUBMITTED_WEBHOOK_RESPONSES;
        routedEventTypeId: number | null;
        creditCheckFn: CreditCheckFn;
        form: {
            id: string;
            userId: number;
            teamId?: number | null;
            fields?: {
                type: string;
                identifier?: string;
            }[];
            user: {
                email: string;
                timeFormat: number | null;
                locale: string | null;
            };
        };
    }): Promise<void>;
    static scheduleWorkflowsForNewBooking({ isNormalBookingOrFirstRecurringSlot, isConfirmedByDefault, isRescheduleEvent, workflows, ...args }: ScheduleWorkflowRemindersArgs & {
        isConfirmedByDefault: boolean;
        isRescheduleEvent: boolean;
        isNormalBookingOrFirstRecurringSlot: boolean;
    }): Promise<void>;
    static scheduleWorkflowsFilteredByTriggerEvent({ workflows, triggers, ...args }: ScheduleWorkflowRemindersArgs & {
        triggers: WorkflowTriggerEvents[];
    }): Promise<void>;
    static scheduleLazyEmailWorkflow({ workflowTriggerEvent, workflowStepId, workflow, evt, seatReferenceId, }: {
        workflowTriggerEvent: "BEFORE_EVENT" | "AFTER_EVENT";
        workflowStepId: number;
        workflow: Pick<Workflow, "time" | "timeUnit">;
        evt: Pick<CalendarEvent, "uid" | "startTime" | "endTime">;
        seatReferenceId?: string;
    }): Promise<void>;
    static processWorkflowScheduledDate({ workflowTriggerEvent, time, timeUnit, evt, }: {
        workflowTriggerEvent: WorkflowTriggerEvents;
        time: number | null;
        timeUnit: TimeUnit | null;
        evt: Pick<CalendarEvent, "startTime" | "endTime">;
    }): Date | null;
    static generateCommonScheduleFunctionParams({ workflow, workflowStep, seatReferenceUid, creditCheckFn, }: {
        workflow: Omit<Workflow, "steps">;
        workflowStep: WorkflowStep;
        seatReferenceUid: string | undefined;
        creditCheckFn: CreditCheckFn;
    }): {
        triggerEvent: WorkflowTriggerEvents;
        timeSpan: {
            time: number | null;
            timeUnit: TimeUnit | null;
        };
        workflowStepId: number;
        template: import('../../../../../prisma/enums').WorkflowTemplates;
        userId: number | null;
        teamId: number | null;
        seatReferenceUid: string | undefined;
        verifiedAt: Date | null;
        creditCheckFn: ({ userId, teamId, }: {
            userId?: number | null;
            teamId?: number | null;
        }) => Promise<boolean>;
    };
}
//# sourceMappingURL=WorkflowService.d.ts.map