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>;
}
