import type { AssetLoadError, Result } from '@forgeax/engine-types'; export interface AssetGraphOptions

{ readonly read: (guid: string, signal: AbortSignal) => Promise>; readonly maxConcurrentReads?: number; } export interface AssetGraphCounters { readonly loads: number; readonly cacheHits: number; readonly readErrors: number; readonly noChange: number; readonly listenerFailures: number; } export interface AssetGraphSnapshot { readonly epoch: number; readonly ready: readonly string[]; readonly pending: number; readonly resources: number; readonly sccs: readonly (readonly string[])[]; readonly counters: AssetGraphCounters; } type GraphResult

= Result; type GraphListener = (snapshot: AssetGraphSnapshot) => void; export declare class AssetGraph

{ private readonly read; private readonly limit; private readonly ready; private readonly forward; private readonly reverse; private readonly reads; private readonly requests; private readonly listeners; private readonly lifetime; private readonly sccs; private activeReads; private readWaiters; private disposed; private epoch; private counters; private currentSnapshot; constructor(options: AssetGraphOptions

); load(guid: string, signal?: AbortSignal): Promise>; invalidate(guid: string): readonly string[]; invalidateForCatalogChange(guids?: readonly string[]): void; subscribe(listener: GraphListener): () => void; snapshot(): AssetGraphSnapshot; lookup(guid: string): P['value'] | undefined; guidOf(value: P['value']): string | undefined; dispose(): void; private loadClosure; private visit; private readOnce; private withPermit; private link; private collectAffected; private drop; private promote; private recordScc; private publish; } export {}; //# sourceMappingURL=asset-graph.d.ts.map