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; } 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; //# sourceMappingURL=harness.d.ts.map