import { Readable } from 'node:stream';
interface MultipartFile {
    name: string;
    filename: string;
    contentType?: string;
    stream: Readable;
}
interface MultipartBody {
    boundary: string;
    contentType: string;
    stream: Readable;
}
/**
 * Build a streaming multipart/form-data body for the operations API.
 *
 * Fields are emitted first, in the order they appear in the `fields` record, then the
 * single (optional) file part. That ordering is required by the server-side multipart
 * parser (`server/serverHelpers/multipartParser.ts`): dispatching fields like `operation`
 * must arrive before the file so preValidation/auth hooks can see them, and the file
 * always comes last so the route handler streams it into extraction.
 *
 * Each field value is JSON-stringified — the server parser will reverse that on values
 * that look like JSON, otherwise leave them as raw strings.
 */
export declare function buildMultipartBody(fields: Record<string, unknown>, file?: MultipartFile): MultipartBody;
export {};
