UNPKG

@takentrade/takentrade-libs

Version:
136 lines (135 loc) 3.78 kB
import { MulterFile } from '../utils'; export interface CustomMailSendOptions { subject: string; from?: string; text?: string; html?: string; template?: string | Buffer; attachments?: MulterFile[] | Buffer[]; data?: object; } export interface TemplateMailSendOption<D = Record<string, string | number>> { to: string[]; attachments?: MulterFile[] | Buffer[]; data?: D; } export interface BaseEmailData { firstName: string; currentYear: number; } export interface OTPMailData extends BaseEmailData { otp: string; expiration: string; } export interface PasswordResetMailData extends OTPMailData { } export interface EmailVerificationMailData extends OTPMailData { } export interface BaseTransactionMailData extends BaseEmailData { amount: string; currency: string; type: string; direction: string; totalAmount: string; paymentReference: string; description: string; createdAt: string; beneficiaryAccountName?: string; beneficiaryAccountNumber?: string; } export interface CreditTransactionMailData extends BaseTransactionMailData { } export interface DebitTransactionMailData extends BaseTransactionMailData { } export interface AccountFreezeEmailData extends BaseEmailData { freezeDate: string; reason: string; } export interface AccountStatementEmailData extends BaseEmailData { userName: string; startDate: string; format: 'pdf' | 'csv' | 'xlsx'; expiryDate: string; statementUrl: string; isAdmin?: boolean; } export interface AccountUnfreezeEmailData extends BaseEmailData { unfreezeDate: string; reason: string; } export interface NewLoanApplicationEmailData extends BaseEmailData { amount: number; repaymentDate: string; status: 'pending' | 'approved' | 'rejected'; } export interface AjoCancellationEmailData extends BaseEmailData { ajoName: string; refundAmount: number; } export interface AjoContributionEmailData extends BaseEmailData { amount: number; ajoName: string; } export interface AjoInviteEmailData extends BaseEmailData { ajoName: string; acceptUrl: string; } export interface AjoMembershipUpdateEmailData extends BaseEmailData { ajoName: string; status: 'active' | 'inactive' | 'pending' | 'cancelled'; } export interface ContactMessageEmailData extends BaseEmailData { name: string; email: string; message: string; } export interface ResetTransactionPinEmailData extends BaseEmailData { otpCode: string; expiryMinutes: number; } export interface InvestmentCancellationEmailData extends BaseEmailData { amount: number; reason: string; } export interface LoanApprovedEmailData extends BaseEmailData { amount: number; repaymentDate: string; status: 'approved'; } export interface LoanRepaymentFailedEmailData extends BaseEmailData { amount: number; repaymentDate: string; } export interface LoanRepaymentConfirmationEmailData extends BaseEmailData { amount: number; remainingBalance?: number; isFullyRepaid: boolean; wasDefaulted?: boolean; } export interface AjoContributionConfirmationEmailData extends BaseEmailData { ajoName: string; amount: number; frequency: 'daily' | 'weekly' | 'monthly'; startDate: string; duration: number; } export interface InvestmentConfirmationEmailData extends BaseEmailData { type: string; amount: number; duration: string; startDate: string; maturityDate: string; expectedReturn: number; } export interface SendPushNotificationInput { title: string; body: string; userId?: string; tokens?: string[]; data?: { resourceType: string; resourceId: string; }; priority?: boolean; topic?: string; }