import { OffsetMode } from "../core/DragonBones";
import { Transform } from "../geom/Transform";
import { BoneData } from "../model/ArmatureData";
import { Armature } from "./Armature";
import { TransformObject } from "./TransformObject";
/**
 * - Bone is one of the most important logical units in the armature animation system,
 * and is responsible for the realization of translate, rotation, scaling in the animations.
 * A armature can contain multiple bones.
 * @see dragonBones.BoneData
 * @see dragonBones.Armature
 * @see dragonBones.Slot
 * @version DragonBones 3.0
 * @language en_US
 */
export declare class Bone extends TransformObject {
    static toString(): string;
    /**
     * - The offset mode.
     * @see #offset
     * @version DragonBones 5.5
     * @language en_US
     */
    offsetMode: OffsetMode;
    /**
     * @internal
     */
    readonly animationPose: Transform;
    /**
     * @internal
     */
    _transformDirty: boolean;
    /**
     * @internal
     */
    _childrenTransformDirty: boolean;
    protected _localDirty: boolean;
    /**
     * @internal
     */
    _hasConstraint: boolean;
    protected _visible: boolean;
    protected _cachedFrameIndex: number;
    /**
     * @internal
     */
    _boneData: BoneData;
    /**
     * @private
     */
    protected _parent: Bone | null;
    /**
     * @internal
     */
    _cachedFrameIndices: Array<number> | null;
    protected _onClear(): void;
    protected _updateGlobalTransformMatrix(isCache: boolean): void;
    /**
     * @internal
     */
    _updateAlpha(): void;
    /**
     * @internal
     */
    init(boneData: BoneData, armatureValue: Armature): void;
    /**
     * @internal
     */
    update(cacheFrameIndex: number): void;
    /**
     * @internal
     */
    updateByConstraint(): void;
    /**
     * - Forces the bone to update the transform in the next frame.
     * When the bone is not animated or its animation state is finished, the bone will not continue to update,
     * and when the skeleton must be updated for some reason, the method needs to be called explicitly.
     * @example
     * <pre>
     *     let bone = armature.getBone("arm");
     *     bone.offset.scaleX = 2.0;
     *     bone.invalidUpdate();
     * </pre>
     * @version DragonBones 3.0
     * @language en_US
     */
    invalidUpdate(): void;
    /**
     * - Check whether the bone contains a specific bone.
     * @see dragonBones.Bone
     * @version DragonBones 3.0
     * @language en_US
     */
    contains(value: Bone): boolean;
    /**
     * - The bone data.
     * @version DragonBones 4.5
     * @language en_US
     */
    get boneData(): BoneData;
    /**
     * - The visible of all slots in the bone.
     * @default true
     * @see dragonBones.Slot#visible
     * @version DragonBones 3.0
     * @language en_US
     */
    get visible(): boolean;
    set visible(value: boolean);
    /**
     * - The bone name.
     * @version DragonBones 3.0
     * @language en_US
     */
    get name(): string;
    /**
     * - The parent bone to which it belongs.
     * @version DragonBones 3.0
     * @language en_US
     */
    get parent(): Bone | null;
}
