import { RUNE_QUALITIES, RUNE_SETS, RUNE_EFFECTS } from './constants';
export type RuneSlot = 1 | 2 | 3 | 4 | 5 | 6;
export type RuneGrade = 1 | 2 | 3 | 4 | 5 | 6;
export type RuneSetId = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 10 | 11 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 99;
export type RuneSet = (typeof RUNE_SETS)[number];
export type RuneEffectId = 1 | 2 | 3 | 4 | 5 | 6 | 8 | 9 | 10 | 11 | 12;
export type RuneEffect = (typeof RUNE_EFFECTS)[number];
export type RuneQualityId = 1 | 2 | 3 | 4 | 5 | 11 | 12 | 13 | 14 | 15;
export type RuneQuality = (typeof RUNE_QUALITIES)[number];
export type RuneStat = {
    effect: RuneEffect;
    value: number;
};
export type Rune = {
    isAncient: boolean;
    isEquipped?: boolean;
    slot: RuneSlot;
    grade: RuneGrade;
    quality: RuneQuality;
    set: RuneSet;
    level: number;
    mainStat: RuneStat;
    innateStat: RuneStat | null;
    subStats: RuneStat[];
};
export type SWRune = {
    class: RuneGrade;
    extra: RuneQualityId;
    set_id: RuneSetId;
    slot_no: RuneSlot;
    upgrade_curr: number;
    pri_eff: [RuneEffectId, number];
    prefix_eff: [RuneEffectId | 0, number];
    sec_eff: [RuneEffectId, number][];
    occupied_id: number;
};
export type RuneGenerationParams = {
    isAncient?: boolean;
    set?: RuneSet;
    slot?: RuneSlot;
    grade?: RuneGrade;
    quality?: RuneQuality;
    mainEffect?: RuneEffect;
    innateEffect?: boolean | RuneEffect;
};
export declare function generate(options?: RuneGenerationParams): Rune;
export declare function upgrade(rune: Rune): Rune;
export declare function runeFromSW(rune: SWRune): Rune;
export declare function statFromSW([effectId, value]: [RuneEffectId, number]): RuneStat;
//# sourceMappingURL=index.d.ts.map