/**
 * 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 { CustomField } from './CustomField';
import { LinkedInvoiceItem } from './LinkedInvoiceItem';
import { LinkedLedgerAccount } from './LinkedLedgerAccount';
import { LinkedTaxRate } from './LinkedTaxRate';
import { LinkedTrackingCategories } from './LinkedTrackingCategories';
/**
 *
 * @export
 * @interface InvoiceLineItem
 */
export interface InvoiceLineItem {
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof InvoiceLineItem
     */
    id?: string | null;
    /**
     * Row ID
     * @type {string}
     * @memberof InvoiceLineItem
     */
    row_id?: string;
    /**
     * User defined item code
     * @type {string}
     * @memberof InvoiceLineItem
     */
    code?: string | null;
    /**
     * Line number of the resource
     * @type {number}
     * @memberof InvoiceLineItem
     */
    line_number?: number | null;
    /**
     * User defined description
     * @type {string}
     * @memberof InvoiceLineItem
     */
    description?: string | null;
    /**
     * Item type
     * @type {string}
     * @memberof InvoiceLineItem
     */
    type?: InvoiceLineItemType;
    /**
     * Tax amount
     * @type {number}
     * @memberof InvoiceLineItem
     */
    tax_amount?: number | null;
    /**
     * Total amount of the line item
     * @type {number}
     * @memberof InvoiceLineItem
     */
    total_amount?: number | null;
    /**
     *
     * @type {number}
     * @memberof InvoiceLineItem
     */
    quantity?: number | null;
    /**
     *
     * @type {number}
     * @memberof InvoiceLineItem
     */
    unit_price?: number | null;
    /**
     * Description of the unit type the item is sold as, ie: kg, hour.
     * @type {string}
     * @memberof InvoiceLineItem
     */
    unit_of_measure?: string | null;
    /**
     * Discount percentage applied to the line item when supported downstream.
     * @type {number}
     * @memberof InvoiceLineItem
     */
    discount_percentage?: number | null;
    /**
     * Discount amount applied to the line item when supported downstream.
     * @type {number}
     * @memberof InvoiceLineItem
     */
    discount_amount?: number | null;
    /**
     * Location id
     * @type {string}
     * @memberof InvoiceLineItem
     */
    location_id?: string | null;
    /**
     * Department id
     * @type {string}
     * @memberof InvoiceLineItem
     */
    department_id?: string | null;
    /**
     *
     * @type {LinkedInvoiceItem}
     * @memberof InvoiceLineItem
     */
    item?: LinkedInvoiceItem;
    /**
     *
     * @type {LinkedTaxRate}
     * @memberof InvoiceLineItem
     */
    tax_rate?: LinkedTaxRate;
    /**
     *
     * @type {LinkedTrackingCategories}
     * @memberof InvoiceLineItem
     */
    tracking_categories?: LinkedTrackingCategories | null;
    /**
     *
     * @type {LinkedLedgerAccount}
     * @memberof InvoiceLineItem
     */
    ledger_account?: LinkedLedgerAccount | null;
    /**
     *
     * @type {Array<CustomField>}
     * @memberof InvoiceLineItem
     */
    custom_fields?: Array<CustomField>;
    /**
     * A binary value used to detect updates to a object and prevent data conflicts. It is incremented each time an update is made to the object.
     * @type {string}
     * @memberof InvoiceLineItem
     */
    row_version?: string | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof InvoiceLineItem
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof InvoiceLineItem
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof InvoiceLineItem
     */
    readonly created_at?: Date | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof InvoiceLineItem
     */
    readonly updated_at?: Date | null;
}
/**
 * @export
 * @enum {string}
 */
export declare enum InvoiceLineItemType {
    sales_item = "sales_item",
    discount = "discount",
    info = "info",
    sub_total = "sub_total",
    other = "other"
}
export declare function InvoiceLineItemFromJSON(json: any): InvoiceLineItem;
export declare function InvoiceLineItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): InvoiceLineItem;
export declare function InvoiceLineItemToJSON(value?: InvoiceLineItem | null): any;
