import { Constructor } from '../../../../types/GlobalTypes';
import { Material } from 'three';
import { TypedMatNode } from '../_Base';
import { BaseController, SetParamsTextureNodesRecord } from './_BaseController';
import { NodeParamsConfig } from '../../utils/params/ParamsConfig';
export declare function AdvancedCommonParamConfig<TBase extends Constructor>(Base: TBase): {
    new (...args: any[]): {
        /** @param defines if the material is double sided or not */
        doubleSided: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param if the material is not double sided, it can be front sided, or back sided */
        front: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param override the default shadowSide behavior */
        overrideShadowSide: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines which side(s) are used when rendering shadows */
        shadowDoubleSided: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param if the material is not double sided, it can be front sided, or back sided, when computing shadows */
        shadowFront: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines if the objects using this material will be rendered in the color buffer. Setting it to false can have those objects occlude the ones behind */
        colorWrite: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines if the objects using this material will be rendered in the depth buffer. This can often help transparent objects */
        depthWrite: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param toggle depth test */
        depthTest: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param premultipliedAlpha */
        premultipliedAlpha: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param blending */
        blending: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        /** @param dithering, which can be useful when using postprocessing and banding appears on some objects */
        dithering: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param activate polygon offset */
        polygonOffset: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        polygonOffsetFactor: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        polygonOffsetUnits: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & TBase;
declare const AdvancedCommonParamsConfig_base: {
    new (...args: any[]): {
        /** @param defines if the material is double sided or not */
        doubleSided: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param if the material is not double sided, it can be front sided, or back sided */
        front: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param override the default shadowSide behavior */
        overrideShadowSide: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines which side(s) are used when rendering shadows */
        shadowDoubleSided: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param if the material is not double sided, it can be front sided, or back sided, when computing shadows */
        shadowFront: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines if the objects using this material will be rendered in the color buffer. Setting it to false can have those objects occlude the ones behind */
        colorWrite: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param defines if the objects using this material will be rendered in the depth buffer. This can often help transparent objects */
        depthWrite: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param toggle depth test */
        depthTest: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param premultipliedAlpha */
        premultipliedAlpha: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param blending */
        blending: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        /** @param dithering, which can be useful when using postprocessing and banding appears on some objects */
        dithering: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        /** @param activate polygon offset */
        polygonOffset: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.BOOLEAN>;
        polygonOffsetFactor: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
        polygonOffsetUnits: import("../../utils/params/ParamsConfig").ParamTemplate<import("../../../index_all").ParamType.INTEGER>;
    };
} & typeof NodeParamsConfig;
declare class AdvancedCommonParamsConfig extends AdvancedCommonParamsConfig_base {
}
export interface AdvancedCommonControllers {
    advancedCommon: AdvancedCommonController;
}
declare abstract class AdvancedCommonMapMatNode extends TypedMatNode<Material, AdvancedCommonParamsConfig> {
    controllers: AdvancedCommonControllers;
    material(): Promise<Material | undefined>;
}
export declare class AdvancedCommonController extends BaseController {
    protected node: AdvancedCommonMapMatNode;
    constructor(node: AdvancedCommonMapMatNode);
    static update(node: AdvancedCommonMapMatNode): Promise<void>;
    updateMaterial(material: Material): void;
    setParamsFromMaterial(material: Material, record: SetParamsTextureNodesRecord): void;
}
export {};
