export interface ProjectConfig {
    id: string;
    name: string;
    description: string;
    createdAt: string;
    updatedAt: string;
    contextPath: string;
    version: string;
    status: "initialized" | "context-generated" | "branded" | "components-planned" | "generating" | "completed";
    scope?: string[];
    ignore?: string[];
    i18n?: I18nConfig;
    asr?: Record<string, FeatureASR>;
}
export interface I18nConfig {
    defaultLocale: string;
    locales: string[];
    dictionaryPath: string;
}
export interface FeatureASR {
    featureId: string;
    routes: string[];
    components: string[];
    i18nNamespace: string;
    actions: string[];
    status: "draft" | "implemented" | "verified";
}
/**
 * Unified ProjectContext interface - Single source of truth
 * Consolidates all context properties from contextManager.ts and contextLoader.ts
 */
export interface ProjectContext {
    prd?: string;
    types?: string;
    brand?: string;
    componentList?: any;
    projectStructure?: string;
    features?: string;
    userFlows?: string;
    edgeCases?: string;
    technicalSpecs?: string;
    userStories?: string;
    buildStrategy?: BuildStrategyPlan;
    previousOutputs?: Record<string, any>;
    userPrompt?: string;
    workingDirectory?: string;
    contextVersion?: string;
    lastUpdated?: string;
}
export interface ContextFiles {
    prd: string;
    types: string;
    userStories: string;
    actionFunctions: string;
    componentList: string;
    branding?: string;
}
export interface PRDValidationResult {
    overall: number;
    dimensions: {
        technicalCompleteness: number;
        noveltyRisk: number;
        resourceEstimate: number;
        compliance: number;
        languageClarity: number;
    };
    recommendations: string[];
    risks: string[];
    isValid: boolean;
}
export interface ComponentGroup {
    name: string;
    description: string;
    components: Component[];
    priority: "high" | "medium" | "low";
    dependencies: string[];
}
export interface Component {
    name: string;
    description: string;
    type: "form" | "display" | "layout" | "interactive";
    priority: "high" | "medium" | "low";
    dependencies: string[];
    tags: string[];
    implementation?: string;
}
export interface CommandOptions {
    verbose?: boolean;
    project?: string;
    yes?: boolean;
    scope?: string;
    ignore?: string;
}
export interface GenerationOptions {
    temperature?: number;
    maxTokens?: number;
    verbose?: boolean;
    output?: string;
}
export interface GenerateComponentsOptions {
    target: string;
    group?: string;
    temperature?: number;
    maxTokens?: number;
    verbose?: boolean;
    output?: string;
}
export interface EnhancementOptions {
    prompt: string;
    temperature?: number;
    maxTokens?: number;
    verbose?: boolean;
    output?: string;
}
export interface GenerationResult {
    success: boolean;
    content?: string;
    error?: string;
    provider: "qwen" | "github" | "huggingface" | "hybrid" | "local" | "qwen-hosted";
    metadata?: {
        model: string;
        tokens: number;
        latency: number;
    };
}
export interface ComponentProp {
    name: string;
    type: string;
    required: boolean;
    description: string;
    defaultValue?: string;
}
export interface BrandingConfig {
    projectName: string;
    colors: {
        primary: string;
        secondary: string;
        accent?: string;
        background: string;
        foreground: string;
        muted: string;
        mutedForeground: string;
        card: string;
        cardForeground: string;
        border: string;
        input: string;
        ring: string;
    };
    typography: {
        fontFamily: string;
        headingFont?: string;
        fontSizes: string[];
    };
    spacing: {
        baseUnit: number;
        scale: number[];
    };
    designPrinciples: string[];
    componentPatterns: string[];
}
export interface CLIContext {
    currentProject?: ProjectConfig;
    globalConfig: GlobalConfig;
    workingDirectory: string;
}
export interface GlobalConfig {
    defaultEditor: string;
    apiEndpoint: string;
    userId?: string;
    apiKey?: string;
}
export interface UserStory {
    id: string;
    title: string;
    description: string;
    acceptanceCriteria: string[];
    priority: "low" | "medium" | "high" | "critical";
    components: string[];
    actionFunctions: string[];
}
export interface ActionFunction {
    name: string;
    description: string;
    parameters: FunctionParameter[];
    returnType: string;
    userStories: string[];
    implementation?: string;
}
export interface FunctionParameter {
    name: string;
    type: string;
    required: boolean;
    description: string;
}
export interface AIProvider {
    name: string;
    priority: number;
    client: any;
    isAvailable: () => Promise<boolean>;
}
export type StrategyId = "foundation-first" | "vertical-slice" | "horizontal-slice" | "iterative-scaffolding" | "hybrid-approach";
export type PhaseStatus = "not_started" | "planning" | "in_progress" | "blocked" | "completed" | "cancelled";
export type TaskStatus = "pending" | "in_progress" | "blocked" | "in_review" | "completed" | "cancelled";
export type TaskCategory = "setup" | "backend" | "frontend" | "testing" | "documentation" | "refactoring" | "bugfix" | "deployment";
/**
 * Phase Identifier - Supports hierarchical phases (3.5a, etc.)
 */
