import type { Tool } from '../../types/tools.js';
import { OverflowHandler } from '../shared/overflow.js';
import type { ExecCommandResult } from './schema.js';
import { ProcessManager } from '../shared/process-manager.js';
import type { FeatureFlagManager } from '../../runtime/feature-flags/index.js';
/**
 * Classify whether a failed exec result is retryable.
 *
 * Retryable: network errors (ECONNRESET, ENOTFOUND, ETIMEDOUT), lock/busy
 * (EBUSY, ENOMEM, ECONNREFUSED), HTTP-gateway-style exit codes (124=timeout,
 * 28=curl timeout). Terminal: permission denied (EACCES), missing binary
 * (ENOENT), syntax errors.
 *
 * @param result - The failed command result.
 * @param allowed - Optional allowlist of error category strings.
 */
export declare function isRetryableExecResult(result: ExecCommandResult, allowed?: ReadonlyArray<'network' | 'lock' | 'busy' | 'oom'>): boolean;
export declare function createExecTool(processManager: ProcessManager, options?: {
    readonly featureFlags?: Pick<FeatureFlagManager, 'isEnabled'> | null | undefined;
    readonly overflowHandler?: OverflowHandler | undefined;
}): Tool;
//# sourceMappingURL=runtime.d.ts.map