import type { NobjcObject } from "objc-js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _AUParameter } from "./AUParameter.js";
export declare class _AUParameterNode extends _NSObject {
    static alloc(): _AUParameterNode;
    static new(): _AUParameterNode;
    init(): _AUParameterNode;
    /**
     * @method displayNameWithLength: @brief A version of displayName possibly abbreviated to the given desired length, in characters. @discussion The default implementation simply returns displayName.
     */
    displayNameWithLength$(maximumLength: number): _NSString;
    /**
     * @method tokenByAddingParameterObserver: @brief Add an observer for a parameter or all parameters in a group/tree. @discussion An audio unit view can use an AUParameterObserver to be notified of changes to a single parameter, or to all parameters in a group/tree. These callbacks are throttled so as to limit the rate of redundant notifications in the case of frequent changes to a single parameter. This block is called in an arbitrary thread context. It is responsible for thread-safety. It must not make any calls to add or remove other observers, including itself; this will deadlock. An audio unit's implementation should interact with the parameter object via implementorValueObserver and implementorValueProvider. Parameter observers are bound to a specific parameter instance. If this parameter is destroyed, e.g. if the parameter tree is re-constructed, the previously set parameter observers will no longer be valid. Clients can observe changes to the parameter tree via KVO. See the discussion of -[AUAudioUnit parameterTree]. @param observer A block to call after the value of a parameter has changed. @return A token which can be passed to removeParameterObserver: or to -[AUParameter setValue:originator:]
     */
    tokenByAddingParameterObserver$(observer: (arg0: number, arg1: number) => void): NobjcObject;
    /**
     * @method tokenByAddingParameterRecordingObserver: @brief Add a recording observer for a parameter or all parameters in a group/tree. @discussion This is a variant of tokenByAddingParameterAutomationObserver where the callback receives AURecordedParameterEvents instead of AUParameterAutomationEvents. This will be deprecated in favor of tokenByAddingParameterAutomationObserver in a future release.
     */
    tokenByAddingParameterRecordingObserver$(observer: (arg0: number, arg1: NobjcObject) => void): NobjcObject;
    /**
     * @method tokenByAddingParameterAutomationObserver: @brief Add a recording observer for a parameter or all parameters in a group/tree. @discussion An audio unit host can use an AUParameterAutomationObserver or AUParameterRecordingObserver to capture a series of changes to a parameter value, including the timing of the events, as generated by a UI gesture in a view, for example. Unlike AUParameterObserver, these callbacks are not throttled. This block is called in an arbitrary thread context. It is responsible for thread-safety. It must not make any calls to add or remove other observers, including itself; this will deadlock. An audio unit's engine should interact with the parameter object via implementorValueObserver and implementorValueProvider. @param observer A block to call to record the changing of a parameter value. @return A token which can be passed to removeParameterObserver: or to -[AUParameter setValue:originator:]
     */
    tokenByAddingParameterAutomationObserver$(observer: (arg0: number, arg1: NobjcObject) => void): NobjcObject;
    /**
     * @method removeParameterObserver: @brief Remove an observer created with tokenByAddingParameterObserver, tokenByAddingParameterRecordingObserver, or tokenByAddingParameterAutomationObserver. @discussion This call will remove the callback corresponding to the supplied token. Note that this will block until any callbacks currently in flight have completed.
     */
    removeParameterObserver$(token: NobjcObject): void;
    /**
     * @property identifier @brief A non-localized, permanent name for a parameter or group. @discussion The identifier must be unique for all child nodes under any given parent. From release to release, an audio unit must not change its parameters' identifiers; this will invalidate any hosts' documents that refer to the parameters.
     */
    identifier(): _NSString;
    /**
     * @property keyPath @brief Generated by concatenating the identifiers of a node's parents with its own. @discussion Unless an audio unit specifically documents that its parameter addresses are stable and persistent, hosts, when recording parameter values, should bind to the keyPath. The individual node identifiers in a key path are separated by periods. (".") Passing a node's keyPath to -[tree valueForKeyPath:] should return the same node.
     */
    keyPath(): _NSString;
    /** @property displayName @brief A localized name to display for the parameter. */
    displayName(): _NSString;
    /**
     * @brief Called when a parameter changes value. @discussion This block, used only in an audio unit implementation, receives all externally-generated changes to parameter values. It should store the new value in its audio signal processing state (assuming that that state is separate from the AUParameter object).
     */
    implementorValueObserver(): (arg0: _AUParameter, arg1: number) => void;
    setImplementorValueObserver$(value: (arg0: _AUParameter, arg1: number) => void): void;
    /**
     * @brief Called when a value of a parameter in the tree is known to have a stale value needing to be refreshed. @discussion The audio unit should return the current value for this parameter; the AUParameterNode will store the value.
     */
    implementorValueProvider(): (arg0: _AUParameter) => number;
    setImplementorValueProvider$(value: (arg0: _AUParameter) => number): void;
    /**
     * Called to provide string representations of parameter values. If value is nil, the callback uses the current value of the parameter.
     */
    implementorStringFromValueCallback(): (arg0: _AUParameter, arg1: NobjcObject) => _NSString;
    setImplementorStringFromValueCallback$(value: (arg0: _AUParameter, arg1: NobjcObject) => _NSString): void;
    /** Called to convert string to numeric representations of parameter values. */
    implementorValueFromStringCallback(): (arg0: _AUParameter, arg1: _NSString) => number;
    setImplementorValueFromStringCallback$(value: (arg0: _AUParameter, arg1: _NSString) => number): void;
    /** Called to obtain an abbreviated version of a parameter or group name. */
    implementorDisplayNameWithLengthCallback(): (arg0: _AUParameterNode, arg1: number) => _NSString;
    setImplementorDisplayNameWithLengthCallback$(value: (arg0: _AUParameterNode, arg1: number) => _NSString): void;
}
