import type { AgentRuntimeContext } from '../../types/agent/base.js';
import type { AgentContextLevel } from '../../types/agent/factory.js';
import type { AgentPersona } from '../../types/persona/index.js';
import type { ProjectId } from '../../types/session/ids.js';
import type { Skill } from '../../types/skills/index.js';
import type { ToolRegistryContract } from '../../types/tool/index.js';
import { type PromptSegments } from './prompt.js';
export interface ContextCacheConfig {
    agentId: string;
    projectId: ProjectId;
}
export interface PromptCacheInput {
    systemPrompt?: string;
    persona?: AgentPersona;
    skills?: Skill[];
    basePrompt?: string;
    tools: ToolRegistryContract;
    allowedTools?: string[];
    runtimeContext?: AgentRuntimeContext;
}
export declare class ContextCache {
    readonly projectId: ProjectId;
    readonly agentId: string;
    private cachedPrompt;
    private cachedConfigHash;
    private cachedStaticSegment;
    private cachedStaticHash;
    constructor(config: ContextCacheConfig);
    getSystemPrompt(input: PromptCacheInput): string;
    get configHash(): string | undefined;
    needsRebuild(input: PromptCacheInput): boolean;
    getSystemPromptSegmented(input: PromptCacheInput, contextLevel?: AgentContextLevel, workingDirectory?: string): PromptSegments;
    invalidate(): void;
    private computeStaticHash;
    private computeConfigHash;
}
//# sourceMappingURL=context-cache.d.ts.map