import type { BankTransactionFlowDirection } from './BankTransactionFlowDirection';
import type { BankTransactionState } from './BankTransactionState';
import type { CurrencyBankAccount } from './CurrencyBankAccount';
import type { PaymentAdjustment } from './PaymentAdjustment';
/**
 *
 * @export
 * @interface BankTransaction
 */
export interface BankTransaction {
    /**
     * Adjustments are changes made to the initial transaction amount, such as fees or corrections.
     * @type {Array<PaymentAdjustment>}
     * @memberof BankTransaction
     */
    readonly adjustments?: Array<PaymentAdjustment>;
    /**
     *
     * @type {CurrencyBankAccount}
     * @memberof BankTransaction
     */
    currencyBankAccount?: CurrencyBankAccount;
    /**
     * The date and time when the object is planned to be permanently removed. If the value is empty, the object will not be removed.
     * @type {Date}
     * @memberof BankTransaction
     */
    readonly plannedPurgeDate?: Date;
    /**
     * A client generated nonce which identifies the entity to be created. Subsequent creation requests with the same external ID will not create new entities but return the initially created entity instead.
     * @type {string}
     * @memberof BankTransaction
     */
    readonly externalId?: string;
    /**
     * The posting amount refers to the monetary value recorded for the bank transaction prior to any adjustments.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly postingAmount?: number;
    /**
     * The source indicates how the bank transaction was created.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly source?: number;
    /**
     * The value date indicates the date on which the transaction amount becomes effective.
     * @type {Date}
     * @memberof BankTransaction
     */
    readonly valueDate?: Date;
    /**
     * The bank transaction's type.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly type?: number;
    /**
     * The date and time when the object was created.
     * @type {Date}
     * @memberof BankTransaction
     */
    readonly createdOn?: Date;
    /**
     * The version is used for optimistic locking and incremented whenever the object is updated.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly version?: number;
    /**
     * A unique reference to identify the bank transaction.
     * @type {string}
     * @memberof BankTransaction
     */
    readonly reference?: string;
    /**
     * The ID of the space this object belongs to.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly linkedSpaceId?: number;
    /**
     * The value amount represents the net monetary value of the transaction after applicable deductions.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly valueAmount?: number;
    /**
     *
     * @type {BankTransactionFlowDirection}
     * @memberof BankTransaction
     */
    flowDirection?: BankTransactionFlowDirection;
    /**
     * The ID of the user the bank transaction was created by.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly createdBy?: number;
    /**
     * A unique identifier for the object.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly id?: number;
    /**
     *
     * @type {BankTransactionState}
     * @memberof BankTransaction
     */
    state?: BankTransactionState;
    /**
     * The payment date specifies the date on which the payment was processed.
     * @type {Date}
     * @memberof BankTransaction
     */
    readonly paymentDate?: Date;
    /**
     * Represents the total value of all adjustments to the bank transaction, including tax.
     * @type {number}
     * @memberof BankTransaction
     */
    readonly totalAdjustmentAmountIncludingTax?: number;
}
/**
 * Check if a given object implements the BankTransaction interface.
 */
export declare function instanceOfBankTransaction(value: object): value is BankTransaction;
export declare function BankTransactionFromJSON(json: any): BankTransaction;
export declare function BankTransactionFromJSONTyped(json: any, ignoreDiscriminator: boolean): BankTransaction;
export declare function BankTransactionToJSON(json: any): BankTransaction;
export declare function BankTransactionToJSONTyped(value?: Omit<BankTransaction, 'adjustments' | 'plannedPurgeDate' | 'externalId' | 'postingAmount' | 'source' | 'valueDate' | 'type' | 'createdOn' | 'version' | 'reference' | 'linkedSpaceId' | 'valueAmount' | 'createdBy' | 'id' | 'paymentDate' | 'totalAdjustmentAmountIncludingTax'> | null, ignoreDiscriminator?: boolean): any;
