/**
 *                       ######
 *                       ######
 * ############    ####( ######  #####. ######  ############   ############
 * #############  #####( ######  #####. ######  #############  #############
 *        ######  #####( ######  #####. ######  #####  ######  #####  ######
 * ###### ######  #####( ######  #####. ######  #####  #####   #####  ######
 * ###### ######  #####( ######  #####. ######  #####          #####  ######
 * #############  #############  #############  #############  #####  ######
 *  ############   ############  #############   ############  #####  ######
 *                                      ######
 *                               #############
 *                               ############
 * Adyen NodeJS API Library
 * Copyright (c) 2021 Adyen B.V.
 * This file is open source and available under the MIT license.
 * See the LICENSE file for more info.
 *
 * Adyen for Platforms: Notifications
 * The Notification API sends notifications to the endpoints specified in a given subscription. Subscriptions are managed through the Notification Configuration API. The API specifications listed here detail the format of each notification.  For more information, refer to our [documentation](https://docs.adyen.com/platforms/notifications).
 *
 * The version of the OpenAPI document: 6
 * Contact: developer-experience@adyen.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 { Amount } from './amount';
import { BankAccountDetail } from './bankAccountDetail';

export class Transaction {
    'amount'?: Amount;
    /**
    * The balance platform account ID of the balance platform to which payout was made
    */
    'balanceAccountId'?: string;
    'bankAccountDetail'?: BankAccountDetail;
    /**
    * The merchant reference of a related capture.
    */
    'captureMerchantReference'?: string;
    /**
    * The psp reference of a related capture.
    */
    'capturePspReference'?: string;
    /**
    * The date on which the transaction was performed.
    */
    'creationDate'?: Date;
    /**
    * A description of the transaction.
    */
    'description'?: string;
    /**
    * The code of the account to which funds were credited during an outgoing fund transfer.
    */
    'destinationAccountCode'?: string;
    /**
    * The psp reference of the related dispute.
    */
    'disputePspReference'?: string;
    /**
    * The reason code of a dispute.
    */
    'disputeReasonCode'?: string;
    /**
    * The merchant reference of a transaction.
    */
    'merchantReference'?: string;
    /**
    * The psp reference of the related authorisation or transfer.
    */
    'paymentPspReference'?: string;
    /**
    * The psp reference of the related payout.
    */
    'payoutPspReference'?: string;
    /**
    * The psp reference of a transaction.
    */
    'pspReference'?: string;
    /**
    * The code of the account from which funds were debited during an incoming fund transfer.
    */
    'sourceAccountCode'?: string;
    /**
    * The status of the transaction. >Permitted values: `PendingCredit`, `CreditFailed`, `CreditClosed`, `CreditSuspended`, `Credited`, `Converted`, `PendingDebit`, `DebitFailed`, `Debited`, `DebitReversedReceived`, `DebitedReversed`, `ChargebackReceived`, `Chargeback`, `ChargebackReversedReceived`, `ChargebackReversed`, `Payout`, `PayoutReversed`, `FundTransfer`, `PendingFundTransfer`, `ManualCorrected`.
    */
    'transactionStatus'?: Transaction.TransactionStatusEnum;
    /**
    * The transfer code of the transaction.
    */
    'transferCode'?: string;
}

export namespace Transaction {
    export enum TransactionStatusEnum {
        BalanceNotPaidOutTransfer = <any> 'BalanceNotPaidOutTransfer',
        Chargeback = <any> 'Chargeback',
        ChargebackCorrection = <any> 'ChargebackCorrection',
        ChargebackCorrectionReceived = <any> 'ChargebackCorrectionReceived',
        ChargebackReceived = <any> 'ChargebackReceived',
        ChargebackReversed = <any> 'ChargebackReversed',
        ChargebackReversedCorrection = <any> 'ChargebackReversedCorrection',
        ChargebackReversedCorrectionReceived = <any> 'ChargebackReversedCorrectionReceived',
        ChargebackReversedReceived = <any> 'ChargebackReversedReceived',
        Converted = <any> 'Converted',
        CreditClosed = <any> 'CreditClosed',
        CreditFailed = <any> 'CreditFailed',
        CreditReversed = <any> 'CreditReversed',
        CreditReversedReceived = <any> 'CreditReversedReceived',
        CreditSuspended = <any> 'CreditSuspended',
        Credited = <any> 'Credited',
        DebitFailed = <any> 'DebitFailed',
        DebitReversedReceived = <any> 'DebitReversedReceived',
        Debited = <any> 'Debited',
        DebitedReversed = <any> 'DebitedReversed',
        DepositCorrectionCredited = <any> 'DepositCorrectionCredited',
        DepositCorrectionDebited = <any> 'DepositCorrectionDebited',
        Fee = <any> 'Fee',
        FundTransfer = <any> 'FundTransfer',
        FundTransferReversed = <any> 'FundTransferReversed',
        InvoiceDeductionCredited = <any> 'InvoiceDeductionCredited',
        InvoiceDeductionDebited = <any> 'InvoiceDeductionDebited',
        ManualCorrected = <any> 'ManualCorrected',
        ManualCorrectionCredited = <any> 'ManualCorrectionCredited',
        ManualCorrectionDebited = <any> 'ManualCorrectionDebited',
        MerchantPayin = <any> 'MerchantPayin',
        MerchantPayinReversed = <any> 'MerchantPayinReversed',
        Payout = <any> 'Payout',
        PayoutReversed = <any> 'PayoutReversed',
        PendingCredit = <any> 'PendingCredit',
        PendingDebit = <any> 'PendingDebit',
        PendingFundTransfer = <any> 'PendingFundTransfer',
        SecondChargeback = <any> 'SecondChargeback',
        SecondChargebackCorrection = <any> 'SecondChargebackCorrection',
        SecondChargebackCorrectionReceived = <any> 'SecondChargebackCorrectionReceived',
        SecondChargebackReceived = <any> 'SecondChargebackReceived'
    }
}
