/// <reference types="node" />
import { Configuration } from "../internal/configuration";
import * as model from "../model";
/**
 * ClientMessageApi operations.
 */
export declare class ClientMessageApi {
    /**
     * API configuration
     */
    configuration: Configuration;
    constructor(configuration: Configuration);
    /**
     * Add email message to specified folder in email account.
     * @param request Append email request.
     */
    append(request: model.ClientMessageAppendRequest): Promise<model.ValueTOfString>;
    /**
     * Add email message from file to specified folder in email account.
     * @param request contains request parameters
     */
    appendFile(request: model.ClientMessageAppendFileRequest): Promise<model.ValueTOfString>;
    /**
     * Delete message.
     * @param request Delete message request.
     */
    delete(request: model.ClientMessageDeleteRequest): Promise<any>;
    /**
     * Fetch message from email account
     * @param request contains request parameters
     */
    fetch(request: model.ClientMessageFetchRequest): Promise<model.MailMessageBase>;
    /**
     * Fetch message as file from email account
     * @param request contains request parameters
     */
    fetchFile(request: model.ClientMessageFetchFileRequest): Promise<Buffer>;
    /**
     * Get messages from folder, filtered by query              The query string should have the following view.      The example of a simple expression:       '<Field name>' <Comparison operator> '<Field value>',  where &lt;Field Name&gt; - the name of a message field through which filtering is made, &lt;Comparison operator&gt; - comparison operators, as their name implies, allow to compare message field and specified value, &lt;Field value&gt; - value to be compared with a message field.      The number of simple expressions can make a compound one, ex.:     (<Simple expression 1> & <Simple expression 2>) | <Simple expression 3     >,  where \"&amp;\" - logical-AND operator, \"|\" - logical-OR operator      At present the following values are allowed as a field name (<Field name>):  \"To\" - represents a TO field of message, \"Text\" - represents string in the header or body of the message, \"Bcc\" - represents a BCC field of message, \"Body\" - represents a string in the body of message, \"Cc\" - represents a CC field of message, \"From\" - represents a From field of message, \"Subject\" - represents a string in the subject of message, \"InternalDate\" - represents an internal date of message, \"SentDate\" - represents a sent date of message      Additionally, the following field names are allowed for IMAP-protocol:  \"Answered\" - represents an /Answered flag of message \"Seen\" - represents a /Seen flag of message \"Flagged\" - represents a /Flagged flag of message \"Draft\" - represents a /Draft flag of message \"Deleted\" - represents a Deleted/ flag of message \"Recent\" - represents a Deleted/ flag of message \"MessageSize\" - represents a size (in bytes) of message      Additionally, the following field names are allowed for Exchange:  \"IsRead\" - Indicates whether the message has been read \"HasAttachment\" - Indicates whether or not the message has attachments \"IsSubmitted\" - Indicates whether the message has been submitted to the Outbox \"ContentClass\" - represents a content class of item      The field value (<Field value>) can take the following values:     For text fields - any string,     For date type fields - the string of \"d-MMM-yyy\" format, ex. \"10-Feb-2009\",     For flags (fields of boolean type) - either \"True\", or \"False\"
     * @param request contains request parameters
     */
    list(request: model.ClientMessageListRequest): Promise<model.MailMessageBaseList>;
    /**
     * Move message to another folder.
     * @param request Move message request.
     */
    move(request: model.ClientMessageMoveRequest): Promise<any>;
    /**
     * Send an email specified by model in request.
     * @param request Send email request.
     */
    send(request: model.ClientMessageSendRequest): Promise<any>;
    /**
     * Send an email file.
     * @param request contains request parameters
     */
    sendFile(request: model.ClientMessageSendFileRequest): Promise<any>;
    /**
     * Mark message as read or unread.
     * @param request Delete message request.
     */
    setIsRead(request: model.ClientMessageSetIsReadRequest): Promise<any>;
}
