import { type WebSocketClientInterface } from '../../api';
import { type RequestExtras } from '../../api/http';
import { type DataFrame, type DerivedVariable, type FilterQuery, type GlobalTaskContext, type Pagination, type ServerVariable } from '../../types';
import { type DerivedResult } from './internal';
export interface DataResponse {
    data: DataFrame | null;
    count: number;
    schema: DataFrameSchema | null;
}
type FieldType = {
    name: string | string[];
    type: 'integer' | 'number' | 'boolean' | 'datetime' | 'duration' | 'any' | 'str';
};
export type DataFrameSchema = {
    fields: FieldType[];
    primaryKey: string[];
};
export declare function isDataResponse(response: any): response is DataResponse;
export interface ColumnTypeHint {
    type?: 'number' | 'string' | 'datetime' | 'datetime64[ns]' | 'datetime64[us]' | 'datetime64[ms]' | 'datetime64[s]';
    filter?: 'text' | 'categorical' | 'numeric' | 'datetime';
}
export type DataFetcher = (filters: FilterQuery | null, pagination: Pagination | null, columnHints?: Record<string, ColumnTypeHint>) => Promise<DataResponse>;
export declare function fetchTabularServerVariable({ variable, seqNumber, wsClient, extras, filters, pagination, }: {
    variable: ServerVariable;
    seqNumber: number;
    wsClient: WebSocketClientInterface;
    extras: RequestExtras;
    filters?: FilterQuery | null;
    pagination?: Pagination | null;
}): Promise<DataResponse>;
export declare function useFetchTabularServerVariable(variable: ServerVariable, seqNumber: number, wsClient: WebSocketClientInterface, extras: RequestExtras): DataFetcher;
export declare function useFetchTabularDerivedVariable(variable: DerivedVariable, dvResult: DerivedResult, wsClient: WebSocketClientInterface, taskContext: GlobalTaskContext, extras: RequestExtras): DataFetcher;
export {};
//# sourceMappingURL=tabular-variable.d.ts.map