/* tslint:disable */
/**
 * This file was automatically generated by json-schema-to-typescript.
 * DO NOT MODIFY IT BY HAND. Instead, modify the source JSONSchema file,
 * and run json-schema-to-typescript to regenerate this file.
 */

/**
 * When multiple servers match specific document/language, the server with the highest priority will be used
 */
export type PriorityOfTheServer = number;
/**
 * The console to use for debugging problems with this extension. Allowed values are: browser, floating.
 */
export type LoggingConsoleType = 'browser' | 'floating';
/**
 * The verbosity of the console for debugging problems with this extension. Allowed values are: debug, log, warn, error.
 */
export type LoggingConsoleVerbosityLevel = 'debug' | 'log' | 'warn' | 'error';
/**
 * Whether all messages sent to and received from LSP servers should be logged into the console. To see these messages, set loggingLevel to debug or log. Note: Only messages handled by the new API will be shown.
 */
export type LogAllLSPCommunicationWithTheLSPServers = boolean;
/**
 * Whether to ask server to send logs with execution trace (for debugging). To see these messages, set loggingLevel to debug or log. Accepted values are: "off", "messages", "verbose". Servers are allowed to ignore this request.
 */
export type AskServersToSendTraceNotifications =
  | 'off'
  | 'messages'
  | 'verbose'
  | null;

/**
 * Language Server Protocol settings.
 */
export interface LanguageServers {
  language_servers?: LanguageServer;
  loggingConsole?: LoggingConsoleType;
  loggingLevel?: LoggingConsoleVerbosityLevel;
  logAllCommunication?: LogAllLSPCommunicationWithTheLSPServers;
  setTrace?: AskServersToSendTraceNotifications;
  [k: string]: any;
}
/**
 * Language-server specific configuration, keyed by implementation, e.g:
 *
 * pyls: {
 *   serverSettings: {
 *     pyls: {
 *       plugins: {
 *         pydocstyle: {
 *           enabled: true
 *         },
 *         pyflakes: {
 *           enabled: false
 *         },
 *         flake8: {
 *           enabled: true
 *         }
 *       }
 *     }
 *   }
 * }
 *
 * Alternatively, using dotted naming convention:
 *
 * pyls: {
 *   serverSettings: {
 *     "pyls.plugins.pydocstyle.enabled": true,
 *     "pyls.plugins.pyflakes.enabled": false,
 *     "pyls.plugins.flake8.enabled": true
 *   }
 * }
 */
export interface LanguageServer {
  [k: string]: LanguageServer1;
}
/**
 * Client and server configurations for a single language server
 *
 * This interface was referenced by `LanguageServer`'s JSON-Schema definition
 * via the `patternProperty` ".*".
 */
export interface LanguageServer1 {
  priority?: PriorityOfTheServer;
  serverSettings?: LanguageServerConfigurations;
  [k: string]: any;
}
/**
 * Configuration to be sent to language server over LSP when initialized: see the specific language server's documentation for more
 */
export interface LanguageServerConfigurations {
  [k: string]: any;
}
