import type { _PHASEEnvelope } from "./PHASEEnvelope.js";
import type { _PHASENumberMetaParameterDefinition } from "./PHASENumberMetaParameterDefinition.js";
import type { _PHASESoundEventNodeDefinition } from "./PHASESoundEventNodeDefinition.js";
import type { _PHASESpatialMixerDefinition } from "./PHASESpatialMixerDefinition.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { PHASECurveType } from "./PHASECurveType.js";
export declare class _PHASEBlendNodeDefinition extends _PHASESoundEventNodeDefinition {
    static alloc(): _PHASEBlendNodeDefinition;
    static new(): _PHASEBlendNodeDefinition;
    init(): _PHASEBlendNodeDefinition;
    /**
     * @method initWithBlendMetaParameterDefinition:identifier @abstract Create a blend node definition @param blendMetaParameterDefinition A metaparameter definition that wil be used to control the parameter of the blend node at runtime. @param identifier An optional custom identifier to give to this object @return A new PHASEBlendNodeDefinition object
     */
    initWithBlendMetaParameterDefinition$identifier$(blendMetaParameterDefinition: _PHASENumberMetaParameterDefinition, identifier: _NSString): _PHASEBlendNodeDefinition;
    /**
     * @method initWithBlendMetaParameterDefinition @abstract Create a blend node definition @param blendMetaParameterDefinition A metaparameter definition that wil be used to control the parameter of the blend node at runtime. @return A new PHASEBlendNodeDefinition object
     */
    initWithBlendMetaParameterDefinition$(blendMetaParameterDefinition: _PHASENumberMetaParameterDefinition): _PHASEBlendNodeDefinition;
    /**
     * @method initDistanceBlendWithSpatialMixerDefinition:identifier @abstract Create a blend node definition @param spatialMixerDefinition A PHASESpatialMixerDefinition that will bind the blend parameter to the distance between the source and listener. @param identifier An optional custom identifier to give to this object @return A new PHASEBlendNodeDefinition object
     */
    initDistanceBlendWithSpatialMixerDefinition$identifier$(spatialMixerDefinition: _PHASESpatialMixerDefinition, identifier: _NSString): _PHASEBlendNodeDefinition;
    /**
     * @method initDistanceBlendWithSpatialMixerDefinition @abstract Create a blend node definition @param spatialMixerDefinition A PHASESpatialMixerDefinition that will bind the blend parameter to the distance between the source and listener. @return A new PHASEBlendNodeDefinition object
     */
    initDistanceBlendWithSpatialMixerDefinition$(spatialMixerDefinition: _PHASESpatialMixerDefinition): _PHASEBlendNodeDefinition;
    /**
     * @method addRangeForInputValuesBelow:fullGainAtValue:fadeCurveType:subtree @abstract Create a blend range that is active for all values below a given threshold. @param value The value for which the range will be active if the blend node's input value is below this threshold. @param fullGainAtValue This value defines a threshold for which a fade curve will be applied to the gain, when the input value is between "value" and "fullGainAtValue". @param fadeCurveType A curve type that defines which kind of fade curve to apply. @param subtree A PHASESoundEventNodeDefinition subtree that will be active for this range.
     */
    addRangeForInputValuesBelow$fullGainAtValue$fadeCurveType$subtree$(value: number, fullGainAtValue: number, fadeCurveType: PHASECurveType, subtree: _PHASESoundEventNodeDefinition): void;
    /**
     * @method addRangeForInputValuesBetween:highValue:fullGainAtLowValue:fullGainAtHighValue:lowFadeCurveType:highFadeCurveType:subtree @abstract Create a blend range that is active for all input values between lowValue and highValue @param lowValue The lower bound for which this range is active. @param highValue The upper bound for which this range is active. @param fullGainAtLowValue The threshold for which a fade curve defined by lowFadeCurveType will be applied to the gain when the input value is between lowValue and fullGainAtLowValue @param fullGainAtHighValue The threshold for which a fade curve defined by highFadeCurveType will be applied to the gain when the input value is between highValue and fullGainAtHighValue @param lowFadeCurveType A curve type that defines which kind of fade curve to apply for the low fade range. @param highFadeCurveType A curve type that defines which kind of fade curve to apply for the high fade range.. @param subtree A PHASESoundEventNodeDefinition subtree that will be active for this range.
     */
    addRangeForInputValuesBetween$highValue$fullGainAtLowValue$fullGainAtHighValue$lowFadeCurveType$highFadeCurveType$subtree$(lowValue: number, highValue: number, fullGainAtLowValue: number, fullGainAtHighValue: number, lowFadeCurveType: PHASECurveType, highFadeCurveType: PHASECurveType, subtree: _PHASESoundEventNodeDefinition): void;
    /**
     * @method addRangeForInputValuesAbove:fullGainAtValue:fadeCurveType:subtree @abstract Create a blend range that is active for all values above a given threshold. @param value The value for which the range will be active if the blend node's input value is above this threshold. @param fullGainAtValue This value defines a threshold for which a fade curve will be applied to the gain, when the input value is between "value" and "fullGainAtValue". @param fadeCurveType A curve type that defines which kind of fade curve to apply. @param subtree A PHASESoundEventNodeDefinition subtree that will be active for this range.
     */
    addRangeForInputValuesAbove$fullGainAtValue$fadeCurveType$subtree$(value: number, fullGainAtValue: number, fadeCurveType: PHASECurveType, subtree: _PHASESoundEventNodeDefinition): void;
    /**
     * @method addRangeWithEnvelope:subtree @abstract Create a blend range defined by a PHASEEnvelope object. @param envelope The PHASEEnvelope object that defines the output gain for a range. @param subtree A PHASESoundEventNodeDefinition subtree that will be active for this range.
     */
    addRangeWithEnvelope$subtree$(envelope: _PHASEEnvelope, subtree: _PHASESoundEventNodeDefinition): void;
    blendParameterDefinition(): _PHASENumberMetaParameterDefinition | null;
    spatialMixerDefinitionForDistance(): _PHASESpatialMixerDefinition | null;
}
