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

import { array, lazy, object, optional, Schema, string } from '../schema.js';
import {
  BundleCardRestrictionStatus,
  bundleCardRestrictionStatusSchema,
} from './bundleCardRestrictionStatus.js';
import { ErrorStatus, errorStatusSchema } from './errorStatus.js';

export interface CreateBundleResponse {
  bundleCreationStatus?: ErrorStatus;
  /** Identifier of the newly created bundle */
  bundleId?: string;
  dayTimeRestrictionStatus?: ErrorStatus;
  /** Identifier of the day/time restriction profile created */
  dayTimeRestrictionProfileId?: string;
  locationRestrictionStatus?: ErrorStatus;
  /** Identifier of the location restriction profile created */
  locationRestrictionProfileId?: string;
  usageRestrictionStatus?: ErrorStatus;
  productRestrictionStatus?: ErrorStatus;
  /** Identifier of the product restriction profile created */
  productRestrictionProfileId?: string;
  cards?: BundleCardRestrictionStatus[];
}

export const createBundleResponseSchema: Schema<CreateBundleResponse> = lazy(
  () =>
    object({
      bundleCreationStatus: [
        'BundleCreationStatus',
        optional(errorStatusSchema),
      ],
      bundleId: ['BundleId', optional(string())],
      dayTimeRestrictionStatus: [
        'DayTimeRestrictionStatus',
        optional(errorStatusSchema),
      ],
      dayTimeRestrictionProfileId: [
        'DayTimeRestrictionProfileId',
        optional(string()),
      ],
      locationRestrictionStatus: [
        'LocationRestrictionStatus',
        optional(errorStatusSchema),
      ],
      locationRestrictionProfileId: [
        'LocationRestrictionProfileId',
        optional(string()),
      ],
      usageRestrictionStatus: [
        'UsageRestrictionStatus',
        optional(errorStatusSchema),
      ],
      productRestrictionStatus: [
        'ProductRestrictionStatus',
        optional(errorStatusSchema),
      ],
      productRestrictionProfileId: [
        'ProductRestrictionProfileId',
        optional(string()),
      ],
      cards: ['Cards', optional(array(bundleCardRestrictionStatusSchema))],
    })
);
