/**
 * artifacts/conformance/run — running the battery, and saying honestly how it
 * went.
 *
 * The runner owns exactly three decisions, and all three are about the ways a
 * case can NOT run:
 *
 *  1. the case is about an OPTIONAL port member this store does not implement
 *     (`putStream` / `getStream`) → `'not-applicable'`, naming the member.
 *     Feature detection, which is the port's own rule applied to its own
 *     battery.
 *  2. the store implements it and cannot satisfy the case, and the harness said
 *     so by name → `'declared'`, carrying the reason. It is run ANYWAY, so a
 *     declaration that has quietly become untrue is visible rather than
 *     permanent.
 *  3. the case needs a harness hook nobody supplied and nobody declared →
 *     `'failed'`. This is the one that matters: an undeclared skip is a pass
 *     with the evidence removed, which is the same shape as every defect a
 *     conformance battery exists to catch.
 */
import type { ArtifactStoreCase, ArtifactStoreHarness, ArtifactStoreOutcome, ArtifactStoreReport } from './types.js';
/**
 * Run ONE case against one store, building and disposing the store around it.
 *
 * Exported because a test framework wants one assertion per case: iterate
 * {@link artifactStoreConformance}, call this, and turn the outcome into an
 * `it()`. That gives per-case granularity in any framework without this module
 * knowing what a framework is.
 */
export declare function runArtifactStoreCase(testCase: ArtifactStoreCase, harness: ArtifactStoreHarness): Promise<ArtifactStoreOutcome>;
/**
 * Run the whole battery against one store and report.
 *
 * @example  Claiming the port for a store of your own
 *   const report = await runArtifactStoreConformance({
 *     name: 'ourOwnArtifacts',
 *     createStore: () => ourOwnArtifacts({ bucket }),
 *     disposeStore: (store) => store.close(),
 *   });
 *   if (!report.ok) throw new Error(formatArtifactStoreReport(report));
 */
export declare function runArtifactStoreConformance(harness: ArtifactStoreHarness): Promise<ArtifactStoreReport>;
/**
 * The report as something to put in a failure message or a log — one line per
 * case, with the reason a case did not simply pass.
 */
export declare function formatArtifactStoreReport(report: ArtifactStoreReport): string;
//# sourceMappingURL=run.d.ts.map