import type { Node, Scope } from '@maniascript/parser';
import type { CommonTokenStream } from 'antlr4ng';
type RuleReporter = (node: Node, message: string) => void;
type RuleSettings = Record<string, unknown>;
interface RuleContext {
    id: string;
    settings: RuleSettings;
    tokens: CommonTokenStream;
    report: RuleReporter;
    getScope: (node?: Node) => Scope | null;
}
type RuleActions = Record<string, (node: Node) => void>;
interface Rule {
    meta: {
        id: string;
        description: string;
        recommended?: boolean;
        settings?: RuleSettings;
    };
    create: (context: RuleContext) => RuleActions;
}
declare enum Severity {
    Off = 0,
    Warn = 1,
    Error = 2
}
declare function getSeverity(source: unknown): Severity | undefined;
declare function getSettings(source: unknown): RuleSettings;
export { type Rule, type RuleContext, type RuleSettings, Severity, getSeverity, getSettings };
