import type { XrCapabilities } from "../lens-core-module/generated-types";
/** @internal */
export type SupportedCapability<T> = T & {
    supported: true;
};
/** @internal */
export type UnsupportedCapability = {
    supported: false;
    error: Error;
};
/** @internal */
export type Capability<T = void> = SupportedCapability<T> | UnsupportedCapability;
type WebGlCapability = Capability<{
    maxTextureSize: number;
}>;
export interface WasmFeatures {
    simd: boolean;
    exceptionHandling: boolean;
    relaxedSimd: boolean;
}
type WasmCapability = Capability<{
    wasmFeatures: WasmFeatures;
}>;
type WebXrCapability = Capability<XrCapabilities>;
/**
 * @returns A Promise containing an object with fields describing the support of various WebXR features. This object's
 * type is defined by LensCore, as they consume these capabilities and adjust behavior accordingly.
 *
 * @internal
 */
export declare function getWebXrCapabilities(): Promise<WebXrCapability>;
/** @internal */
export interface PlatformCapabilities {
    webgl: WebGlCapability;
    wasm: WasmCapability;
    webxr: WebXrCapability;
}
/**
 * Get information about the current platform capabilities, including:
 * - WebGL support and various WebGL parameters.
 * - WASM support and support for various WASM features.
 * - WebXR support and support for various WebXR features.
 *
 * @internal
 */
export declare const getPlatformCapabilities: import("../common/memoize").Memoized<() => Promise<PlatformCapabilities>>;
export {};
//# sourceMappingURL=platformCapabilities.d.ts.map