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

import * as z from "zod/v3";
import { remap as remap$ } from "../../lib/primitives.js";
import * as components from "../components/index.js";

export type AgentsApiV1AgentsListRequest = {
  /**
   * Page number (0-indexed)
   */
  page?: number | undefined;
  /**
   * Number of agents per page
   */
  pageSize?: number | undefined;
  deploymentChat?: boolean | null | undefined;
  sources?: Array<components.RequestSource> | null | undefined;
  /**
   * Filter by agent name
   */
  name?: string | null | undefined;
  /**
   * Search agents by name or ID
   */
  search?: string | null | undefined;
  id?: string | null | undefined;
  metadata?: { [k: string]: any } | null | undefined;
};

/** @internal */
export type AgentsApiV1AgentsListRequest$Outbound = {
  page: number;
  page_size: number;
  deployment_chat?: boolean | null | undefined;
  sources?: Array<string> | null | undefined;
  name?: string | null | undefined;
  search?: string | null | undefined;
  id?: string | null | undefined;
  metadata?: { [k: string]: any } | null | undefined;
};

/** @internal */
export const AgentsApiV1AgentsListRequest$outboundSchema: z.ZodType<
  AgentsApiV1AgentsListRequest$Outbound,
  z.ZodTypeDef,
  AgentsApiV1AgentsListRequest
> = z.object({
  page: z.number().int().default(0),
  pageSize: z.number().int().default(20),
  deploymentChat: z.nullable(z.boolean()).optional(),
  sources: z.nullable(z.array(components.RequestSource$outboundSchema))
    .optional(),
  name: z.nullable(z.string()).optional(),
  search: z.nullable(z.string()).optional(),
  id: z.nullable(z.string()).optional(),
  metadata: z.nullable(z.record(z.any())).optional(),
}).transform((v) => {
  return remap$(v, {
    pageSize: "page_size",
    deploymentChat: "deployment_chat",
  });
});

export function agentsApiV1AgentsListRequestToJSON(
  agentsApiV1AgentsListRequest: AgentsApiV1AgentsListRequest,
): string {
  return JSON.stringify(
    AgentsApiV1AgentsListRequest$outboundSchema.parse(
      agentsApiV1AgentsListRequest,
    ),
  );
}
