import type { ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-model';
import type { LocatorConfig } from '../config/LocatorConfigFields.js';
import { ProviderFactoryLocator } from '../CreatableProvider/ProviderFactoryLocator.js';
import type { CreatableProviderContext } from '../model/index.js';
import type { ProviderDescriptor } from './Provider.js';
import { type ResolutionPlan } from './resolveProviders.js';
/** Options for building a locator from config-driven provider resolution. */
export interface LocatorFromConfigOptions {
    /** Provider factories available for dependency resolution. */
    readonly candidates: readonly ProviderDescriptor[];
    /** Configuration used to create or operate this instance. */
    readonly config: LocatorConfig;
    /** Runtime context used for configuration and dependency resolution. */
    readonly context?: Omit<CreatableProviderContext, 'config' | 'locator'>;
    /** Provider dependencies requested by the resolved configuration. */
    readonly needs: ReadonlySet<ProviderMoniker>;
}
/**
 * Resolves which provider classes to register for the given config bindings.
 * Selection uses only `providerBindings` + `connections` — no runtime preconditions.
 */
export declare function resolveProvidersFromConfig(needs: ReadonlySet<ProviderMoniker>, candidates: readonly ProviderDescriptor[], config: LocatorConfig): ResolutionPlan;
/**
 * Registers factories for a resolution plan. Params are empty — implementations
 * are expected to read their bound connection from `context.config` at runtime.
 */
export declare function registerFactoriesFromPlan(locator: ProviderFactoryLocator, plan: ResolutionPlan): void;
/**
 * Builds a `ProviderFactoryLocator` from config: resolve candidates, then register
 * winning factories. Connection profiles come from config, not factory params.
 */
export declare function locatorFromConfig(options: LocatorFromConfigOptions): ProviderFactoryLocator;
//# sourceMappingURL=locatorFromConfig.d.ts.map