export type FbxVersion = 7400 | 7500 | number; export type TextureTransformMode = "direct" | "blender"; export type FbxTargetPresetName = "threejs" | "unity" | "unreal" | "blender" | "maya"; export type FbxAxis = "X" | "Y" | "Z" | "-X" | "-Y" | "-Z"; export interface ExportWarning { code: string; message?: string; fileName?: string; [key: string]: unknown; } export type TextureContent = | Uint8Array | ArrayBuffer | ArrayBufferView | { content?: Uint8Array | ArrayBuffer | ArrayBufferView | string; bytes?: Uint8Array | ArrayBuffer | ArrayBufferView; data?: Uint8Array | ArrayBuffer | ArrayBufferView; mimeType?: string; fileName?: string; extension?: string; width?: number; height?: number; [key: string]: unknown; }; export interface TextureResolveContext { texture?: unknown; material?: unknown; slot?: string; fileName?: string; [key: string]: unknown; } export interface ExportOptions { version?: FbxVersion; target?: FbxTargetPresetName | string; preset?: FbxTargetPresetName | string; upAxis?: FbxAxis; forwardAxis?: FbxAxis; frontAxis?: FbxAxis; coordAxis?: FbxAxis; unitScale?: number; frameRate?: number; animations?: unknown[]; bakeAnimations?: boolean; textureTransformMode?: TextureTransformMode; resolveTextureContent?: (fileName: string, context: TextureResolveContext) => TextureContent | null | undefined; compressArrayBytes?: (bytes: Uint8Array) => Uint8Array; embedTextures?: boolean; warnings?: ExportWarning[]; onWarning?: (warning: ExportWarning) => void; [key: string]: unknown; } export interface FbxTargetPreset { target: string; upAxis: FbxAxis; forwardAxis: FbxAxis; coordAxis: FbxAxis; unitScale: number; } export interface CharacterFbxInput { object3D?: unknown; scene?: unknown; root?: unknown; animations?: unknown[]; frameRate?: number; [key: string]: unknown; } export interface FbxValidationResult { valid: boolean; version?: number; errors: string[]; warnings: string[]; [key: string]: unknown; } export class FbxNode { constructor(name: string, properties?: unknown[], children?: FbxNode[]); name: string; properties: unknown[]; children: FbxNode[]; } export class FbxBinaryWriter { constructor(options?: ExportOptions); writeDocument(nodes: FbxNode[] | unknown[]): Uint8Array; } export function makeNode(name: string, properties?: unknown[], children?: FbxNode[]): FbxNode; export function resolveTargetPreset(target?: FbxTargetPresetName | string, overrides?: Partial): FbxTargetPreset; export function normalizeExportOptions(options?: ExportOptions): ExportOptions; export function createCharacterExportOptions(options?: ExportOptions): ExportOptions; export function emitExportWarning(options: ExportOptions | null | undefined, warning: string | Partial): ExportWarning | null; export function validateFbxBinary(input: Uint8Array | ArrayBuffer | ArrayBufferView, options?: Record): FbxValidationResult; export function assertValidFbxBinary(input: Uint8Array | ArrayBuffer | ArrayBufferView, options?: Record): FbxValidationResult; export function exportFbx(source: unknown, options?: ExportOptions): Uint8Array; export function exportCharacterFbx(input: CharacterFbxInput | unknown, options?: ExportOptions): Uint8Array; export function createMinimalFbxDocument(options?: ExportOptions): FbxNode[]; export function writeMinimalFbx(options?: ExportOptions): Uint8Array; export function createStaticMeshFbxDocument(source: unknown, options?: ExportOptions): FbxNode[]; export function writeStaticMeshFbx(source: unknown, options?: ExportOptions): Uint8Array; export function normalizeFbxScene(source: unknown, options?: ExportOptions): unknown; export function fromThreeObject(source: unknown, options?: ExportOptions): unknown; export function isThreeObjectLike(source: unknown): boolean; export function createCubeScene(options?: Record): unknown; export function createHierarchyScene(options?: Record): unknown; export function createMaterialScene(options?: Record): unknown; export function createMorphScene(options?: Record): unknown; export function createSkinnedMorphScene(options?: Record): unknown; export function createSkinnedCubeScene(options?: Record): unknown; export function createVertexColorScene(options?: Record): unknown; export function textureLayerAlphaAnimationProperty(layerIndex: number): string; export function textureLayerBlendModeAnimationProperty(layerIndex: number): string;