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 interface MemberVerificationChangeRequest { auditReason: string; bypassesVerification: boolean; guildId: string; operationKey: string; userId: string; } export interface NormalizedMemberVerificationChangeRequest { auditReason: string; bypassesVerification: boolean; guildId: string; operationKey: string; operationKeyHash: string; userId: string; } export type MemberVerificationAuthorizationPath = "combined-moderation" | "guild-owner" | "manage-guild" | "manage-roles"; export interface MemberVerificationPermissionEvidence { administrator: boolean; authorizationPath: MemberVerificationAuthorizationPath; effectivePermissionNames: DiscordPermissionName[]; effectivePermissions: string; requiredPermissions: DiscordPermissionName[]; requiredPermissionsPresent: true; unknownPermissionBits: string; } export interface MemberVerificationHierarchyEvidence { botHighestRoleIds: string[]; botHighestRolePosition: number; targetAdministrator: false; targetBelowBot: true; targetHighestRoleIds: string[]; targetHighestRolePosition: number; } export interface MemberVerificationPrivacyProjection { persistence: "content-free-outcomes-only"; rawFlagsExposed: false; transientUntrustedFields: readonly ["guildName", "username"]; } export interface MemberVerificationChangePlan { applicationId: string; auditReason: string; botId: string; createdAt: string; desiredBypassesVerification: boolean; digest: string; guild: { id: string; name: string; ownerId: string; }; hierarchy: MemberVerificationHierarchyEvidence; operationKeyHash: string; permission: MemberVerificationPermissionEvidence; privacy: MemberVerificationPrivacyProjection; risks: string[]; schemaVersion: number; status: "already-current" | "planned"; target: { currentBypassesVerification: boolean; id: string; pending: boolean; username: string; }; warnings: string[]; writeRequired: boolean; } export interface MemberVerificationChangeResult { activityId: string | null; desiredBypassesVerification: boolean; guildId: string; observedBypassesVerification: boolean; operationKeyHash: string; planDigest: string; schemaVersion: number; status: "already-current" | "completed" | "completed-with-drift"; userId: string; verification: "drift" | "match" | "not-required"; } export interface MemberVerificationServiceOptions { activityStore: ActivityStore; client: Pick; clock?: () => Date; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeMemberVerificationChangeRequest(value: MemberVerificationChangeRequest): NormalizedMemberVerificationChangeRequest; export declare class MemberVerificationService { #private; constructor(options: MemberVerificationServiceOptions); plan(applicationId: string, botId: string, request: MemberVerificationChangeRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, request: MemberVerificationChangeRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=member-verification-service.d.ts.map