import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSSecureCoding } from "../Foundation/NSSecureCoding.js";
import type { _SCNGeometry } from "./SCNGeometry.js";
import type { _SCNGeometrySource } from "./SCNGeometrySource.js";
import type { _SCNNode } from "./SCNNode.js";
import type { CATransform3D } from "../structs/CATransform3D.js";
export declare class _SCNSkinner extends _NSObject {
    static alloc(): _SCNSkinner;
    static new(): _SCNSkinner;
    init(): _SCNSkinner;
    /**
     * @method skinnerWithBaseGeometry:bones:boneInverseBindTransforms:boneWeights:boneIndices: @abstract Creates and initialize a skinner instance with the specified parameters. @param baseGeometry Specifies the base geometry used by the skinner @param bones Specifies the array of bones. @param boneInverseBindTransforms The inverse of the bone’s bind-space transformation matrix at the time the bind shape was bound to this bone. @param boneWeights A buffer of weights. This contains the weights of every influence of every vertex. The number of influence per vertex is controlled by the number of component in the geometry source. @param boneIndices A buffer of bone indexes. This buffer contains the corresponding index in the bones array for every weight in the weights buffer.
     */
    static skinnerWithBaseGeometry$bones$boneInverseBindTransforms$boneWeights$boneIndices$(baseGeometry: _SCNGeometry | null, bones: _NSArray, boneInverseBindTransforms: _NSArray | null, boneWeights: _SCNGeometrySource, boneIndices: _SCNGeometrySource): _SCNSkinner;
    /**
     * @property skeleton @abstract Specifies the skeleton of the receiver. @discussion When setting a new skeleton, the new skeleton must have the same hierarchy of joints.
     */
    skeleton(): _SCNNode | null;
    setSkeleton$(value: _SCNNode | null): void;
    /**
     * @property baseGeometry @abstract Specifies the base geometry of the receiver. @discussion Updating this will change the geometry of all the nodes sharing the skinner. Access the node's geometry if you want to update this specific skinner properties (materials for example). Access this property if you want a whole new geometry (which will necessarily be shared among the skinner instances), with different sources, for instance.
     */
    baseGeometry(): _SCNGeometry;
    setBaseGeometry$(value: _SCNGeometry): void;
    /**
     * @property baseGeometryBindTransform @abstract Specifies the transform of the baseGeometry at the time when the mesh was bound to a skeleton. This transforms the baseGeometry from object space to a space on which the skinning then applies.
     */
    baseGeometryBindTransform(): CATransform3D;
    setBaseGeometryBindTransform$(value: CATransform3D): void;
    /**
     * @property boneInverseBindTransforms @abstract The inverse of the bone’s bind-space transformation matrix at the time the bind shape was bound to this bone. @discussion boneInverseBindTransforms is an array of SCNMatrix4 wrapped into instances of NSValue.
     */
    boneInverseBindTransforms(): _NSArray;
    /** @property bones @abstract The bones of the skinner. */
    bones(): _NSArray;
    /** @property boneWeights @abstract The bone weights of the receiver. */
    boneWeights(): _SCNGeometrySource;
    /** @property boneIndices @abstract The bone indices of the receiver. */
    boneIndices(): _SCNGeometrySource;
}
export interface _SCNSkinner extends _NSSecureCoding {
}
