"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.MessageHeader = void 0;
const tslib_1 = require("tslib");
const path = tslib_1.__importStar(require("path"));
// tslint:disable-next-line: no-var-requires
let bindings;
try {
    bindings = require(path.join(__dirname, "../../lib/binding/trusted_mailcore2.node"));
}
catch (e) {
    bindings = require(path.join(__dirname, "../../lib/binding/trusted_mailcore2_no_crypto.node"));
}
// tslint:disable-next-line
const { MessageHeader: _MessageHeader } = bindings;
/**
 * MessageHeader Class
 *
 * @public
 */
class MessageHeader extends bindings.MessageHeader {
    constructor() {
        super();
        const handle = new _MessageHeader();
        this.handle = handle;
    }
    /**
     * Message ID getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get messageID() {
        return this.handle.messageID;
    }
    /**
     * Message ID setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set messageID(msgId) {
        this.handle.messageID = msgId;
    }
    /**
     * inReplyTo getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get inReplyTo() {
        return this.handle.inReplyTo;
    }
    /**
     * inReplyTo setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set inReplyTo(val) {
        this.handle.inReplyTo = val;
    }
    /**
     * references getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get references() {
        return this.handle.references;
    }
    /**
     * inReplyTo setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set references(val) {
        this.handle.references = val;
    }
    /**
     * date getter
     *
     *
     * @type {Date}
     * @memberof MessageHeader
     */
    get date() {
        return this.handle.date;
    }
    /**
     * date setter
     *
     *
     * @type {Date}
     * @memberof MessageHeader
     */
    set date(dateVal) {
        this.handle.date = dateVal;
    }
    /**
     * receivedDate getter
     *
     *
     * @type {Date}
     * @memberof MessageHeader
     */
    get receivedDate() {
        return this.handle.receivedDate;
    }
    /**
     * receivedDate setter
     *
     *
     * @type {Date}
     * @memberof MessageHeader
     */
    set receivedDate(dateVal) {
        this.handle.receivedDate = dateVal;
    }
    /**
     * sender getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get sender() {
        return this.handle.sender;
    }
    /**
     * sender setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set sender(val) {
        this.handle.sender = val;
    }
    /**
     * from getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get from() {
        return this.handle.from;
    }
    /**
     * from setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set from(val) {
        this.handle.from = val;
    }
    /**
     * to getter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    get to() {
        return this.handle.to;
    }
    /**
     * to setter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    set to(val) {
        this.handle.to = val;
    }
    /**
     * cc getter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    get cc() {
        return this.handle.cc;
    }
    /**
     * cc setter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    set cc(val) {
        this.handle.cc = val;
    }
    /**
     * bcc getter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    get bcc() {
        return this.handle.bcc;
    }
    /**
     * bcc setter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    set bcc(val) {
        this.handle.bcc = val;
    }
    /**
     * replyTo getter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    get replyTo() {
        return this.handle.replyTo;
    }
    /**
     * replyTo setter
     *
     *
     * @type {Array<string>}
     * @memberof MessageHeader
     */
    set replyTo(val) {
        this.handle.replyTo = val;
    }
    /**
     * subject getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get subject() {
        return this.handle.subject;
    }
    /**
     * subject setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set subject(val) {
        this.handle.subject = val;
    }
    /**
     * userAgent getter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    get userAgent() {
        return this.handle.userAgent;
    }
    /**
     * userAgent setter
     *
     *
     * @type {string}
     * @memberof MessageHeader
     */
    set userAgent(val) {
        this.handle.userAgent = val;
    }
    /**
     * Get all extra headers
     *
     * @return {*}  {{ [key: string]: string; }}
     * @memberof MessageHeader
     */
    extraHeaders() {
        return this.handle.extraHeaders();
    }
    /**
     * Get extra header by name
     *
     * @param {string} name
     * @return {*}  {string}
     * @memberof MessageHeader
     */
    extraHeaderValueForName(name) {
        return this.handle.extraHeaderValueForName(name);
    }
    /**
     * Remove extra header by name
     *
     * @param {string} name
     * @memberof MessageHeader
     */
    removeExtraHeader(name) {
        return this.handle.removeExtraHeader(name);
    }
    /**
     * Set extra header
     *
     * @param {string} name
     * @param {string} value
     * @return {*}  {void}
     * @memberof MessageHeader
     */
    setExtraHeader(name, value) {
        return this.handle.setExtraHeader(name, value);
    }
}
exports.MessageHeader = MessageHeader;
//# sourceMappingURL=MessageHeader.js.map