import type { LinterTool } from './common/index.js';
export interface EnvVariable {
    name: string;
    service: string;
    required: boolean;
    sensitive: boolean;
    description: string;
    howToGet: string;
    dashboardUrl?: string;
    format?: string;
    exampleValue?: string;
    environments: ('development' | 'staging' | 'production')[];
}
export interface EnvSetupGuide {
    projectId: string;
    variables: EnvVariable[];
    missing: EnvVariable[];
    security: EnvSecurityCheck;
    envExampleGenerated?: string;
    setupSteps: EnvSetupStep[];
}
export interface EnvSecurityCheck {
    gitignoreHasEnv: boolean;
    noSecretsInCode: boolean;
    noEnvInGit: boolean;
    noSecretsInLogs: boolean;
    usesSecretManager: boolean;
    issues: EnvSecurityIssue[];
}
export interface EnvSecurityIssue {
    severity: 'critical' | 'warning' | 'info';
    file?: string;
    line?: number;
    issue: string;
    fix: string;
}
export interface EnvSetupStep {
    order: number;
    service: string;
    title: string;
    steps: string[];
    dashboardUrl?: string;
    variables: string[];
    docsUrl: string;
    estimatedTime: string;
}
export interface LintingDetection {
    tool: LinterTool;
    version?: string;
    configFile?: string;
    rulesCount?: number;
    status: 'configured' | 'installed-not-configured' | 'missing';
    isDefault: boolean;
}
export interface LintingAnalysis {
    projectId: string;
    language: string;
    detectedLinters: LintingDetection[];
    missingRecommended: LintingRecommendation[];
    rulesConflicts: LintRuleConflict[];
    customRulesFromProject: LintCustomRule[];
    maturityScore: number;
}
export interface LintingRecommendation {
    tool: LinterTool;
    reason: string;
    priority: 'critical' | 'recommended' | 'nice-to-have';
    installCommand: string;
    configExample: string;
    docsUrl: string;
    estimatedSetupTime: string;
}
export interface LintRuleConflict {
    linterA: LinterTool;
    linterB: LinterTool;
    conflict: string;
    resolution: string;
}
export interface LintCustomRule {
    source: string;
    rule: string;
    enforceable: boolean;
    linterRule?: string;
    linterConfig?: string;
}
export interface LinterRegistryEntry {
    configFiles: string[];
    npmPkg?: string;
    purpose: string;
    installCmd: string;
    docsUrl: string;
}
export interface LinterLanguageEntry {
    recommended: string[];
    alternates: string[];
    transversal: string[];
    linters: Record<string, LinterRegistryEntry>;
}
export interface LinterRegistryConflict {
    linters: [string, string];
    conflictType: 'formatting-overlap' | 'rule-contradiction' | 'performance';
    description: string;
    resolution: string;
}
export interface LinterRegistryFile {
    conflicts: LinterRegistryConflict[];
    [lang: string]: unknown;
}
export interface EnvPatternService {
    prefix: string[];
    description: string;
    dashboardUrl: string | null;
    vars: Record<string, EnvPatternVarEntry>;
}
export interface EnvPatternVarEntry {
    description: string;
    format: string;
    howToObtain: string;
    estimatedTime: string;
    isSecret?: boolean;
}
export interface EnvPatternsFile {
    detectionPatterns: Record<string, string[]>;
    secretPatterns: string[];
    services: Record<string, EnvPatternService>;
}
export interface ScannedVar {
    name: string;
    file: string;
    line: number;
}
export interface EnvVarScan {
    name: string;
    source: 'code' | 'env-example' | 'both';
    description: string;
    howToObtain: string;
    dashboardUrl: string | null;
    expectedFormat: string;
    estimatedTime: string;
    isSecret: boolean;
}
export interface EnvScanResult {
    variables: EnvVarScan[];
    missingInExample: string[];
    hardcodedSecrets: SecretDetection[];
    gitignoreCoversEnv: boolean;
    envExampleExists: boolean;
}
export interface SecretDetection {
    file: string;
    line: number;
    variableName: string;
    severity: 'critical' | 'warning';
    instruction: string;
}
export interface BeginnerEnvStep {
    step: number;
    variable: string;
    title: string;
    instructions: string[];
    dashboardUrl?: string;
}
export interface CacheEntry {
    data: string;
    fetchedAt: number;
    ttlMs: number;
}
export interface SemverParts {
    major: number;
    minor: number;
    patch: number;
}
export interface WebFetchResult {
    url: string;
    content: string;
    fetchedAt: string;
    stale: boolean;
    ttlSeconds: number;
    source: 'web' | 'cache' | 'local-fallback';
}
export interface WebFetcherConfig {
    defaultTtlSeconds: number;
    maxRetries: number;
    retryBackoffMs: number;
    timeoutMs: number;
    userAgent: string;
}
export interface RegistryHealth {
    registryFile: string;
    entriesTotal: number;
    entriesFresh: number;
    entriesStale: number;
    lastUpdated: string;
}
export type CloudProvider = 'aws' | 'gcp' | 'railway' | 'vercel' | 'fly' | 'generic';
export type InfraResourceType = 'compute' | 'database' | 'cache' | 'cdn' | 'storage' | 'monitoring';
export interface ResourceCostEntry {
    resource: InfraResourceType;
    provider: CloudProvider;
    tier: string;
    monthlyUsd: number;
    notes: string;
}
export interface DistributionCostEstimate {
    provider: CloudProvider;
    resources: ResourceCostEntry[];
    totalMonthlyUsd: number;
    totalYearlyUsd: number;
    breakdown: string;
}
export interface DistributionReadiness {
    score: number;
    level: 'not-ready' | 'partial' | 'ready';
    present: string[];
    missing: string[];
    recommendations: string[];
}
export interface ModeSuggestion {
    mode: string;
    hint: string;
}
//# sourceMappingURL=env.d.ts.map