import type { ActivityStore } from "./activity-log.js"; import { type GuildProfileField } from "./constants.js"; import { type DiscordClient } from "./discord-client.js"; import { type DiscordGuildProfileMediaPresence } from "./guild-profile.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<{ descriptionCharacters: 120; guildAllowlist: 100; nameCharacters: 100; nameMinimumCharacters: 2; supportedFields: ("description" | "name")[]; }>; export interface GuildProfileChangeRequest { auditReason: string; description?: string | null; guildId: string; name?: string; operationKey: string; } export interface NormalizedGuildProfileChangeRequest { auditReason: string; description?: string | null; guildId: string; name?: string; operationKeyHash: string; requestedFields: GuildProfileField[]; } export interface GuildProfileAccessEvidence { appliedRoleIds: string[]; authorizedForChange: boolean; botAdministrator: boolean; botIsGuildOwner: boolean; complete: true; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; manageGuild: boolean; requiredPermission: "MANAGE_GUILD"; unknownPermissionBits: string; warnings: string[]; } export type GuildProfileMediaPresence = DiscordGuildProfileMediaPresence; export interface GuildProfileView { description: string | null; mediaPresence: GuildProfileMediaPresence; name: string; } export interface GuildProfilePrivacyProjection { mediaHashes: "presence-only"; persistence: "content-free-records-only"; profileText: "transient-untrusted"; rawPayloads: "omitted"; roleNames: "omitted"; } export interface GuildProfileVerificationBoundary { automaticRetry: false; freshApiReadback: true; mutationResponse: true; rollback: "not-automatic"; } export interface GuildProfileAuditResult { access: GuildProfileAccessEvidence; applicationId: string; botId: string; guildId: string; localConstraints: typeof LOCAL_CONSTRAINTS; privacy: GuildProfilePrivacyProjection; profile: GuildProfileView; schemaVersion: number; status: "ok"; verificationBoundary: GuildProfileVerificationBoundary; } export interface GuildProfileChangePlan { access: GuildProfileAccessEvidence; applicationId: string; auditReason: string; botId: string; changedFields: GuildProfileField[]; createdAt: string; current: GuildProfileView; desired: GuildProfileView; digest: string; guildId: string; localConstraints: typeof LOCAL_CONSTRAINTS; operationKeyHash: string; privacy: GuildProfilePrivacyProjection; requestedFields: GuildProfileField[]; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; verificationBoundary: GuildProfileVerificationBoundary; warnings: string[]; writeRequired: boolean; } export interface GuildProfileChangeResult { activityId: string | null; driftFields: GuildProfileField[]; guildId: string; operationKeyHash: string; planDigest: string; requestedFields: GuildProfileField[]; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; verification: "drift" | "match" | "not-required"; warnings: string[]; } export interface GuildProfileServiceClient extends Pick { } export interface GuildProfileServiceOptions { activityStore: ActivityStore; client: GuildProfileServiceClient; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: Pick; randomId?: () => string; } export declare function assertGuildProfileGetInput(guildId: string): void; export declare function normalizeGuildProfileChangeRequest(request: GuildProfileChangeRequest): NormalizedGuildProfileChangeRequest; export declare class GuildProfileService { #private; constructor(options: GuildProfileServiceOptions); get(applicationId: string, botId: string, guildId: string, options?: RequestOptions): Promise; plan(applicationId: string, botId: string, request: GuildProfileChangeRequest, options?: RequestOptions): Promise; reconcilePlan(applicationId: string, botId: string, request: GuildProfileChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: GuildProfileChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } export {}; //# sourceMappingURL=guild-profile-service.d.ts.map