/**
 * Recommend-Team Logic (Onboarding v3, v0)
 *
 * Pure function: turns a business-context payload (collected during the
 * onboarding conversation) into a concrete team recommendation
 * (template + agents + responsibilities).
 *
 * v0 strategy: 5 hardcoded heuristic mappings that cover the ~80% case
 * Steve and Sam expect to see during the Mon 5/4 EOD demo, plus a
 * generic 2-agent fallback for everything else. Real RAG over Mia's
 * spec v3 + doc 69 + the live template registry lands Wed–Fri.
 *
 * Importantly, the function is **pure** (no FS, no API, no clock) —
 * tests exercise the mapping logic directly without mocks.
 *
 * @module services/orchestrator/onboarding/recommend-team
 */
/**
 * Feasibility tier for a single user-named task. Mirrors the four tiers
 * the system prompt requires orc to use literally.
 */
export type FeasibilityTier = 'yes-today' | 'collaborative' | 'roadmap' | 'out-of-scope';
/**
 * Scale buckets — the conversation captures one of these in phase 2.
 */
export type BusinessScale = 'solo' | 'small-team' | 'company';
/**
 * One task the user named, with the feasibility verdict orc reached
 * during phase 3.
 */
export interface NamedTask {
    /** Free-text task name as the user said it. */
    readonly name: string;
    /** Feasibility verdict orc decided on. */
    readonly tier: FeasibilityTier;
}
/**
 * Business context collected by phases 1–3 of the onboarding flow.
 * Passed to {@link recommendTeam} to produce the proposal.
 */
export interface BusinessContext {
    /** Free-text industry / domain (e.g. "e-commerce skincare on Shopify"). */
    readonly industry: string;
    /** Coarse team-size bucket. */
    readonly scale: BusinessScale;
    /** Tasks the user named, with orc's feasibility verdict per task. */
    readonly tasks: readonly NamedTask[];
}
/**
 * One agent the recommendation proposes.
 */
export interface RecommendedAgent {
    /** Logical role (e.g. "content-drafter", "support-triage"). */
    readonly role: string;
    /** One-sentence responsibility blurb shown to the user during phase 4. */
    readonly responsibilities: string;
    /** Skills the agent will be given. */
    readonly skillIds: readonly string[];
}
/**
 * The recommendation returned to orc and shown to the user before
 * confirmation.
 */
export interface TeamRecommendation {
    /** Template ID from `config/templates/*.json`. */
    readonly templateId: string;
    /** 2–4 agents, each with role + responsibilities + skills. */
    readonly agents: readonly RecommendedAgent[];
    /** Short rationale string ("why this team for you"). */
    readonly reasoning: string;
    /** Which mapping fired (`"hardcoded:<key>"` or `"fallback"`). */
    readonly source: string;
}
/**
 * Map a {@link BusinessContext} to a {@link TeamRecommendation}.
 *
 * Strategy (v0):
 *   1. Score every hardcoded mapping by counting keyword hits across
 *      `industry` + each task name.
 *   2. Highest-scoring mapping wins (ties broken by declaration order).
 *   3. If no mapping scores ≥1, fire the generic 2-agent fallback.
 *
 * The function never throws — invalid input degrades to the fallback so
 * the conversation can keep moving even if discovery captured nothing
 * useful.
 *
 * @param ctx - Business context collected during phases 1–3.
 * @returns A team recommendation ready for phase 4.
 *
 * @example
 * ```ts
 * recommendTeam({
 *   industry: 'small Shopify skincare shop',
 *   scale: 'solo',
 *   tasks: [
 *     { name: 'weekly blog content', tier: 'yes-today' },
 *     { name: 'customer support replies', tier: 'yes-today' },
 *   ],
 * });
 * // → templateId: 'dtc-viral-content-team', 2 agents, …
 * ```
 */
export declare function recommendTeam(ctx: BusinessContext): TeamRecommendation;
/**
 * Exposed for test introspection — the count is asserted against the
 * spec ("5 hardcoded mappings cover 80% of users").
 */
export declare const HARDCODED_MAPPING_COUNT: number;
/**
 * Exposed for test introspection — list of mapping keys, useful for
 * asserting coverage without opening the array.
 */
export declare const HARDCODED_MAPPING_KEYS: readonly string[];
//# sourceMappingURL=recommend-team.d.ts.map