/**
 * ACP Usage Tracker — 3-tier token usage tracking for external ACP agents.
 *
 * Tier 1: Real-time `usage_update` notifications (preferred).
 * Tier 2: Per-turn `PromptResponse.usage` fallback.
 * Tier 3: Graceful degradation — no usage data, no budget enforcement.
 *
 * The tracker prevents double-counting when an agent sends both
 * usage_update notifications AND prompt response usage.
 */
import type { AcpUsageUpdatePayload, AcpPromptResponseUsage } from "../../protocol/wire/acp-agent-management.js";
export interface AccumulatedUsage {
    inputTokens: number;
    outputTokens: number;
    totalTokens: number;
    cachedReadTokens: number;
    thoughtTokens: number;
    /** Total cost (USD), if reported. */
    cost: number;
    /** Whether at least one usage_update was received (Tier 1 active). */
    hasTier1: boolean;
    /** Number of turns processed (Tier 2 fallback). */
    turnCount: number;
}
export declare class AcpUsageTracker {
    private usage;
    /**
     * Tier 1: Handle a `usage_update` notification from ACP agent.
     * Sets the hasTier1 flag to prevent double-counting from Tier 2.
     */
    onUsageUpdate(payload: AcpUsageUpdatePayload): void;
    /**
     * Tier 2: Handle per-turn usage from PromptResponse.
     * Only applied if Tier 1 is NOT active (prevents double-counting).
     */
    onPromptResponseUsage(usage: AcpPromptResponseUsage | undefined): void;
    /** Get the current accumulated usage snapshot. */
    getUsage(): Readonly<AccumulatedUsage>;
    /** Reset all counters. */
    reset(): void;
    /**
     * Check whether we have any usage data.
     * Returns false in Tier 3 (graceful degradation).
     */
    hasData(): boolean;
}
