import { type ArtifactCallContext, type ArtifactHost, type ArtifactHostCapabilities, type ArtifactPublishOutcome, type ArtifactPublishRequest, type ArtifactRef } from "../../core/artifact-host.js";
export declare const EVAL_STUB_URL_PREFIX = "eval-stub://artifact/";
export declare const LOCAL_STUB_MAX_FILE_BYTES: number;
export declare const LOCAL_STUB_MAX_TOTAL_BYTES: number;
export interface LocalArtifactStubOptions {
    /** The storage directory. Required: the library never guesses a location on the host filesystem. Contract: it must
     *  lie OUTSIDE every root the run may write or read (the task root, `additionalDirectories`,
     *  `additionalReadDirectories`); the engine refuses to mount a stub whose store is inside one — a ledger the model
     *  can edit through the fs tools is not a trust boundary. */
    dir: string;
}
export declare class LocalArtifactStub implements ArtifactHost {
    #private;
    readonly dir: string;
    constructor(opts: LocalArtifactStubOptions);
    capabilities(): ArtifactHostCapabilities;
    onMount(runId: string): void;
    /** The slugs a run may name through `url` (inspection; a copy). */
    ownMinted(runId: string): ReadonlySet<string>;
    publish(req: ArtifactPublishRequest, ctx: ArtifactCallContext): Promise<ArtifactPublishOutcome>;
    /** The ledger rows (inspection for hosts and tests; a copy). */
    rows(): ReadonlyArray<ArtifactRef>;
    /** The published paths of one version (inspection). */
    versionFiles(slug: string, version: number): string[];
}
export declare function localArtifactStub(opts: LocalArtifactStubOptions): LocalArtifactStub;
