import type { MailContent, MailData } from "@sendgrid/helpers/classes/mail.js";
import type { ResponseError } from "@sendgrid/mail";
import type { NonEmptyReadonlyArray } from "effect-app/Array";
import * as Context from "effect-app/Context";
import type * as Effect from "effect-app/Effect";
import type { Email } from "effect-app/Schema";
import type * as Redacted from "effect/Redacted";
declare const SendMailError_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
readonly _tag: "SendMailError";
} & Readonly;
export declare class SendMailError extends SendMailError_base<{
readonly raw: Error | ResponseError;
}> {
}
declare const Emailer_base: Context.OpaqueClass Effect.Effect;
}>;
export declare class Emailer extends Emailer_base {
}
export type EmailData = Email | {
name?: string;
email: Email;
};
export interface SendgridConfig {
defaultReplyTo?: EmailData;
subjectPrefix: string;
realMail: boolean;
defaultFrom: EmailData;
apiKey: Redacted.Redacted;
/**
* Email address used for fake/test recipients. Use `{i}` as a placeholder for an auto-incrementing index to ensure uniqueness.
*
* @example "test+{i}@example.com"
*/
fakeMailAddress: string;
}
export type EmailTemplateMsg = MailData & {
templateId: string;
};
export type EmailRecipients = EmailData | NonEmptyReadonlyArray;
export type EmailMsgBase = Omit & {
to: EmailData | NonEmptyReadonlyArray;
cc?: EmailData | NonEmptyReadonlyArray;
bcc?: EmailData | NonEmptyReadonlyArray;
from: EmailData;
/**
* should multiple `to` addresess be considered multiple emails?
* defaults to `true`, not to leak email addresses
*/
isMultiple?: boolean;
};
export type EmailContent = {
text: string;
} | {
html: string;
} | {
templateId: string;
} | {
content: NonEmptyReadonlyArray;
};
export type EmailMsg = EmailMsgBase & EmailContent;
export type EmailMsgOptionalFrom = Omit & Partial> & EmailContent;
export {};
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VydmljZS5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL0VtYWlsZXIvc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEtBQUssRUFBRSxXQUFXLEVBQUUsUUFBUSxFQUFFLE1BQU0sbUNBQW1DLENBQUE7QUFDOUUsT0FBTyxLQUFLLEVBQUUsYUFBYSxFQUFFLE1BQU0sZ0JBQWdCLENBQUE7QUFDbkQsT0FBTyxLQUFLLEVBQUUscUJBQXFCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUM3RCxPQUFPLEtBQUssT0FBTyxNQUFNLG9CQUFvQixDQUFBO0FBQzdDLE9BQU8sS0FBSyxLQUFLLE1BQU0sTUFBTSxtQkFBbUIsQ0FBQTtBQUNoRCxPQUFPLEtBQUssRUFBRSxLQUFLLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUU5QyxPQUFPLEtBQUssS0FBSyxRQUFRLE1BQU0saUJBQWlCLENBQUE7Ozs7QUFFaEQscUJBQWEsYUFBYyxTQUFRLG1CQUFrQztJQUNuRSxRQUFRLENBQUMsR0FBRyxFQUFFLEtBQUssR0FBRyxhQUFhLENBQUE7Q0FDcEMsQ0FBQztDQUFHOztjQUdPLENBQUMsR0FBRyxFQUFFLG9CQUFvQixLQUFLLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFLGFBQWEsQ0FBQzs7QUFEN0UscUJBQWEsT0FBUSxTQUFRLFlBRUg7Q0FBRztBQUU3QixNQUFNLE1BQU0sU0FBUyxHQUFHLEtBQUssR0FBRztJQUM5QixJQUFJLENBQUMsRUFBRSxNQUFNLENBQUE7SUFDYixLQUFLLEVBQUUsS0FBSyxDQUFBO0NBQ2IsQ0FBQTtBQUVELE1BQU0sV0FBVyxjQUFjO0lBQzdCLGNBQWMsQ0FBQyxFQUFFLFNBQVMsQ0FBQTtJQUMxQixhQUFhLEVBQUUsTUFBTSxDQUFBO0lBQ3JCLFFBQVEsRUFBRSxPQUFPLENBQUE7SUFDakIsV0FBVyxFQUFFLFNBQVMsQ0FBQTtJQUN0QixNQUFNLEVBQUUsUUFBUSxDQUFDLFFBQVEsQ0FBQTtJQUN6Qjs7OztPQUlHO0lBQ0gsZUFBZSxFQUFFLE1BQU0sQ0FBQTtDQUN4QjtBQUNELE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxRQUFRLEdBQUc7SUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFBO0NBQUUsQ0FBQTtBQUVoRSxNQUFNLE1BQU0sZUFBZSxHQUFHLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtBQUUxRSxNQUFNLE1BQU0sWUFBWSxHQUNwQixJQUFJLENBQUMsUUFBUSxFQUFFLE1BQU0sR0FBRyxJQUFJLEdBQUcsS0FBSyxHQUFHLElBQUksR0FBRyxTQUFTLENBQUMsR0FDeEQ7SUFDQSxFQUFFLEVBQUUsU0FBUyxHQUFHLHFCQUFxQixDQUFDLFNBQVMsQ0FBQyxDQUFBO0lBQ2hELEVBQUUsQ0FBQyxFQUFFLFNBQVMsR0FBRyxxQkFBcUIsQ0FBQyxTQUFTLENBQUMsQ0FBQTtJQUNqRCxHQUFHLENBQUMsRUFBRSxTQUFTLEdBQUcscUJBQXFCLENBQUMsU0FBUyxDQUFDLENBQUE7SUFDbEQsSUFBSSxFQUFFLFNBQVMsQ0FBQTtJQUNmOzs7T0FHRztJQUNILFVBQVUsQ0FBQyxFQUFFLE9BQU8sQ0FBQTtDQUNyQixDQUFBO0FBRUgsTUFBTSxNQUFNLFlBQVksR0FBRztJQUFFLElBQUksRUFBRSxNQUFNLENBQUE7Q0FBRSxHQUFHO0lBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQTtDQUFFLEdBQUc7SUFBRSxVQUFVLEVBQUUsTUFBTSxDQUFBO0NBQUUsR0FBRztJQUN4RixPQUFPLEVBQUUscUJBQXFCLENBQUMsV0FBVyxDQUFDLENBQUE7Q0FDNUMsQ0FBQTtBQUVELE1BQU0sTUFBTSxRQUFRLEdBQ2hCLFlBQVksR0FDWixZQUFZLENBQUE7QUFFaEIsTUFBTSxNQUFNLG9CQUFvQixHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsTUFBTSxDQUFDLEdBQUcsT0FBTyxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUMsR0FBRyxZQUFZLENBQUEifQ==