/**
 * 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 {
  BlikOneClickPaymentObject,
  blikOneClickPaymentObjectSchema,
} from './blikOneClickPaymentObject';

/** Information used to pay using BLIK. */
export interface BlikPaymentObject {
  /** 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. Note: The country code for Great Britain is GB and not UK 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. */
  countryCode?: string;
  /** The internationalized email address. Note: Up to 64 characters are allowed before and 255 characters are allowed after the @ sign. However, the generally accepted maximum length for an email address is 254 characters. The pattern verifies that an unquoted @ sign exists. */
  email?: string;
  /** Information used to pay using BLIK one-click flow. */
  oneClick?: BlikOneClickPaymentObject;
}

export const blikPaymentObjectSchema: Schema<BlikPaymentObject> = object({
  name: ['name', optional(string())],
  countryCode: ['country_code', optional(string())],
  email: ['email', optional(string())],
  oneClick: [
    'one_click',
    optional(lazy(() => blikOneClickPaymentObjectSchema)),
  ],
});
