import { type TokenManager } from '../google/client.ts';
export interface GmailHeader {
    name?: string;
    value?: string;
}
interface GmailBody {
    data?: string;
    size?: number;
    attachmentId?: string;
}
export interface GmailPayload {
    mimeType?: string;
    body?: GmailBody;
    headers?: GmailHeader[];
    filename?: string;
    parts?: GmailPayload[];
}
export interface GmailMessageRaw {
    id?: string;
    threadId?: string;
    internalDate?: string;
    labelIds?: string[];
    snippet?: string;
    sizeEstimate?: number;
    payload?: GmailPayload;
}
export interface GmailMessageStub {
    id: string;
    threadId?: string;
}
export interface GmailAttachmentInfo {
    filename: string;
    attachmentId: string;
    size: number;
    mimeType: string;
}
export interface ListMessagesOptions {
    labelId?: string | null;
    query?: string | null;
    maxResults?: number;
}
/**
 * One page of message stubs for a label or query, and the next page's token,
 * null on the last page. Gmail may return fewer than `maxResults` stubs and
 * still name a next page. Mirrors Python's `list_message_page`.
 */
export declare function listMessagePage(tokenManager: TokenManager, opts?: ListMessagesOptions): Promise<[GmailMessageStub[], string | null]>;
export declare function listMessages(tokenManager: TokenManager, opts?: ListMessagesOptions): Promise<GmailMessageStub[]>;
export declare function getMessageRaw(tokenManager: TokenManager, messageId: string): Promise<GmailMessageRaw>;
export declare function decodeBody(payload: GmailPayload | undefined): string;
export declare function extractHeader(headers: GmailHeader[] | undefined, name: string): string;
export declare function parseAddress(raw: string): {
    name: string;
    email: string;
};
export declare function getAttachment(tokenManager: TokenManager, messageId: string, attachmentId: string): Promise<Uint8Array>;
export declare function extractAttachments(payload: GmailPayload | undefined): GmailAttachmentInfo[];
export declare function getMessageProcessed(tokenManager: TokenManager, messageId: string): Promise<{
    id: string;
    thread_id: string;
    from: {
        name: string;
        email: string;
    };
    to: {
        name: string;
        email: string;
    }[];
    cc: {
        name: string;
        email: string;
    }[];
    subject: string;
    date: string;
    body_text: string;
    snippet: string;
    labels: string[];
    attachments: {
        id: string;
        filename: string;
        path: string;
        mime_type: string;
        size: number;
    }[];
}>;
export declare function processMessage(raw: GmailMessageRaw): {
    id: string;
    thread_id: string;
    from: {
        name: string;
        email: string;
    };
    to: {
        name: string;
        email: string;
    }[];
    cc: {
        name: string;
        email: string;
    }[];
    subject: string;
    date: string;
    body_text: string;
    snippet: string;
    labels: string[];
    attachments: {
        id: string;
        filename: string;
        path: string;
        mime_type: string;
        size: number;
    }[];
};
export declare function messageJsonBytes(raw: GmailMessageRaw): Uint8Array;
export {};
//# sourceMappingURL=messages.d.ts.map