import type { _MEComposeSession } from "./MEComposeSession.js";
import type { _MEExtensionViewController } from "./MEExtensionViewController.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSError } from "../Foundation/NSError.js";
export interface _MEComposeSessionHandler {
    /**
     * This is invoked when a new message compose window is created. - instance that is tied to the compose window that is opened.
     */
    mailComposeSessionDidBegin$?(session: _MEComposeSession): void;
    /**
     * This is invoked when a message compose window is closed. - instance that is tied to the compose window that was closed.
     */
    mailComposeSessionDidEnd$?(session: _MEComposeSession): void;
    /**
     * A view controller to be presented in Mail compose window. Mail will call this method when user clicks on the extension's button.
     */
    viewControllerForSession$?(session: _MEComposeSession): _MEExtensionViewController;
    /**
     * Delegate method to annotate mail addresses. Mail will call this method based on user's input in To, Cc or Bcc fields.
     */
    session$annotateAddressesWithCompletionHandler$?(session: _MEComposeSession, completionHandler: (emailAddressAnnotationMap: _NSDictionary) => void): void;
    /**
     * Validate if the message is ready to be delivered to recipients. Mail will call this method when user clicks on the send message button. Extensions can provide an error from the error domain to indicate why message validation has failed.
     */
    session$canSendMessageWithCompletionHandler$?(session: _MEComposeSession, completion: ((error: _NSError) => void) | null): void;
    /**
     * Set Additional headers on outgoing mail message. Mail will call this method to request additional headers to be set on the that user is composing as part of this Keys in this dictionary will be normalized to lowercase before they are set on the message.
     */
    additionalHeadersForSession$?(session: _MEComposeSession): _NSDictionary;
}
