import type { ActivityStore } from "./activity-log.js"; import { type DiscordClient } from "./discord-client.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 BulkGuildBanRequest { auditReason: string; deleteMessageSeconds?: number; guildId: string; operationKey: string; userIds: readonly string[]; } export interface NormalizedBulkGuildBanRequest { auditReason: string; deleteMessageSeconds: number; guildId: string; operationKey: string; operationKeyHash: string; targetSetDigest: string; userIds: string[]; } export interface BulkGuildBanTargetPlan { administrator: boolean | null; banState: "not-banned"; bot: boolean; globalName: string | null; highestRoleIds: string[]; highestRolePosition: number | null; id: string; membership: "member" | "non-member"; nickname: string | null; roleIds: string[]; username: string; } export interface BulkGuildBanPlan { applicationId: string; auditReason: string; botId: string; createdAt: string; deleteMessageSeconds: number; digest: string; estimatedRequests: { destructive: 1; planningEvidence: number; readback: number; }; guildId: string; memberCount: number; nonMemberCount: number; operationKeyHash: string; permission: { appliedRoleIds: string[]; botAdministrator: boolean; botGuildOwner: boolean; botHighestRoleIds: string[]; botHighestRolePosition: number; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; required: readonly ["BAN_MEMBERS", "MANAGE_GUILD"]; unknownPermissionBits: string; }; privacy: { persistence: "content-free-exact-id-outcomes-only"; rawPayloadExposed: false; transientUntrustedFields: readonly [ "globalName", "nickname", "username" ]; }; risks: string[]; schemaVersion: number; status: "planned"; targetCount: number; targetSetDigest: string; targets: BulkGuildBanTargetPlan[]; verificationBoundary: { automaticRetry: false; destructiveRequests: 1; exactReadbackPerTarget: true; partialSuccess: "explicit"; rollback: "not-automatic"; subsetRetry: "never-automatic"; }; warnings: string[]; } export interface BulkGuildBanResult { activityId: string; guildId: string; observedBannedUserIds: string[]; observedNotBannedUserIds: string[]; operationKeyHash: string; planDigest: string; requestedUserIds: string[]; responseBannedUserIds: string[]; responseFailedUserIds: string[]; schemaVersion: number; status: "completed" | "completed-with-drift"; targetSetDigest: string; verification: "drift" | "match"; } export interface BulkGuildBanServiceOptions { activityStore: ActivityStore; client: Pick; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeBulkGuildBanRequest(request: BulkGuildBanRequest): NormalizedBulkGuildBanRequest; export declare class BulkGuildBanService { #private; constructor(options: BulkGuildBanServiceOptions); plan(applicationId: string, botId: string, request: BulkGuildBanRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, requestValue: BulkGuildBanRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=bulk-guild-ban-service.d.ts.map