import { Constructor } from '../../../../types/GlobalTypes';
import { BaseController, MaterialTexturesRecord, SetParamsTextureNodesRecord } from './_BaseController';
import { TypedMatNode } from '../_Base';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
import { MeshBasicMaterial, MeshStandardMaterial, MeshPhysicalMaterial, MeshToonMaterial, MeshPhongMaterial, MeshLambertMaterial } from 'three';
export interface WireframeControllers {
    wireframe: WireframeController;
}
export declare function WireframeParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param toggle on to set material to wireframe */
        wireframe: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param wireframe line width */
        wireframeLinewidth: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param define appearance of line ends */
        wireframeLinecap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        /** @param Define appearance of line joints */
        wireframeLinejoin: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & TBase;
type WireframedMaterial = MeshToonMaterial | MeshBasicMaterial | MeshStandardMaterial | MeshPhysicalMaterial | MeshPhongMaterial | MeshLambertMaterial;
declare const WireframeParamsConfig_base: {
    new (...args: any[]): {
        /** @param toggle on to set material to wireframe */
        wireframe: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param wireframe line width */
        wireframeLinewidth: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.FLOAT>;
        /** @param define appearance of line ends */
        wireframeLinecap: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        /** @param Define appearance of line joints */
        wireframeLinejoin: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
declare class WireframeParamsConfig extends WireframeParamsConfig_base {
}
declare class WireframedMatNode extends TypedMatNode<WireframedMaterial, WireframeParamsConfig> {
    material(): Promise<WireframedMaterial | undefined>;
    controllers: WireframeControllers;
}
export declare class WireframeController extends BaseController {
    protected node: WireframedMatNode;
    constructor(node: WireframedMatNode);
    static update(node: WireframedMatNode): Promise<void>;
    updateMaterial(material: WireframedMaterial): void;
    getTextures(material: WireframedMaterial, record: MaterialTexturesRecord): void;
    setParamsFromMaterial(material: WireframedMaterial, record: SetParamsTextureNodesRecord): void;
}
export {};
