import { PermissionDefinition } from '@happyvertical/smrt-users'; /** Authorizes manual case reassignment overriding automatic routing. */ export declare const REASSIGN_CASE_PERMISSION = "support.reassign-case"; /** Authorizes operator approval/rejection of Service Time Entries. */ export declare const APPROVE_TIME_ENTRY_PERMISSION = "support.approve-time-entry"; /** Authorizes plan administration (support + compensation plans). */ export declare const MANAGE_PLANS_PERMISSION = "support.manage-plans"; export declare const SUPPORT_PERMISSION_DEFS: PermissionDefinition[]; /** * An actor whose authority is expressed as held permission slugs. Minimal on * purpose — the gate depends on the permission model only (personas idiom). */ export interface SupportPrincipal { /** Stable id recorded as the acting reviewer/assigner. */ readonly id?: string; /** Tenant the authority was resolved for (cross-tenant acts are refused). */ readonly tenantId?: string; can(slug: string): boolean; } /** Build a {@link SupportPrincipal} from explicit granted slugs. */ export declare function supportPrincipalFromPermissions(permissions: Iterable, options?: { id?: string; tenantId?: string; }): SupportPrincipal; /** Register the support permissions (returns an unregister fn for tests). */ export declare function registerSupportPermissions(): () => void; /** * Register the support permissions once per process. Called as a package * entry side effect so any consumer sees the slugs in the catalog. */ export declare function ensureSupportPermissionsRegistered(): void; //# sourceMappingURL=permissions.d.ts.map