/**
 * 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 { CustomField } from './CustomField';
import { ExpenseLineItem } from './ExpenseLineItem';
import { LinkedTaxRate } from './LinkedTaxRate';
import { PassThroughBody } from './PassThroughBody';
/**
 *
 * @export
 * @interface Expense
 */
export interface Expense {
    /**
     * The date of the transaction - YYYY:MM::DDThh:mm:ss.sTZD
     * @type {Date}
     * @memberof Expense
     */
    transaction_date: Date | null;
    /**
     * The unique identifier for the ledger account that this expense should be credited to.
     * @type {string}
     * @memberof Expense
     */
    account_id: string;
    /**
     * Expense line items linked to this expense.
     * @type {Array<ExpenseLineItem>}
     * @memberof Expense
     */
    line_items: Array<ExpenseLineItem>;
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof Expense
     */
    readonly id?: string;
    /**
     * Number.
     * @type {string}
     * @memberof Expense
     */
    number?: string | null;
    /**
     * The ID of the customer this entity is linked to. Used for expenses that should be marked as billable to customers.
     * @type {string}
     * @memberof Expense
     */
    customer_id?: string;
    /**
     * The ID of the supplier this entity is linked to.
     * @type {string}
     * @memberof Expense
     */
    supplier_id?: string;
    /**
     * The company or subsidiary id the transaction belongs to
     * @type {string}
     * @memberof Expense
     */
    company_id?: string | null;
    /**
     * The ID of the department this expense is linked to.
     * @type {string}
     * @memberof Expense
     */
    department_id?: string;
    /**
     * The type of payment for the expense.
     * @type {string}
     * @memberof Expense
     */
    payment_type?: ExpensePaymentType;
    /**
     *
     * @type {Currency}
     * @memberof Expense
     */
    currency?: Currency | null;
    /**
     * Currency Exchange Rate at the time entity was recorded/generated.
     * @type {number}
     * @memberof Expense
     */
    currency_rate?: number | null;
    /**
     * The type of expense.
     * @type {string}
     * @memberof Expense
     */
    type?: ExpenseType;
    /**
     * The memo of the expense.
     * @type {string}
     * @memberof Expense
     */
    memo?: string | null;
    /**
     *
     * @type {LinkedTaxRate}
     * @memberof Expense
     */
    tax_rate?: LinkedTaxRate;
    /**
     * The total amount of the expense line item.
     * @type {number}
     * @memberof Expense
     */
    total_amount?: number | null;
    /**
     *
     * @type {Array<CustomField>}
     * @memberof Expense
     */
    custom_fields?: Array<CustomField>;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof Expense
     */
    readonly custom_mappings?: object | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof Expense
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof Expense
     */
    readonly created_at?: Date | 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 Expense
     */
    row_version?: string | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof Expense
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum ExpensePaymentType {
    cash = "cash",
    check = "check",
    credit_card = "credit_card"
}
/**
 * @export
 * @enum {string}
 */
export declare enum ExpenseType {
    expense = "expense",
    refund = "refund"
}
export declare function ExpenseFromJSON(json: any): Expense;
export declare function ExpenseFromJSONTyped(json: any, ignoreDiscriminator: boolean): Expense;
export declare function ExpenseToJSON(value?: Expense | null): any;
