import type { PortableTool } from "../portable-tool.js";
export declare const BRIEF_TOOL_NAME: "send_user_message";
export type BriefMessageStatus = "normal" | "proactive";
export interface BriefAttachment {
    /** Absolute or workspace-relative path */
    path: string;
    /** Size in bytes (filled by host) */
    size?: number;
    /** Whether the file is an image */
    isImage?: boolean;
    /** Upload UUID (host may upload for web preview) */
    fileUuid?: string;
}
export interface BriefToolParams {
    /** Markdown-formatted message to display to the user */
    message: string;
    /** File attachments to include with the message */
    attachments?: string[];
    /** Message status — 'proactive' for unsolicited updates */
    status?: BriefMessageStatus;
}
export declare const BRIEF_TOOL_SCHEMA: {
    readonly type: "object";
    readonly properties: {
        readonly message: {
            readonly type: "string";
            readonly description: string;
            readonly minLength: 1;
        };
        readonly attachments: {
            readonly type: "array";
            readonly description: "Optional file paths to attach (images, documents, etc.).";
            readonly items: {
                readonly type: "string";
            };
            readonly maxItems: 10;
        };
        readonly status: {
            readonly type: "string";
            readonly enum: readonly ["normal", "proactive"];
            readonly description: string;
        };
    };
    readonly required: readonly ["message"];
};
export interface BriefDeliveryResult {
    delivered: boolean;
    attachments?: BriefAttachment[];
    sentAt?: string;
    error?: string;
}
/**
 * Host-provided message delivery backend.
 */
export interface BriefToolDeps {
    /** Deliver the message to the user's UI */
    deliverMessage(params: {
        message: string;
        attachments?: string[];
        status: BriefMessageStatus;
    }): Promise<BriefDeliveryResult>;
    /** Validate and resolve attachment paths. Returns resolved attachments or error. */
    resolveAttachments?(paths: string[]): Promise<BriefAttachment[] | {
        error: string;
    }>;
}
/** Check if brief mode is active (host determines this) */
export interface BriefModeConfig {
    /** Whether the agent is in brief/chat mode */
    isBriefMode: boolean;
    /** Whether the user opted in via UI/CLI */
    userOptIn?: boolean;
}
export declare function createBriefTool(deps: BriefToolDeps): PortableTool<BriefToolParams>;
