@takentrade/takentrade-libs
Version:
TakeNTrade shared libraries
183 lines (182 loc) • 4.9 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 | 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;
}>;
}