import { Client } from "../client.cjs";
import { ProgressIterator } from "../ProgressIterator.cjs";
import { IteratorWithPromise, UploadChunkEvent } from "../uploadChunks.cjs";
import { CreateISOBMFFTrackPayload, CreateISOBMFFTrackResult } from "./isobmff-track.cjs";
import { z } from "zod";

//#region src/resources/file.d.ts
declare const FileType: z.ZodEnum<["video", "image", "caption"]>;
type FileType = z.infer<typeof FileType>;
declare const FileStatus: z.ZodEnum<["created", "uploading", "processing", "ready", "failed"]>;
type FileStatus = z.infer<typeof FileStatus>;
declare const CreateFilePayload: z.ZodObject<{
  filename: z.ZodString;
  type: z.ZodEnum<["video", "image", "caption"]>;
  byte_size: z.ZodNumber;
  md5: z.ZodOptional<z.ZodString>;
  mime_type: z.ZodOptional<z.ZodString>;
}, "strip", z.ZodTypeAny, {
  filename: string;
  byte_size: number;
  type: "video" | "image" | "caption";
  md5?: string | undefined;
  mime_type?: string | undefined;
}, {
  filename: string;
  byte_size: number;
  type: "video" | "image" | "caption";
  md5?: string | undefined;
  mime_type?: string | undefined;
}>;
type CreateFilePayload = z.infer<typeof CreateFilePayload>;
interface FileRecord {
  id: string;
  filename: string;
  type: FileType;
  status: FileStatus;
  byte_size: number | null;
  md5: string | null;
  next_byte: number;
}
interface CreateFileResult extends FileRecord {}
interface FileDetail extends FileRecord {
  mime_type?: string | null;
  width?: number | null;
  height?: number | null;
  created_at?: string;
  completed_at?: string | null;
  expires_at?: string | null;
  tracks?: Array<{
    track_id: number;
    type: string;
    codec_name: string;
    duration_ms: number;
    byte_size: number;
  }>;
}
interface LookupFileByMd5Result extends FileRecord {}
interface TranscribeFileResult {
  id: string;
  file_id: string;
  track_id: number;
}
interface FileTranscriptionResult {
  id: string;
  work_slice_ms: number;
  status: string;
  completed_at: string | null;
  failed_at: string | null;
}
declare const createFile: (client: Client, payload: CreateFilePayload) => Promise<CreateFileResult>;
declare const uploadFile: (client: Client, uploadDetails: {
  id: string;
  byte_size: number;
  type: FileType;
}, fileStream: ReadableStream) => IteratorWithPromise<UploadChunkEvent>;
declare const getFileDetail: (client: Client, id: string) => Promise<FileDetail>;
declare const lookupFileByMd5: (client: Client, md5: string) => Promise<LookupFileByMd5Result | null>;
declare const deleteFile: (client: Client, id: string) => Promise<{
  success: boolean;
}>;
declare const getFileProcessingProgress: (client: Client, id: string) => Promise<ProgressIterator>;
declare const transcribeFile: (client: Client, id: string, options?: {
  trackId?: number;
}) => Promise<TranscribeFileResult>;
declare const getFileTranscription: (client: Client, id: string) => Promise<FileTranscriptionResult | null>;
declare const createFileTrack: (client: Client, fileId: string, payload: CreateISOBMFFTrackPayload) => Promise<CreateISOBMFFTrackResult>;
declare const uploadFileTrack: (client: Client, fileId: string, trackId: number, byteSize: number, fileStream: ReadableStream) => IteratorWithPromise<UploadChunkEvent>;
declare const uploadFileIndex: (client: Client, fileId: string, fileStream: ReadableStream, fileSize: number) => Promise<any>;
//#endregion
export { CreateFilePayload, CreateFileResult, FileDetail, FileRecord, FileStatus, FileTranscriptionResult, FileType, LookupFileByMd5Result, TranscribeFileResult, createFile, createFileTrack, deleteFile, getFileDetail, getFileProcessingProgress, getFileTranscription, lookupFileByMd5, transcribeFile, uploadFile, uploadFileIndex, uploadFileTrack };
//# sourceMappingURL=file.d.cts.map