import type { IDisposable, MonacoEditor } from 'monaco-types';
import type { CompletionItemKind } from 'vscode-languageserver-types';
export interface JSONSchema {
    id?: string;
    $id?: string;
    $schema?: string;
    url?: string;
    type?: string | string[];
    title?: string;
    closestTitle?: string;
    versions?: Record<string, string>;
    default?: unknown;
    definitions?: Record<string, JSONSchema>;
    description?: string;
    properties?: Record<string, boolean | JSONSchema>;
    patternProperties?: Record<string, boolean | JSONSchema>;
    additionalProperties?: boolean | JSONSchema;
    minProperties?: number;
    maxProperties?: number;
    dependencies?: Record<string, boolean | JSONSchema | string[]>;
    items?: (boolean | JSONSchema)[] | boolean | JSONSchema;
    minItems?: number;
    maxItems?: number;
    uniqueItems?: boolean;
    additionalItems?: boolean | JSONSchema;
    pattern?: string;
    minLength?: number;
    maxLength?: number;
    minimum?: number;
    maximum?: number;
    exclusiveMinimum?: boolean | number;
    exclusiveMaximum?: boolean | number;
    multipleOf?: number;
    required?: string[];
    $ref?: string;
    anyOf?: (boolean | JSONSchema)[];
    allOf?: (boolean | JSONSchema)[];
    oneOf?: (boolean | JSONSchema)[];
    not?: boolean | JSONSchema;
    enum?: unknown[];
    format?: string;
    const?: unknown;
    contains?: boolean | JSONSchema;
    propertyNames?: boolean | JSONSchema;
    examples?: unknown[];
    $comment?: string;
    if?: boolean | JSONSchema;
    then?: boolean | JSONSchema;
    else?: boolean | JSONSchema;
    defaultSnippets?: {
        label?: string;
        description?: string;
        markdownDescription?: string;
        type?: string;
        suggestionKind?: CompletionItemKind;
        sortText?: string;
        body?: unknown;
        bodyText?: string;
    }[];
    errorMessage?: string;
    patternErrorMessage?: string;
    deprecationMessage?: string;
    enumDescriptions?: string[];
    markdownEnumDescriptions?: string[];
    markdownDescription?: string;
    doNotSuggest?: boolean;
    allowComments?: boolean;
    schemaSequence?: JSONSchema[];
    filePatternAssociation?: string;
}
export interface SchemasSettings {
    /**
     * A `Uri` file match which will trigger the schema validation. This may be a glob or an exact
     * path.
     *
     * @example '.gitlab-ci.yml'
     * @example 'file://**\/.github/actions/*.yaml'
     */
    fileMatch: string[];
    /**
     * The JSON schema which will be used for validation. If not specified, it will be downloaded from
     * `uri`.
     */
    schema?: JSONSchema;
    /**
     * The source URI of the JSON schema. The JSON schema will be downloaded from here if no schema
     * was supplied. It will also be displayed as the source in hover tooltips.
     */
    uri: string;
}
export interface FormatterOptions {
    /**
     * Print spaces between brackets in objects.
     *
     * @default true
     */
    readonly bracketSpacing?: boolean;
    /**
     * Enable/disable default YAML formatter.
     *
     * @default true
     */
    readonly enable?: boolean;
    /**
     * Specify the line length that the printer will wrap on.
     *
     * @default 80
     */
    readonly printWidth?: number;
    /**
     * - `always`: wrap prose if it exceeds the print width.
     * - `never`: never wrap the prose,
     * - `preserve`: wrap prose as-is.
     *
     * @default `'preserve'`
     */
    readonly proseWrap?: 'always' | 'never' | 'preserve';
    /**
     * @default false
     */
    readonly singleQuote?: boolean;
    /**
     * Specify if trailing commas should be used in JSON-like segments of the YAML.
     *
     * @default true
     */
    readonly trailingComma?: boolean;
}
export interface MonacoYamlOptions {
    /**
     * If set, enable code lens.
     *
     * @default false
     */
    readonly codeLens?: boolean;
    /**
     * If set, enable schema based autocompletion.
     *
     * @default true
     */
    readonly completion?: boolean;
    /**
     * A list of custom tags.
     *
     * @default []
     */
    readonly customTags?: string[];
    /**
     * Globally set `additionalProperties` to false if `additionalProperties` is not set and if
     * `schema.type` is `object`. So if is true, no extra properties are allowed inside yaml.
     *
     * @default false
     */
    readonly disableAdditionalProperties?: boolean;
    /**
     * Disable adding not required properties with default values into completion text.
     *
     * @default false
     */
    readonly disableDefaultProperties?: boolean;
    /**
     * If set, the schema service will load schema content on-demand.
     *
     * @default false
     */
    readonly enableSchemaRequest?: boolean;
    /**
     * Control the use of flow mappings.
     *
     * @default 'allow'
     */
    readonly flowMapping?: 'allow' | 'forbid';
    /**
     * Control the use of flow sequences.
     *
     * @default 'allow'
     */
    readonly flowSequence?: 'allow' | 'forbid';
    /**
     * Formatting options.
     */
    readonly format?: FormatterOptions;
    /**
     * If set, enable hover tips based the JSON schema.
     *
     * @default true
     */
    readonly hover?: boolean;
    /**
     * Enable/disable hover feature for anchors
     *
     * @default true
     */
    readonly hoverAnchor?: boolean;
    /**
     * Enable/disable showing the schema source in hover tooltips.
     *
     * @default true
     */
    readonly hoverSchemaSource?: boolean;
    /**
     * Default indentation size
     *
     * @default '  '
     */
    readonly indentation?: string;
    /**
     * If true, a different diffing algorithm is used to generate error messages.
     *
     * @default false
     */
    readonly isKubernetes?: boolean;
    /**
     * If set enforce alphabetical ordering of keys in mappings.
     *
     * @default false
     */
    readonly keyOrdering?: boolean;
    /**
     * If true, the user must select some parent skeleton first before autocompletion starts to
     * suggest the rest of the properties. When yaml object is not empty, autocompletion ignores
     * this setting and returns all properties and skeletons.
     *
     * @default false
     */
    readonly parentSkeletonSelectedFirst?: boolean;
    /**
     * A list of known schemas and/or associations of schemas to file names.
     *
     * @default []
     */
    readonly schemas?: SchemasSettings[];
    /**
     * If set, the validator will be enabled and perform syntax validation as well as schema
     * based validation.
     *
     * @default true
     */
    readonly validate?: boolean;
    /**
     * Default yaml lang version.
     *
     * @default '1.2'
     */
    readonly yamlVersion?: '1.1' | '1.2';
}
export interface MonacoYaml extends IDisposable {
    /**
     * Recondigure `monaco-yaml`.
     */
    update: (options: MonacoYamlOptions) => Promise<undefined>;
    /**
     * Get the current configuration of `monaco-yaml`.
     */
    getOptions: () => MonacoYamlOptions;
}
/**
 * Configure `monaco-yaml`.
 *
 * > **Note**: There may only be one configured instance of `monaco-yaml` at a time.
 *
 * @param monaco
 *   The Monaco editor module. Typically you get this by importing `monaco-editor`. Third party
 *   integrations often expose it as the global `monaco` variable instead.
 * @param options
 *   Options to configure `monaco-yaml`
 * @returns
 *   A disposable object that can be used to update `monaco-yaml`
 */
export declare function configureMonacoYaml(monaco: MonacoEditor, options?: MonacoYamlOptions): MonacoYaml;
//# sourceMappingURL=index.d.ts.map