/**
 * ReasoningEnforcer - Inject explicit reasoning instructions into prompts
 *
 * Purpose: Force GLM models to use structured reasoning output format (<reasoning_content>)
 * This complements API parameters (reasoning: true) with explicit prompt instructions.
 *
 * Strategy:
 *   1. If system prompt exists: Prepend reasoning instruction
 *   2. If no system prompt: Prepend to first user message
 *   3. Select prompt template based on effort level (low/medium/high/max)
 *   4. Preserve message structure (string vs array content)
 */
type EffortLevel = 'low' | 'medium' | 'high' | 'max';
interface ContentBlock {
    type: string;
    text?: string;
    [key: string]: unknown;
}
interface Message {
    role: string;
    content: string | ContentBlock[];
}
interface ThinkingConfig {
    thinking?: boolean;
    effort?: string;
}
interface ReasoningEnforcerOptions {
    enabled?: boolean;
    prompts?: Record<EffortLevel, string>;
}
export declare class ReasoningEnforcer {
    private enabled;
    private prompts;
    constructor(options?: ReasoningEnforcerOptions);
    /**
     * Inject reasoning instruction into messages
     * @param messages - Messages array to modify
     * @param thinkingConfig - { thinking: boolean, effort: string }
     * @returns Modified messages array
     */
    injectInstruction(messages: Message[], thinkingConfig?: ThinkingConfig): Message[];
    /**
     * Select prompt template based on effort level
     */
    private selectPrompt;
    /**
     * Get default prompt templates
     */
    private getDefaultPrompts;
}
export default ReasoningEnforcer;
//# sourceMappingURL=reasoning-enforcer.d.ts.map