import { User } from './types.js';
import { UserManager } from './user-manager.js';
import { nanoid } from 'nanoid';
import { Disposable, Event } from 'open-collaboration-protocol';
import { Logger } from './utils/logging.js';
import { UserInfo } from './auth-endpoints/auth-endpoint.js';
import { Configuration } from './utils/configuration.js';
export interface DelayedAuth extends Disposable {
    update(jwt: string): void;
    onUpdate: Event<string>;
    onFail: Event<Error>;
    jwt?: string;
}
export declare class CredentialsManager {
    protected readonly userManager: UserManager;
    protected logger: Logger;
    protected configuration: Configuration;
    protected deferredAuths: Map<string, DelayedAuth>;
    protected nanoid: typeof nanoid;
    initialize(): void;
    confirmUser(confirmToken: string, user: UserInfo): Promise<string>;
    startAuth(): Promise<string>;
    getAuth(confirmToken: string): Promise<DelayedAuth | undefined>;
    getUser(token: string): Promise<User | undefined>;
    verifyJwt<T extends object>(jwt: string, verify: (obj: unknown) => obj is T): Promise<T>;
    protected getJwtPrivateKey(): Uint8Array;
    generateJwt(payload: object): Promise<string>;
    protected getJwtExpiration(): Promise<string | number | undefined>;
    protected generateAlphabet(): typeof nanoid;
    secureId(): string;
}
//# sourceMappingURL=credentials-manager.d.ts.map