import type { DependencySnapshotData, DependencyStateData, DependencyStatus } from './types.js';
import type { IntegrationDefinition } from '../integrations/types.js';
import type { PluginDefinition } from '../plugins/types.js';
/** Minimal registry surface the resolver needs (best-effort spec fetch). */
interface SpecSource<TDef> {
    getSpec(name: string, version?: string): Promise<TDef>;
}
export interface ResolveDependencyStatusesInput {
    /** The per-env dependency snapshot. */
    snapshot: DependencySnapshotData | DependencyStateData;
    /**
     * Directory holding the synced `bp_modules/` (e.g. `<project>/.adk/bot/bp_modules`),
     * used for the on-disk installed check (MODE B). When omitted, dependencies are
     * assumed installed — a fresh checkout that hasn't built yet shouldn't report every
     * dependency `not_installed`; the snapshot + config drives the verdict instead.
     */
    bpModulesDir?: string;
    /** Optional catalog registries to enrich verdicts with specs. Best-effort: a fetch
     *  failure (offline / unauthenticated) degrades to a null spec, never throws. */
    integrationRegistry?: SpecSource<IntegrationDefinition>;
    pluginRegistry?: SpecSource<PluginDefinition>;
}
/**
 * Offline-first capability resolver: the single place that turns a dependency snapshot (+ optional
 * catalog specs + on-disk presence) into the flat {@link DependencyStatus} records
 * the CLI (`adk integrations status`, `adk check`), the `adk dev` boot summary, and
 * the deploy gate all consume. It gathers the I/O inputs and delegates the verdict to
 * the pure `compute*Status` functions; integrations are resolved first so each plugin
 * can see its backing integrations' verdicts (the transitive rule).
 *
 * Requires no auth/botId — a missing registry or a fetch failure simply yields a null
 * spec (verdict falls back to Cloud's persisted WS0 verdict, or `unresolved`).
 */
export declare function resolveDependencyStatuses(input: ResolveDependencyStatusesInput): Promise<DependencyStatus[]>;
export {};
//# sourceMappingURL=status-resolver.d.ts.map