/********************************************************************
 * @author:      Kaven
 * @email:       kaven@wuwenkai.com
 * @website:     http://blog.kaven.xyz
 * @file:        [Kaven-Utils] /src/KavenSSO/KavenSSO.ts
 * @create:      2018-10-20 07:12:13.205
 * @modify:      2020-06-24 08:56:05.766
 * @version:     2.0.6
 * @times:       70
 * @lines:       114
 * @copyright:   Copyright © 2018-2020 Kaven. All Rights Reserved.
 * @description: [description]
 * @license:     [license]
 ********************************************************************/
import { TStringObject, TStringOrUndefined } from "kaven-basic";
export interface ISSOParameterName {
    Action: string;
    AppID: string;
    UserID: string;
    ReturnTo: string;
    NotifyTo: string;
    SessionID: string;
    Token: string;
    Data: string;
}
export declare enum SSOAction {
    Login = "Login",
    Verify = "Verify",
    Logout = "Logout",
    NotifyLogout = "NotifyLogout"
}
export declare enum SSOVerifyError {
    TokenNotExist = "TokenNotExist",
    TokenInvalid = "TokenInvalid",
    TokenSignatureNotMatch = "TokenSignatureNotMatch",
    TokenClientIdNotMatch = "TokenClientIdNotMatch",
    JWTSecretNotExist = "JWTSecretNotExist",
    SSOTypeInvalid = "SSOTypeInvalid"
}
export declare const DefaultSSOParameterName: ISSOParameterName;
export interface ISSOClient {
    token: string;
    sessionID?: string;
    userID?: string;
}
export interface ISSOVerifyResult {
    parameters: TStringObject<TStringOrUndefined>;
    action?: SSOAction;
    userID?: string;
}
export declare abstract class KavenSSO {
    readonly Secret: string;
    readonly ParameterName: ISSOParameterName;
    readonly TokenName: string;
    EnableLog: boolean;
    constructor(secret: string, parameterName?: ISSOParameterName, tokenName?: string);
}
