import type { WithOptionalLabels } from '@ariestools/sdk';
import type { CreatableProviderFactory, CreatableProviderInstance } from './CreatableProvider.js';
/** LabeledCreatableProviderFactory type. */
export type LabeledCreatableProviderFactory<T extends CreatableProviderInstance = CreatableProviderInstance> = CreatableProviderFactory<T> & WithOptionalLabels;
/** hasLabels constant. */
export declare const hasLabels: (factory: CreatableProviderFactory | LabeledCreatableProviderFactory) => factory is LabeledCreatableProviderFactory;
/**
 * Class annotation to be used to decorate Providers which support
 * an asynchronous labeled creation factory pattern
 * @returns The decorated Provider requiring it implement the members
 * of the CreatableProvider as statics properties/methods
 */
export declare function labeledCreatableProviderFactory<TProvider extends CreatableProviderInstance = CreatableProviderInstance>(): <U extends LabeledCreatableProviderFactory<TProvider>>(constructor: U) => void;
//# sourceMappingURL=LabeledCreatableProviderFactory.d.ts.map