import React, { type ComponentType, type ReactElement } from 'react'; import { type StyleProp, type ViewStyle } from 'react-native'; export type ThreadedComponent> = ComponentType & { __threadedRuntime: { name: string; }; }; export type ThreadedHeadlessTaskContext = { payload: Payload; runtimeName: ThreadedRuntimeName; taskName: string; }; export type ThreadedHeadlessTask = (context: ThreadedHeadlessTaskContext) => void | Promise; export declare const MAIN_RUNTIME_NAME = "main"; export type CurrentRuntimeInfo = { isMain: boolean; name: string; kind: string | null; }; export declare function getCurrentRuntime(): CurrentRuntimeInfo; export declare function getCurrentRuntimeName(): string; export declare function isMainRuntime(): boolean; export type ThreadedRuntimeName = string; export type ThreadedRuntimePrewarmOptions = { kind?: string; useMainNativeModules?: boolean; }; export type ThreadedHeadlessTaskOptions = { payload?: Payload; runtimeName?: ThreadedRuntimeName; }; type AnyFunction = (...args: any[]) => any; export type RuntimeFunctionMetadata = { id: string; }; export type RuntimeFunction = TFunction & { __runtimeFunction?: RuntimeFunctionMetadata; runOn(runtimeName: ThreadedRuntimeName, ...args: Parameters): Promise>>; }; export type RuntimeFunctionCallBuilder = { on(runtimeName: ThreadedRuntimeName): (...args: Parameters) => Promise>>; }; export type RuntimeFunctionFactory = { (fn: TFunction): RuntimeFunction; withId(id: string, fn: TFunction): RuntimeFunction; named(id: string, fn: TFunction): RuntimeFunction; }; export type ThreadedProps> = { accessibilityLabel?: string; component: ThreadedComponent; props?: Props; runtimeName?: ThreadedRuntimeName; style?: StyleProp; surfaceKey?: string; testID?: string; }; export type ThreadedScreenProps> = ThreadedProps & { destroyOnUnmount?: boolean; preload?: boolean; }; export type OnRuntimeProps> = { accessibilityLabel?: string; children: ReactElement; name: ThreadedRuntimeName; style?: StyleProp; surfaceKey?: string; testID?: string; }; export type ThreadedReactSurfaceProps> = { componentName: string; initialProps?: Props; runtimeName?: ThreadedRuntimeName; surfaceKey?: string; style?: StyleProp; testID?: string; accessibilityLabel?: string; }; export declare function registerThreadedComponent(name: string, component: ComponentType): void; export declare function registerLazyThreadedComponent(name: string, loadComponent: () => ComponentType): void; export declare function registerThreadedHeadlessTask(name: string, task: ThreadedHeadlessTask): void; export declare function registerRuntimeFunction(id: string, loadFunction: () => RuntimeFunction): void; export declare const runtimeFunction: RuntimeFunctionFactory; export declare function call(fn: RuntimeFunction): RuntimeFunctionCallBuilder; export declare function usingRuntime(runtimeName: ThreadedRuntimeName): { run(_callback: () => TValue): Promise>; }; export declare function threadedComponent(name: string, component: ComponentType): ThreadedComponent; export declare function Threaded({ accessibilityLabel, component, props, runtimeName, style, surfaceKey, testID, }: ThreadedProps): React.JSX.Element; export declare function OnRuntime({ accessibilityLabel, children, name, style, surfaceKey, testID, }: OnRuntimeProps): React.JSX.Element | null; export declare function ThreadedScreen({ accessibilityLabel, component, destroyOnUnmount, preload, props, runtimeName, style, surfaceKey, testID, }: ThreadedScreenProps): React.JSX.Element; export declare function ThreadedReactSurface({ accessibilityLabel, componentName, initialProps, runtimeName, style, surfaceKey, testID, }: ThreadedReactSurfaceProps): React.JSX.Element; export declare function ThreadedRuntimeHost({ componentName, initialPropsJson, runtimeName, }: { componentName?: string; initialPropsJson?: string; runtimeName?: string; }): ReactElement | null; export declare const ThreadedRuntime: { defaultRuntimeName: string; defaultBusinessRuntimeName: string; preload(runtimeName?: ThreadedRuntimeName, options?: ThreadedRuntimePrewarmOptions): Promise; prewarm(runtimeName?: ThreadedRuntimeName, options?: ThreadedRuntimePrewarmOptions): Promise; prewarmBusinessRuntime(runtimeName?: ThreadedRuntimeName): Promise; runHeadlessTask(taskName: string, options?: ThreadedHeadlessTaskOptions): Promise; run(runtimeName: ThreadedRuntimeName, fn: RuntimeFunction, ...args: Parameters): Promise>>; call(runtimeName: ThreadedRuntimeName, fn: RuntimeFunction, ...args: Parameters): Promise>>; runtime(runtimeName: ThreadedRuntimeName): { run(fn: RuntimeFunction, ...args: Parameters): Promise>>; }; destroy(runtimeName?: ThreadedRuntimeName): Promise; destroyAll(): Promise; getRuntimeNames(): Promise; }; export {}; //# sourceMappingURL=ThreadedRuntime.d.ts.map