import { VersioningStrategy } from './strategy'; import { IVersioningStrategy } from './types'; import { VersionInfo } from './version-info'; /** * Git information extracted from repository */ export interface GitInfo { readonly commitHash: string; readonly commitHashShort: string; readonly branch: string; readonly tag?: string; readonly commitsSinceTag?: number; readonly commitCount: number; readonly packageVersion?: string; } /** * Context for version computation */ export interface ComputationContext { readonly gitInfo: GitInfo; readonly environment: string; readonly deployedBy: string; readonly buildNumber?: string; readonly repository?: string; readonly pipelineVersion?: string; } /** * Base class for version computation strategies */ export declare abstract class VersionComputationStrategy { readonly strategy: VersioningStrategy; protected constructor(strategy: VersioningStrategy); /** * Compute version string from context */ abstract computeVersion(context: ComputationContext): string; /** * Create VersionInfo from context */ createVersionInfo(context: ComputationContext): VersionInfo; } /** * Composite version computation that combines multiple strategies */ export declare class CompositeComputation extends VersionComputationStrategy { constructor(strategy: VersioningStrategy); computeVersion(context: ComputationContext): string; } /** * Main version computer that handles strategy selection */ export declare class VersionComputer { private readonly strategy; constructor(strategy: IVersioningStrategy); /** * Compute version info from context */ computeVersionInfo(context: ComputationContext): Promise; /** * Create strategy instance from configuration */ private createStrategy; }