import { ConstructorType } from "../utils/util"; import { EventDefinitions, IEventSource, EventKeys } from "./event"; import { GLContext } from "./global"; export interface IAsset { assetID: number; name: string; destroy(): void; valid(): boolean; } export declare class Asset implements IAsset { assetID: number; name: string; protected destroyed: boolean; constructor(name?: string); destroy(): void; valid(): boolean; } export declare abstract class GPUAsset extends Asset { protected ctx: GLContext; protected initialized: boolean; constructor(ctx?: GLContext, name?: string); protected tryInit(required?: boolean): boolean; protected abstract init(): boolean; } export declare abstract class LazyInitAsset extends Asset { protected ctx: GLContext; protected initialzed: boolean; constructor(ctx?: GLContext); protected abstract init(): boolean; protected tryInit(required?: boolean): boolean; } interface AssetManagerEvents extends EventDefinitions { "asset-created": (asset: IAsset) => void; "asset-destroyed": (asset: IAsset) => void; } declare class AssetManagerType implements IEventSource { private assetsMap; private id; private eventEmitter; constructor(); newAssetID(asset: IAsset): number; find(name: string): IAsset | undefined; find(id: number): IAsset | undefined; destroy(id: number): void; destroyAll(): void; findAssetsOfType(type: ConstructorType): T[]; on>(event: T, listener: import("./event").EventListener): void; off>(event: T, listener: import("./event").EventListener): void; } export interface ICloneable { clone(): ThisType; } export declare const AssetManager: AssetManagerType; export {};