import { type NotificationDraftT } from './notification.js'; import { type AgentAcknowledgementSync, type EnvelopeIds, type ProjectIdentity, type ReplyMetadata, type RetirementAnswerContext } from './apns.js'; /** Application-owned Android envelope version inside FCM data.notifai. */ export declare const ANDROID_ENVELOPE_SCHEMA_VERSION = 1; export interface FcmDataEnvelope { /** FCM data values are strings; the application envelope is serialized exactly once. */ data: { notifai: string; }; /** Visible Notification Requests are high priority; silent state sync is normal priority. */ priority: 'HIGH' | 'NORMAL'; } /** Silent Android library-refresh message consumed before visible-envelope parsing. */ export declare function buildFcmSoundLibrarySyncEnvelope(): FcmDataEnvelope; /** Silent Android Session Message refresh, consumed before visible-envelope parsing. */ export declare function buildFcmSessionMessagesSyncEnvelope(): FcmDataEnvelope; /** * Pure client-visible FCM data assembly shared by Android payload estimation and * the provider renderer. Provider authentication, project ids, and message * resource names remain outside this observable envelope. */ export declare function buildFcmDataEnvelope(draft: NotificationDraftT, ids: EnvelopeIds, mediaUrl: string | null, projectIdentity?: ProjectIdentity | null, /** Service-owned close time of this request's reply window. */ replyExpiresAt?: Date | null, retirementAnswerContext?: RetirementAnswerContext | null, replyMetadata?: ReplyMetadata | null, agentAcknowledgementSync?: AgentAcknowledgementSync | null, soundHash?: string | null): FcmDataEnvelope; /** * Adds the optional content to a rendered FCM data map whenever the whole * map, as it will be sent (destination stamp included), stays within * `limitBytes` less {@link PUSHED_BODY_HEADROOM_BYTES}: first each choice's * description, then the Markdown Body. Apply it last. `has_body` and * `has_choice_descriptions` are unchanged either way, so an envelope without * them still tells the app to fetch them. */ export declare function withPushedFcmContent(data: Record, draft: NotificationDraftT, limitBytes: number): Record;