/**
 * Start LSP server on stdio
 */
export declare function startLSPServer(): void;
/**
 * Create a simple file watcher that emits diagnostics
 */
export declare function createFileWatcher(server: DtsxLanguageServer, onDiagnostics: (uri: string, diagnostics: Diagnostic[]) => void): (filePath: string) => void;
/**
 * LSP message types
 */
export declare interface LSPMessage {
  jsonrpc: '2.0'
  id?: number | string
  method?: string
  params?: unknown
  result?: unknown
  error?: LSPError
}
export declare interface LSPError {
  code: number
  message: string
  data?: unknown
}
/**
 * LSP initialization params
 */
export declare interface InitializeParams {
  processId: number | null
  rootUri: string | null
  capabilities: ClientCapabilities
}
export declare interface ClientCapabilities {
  textDocument?: {
    synchronization?: {
      dynamicRegistration?: boolean
      willSave?: boolean
      didSave?: boolean
    }
    hover?: {
      dynamicRegistration?: boolean
      contentFormat?: string[]
    }
    completion?: {
      dynamicRegistration?: boolean
      completionItem?: {
        snippetSupport?: boolean
        documentationFormat?: string[]
      }
    }
    definition?: {
      dynamicRegistration?: boolean
    }
    diagnostic?: {
      dynamicRegistration?: boolean
    }
  }
  workspace?: {
    workspaceFolders?: boolean
    configuration?: boolean
  }
}
export declare interface ServerCapabilities {
  textDocumentSync?: number
  hoverProvider?: boolean
  completionProvider?: {
    triggerCharacters?: string[]
    resolveProvider?: boolean
  }
  definitionProvider?: boolean
  referencesProvider?: boolean
  renameProvider?: boolean | { prepareProvider?: boolean }
  documentSymbolProvider?: boolean
  workspaceSymbolProvider?: boolean
  codeActionProvider?: boolean | { codeActionKinds?: string[] }
  signatureHelpProvider?: {
    triggerCharacters?: string[]
    retriggerCharacters?: string[]
  }
  documentHighlightProvider?: boolean
  documentFormattingProvider?: boolean
  diagnosticProvider?: {
    interFileDependencies: boolean
    workspaceDiagnostics: boolean
  }
}
/**
 * Text document item
 */
export declare interface TextDocumentItem {
  uri: string
  languageId: string
  version: number
  text: string
}
/**
 * Position in a text document
 */
export declare interface Position {
  line: number
  character: number
}
/**
 * Range in a text document
 */
export declare interface Range {
  start: Position
  end: Position
}
/**
 * Diagnostic message
 */
export declare interface Diagnostic {
  range: Range
  severity?: LspDiagnosticSeverity
  code?: string | number
  source?: string
  message: string
}
/**
 * Hover response
 */
export declare interface Hover {
  contents: string | { kind: string, value: string }
  range?: Range
}
/**
 * Location for go-to-definition
 */
export declare interface Location {
  uri: string
  range: Range
}
/**
 * Document symbol
 */
export declare interface DocumentSymbol {
  name: string
  detail?: string
  kind: SymbolKind
  range: Range
  selectionRange: Range
  children?: DocumentSymbol[]
}
/**
 * Workspace symbol
 */
export declare interface WorkspaceSymbol {
  name: string
  kind: SymbolKind
  location: Location
  containerName?: string
}
/**
 * Code action
 */
export declare interface CodeAction {
  title: string
  kind?: string
  diagnostics?: Diagnostic[]
  isPreferred?: boolean
  edit?: WorkspaceEdit
  command?: Command
}
/**
 * Workspace edit
 */
export declare interface WorkspaceEdit {
  changes?: Record<string, TextEdit[]>
}
/**
 * Text edit
 */
export declare interface TextEdit {
  range: Range
  newText: string
}
/**
 * Command
 */
export declare interface Command {
  title: string
  command: string
  arguments?: unknown[]
}
/**
 * Signature help
 */
