import { InviteUserEmailProps } from "../emails/InviteUserEmail.js";
import { MagicLinkEmailProps } from "../emails/MagicLinkEmail.js";
import { OAuthTokenCreatedEmailProps } from "../emails/OAuthTokenCreatedEmail.js";
import { PasswordChangeConfirmationEmailProps } from "../emails/PasswordChangeConfirmation.js";
import { ResetPasswordEmailProps } from "../emails/ResetUserPassword.js";
import { SubscriptionPaymentCancellationProps } from "../emails/SubscriptionPaymentCancellation.js";
import { SubscriptionPaymentErrorProps } from "../emails/SubscriptionPaymentError.js";
import { SubscriptionPaymentSuccessProps } from "../emails/SubscriptionPaymentSuccess.js";
import { ValidateUserEmailProps } from "../emails/ValidateUserEmail.js";
import { WelcomeEmailProps } from "../emails/Welcome.js";
import { Locale } from "@intlayer/types/allLocales";
import * as react_jsx_runtime0 from "react/jsx-runtime";
import { ComponentProps } from "react";

//#region src/services/email.service.d.ts
declare const getEmailComponents: (locale?: Locale) => {
  invite: {
    template: {
      ({
        username,
        invitedByUsername,
        invitedByEmail,
        organizationName,
        inviteLink,
        inviteFromIp,
        inviteFromLocation
      }: InviteUserEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: InviteUserEmailProps;
    };
    subject: string;
  };
  validate: {
    template: {
      ({
        username,
        validationLink
      }: ValidateUserEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: ValidateUserEmailProps;
    };
    subject: string;
  };
  resetPassword: {
    template: {
      ({
        username,
        resetLink
      }: ResetPasswordEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: ResetPasswordEmailProps;
    };
    subject: string;
  };
  welcome: {
    template: {
      ({
        username,
        loginLink
      }: WelcomeEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: WelcomeEmailProps;
    };
    subject: string;
  };
  magicLink: {
    template: {
      ({
        username,
        magicLink
      }: MagicLinkEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: MagicLinkEmailProps;
    };
    subject: string;
  };
  passwordChangeConfirmation: {
    template: {
      ({
        username
      }: PasswordChangeConfirmationEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: PasswordChangeConfirmationEmailProps;
    };
    subject: string;
  };
  subscriptionPaymentSuccess: {
    template: {
      ({
        username,
        planName,
        organizationName,
        subscriptionStartDate,
        manageSubscriptionLink
      }: SubscriptionPaymentSuccessProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: SubscriptionPaymentSuccessProps;
    };
    subject: string;
  };
  subscriptionPaymentCancellation: {
    template: {
      ({
        username,
        planName,
        organizationName,
        cancellationDate,
        reactivateLink
      }: SubscriptionPaymentCancellationProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: SubscriptionPaymentCancellationProps;
    };
    subject: string;
  };
  subscriptionPaymentError: {
    template: {
      ({
        username,
        planName,
        organizationName,
        errorDate,
        retryPaymentLink
      }: SubscriptionPaymentErrorProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: SubscriptionPaymentErrorProps;
    };
    subject: string;
  };
  oAuthTokenCreated: {
    template: {
      ({
        username,
        applicationName,
        scopes,
        tokenDetailsUrl,
        securityLogUrl,
        supportUrl
      }: OAuthTokenCreatedEmailProps): react_jsx_runtime0.JSX.Element;
      PreviewProps: OAuthTokenCreatedEmailProps;
    };
    subject: string;
  };
};
type EmailType = keyof ReturnType<typeof getEmailComponents>;
type SendEmailProps<T extends EmailType> = {
  type: T;
  to: string;
  subject?: string;
  locale?: Locale;
} & ComponentProps<ReturnType<typeof getEmailComponents>[T]['template']>;
declare const sendEmail: <T extends EmailType>({
  type,
  to,
  subject,
  locale,
  ...props
}: SendEmailProps<T>) => Promise<void>;
//#endregion
export { SendEmailProps, sendEmail };
//# sourceMappingURL=email.service.d.ts.map