import type { GovernanceHooks, PaymentRail } from '../types.js';
export interface ConformanceContext {
    rail: PaymentRail;
    hooks: GovernanceHooks;
    /** Ed25519 private key (hex) the harness uses to sign receipts and
     *  denials in scenarios that exercise emitReceipt / emitDenial. */
    issuerPrivateKeyHex: string;
    /** Fixed clock all scenarios share; deterministic time-window
     *  evaluation depends on this. ISO ms-precision UTC. */
    now: Date;
    /** Scenario-scoped wallet identifier. Distinct per scenario so
     *  revocation state from one scenario cannot affect another. */
    walletId: string;
}
export type ScenarioOutcome = {
    ok: true;
} | {
    ok: false;
    reason: string;
};
export interface ConformanceScenario {
    /** Stable scenario id (e.g. 'SCN-001'). Used for filtering and
     *  for cross-implementation report comparison. */
    id: string;
    description: string;
    run(ctx: ConformanceContext): Promise<ScenarioOutcome>;
}
export interface ScenarioReport {
    id: string;
    description: string;
    pass: boolean;
    reason?: string;
    duration_ms: number;
}
export interface ConformanceReport {
    rail_name: string;
    rail_currency: string;
    /** ISO 8601 UTC ms timestamp the run started. */
    started_at: string;
    finished_at: string;
    total: number;
    passed: number;
    failed: number;
    all_pass: boolean;
    scenarios: ScenarioReport[];
}
export interface RunConformanceOpts {
    /** Override scenarios. Defaults to STANDARD_SCENARIOS. */
    scenarios?: ConformanceScenario[];
    /** Override issuer private key (hex). Defaults to a pinned test
     *  key so scenario byte output is deterministic across runs. */
    issuerPrivateKeyHex?: string;
    /** Override the harness clock. Defaults to '2026-05-03T20:00:00.000Z'. */
    now?: Date;
}
/** Pinned issuer key for the harness. Adapters MUST NOT use this in
 *  production; it is published in this module on purpose so any
 *  reviewer can reproduce a conformance run byte-for-byte. */
export declare const HARNESS_ISSUER_PRIV: string;
export declare const HARNESS_FIXED_NOW: Date;
export declare const STANDARD_SCENARIOS: readonly ConformanceScenario[];
/**
 * Run a list of conformance scenarios against a PaymentRail + hooks.
 * Each scenario receives an isolated wallet_id so revocation state
 * never leaks between scenarios. Returns a structured report; never
 * throws on scenario failure (failures land inside the report).
 */
export declare function runConformance(rail: PaymentRail, hooks: GovernanceHooks, opts?: RunConformanceOpts): Promise<ConformanceReport>;
//# sourceMappingURL=harness.d.ts.map