import { type MaybeRefOrGetter } from 'vue'; import { type UseDebouncedSyncRefOptions, type Side } from './use-debounced-sync-ref.js'; export type SyncObject = Record; export type KeyOf = keyof S; export type KeyOfSide = S extends 'left' ? KeyOf : KeyOf; export type Getter = (obj: S, key: KeyOf) => R; export type Setter = (obj: S, key: KeyOf, value: unknown) => void; export type ComputedReadWriteOptions = { getter?: Getter; setter?: Setter; }; export type UseReactiveObjectsSyncOptions = { left: MaybeRefOrGetter; right: MaybeRefOrGetter; keySource?: Side | (KeyOf | KeyOf)[]; onChange?: (side: S, key: KeyOfSide, value: unknown) => void; onWillChange?: (side: S, key: KeyOfSide, value: unknown) => void; leftOptions?: ComputedReadWriteOptions; rightOptions?: ComputedReadWriteOptions; } & Omit; type UseReactiveObjectsSyncReturn = { stop(): void; }; /** * Provides two-way binding between a pair of reactive objects. */ export declare function useReactiveObjectsSync(options: UseReactiveObjectsSyncOptions): UseReactiveObjectsSyncReturn; export {};