import type { PathPattern } from '../bridge';
import type { AccessPermission, AccessPermissions } from './common';
/**
 * 资源模式
 */
export type ResourcePattern = PathPattern<string> | string;
/**
 * 资源模式集合
 */
export type ResourcePatterns = ResourcePattern[];
/**
 * 资源标签
 */
export type ResourceLabel = string;
/**
 * 资源标签集合
 */
export type ResourceLabels = ResourceLabel[];
/**
 * 访问资源
 */
export interface AccessResource {
    /**
     * 获取模式集合
     */
    getPatterns(): Set<ResourcePattern>;
    /**
     * 获取权限集合
     */
    getPermissions(): Set<AccessPermission>;
    /**
     * 获取标签集合
     */
    getLabels(): Set<ResourceLabel>;
    /**
     * 是否包含模式
     * @param pattern 模式
     */
    hasPattern(pattern: ResourcePattern): boolean;
    /**
     * 是否包含权限
     * @param permission 权限
     */
    hasPermission(permission: AccessPermission): boolean;
    /**
     * 是否包含标签
     * @param label 标签
     */
    hasLabel(label: ResourceLabel): boolean;
    /**
     * 是否匿名的
     */
    isAnonymous(): boolean;
    /**
     * 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 是否已授权
     */
    isAuthorized(): boolean;
    /**
     * 是否已签名
     */
    isSignatured(): boolean;
    /**
     * 是否始终签名
     */
    isAlwaysSignature(): boolean;
    /**
     * 获取基础路径
     */
    getBasename(): string | undefined;
    /**
     * 设置基础路径
     */
    setBasename(basename: string | undefined): void;
}
/**
 * 访问资源集合
 */
export type AccessResources = AccessResource[];
/**
 * 简单资源
 */
export declare class SimpleResource implements AccessResource {
    /**
     * 权限：匿名的
     */
    static readonly PERMISSION_ANONYMOUS = "__anonymous__";
    /**
     * 权限：已认证
     */
    static readonly PERMISSION_AUTHENTICATED = "__authenticated__";
    /**
     * 权限：已授权
     */
    static readonly PERMISSION_AUTHORIZED = "__authorized__";
    /**
     * 标签：已签名
     */
    static readonly LABEL_SIGNATURED = "__signatured__";
    /**
     * 标签：始终签名
     */
    static readonly LABEL_ALWAYS_SIGNATURE = "__always_signature__";
    /**
     * 模式集合
     * @private
     */
    private readonly patterns;
    /**
     * 权限集合
     * @private
     */
    private readonly permissions;
    /**
     * 标签集合
     * @private
     */
    private readonly labels;
    /**
     * 匿名的
     * @private
     */
    private readonly anonymous;
    /**
     * 已认证
     * @private
     */
    private readonly authenticated;
    /**
     * 已授权
     * @private
     */
    private readonly authorized;
    /**
     * 已签名
     * @private
     */
    private readonly signatured;
    /**
     * 始终签名
     * @private
     */
    private readonly alwaysSignature;
    /**
     * 基础路径
     * @private
     */
    private basename?;
    /**
     * 构造函数
     * @param patterns 模式集合
     * @param permissions 权限集合
     * @param labels 标签集合
     * @param basename 基础路径
     */
    constructor(patterns: ResourcePatterns | Set<ResourcePattern>, permissions: AccessPermissions | Set<AccessPermission>, labels: ResourceLabels | Set<ResourceLabel>, basename?: string);
    /**
     * 获取模式集合
     */
    getPatterns(): Set<ResourcePattern>;
    /**
     * 获取权限集合
     */
    getPermissions(): Set<AccessPermission>;
    /**
     * 获取标签集合
     */
    getLabels(): Set<ResourceLabel>;
    /**
     * 是否包含模式
     * @param pattern 模式
     */
    hasPattern(pattern: ResourcePattern): boolean;
    /**
     * 是否包含权限
     * @param permission 权限
     */
    hasPermission(permission: AccessPermission): boolean;
    /**
     * 是否包含标签
     * @param label 标签
     */
    hasLabel(label: ResourceLabel): boolean;
    /**
     * 是否匿名的
     */
    isAnonymous(): boolean;
    /**
     * 是否已认证
     */
    isAuthenticated(): boolean;
    /**
     * 是否已授权
     */
    isAuthorized(): boolean;
    /**
     * 是否已签名
     */
    isSignatured(): boolean;
    /**
     * 是否始终签名
     */
    isAlwaysSignature(): boolean;
    /**
     * 获取基础路径
     */
    getBasename(): string | undefined;
    /**
     * 设置基础路径
     */
    setBasename(basename: string | undefined): void;
}
