import type { Snippet } from 'svelte'; import type { AccessLevel } from '../../molecules/AccessLevelToggle/AccessLevelToggle.svelte'; export type PermissionLevel = AccessLevel; export interface PermissionRole { id: string; label: string; description?: string; /** Cells for this role cannot be edited */ locked?: boolean; } export interface PermissionResource { id: string; label: string; description?: string; icon?: 'projects' | 'billing' | 'members' | 'api' | 'settings'; } /** roleId → resourceId → levels granted */ export type PermissionMap = Record>; interface PermissionsMatrixProps { title?: string; description?: string; roles?: PermissionRole[]; resources?: PermissionResource[]; levels?: PermissionLevel[]; value?: PermissionMap; /** Show search over resources */ searchable?: boolean; query?: string; showLegend?: boolean; class?: string; actions?: Snippet; onchange?: (value: PermissionMap) => void; onreset?: () => void; } declare const PermissionsMatrix: import("svelte").Component; type PermissionsMatrix = ReturnType; export default PermissionsMatrix;