import type { ThinkingLevel } from "@earendil-works/pi-agent-core";
import type { Api, Model } from "@earendil-works/pi-ai/compat";
import type { ToolDefinition, ToolInfo } from "./extensions/index.ts";
import type { AgentSessionInternalSurface as AgentSession } from "./agent-session-methods.ts";
export declare function getActiveToolNames(this: AgentSession): string[];
/**
 * Get all configured tools with name, description, parameter schema, and source metadata.
 */
export declare function getAllTools(this: AgentSession): ToolInfo[];
export declare function getToolDefinition(this: AgentSession, name: string): ToolDefinition | undefined;
/**
 * Set active tools by name.
 * Only tools in the registry can be enabled. Unknown tool names are ignored.
 * Also rebuilds the system prompt to reflect the new tool set.
 * Changes take effect on the next agent turn.
 */
export declare function setActiveToolsByName(this: AgentSession, toolNames: string[]): void;
/** Whether compaction or branch summarization is currently running */
export declare function setScopedModels(this: AgentSession, scopedModels: Array<{
    model: Model<Api>;
    thinkingLevel?: ThinkingLevel;
}>): void;
/** File-based prompt templates */
export declare function _normalizePromptSnippet(this: AgentSession, text: string | undefined): string | undefined;
export declare function _normalizePromptGuidelines(this: AgentSession, guidelines: string[] | undefined): string[];
export declare function _rebuildSystemPrompt(this: AgentSession, toolNames: string[]): string;
export declare function _refreshBaseSystemPromptFromActiveTools(this: AgentSession): void;
/**
 * Send a prompt to the agent.
 * - Handles extension commands (registered via pi.registerCommand) immediately, even during streaming
 * - Expands file-based prompt templates by default
 * - During streaming, queues via steer() or followUp() based on streamingBehavior option
 * - Validates model and API key before sending (when not streaming)
 * @throws Error if streaming and no streamingBehavior specified
 * @throws Error if no model selected or no API key available (when not streaming)
 */
export declare const agentSessionStateMethods: {
    getActiveToolNames: typeof getActiveToolNames;
    getAllTools: typeof getAllTools;
    getToolDefinition: typeof getToolDefinition;
    setActiveToolsByName: typeof setActiveToolsByName;
    setScopedModels: typeof setScopedModels;
    _normalizePromptSnippet: typeof _normalizePromptSnippet;
    _normalizePromptGuidelines: typeof _normalizePromptGuidelines;
    _rebuildSystemPrompt: typeof _rebuildSystemPrompt;
    _refreshBaseSystemPromptFromActiveTools: typeof _refreshBaseSystemPromptFromActiveTools;
};
//# sourceMappingURL=agent-session-state.d.ts.map