import { FunctionToolConfig } from "./NativeSandboxExecutor.js";

//#region src/domains/run/tools/SandboxExecutorFactory.d.ts

/**
 * Factory for creating and managing sandbox executors
 * Routes execution to the appropriate sandbox provider (native or Vercel)
 */
declare class SandboxExecutorFactory {
  private static instance;
  private static sessionFactories;
  private nativeExecutor;
  private vercelExecutors;
  constructor();
  /**
   * Get singleton instance of SandboxExecutorFactory
   */
  static getInstance(): SandboxExecutorFactory;
  /**
   * Get a session-scoped instance of SandboxExecutorFactory.
   * Intended to scope Vercel sandbox pooling to a single message/session.
   */
  static getForSession(sessionId: string): SandboxExecutorFactory;
  /**
   * Cleanup and remove a session-scoped SandboxExecutorFactory.
   */
  static cleanupSession(sessionId: string): Promise<void>;
  /**
   * Execute a function tool using the appropriate sandbox provider
   */
  executeFunctionTool(functionId: string, args: Record<string, unknown>, config: FunctionToolConfig): Promise<unknown>;
  /**
   * Execute in native sandbox
   */
  private executeInNativeSandbox;
  /**
   * Execute in Vercel sandbox
   */
  private executeInVercelSandbox;
  /**
   * Clean up all sandbox executors
   */
  cleanup(): Promise<void>;
}
//#endregion
export { SandboxExecutorFactory };