import type { BookingSeatRepository } from '../../../../bookings/repositories/BookingSeatRepository';
import type { Workflow, WorkflowStep } from '../types';
import { WorkflowTemplates } from '../../../../../prisma/enums';
import { WorkflowTriggerEvents } from '../../../../../prisma/enums';
import { CalendarEvent } from "@calcom/types/Calendar";
import type { WorkflowReminderRepository } from "../../repositories/WorkflowReminderRepository";
import type { FormSubmissionData, BookingInfo, ScheduleEmailReminderAction } from "../types";
import { WorkflowService } from "./WorkflowService";
export declare class EmailWorkflowService {
    private workflowReminderRepository;
    private bookingSeatRepository;
    constructor(workflowReminderRepository: WorkflowReminderRepository, bookingSeatRepository: BookingSeatRepository);
    handleSendEmailWorkflowTask({ evt, workflowReminderId, }: {
        evt: CalendarEvent;
        workflowReminderId: number;
    }): Promise<void>;
    generateParametersToBuildEmailWorkflowContent({ evt, workflowStep, workflow, emailAttendeeSendToOverride, formData, commonScheduleFunctionParams, hideBranding, }: {
        evt?: CalendarEvent;
        workflowStep: WorkflowStep;
        workflow: Pick<Workflow, "userId">;
        emailAttendeeSendToOverride?: string | null;
        formData?: FormSubmissionData;
        commonScheduleFunctionParams: ReturnType<typeof WorkflowService.generateCommonScheduleFunctionParams>;
        hideBranding?: boolean;
    }): Promise<{
        readonly verifiedAt: Date;
        readonly evt: BookingInfo;
        readonly formData?: never;
        readonly action: "EMAIL_HOST" | "EMAIL_ATTENDEE" | "EMAIL_ADDRESS";
        readonly sendTo: string[];
        readonly emailSubject: string;
        readonly emailBody: string;
        readonly sender: string;
        readonly hideBranding: boolean | undefined;
        readonly includeCalendarEvent: boolean;
        readonly triggerEvent: WorkflowTriggerEvents;
        readonly timeSpan: {
            time: number | null;
            timeUnit: import('../../../../../prisma/enums').TimeUnit | null;
        };
        readonly workflowStepId: number;
        readonly template: WorkflowTemplates;
        readonly userId: number | null;
        readonly teamId: number | null;
        readonly seatReferenceUid: string | undefined;
        readonly creditCheckFn: ({ userId, teamId, }: {
            userId?: number | null;
            teamId?: number | null;
        }) => Promise<boolean>;
    } | {
        readonly verifiedAt: Date;
        readonly evt?: never;
        readonly formData: FormSubmissionData;
        readonly action: "EMAIL_HOST" | "EMAIL_ATTENDEE" | "EMAIL_ADDRESS";
        readonly sendTo: string[];
        readonly emailSubject: string;
        readonly emailBody: string;
        readonly sender: string;
        readonly hideBranding: boolean | undefined;
        readonly includeCalendarEvent: boolean;
        readonly triggerEvent: WorkflowTriggerEvents;
        readonly timeSpan: {
            time: number | null;
            timeUnit: import('../../../../../prisma/enums').TimeUnit | null;
        };
        readonly workflowStepId: number;
        readonly template: WorkflowTemplates;
        readonly userId: number | null;
        readonly teamId: number | null;
        readonly seatReferenceUid: string | undefined;
        readonly creditCheckFn: ({ userId, teamId, }: {
            userId?: number | null;
            teamId?: number | null;
        }) => Promise<boolean>;
    }>;
    generateEmailPayloadForEvtWorkflow({ evt, sendTo, seatReferenceUid, hideBranding, emailSubject, emailBody, sender, action, template, includeCalendarEvent, triggerEvent, }: {
        evt: BookingInfo;
        sendTo: string[];
        seatReferenceUid?: string;
        hideBranding?: boolean;
        emailSubject: string;
        emailBody: string;
        sender: string;
        action: ScheduleEmailReminderAction;
        template?: WorkflowTemplates;
        includeCalendarEvent?: boolean;
        triggerEvent: WorkflowTriggerEvents;
    }): Promise<{
        attachments: {
            content: string;
            filename: string;
            contentType: string;
            disposition: string;
        }[] | undefined;
        sender: string;
        replyTo?: string | undefined;
        subject: string;
        html: string;
    }>;
}
//# sourceMappingURL=EmailWorkflowService.d.ts.map