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"; declare const LOCAL_CONSTRAINTS: Readonly<{ guildAllowlist: 100; supportedChannelTypes: number[]; }>; export interface WidgetSettingsChangeRequest { auditReason: string; channelId: string | null; enabled: boolean; guildId: string; operationKey: string; } export interface NormalizedWidgetSettingsChangeRequest { auditReason: string; channelId: string | null; enabled: boolean; guildId: string; operationKeyHash: string; } export interface WidgetSettingsAccessEvidence { 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 WidgetChannelReferenceView { ageRestricted: boolean | null; channelId: string; direct: boolean; everyoneCanCreateInvites: boolean | null; everyoneCanView: boolean | null; exists: boolean; parentId: string | null; type: number | null; unknownPermissionBits: string | null; } export interface WidgetSettingsConfigurationView { channel: WidgetChannelReferenceView | null; channelId: string | null; changeBlockedReasons: string[]; enabled: boolean; issues: string[]; unknownFieldCount: number; } export interface WidgetSettingsGuildCrossCheck { channelIdObserved: boolean; enabledObserved: boolean; status: "match" | "partial-match" | "unavailable"; } export interface WidgetPublicExposureView { anonymousInviteGenerationPotential: boolean; anonymousWidgetDataPotential: boolean; anonymousWidgetFetched: false; anonymousWidgetImageFetched: false; manualPrivateProfileRestorationMayBeRequired: boolean; privateProfileStateObserved: false; serverProfileVisibility: "not-verifiable" | "public-by-widget"; } export interface WidgetSettingsPrivacyProjection { anonymousEndpoints: "not-called"; channelNames: "omitted"; invites: "omitted"; memberAndPresenceData: "omitted"; persistence: "none"; rawPayloads: "omitted"; unknownFields: "counts-only"; } export interface WidgetSettingsAuditResult { access: WidgetSettingsAccessEvidence; applicationId: string; botId: string; configuration: WidgetSettingsConfigurationView; guild: { id: string; name: string; }; guildCrossCheck: WidgetSettingsGuildCrossCheck; localConstraints: typeof LOCAL_CONSTRAINTS; privacy: WidgetSettingsPrivacyProjection; publicExposure: WidgetPublicExposureView; schemaVersion: number; status: "ok"; verificationBoundary: WidgetSettingsVerificationBoundary; } export interface WidgetSettingsChangeDiff { channelChanged: boolean; enabledChanged: boolean; } export interface WidgetSettingsPublicExposureAuthorization { required: boolean; satisfied: boolean; } export interface WidgetSettingsVerificationBoundary { anonymousWidgetReadbackPerformed: false; apiReadback: true; freshNonMemberReviewRecommended: boolean; privateProfileRestorationVerified: false; privateProfileStateObserved: false; } export interface WidgetSettingsChangePlan { access: WidgetSettingsAccessEvidence; applicationId: string; auditReason: string; botId: string; createdAt: string; current: WidgetSettingsConfigurationView; desired: WidgetSettingsConfigurationView; diff: WidgetSettingsChangeDiff; digest: string; guild: { id: string; name: string; }; guildCrossCheck: WidgetSettingsGuildCrossCheck; localConstraints: typeof LOCAL_CONSTRAINTS; operationKeyHash: string; privacy: WidgetSettingsPrivacyProjection; publicExposureAuthorization: WidgetSettingsPublicExposureAuthorization; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; verificationBoundary: WidgetSettingsVerificationBoundary; warnings: string[]; writeRequired: boolean; } export interface WidgetSettingsChangeResult { activityId: string | null; guildId: string; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; verification: "drift" | "match" | "not-required"; warnings: string[]; } export interface WidgetSettingsServiceClient extends Pick { } export interface WidgetSettingsServiceOptions { activityStore: ActivityStore; client: WidgetSettingsServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function assertWidgetSettingsGetInput(guildId: string): void; export declare function normalizeWidgetSettingsChangeRequest(request: WidgetSettingsChangeRequest): NormalizedWidgetSettingsChangeRequest; export declare class WidgetSettingsService { #private; constructor(options: WidgetSettingsServiceOptions); get(applicationId: string, botId: string, guildId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: WidgetSettingsChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: WidgetSettingsChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=widget-settings-service.d.ts.map