export interface IConfigurator {
    preloadConfigurator(config: IConfiguration, delay?: number): void;
    setConfigurator(config: Array<IConfiguration>): void;
    toggleConfiguratorUI(state: boolean): void;
    selectConfigurator(index: number): Promise<unknown>;
    setConfiguratorEffect(effect: IConfigurationTransitionEffect): void;
}

export interface IConfiguration {
    color?: string; // The color of the button
    thumbnail?: string; // The thumbnail image of the button (alternatively, you can provide the 'color' parameter)
    materials?: Array<IConfigurationMaterial>;
    asset?: string; // The URL of the resource_default, meaning the viewer URL
    preloaded?: boolean; // For the viewer's internal use in order to indicate whether the model has been preloaded
    sceneURL?: string; // The URL of the GLB file (alternatively, you can provide the 'asset' parameter)
}

export interface IConfigurationMaterial {
    name?: string;
    textures: Array<IConfigurationTexture>;
    color?: string;
}

export interface IConfigurationTexture {
    maps: Array<string>;
    url: string;
}

export interface IPreviewOptions {
    width: number;
    height: number;
    create_images_by_tour: string; // 'init_pos'
    compress: boolean;
}

export enum IConfigurationTransitionEffect {
    NONE = 0,
    OPACITY = 1,
    BLUR = 2,
}