/**
 * `agents sessions stats` — precomputed resource-usage insights.
 *
 * The read side of #12: which skills and slash-commands do you actually invoke,
 * and which installed ones are dead weight? The write side already exists —
 * every scanned transcript's skill/`Skill`-tool + slash-command tallies land in
 * `session_resource_usage` at index time — so this is a cheap SQLite rollup, no
 * re-scan of history. A both-ends view: the most-invoked resources, and the
 * installed-but-never-invoked ones.
 *
 * Signal caveat, surfaced in help and output: only EXPLICIT invocations count
 * (slash commands + `Skill` tool calls). An auto-triggered skill (loaded by
 * description match) emits no event and reads as zero — "0" means "never
 * explicitly invoked", not "never loaded". Skill invocations are recorded for
 * Claude and Kimi (the `Skill`-tool harnesses); slash-commands are Claude-only;
 * other harnesses contribute nothing.
 */
import type { Command } from 'commander';
/** One installed resource, keyed the same way session_resource_usage stores it. */
export interface InstalledResource {
    kind: 'skill' | 'command';
    name: string;
    plugin: string | null;
    source: string | null;
}
/**
 * The both-ends "dead weight" set: installed resources whose identity
 * (kind + name — name already embeds `plugin:short`, so it matches the stored
 * invoked name) never appears in the invoked rows. Sorted kind then name.
 * Pure set-difference so it is unit-testable without touching the filesystem.
 */
export declare function diffZeroInvoked(installed: InstalledResource[], invoked: Array<{
    kind: string;
    name: string;
}>): InstalledResource[];
export declare function registerSessionsStatsCommand(sessionsCmd: Command): void;
