/**
 * Direct TypeScript Server Client
 *
 * Uses tsserver's native protocol instead of LSP wrappers.
 * This bypasses typescript-language-server which has issues with large projects.
 *
 * @module core/lsp/tsserver-client
 */
import type { LSPHoverResult, LSPReferencesResult, LSPDefinitionResult, LSPDocumentSymbolsResult, LSPWorkspaceSymbolsResult } from './lsp-client.js';
/** Options for TsServerClient */
export interface TsServerClientOptions {
    /** Request timeout in milliseconds (default: 60000) */
    timeoutMs?: number;
}
/**
 * Direct tsserver client - works with large TypeScript projects
 * where typescript-language-server times out
 */
export declare class TsServerClient {
    private serverProcess;
    private seq;
    private projectRoot;
    private initialized;
    private responseHandlers;
    private buffer;
    private openedFiles;
    private projectLoaded;
    /** Request timeout in milliseconds */
    private readonly timeoutMs;
    constructor(projectRoot: string, options?: TsServerClientOptions);
    /**
     * Initialize the tsserver process
     */
    initialize(): Promise<boolean>;
    /**
     * Find tsserver path in project or globally
     */
    private findTsServerPath;
    /**
     * Handle output from tsserver
     */
    private handleOutput;
    /**
     * Handle tsserver events
     */
    private handleEvent;
    /** Track timeouts so we can clear them on response */
    private timeouts;
    /**
     * Send request to tsserver
     */
    private sendRequest;
    /**
     * Open a file in tsserver
     */
    private openFile;
    /**
     * Get script kind for file
     */
    private getScriptKind;
    /**
     * Warm up by opening a file and waiting for project load
     */
    warmup(entryFiles?: string[]): Promise<boolean>;
    /**
     * Find default entry files
     */
    private findEntryFiles;
    /**
     * Check if warmed up
     */
    isWarmedUp(): boolean;
    /**
     * Get hover info (quick info)
     */
    hover(filePath: string, line: number, character: number): Promise<LSPHoverResult>;
    /**
     * Go to definition
     */
    goToDefinition(filePath: string, line: number, character: number): Promise<LSPDefinitionResult>;
    /**
     * Find all references
     */
    findReferences(filePath: string, line: number, character: number): Promise<LSPReferencesResult>;
    /**
     * Get document symbols
     */
    documentSymbols(filePath: string): Promise<LSPDocumentSymbolsResult>;
    /**
     * Flatten navigation tree into symbols
     */
    private flattenNavTree;
    /**
     * Map tsserver kind to LSP kind
     */
    private mapSymbolKind;
    /**
     * Search workspace for symbols
     */
    workspaceSymbols(query: string): Promise<LSPWorkspaceSymbolsResult>;
    /**
     * Shutdown the server
     */
    shutdown(): Promise<void>;
}
//# sourceMappingURL=tsserver-client.d.ts.map