import { AudioSettings, CompilationSettings, DspGraph, NodeImplementations } from '@webpd/compiler';
import { PdJson } from '@webpd/pd-parser';
import { AbstractionLoader } from '../compile-dsp-graph/instantiate-abstractions';
import { NodeBuilders } from '../compile-dsp-graph/types';
import { PdGuiNode } from '../pd-gui/types';
export type WasmBuffer = ArrayBuffer;
export interface Artefacts {
    pd?: string;
    pdJson?: PdJson.Pd;
    dspGraph?: {
        graph: DspGraph.Graph;
        arrays: DspGraph.Arrays;
        pd: PdJson.Pd;
    };
    javascript?: string;
    assemblyscript?: string;
    wasm?: ArrayBuffer;
    wav?: Uint8Array;
    app?: {
        [filename: string]: string | ArrayBuffer;
    };
}
export interface RenderAudioSettings {
    sampleRate: number;
    blockSize: number;
    previewDurationSeconds: number;
}
export interface BuildSettings {
    audioSettings: AudioSettings;
    renderAudioSettings: RenderAudioSettings;
    nodeBuilders: NodeBuilders;
    nodeImplementations: NodeImplementations;
    abstractionLoader: AbstractionLoader;
    io?: CompilationSettings['io'];
}
export interface WebPdMetadata {
    graph: DspGraph.Graph;
    pdNodes: {
        [patchId: PdJson.GlobalId]: {
            [pdNodeId: PdJson.LocalId]: PdJson.Node;
        };
    };
    pdGui: Array<PdGuiNode>;
}
