/**
 * The MIT License (MIT)
 *
 * Copyright (c) 2012-2018 DragonBones team and other contributors
 *
 * Permission is hereby granted, free of charge, to any person obtaining a copy of
 * this software and associated documentation files (the "Software"), to deal in
 * the Software without restriction, including without limitation the rights to
 * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
 * the Software, and to permit persons to whom the Software is furnished to do so,
 * subject to the following conditions:
 *
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
 * FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
 * COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
 * IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
 * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 */
import { BaseObject, ArmatureType, BoneType, BlendMode } from "../core/index.js";
import { Rectangle, Matrix, Transform, ColorTransform } from "../geom/index.js";
import { AnimationData } from "./AnimationData.js";
import { CanvasData } from "./CanvasData.js";
import { ConstraintData } from "./ConstraintData.js";
import { MeshDisplayData, GeometryData } from "./DisplayData.js";
import { DragonBonesData } from "./DragonBonesData.js";
import { SkinData } from "./SkinData.js";
import { ActionData, UserData } from "./UserData.js";
/**
 * [en] The armature data.
 *
 * [zh] 骨架数据。
 *
 * @version DragonBones 3.0
 */
export declare class ArmatureData extends BaseObject {
    static toString(): string;
    /**
     * @private
     */
    type: ArmatureType;
    /**
     * [en] The animation frame rate.
     *
     * [zh] 动画帧率。
     *
     * @version DragonBones 3.0
     */
    frameRate: number;
    /**
     * @private
     */
    cacheFrameRate: number;
    /**
     * @private
     */
    scale: number;
    /**
     * [en] The armature name.
     *
     * [zh] 骨架名称。
     *
     * @version DragonBones 3.0
     */
    name: string;
    /**
     * @private
     */
    readonly aabb: Rectangle;
    /**
     * [en] The names of all the animation data.
     *
     * [zh] 所有的动画数据名称。
     *
     * @version DragonBones 3.0
     */
    readonly animationNames: Array<string>;
    /**
     * @private
     */
    readonly sortedBones: Array<BoneData>;
    /**
     * @private
     */
    readonly sortedSlots: Array<SlotData>;
    /**
     * @private
     */
    readonly defaultActions: Array<ActionData>;
    /**
     * @private
     */
    readonly actions: Array<ActionData>;
    /**
     * @private
     */
    readonly bones: Record<string, BoneData>;
    /**
     * @private
     */
    readonly slots: Record<string, SlotData>;
    /**
     * @private
     */
    readonly constraints: Record<string, ConstraintData>;
    /**
     * @private
     */
    readonly skins: Record<string, SkinData>;
    /**
     * @private
     */
    readonly animations: Record<string, AnimationData>;
    /**
     * [en] The default skin data.
     *
     * [zh] 默认插槽数据。
     *
     * @version DragonBones 4.5
     */
    defaultSkin: SkinData | null;
    /**
     * [en] The default animation data.
     *
     * [zh] 默认动画数据。
     *
     * @version DragonBones 4.5
     */
    defaultAnimation: AnimationData | null;
    /**
     * @private
     */
    canvas: CanvasData | null;
    /**
     * @private
     */
    userData: UserData | null;
    /**
     * @private
     */
    parent: DragonBonesData;
    protected _onClear(): void;
    /**
     * @internal
     */
    sortBones(): void;
    /**
     * @internal
     */
    cacheFrames(frameRate: number): void;
    /**
     * @internal
     */
    setCacheFrame(globalTransformMatrix: Matrix, transform: Transform): number;
    /**
     * @internal
     */
    getCacheFrame(globalTransformMatrix: Matrix, transform: Transform, arrayOffset: number): void;
    /**
     * @internal
     */
    addBone(value: BoneData): void;
    /**
     * @internal
     */
    addSlot(value: SlotData): void;
    /**
     * @internal
     */
    addConstraint(value: ConstraintData): void;
    /**
     * @internal
     */
    addSkin(value: SkinData): void;
    /**
     * @internal
     */
    addAnimation(value: AnimationData): void;
    /**
     * @internal
     */
    addAction(value: ActionData, isDefault: boolean): void;
    /**
     * [en] Get a specific done data.
     *
     * [zh] 获取特定的骨骼数据。
     *
     * @param boneName - The bone name.
     * @version DragonBones 3.0
     */
    getBone(boneName: string): BoneData | null;
    /**
     * [en] Get a specific slot data.
     *
     * [zh] 获取特定的插槽数据。
     *
     * @param slotName - The slot name.
     * @version DragonBones 3.0
     */
    getSlot(slotName: string): SlotData | null;
    /**
     * @private
     */
    getConstraint(constraintName: string): ConstraintData | null;
    /**
     * [en] Get a specific skin data.
     *
     * [zh] 获取特定皮肤数据。
     *
     * @param skinName - [en] The skin name.
     * @param skinName - [zh] 皮肤名称。
     *
     * @version DragonBones 3.0
     */
    getSkin(skinName: string): SkinData | null;
    /**
     * @private
     */
    getMesh(skinName: string, slotName: string, meshName: string): MeshDisplayData | null;
    /**
     * [en] Get a specific animation data.
     *
     * [zh] 获取特定的动画数据。
     *
     * @param animationName - [en] The animation animationName.
     * @param animationName - [zh] 动画名称。
     *
     * @version DragonBones 3.0
     */
    getAnimation(animationName: string): AnimationData | null;
}
/**
 * [en] The bone data.
 *
 * [zh] 骨骼数据。
 *
 * @version DragonBones 3.0
 */
