import { ComputedRef, Ref } from 'vue';
import { BaseSyncModel, ModelConfig } from '../../../../core/src';
export interface UseSyncModelStateOptions {
    room?: string;
    websocket?: {
        url: string;
    };
    webrtc?: {
        enabled?: boolean;
        signaling?: string[];
    };
    debug?: boolean;
    persist?: boolean;
}
export interface UseSyncModelStateResult<T, M extends BaseSyncModel<T>> {
    model: M;
    value: Ref<T>;
    isConnected: ComputedRef<boolean>;
    connectionStatus: Ref<'connected' | 'connecting' | 'offline'>;
    activeUsers: Ref<number>;
}
type InferModelType<M> = M extends BaseSyncModel<infer T> ? T : never;
export declare function useSyncModelState<M extends BaseSyncModel<any>>(ModelClass: new (config?: ModelConfig) => M, options?: UseSyncModelStateOptions): UseSyncModelStateResult<InferModelType<M>, M>;
export {};
