export declare const FRONTIER_RUNTIME_WORK_AREAS: readonly ["diff", "apply", "codec", "sync", "cache", "logging"]; export type FrontierRuntimeWorkArea = (typeof FRONTIER_RUNTIME_WORK_AREAS)[number] | 'other' | (string & {}); export type FrontierRuntimeTaskPriority = 'high' | 'normal' | 'low' | number; export type FrontierRuntimeClock = () => number; export interface FrontierRuntimeBudgetOptions { clock?: FrontierRuntimeClock; startMs?: number; maxMs?: number | null; maxUnits?: number | null; } export interface FrontierRuntimeBudgetSnapshot { startMs: number; nowMs: number; deadlineMs: number; elapsedMs: number; remainingMs: number; maxUnits: number; usedUnits: number; remainingUnits: number; exhausted: boolean; } export interface FrontierRuntimeBudget { readonly startMs: number; readonly deadlineMs: number; readonly maxUnits: number; readonly usedUnits: number; now(): number; elapsedMs(): number; remainingMs(): number; remainingUnits(): number; canRun(units?: number): boolean; shouldYield(units?: number): boolean; consume(units?: number): boolean; snapshot(): FrontierRuntimeBudgetSnapshot; } export interface FrontierRuntimeScheduledTask { id: string; area: FrontierRuntimeWorkArea; priority: number; units: number; queuedAt: number; } export interface FrontierRuntimeTask { id?: string; area?: FrontierRuntimeWorkArea; priority?: FrontierRuntimeTaskPriority; units?: number; run: (budget: FrontierRuntimeBudget, task: FrontierRuntimeScheduledTask) => TValue | void; } export interface FrontierRuntimeSchedulerOptions extends FrontierRuntimeBudgetOptions { maxTasks?: number | null; areaUnitBudgets?: Readonly>; onTaskError?: (error: unknown, task: FrontierRuntimeScheduledTask) => void; } export interface FrontierRuntimeSchedulerRunOptions extends FrontierRuntimeBudgetOptions { maxTasks?: number | null; areaUnitBudgets?: Readonly>; } export interface FrontierRuntimeSchedulerSnapshot { pending: number; pendingByArea: Record; } export interface FrontierRuntimeSchedulerRunResult extends FrontierRuntimeBudgetSnapshot { completed: number; failed: number; pending: number; completedByArea: Record; failedByArea: Record; pendingByArea: Record; budgetExhausted: boolean; taskLimitReached: boolean; } export interface FrontierRuntimeScheduler { schedule(task: FrontierRuntimeTask): FrontierRuntimeScheduledTask; run(options?: FrontierRuntimeSchedulerRunOptions): FrontierRuntimeSchedulerRunResult; clear(area?: FrontierRuntimeWorkArea): number; getPendingCount(area?: FrontierRuntimeWorkArea): number; snapshot(): FrontierRuntimeSchedulerSnapshot; } export declare function createRuntimeBudget(options?: FrontierRuntimeBudgetOptions): FrontierRuntimeBudget; export declare function createRuntimeScheduler(options?: FrontierRuntimeSchedulerOptions): FrontierRuntimeScheduler; //# sourceMappingURL=runtime.d.ts.map