/**
 * Brand Onboarding Service for Marketing Team templates.
 *
 * Manages the onboarding questionnaire flow that collects brand information
 * from SMB owners and generates a Brand Voice Guide. Supports two channels:
 *   - CLI: Interactive readline-based questionnaire
 *   - Programmatic: Step-by-step answer submission via API
 *
 * The generated Brand Voice Guide is stored in the team's knowledge directory
 * and used by all marketing agents to maintain brand consistency.
 *
 * @module brand-onboarding-service
 */
import { BrandProfile, GenerateGuideOptions, OnboardingQuestion, OnboardingSession, type OnboardingPrefill } from './brand-onboarding.types.js';
/**
 * Service that manages brand onboarding questionnaire sessions and
 * generates Brand Voice Guides for marketing team templates.
 *
 * Follows the singleton pattern for consistency with other Crewly services.
 */
export declare class BrandOnboardingService {
    private static instance;
    private sessions;
    private crewlyHome;
    /**
     * Create a new BrandOnboardingService.
     *
     * @param crewlyHome - Path to the .crewly home directory (default: ~/.crewly)
     */
    constructor(crewlyHome?: string);
    /**
     * Get or create the singleton instance.
     *
     * @param crewlyHome - Optional override for .crewly home path
     * @returns Singleton instance
     */
    static getInstance(crewlyHome?: string): BrandOnboardingService;
    /**
     * Reset the singleton (for testing).
     */
    static resetInstance(): void;
    /**
     * Start a new onboarding session for a team.
     *
     * @param teamId - The team this onboarding belongs to
     * @param templateId - The template that triggered onboarding
     * @returns The created onboarding session
     */
    startSession(teamId: string, templateId: string): OnboardingSession;
    /**
     * Get an existing onboarding session.
     *
     * @param sessionId - Session identifier
     * @returns The session or null if not found
     */
    getSession(sessionId: string): OnboardingSession | null;
    /**
     * Get the current question for a session.
     *
     * @param sessionId - Session identifier
     * @returns The current question or null if session complete/not found
     */
    getCurrentQuestion(sessionId: string): OnboardingQuestion | null;
    /**
     * Submit an answer to the current question and advance to the next.
     *
     * @param sessionId - Session identifier
     * @param value - The answer value
     * @returns Updated session with next question index, or null if session not found
     * @throws Error if answer validation fails
     */
    submitAnswer(sessionId: string, value: string): OnboardingSession | null;
    /**
     * Submit all answers at once (batch mode for programmatic use).
     *
     * @param sessionId - Session identifier
     * @param answers - Map of questionId → answer value
     * @returns Updated session
     */
    submitAllAnswers(sessionId: string, answers: Record<string, string>): OnboardingSession | null;
    /**
     * Extract a structured BrandProfile from onboarding answers.
     *
     * @param session - Completed onboarding session with all answers
     * @returns Structured brand profile
     * @throws Error if session is not completed
     */
    extractBrandProfile(session: OnboardingSession): BrandProfile;
    /**
     * Generate the Brand Voice Guide markdown file from a brand profile.
     *
     * This creates a structured markdown document that all marketing agents
     * reference to maintain brand consistency.
     *
     * @param options - Generation options including profile and output path
     * @returns Path to the generated guide file
     */
    generateBrandVoiceGuide(options: GenerateGuideOptions): string;
    /**
     * Complete the onboarding flow: extract profile, generate guide, update session.
     *
     * @param sessionId - Session identifier
     * @param teamKnowledgeDir - Path to the team's knowledge/docs/ directory
     * @returns Updated session with guidePath populated, or null if not found
     */
    completeOnboarding(sessionId: string, teamKnowledgeDir: string): OnboardingSession | null;
    /**
     * Get all questions for display.
     *
     * @returns All onboarding questions in order
     */
    getQuestions(): OnboardingQuestion[];
    listSessions(): OnboardingSession[];
    setWebsiteUrl(sessionId: string, websiteUrl: string): OnboardingSession | null;
    setPrefill(sessionId: string, prefill: OnboardingPrefill): OnboardingSession | null;
    approveProfile(sessionId: string, profile: BrandProfile): OnboardingSession | null;
    /**
     * Build the Brand Voice Guide markdown content from a brand profile.
     *
     * @param profile - Structured brand profile
     * @returns Markdown string for the guide
     */
    private buildGuideMarkdown;
    /**
     * Generate Do's and Don'ts based on brand personality and tone.
     *
     * @param profile - Brand profile
     * @returns Object with dos and donts arrays
     */
    private generateDosAndDonts;
    /**
     * Generate platform-specific content guidelines.
     *
     * @param platforms - List of active platforms
     * @returns Markdown string with platform guidelines
     */
    private generatePlatformGuidelines;
    /**
     * Parse tone string to valid tone type.
     *
     * @param toneStr - Raw tone answer
     * @returns Normalized tone value
     */
    private parseTone;
    /**
     * Persist session to disk for recovery.
     *
     * @param session - Session to save
     */
    private persistSession;
    /**
     * Load a session from disk.
     *
     * @param sessionId - Session to load
     * @returns Loaded session or null
     */
    private loadSession;
}
//# sourceMappingURL=brand-onboarding.service.d.ts.map