import type { ModelConfig } from '../types';
import { BaseSyncModel } from './BaseSyncModel';
export declare class SingletonSyncModel<T = unknown> extends BaseSyncModel<T> {
    private yMap;
    private value;
    private readonly valueKey;
    constructor(config?: ModelConfig & {
        initialValue?: T;
    });
    protected initializeYjsStructure(): void;
    protected setupYjsBinding(): void;
    getValue(): T;
    setValue(value: T): void;
    update(partial: Partial<T>): void;
    clear(): void;
    get hasValue(): boolean;
    transform(transformer: (value: T) => T): void;
    reset(): void;
    private updateValueInternal;
    subscribeToProperty<K extends keyof T>(property: K, callback: (value: T[K] | undefined) => void): () => void;
    getProperty<K extends keyof T>(property: K): T[K] | undefined;
    setProperty<K extends keyof T>(property: K, value: T[K]): void;
    toggle(): void;
    increment(by?: number): void;
    decrement(by?: number): void;
    append(text: string): void;
    prepend(text: string): void;
    equals(other: T): boolean;
    clone(): T;
}
