import { ComputedRef, Ref } from 'vue';
import type { BaseSyncModel, ConnectionStatus, HybridSyncProviderOptions, PresenceInfo } from '../../../../core/src';
export interface SyncModelSyncOptions extends Partial<HybridSyncProviderOptions> {
    room?: string;
    initialValue?: unknown;
    debug?: boolean;
}
export interface SyncModelSyncComposable<T, M extends BaseSyncModel<T>> {
    value: Ref<T>;
    setValue: (value: T) => void;
    update: (updater: (value: T) => T) => void;
    model: M;
    connectionStatus: Ref<ConnectionStatus>;
    activeUsers: ComputedRef<number>;
    presence: Ref<PresenceInfo>;
    isConnected: ComputedRef<boolean>;
}
export declare function useSyncModelSync<T = unknown, M extends BaseSyncModel<T> = BaseSyncModel<T>>(ModelClass: new (config?: unknown) => M, options?: SyncModelSyncOptions): SyncModelSyncComposable<T, M>;
export declare function useSyncModel<T = unknown, M extends BaseSyncModel<T> = BaseSyncModel<T>>(model: M): SyncModelSyncComposable<T, M>;
export declare function useReadonlySyncModel<T = unknown, M extends BaseSyncModel<T> = BaseSyncModel<T>>(model: M): Ref<T>;
