declare enum HeptadCycles {
    First = 1,
    Second = 2,
    Third = 3,
    Fourth = 4,
    Fifth = 5,
    Sixth = 6,
    Seventh = 7
}
type CycleMeaning = {
    title: string;
    shortDescription: string;
    personalDescription: string;
    businessDescription: string;
};
type Cycle = {
    number: number;
    description: CycleMeaning;
    isActive?: boolean;
    cycleStart?: Date;
};
type CycleInfo = {
    yearlyCycles: Cycle[];
    ageCycles: Cycle[];
    monthlyCycles: Cycle[];
    currentYearlyCycle: number | null;
    currentAgeCycle: number | null;
    currentMonthlyCycle: number | null;
    daysInMonthlyCycle: number;
    totalDays: number;
};
type KaabalisticLifePathResult = {
    parts: {
        day: string;
        month: string;
        year1: string;
        year2: string;
    };
    reducedParts: {
        reducedDay: number;
        reducedMonth: number;
        reducedYear1: number;
        reducedYear2: number;
    };
    syntheses: {
        dayMonthSynthesis: number;
        yearSynthesis: number;
        reducedDayMonthSynthesis: number;
        reducedYearSynthesis: number;
        finalSynthesis: number;
    };
    lifePath: ReducedValueWithSteps;
    /**
     * Last three syntheses
     */
    personalMythologyNumbers: number[];
};
type StraightAcrossReductionLifePathResult = {
    dayEnergy: ReducedValueWithSteps;
    monthEnergy: ReducedValueWithSteps;
    yearEnergy: ReducedValueWithSteps;
    lifePath: ReducedValueWithSteps;
};
type DateEnergies = {
    dayEnergy: ReducedValueWithSteps;
    monthEnergy: ReducedValueWithSteps;
    yearEnergy: ReducedValueWithSteps;
};
type Challenges = {
    day: number;
    month: number;
    year: number;
    mainChallenge: number;
    subChallenge1: number;
    subChallenge2: number;
};
type ReducedValueWithSteps = {
    reducedValue: number;
    reductionSteps: number[];
};
type FibonacciCycle = {
    currentAge: number;
    cycle1: ReducedValueWithSteps;
    cycle2: ReducedValueWithSteps;
    cycle3: ReducedValueWithSteps;
    cycle4: ReducedValueWithSteps;
    cycle5: ReducedValueWithSteps;
    cycle6: ReducedValueWithSteps;
    cycle7: ReducedValueWithSteps;
};
type PersonalPeriod = {
    startMonth: number;
    endMonth: number;
    value: ReducedValueWithSteps;
};
type PersonalMonth = {
    month: number;
    value: ReducedValueWithSteps;
};
type PersonalCycles = {
    personalYear: ReducedValueWithSteps;
    personalPeriods: [PersonalPeriod, PersonalPeriod, PersonalPeriod];
    personalMonths: [
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth,
        PersonalMonth
    ];
    currentPersonalPeriod: number;
    currentPersonalMonth: number;
    currentAge: number;
    lifePath: ReducedValueWithSteps;
    soulNumber?: ReducedValueWithSteps;
    yearUsedOnCalculations: number;
};
declare const CYCLE_MEANINGS: Record<HeptadCycles, CycleMeaning>;
declare enum NumerologyValues {
    One = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8,
    Nine = 9,
    Eleven = 11,
    TwentyTwo = 22,
    ThirtyThree = 33,
    FortyFour = 44
}
declare const NUMEROLOGY_KEYWORDS: Record<NumerologyValues, string[]>;
declare enum DayOfBirth {
    First = 1,
    Second = 2,
    Third = 3,
    Fourth = 4,
    Fifth = 5,
    Sixth = 6,
    Seventh = 7,
    Eighth = 8,
    Ninth = 9,
    Tenth = 10,
    Eleventh = 11,
    Twelfth = 12,
    Thirteenth = 13,
    Fourteenth = 14,
    Fifteenth = 15,
    Sixteenth = 16,
    Seventeenth = 17,
    Eighteenth = 18,
    Nineteenth = 19,
    Twentieth = 20,
    TwentyFirst = 21,
    TwentySecond = 22,
    TwentyThird = 23,
    TwentyFourth = 24,
    TwentyFifth = 25,
    TwentySixth = 26,
    TwentySeventh = 27,
    TwentyEighth = 28,
    TwentyNinth = 29,
    Thirtieth = 30,
    ThirtyFirst = 31
}
type DayOfBirthMeaning = {
    description: string;
};
declare const DAY_OF_BIRTH_MEANING: Record<DayOfBirth, DayOfBirthMeaning>;
type LifePathMeaning = {
    description: string;
    goal: string;
    positiveTraits: string[];
    negativeTraits: string[];
};
declare const LIFEPATH_MEANING: Record<NumerologyValues, LifePathMeaning>;
declare enum ChallengeNumbers {
    Zero = 0,
    One = 1,
    Two = 2,
    Three = 3,
    Four = 4,
    Five = 5,
    Six = 6,
    Seven = 7,
    Eight = 8
}
declare const CHALLENGE_MEANING: Record<ChallengeNumbers, string>;
declare const CHALLENGE_HEALTH_MEANING: Record<ChallengeNumbers | NumerologyValues, string>;
declare const PERSONAL_CYCLE_KEYWORDS: Record<NumerologyValues, string[]>;
declare const PERSONAL_YEAR_DESCRIPTIONS: Record<NumerologyValues, string>;

