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

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

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

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

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

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

export function addWorkspaceUploadRequestDocumentRequestFileToJSON(
  addWorkspaceUploadRequestDocumentRequestFile:
    AddWorkspaceUploadRequestDocumentRequestFile,
): string {
  return JSON.stringify(
    AddWorkspaceUploadRequestDocumentRequestFile$outboundSchema.parse(
      addWorkspaceUploadRequestDocumentRequestFile,
    ),
  );
}

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

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

export function addWorkspaceUploadRequestDocumentRequestToJSON(
  addWorkspaceUploadRequestDocumentRequest:
    AddWorkspaceUploadRequestDocumentRequest,
): string {
  return JSON.stringify(
    AddWorkspaceUploadRequestDocumentRequest$outboundSchema.parse(
      addWorkspaceUploadRequestDocumentRequest,
    ),
  );
}
