/**
 * A type which implements {@link ICacheable} should allow managing the state of cached resources
 * @Remarks
 * It should be used to prevent recreation of objects properties of which were unmodified,
 * and to allow a correct handling of WebGL context loss by recreating WebGL resources.
 */
export interface ICacheable {
    /**
     * Deletes native (WebAssembly) memory used by a cached resource and removes reference to it,
     * forcing the cached object to be recreated next time it is fetched.
     * @Remarks
     * Call .invalidateCache() to delete currently cached value
     */
    invalidateCache(): void;
    /**
     * Deletes native (WebAssembly) memory used by a cached resource and removes reference to it.
     * And resets properties to the default values
     * @Remarks
     * Call .resetCache() to clear the cached value and prevent it from being recreated using saved properties.
     */
    resetCache(): void;
}
