import type { _SCNAnimation } from "./SCNAnimation.js";
import type { _SCNAnimationPlayer } from "./SCNAnimationPlayer.js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _CAAnimation } from "../QuartzCore/CAAnimation.js";
export interface _SCNAnimatable {
    /**
     * @method addAnimation:forKey: @abstract Adds and runs an animation @param animation Added animation. @param key May be any string such that only one animation per unique key is added per animatable object. @discussion Only SCNAnimation (preferred), CABasicAnimation, CAKeyframeAnimation and CAAnimationGroup are supported. The animation starts playing right away. The animation is automatically removed on completion unless if removedOnCompletion is explicitly set to NO. @seealso -[id <SCNAnimation> removedOnCompletion]
     */
    addAnimation$forKey$?(animation: _SCNAnimation, key: _NSString | null): void;
    /**
     * @method addAnimationPlayer:forKey: @abstract Add an animation player. @param player Added animation player. @param key May be any string such that only one animation per unique key is added per animatable object. @discussion The animation player is not removed automatically on completion. The animation doesn't start playing immediatelly. Call "play" on the player to start playing it. @seealso -[SCNAnimationPlayer play]
     */
    addAnimationPlayer$forKey$?(player: _SCNAnimationPlayer, key: _NSString | null): void;
    /** @method removeAllAnimations @abstract Remove all animations. */
    removeAllAnimations?(): void;
    /**
     * @method removeAllAnimationsWithBlendOutDuration @abstract Smoothly remove all animations. @param duration The blend out duration used to remove the animation.
     */
    removeAllAnimationsWithBlendOutDuration$?(duration: number): void;
    /**
     * @method removeAnimationForKey @abstract Remove the animation with the given identifier. @param key The identifier for the animation to remove.
     */
    removeAnimationForKey$?(key: _NSString): void;
    /**
     * @method removeAnimationForKey:blendOutDuration: @abstract Smoothly remove the animation with the given identifier. @param key The identifier for the animation to remove. @param duration The blend out duration used to remove the animation.
     */
    removeAnimationForKey$blendOutDuration$?(key: _NSString, duration: number): void;
    /**
     * @method animationPlayerForKey: @abstract Returns the animation player with the given identifier @param key The identifier for the animation player to retrieve. @discussion This will return nil if no such animation player exists.
     */
    animationPlayerForKey$?(key: _NSString): _SCNAnimationPlayer | null;
    /**
     * @method removeAnimationForKey:fadeOutDuration: @abstract Smoothly remove the animation with the given identifier. @param key The identifier for the animation to remove. @param duration The fade out duration used to remove the animation.
     * @deprecated -removeAnimationForKey:blendOutDuration:
     */
    removeAnimationForKey$fadeOutDuration$?(key: _NSString, duration: number): void;
    /**
     * @method animationForKey: @abstract Returns the animation with the given identifier @param key The identifier for the animation to retrieve. @discussion This will return nil if no such animation exists. Attempting to modify any properties of the returned object will result in undefined behavior.
     * @deprecated -animationPlayerForKey:
     */
    animationForKey$?(key: _NSString): _CAAnimation | null;
    /**
     * @method pauseAnimationForKey: @abstract Pause the animation with the given identifier. @param key The identifier for the animation to pause.
     * @deprecated Use -[SCNAnimationPlayer setPaused:] instead
     */
    pauseAnimationForKey$?(key: _NSString): void;
    /**
     * @method resumeAnimationForKey: @abstract Resume the animation with the given identifier. @param key The identifier for the animation to resume.
     * @deprecated Use -[SCNAnimationPlayer setPaused:] instead
     */
    resumeAnimationForKey$?(key: _NSString): void;
    /**
     * @method setSpeed:forAnimationKey: @abstract Update the animation speed of the animation with the given identifier. @param speed The new speed of the animation. @param key The identifier for the animation to update.
     * @deprecated Use -[SCNAnimationPlayer setSpeed:] instead
     */
    setSpeed$forAnimationKey$?(speed: number, key: _NSString): void;
    /**
     * @method isAnimationForKeyPaused: @abstract Returns whether the animation for the specified identifier is paused. @param key The identifier for the animation to query.
     * @deprecated Use -[SCNAnimationPlayer paused] instead
     */
    isAnimationForKeyPaused$?(key: _NSString): boolean;
    /**
     * @property animationKeys @abstract Returns an array containing the keys of all animations currently attached to the receiver.
     */
    animationKeys?(): _NSArray;
}
