import { EggContext } from '@eggjs/tegg';
import { Static } from '@sinclair/typebox';
import { AbstractController } from './AbstractController';
declare const UserRule: import("@sinclair/typebox").TObject<{
    type: import("@sinclair/typebox").TLiteral<"user">;
    name: import("@sinclair/typebox").TString;
    password: import("@sinclair/typebox").TString;
    email: import("@sinclair/typebox").TOptional<import("@sinclair/typebox").TString>;
}>;
type User = Static<typeof UserRule>;
export declare class UserController extends AbstractController {
    loginOrCreateUser(ctx: EggContext, username: string, user: User): Promise<{
        ok: boolean;
        id: string;
        rev: string | undefined;
        token: string | undefined;
    }>;
    logout(ctx: EggContext, token: string): Promise<{
        ok: boolean;
    }>;
    showUser(ctx: EggContext, username: string): Promise<{
        _id: string;
        name: string;
        email: string | undefined;
    }>;
    whoami(ctx: EggContext): Promise<{
        username: string;
        name: string;
        description: string | undefined;
        allowedPackages: string[] | undefined;
        allowedScopes: string[] | undefined;
        lastUsedAt: Date;
        expiredAt: Date;
        key: string;
        cidr_whitelist: string[];
        readonly: boolean;
        created: Date;
        updated: Date;
        type: import("../../core/entity/Token").TokenType | undefined;
    } | {
        username: string;
        name?: undefined;
        description?: undefined;
        allowedPackages?: undefined;
        allowedScopes?: undefined;
        lastUsedAt?: undefined;
        expiredAt?: undefined;
        key?: undefined;
        cidr_whitelist?: undefined;
        readonly?: undefined;
        created?: undefined;
        updated?: undefined;
        type?: undefined;
    }>;
    starredByUser(): Promise<void>;
    showProfile(ctx: EggContext): Promise<{
        name: string;
        email: string;
        email_verified: boolean;
        created: Date;
        updated: Date;
    }>;
    saveProfile(): Promise<void>;
}
export {};
