/**
 * Translate a weapon-keyword catalog entry into the Buff stack it contributes
 * for a given reference-site parameter set and engine context.
 *
 * Two paths converge here:
 *
 * 1. **DSL walk**, for keywords whose catalog `effect` is non-null
 *    (`twin-linked`, `heavy`). The walker handles a deliberately small subset
 *    of nodes — `re-roll`, `roll-modifier`, `conditional`-on-the-conditions
 *    the engine knows about — and produces `Buff`s with
 *    `source.kind = "weapon-keyword"`.
 *
 * 2. **Id dispatch**, for the eight rules whose catalog `effect` is null
 *    because the DSL has no primitive for them yet — `lethal-hits`,
 *    `sustained-hits`, `devastating-wounds`, `anti`, `melta`, `rapid-fire`,
 *    `torrent`, `ignores-cover`. These are surfaced as `extra-keyword` buffs
 *    so the engine can read them out of `ResolvedModifiers.extraKeywords`
 *    and dispatch its math directly.
 *
 * Unrecognised nodes drop silently in M1 — diagnostic surfacing belongs to
 * M2's broader ability translator.
 */
import type { Buff, EngineContext } from "./buffs.js";
/**
 * Convert a single weapon-keyword reference (catalog effect + reference-site
 * parameters) into the buff contributions it makes against `context`.
 */
export declare function buffsFromKeyword(args: {
    keywordId: string;
    weaponId: string;
    effect: unknown;
    parameters?: Record<string, unknown>;
    context: EngineContext;
}): Buff[];
//# sourceMappingURL=from-keyword.d.ts.map