import type { AccessPermission, AccessPermissions } from './common';
/**
 * 访问认证
 */
export interface AccessAuthentication {
    /**
     * 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 设置已认证
     * @param authenticated 已认证
     */
    setAuthenticated(authenticated: boolean): void;
}
/**
 * 访问授权
 */
export interface AccessAuthorization {
    /**
     * 获取权限集合
     */
    getPermissions(): Set<AccessPermission>;
}
/**
 * 访问数据表
 */
export interface AccessDatasheet<Datasheet> {
    /**
     * 获取数据表
     */
    getDatasheet(): Datasheet;
}
/**
 * 认证数据表
 */
export type AuthenticationDatasheet<P = unknown> = P & {
    /**
     * 已认证
     */
    readonly authenticated: boolean;
};
/**
 * 授权数据表
 */
export type AuthorizationDatasheet<P = unknown> = P & {
    /**
     * 权限集合
     */
    readonly permissions: AccessPermissions | Set<AccessPermission>;
};
/**
 * 用户数据表
 */
export type UserDatasheet<P = unknown> = P & AuthenticationDatasheet<P> & AuthorizationDatasheet<P> & {
    /**
     * 无效的
     */
    readonly invalid?: boolean;
};
/**
 * 简单认证
 */
export declare class SimpleAuthentication<Datasheet> implements AccessAuthentication, AccessDatasheet<AuthenticationDatasheet<Datasheet>> {
    /**
     * 数据表
     * @private
     */
    private readonly datasheet;
    /**
     * 已认证
     * @private
     */
    private authenticated;
    /**
     * 构造函数
     * @param datasheet 数据表
     */
    constructor(datasheet: AuthenticationDatasheet<Datasheet>);
    /**
     * 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 设置已认证
     * @param authenticated 已认证
     */
    setAuthenticated(authenticated: boolean): void;
    /**
     * 获取数据表
     */
    getDatasheet(): AuthenticationDatasheet<Datasheet>;
}
/**
 * 简单授权
 */
export declare class SimpleAuthorization<Datasheet> implements AccessAuthorization, AccessDatasheet<AuthorizationDatasheet<Datasheet>> {
    /**
     * 数据表
     * @private
     */
    private readonly datasheet;
    /**
     * 权限集合
     * @private
     */
    private readonly permissions;
    /**
     * 构造函数
     * @param datasheet 数据表
     */
    constructor(datasheet: AuthorizationDatasheet<Datasheet>);
    /**
     * 获取权限集合
     */
    getPermissions(): Set<AccessPermission>;
    /**
     * 获取数据表
     */
    getDatasheet(): AuthorizationDatasheet<Datasheet>;
}
/**
 * 简单用户
 */
export declare class SimpleUser<Datasheet> implements AccessAuthentication, AccessAuthorization, AccessDatasheet<UserDatasheet<Datasheet>> {
    /**
     * 数据表
     * @private
     */
    private readonly datasheet;
    /**
     * 权限集合
     * @private
     */
    private readonly permissions;
    /**
     * 已认证
     * @private
     */
    private authenticated;
    /**
     * 无效的
     * @private
     */
    private invalid;
    /**
     * 构造函数
     * @param datasheet 数据表
     */
    constructor(datasheet: UserDatasheet<Datasheet>);
    /**
     * 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 设置已认证
     * @param authenticated 已认证
     */
    setAuthenticated(authenticated: boolean): void;
    /**
     * 获取权限集合
     */
    getPermissions(): Set<AccessPermission>;
    /**
     * 获取数据表
     */
    getDatasheet(): UserDatasheet<Datasheet>;
    /**
     * 是否无效的
     */
    isInvalid(): boolean;
    /**
     * 设置无效的
     * @param invalid 无效的
     */
    setInvalid(invalid: boolean): void;
}
