interface RateLimitConfig {
    windowMs: number;
    maxRequests: number;
}
declare class RateLimiter {
    private config;
    private limits;
    constructor(config: RateLimitConfig);
    check(key: string): void;
}
export declare const rateLimiter: RateLimiter;
interface SecurityConfig {
    authRequired: boolean;
}
export declare const configureSecurity: (config: Partial<SecurityConfig>) => void;
interface UserContext {
    id?: string;
    roles?: string[];
    permissions?: string[];
}
export interface RequestContext {
    requestId: string;
    timestamp: string;
}
export interface ToolContext {
    user?: UserContext;
    requestContext?: RequestContext;
    [key: string]: unknown;
}
export declare const checkPermission: (context: ToolContext | undefined, requiredPermission: string) => void;
export declare const sanitizeInput: {
    string: (input: string) => string;
    url: (input: string) => string;
    path: (input: string) => string;
};
export declare const createRequestContext: () => RequestContext;
export declare const createToolMiddleware: (toolName: string) => (handler: (input: unknown, context: ToolContext) => Promise<unknown>, input: unknown, context?: ToolContext) => Promise<unknown>;
export {};