export declare interface SignatureHelp {
  signatures: SignatureInformation[]
  activeSignature?: number
  activeParameter?: number
}
/**
 * Signature information
 */
export declare interface SignatureInformation {
  label: string
  documentation?: string | { kind: string, value: string }
  parameters?: ParameterInformation[]
}
/**
 * Parameter information
 */
export declare interface ParameterInformation {
  label: string | [number, number]
  documentation?: string | { kind: string, value: string }
}
/**
 * Document highlight
 */
export declare interface DocumentHighlight {
  range: Range
  kind?: DocumentHighlightKind
}
/**
 * LSP Server for dtsx
 */
export declare class DtsxLanguageServer {
  initialize(params: InitializeParams): { capabilities: ServerCapabilities };
  didOpen(params: { textDocument: TextDocumentItem }): void;
  didChange(params: { textDocument: { uri: string, version: number }, contentChanges: Array<{ text: string }> }): void;
  didClose(params: { textDocument: { uri: string } }): void;
  getDiagnostics(uri: string): Diagnostic[];
  hover(params: { textDocument: { uri: string }, position: Position }): Hover | null;
  completion(params: { textDocument: { uri: string }, position: Position }): Array<{ label: string, kind: number, detail?: string, documentation?: string }>;
  definition(params: { textDocument: { uri: string }, position: Position }): Location | null;
  references(params: { textDocument: { uri: string }, position: Position, context: { includeDeclaration: boolean } }): Location[];
  prepareRename(params: { textDocument: { uri: string }, position: Position }): { range: Range, placeholder: string } | null;
  rename(params: { textDocument: { uri: string }, position: Position, newName: string }): WorkspaceEdit | null;
  documentSymbols(params: { textDocument: { uri: string } }): DocumentSymbol[];
  workspaceSymbols(params: { query: string }): WorkspaceSymbol[];
  codeActions(params: { textDocument: { uri: string }, range: Range, context: { diagnostics: Diagnostic[] } }): CodeAction[];
  signatureHelp(params: { textDocument: { uri: string }, position: Position }): SignatureHelp | null;
  documentHighlight(params: { textDocument: { uri: string }, position: Position }): DocumentHighlight[];
  formatting(params: { textDocument: { uri: string }, options: { tabSize: number, insertSpaces: boolean } }): Promise<TextEdit[]>;
  generateDts(uri: string): string | null;
  handleMessage(message: LSPMessage): LSPMessage | null;
}
/**
 * LSP Diagnostic severity (matches LSP specification)
 */
export declare enum LspDiagnosticSeverity {
  Error = 1,
  Warning = 2,
  Information = 3,
  Hint = 4,
}
/**
 * Symbol kind enum (LSP spec)
 */
export declare enum SymbolKind {
  File = 1,
  Module = 2,
  Namespace = 3,
  Package = 4,
  Class = 5,
  Method = 6,
  Property = 7,
  Field = 8,
  Constructor = 9,
  Enum = 10,
  Interface = 11,
  Function = 12,
  Variable = 13,
  Constant = 14,
  String = 15,
  Number = 16,
  Boolean = 17,
  Array = 18,
  Object = 19,
  Key = 20,
  Null = 21,
  EnumMember = 22,
  Struct = 23,
  Event = 24,
  Operator = 25,
  TypeParameter = 26,
}
/**
 * Completion item kind enum
 */
export declare enum CompletionItemKind {
  Text = 1,
  Method = 2,
  Function = 3,
  Constructor = 4,
  Field = 5,
  Variable = 6,
  Class = 7,
  Interface = 8,
  Module = 9,
  Property = 10,
  Unit = 11,
  Value = 12,
  Enum = 13,
  Keyword = 14,
  Snippet = 15,
  Color = 16,
  File = 17,
  Reference = 18,
  Folder = 19,
  EnumMember = 20,
  Constant = 21,
  Struct = 22,
  Event = 23,
  Operator = 24,
  TypeParameter = 25,
}
/**
 * Document highlight kind
 */
export declare enum DocumentHighlightKind {
  Text = 1,
  Read = 2,
  Write = 3,
}
