'use strict'; import type { SerializableRef, SynchronizableRef } from '../memory/types'; import type { WorkletRuntime } from '../types'; /** Type of `__workletsModuleProxy` injected with JSI. */ export interface WorkletsModuleProxy { createSerializable( value: TValue, shouldPersistRemote: boolean, nativeStateSource?: object ): SerializableRef; createSerializableImport( source: string, imported: string ): SerializableRef; createSerializableString(str: string): SerializableRef; createSerializableNumber(num: number): SerializableRef; createSerializableBoolean(bool: boolean): SerializableRef; createSerializableBigInt(bigInt: bigint): SerializableRef; createSerializableUndefined(): SerializableRef; createSerializableNull(): SerializableRef; createSerializableTurboModuleLike< TProps extends object, TProto extends object, >( props: TProps, proto: TProto ): SerializableRef; createSerializableObject( obj: T, shouldRetainRemote: boolean, nativeStateSource?: object ): SerializableRef; createSerializableHostObject(obj: T): SerializableRef; createSerializableArray( array: unknown[], shouldRetainRemote: boolean ): SerializableRef; createSerializableMap( keys: TKey[], values: TValue[] ): SerializableRef>; createSerializableSet( values: TValues[] ): SerializableRef>; createSerializableInitializer(obj: object): SerializableRef; createSerializableFunction( func: (...args: TArgs) => TReturn ): SerializableRef; createSerializableWorklet( worklet: object, shouldPersistRemote: boolean ): SerializableRef; createCustomSerializable( data: SerializableRef, typeId: number ): SerializableRef; registerCustomSerializable( determine: SerializableRef, pack: SerializableRef, unpack: SerializableRef, typeId: number ): void; createShareable( hostRuntimeId: number, initial: SerializableRef, initSynchronously: boolean, decorateHost: SerializableRef, decorateGuest: SerializableRef ): SerializableRef; scheduleOnUI(serializable: SerializableRef): void; runOnUISync(serializable: SerializableRef): TReturn; createWorkletRuntime( name: string, initializer: SerializableRef<() => void>, useDefaultQueue: boolean, customQueue: object | undefined, enableEventLoop: boolean ): WorkletRuntime; scheduleOnRuntime( workletRuntime: WorkletRuntime, worklet: SerializableRef ): void; scheduleOnRuntimeWithId( runtimeId: number, worklet: SerializableRef ): void; runOnRuntimeSync( workletRuntime: WorkletRuntime, worklet: SerializableRef ): TReturn; runOnRuntimeSyncWithId( runtimeId: number, worklet: SerializableRef ): TReturn; reportFatalErrorOnJS( message: string, stack: string, name: string, jsEngine: string ): void; createSynchronizable(value: TValue): SynchronizableRef; synchronizableGetDirty( synchronizableRef: SynchronizableRef ): TValue; synchronizableGetBlocking( synchronizableRef: SynchronizableRef ): TValue; synchronizableSetBlocking( synchronizableRef: SynchronizableRef, value: SerializableRef ): void; synchronizableLock( synchronizableRef: SynchronizableRef ): void; synchronizableUnlock( synchronizableRef: SynchronizableRef ): void; getStaticFeatureFlag(name: string): boolean; setDynamicFeatureFlag(name: string, value: boolean): void; getUIRuntimeHolder(): object; getUISchedulerHolder(): object; } export type IWorkletsModule = WorkletsModuleProxy;