/**
 * Subagent system-prompt assembly.
 *
 * A forked subagent starts FRESH (no parent conversation by default), but it
 * still needs three things the parent has, injected by policy:
 *   1. Persona — who it is and how it should behave (agent definition).
 *   2. Project rules — the same .qlogicagent/rules + AGENTS.md the parent loads.
 *   3. Memory — the lightweight memory INDEX (user preferences / project facts).
 *
 * Without these the subagent produces off-convention work and ignores standing
 * user/project context. This mirrors Claude Code's "compose a delegation
 * message" model: the brief is the prompt, the standing context is injected here.
 */
import type { HookRegistry } from "../../contracts/hooks.js";
import type { AgentDefinition } from "../../orchestration/subagent/agent-registry.js";
export interface SubagentSystemPromptInput {
    /** Behavioral framing — who the subagent is and how it should act. */
    persona: string;
    /** Project root, for loading rules/AGENTS (only when includeRules). */
    cwd?: string;
    /** Hook registry (instruction loader uses it). */
    hooks?: HookRegistry;
    /** Lightweight memory INDEX block (memdir.getIndexForPrompt()), or null. */
    memoryIndex: string | null;
    /**
     * Inject project rules / AGENTS. True for the in-process fork (it has no turn
     * pipeline of its own). False for a subprocess team member, which assembles its
     * own rules from its worktree — skip to avoid duplicating them.
     */
    includeRules?: boolean;
}
/** Build the persona section for a built-in fork agent (type + behavioral suffix). */
export declare function personaForAgentDefinition(agentDef: AgentDefinition): string;
/** Build the persona section for a team member (name + role + coordination note). */
export declare function personaForTeamMember(name: string, role: string): string;
/**
 * Shared subagent context assembly — used by BOTH the in-process fork (agent tool)
 * and the subprocess team member, so their standing context is identical:
 *   1. persona   — who the subagent is / how it behaves (caller-supplied)
 *   2. project rules / AGENTS — the same getInstructions the parent loads
 *   3. memory    — the lightweight memdir INDEX (preferences / project facts)
 *
 * Returns undefined when there is genuinely nothing to inject.
 */
export declare function buildSubagentSystemPrompt(input: SubagentSystemPromptInput): Promise<string | undefined>;
