import type { ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-model';
import type { CreatableProvider, CreatableProviderConnectionType } from '../CreatableProvider/CreatableProvider.js';
import type { Surface } from './Backing.js';
/**
 * Plan-time candidate for provider resolution (used by `resolveProviders`).
 *
 * Metadata (`connectionTypes`, `dependencies`, `surface`, `satisfies`) is
 * derived from `CreatableProvider` class statics via `providerCandidateFromClass`.
 * Selection is config-only: `providerBindings` + `connections` type matching.
 */
export interface ProviderDescriptor {
    /**
     * Connection kinds this candidate supports (e.g. `lmdb`, `rpc`). Empty array
     * means wildcard — matches any bound connection type.
     */
    readonly connectionTypes: readonly CreatableProviderConnectionType[];
    /** Implementation class selected when this candidate wins. */
    readonly creatableProvider: CreatableProvider;
    /**
     * Monikers this provider resolves at register/create time. Drives plan-time
     * transitive closure and topological ordering.
     */
    readonly dependencies?: readonly ProviderMoniker[];
    /** Globally-unique key, usually the class name — used in snapshots and diagnostics. */
    readonly id: string;
    /** Capabilities this candidate satisfies (typically `monikers` from the class). */
    readonly satisfies: readonly ProviderMoniker[];
    /** Which API surface this capability is exposed under. */
    readonly surface: Surface;
}
//# sourceMappingURL=Provider.d.ts.map