import { S as SerializedDQVAT } from '../VATBuilder-DkNitwpU.cjs';
import '@babylonjs/core';

type ShadoModelArtifactMap = {
    model?: string | null;
    vat16?: string | null;
    vat32?: string | null;
    asm?: string | null;
    wgsl?: string | null;
    glsl?: string | null;
};
type ShadoModelImportSource = {
    kind?: 'asset-container';
    url: string;
} | {
    kind: 'scene-loader';
    rootUrl: string;
    fileName: string;
    meshNames?: string[];
};
type ShadoModelManifestEntry = {
    name: string;
    import: ShadoModelImportSource;
    runtime?: {
        merge?: boolean;
        replaceMaterial?: boolean;
        disposeOriginalMaterial?: boolean;
    };
    includeAnimation?: boolean;
    vat?: {
        variants?: Array<'float16' | 'float32'>;
        options?: unknown;
    };
    artifacts?: ShadoModelArtifactMap;
};
type ShadoModelManifestDocument = {
    kind: 'shado.model.manifest';
    version: number;
    models: Record<string, ShadoModelManifestEntry>;
};
type ShadoPackedModel = {
    kind: 'shado.model';
    version: number;
    name?: string;
    source?: ShadoModelImportSource;
    scene?: unknown;
    runtime?: ShadoModelManifestEntry['runtime'];
    artifacts?: Omit<ShadoModelArtifactMap, 'model'>;
};
type ShadoVatSelection = 'auto' | 'float16' | 'float32' | false;
type ShadoShaderSelection = false | true | 'glsl' | 'wgsl' | Array<'glsl' | 'wgsl'>;
type ShadoDeserializeRequest = {
    manifest?: ShadoModelManifestDocument;
    manifestUrl?: string;
    modelName?: string;
    model?: ShadoModelManifestEntry;
    modelUrl?: string;
    baseUrl?: string;
};
type ShadoDeserializeOptions = {
    animation?: boolean;
    vat?: ShadoVatSelection;
    reducers?: boolean;
    shaders?: ShadoShaderSelection;
    gpu?: {
        textureHalfFloat?: boolean;
    };
    fetch?: typeof fetch;
};
type ShadoDeserializedModel = {
    manifest?: ShadoModelManifestDocument;
    manifestModel?: ShadoModelManifestEntry;
    model?: ShadoPackedModel;
    modelUrl?: string;
    vat?: SerializedDQVAT;
    vatVariant?: 'float16' | 'float32';
    vatUrl?: string;
    wasm?: ArrayBuffer;
    wasmUrl?: string;
    wgsl?: string;
    wgslUrl?: string;
    glsl?: string;
    glslUrl?: string;
    artifacts: {
        model?: string;
        vat16?: string;
        vat32?: string;
        asm?: string;
        wgsl?: string;
        glsl?: string;
    };
};
declare function deserializeShadoModel(request: ShadoDeserializeRequest, options?: ShadoDeserializeOptions): Promise<ShadoDeserializedModel>;
declare function fetchShadoJson<T>(url: string, options?: {
    fetch?: typeof fetch;
}): Promise<T>;
declare function fetchShadoText(url: string, options?: {
    fetch?: typeof fetch;
}): Promise<string>;
declare function fetchShadoBytes(url: string, options?: {
    fetch?: typeof fetch;
}): Promise<ArrayBuffer>;
declare function resolveShadoArtifactUrl(ref: string, baseUrl?: string): string;
declare function shadoDirectoryUrl(url: string): string;
declare function getBabylonSceneDataUrl(model: ShadoPackedModel): string | undefined;

export { type ShadoDeserializeOptions, type ShadoDeserializeRequest, type ShadoDeserializedModel, type ShadoModelArtifactMap, type ShadoModelImportSource, type ShadoModelManifestDocument, type ShadoModelManifestEntry, type ShadoPackedModel, type ShadoShaderSelection, type ShadoVatSelection, deserializeShadoModel, fetchShadoBytes, fetchShadoJson, fetchShadoText, getBabylonSceneDataUrl, resolveShadoArtifactUrl, shadoDirectoryUrl };
