UNPKG

@takentrade/takentrade-libs

Version:
183 lines (182 loc) 4.9 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 | string[]; attachments?: MulterFile[] | Buffer[]; data?: D; user_id?: string; bypassPreferenceCheck?: boolean; } export interface BulkEmailData { to: string[]; subject: string; template: string; user_id?: string; bypassPreferenceCheck?: boolean; context: Record<string, any>; } export interface BaseEmailData { firstName: string; currentYear: number; } export interface OTPMailData extends Omit<BaseEmailData, 'firstName'> { firstName?: string; otp: number; 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: string; email: string; phoneNumber: string; userId: string; applicationDate: string; } export interface AjoCancellationEmailData extends BaseEmailData { ajoName: string; refundAmount: number; } export interface AjoContributionEmailData extends BaseEmailData { amount: number; ajoName: string; startDate: string; lastName?: string; } export interface AjoInviteEmailData extends BaseEmailData { ajoName: string; acceptUrl: string; } export interface AjoMembershipUpdateEmailData extends BaseEmailData { ajoName: string; status: string; } export interface ContactMessageEmailData extends BaseEmailData { name: string; email: string; message: string; } export interface ResetTransactionPinEmailData extends OTPMailData { } export interface InvestmentCancellationEmailData extends BaseEmailData { amount: number; reason: string; } export interface LoanApprovedEmailData extends BaseEmailData { amount: number; repaymentDate: string; status: string; } 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; startDate: string; lastName?: string; } export interface InvestmentConfirmationEmailData extends BaseEmailData { type: string; amount: number; duration: string; startDate: string; maturityDate: string; expectedReturn: number; } export interface SendPushNotificationInput { title: string; body: string; user_id?: string; tokens?: string[]; data?: { resourceType: string; resourceId: string; }; priority?: boolean; topic?: string; bypassPreferenceCheck?: boolean; } export interface ElectricityEmailData extends BaseEmailData { amount: number; units: number; purchase_code: string; } export interface EducationEmailData extends BaseEmailData { service: string; amount: number; purchase_code: string; } export interface DeviceVerificationMailData extends BaseEmailData { otp: string; deviceId: string; deviceName?: string; time?: string; expiration?: string; } export interface NewDeviceNotificationData extends BaseEmailData { deviceId: string; loginTime: string; deviceInfo?: string; location?: string; } export interface SubAccountReportEmailData { subAccounts: Array<{ name: string; type: string; balance: number | string; currency: string; isActive: boolean; }>; }