import { IGXC, Material, vec3 } from "@intelligentgraphics/ig.gfx.core";
import { IGXE } from "@intelligentgraphics/igd.core";
/** Material assignments. */
export interface IMaterialAssignments {
    [category: string]: string;
}
export interface IPlacement {
    position: vec3;
    /**
     * Rotation in degrees
     *
     * @type {vec3}
     */
    rotation: vec3;
}
export declare type GfxRepresentationResult = "UNCHANGED" | undefined | GfxRepresentation;
export interface GfxRepresentationSettings {
    computeNormals?: boolean;
}
export declare type GfxType = "2D" | "3D";
export interface GfxRepresentationHashes {
    visualHash?: string;
    geometricHash?: string;
    pbrHash?: string;
}
export interface GfxRepresentationOptions extends GfxRepresentationHashes {
    type?: GfxType;
    /**
     * The current position of an animation.
     *
     * Between 0 and 1
     *
     * @type {number}
     */
    animationPosition?: number;
}
export interface GfxRepresentation extends GfxRepresentationHashes {
    /** Position and Rotation in 3D */
    placement?: IPlacement;
    scene: IGXC.Scene | string;
    basePath?: string;
    /** An optional set of assignments, to be applied after the IGXC has been loaded. */
    materialAssignments?: Record<string, string>;
    /** Material definitions to be used if there are material assignments. */
    materials?: Record<string, string | Material>;
    settings?: GfxRepresentationSettings;
    actionConfig?: IGXE.IArticleConfiguration;
}
