import type { AgentMessageProjectChange } from '../../../utils/agent-message-runtime/AgentMessageProjectChange';
/**
 * Synthetic tool name used for agent-project chips in chat UI.
 *
 * The Agents Server emits one such tool call per project an answer viewed or edited, so the chat
 * shows which projects the agent worked with below the message that touched them.
 *
 * @private internal chat-ui marker for touched agent projects
 */
export declare const AGENT_PROJECT_TOOL_CALL_NAME = "agent_project_touched";
/**
 * Safe, user-facing metadata shown in agent-project chips.
 *
 * Everything besides the project name is optional, because a chip written by an older server — or
 * one whose project has meanwhile been deleted — still has to render.
 *
 * @private internal chat-ui type for touched agent projects
 */
export type AgentProjectToolCallResult = {
    /**
     * Directory name of the project.
     */
    readonly projectName: string;
    /**
     * Human-readable project name shown in the chip.
     */
    readonly displayName?: string;
    /**
     * Short project description, resolved the same way as on the project page.
     */
    readonly description?: string;
    /**
     * Link to the project page, when the chat knows where the project lives.
     */
    readonly projectHref?: string;
    /**
     * Address the running project itself is served on, when it has one.
     */
    readonly projectUrl?: string;
    /**
     * Whether the project was running when the answer finished.
     */
    readonly isRunning?: boolean;
    /**
     * Runtime status label, the same one the project page shows.
     */
    readonly runtimeStatusLabel?: string;
    /**
     * Total size of the project, already formatted for display.
     */
    readonly sizeLabel?: string;
    /**
     * Count of files inside the project.
     */
    readonly fileCount?: number;
    /**
     * Whether the project folder is a git repository.
     */
    readonly isGitRepository?: boolean;
    /**
     * What this very message changed in the project, when it changed anything.
     *
     * Its `projectName` repeats the one above because the change is reported by the agent runner
     * in exactly this shape, and reusing it keeps the two descriptions from drifting apart.
     */
    readonly change?: AgentMessageProjectChange;
};
/**
 * Parses the project-chip payload from one tool result.
 *
 * @param result - Raw tool result payload.
 * @returns Parsed project metadata, or `null` when the result describes no project.
 *
 * @private internal helper reused by chip and modal rendering
 */
export declare function parseAgentProjectToolCallResult(result: unknown): AgentProjectToolCallResult | null;
/**
 * Resolves the chip label of one touched agent project.
 *
 * @param projectResult - Parsed project metadata.
 * @returns Human-readable project name.
 *
 * @private internal helper reused by chip and modal rendering
 */
export declare function resolveAgentProjectToolCallLabel(projectResult: AgentProjectToolCallResult): string;
