import type { AgentSignalContents } from '../agent/signals.js';
import type { ToolPayloadTransformPhase } from '../tools/types.js';
import type { AgentControllerMessage, AgentControllerMessageContent, TokenUsage } from './types.js';
/**
 * Pure transforms that map raw agent-stream chunk payloads into the
 * `AgentControllerMessage` / `AgentControllerMessageContent` shapes a Session renders. They hold
 * no AgentController or Session state, so they live in their own module and are shared
 * by the run engine (which folds chunks into messages) and the AgentController signal
 * paths (which surface signals as messages).
 */
export declare function getDisplayTransform(metadata: unknown, phase: ToolPayloadTransformPhase, fallback: unknown): unknown;
export declare function getStringValue(value: unknown): string | undefined;
export declare function getRecordValue(value: unknown): Record<string, unknown> | undefined;
export declare function signalContentsToControllerContent(contents: AgentSignalContents): AgentControllerMessageContent[];
export declare function toSystemReminderContent(payload: Record<string, unknown>): Extract<AgentControllerMessageContent, {
    type: 'system_reminder';
}> | undefined;
export declare function toUserSignalMessage(payload: Record<string, unknown>): AgentControllerMessage | undefined;
export declare function signalContentsToText(contents: unknown): string;
export declare function toStateSignalContent(payload: Record<string, unknown>): Extract<AgentControllerMessageContent, {
    type: 'state_signal';
}> | undefined;
export declare function toNotificationSummaryContent(payload: Record<string, unknown>): Extract<AgentControllerMessageContent, {
    type: 'notification_summary';
}> | undefined;
export declare function toReactiveSignalContent(payload: Record<string, unknown>): Extract<AgentControllerMessageContent, {
    type: 'reactive_signal';
}> | undefined;
export declare function toNotificationContent(payload: Record<string, unknown>): Extract<AgentControllerMessageContent, {
    type: 'notification';
}> | undefined;
/**
 * Map a non-success terminal finish reason (content-filter, error, length) to a
 * user-facing message, or `undefined` for success reasons. A non-success finish
 * must surface as an explicit terminal error rather than a silent `complete`.
 */
export declare function describeNonSuccessFinishReason(reason: string, providerMetadata: unknown): string | undefined;
/**
 * Build a user-facing notice when a turn was served by an Anthropic server-side
 * fallback model instead of the primary model. Without a notice the user has no
 * way to tell the response did not come from the model they selected.
 */
export declare function describeServerSideFallback(providerMetadata: unknown): string | undefined;
/** Coerce a usage field to a finite number, accepting numeric strings. */
export declare function getUsageNumber(usage: Record<string, unknown>, key: string): number | undefined;
/** Fold an optional usage field into a tally when present. */
export declare function addOptionalUsageField(usage: TokenUsage, key: keyof Pick<TokenUsage, 'reasoningTokens' | 'cachedInputTokens' | 'cacheCreationInputTokens'>, value: number | undefined): void;
//# sourceMappingURL=stream-content.d.ts.map