import { type MemberRoleAction } from "./constants.js"; import type { MemberRoleChangePlan, MemberRoleChangeResult, MemberRoleService } from "./member-role-service.js"; import { type OperationReceipt, type OperationStore } from "./operation-store.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export interface BulkMemberRoleRequest { action: MemberRoleAction; auditReason: string; guildId: string; operationKey: string; roleId: string; userIds: readonly string[]; } export interface NormalizedBulkMemberRoleRequest { action: MemberRoleAction; auditReason: string; guildId: string; operationKey: string; operationKeyHash: string; roleId: string; targetSetDigest: string; userIds: string[]; } export type BulkMemberRoleTargetState = "already-current" | "completed" | "ready"; export interface BulkMemberRoleTargetPlan { checkpoint: { activityId: string; planDigest: string; timestamp: string; } | null; childOperationKeyHash: string; highRiskPermissionGains: MemberRoleChangePlan["highRiskPermissionGains"]; impact: MemberRoleChangePlan["impact"]; inspectionPlanDigest: string; member: MemberRoleChangePlan["member"]; permission: { targetBelowBot: boolean; targetHighestRoleIds: string[]; targetHighestRolePosition: number; }; state: BulkMemberRoleTargetState; userId: string; } export interface BulkMemberRolePlan { action: MemberRoleAction; applicationId: string; auditReason: string; botId: string; channelEvidence: MemberRoleChangePlan["channelEvidence"]; commonEvidenceDigest: string; counts: { alreadyCurrent: number; completed: number; ready: number; total: number; }; createdAt: string; digest: string; executionFrontier: { userIds: string[]; }; guild: MemberRoleChangePlan["guild"]; highRiskPermissions: MemberRoleChangePlan["highRiskPermissions"]; operation: { operationKeyHash: string; requestDigest: string; status: OperationReceipt["status"] | "unreserved"; }; permission: { botAdministrator: boolean; botEffectivePermissionNames: MemberRoleChangePlan["permission"]["botEffectivePermissionNames"]; botEffectivePermissions: string; botHighestRoleIds: string[]; botHighestRolePosition: number; channelOverwriteUnknownPermissionBits: string; guildManageRoles: boolean; guildRoleUnknownPermissionBits: string; roleBelowBot: boolean; roleOverwriteUnknownPermissionBits: string; rolePermissionsSubset: boolean; }; role: MemberRoleChangePlan["role"]; schemaVersion: number; status: "already-current" | "completed" | "planned" | "resume-ready"; targetCount: number; targetSetDigest: string; targets: BulkMemberRoleTargetPlan[]; verificationBoundary: { automaticRetry: false; exactReadbackPerWrite: true; maximumWrites: number; rollback: "never"; sequence: "canonical-user-id"; stopOnUnsettledTarget: true; }; warnings: string[]; } export interface BulkMemberRoleExecutedTarget { activityId: string | null; status: MemberRoleChangeResult["status"]; userId: string; } export interface BulkMemberRoleResult { action: MemberRoleAction; activityId: string | null; executedTargets: BulkMemberRoleExecutedTarget[]; guildId: string; operationKeyHash: string; planDigest: string; remainingUserIds: string[]; requestDigest: string; roleId: string; schemaVersion: number; status: "already-current" | "completed" | "paused"; targetSetDigest: string; } export interface BulkMemberRoleServiceOptions { clock?: () => Date; memberRoleService: Pick; operationStore: OperationStore; planKey?: Uint8Array; policy: ScopePolicy; randomId?: () => string; } export declare function normalizeBulkMemberRoleRequest(request: BulkMemberRoleRequest): NormalizedBulkMemberRoleRequest; export declare class BulkMemberRoleService { #private; constructor(options: BulkMemberRoleServiceOptions); plan(applicationId: string, botId: string, request: BulkMemberRoleRequest, options?: RequestOptions): Promise; execute(applicationId: string, botId: string, requestValue: BulkMemberRoleRequest, expectedDigest: string, options?: RequestOptions): Promise; } //# sourceMappingURL=bulk-member-role-service.d.ts.map