import type { Workout } from '../../domain/schemas/entities.schema.js';
import type { WorkoutStructure } from '../../domain/schemas/workout-structure.schema.js';
export interface WorkoutAggregate {
    readonly workout: Workout;
    readonly structure?: WorkoutStructure;
}
export declare const createWorkoutAggregate: (id: string, name: string, date: Date, duration: number, description?: string, distance?: number, activityType?: string, structure?: WorkoutStructure, fileContent?: string, fileName?: string) => WorkoutAggregate;
export declare const updateWorkoutAggregate: (aggregate: WorkoutAggregate, updates: Partial<Pick<Workout, "name" | "description" | "distance" | "activityType">>) => WorkoutAggregate;
export declare const updateWorkoutStructure: (aggregate: WorkoutAggregate, newStructure: WorkoutStructure) => WorkoutAggregate;
export declare const removeWorkoutStructure: (aggregate: WorkoutAggregate, newDuration: number) => WorkoutAggregate;
export declare const addWorkoutFile: (aggregate: WorkoutAggregate, fileContent: string, fileName: string) => WorkoutAggregate;
export declare const removeWorkoutFile: (aggregate: WorkoutAggregate) => WorkoutAggregate;
export declare const getAggregateDuration: (aggregate: WorkoutAggregate) => number;
export declare const isAggregateConsistent: (aggregate: WorkoutAggregate) => boolean;
export declare const getAggregateSummary: (aggregate: WorkoutAggregate) => {
    id: string;
    name: string;
    date: Date;
    duration: number;
    distance: number | undefined;
    activityType: string | undefined;
    isStructured: boolean;
    hasFile: boolean;
    structureElementCount: number;
    isConsistent: boolean;
};
//# sourceMappingURL=workout-aggregate.d.ts.map