export declare enum GENDER {
    male = "male",
    female = "female"
}
export declare class Gimei {
    name: Name;
    address: Address;
    static get NAMES(): {
        first_name: {
            male: string[][];
            female: string[][];
        };
        last_name: string[][];
    };
    static get ADDRESSES(): {
        prefecture: string[][];
        city: string[][];
        town: string[][];
    };
    static get GENDER(): typeof GENDER;
    static get Random(): typeof Random;
    constructor(gender?: GENDER | undefined);
    static randomName(gender?: GENDER | undefined): Name;
    static randomAddress(): Address;
    static randomMale(): Name;
    static randomFemale(): Name;
    static createName(): Name;
    static createAddress(): Address;
    static kanji(): string;
    static katakana(): string;
    static romaji(): string;
    static first(): FirstName;
    static last(): LastName;
    static prefecture(): Prefecture;
    static city(): City;
    static town(): Town;
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    get first(): FirstName;
    get last(): LastName;
    get prefecture(): Prefecture;
    get city(): City;
    get town(): Town;
    toString(): string;
}
export declare class Name {
    gender: GENDER | undefined;
    first: FirstName;
    last: LastName;
    constructor(gender?: GENDER | undefined);
    static randomMale(): Name;
    static randomFemale(): Name;
    static kanji(): string;
    static hiragana(): string;
    static katakana(): string;
    static romaji(): string;
    toString(): string;
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    isMale(): boolean;
    isFemale(): boolean;
}
export declare class FirstName {
    gender: GENDER;
    name: NameWord;
    constructor(gender?: GENDER | undefined);
    static createMale(): FirstName;
    static createFemale(): FirstName;
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    isMale(): boolean;
    isFemale(): boolean;
    toString(): string;
}
export declare class LastName {
    name: NameWord;
    constructor();
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
declare class NameWord {
    name: Array<string>;
    constructor(name: Array<string>);
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
export declare class Address {
    prefecture: Prefecture;
    city: City;
    town: Town;
    constructor();
    static kanji(): string;
    static hiragana(): string;
    static katakana(): string;
    static romaji(): string;
    toString(): string;
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
}
export declare class Prefecture {
    address: AddressWord;
    constructor();
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
export declare class City {
    address: AddressWord;
    constructor();
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
export declare class Town {
    address: AddressWord;
    constructor();
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
declare class AddressWord {
    address: Array<string>;
    constructor(address: Array<string>);
    kanji(): string;
    hiragana(): string;
    katakana(): string;
    romaji(): string;
    toString(): string;
}
export declare class Random {
    /****
     * see: https://sbfl.net/blog/2017/06/01/javascript-reproducible-random/
     ***/
    w: number;
    x: number;
    y: number;
    z: number;
    constructor(seed?: number);
    next(): number;
    nextInt(min: number, max: number): number;
    static random(min?: number, max?: number): number;
    static randomGender(min?: number, max?: number): GENDER;
}
export {};
