import type { Selector } from "@reduxjs/toolkit";
import type Schema from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/metadata/Schema";
import type { DatabaseId, Group, GroupsPermissions, TableId } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-types/api";
import type { State } from "@metabase/embedding-sdk-react/dist/frontend/src/metabase-types/store";
import type { DataRouteParams, EntityId, PermissionSectionConfig, RawGroupRouteParams } from "../../types";
import type { EditorBreadcrumb } from "./breadcrumbs";
export declare const getIsLoadingDatabaseTables: (state: State, { params }: {
    params: Pick<RawGroupRouteParams, "databaseId">;
}) => any;
export declare const getLoadingDatabaseTablesError: (state: State, { params }: {
    params: Pick<RawGroupRouteParams, "databaseId">;
}) => any;
type RouteParamsSelectorParameters = {
    params: DataRouteParams;
};
export declare const getDataPermissions: (state: State) => GroupsPermissions;
type EntityWithPermissions = {
    id: string | number;
    name: string;
    entityId: EntityId;
    canSelect?: boolean;
    permissions: PermissionSectionConfig[];
};
export declare const getDatabasesPermissionEditor: ((state: State, props?: ({
    includeHiddenTables?: boolean | undefined;
} & {
    params: RawGroupRouteParams;
} & {
    params: RawGroupRouteParams;
} & {
    params: Pick<RawGroupRouteParams, "databaseId">;
}) | undefined) => {
    title: string;
    breadcrumbs: EditorBreadcrumb[] | null;
    description: string | null;
    filterPlaceholder: string;
    columns: any[];
    entities: EntityWithPermissions[];
    hasLegacyNoSelfServiceValueInPermissionGraph: boolean;
} | null) & {
    clearCache: () => void;
    resultsCount: () => number;
    resetResultsCount: () => void;
} & {
    resultFunc: (resultFuncArgs_0: import("@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/metadata/Metadata").default, resultFuncArgs_1: {
        groupId: number | undefined;
        databaseId: number | undefined;
        schemaName: string | undefined;
    }, resultFuncArgs_2: GroupsPermissions, resultFuncArgs_3: GroupsPermissions, resultFuncArgs_4: any, resultFuncArgs_5: any, resultFuncArgs_6: any) => {
        title: string;
        breadcrumbs: EditorBreadcrumb[] | null;
        description: string | null;
        filterPlaceholder: string;
        columns: any[];
        entities: EntityWithPermissions[];
        hasLegacyNoSelfServiceValueInPermissionGraph: boolean;
    } | null;
    memoizedResultFunc: ((resultFuncArgs_0: import("@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/metadata/Metadata").default, resultFuncArgs_1: {
        groupId: number | undefined;
        databaseId: number | undefined;
        schemaName: string | undefined;
    }, resultFuncArgs_2: GroupsPermissions, resultFuncArgs_3: GroupsPermissions, resultFuncArgs_4: any, resultFuncArgs_5: any, resultFuncArgs_6: any) => {
        title: string;
        breadcrumbs: EditorBreadcrumb[] | null;
        description: string | null;
        filterPlaceholder: string;
        columns: any[];
        entities: EntityWithPermissions[];
        hasLegacyNoSelfServiceValueInPermissionGraph: boolean;
    } | null) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    };
    lastResult: () => {
        title: string;
        breadcrumbs: EditorBreadcrumb[] | null;
        description: string | null;
        filterPlaceholder: string;
        columns: any[];
        entities: EntityWithPermissions[];
        hasLegacyNoSelfServiceValueInPermissionGraph: boolean;
    } | null;
    dependencies: [(state: State, props?: {
        includeHiddenTables?: boolean | undefined;
    } | undefined) => import("@metabase/embedding-sdk-react/dist/frontend/src/metabase-lib/v1/metadata/Metadata").default, (_state: State, props: {
        params: RawGroupRouteParams;
    }) => {
        groupId: number | undefined;
        databaseId: number | undefined;
        schemaName: string | undefined;
    }, (state: State) => GroupsPermissions, (state: State) => GroupsPermissions, (state: State, props: {
        params: RawGroupRouteParams;
    }) => any, any, (state: State, { params }: {
        params: Pick<RawGroupRouteParams, "databaseId">;
    }) => any];
    recomputations: () => number;
    resetRecomputations: () => void;
    dependencyRecomputations: () => number;
    resetDependencyRecomputations: () => void;
} & {
    argsMemoize: typeof import("reselect").weakMapMemoize;
    memoize: typeof import("reselect").weakMapMemoize;
};
type DataPermissionEditorEntity = {
    id: Group["id"];
    name: Group["name"];
    hint: string | null;
    entityId: {
        databaseId?: DatabaseId;
        schemaName?: Schema["name"];
        tableId?: TableId;
    };
    permissions?: PermissionSectionConfig[];
};
type DataPermissionEditorProps = {
    title: string;
    filterPlaceholder: string;
    breadcrumbs: EditorBreadcrumb[] | null;
    columns: {
        name: string;
    }[];
    entities: DataPermissionEditorEntity[];
};
type GetGroupsDataPermissionEditorSelectorParameters = RouteParamsSelectorParameters & {
    includeHiddenTables?: boolean;
};
type GetGroupsDataPermissionEditorSelector = Selector<State, DataPermissionEditorProps | null, GetGroupsDataPermissionEditorSelectorParameters[]>;
export declare const getGroupsDataPermissionEditor: GetGroupsDataPermissionEditorSelector;
export {};
