/**
 * Pure Block Kit primitives + score/format helpers + dashboard link builders.
 * No I/O, no env. Every function is a total map from values to JSON / strings.
 *
 * Dashboard route shapes mirror apps/dashboard/src/lib/router-links.ts (D0044).
 */
import type { SlackActionElement, SlackBlock, SlackButtonElement, SlackConfirmObject, SlackMarkdownBlock, SlackMrkdwnText, SlackOverflowElement, SlackPlainText } from "./types.js";
export declare function mrkdwn(text: string): SlackMrkdwnText;
export declare function plainText(text: string): SlackPlainText;
export declare function header(text: string): SlackBlock;
export declare function section(text: string): SlackBlock;
export declare function markdown(text: string): SlackMarkdownBlock;
export declare function sectionFields(fields: string[]): SlackBlock;
export declare function context(...parts: string[]): SlackBlock;
export declare function divider(): SlackBlock;
export declare function actions(elements: SlackActionElement[]): SlackBlock;
/**
 * Wire `action_id` for the Acknowledge action — the one interactive action the
 * gateway handles today (`POST /v1/slack/interactions`). Single-sourced here so
 * the producer (this factory) and the consumer (`packages/api` routes/slack.ts)
 * cannot drift: that drift is exactly what made every Acknowledge click no-op.
 *
 * @see docs/design-docs/slack-interactivity-endpoint.md
 */
export declare const SLACK_ACK_ACTION_ID = "acknowledge_alert";
export declare function linkButton(text: string, url: string, opts?: {
    style?: "primary" | "danger";
}): SlackButtonElement;
export declare function actionButton(text: string, value: string, opts?: {
    style?: "primary" | "danger";
    actionId?: string;
    confirm?: SlackConfirmObject;
}): SlackButtonElement;
export declare function overflow(options: {
    text: string;
    value: string;
}[], actionId?: string): SlackOverflowElement;
/** Score-band dot, design bands: >=80 green, >=60 yellow, else red. */
export declare function scoreDot(score: number): string;
/** 10-cell unicode bar, filled proportionally to score/100. */
export declare function scoreBar(score: number): string;
/** "+5" / "-3" / "0". */
export declare function signedDelta(n: number): string;
/** Above-noise up/down triangle, or the within-noise bar. Threshold floored at 1. */
export declare function noiseArrow(delta: number, noiseThreshold: number): string;
/** Per-area change glyph for the comparison block. */
export declare function changeIcon(change: "improved" | "regressed" | "unchanged" | "not-evaluated"): string;
/** Compact token count: 1.28M / 842k / 940. */
export declare function fmtTokens(n: number): string;
/** Pipeline duration as "10m 12s" (seconds zero-padded). */
export declare function formatDuration(ms: number): string;
export declare function reportUrl(baseUrl: string, reportId: string): string;
export declare function trendsUrl(baseUrl: string): string;
export declare function runUrl(baseUrl: string, requestId: string): string;
