import { type ResolvedArtifacts } from "@pulsemcp/air-core"; /** * Read every active hook's source HOOK.json and deep-merge the consumer's * `x-config` (declared in `hooks.json`) into the file's own `x-config`. * Returns a new `ResolvedArtifacts` whose `hooks[*]["x-config"]` is the * fully-merged value — what `air resolve --json` shows and what should be * written to the materialized HOOK.json. * * Hooks whose source HOOK.json is missing or unparseable are returned with * just the consumer's `x-config` (or undefined) — the consumer's intent is * preserved even when the source is unreachable. * * The original HookEntry objects are not mutated. */ export declare function materializeHookXConfig(artifacts: ResolvedArtifacts): ResolvedArtifacts; /** * After the adapter has copied a hook directory into the agent's working * tree, write the merged `x-config` back into the materialized HOOK.json so * subsequent transforms (e.g. `${VAR}` interpolation) operate on the fully * composed config. * * Each `hookPath` is a directory; its basename is the short ID. When * `activations` is provided (a short→qualified mapping the adapter emits), * the qualified ID is used to look up the exact resolved hook entry — * disambiguating cross-scope shortname collisions. Without `activations`, * falls back to a short-id lookup that picks the first matching entry. * * Hooks without an `x-config` on either side are skipped — the verbatim copy * made by the adapter is correct. */ export declare function writeMergedHookXConfigs(hookPaths: string[], artifacts: ResolvedArtifacts, activations?: Array<{ short: string; qualified: string; }>): void; //# sourceMappingURL=hook-x-config.d.ts.map