/** Existing server content readers. Classification is not encryption: these * processors intentionally inspect plaintext in the current JSON release. * Their input boundary must be redesigned before enabling encrypted rooms. */ export declare const PLAINTEXT_PROCESSORS: { readonly preview: { readonly current: "Read message/display text to derive conversation and notification previews."; readonly beforeMls: "Derive on authorized endpoints; clear/reconcile deleted-message previews there."; }; readonly push: { readonly current: "Send visible titles and message previews to FCM/APNs."; readonly beforeMls: "Use generic wake notifications or endpoint-decrypted notification extensions."; }; readonly topic: { readonly current: "Derive the initial topic from message text."; readonly beforeMls: "Derive on an authorized endpoint and publish as encrypted conversation content."; }; readonly forward: { readonly current: "Read source content and copy plaintext attachments into the target room."; readonly beforeMls: "Decrypt and re-encrypt on an authorized endpoint; keep server target admission checks."; }; readonly message_validation: { readonly current: "Inspect text, attachment descriptors and rich content before storing messages."; readonly beforeMls: "Validate decrypted content on endpoints; retain bounded ciphertext/envelope checks on the server."; }; readonly interaction_validation: { readonly current: "Validate card/input/approval/plan render contracts and submitted responses."; readonly beforeMls: "Validate content on authorized requesting/responding endpoints; retain public admission and lifecycle checks."; }; readonly image_generation: { readonly current: "Send prompts/source image bytes to Vertex and persist generated output."; readonly beforeMls: "Require explicit provider disclosure and an authorized endpoint/processing participant; no silent server decryption."; }; readonly video_processing: { readonly current: "Download plaintext video, normalize it and create a poster."; readonly beforeMls: "Process on an endpoint or an explicitly authorized processing participant before encrypted upload."; }; readonly owner_observation: { readonly current: "Allow authenticated owners to inspect managed agent conversations without room membership."; readonly beforeMls: "Explicitly enroll authorized owner keyholders or retire content observation; ownership alone supplies no decryption keys."; }; readonly moderation_evidence: { readonly current: "Accept user-selected plaintext message evidence for moderation."; readonly beforeMls: "Design explicit selective disclosure/authenticity (including franking policy); never infer access to room keys."; }; }; export type PlaintextProcessorName = keyof typeof PLAINTEXT_PROCESSORS; export interface PlaintextProcessorInput { encoding: 'json'; value: T; } /** The callback is the actual content processor, not a telemetry hook. Keeping * the codec explicit ensures an opaque body cannot accidentally be processed by * the JSON path. This is not authorization; callers still enforce their domain * policy and every enabled transport currently requires JSON. */ export declare function runPlaintextProcessor(name: PlaintextProcessorName, input: PlaintextProcessorInput, process: (value: T) => R): R;