import type { CreatableProviderFactory } from '../CreatableProvider/index.js';
import type { BackingNeed } from './Backing.js';
/**
 * Phantom-typed brand on `CreatableProviderFactory` recording which backings
 * the factory's underlying provider needs.
 *
 * Purely a compile-time tag — there is no runtime impact. Runtime callers
 * that don't care can keep using the bare `CreatableProviderFactory` type;
 * locators that want to enforce a backing-subset rule at compile time can
 * accept `BrandedFactory<L>` parameters that constrain what factories may be
 * registered.
 */
export type BrandedFactory<B extends readonly BackingNeed[] = readonly BackingNeed[]> = CreatableProviderFactory & {
    readonly __backings?: B;
};
/**
 * Brand a factory with the backings it depends on. Returns the same value at
 * runtime — the brand is only a phantom type.
 *
 * @example
 *   const f = backedFactory(
 *     [{ backing: 'chain-store', mode: 'write' }] as const,
 *     SimpleFinalizationRunner.factory(SimpleFinalizationRunner.dependencies, {...}),
 *   )
 *   // f is BrandedFactory<readonly [{backing: 'chain-store', mode: 'write'}]>
 */
export declare function backedFactory<B extends readonly BackingNeed[]>(_backings: B, factory: CreatableProviderFactory): BrandedFactory<B>;
/**
 * Helper: brand a factory as needing only the network transport. Convenient
 * shorthand for `JsonRpc*` factories.
 */
export declare function networkBackedFactory(factory: CreatableProviderFactory): BrandedFactory<readonly [{
    readonly backing: 'network';
    readonly mode: 'read';
}]>;
/**
 * Runtime check: is `factory`'s declared backings a subset of `availableBackings`?
 *
 * The brand is type-only, so at runtime we have no way to inspect what backings
 * the factory was branded with. This helper exists for cases where the caller
 * has the backings array separately (e.g. from the descriptor that built the
 * factory) and wants a runtime gate. Use `backingsSatisfied` directly with the
 * descriptor's `backings` field.
 */
export declare function factoryBackingsCompatible(declared: readonly BackingNeed[], available: readonly BackingNeed[]): boolean;
//# sourceMappingURL=factoryBrand.d.ts.map