import type { EmbeddingProvider } from '../../../shared/types/embedding.types.js';
import type { ProviderFallbackDecision, ProviderHealthCheckOptions, ProviderHealthStatus } from '../../../shared/types/embedding-provider-monitoring.types.js';
export type ProviderResolver = (provider: EmbeddingProvider) => {
    generateEmbedding(text: string): Promise<unknown>;
    isAvailable(): boolean;
} | null;
export type ProviderPriorityResolver = () => EmbeddingProvider[];
export declare class ModelAvailabilityService {
    private readonly resolveProvider;
    private readonly resolvePriority;
    private readonly lastStatus;
    private readonly subscribers;
    constructor(resolveProvider: ProviderResolver, resolvePriority: ProviderPriorityResolver);
    checkProviderHealth(provider: EmbeddingProvider, options?: ProviderHealthCheckOptions): Promise<ProviderHealthStatus>;
    getLastStatus(provider: EmbeddingProvider): ProviderHealthStatus | undefined;
    getAllStatuses(): ProviderHealthStatus[];
    subscribe(listener: (status: ProviderHealthStatus) => void): () => void;
    selectBestProvider(preferredProvider?: EmbeddingProvider, options?: ProviderHealthCheckOptions): Promise<ProviderFallbackDecision>;
    private getPriorityList;
    private broadcast;
}
//# sourceMappingURL=model-availability-service.d.ts.map