import { WebDriver, WebElement } from 'selenium-webdriver';
import { IAIProvider, ElementLocator, IElementFinder } from '../AIProviders/types';
import { ILocatorCache } from '../Caching/ILocatorCache';
import { ILocatorStats } from '../Caching/ILocatorStats';
import { ILocatorTiming } from '../Caching/ILocatorTiming';
import { LocatAIOptions } from '../Models/LocatAIOptions';
export declare class ElementFinder implements IElementFinder {
    private static provider;
    private static _cache;
    private static _stats;
    private static _timing;
    private static _options;
    /**
     * Initialize the ElementFinder with an AI provider and optional configuration
     * @param provider The AI provider to use for generating locators
     * @param options Optional configuration options
     */
    static initialize(provider: IAIProvider, options?: Partial<LocatAIOptions>): void;
    /**
     * Configure the cache implementation
     * @param cache The cache implementation to use
     */
    static configureCache(cache: ILocatorCache): void;
    /**
     * Configure the statistics implementation
     * @param stats The statistics implementation to use
     */
    static configureStats(stats: ILocatorStats): void;
    /**
     * Configure the timing implementation
     * @param timing The timing implementation to use
     */
    static configureTiming(timing: ILocatorTiming): void;
    /**
     * Configure LocatAI options
     * @param options The options to apply
     */
    static configureOptions(options: Partial<LocatAIOptions>): void;
    /**
     * Generate a hash of the DOM content
     * @param domContent The DOM content to hash
     * @returns A hash string
     */
    private hashDom;
    /**
     * Find an element using AI-generated locators
     * @param driver The WebDriver instance
     * @param elementDescription Natural language description of the element
     * @returns A WebElement if found
     */
    findElementByLocatAI(driver: WebDriver, elementDescription: string): Promise<WebElement>;
    /**
     * Generate locators for an element description
     * @param driver The WebDriver instance
     * @param elementDescription Natural language description of the element
     * @param retryAttempt Optional retry attempt number (for modifying the prompt)
     * @returns Array of element locators
     */
    private generateLocators;
    /**
     * Parse a single locator string
     * @param locatorString Raw locator string
     * @returns Parsed ElementLocator object
     */
    parseLocatorString(locatorString: string): ElementLocator;
    /**
     * Parses a collection of locator strings into structured locator objects
     * @param locatorStrings Array of raw locator strings from the AI
     * @param providerType The provider type name for provider-specific parsing
     * @returns Array of parsed ElementLocator objects
     */
    private parseLocators;
    private mapConfidenceTextToValue;
    private determineLocatorTypeFromValue;
    private normalizeLocatorType;
    private cleanOllamaResponse;
    private findElementByLocator;
}
//# sourceMappingURL=ElementFinder.d.ts.map