import type * as THREE from 'three'; import type * as rawCanvas from 'canvas'; export declare type UnwrapPromise = T extends PromiseLike ? U : T; export declare type UnwrapArray = T extends Array ? U : T; export declare type Vector = readonly [number, number, number]; export declare type Vector4 = readonly [number, number, number, number]; export interface Transform { rotation: Vector; translation: Vector; scale: Vector; } export interface Rotation { angle?: number; axis?: string; origin?: Vector; } export declare type BlockFaces = 'north' | 'south' | 'east' | 'west' | 'up' | 'down'; export declare type BlockSides = 'all' | 'top' | 'bottom' | 'side' | 'front' | 'particle' | 'pane' | 'wood' | 'back' | BlockFaces; export interface BlockModel { blockName?: string; parents?: string[]; animationMaxTicks?: number; animationCurrentTick?: number; parent?: string; textures?: { [key in BlockSides]?: string; }; gui_light?: "front" | "side"; display?: { gui?: Transform; ground?: Transform; fixed?: Transform; thirdperson_righthand?: Transform; firstperson_righthand?: Transform; firstperson_lefthand?: Transform; }; elements?: Element[]; } export interface Element { from?: Vector; to?: Vector; rotation?: Rotation; faces?: { [key in BlockFaces]?: Face; }; calculatedSize?: Vector; } export interface Face { uv?: Vector4; texture: string; rotation?: number; cullface?: string; } export interface Renderer { scene: THREE.Scene; renderer: THREE.WebGLRenderer; canvas: rawCanvas.Canvas; camera: THREE.OrthographicCamera; textureCache: { [key: string]: any; }; animatedCache: { [key: string]: AnimationMeta | null; }; options: RendererOptions; } export declare type AnimationMeta = { interpolate?: boolean; width?: number; height?: number; frametime?: number; frames?: (number | { index: number; time: number; })[]; }; export interface RendererOptions { width?: number; height?: number; distance?: number; verbose?: number; plane?: number; animation?: boolean; } //# sourceMappingURL=types.d.ts.map