/**
 * Persist inbound channel / Web UI uploads under the agent home dir so the markdown
 * workspace stays user-visible; session transcripts reference stable relative paths.
 */
/** New layout: `<agentHome>/inbound/<session>/` — rel paths use this prefix. */
export declare const INBOUND_REL_ROOT = "inbound";
export interface InboundAttachmentInput {
    type: string;
    mimeType?: string;
    data?: string;
    name?: string;
    size?: number;
    /** Set after persist (relative to agent home). */
    workspaceRelativePath?: string;
}
export type InternalAttachmentRoots = {
    /** `…/agents/<id>/` — primary storage */
    agentHome: string;
};
/** Decode base64 or data-URL payload for inbound attachments (also used by voice STT). */
export declare function decodeInboundAttachmentBase64(data: string): Buffer;
/**
 * Write non-image attachments with binary data to disk; returns a shallow copy
 * of each attachment with `workspaceRelativePath` set (POSIX-style, `/` separators).
 */
export declare function persistInboundAttachmentsToWorkspace(agentHomeRoot: string, sessionKey: string, attachments: InboundAttachmentInput[] | undefined): Promise<InboundAttachmentInput[] | undefined>;
/**
 * Build transcript text for a non-image file for the LLM (includes machine-readable path lines).
 */
export declare function formatInboundFileTextBlock(att: InboundAttachmentInput, storageRootAbs: string): string;
/**
 * Remove inbound file transcript blocks from a string (e.g. auto session titles).
 * Matches Web UI `stripInboundFileMachineText`, plus bare `[File: …]` lines when paths are absent.
 */
export declare function stripInboundFileMetadataFromText(text: string): string;
/**
 * Resolve a stored relative path under `inbound/`.
 */
export declare function resolveSafeInboundFilePath(roots: InternalAttachmentRoots, relRaw: string): string | null;
