/**
 * @license
 * Copyright 2025 Vybestack LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import { Config, ProviderManager, OpenAIProvider, SettingsService } from '@vybestack/llxprt-code-core';
import { IFileSystem } from './IFileSystem.js';
import { LoadedSettings } from '../config/settings.js';
import { OAuthManager } from '../auth/oauth-manager.js';
import { HistoryItemWithoutId } from '../ui/types.js';
interface ProviderManagerFactoryOptions {
    config?: Config;
    allowBrowserEnvironment?: boolean;
    settings?: LoadedSettings;
    addItem?: (itemData: Omit<HistoryItemWithoutId, 'id'>, baseTimestamp: number) => number;
}
type RuntimeContextShape = {
    settingsService: SettingsService;
    config?: Config;
    runtimeId?: string;
    metadata?: Record<string, unknown>;
};
/**
 * Set a custom file system implementation (mainly for testing).
 */
export declare function setFileSystem(fs: IFileSystem): void;
export declare function createProviderManager(context: RuntimeContextShape, options?: ProviderManagerFactoryOptions): {
    manager: ProviderManager;
    oauthManager: OAuthManager;
};
export declare function getProviderManager(config?: Config, allowBrowserEnvironment?: boolean, settings?: LoadedSettings, addItem?: (itemData: Omit<HistoryItemWithoutId, 'id'>, baseTimestamp: number) => number): ProviderManager;
export declare function resetProviderManager(): void;
export declare function getOAuthManager(): OAuthManager | null;
export declare function refreshAliasProviders(): void;
export { getProviderManager as providerManager };
/**
 * Ensure alias providers use their own identifier when resolving authentication.
 * Without this, API keys saved via `/key` are stored under the alias name,
 * but the OpenAI provider would continue to look up credentials under `openai`.
 */
export declare function bindOpenAIAliasIdentity(provider: OpenAIProvider, alias: string): void;
