import type { CommandNode } from '../types/core';
export type SemanticValueType = 'literal' | 'selector' | 'reference' | 'property-path' | 'expression';
export interface SemanticValue {
    readonly type: SemanticValueType;
    readonly value: string;
    readonly raw?: string;
}
export type SemanticRole = 'patient' | 'destination' | 'source' | 'event' | 'condition' | 'quantity' | 'duration' | 'method' | 'responseType' | 'style' | 'loopType';
export interface SemanticAnalysisResult {
    readonly confidence: number;
    readonly command?: {
        readonly name: string;
        readonly roles: ReadonlyMap<SemanticRole, SemanticValue>;
    };
    readonly errors?: string[];
    readonly tokensConsumed?: number;
}
export interface SemanticAnalyzer {
    analyze(input: string, language: string): SemanticAnalysisResult;
    supportsLanguage(language: string): boolean;
    supportedLanguages(): string[];
}
export declare const DEFAULT_CONFIDENCE_THRESHOLD = 0.5;
export declare const HIGH_CONFIDENCE_THRESHOLD = 0.8;
export interface SemanticIntegrationOptions {
    analyzer: SemanticAnalyzer;
    language: string;
    confidenceThreshold?: number;
    debug?: boolean;
}
export interface SemanticParseAttempt {
    success: boolean;
    node?: CommandNode;
    confidence: number;
    tokensConsumed?: number;
    errors?: string[];
}
export declare class SemanticIntegrationAdapter {
    private readonly analyzer;
    private readonly language;
    private readonly confidenceThreshold;
    private readonly debugEnabled;
    constructor(options: SemanticIntegrationOptions);
    isAvailable(): boolean;
    private static readonly SKIP_SEMANTIC_COMMANDS;
    private shouldSkipSemantic;
    trySemanticParse(input: string): SemanticParseAttempt;
    private buildCommandNode;
    private buildRepeatCommandNode;
    private buildSetCommandNode;
    private createPropertyNode;
    private buildIfCommandNode;
    private semanticValueToExpression;
    private parseExpressionString;
    getLanguage(): string;
    getConfidenceThreshold(): number;
}
export declare function createSemanticIntegration(options: SemanticIntegrationOptions): SemanticIntegrationAdapter;
export declare function shouldUseSemanticResult(result: SemanticAnalysisResult, threshold?: number): boolean;
export declare function languageBenefitsFromSemantic(language: string): boolean;
//# sourceMappingURL=semantic-integration.d.ts.map