import type { NobjcObject } from "objc-js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _PHASEAsset } from "./PHASEAsset.js";
import type { _PHASEGlobalMetaParameterAsset } from "./PHASEGlobalMetaParameterAsset.js";
import type { _PHASEMetaParameterDefinition } from "./PHASEMetaParameterDefinition.js";
import type { _PHASESoundAsset } from "./PHASESoundAsset.js";
import type { _PHASESoundEventNodeAsset } from "./PHASESoundEventNodeAsset.js";
import type { _PHASESoundEventNodeDefinition } from "./PHASESoundEventNodeDefinition.js";
import type { _AVAudioChannelLayout } from "../AVFAudio/AVAudioChannelLayout.js";
import type { _AVAudioFormat } from "../AVFAudio/AVAudioFormat.js";
import type { PHASEAssetType } from "./PHASEAssetType.js";
import type { PHASENormalizationMode } from "./PHASENormalizationMode.js";
export declare class _PHASEAssetRegistry extends _NSObject {
    static alloc(): _PHASEAssetRegistry;
    static new(): _PHASEAssetRegistry;
    init(): _PHASEAssetRegistry;
    /**
     * @method registerGlobalMetaParameter:error @abstract Register a global metaparameter with the asset registry. @note This function is synchronous and thread-safe. Clients can safely run this function to register multiple global metaparameters from multiple threads, if required. @param metaParameterDefinition The metaparameter object to register. @param error The error object in case of an error. @return A PHASEGlobalMetaParameterAsset object.
     */
    registerGlobalMetaParameter$error$(metaParameterDefinition: _PHASEMetaParameterDefinition, error: NobjcObject | null): _PHASEGlobalMetaParameterAsset | null;
    /**
     * @method registerSoundEventAssetWithRootNode:identifier:error @abstract Register a sound event asset with the asset registry. @note This function is synchronous and thread-safe. Clients can safely run this function to register multiple sound event assets from multiple threads, if required. @param rootNode The root node of the sound event asset to register. @param identifier An identifier that uniquely represents this sound event asset. Nil generates an automatic identifier. @param error The error object in case of an error @return A PHASESoundEventNodeAsset object
     */
    registerSoundEventAssetWithRootNode$identifier$error$(rootNode: _PHASESoundEventNodeDefinition, identifier: _NSString | null, error: NobjcObject | null): _PHASESoundEventNodeAsset | null;
    /**
     * @method registerSoundAssetAtURL:identifier:assetType:channelLayout:normalizationMode:error @abstract Register an audio file as a sound asset in the system. @note This function is synchronous and thread-safe. Clients can safely run this function to register multiple sound assets from multiple threads, if required. @param url The URL of the audio file. @param identifier An identifier that uniquely represents this sound event asset. Nil generates an automatic identifier. @param assetType The asset type for this sound asset. @param channelLayout The audio channel layout for this sound asset. If a valid channel layout definition is read from the file being registered, this will override it. If nil is passed as a value for this property, the file must either be mono or stereo, or already contain a vaild channel layout definition. This channel layout must have the same channel count as the audio file being loaded. @param normalizationMode The normalization mode. @param error The error object in case of an error @return A PHASESoundAsset object
     */
    registerSoundAssetAtURL$identifier$assetType$channelLayout$normalizationMode$error$(url: _NSURL, identifier: _NSString | null, assetType: PHASEAssetType, channelLayout: _AVAudioChannelLayout | null, normalizationMode: PHASENormalizationMode, error: NobjcObject | null): _PHASESoundAsset | null;
    /**
     * @method registerSoundAssetWithData:identifier:format:normalizationMode:error @abstract Register audio data as a sound asset in the system. @note This function is synchronous and thread-safe. Clients can safely run this function to register multiple sound assets from multiple threads, if required. @param data A buffer containing the audio data to register as a sound asset. Audio data must either be a single PCM buffer of interleaved channels or multiple deinterleaved PCM buffers per channel packed back to back. @param identifier The identifier to assign to this sound asset. Nil generates an automatic identifier. @param format The AVAudioFormat object that describes the audio data in the buffer. @param normalizationMode The normalization mode. @param error The error object in case of an error. @return A PHASESoundAsset object.
     */
    registerSoundAssetWithData$identifier$format$normalizationMode$error$(data: _NSData, identifier: _NSString | null, format: _AVAudioFormat, normalizationMode: PHASENormalizationMode, error: NobjcObject | null): _PHASESoundAsset | null;
    /**
     * @method unregisterAssetWithIdentifier:completion: @abstract Unregister and unload an asset. @param identifier The identifier of the PHASEAsset object to unregister @param handler An optional completion block that will be called when the asset has been unregistered. Once you receive this callback, it's safe to deallocate external resources, if applicable.
     */
    unregisterAssetWithIdentifier$completion$(identifier: _NSString, handler: ((success: boolean) => void) | null): void;
    /**
     * @method assetForIdentifier @abstract Finds an asset in the asset registry, given an identifier. @param identifier The identifier of this asset @return A PHASEAsset object, or nil if one could not be found.
     */
    assetForIdentifier$(identifier: _NSString): _PHASEAsset | null;
    /** @property globalMetaParameters @abstract A dictionary of global metaparameters */
    globalMetaParameters(): _NSDictionary;
}
