import type { ActivityStore, MemberModerationActivityAction } 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 MemberModerationRequest { action: MemberModerationActivityAction; auditReason: string; deleteMessageSeconds?: number; durationMinutes?: number; guildId: string; operationKey: string; userId: string; } export interface NormalizedMemberModerationRequest { action: MemberModerationActivityAction; auditReason: string; deleteMessageSeconds: number | null; durationMinutes: number | null; guildId: string; operationKey: string; operationKeyHash: string; userId: string; } export interface MemberModerationPrivacyProjection { persistence: "content-free-outcomes-only"; rawPayloadExposed: false; transientUntrustedFields: readonly [ "globalName", "nickname", "username" ]; } export interface MemberModerationVerificationBoundary { automaticRetry: false; freshApiReadback: true; mutationResponse: "action-dependent"; rollback: "not-automatic"; } export interface MemberModerationPlan { action: MemberModerationActivityAction; applicationId: string; auditReason: string; botId: string; createdAt: string; digest: string; guildId: string; operationKeyHash: string; parameters: { deleteMessageSeconds: number | null; durationMinutes: number | null; estimatedTimeoutUntil: string | null; }; permission: { botAdministrator: boolean; botHighestRolePosition: number; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; required: DiscordPermissionName; targetAdministrator: boolean | null; targetHighestRolePosition: number | null; unknownPermissionBits: string; }; privacy: MemberModerationPrivacyProjection; risks: string[]; schemaVersion: number; status: "planned"; target: { banState: "banned" | "not-banned"; bot: boolean; currentTimeoutUntil: string | null; globalName: string | null; id: string; membership: "member" | "non-member"; nickname: string | null; username: string; }; verificationBoundary: MemberModerationVerificationBoundary; warnings: string[]; } export type MemberModerationObservedState = { kind: "ban"; state: "banned" | "not-banned"; } | { kind: "membership"; state: "member" | "non-member"; } | { kind: "timeout"; timeoutUntil: string | null; }; export interface MemberModerationResult { action: MemberModerationActivityAction; activityId: string; guildId: string; observedState: MemberModerationObservedState; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "completed" | "completed-with-drift"; timeoutUntil: string | null; userId: string; verification: "drift" | "match"; } export interface AdministrationServiceOptions { activityStore: ActivityStore; client: Pick; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeMemberModerationRequest(request: MemberModerationRequest): NormalizedMemberModerationRequest; export declare class AdministrationService { #private; constructor(options: AdministrationServiceOptions); plan(applicationId: string, botId: string, request: MemberModerationRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: MemberModerationRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=administration-service.d.ts.map