import type { CommentEditPubsubMessagePublication, CommentEditPubsubMessagePublicationWithCommunityAuthor } from "../publications/comment-edit/types.js"; import type { CommentModerationPubsubMessagePublication, CommentModerationPubsubMessagePublicationWithCommunityAuthor } from "../publications/comment-moderation/types.js"; import type { CommentPubsubMessagePublication, CommentPubsubMessageWithCommunityAuthor, PostPubsubMessageWithCommunityAuthor, ReplyPubsubMessageWithCommunityAuthor } from "../publications/comment/types.js"; import type { CommunityEditPublicationPubsubMessageWithCommunityAuthor, CommunityEditPubsubMessagePublication } from "../publications/community-edit/types.js"; import type { VotePubsubMessagePublication, VotePubsubMessageWithCommunityAuthor } from "../publications/vote/types.js"; import type { PubsubSignature } from "../signer/types.js"; import type { RuntimeAuthorWithCommentUpdateType } from "../types.js"; import { ChallengeAnswerMessageSchema, ChallengeAnswerMessageSignedPropertyNames, ChallengeInChallengePubsubMessageSchema, ChallengeMessageSchema, ChallengeMessageSignedPropertyNames, ChallengeRequestMessageSchema, ChallengeRequestMessageSignedPropertyNames, ChallengeVerificationMessageSchema, ChallengeVerificationMessageSignedPropertyNames, DecryptedChallengeAnswerSchema, DecryptedChallengeRequestPublicationSchema, DecryptedChallengeRequestSchema, DecryptedChallengeSchema, DecryptedChallengeVerificationSchema } from "./schema.js"; import { z } from "zod"; export type ChallengeRequestMessageType = z.infer; export type DecryptedChallengeRequestPublication = z.infer; export type DecryptedChallengeRequest = z.infer; export type DecryptedChallengeRequestMessageType = DecryptedChallengeRequest & ChallengeRequestMessageType; export interface DecryptedChallengeRequestMessageTypeWithCommunityAuthor extends Omit { vote?: VotePubsubMessageWithCommunityAuthor; comment?: CommentPubsubMessageWithCommunityAuthor; commentEdit?: CommentEditPubsubMessagePublicationWithCommunityAuthor; commentModeration?: CommentModerationPubsubMessagePublicationWithCommunityAuthor; communityEdit?: CommunityEditPublicationPubsubMessageWithCommunityAuthor; } export type PublicationFromDecryptedChallengeRequest = NonNullable; export type PublicationWithCommunityAuthorFromDecryptedChallengeRequest = PublicationFromDecryptedChallengeRequest & { author: RuntimeAuthorWithCommentUpdateType; }; export interface DecryptedChallengeRequestMessageWithReplyCommunityAuthor extends DecryptedChallengeRequestMessageTypeWithCommunityAuthor { comment: ReplyPubsubMessageWithCommunityAuthor; } export interface DecryptedChallengeRequestMessageWithPostCommunityAuthor extends DecryptedChallengeRequestMessageTypeWithCommunityAuthor { comment: PostPubsubMessageWithCommunityAuthor; } export type ChallengeType = z.infer; export type ChallengeMessageType = z.infer; export type DecryptedChallenge = z.infer; export type DecryptedChallengeMessageType = ChallengeMessageType & DecryptedChallenge; export type ChallengeAnswerMessageType = z.infer; export type DecryptedChallengeAnswer = z.infer; export type DecryptedChallengeAnswerMessageType = ChallengeAnswerMessageType & DecryptedChallengeAnswer; export type ChallengeVerificationMessageType = z.infer; export type DecryptedChallengeVerification = z.infer; export type DecryptedChallengeVerificationMessageType = ChallengeVerificationMessageType & Partial; export type PubsubMessage = ChallengeRequestMessageType | ChallengeMessageType | ChallengeAnswerMessageType | ChallengeVerificationMessageType; export type EncryptedEncoded = { ciphertext: string; iv: string; tag: string; type: string; }; export interface EncodedPubsubSignature extends Omit { signature: string; publicKey: string; } export interface BaseEncodedPubsubMessage { challengeRequestId: string; signature: EncodedPubsubSignature; } export interface EncodedDecryptedChallengeRequestMessageType extends Omit, BaseEncodedPubsubMessage { encrypted: EncryptedEncoded; } export interface EncodedDecryptedChallengeRequestMessageTypeWithCommunityAuthor extends Omit, Pick { } export interface EncodedDecryptedChallengeMessageType extends Omit, BaseEncodedPubsubMessage { encrypted: EncryptedEncoded; } export interface EncodedDecryptedChallengeAnswerMessageType extends Omit, BaseEncodedPubsubMessage { encrypted: EncryptedEncoded; } export interface EncodedDecryptedChallengeVerificationMessageType extends Omit, BaseEncodedPubsubMessage { encrypted?: EncryptedEncoded; } export interface ChallengeRequestMessageSignature extends PubsubSignature { signedPropertyNames: typeof ChallengeRequestMessageSignedPropertyNames; } export interface ChallengeMessageSignature extends PubsubSignature { signedPropertyNames: typeof ChallengeMessageSignedPropertyNames; } export interface ChallengeAnswerMessageSignature extends PubsubSignature { signedPropertyNames: typeof ChallengeAnswerMessageSignedPropertyNames; } export interface ChallengeVerificationMessageSignature extends PubsubSignature { signedPropertyNames: typeof ChallengeVerificationMessageSignedPropertyNames; }