import { AgeGroups, ExpandedAlignments, Genders, ILinkBackground, ILinkKlass, ILinkRace, IPerson, PersonTypes, ILinkCulture, IRace, ExpandedAlignmentsY, ExpandedAlignmentsX, IKlass, ICulture, IBackground, IIdeals, IDNA } from "opendnd-core";
import { IPersonaeDefaults } from './defaults';
import "./extensions";
export interface IPersonaeOpts {
    defaults?: IPersonaeDefaults;
    type?: PersonTypes;
    race?: ILinkRace;
    klass?: ILinkKlass;
    culture?: ILinkCulture;
    background?: ILinkBackground;
    alignment?: ExpandedAlignments;
    gender?: Genders;
    name?: string;
    age?: number;
    ageGroup?: AgeGroups;
    DNA?: IDNA;
    seed?: any;
}
declare class Personae {
    defaults: IPersonaeDefaults;
    opts: IPersonaeOpts;
    race: IRace;
    klass: IKlass;
    background: IBackground;
    culture: ICulture;
    alignmentX: ExpandedAlignmentsX;
    alignmentY: ExpandedAlignmentsY;
    constructor(opts?: IPersonaeOpts);
    validateOpts(opts?: IPersonaeOpts): IPersonaeOpts;
    static load(filepath: any): any;
    static save(filepath: any, person: any): void;
    static output(person: any, type?: string): any;
    static generateAge(race: IRace, ageGroup?: AgeGroups): any;
    static getAgeGroup(race: IRace, age?: number): AgeGroups;
    static generateAgeGroup(race: IRace): any;
    resetOpts(): void;
    generatePersonalityTraits(personalityTraits?: any[]): any;
    generateIdeal(alignment: ExpandedAlignments, ideals: IIdeals): any;
    calculateMod(score?: number): number;
    generateAbilities(method?: string): {
        STR: number;
        DEX: number;
        CON: number;
        INT: number;
        WIS: number;
        CHA: number;
    };
    generateChild(opts?: any, motherPerson?: any, fatherPerson?: any): IPerson;
    generateParents(person: any): {
        mother: IPerson;
        father: IPerson;
    };
    generate(opts?: {}): IPerson;
}
export default Personae;
