/**
 * Based on the Frostbite's GDC paper "FrameGraph: Extensible Rendering Architecture in Frostbite" by Yuriy O'Donnell
 * @see https://github.com/skaarj1989/FrameGraph
 */
export class RenderGraph {
    /**
     *
     * @param {string} name
     */
    constructor(name?: string);
    /**
     * Human-readable name, used for debugging and UI primarily.
     * There is no uniqueness guarantee
     * @type {string}
     */
    name: string;
    /**
     *
     * @type {RenderPassNode[]}
     * @private
     */
    private __pass_nodes;
    /**
     *
     * @type {ResourceNode[]}
     * @private
     */
    private __resource_nodes;
    /**
     *
     * @type {ResourceEntry[]}
     * @private
     */
    private __resource_registry;
    /**
     *
     * @param {number} id Resource Node ID
     * @returns {ResourceEntry}
     */
    getResourceEntry(id: number): ResourceEntry<any>;
    /**
     *
     * @param {number} id
     * @returns {ResourceNode}
     */
    getResourceNode(id: number): ResourceNode<any>;
    /**
     * @template T
     * @param {number} id resource ID
     * @returns {T}
     */
    getDescriptor<T>(id: number): T;
    /**
     * @template T
     * @param {string} name
     * @param {T} descriptor
     */
    create_resource<T>(name: string, descriptor: T): number;
    /**
     * @template T
     * @param {T} descriptor
     * @return {ResourceEntry}
     * @private
     */
    private _createResourceEntry;
    /**
     *
     * @param {string} name
     * @param {number} resource_id
     * @return {ResourceNode}
     * @private
     */
    private _createResourceNode;
    /**
     *
     * @param {number} res
     * @returns {number}
     */
    clone_resource(res: number): number;
    /**
     * @template T
     * @param {string} name
     * @param {ResourceDescriptor<T>} description
     * @param {T} resource
     * @returns {number}
     */
    import_resource<T>(name: string, description: ResourceDescriptor<T>, resource: T): number;
    /**
     * @returns {boolean}
     * @param id
     */
    is_valid_resource(id: any): boolean;
    /**
     * @template T
     * @param {string} name
     * @param {T} data
     * @param {function(data:T, resources: RenderPassResources, context:IRenderContext):void} execute
     * @returns {RenderGraphBuilder}
     */
    add<T>(name: string, data: T, execute: any): RenderGraphBuilder;
    /**
     * Perform validation, useful for debugging
     * Typically done before compilation
     * @param {function(problem:string):*} problem_consumer
     * @param {*} [problem_consumer_context] thisArg for `problem_consumer`
     * @returns {boolean}
     */
    validate(problem_consumer: any, problem_consumer_context?: any): boolean;
    compile(): void;
    /**
     *
     * @param {IRenderContext} context
     */
    execute(context: IRenderContext): void;
    /**
     * @see https://en.wikipedia.org/wiki/DOT_(graph_description_language)
     * @return {string}
     */
    exportToDot(): string;
}
import { ResourceEntry } from "./ResourceEntry.js";
import { ResourceNode } from "./ResourceNode.js";
import { RenderGraphBuilder } from "./RenderGraphBuilder.js";
//# sourceMappingURL=RenderGraph.d.ts.map