/**
 * Assertion mapping and builders for agent harness tasks.
 *
 * Handles agent-specific assertion types (file-exists, file-contains,
 * command-succeeds, diff-matches) as well as standard pass-through
 * assertion types.
 *
 * Templated LLM-rubric assertions (those with `template` + `criteria`)
 * are resolved via the shared rubric-resolution module, producing fully
 * assembled rubric text and dimension metadata. This is critical for
 * scoring — without it, the grader receives empty rubrics and the
 * scoring pipeline has no dimension data to work with (DOC-2029).
 *
 * Agent-specific assertions use file-based references to the assertions
 * runtime module (dist/agent-harness/assertions-runtime.js) because
 * promptfoo's inline `type: javascript` assertions run in a restricted
 * eval() sandbox where require() is unavailable. File-based assertions
 * run in a full Node.js context.
 *
 * @see https://www.promptfoo.dev/docs/configuration/expected-outputs/javascript/
 * @see src/agent-harness/assertions-runtime.ts — runtime implementations
 */
import type { PromptfooAssertion } from "../../assertion-mapper.js";
import type { AgentHarnessCompileOptions } from "./types.js";
export declare function mapAgentAssertion(assertion: {
    type: string;
    [k: string]: unknown;
}, options: AgentHarnessCompileOptions | undefined, warnings: string[]): PromptfooAssertion | null;
export declare function buildFileExistsAssertion(assertion: {
    type: string;
    [k: string]: unknown;
}): PromptfooAssertion;
export declare function buildFileContainsAssertion(assertion: {
    type: string;
    [k: string]: unknown;
}): PromptfooAssertion;
/**
 * SECURITY: Trusted-input boundary.
 *
 * The `command-succeeds` assertion executes an arbitrary shell command
 * inside the sandbox's working directory. The command string comes from
 * task definitions (YAML or TypeScript config files), which are authored
 * by developers — not from user input or LLM output.
 *
 * This is intentional: the assertion is designed to verify agent output
 * by running build/test commands (e.g., "npm test", "tsc --noEmit").
 *
 * Task definitions are the trust boundary. If you accept task definitions
 * from untrusted sources, validate commands against an allowlist first.
 */
export declare function buildCommandSucceedsAssertion(assertion: {
    type: string;
    [k: string]: unknown;
}): PromptfooAssertion;
export declare function buildDiffMatchesAssertion(assertion: {
    type: string;
    [k: string]: unknown;
}): PromptfooAssertion;
