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

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

export interface PINContact {
  /**
   * Title of the contact person <br />
   * Optional
   */
  deliveryContactTitle?: string | null;
  /**
   * Name of the contact person <br />
   * Mandatory - If PINAdviceType is paper else optional. <br />
   * Max field length: 50  <br />
   * Optional
   */
  deliveryContactName?: string | null;
  /**
   * Company name <br />
   * Mandatory - If PINAdviceType is paper else optional. <br />
   * Max field length: 50  <br />
   * Optional
   */
  deliveryCompanyName?: string | null;
  /**
   * Address line 1 <br />
   * Mandatory - if PINAdviceType is paper else optional.<br />
   * Max field length: 40  <br />
   * Optional
   */
  deliveryAddressLine1?: string | null;
  /**
   * Address line 2 <br />
   * Optional <br />
   * Max field length: 40  <br />
   * Optional
   */
  deliveryAddressLine2?: string | null;
  /**
   * Address line 3 <br />
   * Optional <br />
   * Max field length: 40  <br />
   * Optional
   */
  deliveryAddressLine3?: string | null;
  /**
   * ZIP code <br />
   * Mandatory - if PINAdviceType is paper else optional. <br />
   * Max field length: 10  <br />
   * Optional
   */
  deliveryZipCode?: string | null;
  /**
   * City  <br />
   * Mandatory - If PINAdviceType is paper else optional. <br />
   * Max field length: 40  <br />
   * Optional
   */
  deliveryCity?: string | null;
  /**
   * Region Id  <br />
   * Optional
   */
  deliveryRegionId?: number | null;
  /**
   * Region  <br />
   * Optional<br />
   */
  deliveryRegion?: string | null;
  /**
   * The ISO code of the country.<br />
   * Mandatory if PINAdviceType is paper else optional.
   */
  deliveryCountry?: string | null;
  /**
   * Phone number for to send SMS of the PIN in case PINAdviceType is SMS.<br />
   * Mandatory if PINAdviceType is SMS else optional.<br />
   * Max field length: 20
   */
  phoneNumber?: string | null;
  /**
   * Email address for to send email of the PIN in case PINAdviceType is Email.<br />
   * Mandatory if PINAdviceType is email else optional.<br />
   * Max field length: 90. <br/>Note:Based on the international standard that there can be Max Length 64 before the @ (the 'Local part’) =64(minimum of 1) Max Lenth after the (the domain) = 88 (Minimum of 2)
   */
  emailAddress?: string | null;
  /**
   * The given address will be used for sending PIN reminders in future when requested.<br />
   * Only allowed for paper delivery<br />
   * Optional
   */
  saveForPINReminder?: boolean;
}

export const pINContactSchema: Schema<PINContact> = object({
  deliveryContactTitle: ['DeliveryContactTitle', optional(nullable(string()))],
  deliveryContactName: ['DeliveryContactName', optional(nullable(string()))],
  deliveryCompanyName: ['DeliveryCompanyName', optional(nullable(string()))],
  deliveryAddressLine1: ['DeliveryAddressLine1', optional(nullable(string()))],
  deliveryAddressLine2: ['DeliveryAddressLine2', optional(nullable(string()))],
  deliveryAddressLine3: ['DeliveryAddressLine3', optional(nullable(string()))],
  deliveryZipCode: ['DeliveryZipCode', optional(nullable(string()))],
  deliveryCity: ['DeliveryCity', optional(nullable(string()))],
  deliveryRegionId: ['DeliveryRegionId', optional(nullable(number()))],
  deliveryRegion: ['DeliveryRegion', optional(nullable(string()))],
  deliveryCountry: ['DeliveryCountry', optional(nullable(string()))],
  phoneNumber: ['PhoneNumber', optional(nullable(string()))],
  emailAddress: ['EmailAddress', optional(nullable(string()))],
  saveForPINReminder: ['SaveForPINReminder', optional(boolean())],
});
