import type { ParsedSessionUsageLimitReachedRefusal, SessionUsageLimit } from "@opengeni/sdk/session-usage-limits"; import { type SessionUsageLimitLabels } from "../usage/session-usage-limit.js"; export type SessionUsageLimitNoticeProps = { /** The task's usage-limit projection (`GET .../usage-limit` or `session.usageLimit`). */ usage: SessionUsageLimit | null | undefined; /** * A refused Send's typed refusal (`OpenGeniSessionUsageLimitReachedError`), * shown as reached until a re-read projection replaces it. Clear it when a * newer `usage` arrives: a projection that already says reached wins. */ refusal?: Pick | null; /** Opens the limit editor. Absent: the notice says who can change it instead. */ onChangeLimit?: (() => void) | undefined; /** A child chat: link to the main task that owns the limit, instead of an editor. */ mainTaskHref?: string | undefined; /** The goal paused at the limit: changing it never resumes, so say Resume is next. */ goalPaused?: boolean; /** * The last refresh of `usage` failed. The last known amount and any reached * state stay, with a note that they may be out of date and that the limit * still applies. Pass the read hook's error state; never zero the amount. */ stale?: boolean; /** * Remember a dismissed near-limit notice for this tab. The key should name * the workspace; the task and limit version are added, so a changed limit * shows it again. Reaching the limit is never dismissible. */ dismissStorageKey?: string | undefined; labels?: Partial | undefined; className?: string | undefined; }; /** * The calm composer line for a task's usage limit: a dismissible note near * the limit and a status once it is reached, with one action (Change limit). * Renders nothing while usage is comfortable, unlimited, unknown or loading. * Never a purchase or credits remedy: the limit is a person's own setting. */ export declare function SessionUsageLimitNotice({ usage, refusal, onChangeLimit, mainTaskHref, goalPaused, stale, dismissStorageKey, labels: overrides, className, }: SessionUsageLimitNoticeProps): import("react").JSX.Element | null;