import type { ResolvedRole } from '../config.js'; export interface LoopConfig { roles?: string[]; interval?: string; prompt?: string; enabled?: boolean; initial_delay?: string; jitter?: string; } /** Agent Template-local loops are implicitly scoped to the temporary agent. */ export type AgentLoopConfig = Omit; export type AgentLoopsConfig = Record; export interface ResolvedLoop { name: string; selectors: string[]; roleNames: string[]; intervalMs: number; prompt: string; promptBytes: number; promptHash: string; enabled: boolean; initialDelayMs: number; jitterMs: number; sourceFile: string; } export interface ResolvedRoleLoop extends Omit { role: string; definitionHash: string; } export declare function resolveLoops(block: unknown, baseFile: string, roles: ResolvedRole[], vars: Record, options?: { assertTrustedSource?: boolean; }): { loops: ResolvedLoop[]; byRole: Map; }; /** Resolve the canonical Agent Template schema without inventing a second loop language. */ export declare function resolveAgentLoops(block: unknown, role: ResolvedRole, sourceFile?: string): ResolvedRoleLoop[]; /** Fully explicit private snapshot form; prompt text is retained for deterministic recovery. */ export declare function canonicalAgentLoops(loops: ResolvedRoleLoop[]): AgentLoopsConfig;