import { FoundryLocalConfig } from './configuration.js';
import { Catalog } from './catalog.js';
import { ResponsesClient } from './openai/responsesClient.js';
import { EpInfo, EpDownloadResult } from './types.js';
/**
 * The main entry point for the Foundry Local SDK.
 * Manages the initialization of the core system and provides access to the Catalog and ModelLoadManager.
 */
export declare class FoundryLocalManager {
    private static instance;
    private static pendingCreate?;
    private config;
    private coreInterop;
    private _modelLoadManager;
    private _catalog;
    private _urls;
    private constructor();
    private initializeSync;
    private initializeAsync;
    /**
     * Creates the FoundryLocalManager singleton with the provided configuration.
     * Note: This method blocks the event loop during initialization.
     * For non-blocking initialization, use {@link createAsync} instead.
     * @param config - The configuration settings for the SDK (plain object).
     * @returns The initialized FoundryLocalManager instance.
     * @example
     * ```typescript
     * const manager = FoundryLocalManager.create({
     *   appName: 'MyApp',
     *   logLevel: 'info'
     * });
     * ```
     */
    static create(config: FoundryLocalConfig): FoundryLocalManager;
    /**
     * Creates the FoundryLocalManager singleton with the provided configuration.
     * Native command execution is performed asynchronously to avoid blocking the
     * event loop during initialization. Note that some synchronous setup (e.g.,
     * loading the native addon) still occurs before the first await.
     * @param config - The configuration settings for the SDK (plain object).
     * @returns A promise that resolves to the initialized FoundryLocalManager instance.
     * @example
     * ```typescript
     * const manager = await FoundryLocalManager.createAsync({
     *   appName: 'MyApp',
     *   logLevel: 'info'
     * });
     * ```
     */
    static createAsync(config: FoundryLocalConfig): Promise<FoundryLocalManager>;
    /**
     * Gets the Catalog instance for discovering and managing models.
     * @returns The Catalog instance.
     */
    get catalog(): Catalog;
    /**
     * Gets the URLs where the web service is listening.
     * Returns an empty array if the web service is not running.
     * @returns An array of URLs.
     */
    get urls(): string[];
    /**
     * Starts the local web service.
     * Use the `urls` property to retrieve the bound addresses after the service has started.
     * If no listener address is configured, the service defaults to `127.0.0.1:0` (binding to a random ephemeral port).
     * @throws Error - If starting the service fails.
     */
    startWebService(): void;
    /**
     * Stops the local web service.
     * @throws Error - If stopping the service fails.
     */
    stopWebService(): void;
    /**
     * Whether the web service is currently running.
     */
    get isWebServiceRunning(): boolean;
    /**
     * Discovers available execution providers (EPs) and their registration status.
     * @returns An array of EpInfo describing each available EP.
     */
    discoverEps(): EpInfo[];
    /**
     * Downloads and registers execution providers.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(signal: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers.
     * @param names - Array of EP names to download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: string[]): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers.
     * @param names - Array of EP names to download.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: string[], signal: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, reporting progress.
     * @param progressCallback - Callback invoked with (epName, percent) as each EP downloads. Percent is 0-100.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(progressCallback: (epName: string, percent: number) => void): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, reporting progress.
     * @param progressCallback - Callback invoked with (epName, percent) as each EP downloads. Percent is 0-100.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(progressCallback: (epName: string, percent: number) => void, signal: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, reporting progress.
     * @param names - Array of EP names to download.
     * @param progressCallback - Callback invoked with (epName, percent) as each EP downloads. Percent is 0-100.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: string[], progressCallback: (epName: string, percent: number) => void): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, reporting progress.
     * @param names - Array of EP names to download.
     * @param progressCallback - Callback invoked with (epName, percent) as each EP downloads. Percent is 0-100.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: string[], progressCallback: (epName: string, percent: number) => void, signal: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, preserving compatibility with callers that pass undefined for names.
     * @param names - Undefined to download all EPs.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: undefined, signal: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Downloads and registers execution providers, preserving compatibility with callers that pass undefined for names.
     * @param names - Undefined to download all EPs.
     * @param progressCallback - Callback invoked with (epName, percent) as each EP downloads. Percent is 0-100.
     * @param signal - Optional AbortSignal used to cancel an in-progress download.
     * @returns A promise that resolves with an EpDownloadResult describing the outcome.
     */
    downloadAndRegisterEps(names: undefined, progressCallback: (epName: string, percent: number) => void, signal?: AbortSignal): Promise<EpDownloadResult>;
    /**
     * Creates a ResponsesClient for interacting with the Responses API.
     * The web service must be started first via `startWebService()`.
     * @param modelId - Optional default model ID for requests.
     * @returns A ResponsesClient instance.
     * @throws Error - If the web service is not running.
     */
    createResponsesClient(modelId?: string): ResponsesClient;
}
