/**
 * Access a generator function from within a component.
 *
 * @example
 * const generator = useGenerator(generatorKey)
 *
 * @remarks
 * The generator is an async function that process and returns data required
 * by your components, such as geometry for a mesh.
 *
 * @example
 *
 * const [geometry, setGeometry] = useState<BufferGeometry | null>(null)
 *
 * useEffect(() => {
 *   if (generator) {
 *     generator(id).then(response => {
 *       if (response) {
 *         const bufferGeometry = unpackBufferGeometry(response)
 *         setGeometry(prev => {
 *           if (prev) prev.dispose()
 *           return bufferGeometry
 *         })
 *       } else {
 *         setGeometry(null)
 *       }
 *     })
 *   }
 * }, [generator, id])
 *
 * if (!geometry) return null
 *
 * return (
 *  <mesh geometry={geometry}>
 *    <meshBasicMaterial />
 *  </mesh>
 * )
 *
 * @see [Generators](/videx-3d/docs/documents/generators.html)
 *
 * @group Hooks
 */
export declare const useGenerator: <T>(generator: string, priority?: number) => ((...args: any[]) => Promise<T>) | (() => Promise<null>);
