import type { AgentSession } from "@earendil-works/pi-coding-agent"; import type { SessionModel } from "../types.js"; import { type ModelUsageDescriptor, type ModelUsageStatus } from "./model-usage-status.js"; export type AppModelUsageQuery = (descriptor: ModelUsageDescriptor) => Promise; export type ModelUsageRefreshResult = "refreshed" | "unavailable" | "failed"; export type ModelUsageRefreshStart = { kind: "started"; promise: Promise; } | { kind: "in-flight"; } | { kind: "unsupported"; }; export type AppModelUsageControllerHost = { runtimeSession(): AgentSession | undefined; draftSelection?(): { model: SessionModel; thinkingLevel: string; } | undefined; render(): void; }; export declare class AppModelUsageController { private readonly host; private readonly queryUsageStatus; private activeModelKey; private readonly statuses; private readonly inFlightModelKeys; private readonly lastAttemptAt; private timer; constructor(host: AppModelUsageControllerHost, queryUsageStatus?: AppModelUsageQuery); startPolling(): void; stopPolling(): void; observeSession(session: AgentSession | undefined): void; statusLabel(): string; refreshNow(): ModelUsageRefreshStart; private tick; private refresh; private syncActiveModel; private activeStatus; private activeDescriptor; }