/*!
 * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors
 * SPDX-License-Identifier: AGPL-3.0-or-later
 */
import type { Rule } from 'eslint';
type TemplateVisitor = {
    [key: string]: (...args: unknown[]) => void;
};
type TemplateVisitorOptions = {
    templateBodyTriggerSelector: 'Program' | 'Program:exit';
};
/**
 * Register the given visitor to parser services.
 * If the parser service of `vue-eslint-parser` was not found,
 * this generates a warning.
 *
 * @param context - The rule context to use parser services.
 * @param templateBodyVisitor - The visitor to traverse the template body.
 * @param scriptVisitor - The visitor to traverse the script.
 * @param options - The options.
 *
 * @return The merged visitor.
 * @see https://github.com/vuejs/eslint-plugin-vue/blob/745fd4e1f3719c3a2f93bd3531da5e886c16f008/lib/utils/index.js#L2281-L2315
 */
export declare function defineTemplateBodyVisitor(context: Rule.RuleContext, templateBodyVisitor: TemplateVisitor, scriptVisitor?: Rule.RuleListener, options?: TemplateVisitorOptions): Rule.RuleListener;
export {};
