import { GridModel } from '@/components/DataGrid/DataGridTypes';
import { DataGridWebSocket } from './DataGridWebSocket';
interface WebSocketState {
    model: GridModel | null;
    /**
     * True if the WebSocket has finished the initial sync and can process CRDT updates.
     * Corresponds to the `GRID_READY` action.
     */
    hasCompletedInitialSync: boolean;
    isConnected: boolean;
    isConnecting: boolean;
    connectionParams: {
        replicaId: number;
        sessionId: string;
    } | null;
    websocketInstance: DataGridWebSocket | null;
    connectionAttemptId: number | null;
    connectionError: unknown;
}
export declare const initialWebSocketState: WebSocketState;
/**
 * Custom hook to manage a DataGrid WebSocket connection.
 * Handles:
 *   - Fetching presigned URLs via a mutation hook
 *   - Instantiating the DataGridWebSocket
 *   - Connection status tracking
 *   - Reconnection on disconnect
 *   - Grid model updates and snapshot tracking
 */
export declare function useDataGridWebSocket(): {
    isConnected: boolean;
    websocketInstance: DataGridWebSocket | null;
    hasCompletedInitialSync: boolean;
    model: import("json-joy").Model<import("json-joy").ObjNode<{
        doc_version: import("json-joy").ConNode<string>;
        columnNames: import("json-joy").VecNode<[import("json-joy").ConNode<string>]>;
        columnOrder: import("json-joy").ArrNode<never>;
        selection: import("json-joy").ObjNode<{
            [x: string]: import("json-joy").ConNode<import("@/components/DataGrid/DataGridTypes").ReplicaSelectionModel>;
        }>;
        rows: import("json-joy").ArrNode<import("json-joy").ObjNode<{
            data: import("json-joy").VecNode<[import("json-joy").ConNode<string>]>;
            metadata: import("json-joy").ObjNode<{
                synapseRow: import("json-joy").ObjNode<{
                    rowId: import("json-joy").ConNode<number>;
                    versionNumber: import("json-joy").ConNode<number>;
                    etag: import("json-joy").ConNode<string>;
                }>;
                rowValidation: import("json-joy").ConNode<import("@sage-bionetworks/synapse-types").ValidationResults | undefined>;
            }>;
        }>>;
    }>> | null;
    modelSnapshot: {
        doc_version: string;
        columnNames: [string];
        columnOrder: never[];
        selection: {
            [x: string]: import("@/components/DataGrid/DataGridTypes").ReplicaSelectionModel;
        };
        rows: {
            data: [string];
            metadata: {
                synapseRow: {
                    rowId: number;
                    versionNumber: number;
                    etag: string;
                };
                rowValidation: import("@sage-bionetworks/synapse-types").ValidationResults | undefined;
            };
        }[];
    } | null;
    connect: (replicaId: number, sessionId: string) => void;
    presignedUrl: string | null;
    errorEstablishingWebsocketConnection: unknown;
    hasSufficientData: boolean;
};
export {};
//# sourceMappingURL=useDataGridWebsocket.d.ts.map