// Generated by dts-bundle v0.7.3
// Dependencies for this module:
//   ../jsonc-eslint-parser
//   ../eslint
//   ../json-schema
//   ../estree
//   ../@humanwhocodes/momoa

declare module 'eslint-plugin-jsonc' {
    import type { RuleModule } from "eslint-plugin-jsonc/types";
    import * as meta from "eslint-plugin-jsonc/meta";
    import { parseForESLint, parseJSON, traverseNodes, AST, getStaticJSONValue } from "jsonc-eslint-parser";
    import type { Linter } from "eslint";
    const configs: {
        base: Linter.LegacyConfig;
        "auto-config": Linter.LegacyConfig;
        "recommended-with-json": Linter.LegacyConfig;
        "recommended-with-jsonc": Linter.LegacyConfig;
        "recommended-with-json5": Linter.LegacyConfig;
        prettier: Linter.LegacyConfig;
        all: Linter.LegacyConfig;
        "flat/base": Linter.Config[];
        "flat/recommended-with-json": Linter.Config[];
        "flat/recommended-with-jsonc": Linter.Config[];
        "flat/recommended-with-json5": Linter.Config[];
        "flat/prettier": Linter.Config[];
        "flat/all": Linter.Config[];
    };
    const rules: {
        [key: string]: RuleModule<unknown[]>;
    };
    const _default: {
        meta: typeof meta;
        configs: {
            base: Linter.LegacyConfig;
            "auto-config": Linter.LegacyConfig;
            "recommended-with-json": Linter.LegacyConfig;
            "recommended-with-jsonc": Linter.LegacyConfig;
            "recommended-with-json5": Linter.LegacyConfig;
            prettier: Linter.LegacyConfig;
            all: Linter.LegacyConfig;
            "flat/base": Linter.Config[];
            "flat/recommended-with-json": Linter.Config[];
            "flat/recommended-with-jsonc": Linter.Config[];
            "flat/recommended-with-json5": Linter.Config[];
            "flat/prettier": Linter.Config[];
            "flat/all": Linter.Config[];
        };
        rules: {
            [key: string]: RuleModule<unknown[]>;
        };
        parseForESLint: typeof parseForESLint;
        parseJSON: typeof parseJSON;
        traverseNodes: typeof traverseNodes;
        getStaticJSONValue: typeof getStaticJSONValue;
    };
    export default _default;
    export { meta, configs, rules, AST, parseForESLint, parseJSON, traverseNodes, getStaticJSONValue, };
}

declare module 'eslint-plugin-jsonc/types' {
    import type { JSONSchema4 } from "json-schema";
    import type { Rule } from "eslint";
    import type { BuiltInRuleListenerExits, BuiltInRuleListeners, RuleListener } from "jsonc-eslint-parser";
    import type { AST as ESLintAST } from "eslint";
    import type * as ESTree from "estree";
    import type { AnyNode } from "@humanwhocodes/momoa";
    export type Token = ESLintAST.Token;
    export type Comment = ESTree.Comment;
    export { RuleListener };
    export type MomoaNode = AnyNode;
    type MomoaRuleFunction<Node extends MomoaNode = never> = (node: Node) => void;
    type MomoaBuiltInRuleListeners = {
        [Node in MomoaNode as Node["type"]]?: MomoaRuleFunction<Node>;
    };
    type MomoaBuiltInRuleListenerExits = {
        [Node in MomoaNode as `${Node["type"]}:exit`]?: MomoaRuleFunction<Node>;
    };
    export type MomoaRuleListener = MomoaBuiltInRuleListeners & MomoaBuiltInRuleListenerExits;
    export type BaseRuleListener = MomoaRuleListener & BuiltInRuleListeners & BuiltInRuleListenerExits;
    export interface RuleModule<RuleOptions = unknown[]> {
        meta: RuleMetaData;
        jsoncDefineRule: PartialRuleModule<RuleOptions>;
        create(context: Rule.RuleContext & {
            options: RuleOptions;
        }): RuleListener;
    }
    export interface RuleMetaData {
        docs: {
            description: string;
            recommended: ("json" | "jsonc" | "json5")[] | null;
            url: string;
            ruleId: string;
            ruleName: string;
            default?: "error" | "warn";
            extensionRule: boolean | string | {
                plugin: string;
                url: string;
            };
            layout: boolean;
        };
        messages: {
            [messageId: string]: string;
        };
        fixable?: "code" | "whitespace";
        hasSuggestions?: boolean;
        schema: false | JSONSchema4 | JSONSchema4[];
        deprecated?: boolean;
        replacedBy?: [];
        type: "problem" | "suggestion" | "layout";
    }
    export interface PartialRuleModule<RuleOptions = unknown[]> {
        meta: PartialRuleMetaData;
        create: (context: Rule.RuleContext & {
            options: RuleOptions;
        }, params: {
            customBlock: boolean;
        }) => BaseRuleListener;
    }
    export interface PartialRuleMetaData {
        docs: {
            description: string;
            recommended: ("json" | "jsonc" | "json5")[] | null;
            default?: "error" | "warn";
            extensionRule: boolean | string | {
                plugin: string;
                url: string;
            };
            layout: boolean;
        };
        messages: {
            [messageId: string]: string;
        };
        fixable?: "code" | "whitespace";
        hasSuggestions?: boolean;
        defaultOptions?: any[];
        schema: false | JSONSchema4 | JSONSchema4[];
        deprecated?: boolean;
        replacedBy?: [];
        type: "problem" | "suggestion" | "layout";
    }
}

declare module 'eslint-plugin-jsonc/meta' {
    export const name: "eslint-plugin-jsonc";
    export const version: "2.21.1";
}

