import { type FBXDocument, type FBXNode, type FBXPropertyValue } from "../types/fbxTypes.js"; export interface FBXTemplateProperty { name: string; propertyType: string; label: string; flags: string; values: FBXPropertyValue[]; } export interface FBXPropertyTemplate { objectType: string; templateName: string; properties: Map; } export type FBXPropertyTemplateMap = Map>; export declare function extractPropertyTemplates(doc: FBXDocument): FBXPropertyTemplateMap; export declare function getPropertyTemplate(templates: FBXPropertyTemplateMap, objectType: string, templateName?: string): FBXPropertyTemplate | undefined; export declare function getTemplatePropertyValue(template: FBXPropertyTemplate | undefined, propertyName: string, valueIndex?: number): T | undefined; export declare function resolvePropertyValue(node: FBXNode, template: FBXPropertyTemplate | undefined, propertyName: string, valueIndex?: number): T | undefined; export declare function resolveNumberProperty(node: FBXNode, template: FBXPropertyTemplate | undefined, propertyName: string, fallback: number): number; export declare function resolveVector2Property(node: FBXNode, template: FBXPropertyTemplate | undefined, propertyName: string, fallback: [number, number]): [number, number]; export declare function resolveVector3Property(node: FBXNode, template: FBXPropertyTemplate | undefined, propertyName: string, fallback: [number, number, number]): [number, number, number]; export declare function resolvePropertyValues(node: FBXNode, template: FBXPropertyTemplate | undefined, propertyName: string): FBXPropertyValue[] | undefined; /** A property from a Properties70 ("P") or Properties60 ("Property") block. */ export interface FBXPropertyEntry { name: string; type: string; flags: string; values: FBXPropertyValue[]; } /** * Lists the properties declared directly on an object, from both the 7.x and 6.x property blocks. * @param node - Object node * @returns Property entries in declaration order (empty when the node has no property block) */ export declare function getPropertyEntries(node: FBXNode | undefined): FBXPropertyEntry[]; /** Value of a user property: scalars as-is, vectors and colours as number arrays. */ export type FBXUserPropertyValue = string | number | boolean | number[]; /** * User-defined properties of an object: those flagged "U" (user) in the property flags. Every DCC exports custom * attributes this way (Maya extra attributes, 3ds Max user properties, Blender custom properties). * @param node - Object node * @returns Map of property name to value, or undefined when the object has none */ export declare function extractUserProperties(node: FBXNode): Record | undefined; export declare function userPropertyValue(values: FBXPropertyValue[], typeName?: string): FBXUserPropertyValue | undefined;