import { Transaction, YArrayEvent, YMapEvent, YTextEvent } from 'yjs';
import { RvPath } from "../native/native.type";
import { EventType } from "./event-type.enum";
import { StoredRhineVar } from "../var/rhine-var.type";
export type Subscriber<T> = (type: EventType, key: keyof T, value: T[keyof T] extends object ? T[keyof T] | StoredRhineVar<T[keyof T]> : T[keyof T], oldValue: T[keyof T], nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
export type KeySubscriber<T> = (type: EventType, value: T[keyof T] extends object ? T[keyof T] | StoredRhineVar<T[keyof T]> : T[keyof T], oldValue: T[keyof T], nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
export type DeepSubscriber<T> = (type: EventType, path: RvPath, value: any | StoredRhineVar, oldValue: any, nativeEvent: YMapEvent<any> | YArrayEvent<any> | YTextEvent, nativeTransaction: Transaction) => void;
export type SyncedSubscriber = (synced: boolean) => void;
//# sourceMappingURL=subscriber.d.ts.map