import type { CardId, DatabaseId, FieldId, FieldReference, SchemaId, SegmentId, SettingKey, Settings, TableId } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-types/api";
import type Question from "../Question";
import type Database from "./Database";
import type Field from "./Field";
import type Schema from "./Schema";
import type Segment from "./Segment";
import type Table from "./Table";
interface MetadataOpts {
    databases?: Record<string, Database>;
    schemas?: Record<string, Schema>;
    tables?: Record<string, Table>;
    fields?: Record<string, Field>;
    segments?: Record<string, Segment>;
    questions?: Record<string, Question>;
    settings?: Settings;
}
/**
 * @deprecated The class shouldn't be used for anything but to create a MetadataProvider instance from MBQL lib.
 *
 *   For finding a database/table/field/card by id, use the corresponding RTK query endpoints.
 *   Do not rely on data being implicitly loaded in some other place.
 */
declare class Metadata {
    databases: Record<string, Database>;
    schemas: Record<string, Schema>;
    tables: Record<string, Table>;
    fields: Record<string, Field>;
    segments: Record<string, Segment>;
    questions: Record<string, Question>;
    settings?: Settings;
    constructor(opts?: MetadataOpts);
    /**
     * @deprecated load data via RTK Query - useListDatabasesQuery
     */
    databasesList({ savedQuestions }?: {
        savedQuestions?: boolean | undefined;
    }): Database[];
    /**
     * @deprecated load data via RTK Query - useListDatabaseSchemaTablesQuery
     */
    tablesList(): Table[];
    /**
     * @deprecated load data via RTK Query - useListFieldsQuery
     */
    fieldsList(): Field[];
    /**
     * @deprecated load data via RTK Query - useListSegmentsQuery
     */
    segmentsList(): Segment[];
    /**
     * @deprecated load data via RTK Query - useGetSegmentQuery
     */
    segment(segmentId: SegmentId | undefined | null): Segment | null;
    /**
     * @deprecated load data via RTK Query - useGetDatabaseQuery
     */
    database(databaseId: DatabaseId | undefined | null): Database | null;
    /**
     * @deprecated load data via RTK Query - useListDatabasesQuery({ saved: true })
     */
    savedQuestionsDatabase(): Database;
    /**
     * @deprecated load data via RTK Query - useListSchemasQuery or useListDatabaseSchemaTablesQuery
     */
    schema(schemaId: SchemaId | undefined | null): Schema | null;
    /**
     * @deprecated load data via RTK Query - useGetTableQuery or useGetTableQueryMetadataQuery
     */
    table(tableId: TableId | undefined | null): Table | null;
    /**
     * @deprecated load data via RTK Query - useGetFieldQuery
     */
    field(fieldId: FieldId | FieldReference | string | undefined | null, tableId?: TableId | undefined | null): Field | null;
    /**
     * @deprecated load data via RTK Query - useGetCardQuery
     */
    question(cardId: CardId | undefined | null): Question | null;
    setting<T extends SettingKey>(key: T): Settings[T] | null;
}
export default Metadata;
