/**
 * Shell Card Management APIsLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { nullable, object, optional, Schema, string } from '../schema.js';

export interface BankAccount {
  /** Account Number */
  accountNumber?: string | null;
  /** Bank Name */
  bankName?: string | null;
  /** Account Name */
  accountName?: string | null;
  /** Bank Account effective date for the payer */
  dateEffective?: string | null;
  /** Bank Account terminated date. Default is null */
  dateTerminated?: string | null;
  /** Bank Account IBAN for Payer */
  iBAN?: string | null;
  /** Bank Account currency ISO code. */
  currencyCode?: string | null;
  /** Bank Account currency Symbol. */
  currencySymbol?: string | null;
  /** Bank Account Country ISO Code */
  countryISOCode?: string | null;
  /**
   * Bank Account Country Name
   * 1-Austria
   * 2-Belgium
   * 3-Bulgaria
   * 4-Croatia
   * 5-Czech Republic
   */
  country?: string | null;
  /** Payer bank Sort Code */
  sortCode?: string | null;
  /** Payer Bank Swift Code */
  swiftCode?: string | null;
  /** Bank Type Id and Description */
  bankType?: string | null;
}

export const bankAccountSchema: Schema<BankAccount> = object({
  accountNumber: ['AccountNumber', optional(nullable(string()))],
  bankName: ['BankName', optional(nullable(string()))],
  accountName: ['AccountName', optional(nullable(string()))],
  dateEffective: ['DateEffective', optional(nullable(string()))],
  dateTerminated: ['DateTerminated', optional(nullable(string()))],
  iBAN: ['IBAN', optional(nullable(string()))],
  currencyCode: ['CurrencyCode', optional(nullable(string()))],
  currencySymbol: ['CurrencySymbol', optional(nullable(string()))],
  countryISOCode: ['CountryISOCode', optional(nullable(string()))],
  country: ['Country', optional(nullable(string()))],
  sortCode: ['SortCode', optional(nullable(string()))],
  swiftCode: ['SwiftCode', optional(nullable(string()))],
  bankType: ['BankType', optional(nullable(string()))],
});
