import { Static } from "alepha";
import { EmailProvider, EmailSendOptions } from "alepha/email";
import { Transporter } from "nodemailer";
//#region ../../src/email/smtp/providers/NodemailerEmailProvider.d.ts
/**
 * Nodemailer connection pooling and rate limiting options
 */
declare const nodemailerEmailOptions: import("alepha").Atom<import("zod").ZodObject<{
  pool: import("zod").ZodOptional<import("zod").ZodBoolean>;
  maxConnections: import("zod").ZodOptional<import("zod").ZodNumber>;
  maxMessages: import("zod").ZodOptional<import("zod").ZodNumber>;
  rateDelta: import("zod").ZodOptional<import("zod").ZodNumber>;
  rateLimit: import("zod").ZodOptional<import("zod").ZodNumber>;
}, import("zod/v4/core").$strip>, "alepha.email.nodemailer.options">;
type NodemailerEmailProviderOptions = Static<typeof nodemailerEmailOptions.schema>;
declare module "alepha" {
  interface State {
    [nodemailerEmailOptions.key]: NodemailerEmailProviderOptions;
  }
}
/**
 * Email provider using Nodemailer for SMTP transport.
 *
 * Configuration is provided via environment variables:
 * - EMAIL_HOST: SMTP server host
 * - EMAIL_PORT: SMTP server port (default: 587)
 * - EMAIL_USER: SMTP authentication username
 * - EMAIL_PASS: SMTP authentication password
 * - EMAIL_FROM: Default from email address
 * - EMAIL_SECURE: Use secure connection (default: false)
 *
 * Advanced pooling/rate limiting options can be configured via atom:
 * @see {@link nodemailerEmailOptions}
 *
 * @example
 * ```typescript
 * // Configure via environment variables
 * // EMAIL_HOST=smtp.example.com
 * // EMAIL_PORT=587
 * // EMAIL_USER=user@example.com
 * // EMAIL_PASS=secret
 * // EMAIL_FROM=noreply@example.com
 *
 * // Optionally configure pooling via atom
 * alepha.state.set(nodemailerEmailOptions.key, {
 *   pool: true,
 *   maxConnections: 5,
 *   rateLimit: 10,
 * });
 * ```
 */
declare class NodemailerEmailProvider implements EmailProvider {
  protected readonly env: {
    EMAIL_HOST?: string | undefined;
    EMAIL_PORT: number;
    EMAIL_USER?: string | undefined;
    EMAIL_PASS?: string | undefined;
    EMAIL_FROM?: string | undefined;
    EMAIL_SECURE: boolean;
  };
  protected readonly log: import("alepha/logger").Logger;
  protected readonly options: Readonly<{
    pool?: boolean | undefined;
    maxConnections?: number | undefined;
    maxMessages?: number | undefined;
    rateDelta?: number | undefined;
    rateLimit?: number | undefined;
  }>;
  protected transporter: Transporter | null;
  protected get host(): string;
  protected get port(): number;
  protected get secure(): boolean;
  protected get user(): string | undefined;
  protected get pass(): string | undefined;
  protected get fromAddress(): string;
  protected getTransporter(): Transporter;
  send(options: EmailSendOptions): Promise<void>;
  protected createTransporter(): Transporter;
  /**
   * Verify the connection to the email server.
   */
  verify(): Promise<boolean>;
  /**
   * Close the transporter connection.
   */
  close(): void;
  protected readonly onStart: import("alepha").HookPrimitive<"start">;
  protected readonly onStop: import("alepha").HookPrimitive<"stop">;
}
//#endregion
//#region ../../src/email/smtp/index.d.ts
/**
 * Plugin for Alepha Email that provides SMTP capabilities via Nodemailer.
 *
 * @see {@link NodemailerEmailProvider}
 * @module alepha.email.smtp
 */
declare const AlephaEmailSmtp: import("alepha").Service<import("alepha").Module>;
//#endregion
export { AlephaEmailSmtp, NodemailerEmailProvider, NodemailerEmailProviderOptions, nodemailerEmailOptions };
//# sourceMappingURL=index.d.ts.map