/**
 * @fileoverview Tool-specific lint rules.
 * Validates tool definitions against MCP spec and framework conventions.
 * @module src/linter/rules/tool-rules
 */
import type { LintDiagnostic } from '../types.js';
import { type PortabilityOptions } from './portability-rules.js';
/**
 * Runs all lint rules against a single tool definition.
 * Accepts `unknown` to catch structural issues before type narrowing.
 */
export declare function lintToolDefinition(def: unknown, portability?: PortabilityOptions): LintDiagnostic[];
/** Validates that auth scopes are well-formed (array of non-empty strings). */
export declare function lintAuthScopes(auth: unknown, definitionType: LintDiagnostic['definitionType'], definitionName: string): LintDiagnostic[];
/** Options for the canvas-consumer-missing cross-definition rule. */
export interface CanvasOptions {
    /** Additional tool names accepted as consumers. `false` disables the rule. */
    canvasConsumers?: ReadonlyArray<string> | false;
}
/**
 * Cross-definition check: warns when a tool's output schema has a top-level
 * `canvas_id` or `canvasId` field, but no same-server consumer tool (a tool
 * whose name matches `*_dataframe_query` or the `canvasConsumers` list) is
 * registered. A canvas token with no query path is unreachable dead output.
 */
export declare function lintCanvasConsumerPairing(tools: unknown[], options?: CanvasOptions): LintDiagnostic[];
/**
 * Cross-definition check: verifies that every tool declaring `_meta.ui.resourceUri`
 * has a matching resource registered with that URI template.
 */
export declare function lintAppToolResourcePairing(tools: unknown[], resources: unknown[]): LintDiagnostic[];
//# sourceMappingURL=tool-rules.d.ts.map