import type { Labels } from '@ariestools/sdk';
import type { ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.js';
import type { LabeledCreatableProviderFactory } from './LabeledCreatableProviderFactory.js';
/** Data contract used by Creatable Provider Registry. */
export type CreatableProviderRegistry<TMonikers extends ProviderMoniker[] = ProviderMoniker[]> = Record<TMonikers[number], (CreatableProviderFactory | LabeledCreatableProviderFactory)[] | undefined>;
/** Protocol constant defining register creatable provider factory. */
export declare const registerCreatableProviderFactory: <TProvider extends CreatableProviderInstance>(registry: CreatableProviderRegistry, factory: CreatableProviderFactory<TProvider> | LabeledCreatableProviderFactory<TProvider>, labels?: Labels, 
/** register this as the primary factory for every schema it supports */
primary?: boolean | ProviderMoniker | ProviderMoniker[]) => void;
/** Protocol constant defining register creatable provider factories. */
export declare const registerCreatableProviderFactories: (factories: (CreatableProviderFactory | LabeledCreatableProviderFactory)[], registry?: CreatableProviderRegistry, primary?: boolean) => CreatableProviderRegistry<string[]>;
//# sourceMappingURL=CreatableProviderRegistry.d.ts.map