/**
 * Types for Architecture Decision Engine
 */
import { z } from 'zod';
/**
 * Architecture type recommendations
 */
export type ArchitectureType = 'serverless' | 'traditional-monolith' | 'microservices' | 'modular-monolith' | 'jamstack' | 'hybrid';
/**
 * Budget type
 */
export type BudgetType = 'bootstrapped' | 'pre-seed' | 'seed' | 'series-a-plus' | 'learning';
/**
 * Cost estimate at different scales
 */
export interface CostEstimate {
    /** Cost at 1K users */
    at1K: string;
    /** Cost at 10K users */
    at10K: string;
    /** Cost at 100K users */
    at100K: string;
    /** Cost at 1M users */
    at1M: string;
}
/**
 * Cloud credit offering
 */
export interface CloudCredit {
    /** Cloud provider */
    provider: string;
    /** Credit amount range */
    amount: string;
    /** Duration of credits */
    duration: string;
    /** Requirements to qualify */
    requirements?: string;
    /** Application URL */
    url?: string;
}
/**
 * Project definition generated from architecture
 */
export interface ProjectDefinition {
    /** Project name */
    name: string;
    /** Project description */
    description: string;
    /** Technology stack */
    stack: string[];
}
/**
 * Architecture recommendation
 */
export interface ArchitectureRecommendation {
    /** Recommended architecture type */
    architecture: ArchitectureType;
    /** Infrastructure components */
    infrastructure: string[];
    /** Clear rationale for this choice */
    rationale: string;
    /** Cost estimates at different scales */
    costEstimate: CostEstimate;
    /** Available cloud credits */
    cloudCredits: CloudCredit[];
    /** Generated project list */
    projects: ProjectDefinition[];
    /** Methodology (agile vs waterfall) */
    methodology: 'agile' | 'waterfall';
    /** Alternative architectures considered */
    alternatives?: Array<{
        architecture: ArchitectureType;
        pros: string[];
        cons: string[];
    }>;
}
/**
 * Zod schemas
 */
export declare const CostEstimateSchema: z.ZodObject<{
    at1K: z.ZodString;
    at10K: z.ZodString;
    at100K: z.ZodString;
    at1M: z.ZodString;
}, z.core.$strip>;
export declare const CloudCreditSchema: z.ZodObject<{
    provider: z.ZodString;
    amount: z.ZodString;
    duration: z.ZodString;
    requirements: z.ZodOptional<z.ZodString>;
    url: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
export declare const ProjectDefinitionSchema: z.ZodObject<{
    name: z.ZodString;
    description: z.ZodString;
    stack: z.ZodArray<z.ZodString>;
}, z.core.$strip>;
export declare const ArchitectureRecommendationSchema: z.ZodObject<{
    architecture: z.ZodEnum<{
        microservices: "microservices";
        hybrid: "hybrid";
        serverless: "serverless";
        "traditional-monolith": "traditional-monolith";
        "modular-monolith": "modular-monolith";
        jamstack: "jamstack";
    }>;
    infrastructure: z.ZodArray<z.ZodString>;
    rationale: z.ZodString;
    costEstimate: z.ZodObject<{
        at1K: z.ZodString;
        at10K: z.ZodString;
        at100K: z.ZodString;
        at1M: z.ZodString;
    }, z.core.$strip>;
    cloudCredits: z.ZodArray<z.ZodObject<{
        provider: z.ZodString;
        amount: z.ZodString;
        duration: z.ZodString;
        requirements: z.ZodOptional<z.ZodString>;
        url: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    projects: z.ZodArray<z.ZodObject<{
        name: z.ZodString;
        description: z.ZodString;
        stack: z.ZodArray<z.ZodString>;
    }, z.core.$strip>>;
    methodology: z.ZodEnum<{
        agile: "agile";
        waterfall: "waterfall";
    }>;
    alternatives: z.ZodOptional<z.ZodArray<z.ZodObject<{
        architecture: z.ZodEnum<{
            microservices: "microservices";
            hybrid: "hybrid";
            serverless: "serverless";
            "traditional-monolith": "traditional-monolith";
            "modular-monolith": "modular-monolith";
            jamstack: "jamstack";
        }>;
        pros: z.ZodArray<z.ZodString>;
        cons: z.ZodArray<z.ZodString>;
    }, z.core.$strip>>>;
}, z.core.$strip>;
//# sourceMappingURL=types.d.ts.map