export { ShadoDeserializeOptions, ShadoDeserializeRequest, ShadoDeserializedModel, ShadoModelArtifactMap, ShadoModelImportSource, ShadoModelManifestDocument, ShadoModelManifestEntry, ShadoPackedModel, ShadoShaderSelection, ShadoVatSelection, deserializeShadoModel, fetchShadoBytes, fetchShadoJson, fetchShadoText, getBabylonSceneDataUrl, resolveShadoArtifactUrl, shadoDirectoryUrl } from './runtime.cjs';
import { D as DQBuildOpts } from '../VATBuilder-DkNitwpU.cjs';
import { I as InitializeConfig } from '../types-oCidOW3T.cjs';
import '@babylonjs/core';

type ShadoModelImportConfig = {
    kind?: 'asset-container';
    url: string;
} | {
    kind: 'scene-loader';
    rootUrl: string;
    fileName: string;
    meshNames?: string[];
};
type ShadoModelPackConfig = {
    name: string;
    outFile: string;
    import: ShadoModelImportConfig;
    meshName?: string;
    skeletonName?: string;
    includeAnimation?: boolean;
    serializeScene?: boolean;
    vat?: {
        variants?: Array<'float16' | 'float32'>;
        options?: DQBuildOpts;
    };
    artifacts?: {
        asm?: string;
        wgsl?: string;
        glsl?: string;
    };
    runtime?: {
        merge?: boolean;
        disposeOriginalMaterial?: boolean;
        replaceMaterial?: boolean;
    };
};
type ShadoModelManifestConfig = {
    outFile: string;
    models: Array<Pick<ShadoModelPackConfig, 'name' | 'import' | 'runtime' | 'vat' | 'includeAnimation'> & {
        artifact?: string;
        vat16?: string;
        vat32?: string;
        asm?: string;
        wgsl?: string;
        glsl?: string;
    }>;
};
type ShadoModelPackResult = {
    name: string;
    outFile: string;
    files: string[];
    vatVariants: string[];
    meshCount: number;
};
type SerializedShadoModel = {
    kind: 'shado.model';
    version: 1;
    name: string;
    source: ShadoModelImportConfig;
    runtime?: ShadoModelPackConfig['runtime'];
    meshes: Array<{
        name: string;
        id: string;
        vertices: number;
        indices: number;
        skeleton?: string;
    }>;
    skeletons: Array<{
        name: string;
        id: string;
        bones: number;
    }>;
    scene?: unknown;
    artifacts: {
        vat16?: string;
        vat32?: string;
        asm?: string;
        wgsl?: string;
        glsl?: string;
    };
};
declare function packShadoModel(config: ShadoModelPackConfig): Promise<ShadoModelPackResult>;
declare function writeShadoModelManifest(config: ShadoModelManifestConfig): Promise<string>;

type ModuleExportRef = {
    module: string;
    export?: string;
};
type WrapperSchemaConfig = ModuleExportRef & {
    initialize?: false | (Omit<InitializeConfig, 'extra'> & {
        extra?: ModuleExportRef | unknown;
    });
};
type WrapperPreprocessConfig = {
    name?: string;
    outDir: string;
    schemas: WrapperSchemaConfig[];
    emit?: Array<'assemblyscript' | 'glsl' | 'wgsl' | 'json'>;
    gzip?: boolean | Array<'assemblyscript' | 'glsl' | 'wgsl' | 'json'>;
};
type WrapperPreprocessResult = {
    name: string;
    outDir: string;
    files: string[];
    schemas: Array<{
        name: string;
        headerFloatCount: number;
    }>;
};
declare function preprocessShadoWrappers(config: WrapperPreprocessConfig, options?: {
    configDir?: string;
    only?: 'assemblyscript' | 'gpu' | 'all';
}): Promise<WrapperPreprocessResult>;

export { type ModuleExportRef, type SerializedShadoModel, type ShadoModelImportConfig, type ShadoModelManifestConfig, type ShadoModelPackConfig, type ShadoModelPackResult, type WrapperPreprocessConfig, type WrapperPreprocessResult, type WrapperSchemaConfig, packShadoModel, preprocessShadoWrappers, writeShadoModelManifest };
