/// import type { BaseTexture } from '@pixi/core'; import type { BLEND_MODES } from '@pixi/core'; import { Container } from '@pixi/display'; import { DisplayObject } from '@pixi/display'; import { Graphics } from '@pixi/graphics'; import type { Matrix } from '@pixi/core'; import { Rectangle } from '@pixi/core'; import { SimpleMesh } from '@pixi/mesh-extras'; import { Sprite } from '@pixi/sprite'; import { Texture } from '@pixi/core'; /** * @public */ declare interface ArrayLike_2 { length: number; [n: number]: T; } export { ArrayLike_2 as ArrayLike } /** * @public */ export declare enum AttachmentType { Region = 0, BoundingBox = 1, Mesh = 2, LinkedMesh = 3, Path = 4, Point = 5, Clipping = 6 } /** * @public */ export declare class BinaryInput { strings: string[]; private index; private buffer; constructor(data: Uint8Array, strings?: string[], index?: number, buffer?: DataView); readByte(): number; readUnsignedByte(): number; readShort(): number; readInt32(): number; readInt(optimizePositive: boolean): number; readStringRef(): string | null; readString(): string | null; readFloat(): number; readBoolean(): boolean; } /** * @public */ export declare class Color { r: number; g: number; b: number; a: number; static WHITE: Color; static RED: Color; static GREEN: Color; static BLUE: Color; static MAGENTA: Color; constructor(r?: number, g?: number, b?: number, a?: number); set(r: number, g: number, b: number, a: number): this; setFromColor(c: Color): this; setFromString(hex: string): this; add(r: number, g: number, b: number, a: number): this; clamp(): this; static rgba8888ToColor(color: Color, value: number): void; static rgb888ToColor(color: Color, value: number): void; static fromString(hex: string): Color; } /** * @public */ export declare class DebugUtils { static logBones(skeleton: ISkeleton): void; } /** * @public */ export declare interface Disposable { dispose(): void; } /** * @public */ export declare function filterFromString(text: string): TextureFilter; /** * @public */ export declare interface IAnimation { name: string; timelines: Timeline[]; duration: number; } /** * @public */ export declare interface IAnimationState { data: AnimationStateData; tracks: ITrackEntry[]; listeners: IAnimationStateListener[]; timeScale: number; update(dt: number): void; apply(skeleton: ISkeleton): boolean; setAnimation(trackIndex: number, animationName: string, loop: boolean): ITrackEntry; addAnimation(trackIndex: number, animationName: string, loop: boolean, delay: number): ITrackEntry; addEmptyAnimation(trackIndex: number, mixDuration: number, delay: number): ITrackEntry; setEmptyAnimation(trackIndex: number, mixDuration: number): ITrackEntry; setEmptyAnimations(mixDuration: number): void; hasAnimation(animationName: string): boolean; addListener(listener: IAnimationStateListener): void; removeListener(listener: IAnimationStateListener): void; clearListeners(): void; clearTracks(): void; clearTrack(index: number): void; } /** * @public */ export declare interface IAnimationStateData { skeletonData: SkeletonData; animationToMixTime: Map_2; defaultMix: number; setMix(fromName: string, toName: string, duration: number): void; setMixWith(from: Animation, to: Animation, duration: number): void; getMix(from: Animation, to: Animation): number; } /** * @public */ export declare interface IAnimationStateListener { start?(entry: ITrackEntry): void; interrupt?(entry: ITrackEntry): void; end?(entry: ITrackEntry): void; dispose?(entry: ITrackEntry): void; complete?(entry: ITrackEntry): void; event?(entry: ITrackEntry, event: IEvent): void; } /** * @public */ export declare interface IAttachment { name: string; type: AttachmentType; readonly sequence?: ISequence; } /** * @public */ export declare interface IBone { data: IBoneData; matrix: Matrix; active: boolean; } /** * @public */ export declare interface IBoneData { index: number; name: string; parent: IBoneData; length: number; x: number; y: number; rotation: number; scaleX: number; scaleY: number; shearX: number; shearY: number; transformMode: TransformMode; } /** * @public */ export declare interface IClippingAttachment extends IVertexAttachment { endSlot?: ISlotData; } /** * @public */ export declare interface IConstraintData { name: string; order: number; } /** * @public */ export declare interface IEvent { time: number; data: IEventData; } /** * @public */ export declare interface IEventData { name: string; } /** * @public */ export declare interface IHasTextureRegion { /** The name used to find the {@link #region()}. */ path: string; /** The region used to draw the attachment. After setting the region or if the region's properties are changed, * {@link #updateRegion()} must be called. */ region: TextureRegion | null; /** Updates any values the attachment calculates using the {@link #getRegion()}. Must be called after setting the * {@link #getRegion()} or if the region's properties are changed. */ /** The color to tint the attachment. */ color: Color; readonly sequence: ISequence | null; } /** * @public */ export declare interface IIkConstraint { data: IIkConstraintData; /** -1 | 0 | 1 */ bendDirection: number; compress: boolean; stretch: boolean; /** A percentage (0-1) */ mix: number; } /** * @public */ export declare interface IIkConstraintData extends IConstraintData { /** -1 | 0 | 1 */ bendDirection: number; compress: boolean; stretch: boolean; uniform: boolean; /** A percentage (0-1) */ mix: number; } /** * @public */ export declare interface IMeshAttachment extends IVertexAttachment { region: TextureRegion; color: Color; regionUVs: Float32Array; triangles: number[]; hullLength: number; } /** * @public */ export declare abstract class Interpolation { protected abstract applyInternal(a: number): number; apply(start: number, end: number, a: number): number; } /** * @public */ export declare class IntSet { array: number[]; add(value: number): boolean; contains(value: number): boolean; remove(value: number): void; clear(): void; } /** * @public */ export declare interface IPathConstraint { data: IPathConstraintData; position: number; spacing: number; spaces: number[]; positions: number[]; world: number[]; curves: number[]; lengths: number[]; segments: number[]; } /** * @public */ export declare interface IPathConstraintData extends IConstraintData { positionMode: PositionMode; rotateMode: RotateMode; offsetRotation: number; position: number; spacing: number; } /** * @public */ export declare interface IRegionAttachment extends IAttachment { region: TextureRegion; color: Color; x: any; y: any; scaleX: any; scaleY: any; rotation: any; width: any; height: number; } /** * @public */ export declare interface ISequence { id: number; regions: TextureRegion[]; apply(slot: ISlot, attachment: IHasTextureRegion): void; } /** * @public */ export declare interface ISkeleton { bones: Bone[]; slots: Slot[]; drawOrder: Slot[]; skin: Skin; data: SkeletonData; x: number; y: number; updateWorldTransform(): void; setToSetupPose(): void; findSlotIndex(slotName: string): number; getAttachmentByName(slotName: string, attachmentName: string): IAttachment; setBonesToSetupPose(): void; setSlotsToSetupPose(): void; findBone(boneName: string): Bone; findSlot(slotName: string): Slot; findBoneIndex(boneName: string): number; findSlotIndex(slotName: string): number; setSkinByName(skinName: string): void; setAttachment(slotName: string, attachmentName: string): void; getBounds(offset: Vector2, size: Vector2, temp: Array): void; } /** * @public */ export declare interface ISkeletonData { name: string; bones: BoneData[]; slots: SlotData[]; skins: Skin[]; defaultSkin: Skin; events: EventData[]; animations: Animation[]; version: string; hash: string; width: number; height: number; ikConstraints: IkConstraintData[]; transformConstraints: TransformConstraintData[]; pathConstraints: PathConstraintData[]; findBone(boneName: string): BoneData | null; findBoneIndex(boneName: string): number; findSlot(slotName: string): SlotData | null; findSlotIndex(slotName: string): number; findSkin(skinName: string): Skin | null; findEvent(eventDataName: string): EventData | null; findAnimation(animationName: string): Animation | null; findIkConstraint(constraintName: string): IkConstraintData | null; findTransformConstraint(constraintName: string): TransformConstraintData | null; findPathConstraint(constraintName: string): PathConstraintData | null; } /** * @public */ export declare interface ISkeletonParser { scale: number; } /** * @public */ export declare interface ISkin { name: string; attachments: Array>; getAttachment(slotIndex: number, name: string): IAttachment | null; } /** * @public */ export declare interface ISlot { getAttachment(): IAttachment; data: ISlotData; color: Color; darkColor: Color; blendMode: number; bone: IBone; sprites?: any; currentSprite?: any; currentSpriteName?: string; meshes?: any; currentMesh?: any; currentMeshName?: string; currentMeshId?: number; currentGraphics?: any; clippingContainer?: any; hackRegion?: TextureRegion; hackAttachment?: IAttachment; } /** * @public */ export declare interface ISlotData { index: number; name: string; boneData: IBoneData; color: Color; darkColor: Color; attachmentName: string; blendMode: BLEND_MODES; } /** * Make a class that extends from this interface to create your own debug renderer. * @public */ export declare interface ISpineDebugRenderer { /** * This will be called every frame, after the spine has been updated. */ renderDebug(spine: SpineBase): void; /** * This is called when the `spine.debug` object is set to null or when the spine is destroyed. */ unregisterSpine(spine: SpineBase): void; /** * This is called when the `spine.debug` object is set to a new instance of a debug renderer. */ registerSpine(spine: SpineBase): void; } /** * @public */ export declare interface ISpineDisplayObject extends DisplayObject { region?: TextureRegion; attachment?: IAttachment; } /** * @public */ export declare interface ITimeline { } /** * @public */ export declare interface ITrackEntry { trackIndex: number; loop: boolean; animationEnd: number; listener: IAnimationStateListener; delay: number; trackTime: number; trackLast: number; nextTrackLast: number; trackEnd: number; timeScale: number; alpha: number; mixTime: number; mixDuration: number; interruptAlpha: number; totalAlpha: number; } /** * @public */ export declare interface ITransformConstraint { data: ITransformConstraintData; } /** * @public */ export declare interface ITransformConstraintData extends IConstraintData { offsetRotation: number; offsetX: number; offsetY: number; offsetScaleX: number; offsetScaleY: number; offsetShearY: number; relative: boolean; local: boolean; } /** * @public */ export declare interface IVertexAttachment extends IAttachment { id: number; computeWorldVerticesOld(slot: Slot, worldVertices: ArrayLike): void; computeWorldVertices(slot: Slot, start: number, count: number, worldVertices: ArrayLike, offset: number, stride: number): void; worldVerticesLength: number; } /** * @public */ declare interface Map_2 { [key: string]: T; } export { Map_2 as Map } /** * @public */ export declare class MathUtils { static PI: number; static PI2: number; static radiansToDegrees: number; static radDeg: number; static degreesToRadians: number; static degRad: number; static clamp(value: number, min: number, max: number): number; static cosDeg(degrees: number): number; static sinDeg(degrees: number): number; static signum(value: number): number; static toInt(x: number): number; static cbrt(x: number): number; static randomTriangular(min: number, max: number): number; static randomTriangularWith(min: number, max: number, mode: number): number; static isPowerOfTwo(value: number): boolean; } /** Controls how a timeline value is mixed with the setup pose value or current pose value when a timeline's `alpha` * < 1. * * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. * @public * */ export declare enum MixBlend { /** Transitions from the setup value to the timeline value (the current value is not used). Before the first key, the setup * value is set. */ setup = 0, /** Transitions from the current value to the timeline value. Before the first key, transitions from the current value to * the setup value. Timelines which perform instant transitions, such as DrawOrderTimeline or * AttachmentTimeline, use the setup value before the first key. * * `first` is intended for the first animations applied, not for animations layered on top of those. */ first = 1, /** Transitions from the current value to the timeline value. No change is made before the first key (the current value is * kept until the first key). * * `replace` is intended for animations layered on top of others, not for the first animations applied. */ replace = 2, /** Transitions from the current value to the current value plus the timeline value. No change is made before the first key * (the current value is kept until the first key). * * `add` is intended for animations layered on top of others, not for the first animations applied. Properties * keyed by additive animations must be set manually or by another animation before applying the additive animations, else * the property values will increase continually. */ add = 3 } /** Indicates whether a timeline's `alpha` is mixing out over time toward 0 (the setup or current pose value) or * mixing in toward 1 (the timeline's value). * * See Timeline {@link Timeline#apply(Skeleton, float, float, Array, float, MixBlend, MixDirection)}. * @public * */ export declare enum MixDirection { mixIn = 0, mixOut = 1 } /** * @public */ export declare interface NumberArrayLike { readonly length: number; [n: number]: number; } /** * @public */ export declare class Pool { private items; private instantiator; constructor(instantiator: () => T); obtain(): T; free(item: T): void; freeAll(items: ArrayLike_2): void; clear(): void; } /** Controls how the first bone is positioned along the path. * * See [Position mode](http://esotericsoftware.com/spine-path-constraints#Position-mode) in the Spine User Guide. * @public * */ export declare enum PositionMode { Fixed = 0, Percent = 1 } /** * @public */ export declare class Pow extends Interpolation { protected power: number; constructor(power: number); applyInternal(a: number): number; } /** * @public */ export declare class PowOut extends Pow { applyInternal(a: number): number; } /** * @public */ export declare interface Restorable { restore(): void; } /** Controls how bones are rotated, translated, and scaled to match the path. * * [Rotate mode](http://esotericsoftware.com/spine-path-constraints#Rotate-mod) in the Spine User Guide. * @public * */ export declare enum RotateMode { Tangent = 0, Chain = 1, ChainScale = 2 } /** * @public */ export declare const settings: { yDown: boolean; /** * pixi-spine gives option to not fail at certain parsing errors * spine-ts fails here */ FAIL_ON_NON_EXISTING_SKIN: boolean; /** * past Spine.globalAutoUpdate */ GLOBAL_AUTO_UPDATE: boolean; /** * past Spine.globalDelayLimit */ GLOBAL_DELAY_LIMIT: number; /** * shows error in console if atlas page loading somehow failed */ REPORT_TEXTURE_LOADER_ERROR: boolean; }; /** Collects each visible BoundingBoxAttachment and computes the world vertices for its polygon. The polygon vertices are * provided along with convenience methods for doing hit detection. * @public * */ export declare class SkeletonBoundsBase { /** The left edge of the axis aligned bounding box. */ minX: number; /** The bottom edge of the axis aligned bounding box. */ minY: number; /** The right edge of the axis aligned bounding box. */ maxX: number; /** The top edge of the axis aligned bounding box. */ maxY: number; /** The visible bounding boxes. */ boundingBoxes: BoundingBoxAttachment[]; /** The world vertices for the bounding box polygons. */ polygons: NumberArrayLike[]; private polygonPool; /** Clears any previous polygons, finds all visible bounding box attachments, and computes the world vertices for each bounding * box's polygon. * @param updateAabb If true, the axis aligned bounding box containing all the polygons is computed. If false, the * SkeletonBounds AABB methods will always return true. */ update(skeleton: ISkeleton, updateAabb: boolean): void; aabbCompute(): void; /** Returns true if the axis aligned bounding box contains the point. */ aabbContainsPoint(x: number, y: number): boolean; /** Returns true if the axis aligned bounding box intersects the line segment. */ aabbIntersectsSegment(x1: number, y1: number, x2: number, y2: number): boolean; /** Returns true if the axis aligned bounding box intersects the axis aligned bounding box of the specified bounds. */ aabbIntersectsSkeleton(bounds: SkeletonBoundsBase): boolean; /** Returns the first bounding box attachment that contains the point, or null. When doing many checks, it is usually more * efficient to only call this method if {@link #aabbContainsPoint(float, float)} returns true. * Cannot be done here because BoundingBoxAttachment is not a thing yet*/ containsPoint(x: number, y: number): BoundingBoxAttachment | null; /** Returns true if the polygon contains the point. */ containsPointPolygon(polygon: NumberArrayLike, x: number, y: number): boolean; /** Returns the first bounding box attachment that contains any part of the line segment, or null. When doing many checks, it * is usually more efficient to only call this method if {@link #aabbIntersectsSegment()} returns * true. */ intersectsSegment(x1: number, y1: number, x2: number, y2: number): BoundingBoxAttachment; /** Returns true if the polygon contains any part of the line segment. */ intersectsSegmentPolygon(polygon: NumberArrayLike, x1: number, y1: number, x2: number, y2: number): boolean; /** Returns the polygon for the specified bounding box, or null. */ getPolygon(boundingBox: BoundingBoxAttachment): NumberArrayLike; /** The width of the axis aligned bounding box. */ getWidth(): number; /** The height of the axis aligned bounding box. */ getHeight(): number; } /** * A class that enables the you to import and run your spine animations in pixi. * The Spine animation data needs to be loaded using either the Loader or a SpineLoader before it can be used by this class * See example 12 (http://www.goodboydigital.com/pixijs/examples/12/) to see a working example and check out the source * * ```js * let spineAnimation = new spine(spineData); * ``` * * @public * @class * @extends Container * @memberof spine * @param spineData {object} The spine data loaded from a spine atlas. */ export declare abstract class SpineBase extends Container implements GlobalMixins.Spine { tintRgb: ArrayLike; spineData: SkeletonData; skeleton: Skeleton; stateData: AnimationStateData; state: AnimationState; slotContainers: Array; tempClipContainers: Array; localDelayLimit: number; private _autoUpdate; protected _visible: boolean; private _debug; get debug(): ISpineDebugRenderer; set debug(value: ISpineDebugRenderer); abstract createSkeleton(spineData: ISkeletonData): any; constructor(spineData: SkeletonData); /** * If this flag is set to true, the spine animation will be automatically updated every * time the object id drawn. The down side of this approach is that the delta time is * automatically calculated and you could miss out on cool effects like slow motion, * pause, skip ahead and the sorts. Most of these effects can be achieved even with * autoUpdate enabled but are harder to achieve. * * @member {boolean} * @memberof spine.Spine# * @default true */ get autoUpdate(): boolean; set autoUpdate(value: boolean); /** * The tint applied to the spine object. This is a hex value. A value of 0xFFFFFF will remove any tint effect. * * @member {number} * @memberof spine.Spine# * @default 0xFFFFFF */ get tint(): number; set tint(value: number); /** * Limit value for the update dt with Spine.globalDelayLimit * that can be overridden with localDelayLimit * @return {number} - Maximum processed dt value for the update */ get delayLimit(): number; /** * Update the spine skeleton and its animations by delta time (dt) * * @param dt {number} Delta time. Time by which the animation should be updated */ update(dt: number): void; private setSpriteRegion; private setMeshRegion; protected lastTime: number; /** * When autoupdate is set to yes this function is used as pixi's updateTransform function * * @private */ autoUpdateTransform(): void; /** * Create a new sprite to be used with core.RegionAttachment * * @param slot {spine.Slot} The slot to which the attachment is parented * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent * @private */ createSprite(slot: ISlot, attachment: IRegionAttachment, defName: string): SpineSprite; /** * Creates a Strip from the spine data * @param slot {spine.Slot} The slot to which the attachment is parented * @param attachment {spine.RegionAttachment} The attachment that the sprite will represent * @private */ createMesh(slot: ISlot, attachment: IMeshAttachment): SpineMesh; static clippingPolygon: Array; createGraphics(slot: ISlot, clip: IClippingAttachment): Graphics; updateGraphics(slot: ISlot, clip: IClippingAttachment): void; /** * Changes texture in attachment in specific slot. * * PIXI runtime feature, it was made to satisfy our users. * * @param slotIndex {number} * @param [texture = null] {PIXI.Texture} If null, take default (original) texture * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there * @returns {boolean} Success flag */ hackTextureBySlotIndex(slotIndex: number, texture?: Texture, size?: Rectangle): boolean; /** * Changes texture in attachment in specific slot. * * PIXI runtime feature, it was made to satisfy our users. * * @param slotName {string} * @param [texture = null] {PIXI.Texture} If null, take default (original) texture * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there * @returns {boolean} Success flag */ hackTextureBySlotName(slotName: string, texture?: Texture, size?: Rectangle): boolean; /** * Changes texture of an attachment * * PIXI runtime feature, it was made to satisfy our users. * * @param slotName {string} * @param attachmentName {string} * @param [texture = null] {PIXI.Texture} If null, take default (original) texture * @param [size = null] {PIXI.Point} sometimes we need new size for region attachment, you can pass 'texture.orig' there * @returns {boolean} Success flag */ hackTextureAttachment(slotName: string, attachmentName: string, texture: any, size?: Rectangle): boolean; newContainer(): Container; newSprite(tex: Texture): SpineSprite; newGraphics(): Graphics; newMesh(texture: Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number): SpineMesh; transformHack(): number; /** * Hack for pixi-display and pixi-lights. Every attachment name ending with a suffix will be added to different layer * @param nameSuffix * @param group * @param outGroup */ hackAttachmentGroups(nameSuffix: string, group: any, outGroup: any): any[][]; destroy(options?: any): void; } /** * This is a debug renderer that uses PixiJS Graphics under the hood. * @public */ export declare class SpineDebugRenderer implements ISpineDebugRenderer { private registeredSpines; drawDebug: boolean; drawMeshHull: boolean; drawMeshTriangles: boolean; drawBones: boolean; drawPaths: boolean; drawBoundingBoxes: boolean; drawClipping: boolean; drawRegionAttachments: boolean; lineWidth: number; regionAttachmentsColor: number; meshHullColor: number; meshTrianglesColor: number; clippingPolygonColor: number; boundingBoxesRectColor: number; boundingBoxesPolygonColor: number; boundingBoxesCircleColor: number; pathsCurveColor: number; pathsLineColor: number; skeletonXYColor: number; bonesColor: number; /** * The debug is attached by force to each spine object. So we need to create it inside the spine when we get the first update */ registerSpine(spine: SpineBase): void; renderDebug(spine: SpineBase): void; private drawBonesFunc; private drawRegionAttachmentsFunc; private drawMeshHullAndMeshTriangles; private drawClippingFunc; private drawBoundingBoxesFunc; private drawPathsFunc; unregisterSpine(spine: SpineBase): void; } /** * @public */ export declare class SpineMesh extends SimpleMesh implements ISpineDisplayObject { region?: TextureRegion; attachment?: IAttachment; constructor(texture: Texture, vertices?: Float32Array, uvs?: Float32Array, indices?: Uint16Array, drawMode?: number); } /** * @public */ export declare class SpineSprite extends Sprite implements ISpineDisplayObject { region?: TextureRegion; attachment?: IAttachment; } /** * @public */ export declare interface StringMap { [key: string]: T; } /** * @public */ export declare class StringSet { entries: StringMap; size: number; add(value: string): boolean; addAll(values: string[]): boolean; contains(value: string): boolean; clear(): void; } /** * @public */ export declare class TextureAtlas implements Disposable { pages: TextureAtlasPage[]; regions: TextureAtlasRegion[]; constructor(atlasText?: string, textureLoader?: (path: string, loaderFunction: (tex: BaseTexture) => any) => any, callback?: (obj: TextureAtlas) => any); addTexture(name: string, texture: Texture): TextureAtlasRegion; addTextureHash(textures: Map_2, stripExtension: boolean): void; addSpineAtlas(atlasText: string, textureLoader: (path: string, loaderFunction: (tex: BaseTexture) => any) => any, callback: (obj: TextureAtlas) => any): void; private load; findRegion(name: string): TextureAtlasRegion; dispose(): void; } /** * @public */ export declare class TextureAtlasPage { name: string; minFilter: TextureFilter; magFilter: TextureFilter; uWrap: TextureWrap; vWrap: TextureWrap; baseTexture: BaseTexture; width: number; height: number; pma: boolean; setFilters(): void; } /** * @public */ export declare class TextureAtlasRegion extends TextureRegion { page: TextureAtlasPage; name: string; index: number; } /** * @public */ export declare enum TextureFilter { Nearest = 9728, Linear = 9729, MipMap = 9987, MipMapNearestNearest = 9984, MipMapLinearNearest = 9985, MipMapNearestLinear = 9986, MipMapLinearLinear = 9987 } /** * @public */ export declare class TextureRegion { texture: Texture; size: Rectangle; names: string[]; values: number[][]; renderObject: any; get width(): number; get height(): number; get u(): number; get v(): number; get u2(): number; get v2(): number; get offsetX(): number; get offsetY(): number; get pixiOffsetY(): number; get spineOffsetY(): number; get originalWidth(): number; get originalHeight(): number; get x(): number; get y(): number; get rotate(): boolean; get degrees(): number; } /** * @public */ export declare enum TextureWrap { MirroredRepeat = 33648, ClampToEdge = 33071, Repeat = 10497 } /** * @public */ export declare class TimeKeeper { maxDelta: number; framesPerSecond: number; delta: number; totalTime: number; private lastTime; private frameCount; private frameTime; update(): void; } /** Determines how a bone inherits world transforms from parent bones. * @public * */ export declare enum TransformMode { Normal = 0, OnlyTranslation = 1, NoRotationOrReflection = 2, NoScale = 3, NoScaleOrReflection = 4 } /** * @public */ export declare class Utils { static SUPPORTS_TYPED_ARRAYS: boolean; static arrayCopy(source: ArrayLike_2, sourceStart: number, dest: ArrayLike_2, destStart: number, numElements: number): void; static arrayFill(array: ArrayLike_2, fromIndex: number, toIndex: number, value: T): void; static setArraySize(array: Array, size: number, value?: any): Array; static ensureArrayCapacity(array: Array, size: number, value?: any): Array; static newArray(size: number, defaultValue: T): Array; static newFloatArray(size: number): NumberArrayLike; static newShortArray(size: number): NumberArrayLike; static toFloatArray(array: Array): number[] | Float32Array; static toSinglePrecision(value: number): number; static webkit602BugfixHelper(alpha: number, blend: any): void; static contains(array: Array, element: T, identity?: boolean): boolean; static enumValue(type: any, name: string): any; } /** * @public */ export declare class Vector2 { x: number; y: number; constructor(x?: number, y?: number); set(x: number, y: number): Vector2; length(): number; normalize(): this; } /** * @public */ export declare class WindowedMean { values: Array; addedValues: number; lastValue: number; mean: number; dirty: boolean; constructor(windowSize?: number); hasEnoughData(): boolean; addValue(value: number): void; getMean(): number; } /** * @public */ export declare function wrapFromString(text: string): TextureWrap; export { }