import { Token } from './Token';
import { IJWTVerifyOptions } from './IJWTVerifyOptions';
import { IAuthTokenData } from './IAuthTokenData';
import { StringValue } from 'ms';
export type TExpiresIn = StringValue | number;
export declare class TokenManager<TAuthToken extends IAuthTokenData = IAuthTokenData> {
    private $secret;
    constructor(secret: string);
    sign(payload: {
        [key: string]: any;
    }, expiresIn: TExpiresIn): Promise<Token>;
    verify(token: Token, options?: IJWTVerifyOptions): Promise<TAuthToken>;
    /**
     * Decodes the token. Use this method only on verified tokens as this does not verify against tampering
     *
     * @param token
     * @returns
     */
    decodeSync(token: Token): TAuthToken;
    /**
     * Decodes the token. Use this method only on verified tokens as this does not verify against tampering
     *
     * @param token
     * @returns
     */
    decode(token: Token): Promise<TAuthToken>;
}
