/**
 * Apideck
 * The Apideck OpenAPI Spec: SDK Optimized
 *
 * The version of the OpenAPI document: 10.13.0
 * Contact: support@apideck.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { PassThroughBody } from './PassThroughBody';
import { Price } from './Price';
/**
 *
 * @export
 * @interface Message
 */
export interface Message {
    /**
     * The phone number that initiated the message.
     * @type {string}
     * @memberof Message
     */
    from: string;
    /**
     * The phone number that received the message.
     * @type {string}
     * @memberof Message
     */
    to: string;
    /**
     * The message text.
     * @type {string}
     * @memberof Message
     */
    body: string;
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof Message
     */
    readonly id?: string;
    /**
     *
     * @type {string}
     * @memberof Message
     */
    subject?: string;
    /**
     * Set to sms for SMS messages and mms for MMS messages.
     * @type {string}
     * @memberof Message
     */
    type?: MessageType;
    /**
     * The number of units that make up the complete message. Messages can be split up due to the constraints of the message size.
     * @type {number}
     * @memberof Message
     */
    readonly number_of_units?: number;
    /**
     * The number of media files associated with the message.
     * @type {number}
     * @memberof Message
     */
    readonly number_of_media_files?: number;
    /**
     * The direction of the message.
     * @type {string}
     * @memberof Message
     */
    readonly direction?: MessageDirection;
    /**
     * Status of the delivery of the message.
     * @type {string}
     * @memberof Message
     */
    readonly status?: MessageStatus;
    /**
     * The scheduled date and time of the message.
     * @type {Date}
     * @memberof Message
     */
    scheduled_at?: Date;
    /**
     * The date and time that the message was sent
     * @type {Date}
     * @memberof Message
     */
    readonly sent_at?: Date;
    /**
     * Define a webhook to receive delivery notifications.
     * @type {string}
     * @memberof Message
     */
    webhook_url?: string;
    /**
     * A client reference.
     * @type {string}
     * @memberof Message
     */
    reference?: string;
    /**
     *
     * @type {Price}
     * @memberof Message
     */
    price?: Price;
    /**
     *
     * @type {Error}
     * @memberof Message
     */
    error?: Error;
    /**
     * The ID of the Messaging Service used with the message. In case of Plivo this links to the Powerpack ID.
     * @type {string}
     * @memberof Message
     */
    messaging_service_id?: string;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof Message
     */
    readonly custom_mappings?: object | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof Message
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof Message
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof Message
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof Message
     */
    readonly created_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof Message
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum MessageType {
    sms = "sms",
    mms = "mms"
}
/**
 * @export
 * @enum {string}
 */
export declare enum MessageDirection {
    inbound = "inbound",
    outbound_api = "outbound-api",
    outbound_call = "outbound-call",
    outbound_reply = "outbound-reply",
    unknown = "unknown"
}
/**
 * @export
 * @enum {string}
 */
export declare enum MessageStatus {
    accepted = "accepted",
    scheduled = "scheduled",
    canceled = "canceled",
    queued = "queued",
    sending = "sending",
    sent = "sent",
    failed = "failed",
    delivered = "delivered",
    undelivered = "undelivered",
    receiving = "receiving",
    received = "received",
    read = "read"
}
export declare function MessageFromJSON(json: any): Message;
export declare function MessageFromJSONTyped(json: any, ignoreDiscriminator: boolean): Message;
export declare function MessageToJSON(value?: Message | null): any;
