import type { DataRequest, DataResponse, DataResponsePinned, QueryFnParams } from "./types"; import { type Piece } from "@1771technologies/lytenyte-core/internal"; import { type RowGroup, type RowLeaf, type RowNode, type RowSelectionState, type RowSource } from "@1771technologies/lytenyte-shared"; export interface RowSourceServer extends RowSource { readonly isLoading: Piece; readonly loadingError: Piece; readonly requestsForView: Piece; readonly seenRequests: Set; readonly retry: () => void; readonly requestForGroup: (row: RowGroup | number) => DataRequest | null; readonly requestForNextSlice: (currentRequest: DataRequest) => DataRequest | null; readonly refresh: (onSuccess?: () => void, onError?: (e: unknown) => void) => void; readonly pushResponses: (req: (DataResponse | DataResponsePinned)[]) => void; readonly pushRequests: (req: DataRequest[], onSuccess?: () => void, onError?: (e: unknown) => void) => void; readonly reset: () => void; readonly rowAdd: (rows: RowLeaf[], placement?: "start" | "end") => void; readonly rowDelete: (rows: RowNode[]) => void; readonly rowUpdate: (rows: Map, T>) => void; } export interface UseServerDataSourceParams { readonly queryFn: (params: QueryFnParams) => Promise<(DataResponse | DataResponsePinned)[]>; readonly queryKey: K; readonly blockSize?: number; readonly rowGroupExpansions?: { [rowId: string]: boolean | undefined; }; readonly rowGroupDefaultExpansion?: boolean | number; readonly onRowGroupExpansionChange?: (state: Record) => void; readonly rowsIsolatedSelection?: boolean; readonly rowSelection?: RowSelectionState; readonly rowSelectionIdUniverseAdditions?: { readonly id: string; readonly root: boolean; }[]; readonly rowSelectionIdUniverseSubtractions?: Set; readonly onRowSelectionChange?: (state: RowSelectionState) => void; readonly rowSelectKey?: unknown[]; readonly hasRowBranches?: "infer" | boolean; readonly rowUpdateOptimistically?: boolean; readonly onRowDataChange?: (params: { readonly rows: Map, T>; }) => Promise; readonly onRowsDeleted?: (params: { readonly rows: RowNode[]; }) => Promise; readonly onRowsAdded?: (params: { readonly rows: RowLeaf[]; placement: "start" | "end"; }) => Promise; } export declare function useServerDataSource(props: UseServerDataSourceParams): RowSourceServer;