import { PackageId, HealthCheckId, DependencyRequirement, CheckDependenciesResult } from '../types';
import { Effects } from '../Effects';
export type CheckDependencies<DependencyId extends PackageId = PackageId> = {
    infoFor: (packageId: DependencyId) => {
        requirement: DependencyRequirement;
        result: CheckDependenciesResult;
    };
    installedSatisfied: (packageId: DependencyId) => boolean;
    installedVersionSatisfied: (packageId: DependencyId) => boolean;
    runningSatisfied: (packageId: DependencyId) => boolean;
    tasksSatisfied: (packageId: DependencyId) => boolean;
    healthCheckSatisfied: (packageId: DependencyId, healthCheckId: HealthCheckId) => boolean;
    satisfied: () => boolean;
    throwIfInstalledNotSatisfied: (packageId: DependencyId) => null;
    throwIfInstalledVersionNotSatisfied: (packageId: DependencyId) => null;
    throwIfRunningNotSatisfied: (packageId: DependencyId) => null;
    throwIfTasksNotSatisfied: (packageId: DependencyId) => null;
    throwIfHealthNotSatisfied: (packageId: DependencyId, healthCheckId?: HealthCheckId) => null;
    throwIfNotSatisfied: (packageId?: DependencyId) => null;
};
export declare function checkDependencies<DependencyId extends PackageId = PackageId>(effects: Effects, packageIds?: DependencyId[]): Promise<CheckDependencies<DependencyId>>;