declare const data_CHALLENGE_HEALTH_MEANING: typeof CHALLENGE_HEALTH_MEANING;
declare const data_CHALLENGE_MEANING: typeof CHALLENGE_MEANING;
declare const data_CYCLE_MEANINGS: typeof CYCLE_MEANINGS;
type data_ChallengeNumbers = ChallengeNumbers;
declare const data_ChallengeNumbers: typeof ChallengeNumbers;
type data_Challenges = Challenges;
type data_Cycle = Cycle;
type data_CycleInfo = CycleInfo;
type data_CycleMeaning = CycleMeaning;
declare const data_DAY_OF_BIRTH_MEANING: typeof DAY_OF_BIRTH_MEANING;
type data_DateEnergies = DateEnergies;
type data_DayOfBirth = DayOfBirth;
declare const data_DayOfBirth: typeof DayOfBirth;
type data_DayOfBirthMeaning = DayOfBirthMeaning;
type data_FibonacciCycle = FibonacciCycle;
type data_HeptadCycles = HeptadCycles;
declare const data_HeptadCycles: typeof HeptadCycles;
type data_KaabalisticLifePathResult = KaabalisticLifePathResult;
declare const data_LIFEPATH_MEANING: typeof LIFEPATH_MEANING;
type data_LifePathMeaning = LifePathMeaning;
declare const data_NUMEROLOGY_KEYWORDS: typeof NUMEROLOGY_KEYWORDS;
type data_NumerologyValues = NumerologyValues;
declare const data_NumerologyValues: typeof NumerologyValues;
declare const data_PERSONAL_CYCLE_KEYWORDS: typeof PERSONAL_CYCLE_KEYWORDS;
declare const data_PERSONAL_YEAR_DESCRIPTIONS: typeof PERSONAL_YEAR_DESCRIPTIONS;
type data_PersonalCycles = PersonalCycles;
type data_PersonalMonth = PersonalMonth;
type data_PersonalPeriod = PersonalPeriod;
type data_ReducedValueWithSteps = ReducedValueWithSteps;
type data_StraightAcrossReductionLifePathResult = StraightAcrossReductionLifePathResult;
declare namespace data {
  export { data_CHALLENGE_HEALTH_MEANING as CHALLENGE_HEALTH_MEANING, data_CHALLENGE_MEANING as CHALLENGE_MEANING, data_CYCLE_MEANINGS as CYCLE_MEANINGS, data_ChallengeNumbers as ChallengeNumbers, type data_Challenges as Challenges, type data_Cycle as Cycle, type data_CycleInfo as CycleInfo, type data_CycleMeaning as CycleMeaning, data_DAY_OF_BIRTH_MEANING as DAY_OF_BIRTH_MEANING, type data_DateEnergies as DateEnergies, data_DayOfBirth as DayOfBirth, type data_DayOfBirthMeaning as DayOfBirthMeaning, type data_FibonacciCycle as FibonacciCycle, data_HeptadCycles as HeptadCycles, type data_KaabalisticLifePathResult as KaabalisticLifePathResult, data_LIFEPATH_MEANING as LIFEPATH_MEANING, type data_LifePathMeaning as LifePathMeaning, data_NUMEROLOGY_KEYWORDS as NUMEROLOGY_KEYWORDS, data_NumerologyValues as NumerologyValues, data_PERSONAL_CYCLE_KEYWORDS as PERSONAL_CYCLE_KEYWORDS, data_PERSONAL_YEAR_DESCRIPTIONS as PERSONAL_YEAR_DESCRIPTIONS, type data_PersonalCycles as PersonalCycles, type data_PersonalMonth as PersonalMonth, type data_PersonalPeriod as PersonalPeriod, type data_ReducedValueWithSteps as ReducedValueWithSteps, type data_StraightAcrossReductionLifePathResult as StraightAcrossReductionLifePathResult };
}

