UNPKG

@visulima/email

Version:

A comprehensive email library with multi-provider support, crypto utilities, and template engines

28 lines (27 loc) 1.42 kB
import type { EmailOptions, EmailResult, FeatureFlags, MaybePromise, Result } from "../types.d.ts"; /** * Standard provider interface for email services. */ export interface Provider<OptionsT = unknown, InstanceT = unknown, EmailOptionsT extends EmailOptions = EmailOptions> { endpoint?: string; features?: FeatureFlags; getEmail?: (id: string) => MaybePromise<Result<unknown>>; getInstance?: () => InstanceT; initialize: (options?: Record<string, unknown>) => MaybePromise<void>; isAvailable: () => MaybePromise<boolean>; name?: string; options?: OptionsT; sendEmail: (options: EmailOptionsT) => MaybePromise<Result<EmailResult>>; shutdown?: () => MaybePromise<void>; validateCredentials?: () => MaybePromise<boolean>; } /** * Type for provider factory function. */ export type ProviderFactory<OptionsT = unknown, InstanceT = unknown, EmailOptionsT extends EmailOptions = EmailOptions> = (options?: OptionsT) => Provider<OptionsT, InstanceT, EmailOptionsT>; /** * Helper function to define an email provider. * @param factory The provider factory function. * @returns The same factory function (for type inference). */ export declare const defineProvider: <OptionsT = unknown, InstanceT = unknown, EmailOptionsT extends EmailOptions = EmailOptions>(factory: ProviderFactory<OptionsT, InstanceT, EmailOptionsT>) => ProviderFactory<OptionsT, InstanceT, EmailOptionsT>;