export interface FileData {
    id: string;
    content_type: string;
    directory_id: string;
    hash: string;
    name: string;
    size: number;
    is_shared: boolean;
    is_encrypted: boolean;
    access: string;
    recipients: any;
    created_at: string;
    updated_at: string;
}
export interface UploadFileResponse {
    content_type: string;
    directory_id: string;
    file_id: string;
    hash: string;
    name: string;
    size: number;
}
export interface UploadProgressCallback {
    (progress: {
        percentage: number;
        elapsedTime: number;
    }): void;
}
export interface UploadFileRequest {
    file: File | Buffer | string;
    directory_id?: string;
    passphrase?: string;
    onProgress?: UploadProgressCallback;
}
export interface UpdateFileRequest {
    directory_id?: string;
    name?: string;
    is_shared?: boolean;
}
export interface FileResponse {
    data: FileData | UploadFileResponse | null;
    message: string;
    meta: any;
    status: string;
}
export interface FilesResponse {
    data: FileData[];
    message: string;
    meta: any;
    status: string;
}
export interface DownloadFileResponse {
    success: boolean;
    data?: Buffer;
    message?: string;
}
export interface ReadFileRequest {
    fileId: string;
    includeChunks?: boolean;
}
export interface DownloadFileRequest {
    fileId: string;
    passphrase?: string;
}
export interface PublicDownloadFileRequest {
    fileId: string;
    passphrase?: string;
    temporaryToken?: string;
    shared?: {
        access: "password";
        value: string;
    };
}
export interface RenameFileRequest {
    fileId: string;
    name: string;
}
export interface MoveFileRequest {
    fileId: string;
    directory_id: string;
}
export interface ReadFileAccessRequest {
    fileId: string;
}
export interface ReadFileAccessResponse {
    access: string;
    is_encrypted: boolean;
    id: string;
    size: number;
}
export interface SetFileAccessRequest {
    fileId: string;
    access: "public" | "private" | "password" | "email";
    value?: string | string[];
}
export interface GenerateTemporaryTokenRequest {
    fileId: string;
    expiresIn?: number;
}
export interface GenerateTemporaryTokenResponse {
    duration: string;
    file_key: string;
}
export interface GetPreviewLinkRequest {
    fileId: string;
}
export interface GetPreviewLinkResponse {
    previewUrl: string;
}
export interface CreateTemporaryLinkRequest {
    fileId: string;
    expiresIn?: number;
}
export interface CreateTemporaryLinkResponse {
    temporaryPreviewUrl: string;
    duration: string;
    file_key: string;
}
