import type { HybridObject } from 'react-native-nitro-modules' import type { NativeThread } from './NativeThread.nitro' /** * A factory for creating {@linkcode NativeThread}s. * * Typically you would never need this as Camera Outputs * create {@linkcode NativeThread}s. * * You can create {@linkcode NativeThread}s for advanced * asynchronous processing on a Worklet Queue, in which * case VisionCamera prepares the necessary setup * such as installing a Dispatcher to your Worklet * Runtime. */ export interface NativeThreadFactory extends HybridObject<{ ios: 'swift'; android: 'kotlin' }> { /** * Create a new {@linkcode NativeThread}. * * A {@linkcode NativeThread} can be used for Camera operations * such as Frame Processing. It uses platform native dispatching * mechanisms like `DispatchQueue` or `CoroutineContext`. * * You can use the `WorkletQueueFactory` from * react-native-vision-camera-worklets to wrap the * {@linkcode NativeThread} in a `WorkletQueue`, * which allows you to run JS code on the thread. * * @example * Creating a Worklet Runtime using this `NativeThread`: * ```ts * const thread = NativeThreadFactory.createNativeThread('async-processor') * const runtime = createWorkletRuntimeForThread(thread) * ``` */ createNativeThread(name: string): NativeThread }