import { Client } from '@vulog/aima-client';
import { z } from 'zod';

export type SendEmailData = {
    [key: string]: any;
};

export type SendEmailParam = {
    bodyData: SendEmailData;
    lang: string;
    to: string[];
    type: string;
};

const sendEmailParamSchema = z.object({
    bodyData: z.record(z.string(), z.any()),
    lang: z.string(),
    to: z.array(z.string().email()),
    type: z.string(),
});

export const sendEmail = async (client: Client, data: SendEmailParam): Promise<void> => {
    const resultData = sendEmailParamSchema.safeParse(data);
    if (!resultData.success) {
        throw new TypeError('Invalid data', {
            cause: resultData.error.issues,
        });
    }

    await client.post(`/boapi/proxy/notifier/fleets/${client.clientOptions.fleetId}/email/send`, resultData.data);
};
