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

import {
  array,
  lazy,
  number,
  object,
  optional,
  Schema,
  string,
} from '../schema';
import {
  CardMoveResponseErrorCardsItems,
  cardMoveResponseErrorCardsItemsSchema,
} from './cardMoveResponseErrorCardsItems';
import {
  CardMoveResponseSuccessfulRequestsItems,
  cardMoveResponseSuccessfulRequestsItemsSchema,
} from './cardMoveResponseSuccessfulRequestsItems';
import { ErrorStatus, errorStatusSchema } from './errorStatus';

export interface CardMoveResponse {
  moveCardRequestReference?: number;
  successfulRequests?: CardMoveResponseSuccessfulRequestsItems[];
  errorCards?: CardMoveResponseErrorCardsItems[];
  requestId?: string;
  error?: ErrorStatus;
}

export const cardMoveResponseSchema: Schema<CardMoveResponse> = object({
  moveCardRequestReference: ['MoveCardRequestReference', optional(number())],
  successfulRequests: [
    'SuccessfulRequests',
    optional(array(lazy(() => cardMoveResponseSuccessfulRequestsItemsSchema))),
  ],
  errorCards: [
    'ErrorCards',
    optional(array(lazy(() => cardMoveResponseErrorCardsItemsSchema))),
  ],
  requestId: ['RequestId', optional(string())],
  error: ['Error', optional(lazy(() => errorStatusSchema))],
});
