import { type ReadSignal, type WriteSignal } from 'maverick.js';
import type { MediaContext } from '../core/api/context';
import type { MediaSrc } from '../core/api/types';
import type { MediaProviderLoader } from '../providers/types';
export declare class SourceSelection {
    private _domSources;
    private _media;
    private _loader;
    private _loaders;
    constructor(_domSources: ReadSignal<MediaSrc[]>, _media: MediaContext, _loader: WriteSignal<MediaProviderLoader | null>);
    private _onSourcesChange;
    private _onSourceChange;
    protected _findNewSource(currentSource: MediaSrc, sources: MediaSrc[]): MediaSrc;
    protected _notifySourceChange(currentSource: MediaSrc, newSource: MediaSrc, newLoader: MediaProviderLoader | null): void;
    protected _notifyLoaderChange(currentLoader: MediaProviderLoader | null, newLoader: MediaProviderLoader | null): void;
    private _onPreconnect;
    private _onLoadSource;
}
