import { Subject } from 'rxjs';
import { AuthController, IAuthOptions } from './auth';
import { InfoController } from './info';
declare global {
    interface Window {
        __MICRO_APP_ENVIRONMENT__: boolean;
        rawWindow: Window;
        /**
         * 挂载的顶层  PortalAuthController
         * @type {PortalAuthController}
         * @memberof Window
         */
        PortalAuth: PortalAuthController;
    }
}
export interface IPortalAuthOptions {
    /**
     * Portal  类型
     * @type {('General' | 'BP' | 'SP')}
     * @memberof IPortalAuthOptions
     */
    PortalType?: 'General' | 'BP' | 'SP';
    /**
     * Token 类型
     * @type {('JWT' | 'Other')}
     * @memberof IPortalAuthOptions
     */
    TokenType?: 'JWT' | 'Other';
    BPAuth?: IAuthOptions;
    SPAuth?: IAuthOptions;
}
/**
 * Portal 认证信息 BP&SP
 * @export
 * @class PortalAuthController
 */
export declare class PortalAuthController {
    protected readonly options: IPortalAuthOptions;
    static get env(): {
        version: string;
        timestamp: string;
    };
    get env(): {
        version: string;
        timestamp: string;
    };
    /**
     * 存储的单列
     * @private
     * @static
     * @type {PortalAuthController}
     * @memberof PortalAuthController
     */
    protected static PortalAuth: PortalAuthController;
    /**
     * 混合认证
     * @protected
     * @static
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected static GeneralAuth: AuthController;
    /**
     * BP 认证
     * @protected
     * @static
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected static BPAuth: AuthController;
    /**
     * SP 认证
     * @protected
     * @static
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected static SPAuth: AuthController;
    /**
     * 基础信息
     * @protected
     * @static
     * @type {InfoController}
     * @memberof PortalAuthController
     */
    protected static PortalInfo: InfoController;
    /**
     * 引流信息
     * @protected
     * @static
     * @type {InfoController}
     * @memberof PortalAuthController
     */
    protected static PortalDrainage: InfoController;
    protected static createAuth(options: IPortalAuthOptions): void;
    constructor(options?: IPortalAuthOptions);
    /**
     * 持久化初始化完成 Subject
     * @type {Promise<any>}
     * @memberof ControllerUser
     */
    protected readonly HydrateSubject: Subject<Boolean>;
    /**
    * 持久化初始化完成 Promise
    * @type {Promise<any>}
    * @memberof ControllerUser
    */
    get HydrateAsync(): Promise<this>;
    /**
     * 异步 HydrateSubject 已经完成
     * @readonly
     * @memberof PortalAuthController
     */
    get HydrateisStopped(): boolean;
    /**
     * BP Auth
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected get BPAuth(): AuthController;
    /**
     * SP Auth
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected get SPAuth(): AuthController;
    /**
     * 通用的 Auth
     * @type {AuthController}
     * @memberof PortalAuthController
     */
    protected get GeneralAuth(): AuthController;
    /**
     * 数据 Info
     * @readonly
     * @memberof PortalAuthController
     */
    protected get PortalInfo(): InfoController<any>;
    /**
     * 数据 引流
     * @readonly
     * @protected
     * @memberof PortalAuthController
     */
    protected get PortalDrainage(): InfoController<any>;
    /**
     * 基础数据
     * @readonly
     * @memberof PortalAuthController
     */
    get Info(): any;
    /**
     * 引流数据
     * @readonly
     * @memberof PortalAuthController
     */
    get Drainage(): any;
    /**
     * AccessToken 返回校验 时间是否过期 过期 的 AccessToken 不返回
     * @readonly
     * @memberof PortalAuthController
     */
    get AccessToken(): any;
    /**
     * AccessToken 解码信息
     * @readonly
     * @memberof PortalAuthController
     */
    get JwtDecoded(): import("./auth").JWTDecoded;
    /**
     * 保存 AccessToken 校验有效性 无效过滤
     * @param {string} [AccessToken=undefined]
     * @memberof PortalAuthController
     */
    onSaveAccessToken(AccessToken?: string, setCookie?: boolean): void;
    /**
     * 存储info 信息
     * @param {*} value
     * @memberof PortalAuthController
     */
    onSaveInfo(value: any): void;
    /**
     * 存储 Drainage 信息
     * @param {*} value
     * @memberof PortalAuthController
     */
    onSaveDrainage(value: any): void;
    /**
    * 清理所有的登录信息
    * @return {*}
    * @memberof AuthController
    */
    onClear(): Promise<void>;
    /**
    * 创建持久化存储
    * @memberof BaseModel
    */
    protected createHydrate(): Promise<void>;
}
