import { type Scene } from "../../scene.js";
import { type Nullable } from "../../types.js";
import { type Particle } from "../particle.js";
import { type ThinParticleSystem } from "../thinParticleSystem.js";
import { type NodeParticleConnectionPoint } from "./nodeParticleBlockConnectionPoint.js";
import { Color4 } from "../../Maths/math.color.js";
import { Vector2, Vector3 } from "../../Maths/math.vector.js";
import { NodeParticleBlockConnectionPointTypes } from "./Enums/nodeParticleBlockConnectionPointTypes.js";
import { NodeParticleContextualSources } from "./Enums/nodeParticleContextualSources.js";
import { NodeParticleSystemSources } from "./Enums/nodeParticleSystemSources.js";
/**
 * Class used to store node based geometry build state
 */
export declare class NodeParticleBuildState {
    /**
     * Gets the capactity of the particle system to build
     */
    capacity: number;
    /**
     * Gets the scene where the particle system is built
     */
    scene: Scene;
    /** Gets or sets the build identifier */
    buildId: number;
    /** Gets or sets the list of non connected mandatory inputs */
    notConnectedNonOptionalInputs: NodeParticleConnectionPoint[];
    /** Gets or sets a boolean indicating that verbose mode is on */
    verbose: boolean;
    /**
     * Gets or sets the particle context for contextual data
     */
    particleContext: Nullable<Particle>;
    /**
     * Gets or sets the system context for contextual data
     */
    systemContext: Nullable<ThinParticleSystem>;
    /**
     * Gets or sets the index of the gradient to use
     */
    gradientIndex: number;
    /**
     * Gets or sets next gradient in line
     */
    nextGradientIndex: number;
    /**
     * Gets or sets the next gradient value
     */
    nextGradientValue: any;
    /**
     * Emits errors if any
     */
    emitErrors(): void;
    /**
     * Adapt a value to a target type
     * @param source defines the value to adapt
     * @param targetType defines the target type
     * @returns the adapted value
     */
    adapt(source: NodeParticleConnectionPoint, targetType: NodeParticleBlockConnectionPointTypes): any;
    /**
     * Gets the value associated with a contextual source
     * @param source Source of the contextual value
     * @returns the value associated with the source
     */
    getContextualValue(source: NodeParticleContextualSources): number | Color4 | Nullable<Vector3> | Vector2;
    /**
     * Gets the emitter world matrix
     */
    get emitterWorldMatrix(): import("../../Maths/math.vector.js").Matrix | null;
    /**
     * Gets the emitter inverse world matrix
     */
    get emitterInverseWorldMatrix(): import("../../Maths/math.vector.js").Matrix | null;
    /**
     * Gets the emitter position
     */
    get emitterPosition(): Nullable<Vector3>;
    /**
     * Gets the value associated with a system source
     * @param source Source of the system value
     * @returns the value associated with the source
     */
    getSystemValue(source: NodeParticleSystemSources): number | Nullable<Vector3>;
}
