import { type ComponentLayoutReview } from "./component-layout.js"; export declare const COMPONENT_TEMPLATE_NAMES: readonly ["announcement", "incident-status", "poll-results", "release-notes", "welcome-card"]; export declare const COMPONENT_ANNOUNCEMENT_PRIORITIES: readonly ["important", "information", "urgent"]; export declare const COMPONENT_INCIDENT_STATUSES: readonly ["identified", "investigating", "monitoring", "resolved"]; export declare const COMPONENT_TEMPLATE_LIMITS: Readonly<{ announcementBodyCharacters: 3000; headlineCharacters: 120; incidentImpactCharacters: 800; incidentNextUpdateCharacters: 240; incidentSummaryCharacters: 1600; itemCharacters: 240; items: 8; pollOptionCharacters: 120; pollOptions: 10; pollQuestionCharacters: 240; pollVotes: 1000000000; releaseNameCharacters: 120; summaryCharacters: 1600; }>; export declare const COMPONENT_TEMPLATE_VERSION = 2; export type ComponentTemplateName = typeof COMPONENT_TEMPLATE_NAMES[number]; export type ComponentAnnouncementPriority = typeof COMPONENT_ANNOUNCEMENT_PRIORITIES[number]; export type ComponentIncidentStatus = typeof COMPONENT_INCIDENT_STATUSES[number]; export interface ComponentTemplateCtaInput { label: string; url: string; } export interface AnnouncementComponentTemplateInput { body: string; cta?: ComponentTemplateCtaInput; headline: string; priority: ComponentAnnouncementPriority; template: "announcement"; } export interface IncidentStatusComponentTemplateInput { impact?: string; nextUpdate?: string; status: ComponentIncidentStatus; summary: string; template: "incident-status"; title: string; } export interface PollResultOptionInput { label: string; votes: number; } export interface PollResultsComponentTemplateInput { options: readonly PollResultOptionInput[]; question: string; template: "poll-results"; } export interface ReleaseNotesComponentTemplateInput { changes: readonly string[]; cta?: ComponentTemplateCtaInput; releaseName: string; summary: string; template: "release-notes"; } export interface WelcomeCardComponentTemplateInput { headline: string; introduction: string; steps: readonly string[]; template: "welcome-card"; } export type ComponentTemplateInput = AnnouncementComponentTemplateInput | IncidentStatusComponentTemplateInput | PollResultsComponentTemplateInput | ReleaseNotesComponentTemplateInput | WelcomeCardComponentTemplateInput; export interface ComponentTemplateCompilation { review: ComponentLayoutReview; template: ComponentTemplateName; templateVersion: number; } export interface ComponentTemplateCatalogEntry { accentBehavior: string; name: ComponentTemplateName; optionalFields: readonly string[]; purpose: string; requiredFields: readonly string[]; } export declare const COMPONENT_TEMPLATE_CATALOG: readonly ComponentTemplateCatalogEntry[]; export declare function compileComponentTemplate(input: unknown, notifyUserIds?: readonly string[]): ComponentTemplateCompilation; //# sourceMappingURL=component-templates.d.ts.map