import type { NobjcObject } from "objc-js";
import type { _AVAudioFormat } from "./AVAudioFormat.js";
import type { _AVAudioMixing } from "./AVAudioMixing.js";
import type { _AVAudioNode } from "./AVAudioNode.js";
export declare class _AVAudioSourceNode extends _AVAudioNode {
    static alloc(): _AVAudioSourceNode;
    static new(): _AVAudioSourceNode;
    init(): _AVAudioSourceNode;
    /**
     * Create a node with a render block. The block to supply audio data to the output. The block can be called on realtime or non-realtime threads depending on the engine’s operating mode and it is the client's responsibility to handle it in a thread-safe manner. The audio format for the output bus will be set from the connection format when connecting to another node. The audio format for the block will be set to the node's output format. If node is reconnected with a different output format, the audio format for the block will also change.
     */
    initWithRenderBlock$(block: (arg0: NobjcObject, arg1: NobjcObject, arg2: number, arg3: NobjcObject) => number): _AVAudioSourceNode;
    /**
     * Create a node with a render block. The format of the PCM audio data that will be supplied by the block. The block to supply audio data to the output. The block can be called on realtime or non-realtime threads depending on the engine’s operating mode and it is the client's responsibility to handle it in a thread-safe manner. The audio format for the output bus will be set from the connection format when connecting to another node. AVAudioSourceNode supports different audio formats for the block and output, but only Linear PCM conversions are supported (sample rate, bit depth, interleaving).
     */
    initWithFormat$renderBlock$(format: _AVAudioFormat, block: (arg0: NobjcObject, arg1: NobjcObject, arg2: number, arg3: NobjcObject) => number): _AVAudioSourceNode;
}
export interface _AVAudioSourceNode extends _AVAudioMixing {
}
