import type { SessionEventsConnectionState } from "../../../hooks/use-session-events.js"; import type { SessionSummary } from "@opengeni/sdk"; import { type ReactNode } from "react"; import { type BillingClass } from "../billing-class-mark.js"; import { type SessionAdminAccessControl } from "../session/session-admin-access.js"; import type { SessionRepliesMute } from "../../lib/inbox.js"; import { type IntelligenceEffort } from "../../lib/session-tools.js"; import type { LatencyMode, Session } from "../../types.js"; export declare function SessionHeader({ session, ancestors, onOpenSchedule, lineageLoading, lineageError, connectionState, status, keyAuthRequired, onForgetAccessKey, inspectorOpen, onToggleInspector, onRename, onPin, onArchive, repliesMute, adminAccess, onOpenUsageLimit, sandboxSlot, codexSlot, accessSlot, leading, lastStartedModel, lastStartedReasoningEffort, lastStartedLatencyMode, billingClass, modelLabel, modelLogoUrl, policyLoading, }: { session: Session; /** Root-to-direct-parent order. */ ancestors: SessionSummary[]; /** * Present only when a scheduled task started this session. Opens that task on * the Schedules page so the reader can see or edit what put this here. */ onOpenSchedule?: ((() => void) | null) | undefined; lineageLoading?: boolean | undefined; lineageError?: Error | null | undefined; connectionState: SessionEventsConnectionState; status: Session["status"]; keyAuthRequired: boolean; onForgetAccessKey: () => void; inspectorOpen: boolean; /** Absent: the surface shows no session panel, so no toggle. */ onToggleInspector?: (() => void) | undefined; onRename: (workspaceId: string, sessionId: string, title: string) => Promise; onPin: (session: Session, pinned: boolean) => Promise; /** Archives or restores this root session. Absent hides the action. */ onArchive?: ((session: Session, archived: boolean) => Promise) | undefined; /** * The signed-in person's mute on this session's replies. Absent hides the * action (sub-agents, people without an inbox, servers without it). */ repliesMute?: SessionRepliesMute | null | undefined; /** * This session's admin access, when the viewer can see it on or give it. * Absent hides the shield and the menu action. */ adminAccess?: SessionAdminAccessControl | null | undefined; /** * Opens this chat's usage limit (Agent tab > Usage). Absent hides the menu * item, for servers without usage limits. */ onOpenUsageLimit?: ((() => void) | null) | undefined; /** The "Run on " control — a live component in production. */ sandboxSlot?: ReactNode | undefined; /** * Replaces the static provider mark when the session is on Codex — same icon, * clickable for account status/switch. Absent for host-credit sessions. */ codexSlot?: ReactNode | undefined; /** Compact session access state/menu, lazy-mounted by the route shell. */ accessSlot?: ReactNode | undefined; /** Leading control (the mobile hamburger); absent on desktop. */ leading?: ReactNode | undefined; /** * Model·effort·latency from the newest turn that durably emitted `turn.started`. * Historical — does not follow the composer next-turn picker. Falls back to * session creation defaults before any turn has admitted. */ lastStartedModel?: string | undefined; lastStartedReasoningEffort?: IntelligenceEffort | undefined; lastStartedLatencyMode?: LatencyMode | undefined; /** Billing rail: Codex account chip, or the mark for makers without a logo. */ billingClass?: BillingClass | undefined; /** Product model label (e.g. GPT-5.6 Luna). */ modelLabel?: string | undefined; modelLogoUrl?: string | undefined; /** * True while last-started policy and/or model catalog are still resolving. * Avoids flashing session defaults (wrong provider) before admitted truth. */ policyLoading?: boolean | undefined; }): import("react").JSX.Element;