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

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

/** Encapsulates the details of a Summary response. */
export interface SummaryResponse {
  /** Total number of active cards for the given search criteria */
  activeCards?: number | null;
  /** Total number of cards for the given search criteria that are permanently blocked (Blocked) */
  blockedCards?: number | null;
  /** Total number of cards for the given search criteria that are cancelled (at cancelled status) blocked by customer */
  cancelledCards?: number | null;
  /** Total number of expired cards for the given search criteria */
  expiredCards?: number | null;
  /** Cards that are active and expiring in X days, X should be configurable */
  expiringCards?: number | null;
  /** Totalnumber of Cards in Fraud status for the given search criteria. */
  fraudCards?: number | null;
  /** Total number of cards in New status for the given search criteria. */
  newCards?: number | null;
  /** Total number of Renewal Pending cards for the given search criteria */
  renewalPendingCards?: number | null;
  /** Cards with status Replaced */
  replacedCards?: number | null;
  /** Total number of cards for the given search criteria that are temporarily blocked by customer */
  temporaryBlockByCustomer?: number | null;
  /** Total number of cards for the given search criteria that are temporarily blocked by Shell */
  temporaryBlockByShell?: number | null;
  /** Total number of cards for the given search criteria */
  totalCards?: number | null;
}

export const summaryResponseSchema: Schema<SummaryResponse> = object({
  activeCards: ['ActiveCards', optional(nullable(number()))],
  blockedCards: ['BlockedCards', optional(nullable(number()))],
  cancelledCards: ['CancelledCards', optional(nullable(number()))],
  expiredCards: ['ExpiredCards', optional(nullable(number()))],
  expiringCards: ['ExpiringCards', optional(nullable(number()))],
  fraudCards: ['FraudCards', optional(nullable(number()))],
  newCards: ['NewCards', optional(nullable(number()))],
  renewalPendingCards: ['RenewalPendingCards', optional(nullable(number()))],
  replacedCards: ['ReplacedCards', optional(nullable(number()))],
  temporaryBlockByCustomer: [
    'TemporaryBlockByCustomer',
    optional(nullable(number())),
  ],
  temporaryBlockByShell: [
    'TemporaryBlockByShell',
    optional(nullable(number())),
  ],
  totalCards: ['TotalCards', optional(nullable(number()))],
});
