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

import {
  array,
  lazy,
  nullable,
  number,
  object,
  optional,
  Schema,
  string,
} from '../schema';
import { Card, cardSchema } from './card';

export interface CardSearchResponse {
  /** Unique request identifier passed from end user. This identifier helps in tracing a transaction */
  requestId?: string | null;
  /** Indicates overall status of the request. Allowed values: SUCCES, FAILED, PARTIAL_SUCCES */
  status?: string | null;
  data?: Card[];
  /** Specifies the returned page of the results */
  page?: number;
  /** Specifies the number of records to be returned which could be less than the PageSize in the request */
  pageSize?: number;
  /** Specifies the total pages available in the result */
  totalPages?: number;
  /** Specifies the total pages available in the result */
  totalRecords?: number;
}

export const cardSearchResponseSchema: Schema<CardSearchResponse> = object({
  requestId: ['RequestId', optional(nullable(string()))],
  status: ['Status', optional(nullable(string()))],
  data: ['Data', optional(array(lazy(() => cardSchema)))],
  page: ['Page', optional(number())],
  pageSize: ['PageSize', optional(number())],
  totalPages: ['TotalPages', optional(number())],
  totalRecords: ['TotalRecords', optional(number())],
});
