/** * Optional content a push carries only when it fits. Internal to the push * envelope builders; not part of the package's public surface. */ import type { NotificationDraftT, QuestionT } from './notification.js'; /** True when some closed choice of this request carries a description. */ export declare function hasChoiceDescriptions(draft: NotificationDraftT): boolean; /** * The questions as every push carries them: choice descriptions are left out, * because they are optional content that may not fit. `has_choice_descriptions` * says they exist, and the renderers add them back when they fit. */ export declare function pushedQuestions(questions: readonly QuestionT[]): QuestionT[]; export declare function utf8Bytes(value: unknown): number; /** * Optional content that rides in a push only when it fits, as a function of * a candidate custom key: choice descriptions first (they sit on the answer * controls an expanded notification shows), then the Markdown Body. Shared by * the APNs and FCM renderers. `fits` sees the complete payload as sent. * Null when nothing fits, so the rendered payload stays exactly as built. */ export declare function withFittingContent(notifai: Record, draft: NotificationDraftT, fits: (candidate: Record) => boolean): Record | null;