'use strict'; import { createSerializable } from './serializable'; import { WorkletsModule } from './WorkletsModule'; import type { SerializableRef } from './workletTypes'; export function createSynchronizable( initialValue: TValue ): Synchronizable { const synchronizableRef = WorkletsModule.createSynchronizable( createSerializable(initialValue) ); return globalThis.__synchronizableUnpacker( synchronizableRef ) as unknown as Synchronizable; } export type SynchronizableRef = { __synchronizableRef: true; __nativeStateSynchronizableJSRef: TValue; }; export type Synchronizable = SerializableRef & SynchronizableRef & { __synchronizableRef: true; getDirty(): TValue; getBlocking(): TValue; setBlocking(value: TValue | ((prev: TValue) => TValue)): void; lock(): void; unlock(): void; };