/**
 * Octane API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 1.0.0
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { LineItems } from './LineItems';
/**
 *
 * @export
 * @interface Invoice
 */
export interface Invoice {
    /**
     * The number of the invoice created in the payment processer.
     * @type {string}
     * @memberof Invoice
     */
    externalInvoiceNumber?: string;
    /**
     * Any discount credits applied to the invoice
     * @type {number}
     * @memberof Invoice
     */
    discountCredit?: number;
    /**
     * [DEPRECATED] End time of the cycle in which the invoice was generated
     * @type {Date}
     * @memberof Invoice
     */
    endTime?: Date;
    /**
     * The date the invoice will be issued to the end customer or forwarded to the payment processor.
     * @type {Date}
     * @memberof Invoice
     */
    issueDate?: Date;
    /**
     * External unique 'uuid' identifier for this Invoice.
     * @type {string}
     * @memberof Invoice
     */
    id?: string;
    /**
     *
     * @type {string}
     * @memberof Invoice
     */
    pdfUrl?: string;
    /**
     * The id of the payment created in the payment processer.
     * @type {string}
     * @memberof Invoice
     */
    externalPaymentId?: string;
    /**
     *
     * @type {Array<LineItems>}
     * @memberof Invoice
     */
    lineItems?: Array<LineItems>;
    /**
     * The number of retries done to process the payment
     * @type {number}
     * @memberof Invoice
     */
    paymentRetryAttempt?: number;
    /**
     * False if not approved
     * @type {boolean}
     * @memberof Invoice
     */
    isApproved?: boolean;
    /**
     * Earliest start time of line items covered by the invoice
     * @type {Date}
     * @memberof Invoice
     */
    minItemStartTime?: Date;
    /**
     *
     * @type {Date}
     * @memberof Invoice
     */
    latestInvoiceAttemptAt?: Date;
    /**
     * The id of the invoice created in the payment processer.
     * @type {string}
     * @memberof Invoice
     */
    externalInvoiceId?: string;
    /**
     * Total amount due
     * @type {number}
     * @memberof Invoice
     */
    amountDue?: number;
    /**
     * False if not paid yet
     * @type {boolean}
     * @memberof Invoice
     */
    isPaid?: boolean;
    /**
     * If there is an error processing this invoice, this field contains the error message.
     * @type {string}
     * @memberof Invoice
     */
    statusError?: string;
    /**
     * [DEPRECATED] Start time of the cycle in which the invoice was generated
     * @type {Date}
     * @memberof Invoice
     */
    startTime?: Date;
    /**
     *
     * @type {Date}
     * @memberof Invoice
     */
    dueDate?: Date;
    /**
     *
     * @type {Date}
     * @memberof Invoice
     */
    latestPaymentAttemptAt?: Date;
    /**
     * Tax amount applied to subtotal
     * @type {number}
     * @memberof Invoice
     */
    taxAmount?: number;
    /**
     * Non-empty string if there was an error while processing payment
     * @type {string}
     * @memberof Invoice
     */
    paymentError?: string;
    /**
     * Amount due before any credits are applied
     * @type {number}
     * @memberof Invoice
     */
    subTotal?: number;
    /**
     * Non-empty string if there was an error while sending out invoice
     * @type {string}
     * @memberof Invoice
     */
    invoicingError?: string;
    /**
     * The number of retries done to send the invoice
     * @type {number}
     * @memberof Invoice
     */
    invoiceRetryAttempt?: number;
    /**
     * The potentially permanent state this invoice can live in (e.g., ISSUED if the invoice has been issued to the customer)
     * @type {string}
     * @memberof Invoice
     */
    status?: string;
    /**
     * Name of the customer this invoice is for.
     * @type {string}
     * @memberof Invoice
     */
    customerName?: string;
    /**
     * False if invoice has not been sent to the customer
     * @type {boolean}
     * @memberof Invoice
     */
    isInvoiced?: boolean;
    /**
     * Latest end time of line items covered by the invoice
     * @type {Date}
     * @memberof Invoice
     */
    maxItemEndTime?: Date;
}
export declare function InvoiceFromJSON(json: any): Invoice;
export declare function InvoiceFromJSONTyped(json: any, ignoreDiscriminator: boolean): Invoice;
export declare function InvoiceToJSON(value?: Invoice | null): any;
