/** * HoloScript Builtin Registry * * Maps `runtime @builtin` declarations to JavaScript implementations. * Enables HoloScript to call into native modules (Whisper.cpp, WebGPU, etc.) * * Usage in HoloScript+: * ```holoscript * runtime SpeechRecognizer @builtin { * backend: "whisper.cpp" * } * * runtime PhysicsEngine @builtin { * backend: "gpu_compute" * } * ``` */ export interface BuiltinImplementation { /** Factory function to create the builtin instance */ create: (config: Record) => unknown; /** Cleanup function */ destroy?: (instance: unknown) => void; /** Supported backends */ backends?: string[]; /** Description */ description?: string; } export interface RuntimeDeclaration { /** Name of the runtime module */ name: string; /** Backend identifier */ backend: string; /** Additional configuration */ config: Record; } /** * BuiltinRegistry * * Central registry for native module bindings. * HoloScript runtime queries this registry when encountering @builtin. */ export declare class BuiltinRegistry { private static instance; private implementations; private instances; private constructor(); /** * Get singleton instance */ static getInstance(): BuiltinRegistry; /** * Register a builtin implementation */ register(name: string, implementation: BuiltinImplementation): void; /** * Check if a builtin exists */ has(name: string): boolean; /** * Create an instance of a builtin */ create(declaration: RuntimeDeclaration): unknown; /** * Get list of registered builtins */ list(): Array<{ name: string; description?: string; backends?: string[]; }>; /** * Cleanup all instances */ cleanup(): void; /** * Register default HoloScript builtins */ private registerDefaultBuiltins; } /** * Parse a runtime declaration from HoloScript+ AST */ export declare function parseRuntimeDeclaration(name: string, directives: Array<{ type: string; value: string; }>, config: Record): RuntimeDeclaration; /** * Convenience function to create a builtin from a declaration */ export declare function createBuiltin(declaration: RuntimeDeclaration): Promise; export default BuiltinRegistry; //# sourceMappingURL=BuiltinRegistry.d.ts.map