@snehal96/unimail
Version:
Unified email fetching & document extraction layer for modern web apps
20 lines (19 loc) • 1.18 kB
TypeScript
import { NormalizedEmail, FetchOptions, EmailStreamOptions, EmailStreamCallbacks, HistoryResponse, PushNotificationConfig, PushNotificationSetup, SyncOptions, SyncResult, PaginatedResponse } from '../interfaces.js';
export interface PaginatedEmailsResponse {
emails: NormalizedEmail[];
nextPageToken?: string;
totalCount?: number;
}
export interface IAdapter {
authenticate(): Promise<void>;
fetchEmails(options: FetchOptions): Promise<PaginatedEmailsResponse>;
fetchEmailsWithPagination?(options: FetchOptions): Promise<PaginatedResponse<NormalizedEmail>>;
streamEmails(options: EmailStreamOptions): AsyncGenerator<NormalizedEmail[], void, unknown>;
fetchEmailsStream(options: EmailStreamOptions, callbacks: EmailStreamCallbacks): Promise<void>;
getCurrentHistoryId?(): Promise<string>;
getHistory?(startHistoryId: string, options?: SyncOptions): Promise<HistoryResponse>;
getEmailById?(id: string): Promise<NormalizedEmail | null>;
setupPushNotifications?(config: PushNotificationConfig): Promise<PushNotificationSetup>;
stopPushNotifications?(): Promise<void>;
processSync?(options?: SyncOptions): Promise<SyncResult>;
}