import type { ActivityStore } from "./activity-log.js"; import { type DiscordClient } from "./discord-client.js"; import type { GatewayChannelLayoutSource } from "./gateway-channel-layout.js"; import { type GuildChannelHttpEvidenceMode } from "./guild-channel-evidence.js"; import { type GuildDeletionRecoveryEvidence, type GuildDeletionRecoveryRequest, type NormalizedGuildDeletionRecoveryRequest } from "./guild-recovery-attestation.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"; declare const PRIVACY_OMISSIONS: readonly ["auditReason", "channelContent", "dependencyIdentifiers", "hiddenChannelMetadata", "inviteCodes", "memberIdentities", "permissionOverwrites", "rawOperationKey", "rawPayloads", "threadMemberData", "voiceOccupancy", "webhookCredentials"]; export type ChannelDeletionTargetKind = "category" | "forum" | "media" | "stage" | "text" | "voice"; export type ChannelDeletionBlockerKind = "active-thread" | "automod-reference" | "category-child" | "guild-reference" | "invite" | "onboarding-reference" | "private-archived-thread" | "public-archived-thread" | "scheduled-event" | "stage-instance" | "webhook" | "welcome-screen-reference" | "widget-reference"; export interface ChannelDeletionRequest { acknowledgeIrreversibleContentLoss: true; auditReason: string; channelId: string; guildId: string; operationKey: string; recovery: GuildDeletionRecoveryRequest; } export interface NormalizedChannelDeletionRequest extends Omit { operationKeyHash: string; recovery: NormalizedGuildDeletionRecoveryRequest; } export interface ChannelDeletionTarget { id: string; kind: ChannelDeletionTargetKind; lastMessagePresent: boolean; name: string; overwriteCount: number; parentChannelId: string | null; rawPosition: number; type: number; unknownFieldCount: number; } export interface ChannelDeletionBlocker { count: number; kind: ChannelDeletionBlockerKind; } export interface ChannelDeletionDependencyEvidence { blockerCount: number; digest: string; references: { activeThreads: number; automod: number; categoryChildren: number; guild: number; invites: number; onboarding: number; privateArchivedThreads: number; publicArchivedThreads: number; scheduledEvents: number; stageInstances: number; webhooks: number; welcomeScreen: number; widget: number; }; } export interface ChannelDeletionPermissionEvidence { administrator: boolean; confidence: "complete"; guildEffectivePermissionNames: DiscordPermissionName[]; guildEffectivePermissions: string; guildManageGuild: boolean; requiredTargetPermissions: DiscordPermissionName[]; targetEffectivePermissionNames: DiscordPermissionName[]; targetEffectivePermissions: string; } export interface ChannelDeletionPrivacyProjection { channelText: "transient-untrusted"; hiddenMetadataReturned: false; omittedFields: typeof PRIVACY_OMISSIONS; persistence: "content-free-only"; } export interface ChannelDeletionReadiness { applicationId: string; blockers: ChannelDeletionBlocker[]; botId: string; dependencies: ChannelDeletionDependencyEvidence; evidenceDigest: string; guild: { id: string; name: string; ownerId: string; }; httpEvidenceMode: GuildChannelHttpEvidenceMode; layout: { channelCount: number; obfuscatedChannels: number; revision: number; updatedAt: string; }; permission: ChannelDeletionPermissionEvidence; privacy: ChannelDeletionPrivacyProjection; ready: boolean; risks: string[]; schemaVersion: number; status: "blocked" | "ready"; target: ChannelDeletionTarget; warnings: string[]; } export interface ChannelDeletionPlan extends Omit { acknowledgeIrreversibleContentLoss: true; auditReason: string; createdAt: string; digest: string; operationKeyHash: string; recovery: GuildDeletionRecoveryEvidence; status: "blocked" | "planned"; writeRequired: boolean; } export interface ChannelDeletionResult { activityId: string | null; addedChannelCount: number; baselineChannelCount: number; baselineLayoutRevision: number; blockerCount: number; channelId: string; guildId: string; observedChannelCount: number | null; observedLayoutRevision: number | null; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "blocked" | "completed" | "completed-with-drift"; targetKind: ChannelDeletionTargetKind; verification: "drift" | "match" | "not-required"; } export interface ChannelDeletionServiceClient extends Pick { } export interface ChannelDeletionServiceOptions { activityStore: ActivityStore; client: ChannelDeletionServiceClient; clock?: () => Date; layoutSource: GatewayChannelLayoutSource; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; recoveryAttestationKey?: Uint8Array; verificationTimeoutMs?: number; } export declare function normalizeChannelDeletionRequest(request: ChannelDeletionRequest): NormalizedChannelDeletionRequest; export declare class ChannelDeletionService { #private; constructor(options: ChannelDeletionServiceOptions); audit(applicationId: string, botId: string, guildId: string, channelId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: ChannelDeletionRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: ChannelDeletionRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=channel-deletion-service.d.ts.map