export interface PhaseIdentifier {
    id: string;
    major: number;
    minor?: number;
    patch?: string;
    label: string;
    displayOrder: number;
}
/**
 * Task with machine-readable status
 */
export interface Task {
    id: string;
    title: string;
    description?: string;
    status: TaskStatus;
    emoji?: string;
    createdAt: string;
    updatedAt?: string;
    startedAt?: string;
    completedAt?: string;
    dueDate?: string;
    estimatedHours?: number;
    actualHours?: number;
    complexity?: "simple" | "medium" | "complex";
    assignee?: string;
    team?: string;
    priority: "critical" | "high" | "medium" | "low";
    category?: TaskCategory;
    tags?: string[];
    dependencies?: string[];
    blockedBy?: string[];
    blocks?: string[];
    relatedComponents?: string[];
    relatedFiles?: string[];
    pullRequest?: string;
    issue?: string;
    notes?: string;
    completionNotes?: string;
}
/**
 * Phase Progress - Auto-calculated
 */
export interface PhaseProgress {
    totalTasks: number;
    completedTasks: number;
    inProgressTasks: number;
    blockedTasks: number;
    completionPercentage: number;
    estimatedHoursTotal: number;
    actualHoursSpent: number;
    burndownRate?: number;
}
/**
 * Phase Dependency
 */
export interface PhaseDependency {
    phaseId: string;
    type: "requires" | "suggests" | "optional";
    reason: string;
    status: "satisfied" | "pending" | "blocked";
}
/**
 * Phase Component - Links components to phases
 */
export interface PhaseComponent {
    name: string;
    path: string;
    type: "ui" | "page" | "api" | "utility" | "hook" | "context" | "type";
    generatedAt?: string;
    status: "planned" | "generated" | "refined" | "tested" | "production";
    relatedTasks: string[];
    dependencies?: string[];
    tests?: ComponentTest[];
}
export interface ComponentTest {
    type: "unit" | "integration" | "e2e";
    path: string;
    status: "passing" | "failing" | "skipped";
    coverage?: number;
}
/**
 * Deliverable
 */
export interface Deliverable {
    id: string;
    title: string;
    description?: string;
    type: "feature" | "component" | "documentation" | "test_suite" | "deployment" | "api_endpoint" | "database_schema";
    status: "planned" | "in_progress" | "completed" | "verified";
    createdAt: string;
    completedAt?: string;
    relatedTasks: string[];
    artifacts?: DeliverableArtifact[];
}
export interface DeliverableArtifact {
    name: string;
    type: "file" | "url" | "screenshot" | "demo";
    path: string;
    createdAt: string;
}
/**
 * Build Phase
 */
export interface BuildPhase {
    phase: PhaseIdentifier;
    name: string;
    description?: string;
    duration: string;
    estimatedEffort: string;
    startDate?: string;
    endDate?: string;
    estimatedCompletionDate?: string;
    status: PhaseStatus;
    priority: "critical" | "high" | "medium" | "low";
    progress: PhaseProgress;
    tasks: Task[];
    deliverables: Deliverable[];
    successCriteria: string | string[];
    components: PhaseComponent[];
    dependencies: PhaseDependency[];
    blockedBy?: string[];
    blocks?: string[];
    notes?: string;
    tags?: string[];
    createdAt: string;
    updatedAt: string;
}
/**
 * Milestone
 */
export interface Milestone {
    id: string;
    phaseId: string;
    title: string;
    description?: string;
    targetDate?: string;
    achievedDate?: string;
    status: "upcoming" | "in_progress" | "achieved" | "missed";
    criteria: string[];
}
/**
 * Risk Factor
 */
export interface RiskFactor {
    id: string;
    title: string;
    description: string;
    severity: "critical" | "high" | "medium" | "low";
    probability: "very_likely" | "likely" | "possible" | "unlikely";
    impact: string;
    mitigation: string;
    status: "active" | "mitigated" | "occurred" | "resolved";
    relatedPhases: string[];
}
/**
 * Success Metrics
 */
export interface SuccessMetrics {
    codeCoverage: string;
    performance: string;
    security: string;
    mobile: string;
    userRoles: string;
    [key: string]: string;
}
/**
 * Build Strategy Plan - Main type
 */
export interface BuildStrategyPlan {
    type: "plan" | "recommendations" | "tasks" | "comparison";
    version: string;
    generatedAt: string;
    projectPath: string;
    lastUpdated: string;
    strategy: StrategyMetadata;
    context: {
        projectName: string;
        description: string;
        techStack: string[];
        userRoles: string[];
        components: string[];
        features: string[];
        complexity: "simple" | "medium" | "complex";
        teamSize: "solo" | "small" | "large";
        timeline: "urgent" | "moderate" | "flexible";
    };
    data: {
        plan: BuildPhase[];
        totalDuration: string;
        currentPhase: PhaseIdentifier;
        nextMilestone: string;
        milestones: Milestone[];
        riskFactors: RiskFactor[];
        successMetrics: SuccessMetrics;
    };
}
/**
 * Strategy Metadata
 */
