/**
 * Sync Target Resolver
 *
 * Resolves sync targets (GitHub, Jira, ADO) for a given project name
 * in workspace mode. The **Project** field in spec.md controls routing.
 *
 * Three-phase resolution:
 * 1. Name match: workspace.repos.find(r => r.id === projectName) (also workspace.name → rootRepo)
 * 2. Prefix fallback: routeByPrefix(projectName, repos) for US-{PREFIX}-NNN IDs
 * 3. Global fallback: return config.sync.{github,jira,ado}
 *
 * SOURCE OF TRUTH (0865 T-005): reads `config.workspace.repos[]` ONLY.
 * The legacy umbrella reads were removed — config is auto-migrated v2.0→v3.0
 * (umbrella/multiProject consolidated into `config.workspace`), so the old
 * umbrella key is stale/undefined at runtime and reading it silently collapsed
 * routing to the global fallback.
 */
import type { SpecWeaveConfig } from '../core/config/types.js';
export interface SyncTargetConfig {
    github?: {
        owner: string;
        repo: string;
    };
    jira?: {
        projectKey: string;
    };
    ado?: {
        organization?: string;
        project: string;
    };
    source: 'child-repo-name' | 'child-repo-prefix' | 'global';
}
/**
 * Resolve sync target for a project name given the workspace config.
 *
 * @param projectName - Project name, repo ID, or story ID (e.g., "vskill", "US-VSK-001")
 * @param config - Full SpecWeave config
 * @returns Resolved sync target with source indication
 */
export declare function resolveSyncTarget(projectName: string | undefined, config: SpecWeaveConfig): SyncTargetConfig;
/**
 * Validate workspace sync targets for common misconfigurations.
 * Returns an array of warning messages (empty if all OK).
 */
export declare function validateSyncTargets(config: SpecWeaveConfig): string[];
//# sourceMappingURL=sync-target-resolver.d.ts.map