import type { ActivityStore } from "./activity-log.js"; import { type GuildIncidentActionField } from "./constants.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"; declare const LOCAL_CONSTRAINTS: Readonly<{ auditReasonDisposition: "local-review-only"; guildAllowlist: 100; maximumDisableDurationMs: number; supportedFields: ("directMessages" | "invites")[]; }>; export interface GuildIncidentActionChangeRequest { auditReason: string; directMessagesDisabledUntil?: string | null; guildId: string; invitesDisabledUntil?: string | null; operationKey: string; } export interface NormalizedGuildIncidentActionChangeRequest { auditReason: string; directMessagesDisabledUntil?: string | null; guildId: string; invitesDisabledUntil?: string | null; operationKeyHash: string; requestedFields: GuildIncidentActionField[]; } export interface GuildIncidentAccessEvidence { appliedRoleIds: string[]; authorizedForChange: boolean; botAdministrator: boolean; botIsGuildOwner: boolean; complete: true; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; manageGuild: boolean; requiredPermission: "MANAGE_GUILD"; unknownPermissionBits: string; warnings: string[]; } export interface GuildIncidentActionView { directMessagesDisabledUntil: string | null; dmSpamDetected: boolean; invitesDisabledUntil: string | null; raidDetected: boolean; sourceAvailable: boolean; unknownFieldCount: number; } export interface GuildIncidentPrivacyProjection { auditReason: "digest-bound-not-persisted"; detectionTimestamps: "boolean-presence-only"; guildPresentation: "omitted"; incidentActionValues: "transient-untrusted"; persistence: "content-free-records-only"; rawPayloads: "omitted"; roleNames: "omitted"; } export interface GuildIncidentVerificationBoundary { auditLogReasonHeader: false; automaticRetry: false; freshApiReadback: true; mutationResponse: true; rollback: "not-automatic"; } export type GuildIncidentActionEffect = "clear" | "disable" | "extend" | "shorten"; export interface GuildIncidentFieldEffect { effect: GuildIncidentActionEffect; field: GuildIncidentActionField; } export interface GuildIncidentAuditResult { access: GuildIncidentAccessEvidence; actions: GuildIncidentActionView; applicationId: string; botId: string; guildId: string; localConstraints: typeof LOCAL_CONSTRAINTS; privacy: GuildIncidentPrivacyProjection; schemaVersion: number; status: "ok"; verificationBoundary: GuildIncidentVerificationBoundary; } export interface GuildIncidentActionChangePlan { access: GuildIncidentAccessEvidence; applicationId: string; auditReason: string; botId: string; changedFields: GuildIncidentActionField[]; createdAt: string; current: GuildIncidentActionView; desired: GuildIncidentActionView; digest: string; effects: GuildIncidentFieldEffect[]; guildId: string; localConstraints: typeof LOCAL_CONSTRAINTS; operationKeyHash: string; privacy: GuildIncidentPrivacyProjection; requestedFields: GuildIncidentActionField[]; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; verificationBoundary: GuildIncidentVerificationBoundary; warnings: string[]; writeRequired: boolean; } export interface GuildIncidentActionChangeResult { activityId: string | null; driftFields: GuildIncidentActionField[]; guildId: string; operationKeyHash: string; planDigest: string; requestedFields: GuildIncidentActionField[]; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; verification: "drift" | "match" | "not-required"; warnings: string[]; } export interface GuildIncidentServiceClient extends Pick { } export interface GuildIncidentServiceOptions { activityStore: ActivityStore; client: GuildIncidentServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function assertGuildIncidentGetInput(guildId: string): void; export declare function normalizeGuildIncidentActionChangeRequest(request: GuildIncidentActionChangeRequest): NormalizedGuildIncidentActionChangeRequest; export declare class GuildIncidentService { #private; constructor(options: GuildIncidentServiceOptions); get(applicationId: string, botId: string, guildId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: GuildIncidentActionChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: GuildIncidentActionChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=guild-incident-service.d.ts.map