/**
 * Prometheus metrics factory for SDK agents.
 *
 * Promoted from forge/src/agents/shared/metrics.ts (Vague 1.B.4).
 *
 * prom-client is an optional peer dependency. If absent, all metrics are
 * no-op stubs so consumers that do not use Prometheus can still import this
 * module without errors.
 *
 * @public @since 0.18.0
 */
type Registry = import("prom-client").Registry;
type Counter<L extends string> = import("prom-client").Counter<L>;
type Histogram<L extends string> = import("prom-client").Histogram<L>;
/**
 * Standard metrics exposed by every SDK agent.
 *
 * Label sets follow Prometheus conventions: snake_case, no spaces.
 *
 * @public
 */
export interface AgentMetrics {
    /** Incremented when an OODA cycle begins. */
    cycleStarted: Counter<"agent_id">;
    /** Incremented when an OODA cycle finishes; `outcome` = "success" | "error" | "skipped". */
    cycleCompleted: Counter<"agent_id" | "outcome">;
    /** Duration of an OODA cycle by phase ("observe"|"orient"|"decide"|"act"|"total"). */
    cycleDuration: Histogram<"agent_id" | "phase">;
    /** Incremented when a HITL approval request is sent. */
    hitlRequested: Counter<"agent_id">;
    /** Incremented when a HITL request resolves; `decision` = "approved" | "rejected" | "timeout". */
    hitlResolved: Counter<"agent_id" | "decision">;
    /** Incremented for every LLM API call attempted. */
    llmCallCount: Counter<"agent_id" | "provider">;
    /** Total tokens used; `direction` = "input" | "output". */
    llmTokensUsed: Counter<"agent_id" | "provider" | "direction">;
    /** Cumulative LLM cost in USD (Counter, never resets). */
    llmCostUsd: Counter<"agent_id" | "provider">;
}
/**
 * Options for `createAgentMetrics`.
 *
 * @public
 */
export interface CreateAgentMetricsOptions {
    /**
     * prom-client Registry to register metrics on.
     * Defaults to a fresh isolated Registry per call so multiple consumers do
     * not collide on the global default registry.
     * Pass your own Registry to aggregate with other metrics.
     */
    registry?: Registry;
    /**
     * Metric name prefix (must end with `_`).
     * @default "agent_"
     * @example "forge_"
     */
    prefix?: string;
}
/**
 * Create a set of standard Prometheus metrics for an SDK agent.
 *
 * If prom-client is not installed (optional peer dependency), returns no-op
 * stubs so the call site does not need to handle `null`.
 *
 * @example
 * ```ts
 * import { createAgentMetrics } from "@vauban-org/agent-sdk/metrics";
 *
 * const m = createAgentMetrics({ prefix: "forge_" });
 * m.cycleStarted.inc({ agent_id: "my-agent" });
 * ```
 *
 * @public
 */
export declare function createAgentMetrics(opts?: CreateAgentMetricsOptions): AgentMetrics;
export type { Registry };
//# sourceMappingURL=create-agent-metrics.d.ts.map