export declare const IMAGE_TEXT_PLACEHOLDER = "[Screenshot]";
export declare const IMAGE_TEXT_PLACEHOLDER_WITH_ID_PREFIX = "[Screenshot: archived=";
/**
 * Extract the archive ID from a text placeholder string like
 * `[Screenshot: archived=img_1234_abcdef01]`.
 * Returns null if the text doesn't match the placeholder pattern.
 */
export declare function extractArchiveIdFromTextPlaceholder(text: string): string | null;
export interface PruneImagesResult {
    totalImageBlocks: number;
    keptImageBlocks: number;
    prunedImageBlocks: number;
    /** Total count of ALL type:"image" blocks remaining after pruning.
     *  Pruned images become text blocks, so this reflects only real kept images
     *  plus any legacy placeholder PNGs from older transcripts. */
    allImageBlocks: number;
    resizedImageBlocks: number;
    sanitizedEmptyTextBlocks: number;
    sanitizedOrphanedToolResults: number;
    fileChanged: boolean;
}
/**
 * Scan a tool output (arbitrary JSON structure) for base64 image blocks that
 * exceed the many-image dimension limit and resize them in-place.
 * Returns the (possibly mutated) output and how many images were resized.
 */
export declare function resizeOversizedImagesInToolOutput(toolOutput: unknown): Promise<{
    resizedCount: number;
}>;
export declare function pruneSessionImages(options: {
    transcriptPath: string;
    keepLastNBase64Images: number;
}): Promise<PruneImagesResult>;
/**
 * Standalone transcript sanitizer: strips empty text blocks from assistant
 * messages and orphaned tool_result blocks without touching images.  Used as
 * a reactive repair when the API rejects a transcript with a 400 validation error.
 *
 * Returns true if the file was modified.
 */
export declare function sanitizeTranscript(transcriptPath: string): Promise<boolean>;
//# sourceMappingURL=image-pruner.d.ts.map