import { type CurrentReadable } from '../core/current-value.js';
import { type LoadedTexture, type TextureLoadOptions } from '../core/texture-loader.js';
import { type MotionGPUErrorReport } from '../core/error-report.js';
/**
 * Reactive state returned by {@link useTexture}.
 */
export interface UseTextureResult {
    /**
     * Loaded textures or `null` when unavailable/failed.
     */
    textures: CurrentReadable<LoadedTexture[] | null>;
    /**
     * `true` while an active load request is running.
     */
    loading: CurrentReadable<boolean>;
    /**
     * Last loading error.
     */
    error: CurrentReadable<Error | null>;
    /**
     * Last loading error normalized to MotionGPU diagnostics report shape.
     */
    errorReport: CurrentReadable<MotionGPUErrorReport | null>;
    /**
     * Reloads all textures using current URL input.
     */
    reload: () => Promise<void>;
}
/**
 * Supported URL input variants for `useTexture`.
 */
export type TextureUrlInput = string[] | (() => string[]);
/**
 * Supported options input variants for `useTexture`.
 */
export type TextureOptionsInput = TextureLoadOptions | (() => TextureLoadOptions);
/**
 * Loads textures from URLs and exposes reactive loading/error state.
 *
 * @param urlInput - URLs array or lazy URL provider.
 * @param optionsInput - Loader options object or lazy options provider.
 * @returns Reactive texture loading state with reload support.
 */
export declare function useTexture(urlInput: TextureUrlInput, optionsInput?: TextureOptionsInput): UseTextureResult;
//# sourceMappingURL=use-texture.d.ts.map