import { EmailsList, UserAPI } from "../types/user.types.js";
import { ResponseWithSession } from "../middlewares/sessionAuth.middleware.js";
import { ResponseData } from "../utils/responseData.js";
import { NextFunction, Request } from "express";

//#region src/controllers/newsletter.controller.d.ts
type NewsletterSubscriptionBody = {
  email: string;
  emailList: EmailsList | EmailsList[];
};
type NewsletterSubscriptionResult = ResponseData<UserAPI>;
/**
 * Subscribes a user to the newsletter.
 * If the user doesn't exist, creates a new user.
 * If the user exists, updates their newsletter subscription to true.
 */
declare const subscribeToNewsletter: (req: Request<any, any, NewsletterSubscriptionBody>, res: ResponseWithSession<NewsletterSubscriptionResult>, _next: NextFunction) => Promise<void>;
type NewsletterUnsubscriptionBody = {
  userId: string;
  emailList: EmailsList | EmailsList[];
};
/**
 * Unsubscribes a user from the newsletter.
 * Only works if the user exists.
 */
declare const unsubscribeFromNewsletter: (req: Request<any, any, NewsletterUnsubscriptionBody>, res: ResponseWithSession<NewsletterSubscriptionResult>, _next: NextFunction) => Promise<void>;
/**
 * Gets the newsletter subscription status for a user.
 */
declare const getNewsletterStatus: (_req: Request<{
  email: string;
}>, res: ResponseWithSession<NewsletterSubscriptionResult>, _next: NextFunction) => Promise<void>;
//#endregion
export { NewsletterSubscriptionBody, NewsletterSubscriptionResult, NewsletterUnsubscriptionBody, getNewsletterStatus, subscribeToNewsletter, unsubscribeFromNewsletter };
//# sourceMappingURL=newsletter.controller.d.ts.map