import { Context, Logger } from 'egg';
import type { Package as PackageEntity } from '../core/entity/Package.ts';
import type { Token as TokenEntity } from '../core/entity/Token.ts';
import type { User as UserEntity } from '../core/entity/User.ts';
export type TokenRole = 'read' | 'publish' | 'setting';
export declare class UserRoleManager {
    private readonly packageRepository;
    private readonly config;
    protected logger: Logger;
    private readonly registryManagerService;
    private readonly tokenService;
    private readonly teamRepository;
    private handleAuthorized;
    private currentAuthorizedUser;
    private currentAuthorizedToken;
    checkPublishAccess(ctx: Context, fullname: string): Promise<UserEntity>;
    getAuthorizedUserAndToken(ctx: Context): Promise<{
        token: TokenEntity;
        user: UserEntity;
    } | null>;
    requiredAuthorizedUser(ctx: Context, role: TokenRole): Promise<UserEntity>;
    requiredPackageMaintainer(pkg: PackageEntity, user: UserEntity): Promise<void>;
    requiredPackageScope(scope: string, user: UserEntity): Promise<void>;
    isAdmin(ctx: Context): Promise<boolean>;
    checkReadAccess(ctx: Context, scope: string, name: string): Promise<boolean>;
}
