/// <reference path="../../adonis-typings/mail.d.ts" />
import { MailersList, MailerContract, CompiledMailNode, DriverOptionsType, MailerResponseType, MessageComposeCallback } from '@ioc:Adonis/Addons/Mail';
import { MailManager } from './MailManager';
/**
 * Mailer exposes the unified API to send emails using one of the pre-configure
 * driver
 */
export declare class Mailer<Name extends keyof MailersList> implements MailerContract<Name> {
    name: Name;
    private manager;
    private useQueue;
    driver: MailersList[Name]['implementation'];
    private driverOptions?;
    constructor(name: Name, manager: MailManager, useQueue: boolean, driver: MailersList[Name]['implementation']);
    /**
     * Ensure "@adonisjs/view" is installed
     */
    private ensureView;
    /**
     * Set the email contents by rendering the views. Views are only
     * rendered when inline values are not defined.
     */
    private setEmailContent;
    /**
     * Define options to be forwarded to the underlying driver
     */
    options(options: DriverOptionsType<MailersList[Name]['implementation']>): this;
    /**
     * Sends email using a pre-compiled message. You should use [[MailerContract.send]], unless
     * you are pre-compiling messages yourself
     */
    sendCompiled(mail: CompiledMailNode): Promise<MailerResponseType<Name>>;
    /**
     * Sends email
     */
    send(callback: MessageComposeCallback, config?: DriverOptionsType<MailersList[Name]>): Promise<MailerResponseType<Name>>;
    /**
     * Send email later by queuing it inside an in-memory queue
     */
    sendLater(callback: MessageComposeCallback, config?: DriverOptionsType<MailersList[Name]>): Promise<void>;
    /**
     * Invokes `close` method on the driver
     */
    close(): Promise<void>;
}
