import type { ActivityStore } from "./activity-log.js"; import type { DiscordClient } from "./discord-client.js"; import { type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; declare const PRIVACY_OMITTED_FIELDS: readonly ["guilds.otherGuildIds", "guilds.otherGuildNames", "guilds.otherGuildProfiles", "member", "permissions", "rawPayloads", "reviewReason"]; export interface GuildDepartureRequest { acknowledgeAccessLoss: boolean; acknowledgeConcurrentOperationsStopped: boolean; acknowledgeReinviteRequired: boolean; guildId: string; operationKey: string; reviewReason: string; } export interface NormalizedGuildDepartureRequest extends Omit { operationKeyHash: string; } export interface GuildDeparturePrivacyProjection { otherGuildIdentitiesProjectedOut: true; omittedFields: typeof PRIVACY_OMITTED_FIELDS; persistence: "content-free-identifiers-only"; rawPayloads: "omitted"; targetGuildName: "transient-review-only"; } export interface GuildDeparturePlan { acknowledgments: { accessLoss: true; concurrentOperationsStopped: true; reinviteRequired: true; }; action: "leave"; applicationId: string; botId: string; createdAt: string; digest: string; guild: { id: string; name: string; requesterIsOwner: false; }; membership: { botMemberVerified: true; complete: true; inspectedGuilds: number; pages: number; present: true; }; operationKeyHash: string; privacy: GuildDeparturePrivacyProjection; reviewReason: string; schemaVersion: number; status: "planned"; warnings: string[]; } export interface GuildDepartureResult { activityId: string; applicationId: string; botId: string; guildId: string; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "completed"; verifiedAbsent: true; } export interface GuildDepartureServiceClient extends Pick { } export interface GuildDepartureServiceOptions { activityStore: ActivityStore; client: GuildDepartureServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function normalizeGuildDepartureRequest(request: GuildDepartureRequest): NormalizedGuildDepartureRequest; export declare class GuildDepartureService { #private; constructor(options: GuildDepartureServiceOptions); plan(applicationId: string, botId: string, request: GuildDepartureRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: GuildDepartureRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=guild-departure-service.d.ts.map