/**
 * Account information PNZ-API-CentreLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { lazy, object, Schema, string } from '../schema';
import { Amount, amountSchema } from './amount';
import { Balance1, balance1Schema } from './balance1';
import { CreditorAccount, creditorAccountSchema } from './creditorAccount';
import { DebtorAccount, debtorAccountSchema } from './debtorAccount';
import { MerchantDetails, merchantDetailsSchema } from './merchantDetails';
import {
  TransactionReference12,
  transactionReference12Schema,
} from './transactionReference12';

export interface Transaction12 {
  accountId: string;
  transactionReference: TransactionReference12;
  transactionId: string;
  amount: Amount;
  creditDebitIndicator: string;
  status: string;
  transactionInformation: string;
  merchantDetails: MerchantDetails;
  creditorAccount: CreditorAccount;
  debtorAccount: DebtorAccount;
  balance: Balance1;
  bookingDateTime: string;
}

export const transaction12Schema: Schema<Transaction12> = object({
  accountId: ['AccountId', string()],
  transactionReference: [
    'TransactionReference',
    lazy(() => transactionReference12Schema),
  ],
  transactionId: ['TransactionId', string()],
  amount: ['Amount', lazy(() => amountSchema)],
  creditDebitIndicator: ['CreditDebitIndicator', string()],
  status: ['Status', string()],
  transactionInformation: ['TransactionInformation', string()],
  merchantDetails: ['MerchantDetails', lazy(() => merchantDetailsSchema)],
  creditorAccount: ['CreditorAccount', lazy(() => creditorAccountSchema)],
  debtorAccount: ['DebtorAccount', lazy(() => debtorAccountSchema)],
  balance: ['Balance', lazy(() => balance1Schema)],
  bookingDateTime: ['BookingDateTime', string()],
});