export declare class BoneData extends BaseObject {
    static toString(): string;
    /**
     * @private
     */
    inheritTranslation: boolean;
    /**
     * @private
     */
    inheritRotation: boolean;
    /**
     * @private
     */
    inheritScale: boolean;
    /**
     * @private
     */
    inheritReflection: boolean;
    /**
     * @private
     */
    type: BoneType;
    /**
     * [en] The bone length.
     *
     * [zh] 骨骼长度。
     *
     * @version DragonBones 3.0
     */
    length: number;
    /**
     * @private
     */
    alpha: number;
    /**
     * [en] The bone name.
     *
     * [zh] 骨骼名称。
     *
     * @version DragonBones 3.0
     */
    name: string;
    /**
     * @private
     */
    readonly transform: Transform;
    /**
     * @private
     */
    userData: UserData | null;
    /**
     * [en] The parent bone data.
     *
     * [zh] 父骨骼数据。
     *
     * @version DragonBones 3.0
     */
    parent: BoneData | null;
    protected _onClear(): void;
}
/**
 * @internal
 */
export declare class SurfaceData extends BoneData {
    static toString(): string;
    segmentX: number;
    segmentY: number;
    readonly geometry: GeometryData;
    protected _onClear(): void;
}
/**
 * [en] The slot data.
 *
 * [zh] 插槽数据。
 *
 * @version DragonBones 3.0
 */
export declare class SlotData extends BaseObject {
    /**
     * @internal
     */
    static readonly DEFAULT_COLOR: ColorTransform;
    /**
     * @internal
     */
    static createColor(): ColorTransform;
    static toString(): string;
    /**
     * @private
     */
    blendMode: BlendMode;
    /**
     * @private
     */
    displayIndex: number;
    /**
     * @private
     */
    zOrder: number;
    /**
     * @private
     */
    zIndex: number;
    /**
     * @private
     */
    alpha: number;
    /**
     * [en] The slot name.
     *
     * [zh] 插槽名称。
     *
     * @version DragonBones 3.0
     */
    name: string;
    /**
     * @private
     */
    color: ColorTransform;
    /**
     * @private
     */
    userData: UserData | null;
    /**
     * [en] The parent bone data.
     *
     * [zh] 父骨骼数据。
     *
     * @version DragonBones 3.0
     */
    parent: BoneData;
    protected _onClear(): void;
}
