/** Ecosystems supported for CI workflow generation */
export type CIEcosystem = 'nodejs' | 'python' | 'go' | 'rust' | 'java' | 'kotlin' | 'ruby' | 'php' | 'dotnet' | 'dart' | 'unknown';
/** Package managers detected per ecosystem */
export type NodePackageManager = 'pnpm' | 'npm' | 'yarn' | 'bun';
export type PythonPackageManager = 'pip' | 'poetry' | 'uv';
export type JavaBuildTool = 'maven' | 'gradle';
/** CI job types that can be included in a workflow */
export type CIJobType = 'lint' | 'test' | 'build' | 'deploy';
/** GitHub Actions trigger events */
export type CITriggerEvent = 'push' | 'pull_request' | 'workflow_dispatch' | 'schedule';
/** Node.js version specifier for matrix or single version */
export interface NodeVersionConfig {
    version: string;
    useMatrix: boolean;
    matrixVersions?: string[];
}
/** Python version specifier */
export interface PythonVersionConfig {
    version: string;
    useMatrix: boolean;
    matrixVersions?: string[];
}
/** Go version specifier */
export interface GoVersionConfig {
    version: string;
}
/** Rust toolchain specifier */
export interface RustToolchainConfig {
    channel: 'stable' | 'beta' | 'nightly';
}
/** Java version specifier */
export interface JavaVersionConfig {
    version: string;
    distribution: 'temurin' | 'zulu' | 'corretto' | 'microsoft';
}
/** Cache configuration for a CI job */
export interface CICacheConfig {
    enabled: boolean;
    paths: string[];
    keyPrefix: string;
}
/** A single step in a CI job */
export interface CIStep {
    name: string;
    uses?: string;
    run?: string;
    with?: Record<string, string | number | boolean>;
    env?: Record<string, string>;
    if?: string;
}
/** A single job in a GitHub Actions workflow */
export interface CIJob {
    name: string;
    runsOn: string;
    needs?: string[];
    steps: CIStep[];
    env?: Record<string, string>;
    outputs?: Record<string, string>;
}
/** Complete GitHub Actions workflow configuration */
export interface CIWorkflow {
    name: string;
    filename: string;
    triggers: CITriggerEvent[];
    jobs: Record<string, CIJob>;
}
/** Detected project stack information for CI generation */
export interface CIStackContext {
    ecosystem: CIEcosystem;
    language: string;
    packageManager: string;
    testCommand: string;
    lintCommand: string;
    buildCommand: string;
    hasDocker: boolean;
    nodeVersion?: string;
    pythonVersion?: string;
    goVersion?: string;
    rustChannel?: string;
    javaVersion?: string;
    javaDistribution?: string;
    javaBuildTool?: JavaBuildTool;
}
/** Result of CI workflow generation */
export interface GenerateCIResult {
    ecosystem: CIEcosystem;
    workflowPath: string;
    yamlContent: string;
    jobs: CIJobType[];
    stackContext: CIStackContext;
}
/** Input arguments for the generate_ci tool */
export interface GenerateCIInput {
    projectId: string;
    projectPath: string;
    jobs?: CIJobType[];
    triggers?: CITriggerEvent[];
    nodeVersion?: string;
    pythonVersion?: string;
    goVersion?: string;
    rustChannel?: 'stable' | 'beta' | 'nightly';
    javaVersion?: string;
    workflowName?: string;
}
/** Severity threshold for drift detection in CI */
export type CISeverityThreshold = 'critical' | 'warning' | 'info';
/** Configuration for .planu.yml file */
export interface PlanuCIConfig {
    specs: {
        directory: string;
        include?: string[];
        exclude?: string[];
    };
    ci: {
        failOnDrift: boolean;
        severityThreshold: CISeverityThreshold;
        postComment: boolean;
        badge: boolean;
    };
    license?: {
        key: string;
    };
}
/** Input for generating a planu-check CI workflow */
export interface GeneratePlanuCIInput {
    projectId: string;
    specsDir?: string;
    detectDrift?: boolean;
    failOnDrift?: boolean;
    severityThreshold?: CISeverityThreshold;
    postComment?: boolean;
    badge?: boolean;
    workingDirectory?: string;
}
/** Result of generating a planu-check CI workflow */
export interface GeneratePlanuCIResult {
    workflowYaml: string;
    workflowPath: string;
    planuConfigYaml: string;
    badgeMarkdown: string;
    features: PlanuCIFeature[];
}
/** Features included in the generated planu CI workflow */
export type PlanuCIFeature = 'validate' | 'detect-drift' | 'pr-comment' | 'fail-on-drift' | 'badge' | 'planu-config';
/** Options for generating a .planu.yml config file */
export interface PlanuConfigOptions {
    specsDir: string;
    failOnDrift: boolean;
    severityThreshold: CISeverityThreshold;
    postComment: boolean;
    badge: boolean;
    include?: string[];
    exclude?: string[];
    licenseKeyRef?: string;
}
//# sourceMappingURL=ci.d.ts.map