import type { ApiProvider, Assertion, AtomicTestCase, GradingResult, PluginConfig, TestCase } from '../../types';
import { type Policy, type PolicyObject } from '../types';
import { RedteamGraderBase, RedteamPluginBase } from './base';
/**
 * Checks whether a given Policy is a valid PolicyObject.
 * @param policy - The policy to check.
 * @returns True if the policy is a valid PolicyObject, false otherwise.
 */
export declare function isValidPolicyObject(policy: Policy): policy is PolicyObject;
export declare class PolicyPlugin extends RedteamPluginBase {
    readonly id = "trusys:redteam:policy";
    /**
     * The text of the policy.
     */
    private policy;
    /**
     * The ID of the policy; available if the policy is loaded from Promptfoo Cloud.
     */
    private policyId?;
    constructor(provider: ApiProvider, purpose: string, injectVar: string, config: PluginConfig);
    protected getTemplate(): Promise<string>;
    protected getAssertions(prompt: string): Assertion[];
    generateTests(n: number, delayMs: number): Promise<TestCase[]>;
}
export declare class PolicyViolationGrader extends RedteamGraderBase {
    readonly id = "trusys:redteam:policy";
    rubric: string;
    getResult(prompt: string, llmOutput: string, test: AtomicTestCase, provider: ApiProvider | undefined): Promise<{
        grade: GradingResult;
        rubric: string;
    }>;
}
//# sourceMappingURL=policy.d.ts.map