/**
 * Release configuration loader and validator.
 *
 * Loads release configuration from .cleo/release-config.json (T820) with
 * fallback to .cleo/config.json for legacy fields. Provides defaults for
 * versioning scheme, changelog format, artifact types, gates, git workflow,
 * registries, and security settings.
 *
 * Priority order:
 *   1. .cleo/release-config.json (T820 project-agnostic config)
 *   2. .cleo/config.json nested under release.* (legacy)
 *   3. DEFAULTS constants
 *
 * @task T820
 * @epic T820
 */
/** Release gate definition. */
export interface ReleaseGate {
    name: string;
    type: 'tests' | 'lint' | 'audit' | 'custom';
    command: string;
    required: boolean;
}
/** GitFlow branch configuration. */
export interface GitFlowConfig {
    enabled: boolean;
    branches: {
        main: string;
        develop: string;
        featurePrefix: string;
        hotfixPrefix: string;
        releasePrefix: string;
    };
}
/** Channel-to-branch mapping for npm dist-tag resolution. */
export interface ChannelConfig {
    main: string;
    develop: string;
    feature: string;
    custom?: Record<string, string>;
}
/** Push mode: direct push vs PR creation vs auto-detect. */
export type PushMode = 'direct' | 'pr' | 'auto';
/** Known registry identifiers. */
export type RegistryId = 'npm' | 'crates' | 'docker' | 'pypi' | 'maven' | 'nuget' | 'ghcr';
/** Security / provenance settings. */
export interface SecurityConfig {
    enableProvenance: boolean;
    slsaLevel: number;
    requireSignedCommits: boolean;
}
/** Release configuration shape (T820 extended). */
export interface ReleaseConfig {
    versioningScheme: string;
    tagPrefix: string;
    changelogFormat: string;
    changelogFile: string;
    artifactType: string;
    gates: ReleaseGate[];
    versionBump: {
        files: Array<{
            file: string;
            strategy: string;
            field?: string;
        }>;
    };
    security: SecurityConfig;
    /** Git workflow mode: 'direct' push or PR-first. */
    gitWorkflow?: PushMode;
    /** Registries to publish to (e.g. ['npm', 'docker']). */
    registries?: string[];
    /** Artifact output paths for gate checks. */
    buildArtifactPaths?: string[];
    /** Skip build artifact presence gate (useful for source-only projects). */
    skipBuildArtifactGate?: boolean;
    /** Pre-release distribution channel (e.g. 'beta', 'alpha'). */
    prereleaseChannel?: string;
    /** GitFlow branch configuration. */
    gitflow?: GitFlowConfig;
    /** Channel-to-dist-tag mapping. */
    channels?: ChannelConfig;
    /** Legacy push config — prefer gitWorkflow. */
    push?: {
        mode?: PushMode;
    };
}
/**
 * Load release configuration with defaults.
 *
 * Reads from .cleo/release-config.json first (T820 flat format), then falls
 * back to .cleo/config.json nested keys for legacy compatibility.
 */
export declare function loadReleaseConfig(cwd?: string): ReleaseConfig;
/**
 * Validate release configuration.
 *
 * Returns `valid: true` when there are no errors. Warnings do not block release.
 */
export declare function validateReleaseConfig(config: ReleaseConfig): {
    valid: boolean;
    errors: string[];
    warnings: string[];
};
/** Get artifact type from config. */
export declare function getArtifactType(cwd?: string): string;
/** Get release gates from config. */
export declare function getReleaseGates(cwd?: string): ReleaseGate[];
/** Get changelog configuration. */
export declare function getChangelogConfig(cwd?: string): {
    format: string;
    file: string;
};
/** Return the default GitFlow branch configuration. */
export declare function getDefaultGitFlowConfig(): GitFlowConfig;
/** Merge caller-supplied GitFlow config with defaults. */
export declare function getGitFlowConfig(config: ReleaseConfig): GitFlowConfig;
/** Return the default channel configuration. */
export declare function getDefaultChannelConfig(): ChannelConfig;
/** Merge caller-supplied channel config with defaults. */
export declare function getChannelConfig(config: ReleaseConfig): ChannelConfig;
/**
 * Return the effective push mode.
 *
 * Priority: config.gitWorkflow (T820) > config.push.mode (legacy) > 'auto'
 */
export declare function getPushMode(config: ReleaseConfig): PushMode;
//# sourceMappingURL=release-config.d.ts.map