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

import * as z from "zod/v3";
import { blobLikeSchema } from "../../types/blobs.js";

export type AddWorkspaceDocumentRequestFile = {
  fileName: string;
  content: ReadableStream<Uint8Array> | Blob | ArrayBuffer | Uint8Array;
};

export type AddWorkspaceDocumentRequest = {
  /**
   * The file within the multipart/form-data
   */
  file?: AddWorkspaceDocumentRequestFile | Blob | undefined;
};

/** @internal */
export type AddWorkspaceDocumentRequestFile$Outbound = {
  fileName: string;
  content: ReadableStream<Uint8Array> | Blob | ArrayBuffer | Uint8Array;
};

/** @internal */
export const AddWorkspaceDocumentRequestFile$outboundSchema: z.ZodType<
  AddWorkspaceDocumentRequestFile$Outbound,
  z.ZodTypeDef,
  AddWorkspaceDocumentRequestFile
> = z.object({
  fileName: z.string(),
  content: z.union([
    z.instanceof(ReadableStream<Uint8Array>),
    z.instanceof(Blob),
    z.instanceof(ArrayBuffer),
    z.instanceof(Uint8Array),
  ]),
});

export function addWorkspaceDocumentRequestFileToJSON(
  addWorkspaceDocumentRequestFile: AddWorkspaceDocumentRequestFile,
): string {
  return JSON.stringify(
    AddWorkspaceDocumentRequestFile$outboundSchema.parse(
      addWorkspaceDocumentRequestFile,
    ),
  );
}

/** @internal */
export type AddWorkspaceDocumentRequest$Outbound = {
  file?: AddWorkspaceDocumentRequestFile$Outbound | Blob | undefined;
};

/** @internal */
export const AddWorkspaceDocumentRequest$outboundSchema: z.ZodType<
  AddWorkspaceDocumentRequest$Outbound,
  z.ZodTypeDef,
  AddWorkspaceDocumentRequest
> = z.object({
  file: z.lazy(() => AddWorkspaceDocumentRequestFile$outboundSchema).or(
    blobLikeSchema,
  ).optional(),
});

export function addWorkspaceDocumentRequestToJSON(
  addWorkspaceDocumentRequest: AddWorkspaceDocumentRequest,
): string {
  return JSON.stringify(
    AddWorkspaceDocumentRequest$outboundSchema.parse(
      addWorkspaceDocumentRequest,
    ),
  );
}
