/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 */

import * as z from "zod/v3";
import { safeParse } from "../../lib/schemas.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";
import {
  ExperimentEnabledPeriodRep,
  ExperimentEnabledPeriodRep$inboundSchema,
  ExperimentEnabledPeriodRep$Outbound,
  ExperimentEnabledPeriodRep$outboundSchema,
} from "./experimentenabledperiodrep.js";

export type ExperimentEnvironmentSettingRep = {
  startDate?: number | undefined;
  stopDate?: number | undefined;
  enabledPeriods?: Array<ExperimentEnabledPeriodRep> | undefined;
};

/** @internal */
export const ExperimentEnvironmentSettingRep$inboundSchema: z.ZodType<
  ExperimentEnvironmentSettingRep,
  z.ZodTypeDef,
  unknown
> = z.object({
  startDate: z.number().int().optional(),
  stopDate: z.number().int().optional(),
  enabledPeriods: z.array(ExperimentEnabledPeriodRep$inboundSchema).optional(),
});
/** @internal */
export type ExperimentEnvironmentSettingRep$Outbound = {
  startDate?: number | undefined;
  stopDate?: number | undefined;
  enabledPeriods?: Array<ExperimentEnabledPeriodRep$Outbound> | undefined;
};

/** @internal */
export const ExperimentEnvironmentSettingRep$outboundSchema: z.ZodType<
  ExperimentEnvironmentSettingRep$Outbound,
  z.ZodTypeDef,
  ExperimentEnvironmentSettingRep
> = z.object({
  startDate: z.number().int().optional(),
  stopDate: z.number().int().optional(),
  enabledPeriods: z.array(ExperimentEnabledPeriodRep$outboundSchema).optional(),
});

export function experimentEnvironmentSettingRepToJSON(
  experimentEnvironmentSettingRep: ExperimentEnvironmentSettingRep,
): string {
  return JSON.stringify(
    ExperimentEnvironmentSettingRep$outboundSchema.parse(
      experimentEnvironmentSettingRep,
    ),
  );
}
export function experimentEnvironmentSettingRepFromJSON(
  jsonString: string,
): SafeParseResult<ExperimentEnvironmentSettingRep, SDKValidationError> {
  return safeParse(
    jsonString,
    (x) => ExperimentEnvironmentSettingRep$inboundSchema.parse(JSON.parse(x)),
    `Failed to parse 'ExperimentEnvironmentSettingRep' from JSON`,
  );
}
