import React from 'react';
import type { DefaultizeProps } from '../lib/utils';
interface StatePropsObject<P, S> {
    props?: Partial<P>;
    state?: Partial<S>;
}
export type StatePropsCombinations<P, S> = Array<StatePropsObject<P, S>>;
export type StateType<C> = C extends React.Component<any, infer S> | React.ComponentClass<any, infer S> ? S : never;
export interface ComponentTableProps<C, P, S> {
    rows?: StatePropsCombinations<P, S>;
    cols?: StatePropsCombinations<P, S>;
    presetProps?: DefaultizeProps<C, P>;
    presetState?: Partial<S>;
    Component: C;
}
type DefaultProps<C, P, S> = Required<Pick<ComponentTableProps<C, P, S>, 'presetProps' | 'presetState'>>;
export declare class ComponentTable<T extends React.Component<any, any, any>, C extends React.ComponentType<any>, P extends React.ComponentProps<C>> extends React.Component<ComponentTableProps<C extends React.ComponentClass<P, any> ? React.ClassType<P, T, C> : C, P, StateType<C>>> {
    static defaultProps: DefaultProps<unknown, Record<string | number | symbol, unknown>, unknown>;
    private getProps;
    render(): React.JSX.Element;
}
export {};
