import type { TokenEstimate, AiModelPricingConfig } from '../../types/index.js';
/**
 * Detects the primary programming language of a project by checking config files.
 * Falls back to scanning source file extensions.
 */
export declare function detectProjectLanguage(projectPath: string): Promise<string>;
/**
 * Estimates input tokens for an AI agent session based on three components:
 * 1. Spec content (canonical spec.md)
 * 2. Codebase context (if projectPath is provided)
 * 3. MCP tool definitions overhead (fixed constant)
 */
export declare function estimateInputTokens(specContent: string, projectPath: string | undefined, config: AiModelPricingConfig): Promise<{
    inputTokens: number;
    specContentTokens: number;
    codebaseContextTokens: number;
    toolDefinitionsTokens: number;
}>;
/**
 * Estimates output tokens (code to be generated) for a spec.
 *
 * Priority:
 * 1. Use LOC from existing estimate if available
 * 2. Fallback: number of ACs × DEFAULT_LOC_PER_AC
 * 3. Calibrate with usage.json average if available
 */
export declare function estimateOutputTokens(locToGenerate: number, language: string, config: AiModelPricingConfig, usageAvgTokensPerCall?: number): number;
/**
 * Estimates LOC to generate based on the number of acceptance criteria.
 * Used as a fallback when no existing estimate is available.
 */
export declare function estimateLocFromAcCount(acCount: number): number;
/**
 * Produces a complete TokenEstimate for a spec.
 */
export declare function buildTokenEstimate(specContent: string, locToGenerate: number, acCount: number, projectPath: string | undefined, config: AiModelPricingConfig, usageAvgTokensPerCall?: number): Promise<TokenEstimate>;
//# sourceMappingURL=token-estimator.d.ts.map