/**
 * ADO Client Factory
 *
 * Creates profile-aware ADO clients for multi-project sync support.
 * DELEGATES to AdoProfileResolver (plugin) to determine which org/project to use
 * based on the increment's metadata.
 *
 * This is the FIX for the single-defaultProfile problem:
 * - Each increment can have its own ADO profile in metadata.json
 * - The factory resolves the profile and creates a client for that specific org/project
 *
 * @module integrations/ado/ado-client-factory
 */
import { AdoClient } from './ado-client.js';
import { Logger } from '../../utils/logger.js';
import { AdoProfileConfig, ProfileResolutionResult } from '../../../plugins/specweave/lib/integrations/ado/ado-profile-resolver.js';
/**
 * Resolved ADO profile with source information
 * Re-export for consumers who need the type
 */
export interface ResolvedAdoProfile extends AdoProfileConfig {
    /**
     * Where the profile was resolved from
     */
    source: 'increment' | 'global';
}
/**
 * Factory options
 */
export interface AdoClientFactoryOptions {
    projectRoot?: string;
    logger?: Logger;
}
/**
 * ADO Client Factory
 *
 * Resolves the correct ADO profile for an increment and creates
 * a client configured for that specific ADO project.
 *
 * Uses AdoProfileResolver from the plugin (single source of truth).
 */
export declare class AdoClientFactory {
    private projectRoot;
    private logger;
    private resolver;
    constructor(options?: AdoClientFactoryOptions);
    /**
     * Create an ADO client for a specific increment
     *
     * Resolution priority:
     * 1. Increment's metadata.json -> external_sync.ado.profile
     * 2. Global config.json -> sync.defaultProfile
     *
     * @param incrementId - The increment ID (e.g., "0005-feature-name")
     * @returns Configured AdoClient for the resolved profile
     * @throws Error if no profile found or profile is invalid
     */
    createClientForIncrement(incrementId: string): Promise<AdoClient>;
    /**
     * Resolve the ADO profile for an increment
     *
     * DELEGATES to AdoProfileResolver from the plugin (single source of truth)
     *
     * @param incrementId - The increment ID
     * @returns Profile resolution result with success/error info
     */
    resolveProfile(incrementId: string): Promise<ProfileResolutionResult>;
    /**
     * Set increment's ADO profile
     *
     * DELEGATES to AdoProfileResolver from the plugin
     *
     * @param incrementId - Increment ID
     * @param profileName - Profile name to set
     */
    setIncrementProfile(incrementId: string, profileName: string): Promise<void>;
    /**
     * List available ADO profiles from config
     *
     * DELEGATES to AdoProfileResolver from the plugin
     */
    listAdoProfiles(): Promise<string[]>;
}
/**
 * Create an ADO client for a specific increment (convenience function)
 *
 * @param incrementId - The increment ID
 * @param projectRoot - Project root directory
 * @returns Configured AdoClient for the resolved profile
 */
export declare function createAdoClientForIncrement(incrementId: string, projectRoot?: string): Promise<AdoClient>;
/**
 * Resolve ADO profile for an increment without creating a client
 *
 * @param incrementId - The increment ID
 * @param projectRoot - Project root directory
 * @returns Profile resolution result
 */
export declare function resolveAdoProfileForIncrement(incrementId: string, projectRoot?: string): Promise<ProfileResolutionResult>;
export { AdoProfileConfig, ProfileResolutionResult };
export default AdoClientFactory;
//# sourceMappingURL=ado-client-factory.d.ts.map