import type { DiscordClient } from "./discord-client.js"; import { normalizeChannel } from "./normalize.js"; import { type DiscordChannelPermissionAction, type DiscordPermissionAction, type DiscordPermissionName, type PrincipalPermissionResult } from "./permissions.js"; import type { ScopePolicy } from "./policy.js"; import type { RequestOptions } from "./types.js"; export declare const PRINCIPAL_PERMISSION_SUBJECT_KINDS: readonly ["connector", "member", "role"]; export type PrincipalPermissionSubjectKind = typeof PRINCIPAL_PERMISSION_SUBJECT_KINDS[number]; export interface ExplainPrincipalPermissionsRequest { action?: DiscordPermissionAction; channelId?: string; guildId: string; requestedPermissions?: readonly DiscordPermissionName[]; subjectId?: string; subjectKind: PrincipalPermissionSubjectKind; targetRoleId?: string; targetUserId?: string; } export interface ExplainPrincipalPermissionsResult { channel: ReturnType | null; guildId: string; permissions: PrincipalPermissionResult; schemaVersion: number; status: "ok"; target: { id: string; kind: "member" | "role"; } | null; } export interface AuditChannelRoleAccessRequest { actions?: readonly DiscordChannelPermissionAction[]; afterRoleId?: string; channelId: string; limit?: number; } export interface AuditChannelRoleAccessResult { channel: ReturnType; confidence: "complete" | "partial"; guildId: string; memberOverwriteCount: number; page: { hasMore: boolean; nextCursor: string | null; requestedLimit: number; returned: number; totalRoles: number; }; permissionSourceChannelId: string; requestedActions: DiscordChannelPermissionAction[]; roles: Array<{ administrator: boolean; decisions: Partial>; id: string; managed: boolean; name: string; position: number; }>; schemaVersion: number; status: "ok"; summary: Partial>; unknownPermissionBits: string; warnings: string[]; } export interface PermissionServiceOptions { client: Pick; clock?: () => Date; policy: ScopePolicy; } export declare class PermissionService { #private; constructor(options: PermissionServiceOptions); explain(connectorBotId: string, request: ExplainPrincipalPermissionsRequest, options?: RequestOptions): Promise; auditChannelRoles(request: AuditChannelRoleAccessRequest, options?: RequestOptions): Promise; } //# sourceMappingURL=permission-service.d.ts.map