import EventEmitter from 'node:events';
export interface GatewayConfig {
    [key: string]: unknown;
}
export interface GatewayRequest {
    actor: string;
    action: string;
    resource?: string;
    data?: Record<string, unknown>;
    session?: string;
    confirmed?: boolean;
}
export interface GatewayContext {
    requestId: string;
    actor: string;
    action: string;
    resource: string | undefined;
    data: Record<string, unknown>;
    session: string | undefined;
    startTime: number;
}
export interface GatewayResult {
    success: boolean;
    requestId: string;
    data?: unknown;
    error?: {
        message: string;
        code: string;
        statusCode: number;
    };
    duration?: number;
}
interface AuditLogger {
    log(entry: Record<string, unknown>): Promise<void>;
}
interface EventBus {
    emit(event: string, data: Record<string, unknown>): void;
}
interface ConstitutionLike {
    getRules?(): unknown[];
    rules?: unknown[];
}
interface ConstitutionValidatorLike {
    enforce(request: Record<string, unknown>): Promise<unknown>;
}
interface PermissionManagerLike {
    enforce(actor: string, action: string, resource: string | undefined): void;
}
export interface GatewayDependencies {
    constitution?: ConstitutionLike | null;
    constitutionValidator?: ConstitutionValidatorLike | null;
    permissionManager?: PermissionManagerLike | null;
    auditLogger?: AuditLogger | null;
}
/**
 * Gateway - 统一网关
 * 所有操作的唯一入口。
 *
 * Pipeline (4 步):
 *   validate → guard → route → audit
 */
export declare class Gateway extends EventEmitter {
    auditLogger: AuditLogger | null;
    config: GatewayConfig | undefined;
    constitution: ConstitutionLike | null;
    constitutionValidator: ConstitutionValidatorLike | null;
    eventBus: EventBus | null;
    logger: import("winston").Logger;
    permissionManager: PermissionManagerLike | null;
    routes: Map<string, (ctx: GatewayContext) => Promise<unknown>>;
    constructor(config?: GatewayConfig);
    /** 设置依赖 */
    setDependencies({ constitution, constitutionValidator, permissionManager, auditLogger, }: GatewayDependencies): void;
    /** 注册路由处理器 */
    register(action: string, handler: (ctx: GatewayContext) => Promise<unknown>): void;
    /** 获取已注册的 action 列表 */
    getRegisteredActions(): string[];
    /** 执行操作（主入口） */
    execute(request: GatewayRequest): Promise<GatewayResult>;
    /**
     * 仅检查权限与宪法（不执行业务逻辑）
     * 用于 MCP Gateway gating
     */
    checkOnly(request: GatewayRequest): Promise<{
        success: boolean;
        requestId: string;
        error?: undefined;
    } | {
        success: boolean;
        requestId: string;
        error: {
            message: string;
            code: string;
            statusCode: number;
        };
    }>;
    /** validate — 验证请求格式 */
    validateRequest(request: GatewayRequest): void;
    /** guard — 权限检查 + 宪法验证 */
    guard(context: GatewayContext): Promise<void>;
    /** route — 路由到处理器 */
    routeToHandler(context: GatewayContext): Promise<unknown>;
    /** audit — 记录成功 */
    auditSuccess(context: GatewayContext, result: unknown): Promise<void>;
    /** audit — 记录失败 */
    auditFailure(context: GatewayContext, error: {
        message: string;
        code?: string;
        statusCode?: number;
    }): Promise<void>;
    /** 获取所有注册的路由 */
    getRoutes(): string[];
}
export default Gateway;
