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

import { lazy, nullable, object, optional, Schema, string } from '../schema';
import {
  ChargeRetrieveState,
  chargeRetrieveStateSchema,
} from './chargeRetrieveState';

export interface DataActive {
  /** Id of the session */
  id?: string;
  /** Id of the user that started the session */
  userId?: string;
  /** Id of the evse that the user is charging */
  emaId?: string;
  /** Electric Vehicle Supply Equipment Identifier. An EVSEID identifies a Charging Point. */
  evseId?: string;
  /** When the session is started */
  startedAt?: string;
  /** When the session is stopped */
  stoppedAt?: string | null;
  sessionState?: ChargeRetrieveState;
  lastUpdated?: string;
}

export const dataActiveSchema: Schema<DataActive> = object({
  id: ['id', optional(string())],
  userId: ['userId', optional(string())],
  emaId: ['emaId', optional(string())],
  evseId: ['evseId', optional(string())],
  startedAt: ['startedAt', optional(string())],
  stoppedAt: ['stoppedAt', optional(nullable(string()))],
  sessionState: [
    'SessionState',
    optional(lazy(() => chargeRetrieveStateSchema)),
  ],
  lastUpdated: ['lastUpdated', optional(string())],
});
