import { PosIntervalDomain } from '../domains/positive-interval-domain';
import { ProductDomain } from '../domains/product-domain';
import { SetRangeDomain } from '../domains/set-range-domain';
/** The type of the abstract product representing the shape of data frames */
export type AbstractDataFrameShape = {
    colnames: SetRangeDomain<string>;
    cols: PosIntervalDomain;
    rows: PosIntervalDomain;
};
/**
 * The data frame abstract domain as product domain of a column names domain, column count domain, and row count domain.
 */
export declare class DataFrameDomain extends ProductDomain<AbstractDataFrameShape> {
    create(value: AbstractDataFrameShape): this;
    /**
     * The current abstract value of the column names domain.
     */
    get colnames(): AbstractDataFrameShape['colnames'];
    /**
     * The current abstract value of the column count domain.
     */
    get cols(): AbstractDataFrameShape['cols'];
    /**
     * The current abstract value of the row count domain.
     */
    get rows(): AbstractDataFrameShape['rows'];
    static bottom(maxColNames?: number): DataFrameDomain;
    static top(maxColNames?: number): DataFrameDomain;
    protected reduce(value: AbstractDataFrameShape): AbstractDataFrameShape;
}
