import type { TokenOrProvider, UserWithId } from './types';
/**
 * TokenManager
 *
 * Handles all the operations around user token.
 */
export declare class TokenManager {
    private loadTokenPromise;
    private type;
    private readonly secret?;
    private token?;
    private tokenProvider?;
    private user?;
    private isAnonymous?;
    constructor(secret?: string);
    /**
     * Set the static string token or token provider.
     * Token provider should return a token string or a promise which resolves to string token.
     *
     * @param {TokenOrProvider} tokenOrProvider - the token or token provider.
     * @param {UserResponse} user - the user object.
     * @param {boolean} isAnonymous - whether the user is anonymous or not.
     */
    setTokenOrProvider: (tokenOrProvider: TokenOrProvider, user: UserWithId, isAnonymous: boolean) => Promise<void>;
    /**
     * Resets the token manager.
     * Useful for client disconnection or switching user.
     */
    reset: () => void;
    validateToken: (tokenOrProvider: TokenOrProvider) => void;
    tokenReady: () => Promise<string> | null;
    loadToken: () => Promise<string>;
    getToken: () => string | undefined;
    isStatic: () => boolean;
}
