import { ResolvablePromise, WrappedPromise } from '../utils/promise.js';
/**
 * A row where each cell is a promise.
 * The promise must be wrapped with `wrapPromise` so that HighTable can render
 * the state synchronously.
 */
export interface AsyncRow {
    cells: Record<string, WrappedPromise<any>>;
    index: WrappedPromise<number>;
}
export type Cells = Record<string, any>;
/**
 * A row where each cell is a resolved value.
 */
export interface Row {
    cells: Cells;
    index: number;
}
export interface PartialRow {
    index?: number;
    cells: Cells;
}
export interface ResolvableRow {
    cells: Record<string, ResolvablePromise<any>>;
    index: ResolvablePromise<number>;
}
export declare function resolvableRow(header: string[]): ResolvableRow;
/**
 * Helper method to wrap future rows into AsyncRows.
 * Helpful when you want to define a DataFrame with simple async fetching of rows.
 * This function turns future data into a "grid" of wrapped promises.
 */
export declare function asyncRows(rows: Promise<Row[] | AsyncRow[]>, numRows: number, header: string[]): AsyncRow[];
/**
 * Await all promises in an AsyncRow and return resolved row.
 */
export declare function awaitRow(row: AsyncRow): Promise<Row>;
/**
   * Await all promises in list of AsyncRows and return resolved rows.
   */
export declare function awaitRows(rows: AsyncRow[]): Promise<Row[]>;
