/**
 * 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 { Currency } from './Currency';
import { EcommerceAddress } from './EcommerceAddress';
import { EcommerceDiscount } from './EcommerceDiscount';
import { EcommerceOrderLineItem } from './EcommerceOrderLineItem';
import { EcommerceOrderStatus } from './EcommerceOrderStatus';
import { LinkedEcommerceCustomer } from './LinkedEcommerceCustomer';
import { TrackingItem } from './TrackingItem';
/**
 *
 * @export
 * @interface EcommerceOrder
 */
export interface EcommerceOrder {
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof EcommerceOrder
     */
    readonly id: string;
    /**
     * Order number, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    order_number?: string | null;
    /**
     *
     * @type {Currency}
     * @memberof EcommerceOrder
     */
    currency?: Currency | null;
    /**
     *
     * @type {Array<EcommerceDiscount>}
     * @memberof EcommerceOrder
     */
    discounts?: Array<EcommerceDiscount>;
    /**
     * Sub-total amount, normally before tax.
     * @type {string}
     * @memberof EcommerceOrder
     */
    sub_total?: string | null;
    /**
     * Shipping cost, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    shipping_cost?: string | null;
    /**
     * Coupon discount, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    coupon_discount?: string | null;
    /**
     * Total discount, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    total_discount?: string | null;
    /**
     * Total tax, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    total_tax?: string | null;
    /**
     * Total amount due.
     * @type {string}
     * @memberof EcommerceOrder
     */
    total_amount?: string | null;
    /**
     * Refunded amount, if any.
     * @type {string}
     * @memberof EcommerceOrder
     */
    refunded_amount?: string | null;
    /**
     *
     * @type {EcommerceOrderStatus}
     * @memberof EcommerceOrder
     */
    status?: EcommerceOrderStatus | null;
    /**
     * Current payment status of the order.
     * @type {string}
     * @memberof EcommerceOrder
     */
    payment_status?: EcommerceOrderPaymentStatus;
    /**
     * Current fulfillment status of the order.
     * @type {string}
     * @memberof EcommerceOrder
     */
    fulfillment_status?: EcommerceOrderFulfillmentStatus;
    /**
     * Payment method used for this order.
     * @type {string}
     * @memberof EcommerceOrder
     */
    payment_method?: string | null;
    /**
     *
     * @type {LinkedEcommerceCustomer}
     * @memberof EcommerceOrder
     */
    customer?: LinkedEcommerceCustomer;
    /**
     *
     * @type {EcommerceAddress}
     * @memberof EcommerceOrder
     */
    billing_address?: EcommerceAddress;
    /**
     *
     * @type {EcommerceAddress}
     * @memberof EcommerceOrder
     */
    shipping_address?: EcommerceAddress;
    /**
     *
     * @type {Array<TrackingItem>}
     * @memberof EcommerceOrder
     */
    tracking?: Array<TrackingItem>;
    /**
     *
     * @type {Array<EcommerceOrderLineItem>}
     * @memberof EcommerceOrder
     */
    line_items?: Array<EcommerceOrderLineItem>;
    /**
     * Note for the order.
     * @type {string}
     * @memberof EcommerceOrder
     */
    note?: string | null;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof EcommerceOrder
     */
    readonly custom_mappings?: object | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof EcommerceOrder
     */
    readonly created_at?: Date | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof EcommerceOrder
     */
    readonly updated_at?: Date | null;
}
/**
 * @export
 * @enum {string}
 */
export declare enum EcommerceOrderPaymentStatus {
    pending = "pending",
    authorized = "authorized",
    paid = "paid",
    partial = "partial",
    refunded = "refunded",
    voided = "voided",
    unknown = "unknown"
}
/**
 * @export
 * @enum {string}
 */
export declare enum EcommerceOrderFulfillmentStatus {
    pending = "pending",
    shipped = "shipped",
    partial = "partial",
    delivered = "delivered",
    cancelled = "cancelled",
    returned = "returned",
    unknown = "unknown"
}
export declare function EcommerceOrderFromJSON(json: any): EcommerceOrder;
export declare function EcommerceOrderFromJSONTyped(json: any, ignoreDiscriminator: boolean): EcommerceOrder;
export declare function EcommerceOrderToJSON(value?: EcommerceOrder | null): any;
