import { ClientProxy } from '@nestjs/microservices';
import { OTPNotificationChannel } from './notification.enum';
import { AccountFreezeEmailData, AccountStatementEmailData, AccountUnfreezeEmailData, AjoCancellationEmailData, AjoContributionEmailData, AjoInviteEmailData, AjoMembershipUpdateEmailData, ContactMessageEmailData, CreditTransactionMailData, CustomMailSendOptions, DebitTransactionMailData, InvestmentCancellationEmailData, LoanApprovedEmailData, LoanRepaymentConfirmationEmailData, LoanRepaymentFailedEmailData, NewLoanApplicationEmailData, OTPMailData, PasswordResetMailData, ResetTransactionPinEmailData, AjoContributionConfirmationEmailData, InvestmentConfirmationEmailData, SendPushNotificationInput, BaseEmailData, EmailVerificationMailData } from './notification.interface';
export declare class NotificationClient {
    private readonly natsClient;
    constructor(natsClient: ClientProxy);
    private validatePhoneNumber;
    private validateEmailAddress;
    sendSms(to: string, message: string): Promise<void>;
    /**
     * This utility method sends an OTP message via the SMS channel.
     *
     * @param to - The recipient phone number
     * @param message - The OTP message
     * @deprecated
     */
    sendSmsOTP(to: string, message: string): Promise<void>;
    sendCustomMail(to: string, options: CustomMailSendOptions): Promise<void>;
    sendEmailVerificationMail(to: string, data: EmailVerificationMailData): Promise<void>;
    sendPasswordResetMail(to: string, data: PasswordResetMailData): Promise<void>;
    sendCreditTransactionMail(to: string, data: CreditTransactionMailData): Promise<void>;
    sendDebitTransactionMail(to: string, data: DebitTransactionMailData): Promise<void>;
    sendAccountFreezeMail(to: string, data: AccountFreezeEmailData): Promise<void>;
    sendAccountStatementMail(to: string, data: AccountStatementEmailData): Promise<void>;
    sendAccountUnfreezeMail(to: string, data: AccountUnfreezeEmailData): Promise<void>;
    sendAdminNewLoanMail(to: string, data: NewLoanApplicationEmailData): Promise<void>;
    sendAjoCancellationMail(to: string, data: AjoCancellationEmailData): Promise<void>;
    sendAjoContributionMail(to: string, data: AjoContributionEmailData): Promise<void>;
    sendAjoInvitationMail(to: string, data: AjoInviteEmailData): Promise<void>;
    sendAjoMembershipMail(to: string, data: AjoMembershipUpdateEmailData): Promise<void>;
    sendContactMail(to: string, data: ContactMessageEmailData): Promise<void>;
    sendForgetPinOTPMail(to: string, data: ResetTransactionPinEmailData): Promise<void>;
    sendInvestmentCancellationMail(to: string, data: InvestmentCancellationEmailData): Promise<void>;
    sendLoanApprovedMail(to: string, data: LoanApprovedEmailData): Promise<void>;
    sendLoanRepaymentFailedMail(to: string, data: LoanRepaymentFailedEmailData): Promise<void>;
    sendLoanRepaymentSuccessMail(to: string, data: LoanRepaymentConfirmationEmailData): Promise<void>;
    sendNewAjoMail(to: string, data: AjoContributionConfirmationEmailData): Promise<void>;
    sendNewInvestmentMail(to: string, data: InvestmentConfirmationEmailData): Promise<void>;
    sendWelcomeMail(to: string, data: BaseEmailData): Promise<void>;
    /**
     * Sends generated OTP to a recipient
     * @param to - recipient phone number or email
     * @param data - OTP data
     * @param channel - OTP notification channel. Defaults to sms.
     */
    sendOTP(to: string, data: OTPMailData, channel?: OTPNotificationChannel): Promise<void>;
    /**
     * Sends push notification
     */
    sendPush(input: SendPushNotificationInput): Promise<void>;
}
