import type { SkillGenerator } from "../skill-generator.js";
import type { AttachmentSender } from "../agent-types.js";
export interface AttachmentExecutorDeps {
    workspace: string;
    skillGenerator: SkillGenerator;
    /**
     * Read on each call so swapping the frontend (Telegram off, on) takes
     * effect immediately without re-wiring the executor.
     */
    getAttachmentSender: () => AttachmentSender | null;
}
/**
 * Resolve a user-supplied attachment path against the workspace
 * attachments/ root. Rejects absolute paths, drive-letter paths, and
 * anything that would escape via `..`. Strips a leading "attachments/"
 * so the LLM may use either form.
 */
export declare function resolveAttachmentPath(workspace: string, input: unknown): string;
export declare function executeAttachmentAction(deps: AttachmentExecutorDeps, action: string, args: Record<string, unknown>): Promise<string>;
