import type { ActivityStore } from "./activity-log.js"; import { type DiscordClient } from "./discord-client.js"; import type { GatewayVoiceChannelStatusSnapshot, GatewayVoiceChannelStatusSource } from "./gateway-voice-channel-status.js"; import { type OperationStore } from "./operation-store.js"; import { type DiscordPermissionName } from "./permissions.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export interface VoiceChannelStatusChangeRequest { auditReason: string; channelId: string; guildId: string; operationKey: string; status: string | null; } export interface NormalizedVoiceChannelStatusChangeRequest { auditReason: string; channelId: string; guildId: string; operationKeyHash: string; status: string | null; } export type VoiceChannelStatusBotConnection = "disconnected" | "other" | "target"; export interface VoiceChannelStatusPermissionEvidence { appliedRoleIds: string[]; authorizedForChange: true; botAdministrator: boolean; botGuildOwner: boolean; botConnection: VoiceChannelStatusBotConnection; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; manageChannelsRequired: boolean; missingPermissions: []; requiredPermissions: DiscordPermissionName[]; unknownPermissionBits: string; warnings: string[]; } export interface VoiceChannelStatusPrivacyProjection { auditReasonPersisted: false; enumeration: "none"; nonTargetChannelIdsExposed: false; nonTargetStatusText: "discarded-before-projection"; persistence: "content-free-outcomes-only"; rawPayloads: "omitted"; statusTextPersisted: false; } export interface VoiceChannelStatusReadResult { botConnection: VoiceChannelStatusBotConnection; channel: { guildId: string; id: string; name: string; type: "voice"; }; current: GatewayVoiceChannelStatusSnapshot; guild: { id: string; name: string; }; permission: VoiceChannelStatusPermissionEvidence; privacy: VoiceChannelStatusPrivacyProjection; schemaVersion: number; status: "ok"; } export interface VoiceChannelStatusPlan { applicationId: string; auditReason: string; botConnection: VoiceChannelStatusBotConnection; botId: string; channel: VoiceChannelStatusReadResult["channel"]; createdAt: string; current: GatewayVoiceChannelStatusSnapshot; desiredStatus: string | null; digest: string; guild: VoiceChannelStatusReadResult["guild"]; localLimits: { statusCharacters: number; }; operationKeyHash: string; permission: VoiceChannelStatusPermissionEvidence; privacy: VoiceChannelStatusPrivacyProjection; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; warnings: string[]; writeRequired: boolean; } export interface VoiceChannelStatusResult { activityId: string | null; channelId: string; guildId: string; observed: GatewayVoiceChannelStatusSnapshot; operationKeyHash: string; planDigest: string; schemaVersion: number; settlementEvent: "different" | "matched" | "not-observed"; status: "already-current" | "completed" | "completed-with-drift"; verification: "drift" | "match" | "not-required"; } export interface VoiceChannelStatusServiceClient extends Pick { } export interface VoiceChannelStatusServiceOptions { activityStore: ActivityStore; client: VoiceChannelStatusServiceClient; clock?: () => Date; gateway: GatewayVoiceChannelStatusSource; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function normalizeVoiceChannelStatusChangeRequest(request: VoiceChannelStatusChangeRequest): NormalizedVoiceChannelStatusChangeRequest; export declare class VoiceChannelStatusService { #private; constructor(options: VoiceChannelStatusServiceOptions); get(botId: string, guildId: string, channelId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: VoiceChannelStatusChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: VoiceChannelStatusChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=voice-channel-status-service.d.ts.map