/**
 * Skill Learning Gate -- processes pending built-in skill updates in a focused
 * agent pass, isolated from normal message-handling.
 *
 * When a skill has been locally modified the auto-updater cannot safely
 * overwrite it. Instead, it writes all new skill files to a snapshot
 * directory (`pending-skill-updates/{name}/`). On the next wake cycle,
 * if any such snapshots exist, the agent enters Learning Mode:
 *
 *  1. The main loop sets `agentState.learning = true` and calls this gate.
 *     No proactive owner notification is sent on gate entry; if the user
 *     sends a message during the learning session, the InterruptHandler
 *     (seeing `agentState.learning`) acknowledges via the fast responder
 *     and requeues the message instead of injecting it.
 *  2. Run a single focused Claude session that reviews one pending update,
 *     merges it into the installed skill, and deletes the snapshot when done.
 *  3. Return so the main loop can resume normal message handling.
 *     If more skills are pending, they will be processed in subsequent cycles
 *     (one skill per wake cycle, to keep the context focused).
 */
import type { WakeCycleRunner } from "./wake-cycle-runner.js";
/**
 * Check whether Learning Mode should run. Returns true if there are pending
 * skill updates with remaining attempts, false otherwise.
 *
 * Skills that have exceeded the attempt limit are individually cleared so
 * other pending skills can still be learned. Cleared snapshots will be
 * re-created on the next restart by `installBuiltinSkills()`.
 */
export declare function hasPendingSkillLearning(): boolean;
/**
 * Run the Skill Learning Gate.
 *
 * Processes exactly **one** pending skill update per invocation. The main
 * loop calls this gate repeatedly (once per wake cycle) until all pending
 * updates are consumed. This one-at-a-time approach keeps the agent
 * context focused and avoids confusion from merging multiple skills
 * simultaneously.
 *
 * @param cycleRunner   The wake-cycle runner used to execute the learning session
 */
export declare function runSkillLearningGate(cycleRunner: WakeCycleRunner): Promise<void>;
//# sourceMappingURL=skill-learning-gate.d.ts.map