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"; export type MemberNicknameTarget = { kind: "current-bot"; } | { kind: "member"; userId: string; }; export interface MemberNicknameChangeRequest { auditReason: string; guildId: string; nickname: string | null; operationKey: string; target: MemberNicknameTarget; } export interface NormalizedMemberNicknameChangeRequest { auditReason: string; guildId: string; nickname: string | null; operationKey: string; operationKeyHash: string; target: MemberNicknameTarget; } export interface MemberNicknamePermissionEvidence { administrator: boolean; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; requiredPermission: "CHANGE_NICKNAME" | "MANAGE_NICKNAMES"; requiredPermissionPresent: true; unknownPermissionBits: string; } export interface MemberNicknameHierarchyEvidence { botHighestRoleIds: string[]; botHighestRolePosition: number; targetAdministrator: false; targetBelowBot: true; targetHighestRoleIds: string[]; targetHighestRolePosition: number; } export interface MemberNicknamePrivacyProjection { persistence: "content-free-outcomes-only"; rawPayloadExposed: false; transientUntrustedFields: readonly [ "currentNickname", "desiredNickname", "guildName", "username" ]; } export interface MemberNicknameChangePlan { applicationId: string; auditReason: string; botId: string; createdAt: string; desiredNickname: string | null; digest: string; guild: { id: string; name: string; ownerId: string; }; hierarchy: MemberNicknameHierarchyEvidence | null; operationKeyHash: string; permission: MemberNicknamePermissionEvidence; privacy: MemberNicknamePrivacyProjection; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; target: { bot: boolean; currentNickname: string | null; id: string; kind: MemberNicknameTarget["kind"]; pending: boolean; username: string; }; warnings: string[]; writeRequired: boolean; } export interface MemberNicknameChangeResult { activityId: string | null; guildId: string; observedNickname: string | null; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; targetKind: MemberNicknameTarget["kind"]; userId: string; verification: "drift" | "match" | "not-required"; } export interface MemberNicknameServiceOptions { activityStore: ActivityStore; client: Pick; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeMemberNicknameChangeRequest(value: MemberNicknameChangeRequest): NormalizedMemberNicknameChangeRequest; export declare class MemberNicknameService { #private; constructor(options: MemberNicknameServiceOptions); plan(applicationId: string, botId: string, request: MemberNicknameChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: MemberNicknameChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=member-nickname-service.d.ts.map