import { ImageAssets } from '../models/assets/ImageAssets';
import { StatProperty } from '../models/StatProperty';
import { ArtifactType, FightPropType } from '../types';
interface ArtifactAffixAppendProp {
    id: number;
    type: FightPropType;
    value: number;
}
/**
 * Class of artifact
 */
export declare class Artifact {
    /**
     * Max level map of artifacts by rarity
     */
    private static readonly maxLevelMap;
    /**
     * IDs of set bonuses that can be activated with one artifact
     */
    private static readonly oneSetBonusIds;
    /**
     * IDs of set bonuses that cannot be obtained
     */
    private static readonly blackSetIds;
    /**
     * IDs of artifacts that cannot be obtained
     */
    private static readonly blackArtifactIds;
    /**
     * Artifact ID
     */
    readonly id: number;
    /**
     * Artifact level
     */
    readonly level: number;
    /**
     * Artifact type
     */
    readonly type: ArtifactType;
    /**
     * Artifact name
     */
    readonly name: string;
    /**
     * Artifact description
     */
    readonly description: string;
    /**
     * Artifact set ID
     */
    readonly setId: number | undefined;
    /**
     * Artifact set name
     */
    readonly setName: string | undefined;
    /**
     * Artifact set description (index:1 = 1pc, 2 = 2pc , 4 = 4pc)
     */
    readonly setDescriptions: {
        [count: number]: string | undefined;
    };
    /**
     * Artifact rarity
     */
    readonly rarity: number;
    /**
     * Main stat
     */
    readonly mainStat: StatProperty;
    /**
     * Artifact sub stats
     */
    readonly subStats: StatProperty[];
    /**
     * Artifact sub stats
     */
    readonly appendProps: ArtifactAffixAppendProp[];
    /**
     * Artifact icon
     */
    readonly icon: ImageAssets;
    /**
     * Create a Artifact
     * @param artifactId Artifact ID
     * @param mainPropId Main stat ID from ReliquaryMainPropExcelConfigData.json. Default: 10001
     * @param level Artifact level (0-20). Default: 0
     * @param appendPropIds Artifact sub stat IDs
     */
    constructor(artifactId: number, mainPropId?: number, level?: number, appendPropIds?: number[]);
    /**
     * Get all artifact IDs
     * @returns All artifact IDs
     */
    static get allArtifactIds(): number[];
    /**
     * Get max level by artifact ID
     * @param artifactId Artifact ID
     * @returns Max level
     */
    static getMaxLevelByArtifactId(artifactId: number): number;
    /**
     * Get sub stat properties from appendProp IDs
     * @param appendPropIds Artifact sub stat IDs
     * @returns Sub stat properties
     */
    private getSubStatProperties;
}
export {};
