/**
 * 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 { BillPaymentAllocations } from './BillPaymentAllocations';
import { Currency } from './Currency';
import { CustomField } from './CustomField';
import { LinkedLedgerAccount } from './LinkedLedgerAccount';
import { LinkedSupplier } from './LinkedSupplier';
import { LinkedTrackingCategories } from './LinkedTrackingCategories';
import { PassThroughBody } from './PassThroughBody';
import { PaymentStatus } from './PaymentStatus';
/**
 *
 * @export
 * @interface BillPayment
 */
export interface BillPayment {
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof BillPayment
     */
    readonly id: string;
    /**
     * The total amount of the transaction or record
     * @type {number}
     * @memberof BillPayment
     */
    total_amount: number | null;
    /**
     * The date of the transaction - YYYY:MM::DDThh:mm:ss.sTZD
     * @type {Date}
     * @memberof BillPayment
     */
    transaction_date: Date | null;
    /**
     * The third-party API ID of original entity
     * @type {string}
     * @memberof BillPayment
     */
    readonly downstream_id?: string | null;
    /**
     *
     * @type {Currency}
     * @memberof BillPayment
     */
    currency?: Currency | null;
    /**
     * Currency Exchange Rate at the time entity was recorded/generated.
     * @type {number}
     * @memberof BillPayment
     */
    currency_rate?: number | null;
    /**
     * Optional transaction reference message ie: Debit remittance detail.
     * @type {string}
     * @memberof BillPayment
     */
    reference?: string | null;
    /**
     * Payment method used for the transaction, such as cash, credit card, bank transfer, or check
     * @type {string}
     * @memberof BillPayment
     */
    payment_method?: string | null;
    /**
     * Optional reference message returned by payment method on processing
     * @type {string}
     * @memberof BillPayment
     */
    payment_method_reference?: string | null;
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof BillPayment
     */
    payment_method_id?: string | null;
    /**
     *
     * @type {LinkedLedgerAccount}
     * @memberof BillPayment
     */
    account?: LinkedLedgerAccount | null;
    /**
     *
     * @type {LinkedSupplier}
     * @memberof BillPayment
     */
    supplier?: LinkedSupplier | null;
    /**
     * The company or subsidiary id the transaction belongs to
     * @type {string}
     * @memberof BillPayment
     */
    company_id?: string | null;
    /**
     * Indicates if the transaction has been reconciled.
     * @type {boolean}
     * @memberof BillPayment
     */
    reconciled?: boolean | null;
    /**
     *
     * @type {PaymentStatus}
     * @memberof BillPayment
     */
    status?: PaymentStatus;
    /**
     * Type of payment
     * @type {string}
     * @memberof BillPayment
     */
    type?: BillPaymentType;
    /**
     *
     * @type {Array<BillPaymentAllocations>}
     * @memberof BillPayment
     */
    allocations?: Array<BillPaymentAllocations>;
    /**
     * Note associated with the transaction
     * @type {string}
     * @memberof BillPayment
     */
    note?: string | null;
    /**
     * Number associated with the transaction
     * @type {string}
     * @memberof BillPayment
     */
    number?: string | null;
    /**
     *
     * @type {LinkedTrackingCategories}
     * @memberof BillPayment
     */
    tracking_categories?: LinkedTrackingCategories | null;
    /**
     *
     * @type {Array<CustomField>}
     * @memberof BillPayment
     */
    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 BillPayment
     */
    row_version?: string | null;
    /**
     * Id to be displayed.
     * @type {string}
     * @memberof BillPayment
     */
    display_id?: string | null;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof BillPayment
     */
    readonly custom_mappings?: object | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof BillPayment
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof BillPayment
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof BillPayment
     */
    readonly created_at?: Date | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof BillPayment
     */
    readonly updated_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof BillPayment
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum BillPaymentType {
    payable_credit = "accounts_payable_credit",
    payable_overpayment = "accounts_payable_overpayment",
    payable_prepayment = "accounts_payable_prepayment",
    payable = "accounts_payable"
}
export declare function BillPaymentFromJSON(json: any): BillPayment;
export declare function BillPaymentFromJSONTyped(json: any, ignoreDiscriminator: boolean): BillPayment;
export declare function BillPaymentToJSON(value?: BillPayment | null): any;
