import type { SkillCommandSpec } from "../agents/skills.js";
import type { SymiConfig } from "../config/config.js";
import { type SessionEntry, type SessionScope } from "../config/sessions.js";
import type { MediaUnderstandingDecision } from "../media-understanding/types.js";
import { formatTokenCount as formatTokenCountShared } from "../utils/usage-format.js";
import type { ElevatedLevel, ReasoningLevel, ThinkLevel, VerboseLevel } from "./thinking.js";
type AgentDefaults = NonNullable<NonNullable<SymiConfig["agents"]>["defaults"]>;
type AgentConfig = Partial<AgentDefaults> & {
    model?: AgentDefaults["model"] | string;
};
export declare const formatTokenCount: typeof formatTokenCountShared;
type QueueStatus = {
    mode?: string;
    depth?: number;
    debounceMs?: number;
    cap?: number;
    dropPolicy?: string;
    showDetails?: boolean;
};
type StatusArgs = {
    config?: SymiConfig;
    agent: AgentConfig;
    agentId?: string;
    sessionEntry?: SessionEntry;
    sessionKey?: string;
    parentSessionKey?: string;
    sessionScope?: SessionScope;
    sessionStorePath?: string;
    groupActivation?: "mention" | "always";
    resolvedThink?: ThinkLevel;
    resolvedVerbose?: VerboseLevel;
    resolvedReasoning?: ReasoningLevel;
    resolvedElevated?: ElevatedLevel;
    modelAuth?: string;
    activeModelAuth?: string;
    usageLine?: string;
    timeLine?: string;
    queue?: QueueStatus;
    mediaDecisions?: ReadonlyArray<MediaUnderstandingDecision>;
    subagentsLine?: string;
    engineLine?: string;
    hardwareLine?: string;
    /**
     * Instance-derived USD cost from the cost subsystem (Phase 3). When the
     * raw per-token rate yields $0 and this is set, the cost line displays
     * this value instead, with a "(self-hosted)" tag.
     */
    costOverrideUsd?: number;
    /**
     * Suffix appended to the cost line for benchmark comparison (Phase 4).
     * Example: "vs Claude Sonnet 4.6 would be $0.2320 (save 93%)".
     */
    costLineSuffix?: string;
    includeTranscriptUsage?: boolean;
    now?: number;
};
export declare const formatContextUsageShort: (total: number | null | undefined, contextTokens: number | null | undefined) => string;
export declare function buildStatusMessage(args: StatusArgs): string;
export declare function buildHelpMessage(cfg?: SymiConfig): string;
export type CommandsMessageOptions = {
    page?: number;
    surface?: string;
};
export type CommandsMessageResult = {
    text: string;
    totalPages: number;
    currentPage: number;
    hasNext: boolean;
    hasPrev: boolean;
};
export declare function buildCommandsMessage(cfg?: SymiConfig, skillCommands?: SkillCommandSpec[], options?: CommandsMessageOptions): string;
export declare function buildCommandsMessagePaginated(cfg?: SymiConfig, skillCommands?: SkillCommandSpec[], options?: CommandsMessageOptions): CommandsMessageResult;
export {};
