import type { MessagePageOptions } from "./discord-client.js"; import { type BotChannelPermissionResult } from "./permissions.js"; import type { ScopePolicy } from "./policy.js"; import type { DiscordChannel, DiscordGuildMember, DiscordMessage, DiscordRole, DiscordThreadMember, RequestOptions } from "./types.js"; import type { ApplicationIntentStatus } from "./application-posture.js"; export interface MessageCatchupSelection { afterMessageId?: string; channelId: string; } export interface MessageCatchupRequest { channels: readonly MessageCatchupSelection[]; guildId: string; includeAutomatedMessages?: boolean; maxMessagesPerChannel?: number; } export interface NormalizedMessageCatchupRequest { channels: readonly MessageCatchupSelection[]; guildId: string; includeAutomatedMessages: boolean; maxMessagesPerChannel: number; } export interface MessageCatchupServiceClient { getChannel(channelId: string, options?: RequestOptions): Promise; getGuildMember(guildId: string, userId: string, options?: RequestOptions): Promise; getGuildRoles(guildId: string, options?: RequestOptions): Promise; getThreadMember(threadId: string, userId: string, options?: RequestOptions): Promise; listMessages(channelId: string, options?: MessagePageOptions): Promise; } export interface MessageCatchupServiceOptions { client: MessageCatchupServiceClient; policy: Pick; } export interface MessageCatchupMessageView { attachmentCount: number; authorBot: boolean; authorId: string; authorIsConnector: boolean; authorSystem: boolean; authorWebhook: boolean; channelId: string; componentCount: number; content: { characters: number; preview: string; truncated: boolean; }; editedTimestamp: string | null; embedCount: number; guildId: string; id: string; jumpUrl: string; mentionEveryone: boolean; mentionedConnector: boolean; mentionedRoleCount: number; mentionedUserCount: number; pinned: boolean; reactionKindCount: number; replyToMessageId: string | null; stickerCount: number; timestamp: string; tts: boolean; type: number; } export interface MessageCatchupChannelResult { channel: { guildId: string; id: string; name: string | null; parentId: string | null; type: number; typeName: string; }; messages: MessageCatchupMessageView[]; page: { afterMessageId: string | null; boundaryVerification: "not-applicable" | "not-required" | "verified"; messageCount: number; mode: "catch-up" | "initialize"; newerMessagesMayExist: boolean; nextAfterMessageId: string | null; olderMessagesMayExist: boolean; omittedAutomatedMessageCount: number; requestedLimit: number; scanLimitReached: boolean; scannedMessageCount: number; }; permissions: { canReadMessages: true; confidence: "complete"; permissionSourceChannelId: string; requiredReadPermissions: BotChannelPermissionResult["requiredReadPermissions"]; privateThreadAccess: "lookup-succeeded" | "not-applicable"; unknownPermissionBits: string; warningCount: number; }; } export interface MessageCatchupResult { channels: MessageCatchupChannelResult[]; guildId: string; privacy: { automaticPagination: "none"; cursorCustody: "caller"; messageContent: "preview-only"; partialResults: "none"; persistence: "none"; profileExpansion: "omitted"; rawPayloads: "omitted"; }; schemaVersion: number; status: "ok"; } export declare function normalizeMessageCatchupRequest(request: MessageCatchupRequest): NormalizedMessageCatchupRequest; export declare class MessageCatchupService { #private; constructor(options: MessageCatchupServiceOptions); catchUp(botId: string, messageContentIntent: ApplicationIntentStatus, request: MessageCatchupRequest, options?: RequestOptions): Promise; } //# sourceMappingURL=message-catchup-service.d.ts.map