import { ChallengeProgressStatus, GoalMetric } from "src/common/enums/challenges.enum";
export declare function remainingDays(startedAt: Date | string, duration: number, now?: Date): number | null;
export declare function fieldForMetric(metric: GoalMetric | string): "reps" | "weight" | "duration";
export declare function performanceProgress(challenge: any, membership: any): {
    metric: any;
    direction: any;
    target: number;
    current: number;
    remaining: number;
    percent: number;
    attempts: any;
    is_goal_met: boolean;
};
export declare function volumeProgress(challenge: any, membership: any): {
    metric: any;
    baseline: number;
    has_baseline: boolean;
    goal_value: number;
    is_percentage: boolean;
    target: number;
    current: number;
    gained: number;
    remaining: number;
    percent: number;
    is_goal_met: boolean;
};
export declare function volumeLevels(challenge: any, membership: any): {
    starting: {
        weight: any;
        reps: any;
        duration: number;
    };
    goal: {
        weight: any;
        reps: any;
        duration: number;
    };
    current: {
        weight: any;
        reps: any;
        duration: number;
    };
};
export interface ChallengeInputField {
    key: "reps" | "weight" | "duration";
    label: string;
    type: "number" | "time";
    unit: string;
    min: number;
}
export declare function buildChallengeForm(challenge: any, lang?: string): {
    attempt: {
        fields: ChallengeInputField[];
        show_date: boolean;
    };
    baseline: {
        fields: ChallengeInputField[];
    };
};
export declare function resolveAttemptStatus(challenge: any, membership: any, summary: {
    is_goal_met: boolean;
}, now?: Date): ChallengeProgressStatus;
export declare function buildChallengeWidget(challenge: any, membership: any, lang?: string, now?: Date): {
    status: ChallengeProgressStatus;
    remaining_days: number;
    progress: {
        metric: GoalMetric;
        target: number;
        current: number;
        remaining: number;
        windows: {
            index: number;
            fulfilled: boolean;
            count: number;
            required: number;
            status: import("./habitWindow.helper").HabitWindowStatus;
        }[];
        slots: {
            index: number;
            window: number;
            status: import("./habitWindow.helper").HabitWindowStatus;
        }[];
        current_window: number;
    };
    challenge_id: any;
    membership_id: any;
    type: any;
    title: any;
    short_desc: any;
    attachment: any;
    duration: any;
    started_at: any;
} | {
    status: ChallengeProgressStatus;
    progress: {
        metric: any;
        baseline: number;
        has_baseline: boolean;
        goal_value: number;
        is_percentage: boolean;
        target: number;
        current: number;
        gained: number;
        remaining: number;
        percent: number;
        is_goal_met: boolean;
    } | {
        metric: any;
        direction: any;
        target: number;
        current: number;
        remaining: number;
        percent: number;
        attempts: any;
        is_goal_met: boolean;
    };
    challenge_id: any;
    membership_id: any;
    type: any;
    title: any;
    short_desc: any;
    attachment: any;
    duration: any;
    started_at: any;
    remaining_days: number;
};
