import { GoogleBaseService } from "./google-base-service.js";
import { gmail_v1 } from "googleapis/build/src/apis/gmail/v1.js";
import { EmailMetadata, SendEmailOptions, DraftEmailOptions } from "../types/gmail-types.js";
export declare class GmailService extends GoogleBaseService {
    private gmail;
    private labelCache;
    private gmailInitPromise;
    constructor();
    private initializeGmailClient;
    private ensureInitialized;
    private loadLabels;
    private parseEmailAddress;
    private getMessageMetadata;
    private extractEmailMetadata;
    listMessages(maxResults?: number): Promise<EmailMetadata[]>;
    getMessage(messageId: string): Promise<EmailMetadata & {
        body: string;
    }>;
    searchMessages(query: string, maxResults?: number): Promise<EmailMetadata[]>;
    getLabels(): Promise<gmail_v1.Schema$Label[]>;
    private createEmailRaw;
    sendEmail(options: SendEmailOptions): Promise<string>;
    createDraft(options: DraftEmailOptions): Promise<string>;
    updateDraft(options: DraftEmailOptions): Promise<string>;
    listDrafts(maxResults?: number): Promise<EmailMetadata[]>;
    deleteDraft(draftId: string): Promise<void>;
    getDraft(draftId: string): Promise<EmailMetadata & {
        body: string;
    }>;
    modifyMessage(messageId: string, options: {
        addLabelIds?: string[];
        removeLabelIds?: string[];
    }): Promise<EmailMetadata>;
    trashMessage(messageId: string): Promise<void>;
    untrashMessage(messageId: string): Promise<void>;
    deleteMessage(messageId: string): Promise<void>;
    createLabel(name: string, options?: {
        textColor?: string;
        backgroundColor?: string;
        messageListVisibility?: "hide" | "show";
        labelListVisibility?: "labelHide" | "labelShow" | "labelShowIfUnread";
    }): Promise<gmail_v1.Schema$Label>;
    deleteLabel(labelId: string): Promise<void>;
    replyEmail(messageId: string, body: string, isHtml?: boolean): Promise<string>;
}
