/**
 * Promotes an attribute from object to geometry or vice-versa.
 *
 * @remarks
 * The attribute can also be promoted with different modes, such as only the min, max or first found.
 *
 */
import { TypedSopNode } from './_Base';
import { AttribClass } from '../../../core/geometry/Constant';
import { CoreGroup } from '../../../core/geometry/Group';
import { AttribPromoteMode } from '../../operations/sop/AttribPromote';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { SopType } from '../../poly/registers/nodes/types/Sop';
declare class AttribPromoteSopParamsConfig extends NodeParamsConfig {
    /** @param the group this applies to */
    group: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
    /** @param class the attribute is from (object or geometry) */
    classFrom: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param class the attribute should be promoted to (object or geometry) */
    classTo: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param mode used to promote the attribute (min, max or first_found) */
    mode: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
    /** @param name of the attribute to promote */
    name: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
}
export declare class AttribPromoteSopNode extends TypedSopNode<AttribPromoteSopParamsConfig> {
    paramsConfig: AttribPromoteSopParamsConfig;
    static type(): SopType;
    initializeNode(): void;
    private _operation;
    cook(inputCoreGroups: CoreGroup[]): void;
    setAttribClassFrom(attribClass: AttribClass): void;
    attribClassFrom(): AttribClass;
    setAttribClassTo(attribClass: AttribClass): void;
    attribClassTo(): AttribClass;
    setPromoteMode(mode: AttribPromoteMode): void;
}
export {};
