import { Signal, WritableSignal } from '@angular/core';
import type { BaseSyncModel, ConnectionStatus, HybridSyncProviderOptions, PresenceInfo } from '../../../../core/src/index';
export interface SyncSignalOptions {
    room?: string;
    initialValue?: unknown;
    debug?: boolean;
    webrtc?: Partial<HybridSyncProviderOptions['webrtc']>;
    websocket?: Partial<HybridSyncProviderOptions['websocket']>;
    awareness?: Partial<HybridSyncProviderOptions['awareness']>;
}
export interface SyncSignalResult<T, M extends BaseSyncModel<T>> {
    (): T;
    set: (value: T) => void;
    update: (updater: (value: T) => T) => void;
    model: M;
    connectionStatus: Signal<ConnectionStatus>;
    activeUsers: Signal<number>;
    presence: Signal<PresenceInfo>;
    isConnected: Signal<boolean>;
    destroy: () => void;
}
export declare function createSyncSignal<T, M extends BaseSyncModel<T>>(ModelClass: new (config?: unknown) => M, options?: SyncSignalOptions): SyncSignalResult<T, M> & WritableSignal<T>;
export declare function createReadonlySyncSignal<T, M extends BaseSyncModel<T>>(model: M): Signal<T>;
