import { ImageAssets } from '../../models/assets/ImageAssets';
import { StatProperty } from '../../models/StatProperty';
import { WeaponType } from '../../types';
/**
 * Class of weapon
 */
export declare class Weapon {
    /**
     * Black weapon IDs
     */
    private static readonly blackWeaponIds;
    /**
     * Weapon name
     */
    readonly name: string;
    /**
     * Weapon description
     */
    readonly description: string;
    /**
     * Weapon type
     */
    readonly type: WeaponType;
    /**
     * Weapon skill name
     */
    readonly skillName: string | undefined;
    /**
     * Weapon skill description
     */
    readonly skillDescription: string | undefined;
    /**
     * Weapon ID
     */
    readonly id: number;
    /**
     * Weapon level
     */
    readonly level: number;
    /**
     * Weapon max level
     */
    readonly maxLevel: number;
    /**
     * Weapon promote level
     */
    readonly promoteLevel: number;
    /**
     * Weapon is ascended
     */
    readonly isAscended: boolean;
    /**
     * Weapon refinement rank
     */
    readonly refinementRank: number;
    /**
     * Weapon rarity
     */
    readonly rarity: number;
    /**
     * Weapon stats
     */
    readonly stats: StatProperty[];
    /**
     * Whether the weapon is awakened
     */
    readonly isAwaken: boolean;
    /**
     * Weapon icon
     */
    readonly icon: ImageAssets;
    /**
     * Create a Weapon
     * @param weaponId Weapon ID
     * @param level Weapon level (1-90). Default: 1
     * @param isAscended Weapon is ascended. Default: true
     * @param refinementRank Weapon refinement rank (1-5). Default: 1
     */
    constructor(weaponId: number, level?: number, isAscended?: boolean, refinementRank?: number);
    /**
     * Get all weapon IDs
     * @returns All weapon IDs
     */
    static get allWeaponIds(): number[];
    /**
     * Get weapon ID by name
     * @param name Weapon name
     * @returns Weapon ID
     */
    static getWeaponIdByName(name: string): number[];
    /**
     * Get stat value by json
     * @param weaponPropJson Weapon property json
     * @param addValue Add value
     * @returns Stat value
     */
    private getStatPropertyByJson;
}
