export type InfraSignalType = 'database' | 'cache' | 'queue' | 'storage' | 'api' | 'kubernetes' | 'railway' | 'serverless' | 'cdn';
export interface InfraSignal {
    type: InfraSignalType;
    /** Raw text snippet that triggered the signal */
    evidence: string;
    /** Specific technology hinted at (e.g. 'postgres', 'redis', 's3') */
    technology: string;
    confidence: 'low' | 'medium' | 'high';
}
/** Internal pattern descriptor used by signal-detector rules. */
export interface SignalPattern {
    type: InfraSignalType;
    technology: string;
    patterns: RegExp[];
    confidence: InfraSignal['confidence'];
}
export type InfraComponentKind = 'rds' | 'supabase' | 'redis' | 'sqs' | 's3' | 'ecs' | 'lambda' | 'railway-service' | 'k8s-deployment' | 'k8s-service' | 'k8s-ingress' | 'cdn-cloudfront' | 'generic-database' | 'generic-cache' | 'generic-queue' | 'generic-storage';
export interface InfraComponent {
    kind: InfraComponentKind;
    name: string;
    /** Environment-specific sizing (e.g. t3.micro for dev, t3.medium for prod) */
    size: string;
    /** Monthly cost estimate in USD */
    estimatedMonthlyCostUsd: number;
    /** Extra provider-specific properties */
    properties: Record<string, string>;
}
export type IaCFormat = 'terraform' | 'docker-compose' | 'kubernetes' | 'railway';
export interface InfraOutput {
    /** Format identifier */
    format: IaCFormat;
    /** File name (e.g. main.tf, docker-compose.yml) */
    filename: string;
    /** Generated file content */
    content: string;
}
export interface InfraCostEstimate {
    environment: string;
    totalMonthlyCostUsd: number;
    breakdown: {
        component: string;
        monthlyCostUsd: number;
    }[];
    currency: 'USD';
    disclaimer: string;
}
export interface GenerateInfrastructureInput {
    projectId: string;
    specId: string;
    formats?: IaCFormat[];
    environment?: 'dev' | 'staging' | 'prod';
}
/** Generator function signature for IaC format generators. */
export type InfraGeneratorFn = (components: InfraComponent[], env: string) => InfraOutput;
/** Internal spec descriptor used by component-mapper to build InfraComponents. */
export interface ComponentSpec {
    kind: InfraComponentKind;
    name: string;
    sizeByEnv: Record<string, string>;
    properties?: Record<string, string>;
}
export interface GenerateInfrastructureOutput {
    specId: string;
    environment: string;
    signalsDetected: InfraSignal[];
    components: InfraComponent[];
    files: InfraOutput[];
    costEstimate: InfraCostEstimate;
    warnings: string[];
}
export interface VersionEntry {
    version: string;
    registry: string;
    lastVerified: string;
}
export interface DockerEntry {
    tag: string;
    registry: string;
    lastVerified: string;
}
export interface CdnEntry {
    version: string;
    baseUrl: string;
    registry: string;
    lastVerified: string;
}
export interface VersionDefaults {
    docker: Record<string, DockerEntry>;
    terraform: Record<string, VersionEntry>;
    npm: Record<string, VersionEntry>;
    jvm: Record<string, VersionEntry>;
    scala: Record<string, VersionEntry>;
    elixir: Record<string, VersionEntry>;
    dart: Record<string, VersionEntry>;
    rust: Record<string, VersionEntry>;
    cdn: Record<string, CdnEntry>;
    standards?: Record<string, VersionEntry>;
}
//# sourceMappingURL=infrastructure.d.ts.map