/**
 * 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.js';
import {
  CardMoveRequestCardsItems,
  cardMoveRequestCardsItemsSchema,
} from './cardMoveRequestCardsItems.js';

export interface CardMoveRequest {
  colCoCode?: number | null;
  colCoId?: number | null;
  colCoCountryCode?: string | null;
  payerNumber?: string | null;
  payerId?: number | null;
  cards?: CardMoveRequestCardsItems[];
  targetAccountId?: number;
  targetAccountNumber?: string;
  targetCardGroupId?: number;
  targetNewCardGroupName?: string;
}

export const cardMoveRequestSchema: Schema<CardMoveRequest> = lazy(() =>
  object({
    colCoCode: ['ColCoCode', optional(nullable(number()))],
    colCoId: ['ColCoId', optional(nullable(number()))],
    colCoCountryCode: ['ColCoCountryCode', optional(nullable(string()))],
    payerNumber: ['PayerNumber', optional(nullable(string()))],
    payerId: ['PayerId', optional(nullable(number()))],
    cards: ['Cards', optional(array(cardMoveRequestCardsItemsSchema))],
    targetAccountId: ['TargetAccountId', optional(number())],
    targetAccountNumber: ['TargetAccountNumber', optional(string())],
    targetCardGroupId: ['TargetCardGroupId', optional(number())],
    targetNewCardGroupName: ['TargetNewCardGroupName', optional(string())],
  })
);
