import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSCopying } from "../Foundation/NSCopying.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _SCNAudioSource } from "./SCNAudioSource.js";
import type { _SCNNode } from "./SCNNode.js";
import type { SCNVector3 } from "../structs/SCNVector3.js";
import type { SCNVector4 } from "../structs/SCNVector4.js";
import type { SCNActionTimingMode } from "./SCNActionTimingMode.js";
export declare class _SCNAction extends _NSObject {
    static alloc(): _SCNAction;
    static new(): _SCNAction;
    init(): _SCNAction;
    /** Creates an action that moves a node relative to its current position. */
    static moveByX$y$z$duration$(deltaX: number, deltaY: number, deltaZ: number, duration: number): _SCNAction;
    static moveBy$duration$(delta: SCNVector3, duration: number): _SCNAction;
    /** Creates an action that moves a node to a new position. */
    static moveTo$duration$(location: SCNVector3, duration: number): _SCNAction;
    /** Creates an action that rotates the node by a relative value in radian. */
    static rotateByX$y$z$duration$(xAngle: number, yAngle: number, zAngle: number, duration: number): _SCNAction;
    /** Creates an action that rotates the node to an absolute angle in radian. */
    static rotateToX$y$z$duration$(xAngle: number, yAngle: number, zAngle: number, duration: number): _SCNAction;
    static rotateToX$y$z$duration$shortestUnitArc$(xAngle: number, yAngle: number, zAngle: number, duration: number, shortestUnitArc: boolean): _SCNAction;
    /**
     * Creates an action that rotates the node arond an axis by the specified angle in radian
     */
    static rotateByAngle$aroundAxis$duration$(angle: number, axis: SCNVector3, duration: number): _SCNAction;
    static rotateToAxisAngle$duration$(axisAngle: SCNVector4, duration: number): _SCNAction;
    /**
     * Creates an action that changes the x, y and z scale values of a node by a relative value.
     */
    static scaleBy$duration$(scale: number, sec: number): _SCNAction;
    /** Creates an action that changes the x, y and z scale values of a node. */
    static scaleTo$duration$(scale: number, sec: number): _SCNAction;
    /** Creates an action that runs a collection of actions sequentially. */
    static sequence$(actions: _NSArray): _SCNAction;
    /** Creates an action that runs a collection of actions in parallel. */
    static group$(actions: _NSArray): _SCNAction;
    /** Creates an action that repeats another action a specified number of times. */
    static repeatAction$count$(action: _SCNAction, count: number): _SCNAction;
    /** Creates an action that repeats another action forever. */
    static repeatActionForever$(action: _SCNAction): _SCNAction;
    /** Creates an action that changes the opacity value of the node to 1.0 */
    static fadeInWithDuration$(sec: number): _SCNAction;
    /** Creates an action that changes the opacity value of the node to 0.0 */
    static fadeOutWithDuration$(sec: number): _SCNAction;
    /** Creates an action that adjusts the opacity value of a node by a relative value. */
    static fadeOpacityBy$duration$(factor: number, sec: number): _SCNAction;
    /** Creates an action that adjusts the opacity value of a node to a new value. */
    static fadeOpacityTo$duration$(opacity: number, sec: number): _SCNAction;
    /** Creates an action that hides a node */
    static hide(): _SCNAction;
    /** Creates an action that unhides a node */
    static unhide(): _SCNAction;
    /** Creates an action that idles for a specified period of time. */
    static waitForDuration$(sec: number): _SCNAction;
    /** Creates an action that idles for a randomized period of time. */
    static waitForDuration$withRange$(sec: number, durationRange: number): _SCNAction;
    /** Creates an action that removes the node from its parent node. */
    static removeFromParentNode(): _SCNAction;
    /** Creates an action that executes a block. */
    static runBlock$(block: (node: _SCNNode) => void): _SCNAction;
    static runBlock$queue$(block: (node: _SCNNode) => void, queue: _NSObject): _SCNAction;
    /**
     * Creates an action that runs a javascript script over a duration. the node can be accessed from javascript via the "node" symbol and the elapsed time (between 0 and 1 relative to the duration) via the "elapsedTime" symbol.
     */
    static javaScriptActionWithScript$duration$(script: _NSString, seconds: number): _SCNAction;
    /** Creates an action that executes a block over a duration. */
    static customActionWithDuration$actionBlock$(seconds: number, block: (node: _SCNNode, elapsedTime: number) => void): _SCNAction;
    /**
     * Creates an action that plays a sound @param source The audio source to play (see SCNAudioSource.h) @param wait If YES, then the duration of this action is the same as the length of the audio playback. If NO, the action is considered to have completed immediately.
     */
    static playAudioSource$waitForCompletion$(source: _SCNAudioSource, wait: boolean): _SCNAction;
    /**
     * @method reversedAction @abstract Creates an action that reverses the behavior of another action.
     */
    reversedAction(): _SCNAction;
    /**
     * @property duration @abstract This is the expected duration of an action’s animation. The actual time an action takes to complete is modified by the speed property of the action.
     */
    duration(): number;
    setDuration$(value: number): void;
    /** @property timingMode @abstract The timing mode used to execute an action. */
    timingMode(): SCNActionTimingMode;
    setTimingMode$(value: SCNActionTimingMode): void;
    /**
     * When set, prodives a custom timing via a block. Applies after the 'timingMode' property is taken into account, defaults to nil @see SCNActionTimingFunction
     */
    timingFunction(): ((arg0: number) => number) | null;
    setTimingFunction$(value: ((arg0: number) => number) | null): void;
    /**
     * @property speed @abstract A speed factor that modifies how fast an action runs. Defaults to 1.
     */
    speed(): number;
    setSpeed$(value: number): void;
}
export interface _SCNAction extends _NSCopying, _NSSecureCoding {
}
