import type { BaseSyncModel, ConnectionStatus, PresenceInfo, SimpleSyncProviderOptions } from '../../../../core/src';
export interface SyncOptions extends Partial<SimpleSyncProviderOptions> {
    room?: string;
    initialValue?: unknown;
    debug?: boolean;
}
export interface SyncMeta<M extends BaseSyncModel> {
    model: M;
    connectionStatus: ConnectionStatus;
    activeUsers: number;
    presence: PresenceInfo;
    isConnected: boolean;
}
export declare function useSyncModel<T = unknown, M extends BaseSyncModel<T> = BaseSyncModel<T>>(ModelClass: new (config?: unknown) => M, options?: SyncOptions): [value: T, setValue: (v: T) => void, meta: SyncMeta<M>];
export declare function useSyncModelInstance<T, M extends BaseSyncModel<T>>(model: M): [value: T, setValue: (v: T) => void, meta: SyncMeta<M>];
export declare function useReadonlySyncModel<T, M extends BaseSyncModel<T>>(model: M): T;
