/**
 * Attachment / artifact model for the experimental shell. Attachments are
 * files the user drops into the prompt (a pasted path to an image / PDF /
 * DOCX …); artifacts also include files PatchPilot creates during a run.
 */
export type AttachmentKind = "image" | "pdf" | "docx" | "text" | "file";
export type Artifact = {
    id: number;
    kind: AttachmentKind;
    path: string;
    label: string;
    origin: "attached" | "created";
};
/** Classify a path by extension; null if it is not an attachable document. */
export declare function attachmentKindForPath(path: string): AttachmentKind | null;
/** Remove a single layer of surrounding single/double quotes. */
export declare function stripQuotes(value: string): string;
export declare function normalizeAttachmentPath(value: string): string;
/**
 * Heuristic: does this pasted/typed value look like a single filesystem path
 * to an attachable document? Accepts absolute, home-relative, and quoted
 * paths; rejects free-form prose.
 */
export declare function looksLikeAttachmentPath(value: string): boolean;
export declare function attachmentTypeForPath(path: string): string;
/** Human label for an attachment chip, e.g. "[PNG #2]". */
export declare function attachmentLabel(kind: AttachmentKind, index: number, path?: string): string;
export declare function extractAttachmentPaths(value: string): string[] | null;
export declare function attachmentSymbol(kind: AttachmentKind): string;
export declare function formatSessionArtifactContext(artifacts: Artifact[], limit?: number): string;
/**
 * Normalise pasted text: drop carriage returns and stray control characters
 * (keeping tabs/newlines) so a multi-line paste does not corrupt the editor.
 */
export declare function sanitizePastedText(value: string): string;
