/*
 * Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT.
 * @generated-id: 9b8d9812bc5d
 */

import * as z from "zod/v4";
import { remap as remap$ } from "../../lib/primitives.js";
import { safeParse } from "../../lib/schemas.js";
import { ClosedEnum } from "../../types/enums.js";
import { Result as SafeParseResult } from "../../types/fp.js";
import * as components from "../components/index.js";
import { SDKValidationError } from "../errors/sdkvalidationerror.js";

/**
 * Filter by schedule status: 'active' or 'paused'
 */
export const GetSchedulesV1WorkflowsSchedulesGetStatus = {
  Active: "active",
  Paused: "paused",
} as const;
/**
 * Filter by schedule status: 'active' or 'paused'
 */
export type GetSchedulesV1WorkflowsSchedulesGetStatus = ClosedEnum<
  typeof GetSchedulesV1WorkflowsSchedulesGetStatus
>;

export type GetSchedulesV1WorkflowsSchedulesGetRequest = {
  /**
   * Filter by workflow name
   */
  workflowName?: string | null | undefined;
  /**
   * Filter by user ID. Pass 'current' to resolve to the authenticated user's ID.
   */
  userId?: string | null | undefined;
  /**
   * Filter by schedule status: 'active' or 'paused'
   */
  status?: GetSchedulesV1WorkflowsSchedulesGetStatus | null | undefined;
  /**
   * Number of items per page. Omitting this parameter fetches all results at once (deprecated — pass page_size to use pagination).
   */
  pageSize?: number | null | undefined;
  /**
   * Token for the next page of results
   */
  nextPageToken?: string | null | undefined;
};

export type GetSchedulesV1WorkflowsSchedulesGetResponse = {
  result: components.WorkflowScheduleListResponse;
};

/** @internal */
export const GetSchedulesV1WorkflowsSchedulesGetStatus$outboundSchema:
  z.ZodEnum<typeof GetSchedulesV1WorkflowsSchedulesGetStatus> = z.enum(
    GetSchedulesV1WorkflowsSchedulesGetStatus,
  );

/** @internal */
export type GetSchedulesV1WorkflowsSchedulesGetRequest$Outbound = {
  workflow_name?: string | null | undefined;
  user_id?: string | null | undefined;
  status?: string | null | undefined;
  page_size?: number | null | undefined;
  next_page_token?: string | null | undefined;
};

/** @internal */
export const GetSchedulesV1WorkflowsSchedulesGetRequest$outboundSchema:
  z.ZodType<
    GetSchedulesV1WorkflowsSchedulesGetRequest$Outbound,
    GetSchedulesV1WorkflowsSchedulesGetRequest
  > = z.object({
    workflowName: z.nullable(z.string()).optional(),
    userId: z.nullable(z.string()).optional(),
    status: z.nullable(GetSchedulesV1WorkflowsSchedulesGetStatus$outboundSchema)
      .optional(),
    pageSize: z.nullable(z.int()).optional(),
    nextPageToken: z.nullable(z.string()).optional(),
  }).transform((v) => {
    return remap$(v, {
      workflowName: "workflow_name",
      userId: "user_id",
      pageSize: "page_size",
      nextPageToken: "next_page_token",
    });
  });

export function getSchedulesV1WorkflowsSchedulesGetRequestToJSON(
  getSchedulesV1WorkflowsSchedulesGetRequest:
    GetSchedulesV1WorkflowsSchedulesGetRequest,
): string {
  return JSON.stringify(
    GetSchedulesV1WorkflowsSchedulesGetRequest$outboundSchema.parse(
      getSchedulesV1WorkflowsSchedulesGetRequest,
    ),
  );
}

/** @internal */
export const GetSchedulesV1WorkflowsSchedulesGetResponse$inboundSchema:
  z.ZodType<GetSchedulesV1WorkflowsSchedulesGetResponse, unknown> = z.object({
    Result: components.WorkflowScheduleListResponse$inboundSchema,
  }).transform((v) => {
    return remap$(v, {
      "Result": "result",
    });
  });

export function getSchedulesV1WorkflowsSchedulesGetResponseFromJSON(
  jsonString: string,
): SafeParseResult<
  GetSchedulesV1WorkflowsSchedulesGetResponse,
  SDKValidationError
> {
  return safeParse(
    jsonString,
    (x) =>
      GetSchedulesV1WorkflowsSchedulesGetResponse$inboundSchema.parse(
        JSON.parse(x),
      ),
    `Failed to parse 'GetSchedulesV1WorkflowsSchedulesGetResponse' from JSON`,
  );
}
