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

import { object, optional, Schema } from '../schema';
import { AVSCode, aVSCodeSchema } from './aVSCode';
import { CVVCode, cVVCodeSchema } from './cVVCode';
import {
  PaymentAdviceCode,
  paymentAdviceCodeSchema,
} from './paymentAdviceCode';
import {
  ProcessorResponseCode,
  processorResponseCodeSchema,
} from './processorResponseCode';

/** The processor response information for payment requests, such as direct credit card transactions. */
export interface ProcessorResponse {
  /** The address verification code for Visa, Discover, Mastercard, or American Express transactions. */
  avsCode?: AVSCode;
  /** The card verification value code for for Visa, Discover, Mastercard, or American Express. */
  cvvCode?: CVVCode;
  /** Processor response code for the non-PayPal payment processor errors. */
  responseCode?: ProcessorResponseCode;
  /** The declined payment transactions might have payment advice codes. The card networks, like Visa and Mastercard, return payment advice codes. */
  paymentAdviceCode?: PaymentAdviceCode;
}

export const processorResponseSchema: Schema<ProcessorResponse> = object({
  avsCode: ['avs_code', optional(aVSCodeSchema)],
  cvvCode: ['cvv_code', optional(cVVCodeSchema)],
  responseCode: ['response_code', optional(processorResponseCodeSchema)],
  paymentAdviceCode: ['payment_advice_code', optional(paymentAdviceCodeSchema)],
});
