import type { ESTree } from "meriyah";
import { type SourceArrayLocation } from "./utils/toArrayLocation.js";
export type OptionalWarningName = "synchronous-io";
export type WarningName = "parsing-error" | "encoded-literal" | "unsafe-regex" | "unsafe-stmt" | "short-identifiers" | "suspicious-literal" | "suspicious-file" | "obfuscated-code" | "weak-crypto" | "shady-link" | "unsafe-command" | "unsafe-import" | "serialize-environment" | "data-exfiltration" | OptionalWarningName;
export interface Warning<T = WarningName> {
    kind: T | (string & {});
    file?: string;
    value: string | null;
    source: string;
    location: null | SourceArrayLocation | SourceArrayLocation[];
    i18n: string;
    severity: "Information" | "Warning" | "Critical";
    experimental?: boolean;
}
export declare const warnings: Readonly<{
    "parsing-error": {
        i18n: string;
        severity: "Information";
    };
    "unsafe-import": {
        i18n: string;
        severity: "Warning";
    };
    "unsafe-regex": {
        i18n: string;
        severity: "Warning";
    };
    "unsafe-stmt": {
        code: string;
        i18n: string;
        severity: "Warning";
    };
    "encoded-literal": {
        i18n: string;
        severity: "Information";
    };
    "short-identifiers": {
        i18n: string;
        severity: "Warning";
    };
    "suspicious-literal": {
        i18n: string;
        severity: "Warning";
    };
    "suspicious-file": {
        i18n: string;
        severity: "Critical";
        experimental: false;
    };
    "obfuscated-code": {
        i18n: string;
        severity: "Critical";
        experimental: true;
    };
    "weak-crypto": {
        i18n: string;
        severity: "Information";
        experimental: false;
    };
    "shady-link": {
        i18n: string;
        severity: "Warning";
        experimental: false;
    };
    "unsafe-command": {
        i18n: string;
        severity: "Warning";
        experimental: true;
    };
    "synchronous-io": {
        i18n: string;
        severity: "Warning";
        experimental: true;
    };
    "serialize-environment": {
        i18n: string;
        severity: "Warning";
        experimental: false;
    };
    "data-exfiltration": {
        i18n: string;
        severity: "Warning";
        experimental: false;
    };
}>;
export interface GenerateWarningOptions {
    location?: ESTree.SourceLocation | null;
    file?: string | null;
    value: string | null;
    source?: string;
}
export declare function generateWarning<T extends WarningName>(kind: T, options: GenerateWarningOptions): Warning<T>;
//# sourceMappingURL=warnings.d.ts.map