/**
 * Onboarding Provision Types
 *
 * Interface contract between the Onboarding Agent (Strategy) and the
 * Template Engine (Product). Defines the JSON handoff format that bridges
 * Ethan's Onboarding Agent Framework v1.1 discovery output to our
 * TemplateService.createTeamFromTemplate() provisioning pipeline.
 *
 * Ref: docs/onboarding-agent-framework-v1.1.md (Section 5 — Ingestion Format)
 *
 * @module services/onboarding/onboarding-provision.types
 */
/** Business vertical selected during discovery (Section 2, Pillar 1). */
export type OnboardingVertical = 'Content/Marketing' | 'E-commerce/Sales' | 'Software/Tech' | 'Insurance' | 'Property Management';
/** Primary goal selected during discovery (Section 2, Pillar 3). */
export type OnboardingGoal = 'Scale' | 'Time';
/** Monthly budget tier for tier matching (Section 2, Pillar 4). */
export type OnboardingBudgetTier = 'starter' | 'pro' | 'managed';
/** Urgency level (Section 2, Pillar 5). */
export type OnboardingUrgency = 'immediate' | 'this_week' | 'this_month' | 'exploring';
/** Team size bracket (Section 2, Pillar 2). */
export type OnboardingTeamSize = 'solo' | 'small' | 'medium' | 'large';
/** Content/Marketing vertical deep-dive fields. */
export interface ContentProbeData {
    /** Monthly content output volume. */
    contentVolume?: string;
    /** Priority social/content platforms. */
    priorityPlatforms?: string[];
}
/** E-commerce/Sales vertical deep-dive fields. */
export interface EcomProbeData {
    /** Primary sales channel. */
    salesChannel?: string;
    /** Biggest operational bottleneck. */
    opsBottleneck?: string;
}
/** Software/Tech vertical deep-dive fields. */
export interface DevProbeData {
    /** Primary tech stack. */
    techStack?: string;
    /** Development focus area. */
    devFocus?: string;
}
/** Insurance vertical deep-dive fields. */
export interface InsuranceProbeData {
    /** Agency management system used. */
    ams?: string;
}
/** Property Management vertical deep-dive fields. */
export interface PropertyProbeData {
    /** Number of units managed. */
    unitCount?: number;
}
/** Union of all vertical probe data. */
export type VerticalProbeData = ContentProbeData | EcomProbeData | DevProbeData | InsuranceProbeData | PropertyProbeData;
/**
 * The JSON payload sent by the Onboarding Agent after completing the
 * discovery questionnaire. This is the "handoff" to the Template Engine.
 *
 * Maps to v1.1 Section 5 "Ingestion Format" with additional fields
 * for vertical-specific probing (Section 3.2) and stack mapping (Section 4).
 */
export interface OnboardingProvisionRequest {
    /** Customer identity and qualification data. */
    customer: {
        identity: {
            /** Business or company name. */
            name: string;
            /** Selected vertical from discovery. */
            vertical: OnboardingVertical;
            /** Team size bracket. */
            size: OnboardingTeamSize;
        };
        strategy: {
            /** Primary goal: Scale operations or Save time. */
            goal: OnboardingGoal;
            /** Monthly automation budget tier. */
            budget: OnboardingBudgetTier;
            /** Deployment urgency. */
            urgency: OnboardingUrgency;
        };
    };
    /** Vertical-specific probe answers (Section 3.2). */
    verticalProbe?: VerticalProbeData;
    /** Stack mapping answers (Section 4 — STACK_MAPPING node). */
    stackMapping?: {
        /** Current CRM tool (e.g. HubSpot, Salesforce, none). */
        crmTool?: string;
        /** Current chat/communication tool (e.g. Slack, Discord, Teams). */
        chatTool?: string;
        /** The "nightmare task" — highest-pain task for skill mapping. */
        nightmareTask?: string;
    };
    /** Optional: existing onboarding session ID to link to. */
    onboardingSessionId?: string;
}
/**
 * Static mapping from vertical + goal to the best-match template ID.
 *
 * This is the core resolution logic: given a customer's vertical and goal,
 * which template should we provision?
 *
 * Keys: `${vertical}::${goal}` — fallback to vertical-only if goal doesn't
 * narrow the match.
 */
export declare const VERTICAL_TEMPLATE_MAP: Record<string, string>;
/** Default fallback template when no mapping matches. */
export declare const DEFAULT_TEMPLATE_ID = "startup-team";
/**
 * Resolve the best template ID for a given vertical and goal.
 *
 * @param vertical - Customer's business vertical
 * @param goal - Customer's primary goal (Scale or Time)
 * @returns The matched template ID
 */
export declare function resolveTemplateId(vertical: OnboardingVertical, goal: OnboardingGoal): string;
/**
 * Result returned after the Template Engine provisions a team from
 * the onboarding discovery data.
 */
export interface OnboardingProvisionResponse {
    /** Whether provisioning succeeded. */
    success: boolean;
    /** Provisioned team details (present on success). */
    data?: {
        /** Created team ID. */
        teamId: string;
        /** Template ID that was used. */
        templateId: string;
        /** Human-readable team name. */
        teamName: string;
        /** Number of agents provisioned. */
        memberCount: number;
        /** Budget tier the customer was matched to. */
        matchedTier: OnboardingBudgetTier;
        /** The lead agent's focus area (derived from nightmareTask). */
        leadAgentFocus?: string;
        /** Integrations queued for setup. */
        pendingIntegrations: string[];
        /** Linked onboarding session ID, if any. */
        onboardingSessionId?: string;
    };
    /** Error details (present on failure). */
    error?: string;
}
/**
 * Validate whether a value is a valid OnboardingVertical.
 *
 * @param value - Value to check
 * @returns True if value is a valid vertical
 */
export declare function isValidVertical(value: unknown): value is OnboardingVertical;
/**
 * Validate whether a value is a valid OnboardingGoal.
 *
 * @param value - Value to check
 * @returns True if value is a valid goal
 */
export declare function isValidGoal(value: unknown): value is OnboardingGoal;
/**
 * Validate whether a value is a valid OnboardingBudgetTier.
 *
 * @param value - Value to check
 * @returns True if value is a valid budget tier
 */
export declare function isValidBudgetTier(value: unknown): value is OnboardingBudgetTier;
/**
 * Validate an OnboardingProvisionRequest payload.
 * Checks required fields and enum validity.
 *
 * @param value - Value to validate
 * @returns Object with `valid` flag and optional `errors` array
 */
export declare function validateProvisionRequest(value: unknown): {
    valid: boolean;
    errors: string[];
};
//# sourceMappingURL=onboarding-provision.types.d.ts.map