import { AccessBehave, AccessDecision, type AccessPath } from './common';
import type { AccessContext } from './context';
/**
 * 访问处理器
 */
export interface AccessHandler {
    /**
     * 没有资源
     * @param context 上下文
     */
    notResource(context: AccessContext): AccessBehave;
    /**
     * 没有认证
     * @param context 上下文
     */
    notAuthentication(context: AccessContext): AccessBehave;
    /**
     * 无效认证
     * @param context 上下文
     */
    invalidAuthentication(context: AccessContext): AccessBehave;
    /**
     * 没有授权
     * @param context 上下文
     */
    notAuthorization(context: AccessContext): AccessBehave;
    /**
     * 没有签名
     * @param context 上下文
     */
    notSignature(context: AccessContext): AccessBehave;
    /**
     * 访问拒绝
     * @param context 上下文
     */
    accessDenied(context: AccessContext): AccessBehave;
    /**
     * 允许访问
     * @param context 上下文
     */
    allowAccess(context: AccessContext): AccessBehave;
    /**
     * 错误决策
     * @param context 上下文
     * @param decision 决策
     */
    errorDecision(context: AccessContext, decision: AccessDecision): void;
}
/**
 * 行为路径
 */
export type BehavePath = string | Partial<AccessPath>;
/**
 * 行为配置
 */
export type BehaveConfig = {
    /**
     * 没有资源路径值
     */
    readonly notResourcePath?: BehavePath;
    /**
     * 没有资源函数
     * @param context 上下文
     */
    readonly notResourceFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 没有认证路径值
     */
    readonly notAuthenticationPath?: BehavePath;
    /**
     * 没有认证函数
     * @param context 上下文
     */
    readonly notAuthenticationFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 无效认证路径值
     */
    readonly invalidAuthenticationPath?: BehavePath;
    /**
     * 无效认证函数
     * @param context 上下文
     */
    readonly invalidAuthenticationFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 没有授权路径值
     */
    readonly notAuthorizationPath?: BehavePath;
    /**
     * 没有授权函数
     * @param context 上下文
     */
    readonly notAuthorizationFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 没有签名路径值
     */
    readonly notSignaturePath?: BehavePath;
    /**
     * 没有签名函数
     * @param context 上下文
     */
    readonly notSignatureFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 拒绝访问路径值
     */
    readonly accessDeniedPath?: BehavePath;
    /**
     * 拒绝访问函数
     * @param context 上下文
     */
    readonly accessDeniedFunc?: (context: AccessContext) => AccessBehave;
    /**
     * 允许访问函数
     * @param context 上下文
     */
    readonly allowAccessFunc?: (context: AccessContext) => void;
    /**
     * 错误决策函数
     * @param context 上下文
     * @param decision 决策
     */
    readonly errorDecisionFunc?: (context: AccessContext, decision: AccessDecision) => void;
};
/**
 * 行为处理器
 */
export declare class BehaveHandler implements AccessHandler {
    /**
     * 行为配置
     * @private
     */
    private _config;
    /**
     * 构造函数
     * @param config 行为配置
     */
    constructor(config: BehaveConfig);
    /**
     * 覆盖配置
     * @param config 行为配置
     */
    config(config: BehaveConfig): void;
    /**
     * 没有资源
     * @param context 上下文
     */
    notResource(context: AccessContext): AccessBehave;
    /**
     * 没有认证
     * @param context 上下文
     */
    notAuthentication(context: AccessContext): AccessBehave;
    /**
     * 无效认证
     * @param context 上下文
     */
    invalidAuthentication(context: AccessContext): AccessBehave;
    /**
     * 没有授权
     * @param context 上下文
     */
    notAuthorization(context: AccessContext): AccessBehave;
    /**
     * 没有签名
     * @param context 上下文
     */
    notSignature(context: AccessContext): AccessBehave;
    /**
     * 拒绝访问
     * @param context 上下文
     */
    accessDenied(context: AccessContext): AccessBehave;
    /**
     * 允许访问
     * @param context 上下文
     */
    allowAccess(context: AccessContext): AccessBehave;
    /**
     * 错误决策
     * @param context 上下文
     * @param decision 决策
     */
    errorDecision(context: AccessContext, decision: AccessDecision): void;
}
