/**
 * Request Context Management
 *
 * Uses AsyncLocalStorage to track request-scoped data like session information
 * across async operations without needing to pass it through every function.
 *
 * This enables the compiler path to access session data (like agentDid) that
 * was set during handshake processing.
 */
import type { SessionContext } from '@kya-os/contracts/handshake';
export interface RequestContext {
    session?: SessionContext;
    requestId?: string;
    startTime?: number;
}
/**
 * Run a function with request context
 */
export declare function runWithContext<T>(context: RequestContext, fn: () => T | Promise<T>): T | Promise<T>;
/**
 * Get the current request context
 */
export declare function getContext(): RequestContext | undefined;
/**
 * Get the current session from context
 */
export declare function getCurrentSession(): SessionContext | undefined;
/**
 * Get the current agent DID from session
 */
export declare function getCurrentAgentDid(): string | undefined;
/**
 * Set session in current context
 *
 * NOTE: This only works if called within a runWithContext block
 */
export declare function setSession(session: SessionContext): void;
