import type { ExecutionContext } from '@nestjs/common'; import type { RolesProvider } from '@oidc-adapters/core'; export type RoleBasedAccessControlServiceOptions = RoleBasedAccessControlServiceOptionsContext | RoleBasedAccessControlServiceOptionsUser; export interface RoleBasedAccessControlServiceOptionsCommon { providerType: 'user' | 'context'; provider: UserRolesProviderFactory | ContextRolesProviderFactory; } export interface RoleBasedAccessControlServiceOptionsContext extends RoleBasedAccessControlServiceOptionsCommon { providerType: 'context'; provider: ContextRolesProviderFactory; } export interface RoleBasedAccessControlServiceOptionsUser extends RoleBasedAccessControlServiceOptionsCommon { providerType: 'user'; provider: UserRolesProviderFactory; } export type ContextRolesProviderFactory = (context: ExecutionContext) => RolesProvider; export type UserRolesProviderFactory = (user: Express.User) => RolesProvider; export declare const ROLE_BASED_ACCESS_CONTROL_SERVICE_OPTIONS: unique symbol; export declare class RoleBasedAccessControlService { private options; constructor(options: RoleBasedAccessControlServiceOptions); private getRolesProvider; hasAllRoles(context: ExecutionContext, roles: string | Iterable): Promise; hasOneRole(context: ExecutionContext, roles: string | Iterable): Promise; }