import React, { ReactNode } from 'react';
import { KSync } from '../core.js';
export declare function useKSync(config?: {
    room?: string;
    serverUrl?: string;
    userId?: string;
    debug?: boolean;
}): {
    ksync: KSync;
    send: (type: string, data: any) => Promise<void>;
    state: any;
    isConnected: boolean;
    isOnline: boolean;
};
export declare function useKSyncEvent<T = any>(ksync: KSync, eventType: string, dependencies?: any[]): T[];
export declare function useKSyncSend(ksync: KSync): {
    send: (eventType: string, data: any) => Promise<void>;
    isSending: boolean;
    error: Error | null;
};
export declare function useKSyncState<T = any>(ksync: KSync, materializerName?: string, dependencies?: any[]): T | undefined;
export declare function useKSyncPresence(ksync: KSync, initialData?: Record<string, any>): {
    presence: {};
    myPresence: Record<string, any>;
    updatePresence: (data: Record<string, any>) => void;
};
export declare function useKSyncStream(ksync: KSync, streamId?: string): {
    content: string;
    isComplete: boolean;
    isStreaming: boolean;
    startStream: (options?: any) => Promise<void>;
    sendChunk: (id: string, chunk: string) => Promise<void>;
};
export declare function useKSyncOptimistic<T>(ksync: KSync, eventType: string, optimisticUpdater: (currentData: T[], newData: any) => T[]): {
    data: T[];
    pendingCount: number;
    sendOptimistic: (data: any, tempId?: string) => Promise<void>;
};
export declare function useKSyncConnection(ksync: KSync): {
    isConnected: boolean;
    isConnecting: boolean;
    error: Error | null;
    connect: () => Promise<void>;
    disconnect: () => Promise<void>;
};
export declare function KSyncProvider({ ksync, children }: {
    ksync: KSync;
    children: ReactNode;
}): React.FunctionComponentElement<React.ProviderProps<KSync | null>>;
export declare function useKSyncContext(): KSync;
//# sourceMappingURL=index.d.ts.map