import type { CommandRunDeps } from '../commands/run-deps.js'; import { type ReferenceFlagArgs, type ResolvedReference } from './reference.js'; /** Far above any sane reference image; the cap exists so a mispassed video fails with a size, not a timeout. */ export declare const MAX_REFERENCE_FILE_BYTES: number; /** The three formats the whole reference lane round-trips (api-server's forge fetch enforces the same set). */ export declare function sniffImageContentType(bytes: Buffer): { contentType: string; extension: string; } | null; /** * Read a local image and re-host it under the game's bucket, returning the public URL. * * Every refusal happens BEFORE the network: an unreadable path, a non-image, an oversized file * each cost nothing and name the fix. Content-addressed filename, so re-sending the same picture * twice at least reads as the same picture in the bucket listing (the upload key still gets a * server-side timestamp prefix, so this is legibility, not dedup). */ export declare function uploadReferenceImageFile(options: { root: string; gameId: string; filePath: string; deps: CommandRunDeps; }): Promise<{ url: string; contentType: string; }>; /** The file-flag sibling of ReferenceFlagArgs — commands that take `--reference-image `. */ export interface ReferenceFileFlagArgs extends ReferenceFlagArgs { 'reference-image'?: string; } /** * The full per-call resolution, file flag included: `--reference-image ` is uploaded and * wins (it IS the caller choosing, like the URL flag), then the URL-flag/`--no-reference`/project * precedence of {@link resolveReferenceImageUrl}. Both flags together is two answers to the same * question and is refused. */ export declare function resolveReferenceForCall(options: { args: ReferenceFileFlagArgs; root: string; gameId: string; deps: CommandRunDeps; /** One line when a file was uploaded, so the agent sees the URL its picture became. */ log: (message: string) => void; }): Promise;