import type { ActivityStore } from "./activity-log.js"; import { type GuildCommunityChangeField } from "./constants.js"; import { type DiscordClient } from "./discord-client.js"; import type { GatewayChannelLayoutSource } from "./gateway-channel-layout.js"; import { type GuildChannelEvidenceView } from "./guild-channel-evidence.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<{ channelTypes: number[]; communityDisablement: false; featureEditing: "add-community-only"; guildAllowlist: 100; requiredAcknowledgement: true; rulesAndPublicUpdatesMustDiffer: true; supportedFields: ("communityEnabled" | "publicUpdatesChannelId" | "rulesChannelId" | "safetyAlertsChannelId")[]; }>; export interface GuildCommunityChangeRequest { acknowledgeCommunityEnablement: true; auditReason: string; guildId: string; operationKey: string; publicUpdatesChannelId: string; rulesChannelId: string; safetyAlertsChannelId: string | null; } export interface NormalizedGuildCommunityChangeRequest { acknowledgeCommunityEnablement: true; auditReason: string; guildId: string; operationKeyHash: string; publicUpdatesChannelId: string; rulesChannelId: string; safetyAlertsChannelId: string | null; } export interface GuildCommunityAccessEvidence { appliedRoleIds: string[]; authorizedForEnablement: boolean; authorizedForRoutingChange: boolean; botAdministrator: boolean; botIsGuildOwner: boolean; complete: true; effectivePermissionNames: DiscordPermissionName[]; manageGuild: boolean; unknownPermissionBitsPresent: false; warnings: string[]; } export interface GuildCommunityChannelReferenceView { channelId: string; direct: true; everyoneCanSend: boolean | null; everyoneCanView: boolean | null; exists: true; parentId: string | null; type: number; unknownPermissionBitsPresent: false | null; } export interface GuildCommunityConfigurationView { communityEnabled: boolean; featureCount: number; featureDigest: string; issues: string[]; publicUpdatesChannel: GuildCommunityChannelReferenceView | null; publicUpdatesChannelId: string | null; rulesChannel: GuildCommunityChannelReferenceView | null; rulesChannelId: string | null; safetyAlertsChannel: GuildCommunityChannelReferenceView | null; safetyAlertsChannelId: string | null; stateDigest: string; } export interface GuildCommunityPrivacyProjection { auditReasons: "not-persisted"; channelNamesAndTopics: "omitted"; featureValues: "digests-only"; guildPresentation: "omitted"; memberProfiles: "omitted"; persistence: "content-free-identifiers-and-digests-only"; rawPayloads: "omitted"; roleNames: "omitted"; } export interface GuildCommunityVerificationBoundary { automaticRetry: false; featureRemoval: false; freshApiReadback: true; gatewayLayoutContinuity: true; mutationResponse: true; rollback: "not-automatic"; } export interface GuildCommunityAuditResult { access: GuildCommunityAccessEvidence; applicationId: string; botId: string; configuration: GuildCommunityConfigurationView; guildId: string; inventory: GuildChannelEvidenceView; localConstraints: typeof LOCAL_CONSTRAINTS; privacy: GuildCommunityPrivacyProjection; schemaVersion: number; status: "ok"; verificationBoundary: GuildCommunityVerificationBoundary; warnings: string[]; } export interface GuildCommunityChangePlan { access: GuildCommunityAccessEvidence; acknowledgeCommunityEnablement: true; applicationId: string; auditReason: string; botId: string; changedFields: GuildCommunityChangeField[]; createdAt: string; current: GuildCommunityConfigurationView; desired: GuildCommunityConfigurationView; digest: string; enablementRequired: boolean; guildId: string; inventory: GuildChannelEvidenceView; localConstraints: typeof LOCAL_CONSTRAINTS; operationKeyHash: string; preservedFeatureCount: number; preservedFeatureDigest: string; privacy: GuildCommunityPrivacyProjection; requiredPermission: "ADMINISTRATOR" | "MANAGE_GUILD"; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; verificationBoundary: GuildCommunityVerificationBoundary; warnings: string[]; writeRequired: boolean; } export interface GuildCommunityChangeResult { activityId: string | null; changedFields: GuildCommunityChangeField[]; enablementRequired: boolean; guildId: string; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed"; verification: "match" | "not-required"; warnings: string[]; } export interface GuildCommunityServiceClient extends Pick { } export interface GuildCommunityServiceOptions { activityStore: ActivityStore; client: GuildCommunityServiceClient; clock?: () => Date; layoutSource: GatewayChannelLayoutSource; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function assertGuildCommunityAuditInput(guildId: string): void; export declare function normalizeGuildCommunityChangeRequest(request: GuildCommunityChangeRequest): NormalizedGuildCommunityChangeRequest; export declare class GuildCommunityService { #private; constructor(options: GuildCommunityServiceOptions); get(applicationId: string, botId: string, guildId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: GuildCommunityChangeRequest, options?: RequestOptions): Promise; reconcilePlan(applicationId: string, botId: string, request: GuildCommunityChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: GuildCommunityChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=guild-community-service.d.ts.map