/**
 * @file `resolveJanus()` — janus resolution entry point. Tries each source in
 *   order:
 *
 *   1. VFS — smol binary's embedded janus (if packed)
 *   2. PATH — `janus` on the system PATH
 *   3. download — upstream GitHub release tar.gz (only when `downloadIfMissing` is
 *      passed) Returns `undefined` if all of the enabled sources miss —
 *      including when `downloadIfMissing` is set but the requested
 *      platform-arch isn't shipped by upstream janus (currently darwin-arm64
 *      only). Memoized per option-shape.
 */
import type { BinaryDownloader } from '../from-download';
import type { HashSpec } from '../../integrity';
import type { ResolvedJanus } from './types';
export interface ResolveJanusOptions {
    downloadIfMissing?: {
        version: string;
        platformArch: string;
        integrity?: HashSpec | undefined;
        cacheDir?: string | undefined;
        downloader?: BinaryDownloader | undefined;
    } | undefined;
}
export declare function cacheKey(opts: ResolveJanusOptions | undefined): string;
export declare function doResolveJanus(opts?: ResolveJanusOptions | undefined): Promise<ResolvedJanus | undefined>;
export declare function resetJanusResolution(): void;
export declare function resolveJanus(opts?: ResolveJanusOptions | undefined): Promise<ResolvedJanus | undefined>;
