import { ExerciseCategory, GranularEquipment, TrainerProgramEquipment, MuscleGroup, RestTimerLength, TrainingGoal, WeeklyTrainingFrequency } from '..'; import type { TrainerExerciseCategory } from './constants'; import type { AlgorithmRepRange, ExercisePriorities, TrainerLibraryExercise, TrainerAlgorithmSettings, TrainerProgramCardioExercise, TrainerProgramExercise, TrainerProgramOtherExercise, TrainerProgramResistanceExercise } from './types'; /** @deprecated Internal: maps trainer equipment to granular equipment. */ export declare const trainerEquipmentToGranularEquipments: (equipments: TrainerProgramEquipment[]) => GranularEquipment[]; /** * @deprecated Internal: converts granular equipment values back to the * old `TrainerProgramEquipment` types for backwards compatibility with old mobile clients. */ export declare const granularEquipmentsToTrainerEquipments: (granularEquipments: GranularEquipment[]) => TrainerProgramEquipment[]; export declare const getTrainerSetCount: (trainerAlgorithmSettings: TrainerAlgorithmSettings, goal: TrainingGoal, frequency: WeeklyTrainingFrequency) => number; export declare const getTrainerRepRange: (trainerAlgorithmSettings: TrainerAlgorithmSettings, goal: TrainingGoal, exerciseCategory: TrainerExerciseCategory) => AlgorithmRepRange; export declare const getTrainerRestTimerSeconds: (trainerAlgorithmSettings: TrainerAlgorithmSettings, goal: TrainingGoal, length: RestTimerLength, exerciseCategory: TrainerExerciseCategory) => number; /** * Normalizes the exercise category to a `TrainerExerciseCategory` * - Treat custom exercises and exercises with no category as `compound` * - Treat `assistance-compound` as `compound` * - Treat `isolation` as `isolation` * @param exercise - The exercise to normalize the category for * @returns The normalized exercise category */ export declare const normalizeExerciseCategory: (exercise: { is_custom: boolean; category?: ExerciseCategory; }) => TrainerExerciseCategory; /** * Checks if an exercise is compatible with the user's selected granular equipments * * - If the exercise has no granular equipments, it is compatible no matter what the user has selected * - Otherwise, the exercise is only allowed if the user has all the granular equipments */ export declare const isEquipmentCompatible: (exercise: TrainerLibraryExercise, userSelectedGranularEquipments: GranularEquipment[]) => boolean; /** * Sorts exercises by priority for each muscle group based on the provided priorities * and adds any remaining exercises from the store that weren't in the priorities. * * @param exercisePriorities - Object mapping muscle groups to arrays of exercise IDs in priority order * @param exerciseStore - Array of all available exercises * @returns Object mapping muscle groups to arrays of exercises sorted by priority */ export declare const getPrioritySortedExercises: (exercisePriorities: ExercisePriorities, exerciseStore: T[]) => Record; export declare const isTrainerProgramResistanceExercise: (exercise: TrainerProgramExercise) => exercise is TrainerProgramResistanceExercise; export declare const isTrainerProgramCardioExercise: (exercise: TrainerProgramExercise) => exercise is TrainerProgramCardioExercise; export declare const isTrainerProgramOtherExercise: (exercise: TrainerProgramExercise) => exercise is TrainerProgramOtherExercise;