/**
 * mcpProcessSignatures — the precise, allow-listed signatures for MCP-server
 * processes that the {@link McpProcessReaper} is permitted to consider.
 *
 * These are NOT framework (claude/codex/gemini) processes — they are the
 * long-lived MCP-server children a session spawns (Playwright, mcp-remote,
 * instar's own stdio MCP) that survive their owning session's death and
 * accumulate for days (see `.instar/apprenticeship/codey-task-mcp-leak-reaper.md`).
 *
 * The reaper matches ONLY these exact signatures — never a broad `node`/`npm`
 * match — so an unrelated node process can never be a reap candidate. Each
 * `psGrepNeedle` is bracket-escaped so the discovery `ps … | egrep` does not
 * match its own argv.
 */
export interface McpProcessSignature {
    /** Stable id for audit trails + tests. */
    readonly id: 'playwright-mcp' | 'mcp-remote' | 'instar-mcp-stdio';
    /** Human-readable label. */
    readonly label: string;
    /**
     * Substrings that must ALL appear in the process command for a match. A
     * conjunction keeps the match tight (e.g. requires both `mcp-remote` AND
     * the npm/exec shape rather than any line mentioning "mcp").
     */
    readonly commandIncludesAll: ReadonlyArray<string>;
    /** Bracket-escaped needle for the first-stage `ps … | egrep` discovery. */
    readonly psGrepNeedle: string;
}
export declare const MCP_PROCESS_SIGNATURES: ReadonlyArray<McpProcessSignature>;
/** The alternation passed to the discovery `egrep -i '<needle>'`. */
export declare function mcpGrepAlternation(): string;
/**
 * Match a process command against the allow-list. Returns the matched
 * signature, or null when the command is not a recognized MCP-server process.
 * Pure — exported for unit tests of both the match and the non-match side.
 */
export declare function matchMcpSignature(command: string, signatures?: ReadonlyArray<McpProcessSignature>): McpProcessSignature | null;
//# sourceMappingURL=mcpProcessSignatures.d.ts.map