import { Observable } from 'rxjs';
import { LcACLType, LcACLCanType, AuthModelList } from './lc-acl.type';
/**
 *
 * 务必在根目录注册 `LcAclModule.forRoot()` 才能使用服务
 */
export declare class LcAClService {
    private options;
    private roles;
    private types;
    private permissionGroups;
    private authPaths;
    private full;
    private aclChange;
    /** ACL变更通知 */
    get change(): Observable<LcACLType | boolean | null>;
    /** 获取所有数据 */
    get data(): {
        full: boolean;
        roles: string[];
        permissionGroups: string[];
        authPaths: Map<string, string>;
    };
    constructor();
    private parseLcACLType;
    /**
     * 设置当前用户角色或权限能力（会先清除所有）
     */
    set(value: LcACLType): void;
    /**
     * 标识当前用户为全量，即不受限
     */
    setFull(val: boolean): void;
    /**
     * 设置当前用户角色（会先清除所有）
     */
    setRole(roles: string[]): void;
    /**
     * 为当前用户增加角色或权限能力
     */
    add(value: LcACLType): void;
    /**
     * 为当前用户附加角色
     */
    attachRole(roles: string[]): void;
    /**
     * 为当前用户移除角色
     */
    removeRole(roles: string[]): void;
    /**
     * 当前用户是否有对应角色，其实 `number` 表示Ability
     *
     * - 当 `full: true` 或参数 `null` 时返回 `true`
     * - 若使用 `LcACLType` 参数，可以指定 `mode` 校验模式
     */
    can(roleOrAbility: LcACLCanType | null): boolean;
    /**
     * 路由权限拦截
     * @param url
     * @returns
     */
    canAuthUrl(url: string): boolean;
    /**
     * 获取当前url对应是哪一个model_id
     * @param url
     * @returns
     */
    getUrlModeId(url: string): string;
    getAuthPaths(value: AuthModelList[]): Map<string, string>;
}
