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

import {
  array,
  boolean,
  lazy,
  number,
  object,
  Schema,
  string,
} from '../schema';
import { CreditorAccount, creditorAccountSchema } from './creditorAccount';
import { DebtorAccount3, debtorAccount3Schema } from './debtorAccount3';
import { Frequency, frequencySchema } from './frequency';
import { MaximumAmount, maximumAmountSchema } from './maximumAmount';
import { TotalAmount, totalAmountSchema } from './totalAmount';

export interface Consent5 {
  totalCount: number;
  totalAmount: TotalAmount;
  debtorAccountRelease: boolean;
  frequency: Frequency;
  maximumAmount: MaximumAmount;
  creditorAccount: CreditorAccount[];
  debtorAccount: DebtorAccount3;
  fromDateTime: string;
}

export const consent5Schema: Schema<Consent5> = object({
  totalCount: ['TotalCount', number()],
  totalAmount: ['TotalAmount', lazy(() => totalAmountSchema)],
  debtorAccountRelease: ['DebtorAccountRelease', boolean()],
  frequency: ['Frequency', lazy(() => frequencySchema)],
  maximumAmount: ['MaximumAmount', lazy(() => maximumAmountSchema)],
  creditorAccount: [
    'CreditorAccount',
    array(lazy(() => creditorAccountSchema)),
  ],
  debtorAccount: ['DebtorAccount', lazy(() => debtorAccount3Schema)],
  fromDateTime: ['FromDateTime', string()],
});
