/**
 * 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 { CashDetails } from './CashDetails';
import { Currency } from './Currency';
import { PassThroughBody } from './PassThroughBody';
import { PosBankAccount } from './PosBankAccount';
import { PosPaymentCardDetails } from './PosPaymentCardDetails';
import { PosPaymentExternalDetails } from './PosPaymentExternalDetails';
import { ServiceCharges } from './ServiceCharges';
import { WalletDetails } from './WalletDetails';
/**
 *
 * @export
 * @interface PosPayment
 */
export interface PosPayment {
    /**
     * The ID for the source of funds for this payment. Square-only: This can be a payment token (card nonce) generated by the payment form or a card on file made linked to the customer. if recording a payment that the seller received outside of Square, specify either `CASH` or `EXTERNAL`.
     * @type {string}
     * @memberof PosPayment
     */
    source_id: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    order_id: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    customer_id: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    tender_id: string;
    /**
     *
     * @type {number}
     * @memberof PosPayment
     */
    amount: number;
    /**
     *
     * @type {Currency}
     * @memberof PosPayment
     */
    currency: Currency | null;
    /**
     * A unique identifier for an object.
     * @type {string}
     * @memberof PosPayment
     */
    readonly id?: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    merchant_id?: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    employee_id?: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    location_id?: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    device_id?: string;
    /**
     *
     * @type {string}
     * @memberof PosPayment
     */
    external_payment_id?: string;
    /**
     * A value you specify that uniquely identifies this request among requests you have sent.
     * @type {string}
     * @memberof PosPayment
     */
    idempotency_key?: string;
    /**
     *
     * @type {number}
     * @memberof PosPayment
     */
    tip?: number;
    /**
     *
     * @type {number}
     * @memberof PosPayment
     */
    tax?: number;
    /**
     *
     * @type {number}
     * @memberof PosPayment
     */
    total?: number;
    /**
     * The amount the developer is taking as a fee for facilitating the payment on behalf of the seller.
     * @type {number}
     * @memberof PosPayment
     */
    app_fee?: number;
    /**
     *
     * @type {number}
     * @memberof PosPayment
     */
    change_back_cash_amount?: number;
    /**
     * The initial amount of money approved for this payment.
     * @type {number}
     * @memberof PosPayment
     */
    approved?: number;
    /**
     * The initial amount of money approved for this payment.
     * @type {number}
     * @memberof PosPayment
     */
    refunded?: number;
    /**
     *
     * @type {Array<object>}
     * @memberof PosPayment
     */
    processing_fees?: Array<object>;
    /**
     * Source of this payment.
     * @type {string}
     * @memberof PosPayment
     */
    source?: PosPaymentSource;
    /**
     * Status of this payment.
     * @type {string}
     * @memberof PosPayment
     */
    status?: PosPaymentStatus;
    /**
     *
     * @type {CashDetails}
     * @memberof PosPayment
     */
    cash?: CashDetails;
    /**
     *
     * @type {PosPaymentCardDetails}
     * @memberof PosPayment
     */
    card_details?: PosPaymentCardDetails;
    /**
     *
     * @type {PosBankAccount}
     * @memberof PosPayment
     */
    bank_account?: PosBankAccount;
    /**
     *
     * @type {WalletDetails}
     * @memberof PosPayment
     */
    wallet?: WalletDetails;
    /**
     *
     * @type {PosPaymentExternalDetails}
     * @memberof PosPayment
     */
    external_details?: PosPaymentExternalDetails;
    /**
     *
     * @type {ServiceCharges}
     * @memberof PosPayment
     */
    service_charges?: ServiceCharges;
    /**
     * When custom mappings are configured on the resource, the result is included here.
     * @type {object}
     * @memberof PosPayment
     */
    readonly custom_mappings?: object | null;
    /**
     * The user who last updated the object.
     * @type {string}
     * @memberof PosPayment
     */
    readonly updated_by?: string | null;
    /**
     * The user who created the object.
     * @type {string}
     * @memberof PosPayment
     */
    readonly created_by?: string | null;
    /**
     * The date and time when the object was last updated.
     * @type {Date}
     * @memberof PosPayment
     */
    readonly updated_at?: Date | null;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof PosPayment
     */
    readonly created_at?: Date | null;
    /**
     *
     * @type {PassThroughBody}
     * @memberof PosPayment
     */
    pass_through?: PassThroughBody;
}
/**
 * @export
 * @enum {string}
 */
export declare enum PosPaymentSource {
    card = "card",
    bank_account = "bank_account",
    wallet = "wallet",
    bnpl = "bnpl",
    cash = "cash",
    external = "external",
    other = "other"
}
/**
 * @export
 * @enum {string}
 */
export declare enum PosPaymentStatus {
    approved = "approved",
    pending = "pending",
    completed = "completed",
    canceled = "canceled",
    failed = "failed",
    other = "other"
}
export declare function PosPaymentFromJSON(json: any): PosPayment;
export declare function PosPaymentFromJSONTyped(json: any, ignoreDiscriminator: boolean): PosPayment;
export declare function PosPaymentToJSON(value?: PosPayment | null): any;
