import type { ConnectorConfig } from "./config.js"; import type { GatewayChannelLayoutListener, GatewayChannelLayoutSnapshot, GatewayChannelLayoutStatus } from "./gateway-channel-layout.js"; import { type GatewayBotDiscovery } from "./gateway-discovery.js"; import { GatewayEventStore, type GatewayChangeListener, type GatewayEventPage, type GatewayEventSource, type GatewayStatusSnapshot } from "./gateway-events.js"; import { type GatewayScheduler, type GatewaySocket } from "./gateway-shard-session.js"; import { type GatewayChannelRoute } from "./gateway-topology.js"; import { type GatewayVoiceChannelStatusRequestOptions, type GatewayVoiceChannelStatusSnapshot, type GatewayVoiceChannelStatusSource, type GatewayVoiceChannelStatusUpdate } from "./gateway-voice-channel-status.js"; import { type GatewaySoundboardEffectEvidence, type GatewaySoundboardEffectRequestOptions, type GatewaySoundboardEffectSource } from "./gateway-soundboard-effect.js"; export type { GatewayScheduler, GatewaySocket } from "./gateway-shard-session.js"; export interface GatewayRuntime extends GatewayEventSource, GatewaySoundboardEffectSource, GatewayVoiceChannelStatusSource { start(): Promise; stop(): Promise; } export interface GatewayInteractionHandler { ingestInteraction(payload: unknown): Promise | void; } export interface DiscordGatewayOptions { applicationId: string; clock?: () => number; config: Pick & Partial>; discoverGateway: (signal: AbortSignal) => Promise; discoverGatewayChannel: (channelId: string, signal: AbortSignal) => Promise; eventStore?: GatewayEventStore; interactionHandler?: GatewayInteractionHandler; logger?: (message: string) => void; random?: () => number; scheduler?: GatewayScheduler; webSocketFactory?: (url: string) => GatewaySocket; } export declare function normalizeGatewayResumeUrl(value: unknown): string | undefined; export declare class DiscordGateway implements GatewayRuntime { #private; readonly soundboardPlaybackEventsEnabled: boolean; readonly voiceChannelStatusEnabled: boolean; constructor(options: DiscordGatewayOptions); get enabled(): boolean; getStatus(): GatewayStatusSnapshot; listEvents(options?: { afterCursor?: string; limit?: number; }): GatewayEventPage; get layoutEnabled(): boolean; getChannelLayout(guildId: string): GatewayChannelLayoutSnapshot; getChannelLayoutStatus(): GatewayChannelLayoutStatus; subscribeChannelLayouts(listener: GatewayChannelLayoutListener): () => void; subscribe(listener: GatewayChangeListener): () => void; getVoiceChannelStatus(guildId: string, channelId: string, options?: GatewayVoiceChannelStatusRequestOptions): Promise; waitForVoiceChannelStatusUpdate(guildId: string, channelId: string, options?: GatewayVoiceChannelStatusRequestOptions): Promise; waitForSoundboardPlaybackEvent(guildId: string, channelId: string, userId: string, soundId: string, options?: GatewaySoundboardEffectRequestOptions): Promise; start(): Promise; stop(): Promise; } //# sourceMappingURL=discord-gateway.d.ts.map