1import { RequestHandler } from 'vscode-jsonrpc';
2import { TextDocumentIdentifier, uinteger, FoldingRange } from 'vscode-languageserver-types';
3import { ProtocolRequestType } from './messages';
4import { TextDocumentRegistrationOptions, StaticRegistrationOptions, PartialResultParams, WorkDoneProgressParams, WorkDoneProgressOptions } from './protocol';
5export interface FoldingRangeClientCapabilities {
6    /**
7     * Whether implementation supports dynamic registration for folding range providers. If this is set to `true`
8     * the client supports the new `FoldingRangeRegistrationOptions` return value for the corresponding server
9     * capability as well.
10     */
11    dynamicRegistration?: boolean;
12    /**
13     * The maximum number of folding ranges that the client prefers to receive per document. The value serves as a
14     * hint, servers are free to follow the limit.
15     */
16    rangeLimit?: uinteger;
17    /**
18     * If set, the client signals that it only supports folding complete lines. If set, client will
19     * ignore specified `startCharacter` and `endCharacter` properties in a FoldingRange.
20     */
21    lineFoldingOnly?: boolean;
22}
23export interface FoldingRangeOptions extends WorkDoneProgressOptions {
24}
25export interface FoldingRangeRegistrationOptions extends TextDocumentRegistrationOptions, FoldingRangeOptions, StaticRegistrationOptions {
26}
27/**
28 * Enum of known range kinds
29 */
30export declare enum FoldingRangeKind {
31    /**
32     * Folding range for a comment
33     */
34    Comment = "comment",
35    /**
36     * Folding range for a imports or includes
37     */
38    Imports = "imports",
39    /**
40     * Folding range for a region (e.g. `#region`)
41     */
42    Region = "region"
43}
44/**
45 * Parameters for a [FoldingRangeRequest](#FoldingRangeRequest).
46 */
47export interface FoldingRangeParams extends WorkDoneProgressParams, PartialResultParams {
48    /**
49     * The text document.
50     */
51    textDocument: TextDocumentIdentifier;
52}
53/**
54 * A request to provide folding ranges in a document. The request's
55 * parameter is of type [FoldingRangeParams](#FoldingRangeParams), the
56 * response is of type [FoldingRangeList](#FoldingRangeList) or a Thenable
57 * that resolves to such.
58 */
59export declare namespace FoldingRangeRequest {
60    const method: 'textDocument/foldingRange';
61    const type: ProtocolRequestType<FoldingRangeParams, FoldingRange[] | null, FoldingRange[], any, FoldingRangeRegistrationOptions>;
62    type HandlerSignature = RequestHandler<FoldingRangeParams, FoldingRange[] | null, void>;
63}
64