import type { NormalizedTable } from "../../../metabase-types/api";
import Question from "../Question";
import type Database from "./Database";
import type Field from "./Field";
import type ForeignKey from "./ForeignKey";
import type Metadata from "./Metadata";
import type Schema from "./Schema";
import type Segment from "./Segment";
interface Table extends Omit<NormalizedTable, "db" | "schema" | "fields" | "fks" | "segments" | "metrics"> {
    db?: Database;
    schema?: Schema;
    fields?: Field[];
    fks?: ForeignKey[];
    segments?: Segment[];
    metrics?: Question[];
    metadata?: Metadata;
}
/**
 * @deprecated use RTK Query endpoints and plain api objects from metabase-types/api
 */
declare class Table {
    private readonly _plainObject;
    constructor(table: NormalizedTable);
    getPlainObject(): NormalizedTable;
    getFields(): Field[];
    isVirtualCard(): boolean;
    hasSchema(): boolean;
    get database(): Database | undefined;
    newQuestion(): Question;
    question(): Question;
    dimensions(): import("../Dimension").FieldDimension[];
    displayName({ includeSchema }?: {
        includeSchema?: boolean;
    }): string;
    /**
     * The singular form of the object type this table represents
     * Currently we try to guess this by singularizing `display_name`, but ideally it would be configurable in metadata
     * See also `field.targetObjectName()`
     */
    objectName(): string;
    dateFields(): Field[];
    aggregationOperators(): any[];
    aggregationOperatorsLookup(): any;
    fieldsLookup(): any;
    get fields_lookup(): any;
    numFields(): number;
    connectedTables(): Table[];
    foreignTables(): Table[];
    clone(): Table;
}
export default Table;
