import type { ClientToolRules, APIGroupConfig } from '@mondaydotcomorg/atp-protocol';
/**
 * Request-scoped context accessible from anywhere in the call stack.
 * This allows services to automatically access request-level configuration
 * without explicit parameter passing.
 */
export interface RequestScopedContext {
    toolRules?: ClientToolRules;
}
/**
 * Run a function within a request scope.
 * All code executed within the callback can access the scoped context.
 */
export declare function runInRequestScope<T>(context: RequestScopedContext, fn: () => T): T;
/**
 * Get the current request-scoped tool rules.
 * Returns undefined if not in a request scope or no rules are set.
 */
export declare function getRequestToolRules(): ClientToolRules | undefined;
/**
 * Get the full request-scoped context.
 */
export declare function getRequestScope(): RequestScopedContext | undefined;
/**
 * Filter API groups based on tool rules.
 * Returns a new array with only allowed groups and functions.
 * Blocked tools simply don't exist in the result.
 *
 * @param apiGroups - All API groups to filter
 * @param rules - Tool rules to apply (defaults to current request's rules)
 */
export declare function filterApiGroups(apiGroups: APIGroupConfig[], rules?: ClientToolRules): APIGroupConfig[];
//# sourceMappingURL=request-scope.d.ts.map