import type { DiscordClient } from "./discord-client.js"; import { type DiscordPermissionName } from "./permissions.js"; import type { ScopePolicy } from "./policy.js"; import type { DiscordApplication, RequestOptions } from "./types.js"; export type GuildWebhookTypeName = "application" | "channel-follower" | "incoming" | "unknown"; export interface GuildWebhookAuditAccessEvidence { appliedRoleIds: string[]; botAdministrator: boolean; botIsGuildOwner: boolean; complete: true; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; manageWebhooks: true; requiredPermission: "MANAGE_WEBHOOKS"; unknownPermissionBits: string; } export interface GuildWebhookAuditRecord { applicationId: string | null; channel: { id: string; type: { code: number; name: string; }; } | null; createdAt: string; creatorUserId: string | null; id: string; name: string | null; nameCharacters: number; ownedByCurrentApplication: boolean; type: { code: number; name: GuildWebhookTypeName; }; } export type GuildWebhookAuditFindingCode = "administrator-authority" | "creator-evidence-unavailable" | "empty-inventory" | "future-schema-evidence" | "incoming-webhooks-present" | "other-application-webhooks-present" | "unbound-webhooks-present"; export interface GuildWebhookAuditFinding { code: GuildWebhookAuditFindingCode; severity: "info" | "warning"; summary: string; } export interface GuildWebhookAuditResult { access: GuildWebhookAuditAccessEvidence; application: { botId: string; id: string; }; exposure: { applications: { current: number; none: number; other: number; }; channels: { boundRecords: number; uniqueAffected: number; unboundRecords: number; }; creators: { present: number; unavailable: number; }; types: { application: number; channelFollowers: number; incoming: number; unknown: number; }; }; findingCounts: { info: number; warnings: number; }; findings: GuildWebhookAuditFinding[]; guildId: string; inventory: { channelCount: number; completeness: "complete-guild"; count: number; localRecordLimit: number; projectionComplete: boolean; unknownChannelTypes: number; unknownWebhookTypes: number; }; privacy: { omitted: readonly string[]; persistence: "none"; rawPayloads: "omitted"; text: "transient-untrusted"; unknownFields: "discarded"; }; records: GuildWebhookAuditRecord[]; schemaVersion: number; status: "ok"; warnings: readonly string[]; } export interface GuildWebhookAuditServiceClient extends Pick { } export interface GuildWebhookAuditServiceOptions { client: GuildWebhookAuditServiceClient; policy: ScopePolicy; } export declare class GuildWebhookAuditService { #private; constructor(options: GuildWebhookAuditServiceOptions); audit(application: DiscordApplication, botId: string, guildId: string, options?: RequestOptions): Promise; } //# sourceMappingURL=guild-webhook-audit-service.d.ts.map