import type { ActivityStore } from "./activity-log.js"; import type { DiscordClient } from "./discord-client.js"; import { InteractionLimiter } from "./interaction-limiter.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export interface SendMessageRequest { channelId: string; content: string; idempotencyKey: string; notifyReplyAuthor?: boolean | undefined; notifyUserIds?: readonly string[] | undefined; replyToMessageId?: string | undefined; } export interface EditOwnMessageRequest { channelId: string; content: string; messageId: string; notifyUserIds?: readonly string[] | undefined; } export interface AddReactionRequest { channelId: string; emoji: string; messageId: string; } export interface AddReactionsRequest { channelId: string; emojis: readonly string[]; messageId: string; } export type RemoveOwnReactionRequest = AddReactionRequest; export interface SignalCommandProcessingRequest { channelId: string; sourceMessageId: string; } export interface SendMessageResult { activityId: string; channelId: string; guildId: string; localReplay: boolean; messageId: string; nonce: string; schemaVersion: number; status: "completed"; url: string; } export interface EditOwnMessageResult { activityId: string; channelId: string; guildId: string; messageId: string; schemaVersion: number; status: "completed" | "noop"; url: string; } export interface AddReactionResult { activityId: string; channelId: string; guildId: string; messageId: string; schemaVersion: number; status: "completed" | "noop"; url: string; } export interface AddReactionsResult { activityIds: string[]; addedCount: number; channelId: string; existingCount: number; guildId: string; messageId: string; processedCount: number; requestedCount: number; schemaVersion: number; status: "completed" | "noop"; url: string; } export type RemoveOwnReactionResult = AddReactionResult; export interface SignalCommandProcessingResult { activityId: string; channelId: string; expiresAt: string; guildId: string; localReplay: boolean; schemaVersion: number; sourceMessageId: string; status: "completed"; } export interface InteractionServiceClient extends Pick { } export interface InteractionServiceOptions { activityStore: ActivityStore; client: InteractionServiceClient; clock?: () => Date; ledgerTtlMs?: number; limiter?: InteractionLimiter; maxWritesPerMinute: number; minWriteIntervalMs: number; policy: ScopePolicy; randomId?: () => string; } export declare function interactionNonce(channelId: string, idempotencyKey: string): string; export declare class InteractionService { #private; constructor(options: InteractionServiceOptions); signalCommandProcessing(botId: string, request: SignalCommandProcessingRequest, options?: RequestOptions): Promise; sendMessage(botId: string, request: SendMessageRequest, options?: RequestOptions): Promise; editOwnMessage(botId: string, request: EditOwnMessageRequest, options?: RequestOptions): Promise; addReaction(request: AddReactionRequest, options?: RequestOptions): Promise; addReactions(request: AddReactionsRequest, options?: RequestOptions): Promise; removeOwnReaction(request: RemoveOwnReactionRequest, options?: RequestOptions): Promise; } //# sourceMappingURL=interaction-service.d.ts.map