import { SentlyError } from "../core/errors.js"; import type { MailOptions, SendResult, Transport, VerifyResult } from "../core/types.js"; /** Message shape accepted by the Cloudflare Workers `send_email` binding. */ export interface CloudflareEmailMessage { /** Envelope sender. */ from: string; /** Primary recipient. */ to: string; /** Message subject. */ subject?: string; /** Reply-To address. */ reply_to?: string; /** Carbon-copy recipients. */ cc?: string[]; /** Blind carbon-copy recipients. */ bcc?: string[]; /** Additional MIME headers. */ headers?: Record; /** Message body parts. */ content: Array<{ type: string; value: string; }>; /** Optional attachments (base64 content). */ attachments?: Array<{ disposition: "attachment" | "inline"; filename: string; type: string; content: string; }>; } /** Callable Workers `send_email` binding. */ export type CloudflareSendEmailFn = (message: CloudflareEmailMessage) => Promise; /** Cloudflare Workers Email binding configuration. */ export interface CloudflareEmailConfig { /** The Workers `send_email` binding (e.g. `env.SEND_EMAIL`). */ sendEmail: CloudflareSendEmailFn; } /** Error thrown when the Cloudflare Email binding rejects a send. */ export declare class CloudflareEmailError extends SentlyError { /** Creates a Cloudflare Email binding error. */ constructor(message: string, cause?: unknown); } /** * Cloudflare Workers Email binding transport. */ export declare class CloudflareEmailTransport implements Transport { readonly provider = "cloudflare-email"; private readonly sendEmail; /** Creates a transport backed by the Workers `send_email` binding. */ constructor(config: CloudflareEmailConfig); /** Sends an email via the Workers `send_email` binding. */ send(options: MailOptions): Promise; /** * Confirms the binding is configured — no network validation is available. */ verify(): Promise; }