/**
 * Whitespace in FAST templates
 * ────────────────────────────
 * The formatter adds newlines/indentation to static template string parts,
 * which FAST renders as real text nodes. With `white-space: pre-wrap` these
 * are visible as blank lines. To avoid this:
 *
 * - Apply `white-space: pre-wrap` only on leaf elements whose *content* needs
 *   it, never on containers.
 * - Inside pre-wrap elements keep content on the same line as the opening tag:
 *   GOOD `<div>${expr}</div>` / BAD `<div>\n  ${expr}\n</div>`
 * - Extract shared or deeply-nested templates as named module-level consts to
 *   keep indentation shallow.
 * - Chain adjacent `when()` calls as `${when(a,tA)}${when(b,tB)}` — separate
 *   lines let the formatter inject whitespace between them.
 */
import { ViewTemplate } from '@genesislcap/web-core';
import type { FoundationAiAssistant } from './main';
/**
 * Class list for the banner below, joined rather than interpolated so an
 * inapplicable modifier contributes nothing. Two interpolations directly in the
 * attribute emitted `class="blocked-banner  "` in the common (unblocked) case —
 * harmless to the browser, but it shows up in every DOM snapshot and every
 * innerHTML assertion a host writes against this element.
 *
 * The two modifiers name what they actually gate, which is why neither is
 * `is-blocked`: `is-visible` means the banner has something to say, and that
 * includes PARTIAL exhaustion — one vendor walled, composer still live, `blocked`
 * false. `is-partial` then softens the treatment for exactly that case. Naming
 * the first after `blocked` read as a contradiction beside the second, and made
 * the styles say `.blocked-banner.is-blocked` to mean "visible".
 *
 * Exported for the unit test that pins the attribute; not part of the element
 * API.
 *
 * @internal
 */
export declare const blockedBannerClasses: (x: FoundationAiAssistant) => string;
/**
 * Id of the blocked banner, referenced by the composer controls'
 * `aria-describedby`. Shadow-DOM-scoped, so a fixed string cannot collide with
 * the host page — and IDREF resolution is same-root, which is exactly where both
 * ends of this reference live.
 *
 * @internal
 */
export declare const BLOCKED_BANNER_ID = "blocked-banner";
/**
 * `aria-describedby` for the composer's textarea, send button and attach button:
 * the banner's id whenever the banner has something to say, otherwise `null` (so
 * the attribute is omitted rather than emitted empty).
 *
 * Keyed on `bannerVisible`, NOT on `blocked`, and that is the point. The
 * PARTIAL state — some vendor walled, composer still live — is the state this
 * feature exists to create, and it was the one state with no accessible
 * explanation at all: `aria-disabled` and `aria-label` bind only on `blocked`, and
 * a live composer keeps the host's own placeholder, so a screen-reader user
 * arriving at the textarea heard "Type a message" with no hint that the next turn
 * might be refused. The banner's `role="status"` announces the text when it
 * CHANGES; this is what makes the same explanation reachable afterwards, on
 * demand, from the control it is about.
 *
 * Applied in the fully blocked state too, where it is additive: the `aria-label`
 * there states the reason as the control's name, and this restates it as its
 * description for the send/attach buttons, which carry neither.
 *
 * Exported for the unit test that pins it; not part of the element API.
 *
 * @internal
 */
export declare const composerDescribedBy: (x: FoundationAiAssistant) => string | null;
export declare const FoundationAiAssistantTemplate: (designSystemPrefix: string) => ViewTemplate<FoundationAiAssistant>;
//# sourceMappingURL=main.template.d.ts.map