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