/**
 * Release channel resolution and validation.
 *
 * Maps Git branches to npm dist-tags and validates that version strings
 * conform to the expectations of their target channel.
 *
 * @task T5586
 */
import type { ChannelConfig } from './release-config.js';
export type { ChannelConfig };
/** npm dist-tag channel for a release. */
export type ReleaseChannel = 'latest' | 'beta' | 'alpha';
/** Result of validating a version string against a channel's expectations. */
export interface ChannelValidationResult {
    valid: boolean;
    expected?: string;
    actual?: string;
    message: string;
}
/** Return the default branch-to-channel mapping. */
export declare function getDefaultChannelConfig(): ChannelConfig;
/**
 * Resolve the release channel for a given Git branch name.
 *
 * Resolution order:
 * 1. Exact match in `config.custom`
 * 2. Prefix match in `config.custom`
 * 3. Exact match against `config.main` → 'latest'
 * 4. Exact match against `config.develop` → 'beta'
 * 5. Starts with 'feature/', 'hotfix/', 'release/', or `config.feature` → 'alpha'
 * 6. Fallback → 'alpha'
 */
export declare function resolveChannelFromBranch(branch: string, config?: ChannelConfig): ReleaseChannel;
/**
 * Map a release channel to its npm dist-tag string.
 *
 * Kept as an explicit function (rather than a direct cast) so that callers
 * remain decoupled from the string values and the mapping can be extended
 * without changing call sites.
 */
export declare function channelToDistTag(channel: ReleaseChannel): string;
/**
 * Validate that a version string satisfies the pre-release conventions for
 * the given channel.
 *
 * Rules:
 * - 'latest': version must NOT contain '-' (no pre-release suffix)
 * - 'beta':   version must contain '-beta' or '-rc'
 * - 'alpha':  version must contain '-alpha', '-dev', '-rc', or '-beta'
 */
export declare function validateVersionChannel(version: string, channel: ReleaseChannel): ChannelValidationResult;
/** Return a human-readable description of the given release channel. */
export declare function describeChannel(channel: ReleaseChannel): string;
//# sourceMappingURL=channel.d.ts.map