/**
 * Tick driver — pure data layer for the `unloads_when` evaluator.
 *
 * The runtime maintains one `TickState` per active skill. As Events flow
 * through the dispatcher, `advanceTick` updates that state so the evaluator
 * (`unload_conditions.ts`) can answer "should this skill unload?" without
 * the dispatcher having to bake event-shape knowledge into every check.
 *
 * Authoritative source: `docs/opensquid-real-design.md` §"Skill format" +
 * memory `feedback_workflow_cycle` (turn = UserPromptSubmit cycle).
 *
 * Turn definition — pinned: a "turn" is ONE UserPromptSubmit event. Tool
 * calls inside that turn do NOT increment the counter. This matches the
 * 7-phase workflow loop (pre-research → learn → code → test → audit →
 * post-research → fix), where the boundary that matters for "idle" is
 * "did the user say anything new" — not "did the agent run a tool."
 *
 * State transitions per Event kind:
 *
 *   prompt_submit                            → turnsSinceActivation += 1
 *   stop                                     → taskCompleted = true
 *   session_end                              → sessionEnded = true
 *   tool_call                                → no-op (sub-event of a turn)
 *   schedule | webhook | inbound_channel |   → no-op (AUTO.1 trigger sources
 *   file_changed                              fire outside the prompt-submit
 *                                             turn cycle and don't mutate
 *                                             user-facing tick state)
 *
 * `resetTick` puts a fresh state on the wire when a skill (re)activates —
 * the counters apply from that point forward, not from session start.
 *
 * Pure data, no I/O. Returns a NEW object on each `advanceTick` call so the
 * dispatcher can keep prior snapshots around if it wants (e.g. for diagnostic
 * dumps). The evaluator reads the latest snapshot.
 *
 * Imports from: ./types, ./unload_conditions.
 * Imported by: src/runtime/index.ts; (eventually) the dispatcher.
 */
import type { Event } from './types.js';
import type { TickState } from './unload_conditions.js';
export declare function createTick(): TickState;
export declare function advanceTick(state: Readonly<TickState>, event: Event): TickState;
export declare function resetTick(): TickState;
//# sourceMappingURL=tick.d.ts.map