export interface StrategyMetadata {
    id: StrategyId;
    name: string;
    description: string;
    icon: string;
    complexity: "low" | "medium" | "high";
    timeToFirstDemo: string;
    currentStatus: string;
    completionPercentage: number;
    bestFor: string[];
    pros: string[];
    cons: string[];
}
/**
 * Action Types
 */
export type ActionType = "server-action" | "client-action" | "event-handler" | "form-action" | "api-route" | "middleware";
export type HttpMethod = "GET" | "POST" | "PUT" | "DELETE" | "PATCH";
/**
 * Action Definition
 */
export interface ActionDefinition {
    name: string;
    type: ActionType;
    description: string;
    method?: HttpMethod;
    route?: string;
    parameters?: string[];
    returns?: string;
    database?: string;
    validation?: string;
    middleware?: string[];
    external?: string[];
    serverAction?: string;
}
/**
 * Server Action Definition
 */
export interface ServerActionDefinition {
    name: string;
    description: string;
    parameters: Array<{
        name: string;
        type: string;
        required: boolean;
        description?: string;
    }>;
    returns: string;
    database?: string;
    validation?: string;
    middleware?: string[];
    external?: string[];
    errorHandling?: string[];
    caching?: {
        strategy: "no-cache" | "force-cache" | "revalidate";
        revalidate?: number;
    };
}
/**
 * Route Definition
 */
export interface RouteDefinition {
    path: string;
    type: "page" | "layout" | "dynamic" | "api";
    page?: string;
    layout?: string;
    components: string[];
    actions: string[];
    middleware?: string[];
    metadata?: {
        title?: string;
        description?: string;
        openGraph?: Record<string, any>;
    };
}
/**
 * API Endpoint Definition
 */
export interface ApiEndpoint {
    path: string;
    methods: HttpMethod[];
    actions: string[];
    middleware?: string[];
    rateLimit?: {
        requests: number;
        window: string;
    };
    auth?: boolean;
    description?: string;
}
/**
 * Enhanced Component Definition with Complete Architecture
 */
export interface EnhancedComponent extends Component {
    level: number;
    routes: RouteDefinition[];
    actions: ActionDefinition[];
    serverActions?: ServerActionDefinition[];
    apiEndpoints?: ApiEndpoint[];
    database?: {
        table: string;
        operations: ("read" | "write" | "update" | "delete")[];
    };
    children?: Record<string, EnhancedComponent>;
    selfDocumentation?: ComponentDocumentation;
}
/**
 * Component Documentation
 */
export interface ComponentDocumentation {
    purpose: string;
    userExpectations: string[];
    integrationNotes: string[];
    dataFlow: string[];
    usageExample: string;
    dependencies: ComponentReference[];
    relatedActions: string[];
    relatedRoutes: string[];
}
/**
 * Component Reference
 */
export interface ComponentReference {
    name: string;
    level: number;
    relationship: "parent" | "child" | "sibling" | "dependency";
}
/**
 * Complete Generation Item
 */
export interface CompleteGenerationItem {
    component: EnhancedComponent;
    level: number;
    dependencies: ComponentReference[];
    routes: RouteDefinition[];
    actions: ActionDefinition[];
    serverActions: ServerActionDefinition[];
    generationOrder: number;
    selfDocumentation: string;
}
/**
 * Complete Architecture Plan
 */
export interface CompleteArchitecturePlan {
    project: {
        name: string;
        description: string;
        architecture: {
            type: "nextjs-app-router" | "nextjs-pages" | "react-spa" | "custom";
            features: FeatureDefinition[];
        };
    };
    hierarchy: Record<string, EnhancedComponent>;
    routes: Record<string, RouteDefinition>;
    api: Record<string, ApiEndpoint>;
    serverActions: Record<string, {
        description: string;
        actions: ServerActionDefinition[];
    }>;
    metadata: {
        totalComponents: number;
        totalRoutes: number;
        totalApiEndpoints: number;
        totalServerActions: number;
        generationStrategy: string;
        documentationLevel: "basic" | "standard" | "comprehensive";
    };
}
/**
 * Feature Definition
 */
export interface FeatureDefinition {
    name: string;
    description: string;
    components: {
        client: string[];
        server: string[];
    };
    routes: RouteDefinition[];
    actions: ActionDefinition[];
    database?: {
        tables: string[];
        relationships: string[];
    };
}
/**
 * Generation Queue Item
 */
export interface GenerationQueueItem {
    component: EnhancedComponent;
    order: number;
    dependencies: string[];
    status: "pending" | "in_progress" | "completed" | "failed";
}
export * from "./progress";
export * from "./analysis";
export * from "./components";
export * from "./enhancement";
export * from "./pm-integration";
export * from "./feature-bundle";
export type { Role, RoleHierarchy } from "./role-permissions";
export type { TestMission, TestExecutionResult, TestStep, TestStatus, ValidationResult, TestReport, TestMissionsStorage, BrowserConfig, TestGenerationOptions, InteractiveTestSession, } from "./flow-testing";
//# sourceMappingURL=index.d.ts.map