/**
 * 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 { DeprecatedLinkedTrackingCategory } from './DeprecatedLinkedTrackingCategory';
import { InvoiceItemSalesDetails } from './InvoiceItemSalesDetails';
import { LinkedLedgerAccount } from './LinkedLedgerAccount';
import { LinkedTrackingCategories } from './LinkedTrackingCategories';
import { PassThroughBody } from './PassThroughBody';
/**
 *
 * @export
 * @interface InvoiceItem
 */
export interface InvoiceItem {
    /**
     * The ID of the item.
     * @type {string}
     * @memberof InvoiceItem
     */
    readonly id?: string;
    /**
     * Item name
     * @type {string}
     * @memberof InvoiceItem
     */
    name?: string | null;
    /**
     * A short description of the item
     * @type {string}
     * @memberof InvoiceItem
     */
    description?: string | null;
    /**
     * User defined item code
     * @type {string}
     * @memberof InvoiceItem
     */
    code?: string | null;
    /**
     * Item will be available on sales transactions
     * @type {boolean}
     * @memberof InvoiceItem
     */
    sold?: boolean | null;
    /**
     * Item is available for purchase transactions
     * @type {boolean}
     * @memberof InvoiceItem
     */
    purchased?: boolean | null;
    /**
     * Item is inventoried
     * @type {boolean}
     * @memberof InvoiceItem
     */
    tracked?: boolean | null;
    /**
     * If true, transactions for this item are taxable
     * @type {boolean}
     * @memberof InvoiceItem
     */
    taxable?: boolean | null;
    /**
     * The date of opening balance if inventory item is tracked - YYYY-MM-DD.
     * @type {Date}
     * @memberof InvoiceItem
     */
    inventory_date?: Date | null;
    /**
     * Item type
     * @type {string}
     * @memberof InvoiceItem
     */
    type?: InvoiceItemType;
    /**
     *
     * @type {InvoiceItemSalesDetails}
     * @memberof InvoiceItem
     */
    sales_details?: InvoiceItemSalesDetails;
    /**
     *
     * @type {InvoiceItemSalesDetails}
     * @memberof InvoiceItem
     */
    purchase_details?: InvoiceItemSalesDetails;
    /**
     *
     * @type {number}
     * @memberof InvoiceItem
     */
    quantity?: number | null;
    /**
     *
     * @type {number}
     * @memberof InvoiceItem
     */
    unit_price?: number | null;
    /**
     *
     * @type {LinkedLedgerAccount}
     * @memberof InvoiceItem
     */
    asset_account?: LinkedLedgerAccount | null;
    /**
     *
     * @type {LinkedLedgerAccount}
     * @memberof InvoiceItem
     */
    income_account?: LinkedLedgerAccount | null;
    /**
     *
     * @type {LinkedLedgerAccount}
     * @memberof InvoiceItem
     */
    expense_account?: LinkedLedgerAccount | null;
    /**
     *
     * @type {DeprecatedLinkedTrackingCategory}
     * @memberof InvoiceItem
     */
    tracking_category?: DeprecatedLinkedTrackingCategory | null;
    /**
     *
     * @type {LinkedTrackingCategories}
     * @memberof InvoiceItem
     */
    tracking_categories?: LinkedTrackingCategories | null;
    /**
     *
     * @type {boolean}
     * @memberof InvoiceItem
     */
    active?: boolean | null;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof InvoiceItem
     */
    readonly custom_mappings?: object | null;
    /**
     * 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 InvoiceItem
     */
    row_version?: string | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof InvoiceItem
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof InvoiceItem
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof InvoiceItem
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof InvoiceItem
     */
    readonly created_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof InvoiceItem
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum InvoiceItemType {
    inventory = "inventory",
    service = "service",
    other = "other"
}
export declare function InvoiceItemFromJSON(json: any): InvoiceItem;
export declare function InvoiceItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): InvoiceItem;
export declare function InvoiceItemToJSON(value?: InvoiceItem | null): any;
