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