import './index.less';
import type { ColumnType as TableColumnType } from 'rc-table/lib/interface';
import React from 'react';
import { type DripTableExtraOptions, type DripTableProps, type DripTableRecordTypeBase, type DripTableRecordTypeWithSubtable, type DripTableTableInformation, type ExtractDripTableExtraOption } from "../../types";
import { type SandboxFunctionPreprocess } from "../../utils/sandbox";
import { type DripTableBuiltInColumnSchema } from "../../components/cell-components";
import { type TableLayoutComponentProps } from '../types';
import { type DripTableColumnRenderOptions } from './types';
interface RcTableRecordType<RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, 'SubtableDataSourceKey'>>, ExtraOptions extends Partial<DripTableExtraOptions> = never> {
    type: 'header' | 'body' | 'footer';
    key: string;
    index: number;
    record: RecordType;
}
/**
 * 根据列 Schema，生成表格单元格渲染函数
 * @param tableInfo 表格信息
 * @param columnSchema 表格列 Schema
 * @param extraProps 一些额外的参数
 * @returns 表格单元格渲染函数
 */
export declare const columnRenderGenerator: <RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, "SubtableDataSourceKey">>, ExtraOptions extends Partial<DripTableExtraOptions> = never>(tableInfo: DripTableTableInformation<RecordType, ExtraOptions>, columnSchema: ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema"> | DripTableBuiltInColumnSchema<ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema">>, extraProps: Pick<DripTableProps<RecordType, ExtraOptions>, "components" | "defaultComponentLib" | "icons" | "ext" | "onDataSourceChange" | "onEvent"> & {
    unknownComponent?: React.ReactNode;
    preview?: boolean | {
        columnRenderer?: ((columnSchema: ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema">, columnElement: JSX.Element) => JSX.Element) | undefined;
    } | undefined;
    createEvaluator: (script: string, contextKeys?: string[]) => Function | undefined;
    evaluate: import("../../utils/sandbox").SandboxEvaluate;
    safeEvaluate: import("../../utils/sandbox").SandboxSafeEvaluate;
    finalizeString: import("../../components/cell-components/utils").FinalizeString;
    schemaFunctionPreprocessor: SandboxFunctionPreprocess | undefined;
}) => (value: any, record: RcTableRecordType<RecordType, never>, index: number) => React.ReactNode | import("rc-table/lib/interface").RenderedCell<RcTableRecordType<RecordType, never>>;
/**
 * 根据列 Schema，生成表格列配置
 * @param tableInfo 表格信息
 * @param columnSchema 表格列 Schema
 * @param extraProps 一些额外的参数
 * @returns 表格列配置
 */
export declare const columnGenerator: <RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, "SubtableDataSourceKey">>, ExtraOptions extends Partial<DripTableExtraOptions> = never>(tableInfo: DripTableTableInformation<RecordType, ExtraOptions>, columnSchema: ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema"> | DripTableBuiltInColumnSchema<ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema">>, extraProps: Pick<DripTableProps<RecordType, ExtraOptions>, "components" | "defaultComponentLib" | "icons" | "ext" | "onDataSourceChange" | "onEvent"> & {
    unknownComponent?: React.ReactNode;
    preview?: boolean | {
        columnRenderer?: ((columnSchema: ExtractDripTableExtraOption<ExtraOptions, "CustomColumnSchema">, columnElement: JSX.Element) => JSX.Element) | undefined;
    } | undefined;
    createEvaluator: (script: string, contextKeys?: string[]) => Function | undefined;
    evaluate: import("../../utils/sandbox").SandboxEvaluate;
    safeEvaluate: import("../../utils/sandbox").SandboxSafeEvaluate;
    finalizeString: import("../../components/cell-components/utils").FinalizeString;
    schemaFunctionPreprocessor: SandboxFunctionPreprocess | undefined;
}) => TableColumnType<RcTableRecordType<RecordType, never>>;
declare function TableLayout<RecordType extends DripTableRecordTypeWithSubtable<DripTableRecordTypeBase, ExtractDripTableExtraOption<ExtraOptions, 'SubtableDataSourceKey'>>, ExtraOptions extends Partial<DripTableExtraOptions> = never>(props: TableLayoutComponentProps): JSX.Element;
export default TableLayout;
