-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinterface.ts
More file actions
52 lines (46 loc) · 1.13 KB
/
interface.ts
File metadata and controls
52 lines (46 loc) · 1.13 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
export type EmailTemplateMap = {
'organization-invitation': {
organizationName: string;
inviterName: string;
inviteLink: string;
};
'organization-member-invitation-link': {
organizationName: string;
invitationLink: string;
};
'university-owner-invitation-link': {
universityName: string;
invitationLink: string;
};
'university-owner-invitation-id': {
universityName: string;
invitationId: string;
};
};
export type EmailTemplateId = keyof EmailTemplateMap;
export type SendEmailContentParams = {
to: string;
subject: string;
html: string;
text?: string;
template?: never;
payload?: never;
};
export type SendEmailTemplateParams = {
[TemplateId in EmailTemplateId]: {
to: string;
template: TemplateId;
payload: EmailTemplateMap[TemplateId];
text?: string;
subject?: never;
html?: never;
};
}[EmailTemplateId];
export type SendEmailParams = SendEmailContentParams | SendEmailTemplateParams;
export type SendEmailResult = {
success: boolean;
messageId?: string;
};
export interface EmailService {
sendEmail(params: SendEmailParams): Promise<SendEmailResult>;
}