UNPKG

unemail

Version:

A modern TypeScript email library with zero dependencies, supporting multiple providers including AWS SES, Resend, MailCrab, and HTTP APIs

28 lines (25 loc) 1.25 kB
import { EmailOptions, FeatureFlags, MaybePromise, Result, EmailResult } from 'unemail/types'; /** * Standard provider interface for email services */ interface Provider<OptionsT = any, InstanceT = any, EmailOptionsT extends EmailOptions = EmailOptions> { name?: string; features?: FeatureFlags; options?: OptionsT; getInstance?: () => InstanceT; initialize: (opts?: Record<string, any>) => MaybePromise<void>; isAvailable: () => MaybePromise<boolean>; sendEmail: (options: EmailOptionsT) => MaybePromise<Result<EmailResult>>; validateCredentials?: () => MaybePromise<boolean>; getEmail?: (id: string) => MaybePromise<Result<any>>; } /** * Type for provider factory function */ type ProviderFactory<OptionsT = any, InstanceT = any, EmailOptionsT extends EmailOptions = EmailOptions> = (opts?: OptionsT) => Provider<OptionsT, InstanceT, EmailOptionsT>; /** * Helper function to define an email provider */ declare function defineProvider<OptionsT = any, InstanceT = any, EmailOptionsT extends EmailOptions = EmailOptions>(factory: ProviderFactory<OptionsT, InstanceT, EmailOptionsT>): ProviderFactory<OptionsT, InstanceT, EmailOptionsT>; export { defineProvider }; export type { Provider, ProviderFactory };