import type { Labels } from '@ariestools/sdk';
import type { ProviderMoniker } from '@xyo-network/xl1-protocol/protocol-lib';
import type { CreatableProvider, CreatableProviderFactory, CreatableProviderInstance, ProviderFactoryScope } from './CreatableProvider.js';
import type { GetInstanceOptions } from './GetInstanceOptions.js';
declare global {
    var xyoServiceSingletons: Record<string, unknown>;
}
/** ProviderFactoryDescription helper function. */
export declare function providerFactoryDescription(factory: CreatableProviderFactory, labels?: Labels): string;
/** ProviderFactory implementation. */
export declare class ProviderFactory<TProvider extends CreatableProviderInstance, TDependencies extends ProviderMoniker[]> implements CreatableProviderFactory<TProvider> {
    creatableProvider: CreatableProvider<TProvider>;
    defaultMoniker: CreatableProvider<TProvider>['monikers'][number];
    defaultParams: Omit<TProvider['params'], 'context'>;
    dependencies: TDependencies;
    labels?: Labels;
    monikers: CreatableProvider<TProvider>['monikers'];
    providerName: string;
    scope: ProviderFactoryScope;
    private _uniqueId;
    constructor(creatableProvider: CreatableProvider<TProvider>, dependencies: TDependencies, params: Omit<TProvider['params'], 'context'>, labels?: Labels, scope?: ProviderFactoryScope);
    get resolvedMoniker(): string;
    get uniqueId(): symbol;
    static withParams<TInstance extends CreatableProviderInstance, TDependencies extends ProviderMoniker[]>(creatableProvider: CreatableProvider<TInstance>, dependencies: TDependencies, params: Omit<TInstance['params'], 'context'>, labels?: Labels): ProviderFactory<TInstance, TDependencies>;
    factory<TInstance extends CreatableProviderInstance, TDependencies extends ProviderMoniker[]>(this: CreatableProviderFactory<TInstance, TDependencies>, dependencies: TDependencies, params: Omit<TInstance['params'], 'context'>, labels?: Labels): ProviderFactory<TInstance, TDependencies>;
    getInstance(this: CreatableProviderFactory<TProvider>, params: TProvider['params'], { start }: GetInstanceOptions): Promise<TProvider>;
    tryGetInstance(this: CreatableProviderFactory<TProvider>, params: TProvider['params'], options?: GetInstanceOptions): Promise<TProvider | undefined>;
}
//# sourceMappingURL=ProviderFactory.d.ts.map