@takentrade/takentrade-libs
Version:
TakeNTrade shared libraries
136 lines (135 loc) • 3.78 kB
TypeScript
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;
}