/**
 * Paypal Server SDKLib
 *
 * This file was automatically generated by APIMATIC v3.0 ( https://www.apimatic.io ).
 */

import { lazy, object, optional, Schema, string } from '../schema';
import {
  ExperienceContext,
  experienceContextSchema,
} from './experienceContext';

/** Information needed to pay using iDEAL. */
export interface IDEALPaymentRequest {
  /** The full name representation like Mr J Smith. */
  name: string;
  /** The [two-character ISO 3166-1 code](/api/rest/reference/country-codes/) that identifies the country or region.<blockquote><strong>Note:</strong> The country code for Great Britain is <code>GB</code> and not <code>UK</code> as used in the top-level domain names for that country. Use the `C2` country code for China worldwide for comparable uncontrolled price (CUP) method, bank card, and cross-border transactions.</blockquote> */
  countryCode: string;
  /** The business identification code (BIC). In payments systems, a BIC is used to identify a specific business, most commonly a bank. */
  bic?: string;
  /** Customizes the payer experience during the approval process for the payment. */
  experienceContext?: ExperienceContext;
}

export const iDEALPaymentRequestSchema: Schema<IDEALPaymentRequest> = object({
  name: ['name', string()],
  countryCode: ['country_code', string()],
  bic: ['bic', optional(string())],
  experienceContext: [
    'experience_context',
    optional(lazy(() => experienceContextSchema)),
  ],
});