/**
 * Numerology calculations
 */

declare const MASTER_NUMBERS: number[];
declare function isMasterNumber(n: number): boolean;
declare function reduceToSingle(n: number, options?: {
    preserveMasters?: boolean;
}): number;
declare function reduceToSingleWithSteps(n: number, options?: {
    preserveMasters?: boolean;
}): ReducedValueWithSteps;
/**
 * Calculate the Kaabalistic life path number based on a birth date.
 * Note: This method produces more master numbers and never produces life path 2s (or any life path that ends with 0 like 10, 20, 30, etc.)
 */
declare function calculateKaabalisticLifePath(birthDate: Date): KaabalisticLifePathResult;
/**
 * Calculate the traditional straight across reduction life path number based on a birth date.
 */
declare function calculateStraightAcrossReductionLifePath(birthDate: Date): StraightAcrossReductionLifePathResult;
declare function getDateEnergies(birthDate: Date): DateEnergies;
declare function calculateChallenges(birthDate: Date): Challenges;
declare function calculateCycles(startDate: Date, today: Date): CycleInfo;
declare function calculateFibonacciCycle(birthDate: Date, today: Date): FibonacciCycle;
declare function calculatePersonalYear(birthDate: Date, today?: Date): ReducedValueWithSteps;
declare function calculatePersonalPeriods(birthDate: Date, yearToUse: number, lifePath: number, soulNumber: number, currentAge: number): [PersonalPeriod, PersonalPeriod, PersonalPeriod];
declare function calculatePersonalMonths(birthDate: Date, personalYear: ReducedValueWithSteps, today: Date): {
    personalMonths: PersonalCycles["personalMonths"];
    currentPersonalMonthIndex: number;
};
declare function calculatePersonalCycles(birthDate: Date, today: Date | undefined, firstName: string): PersonalCycles;

export { MASTER_NUMBERS, data as NumerologyData, data as NumerologyModuleTypes, calculateChallenges, calculateCycles, calculateFibonacciCycle, calculateKaabalisticLifePath, calculatePersonalCycles, calculatePersonalMonths, calculatePersonalPeriods, calculatePersonalYear, calculateStraightAcrossReductionLifePath, getDateEnergies, isMasterNumber, reduceToSingle, reduceToSingleWithSteps };
