import { AssetCache } from "./AssetCache";
import { AssetDependencyGraph } from "./AssetDependencyGraph";
import { AssetHandle } from "./AssetHandle";
import { type AssetLoadProgress, type AssetLoader } from "./AssetLoader";
import { AssetRegistry } from "./AssetRegistry";
export interface AssetManagerOptions {
    readonly baseUrl?: string;
    readonly retries?: number;
    readonly retryDelayMs?: number;
}
export interface AssetLoadOptions {
    readonly type?: string;
    readonly signal?: AbortSignal;
    readonly dependencyChain?: readonly string[];
    readonly retries?: number;
    readonly retryDelayMs?: number;
    readonly onProgress?: (event: AssetLoadProgress) => void;
}
export declare class AssetManager {
    readonly registry: AssetRegistry;
    readonly cache: AssetCache;
    readonly dependencies: AssetDependencyGraph;
    private readonly baseUrl;
    private readonly defaultRetries;
    private readonly defaultRetryDelayMs;
    private nextId;
    constructor(options?: AssetManagerOptions);
    register(loader: AssetLoader): void;
    load<T = unknown>(url: string, options?: AssetLoadOptions): Promise<AssetHandle<T>>;
    release<T>(handle: AssetHandle<T>): Promise<void>;
    private loadWithLoader;
    private releaseLoadedDependencies;
    private awaitInFlight;
    private shouldRetry;
    private waitForRetry;
}
//# sourceMappingURL=AssetManager.d.ts.map