import type { AssetDiagnostic } from "./AssetCorpus";
import type { GLTFAsset, GLTFCameraAsset, GLTFLightAsset } from "./GLTFLoader";
import { type GLTFRenderResourceDiagnostics, type GLTFRenderResources } from "./GLTFRenderResources";
import { type GLTFExtensionSupportEvaluation, type GLTFExtensionSupportFamily, type GLTFExtensionSupportStatus } from "./GLTFExtensionSupport";
export interface GLTFSceneHierarchyNodeInspection {
    readonly name: string;
    readonly depth: number;
    readonly childCount: number;
    readonly hasRenderable: boolean;
}
export interface GLTFMeshInspection {
    readonly name: string;
    readonly sourceMeshIndex: number;
    readonly primitiveIndex: number;
    readonly vertexCount: number;
    readonly indexCount: number;
    readonly topology: "triangles" | "lines" | "points";
    readonly material: string;
    readonly bounds: {
        readonly min: readonly [number, number, number];
        readonly max: readonly [number, number, number];
    };
    readonly attributeCounts: {
        readonly positions: number;
        readonly normals: number;
        readonly tangents: number;
        readonly colors: number;
        readonly texcoordSets: readonly number[];
        readonly joints: number;
        readonly weights: number;
    };
    readonly morphTargetCount: number;
    readonly skinIndex?: number;
}
export interface GLTFMaterialInspection {
    readonly name: string;
    readonly unlit: boolean;
    readonly baseColorFactor: readonly [number, number, number, number];
    readonly metallicFactor: number;
    readonly roughnessFactor: number;
    readonly emissiveFactor: readonly [number, number, number];
    readonly emissiveStrength: number;
    readonly alphaMode: "OPAQUE" | "MASK" | "BLEND";
    readonly alphaCutoff: number;
    readonly doubleSided: boolean;
    readonly textures: readonly GLTFMaterialTextureSlotInspection[];
    readonly features: GLTFMaterialFeatureInspection;
    readonly extensions: readonly string[];
    readonly extensionSupport: readonly GLTFMaterialExtensionSupportInspection[];
}
export interface GLTFMaterialExtensionSupportInspection {
    readonly name: string;
    readonly family: GLTFExtensionSupportFamily;
    readonly status: GLTFExtensionSupportStatus;
    readonly requiredAccepted: boolean;
    readonly knownLimits: readonly string[];
}
export interface GLTFMaterialFeatureInspection {
    readonly normalScale?: number;
    readonly occlusionStrength?: number;
    readonly clearcoat?: {
        readonly factor: number;
        readonly roughnessFactor: number;
        readonly normalScale?: number;
    };
    readonly transmission?: {
        readonly factor: number;
    };
    readonly diffuseTransmission?: {
        readonly factor: number;
        readonly colorFactor: readonly [number, number, number];
    };
    readonly volume?: {
        readonly thicknessFactor: number;
        readonly attenuationDistance: number;
        readonly attenuationColor: readonly [number, number, number];
    };
    readonly ior?: number;
    readonly specular?: {
        readonly factor: number;
        readonly colorFactor: readonly [number, number, number];
    };
    readonly sheen?: {
        readonly colorFactor: readonly [number, number, number];
        readonly roughnessFactor: number;
    };
    readonly anisotropy?: {
        readonly strength: number;
        readonly rotation: number;
    };
    readonly iridescence?: {
        readonly factor: number;
        readonly ior: number;
        readonly thicknessMinimum: number;
        readonly thicknessMaximum: number;
    };
    readonly dispersion?: number;
}
export interface GLTFMaterialTextureSlotInspection {
    readonly slot: string;
    readonly texture: number;
    readonly image: number;
    readonly texCoord: number;
    readonly transform?: {
        readonly offset: readonly [number, number];
        readonly scale: readonly [number, number];
        readonly rotation: number;
    };
}
export interface GLTFTextureInspection {
    readonly name: string;
    readonly sourceImage: number;
    readonly imageName: string;
    readonly uri?: string;
    readonly mimeType?: string;
    readonly embeddedBytes?: number;
    readonly sampler?: {
        readonly minFilter: "nearest" | "linear" | "nearest-mipmap-nearest" | "linear-mipmap-nearest" | "nearest-mipmap-linear" | "linear-mipmap-linear";
        readonly magFilter: "nearest" | "linear";
        readonly addressU: "clamp-to-edge" | "repeat" | "mirror-repeat";
        readonly addressV: "clamp-to-edge" | "repeat" | "mirror-repeat";
    };
    readonly runtime?: {
        readonly width: number;
        readonly height: number;
        readonly format: string;
        readonly colorSpace: "linear" | "srgb";
        readonly mipLevels: number;
        readonly byteLength: number;
        readonly fallbackByteLength: number;
    };
}
export interface GLTFAnimationInspection {
    readonly name: string;
    readonly duration: number;
    readonly trackCount: number;
    readonly tracks: readonly {
        readonly target: string;
        readonly valueType: string;
        readonly keyframes: number;
    }[];
}
export interface GLTFSkinInspection {
    readonly name: string;
    readonly jointCount: number;
    readonly skeletonRoot?: number;
    readonly bones: readonly {
        readonly name: string;
        readonly parentIndex: number;
    }[];
}
export interface GLTFMorphTargetInspection {
    readonly mesh: string;
    readonly weights: readonly number[];
    readonly targets: readonly {
        readonly index: number;
        readonly positions: number;
        readonly normals: number;
        readonly tangents: number;
    }[];
}
export interface GLTFDependencyInspection {
    readonly owner: string;
    readonly dependency: string;
    readonly kind: "buffer" | "image" | "texture";
}
export interface GLTFAssetInspectionReport {
    readonly extensionSupport: GLTFExtensionSupportEvaluation;
    readonly renderResources?: GLTFRenderResourceDiagnostics;
    readonly sceneHierarchy: readonly GLTFSceneHierarchyNodeInspection[];
    readonly meshes: readonly GLTFMeshInspection[];
    readonly materials: readonly GLTFMaterialInspection[];
    readonly textures: readonly GLTFTextureInspection[];
    readonly animations: readonly GLTFAnimationInspection[];
    readonly skins: readonly GLTFSkinInspection[];
    readonly morphTargets: readonly GLTFMorphTargetInspection[];
    readonly cameras: readonly GLTFCameraAsset[];
    readonly lights: readonly GLTFLightAsset[];
    readonly dependencies: readonly GLTFDependencyInspection[];
    readonly warnings: readonly AssetDiagnostic[];
}
export declare function inspectGLTFAsset(asset: GLTFAsset, resources?: GLTFRenderResources): GLTFAssetInspectionReport;
//# sourceMappingURL=AssetInspection.d.ts.map