import type { Group } from "../../../../../frontend/src/metabase-types/api";
import type { ApplicationPermissionKey, ApplicationPermissionValue, ApplicationPermissions } from "./types/permissions";
import type { ApplicationPermissionsState } from "./types/state";
export declare function getPermissionWarning(value: ApplicationPermissionValue, defaultGroupValue: ApplicationPermissionValue, defaultGroup: Group): string | null;
export declare const canManageSubscriptions: ((state: ApplicationPermissionsState) => boolean) & {
    clearCache: () => void;
    resultsCount: () => number;
    resetResultsCount: () => void;
} & {
    resultFunc: (resultFuncArgs_0: import("./types/user").UserWithApplicationPermissions | null) => boolean;
    memoizedResultFunc: ((resultFuncArgs_0: import("./types/user").UserWithApplicationPermissions | null) => boolean) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    };
    lastResult: () => boolean;
    dependencies: [(state: ApplicationPermissionsState) => import("./types/user").UserWithApplicationPermissions | null];
    recomputations: () => number;
    resetRecomputations: () => void;
    dependencyRecomputations: () => number;
    resetDependencyRecomputations: () => void;
} & {
    argsMemoize: typeof import("reselect").weakMapMemoize;
    memoize: typeof import("reselect").weakMapMemoize;
};
export declare const canAccessSettings: ((state: ApplicationPermissionsState) => boolean) & {
    clearCache: () => void;
    resultsCount: () => number;
    resetResultsCount: () => void;
} & {
    resultFunc: (resultFuncArgs_0: import("./types/user").UserWithApplicationPermissions | null) => boolean;
    memoizedResultFunc: ((resultFuncArgs_0: import("./types/user").UserWithApplicationPermissions | null) => boolean) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    };
    lastResult: () => boolean;
    dependencies: [(state: ApplicationPermissionsState) => import("./types/user").UserWithApplicationPermissions | null];
    recomputations: () => number;
    resetRecomputations: () => void;
    dependencyRecomputations: () => number;
    resetDependencyRecomputations: () => void;
} & {
    argsMemoize: typeof import("reselect").weakMapMemoize;
    memoize: typeof import("reselect").weakMapMemoize;
};
export declare const getIsDirty: ((state: ApplicationPermissionsState) => boolean) & {
    clearCache: () => void;
    resultsCount: () => number;
    resetResultsCount: () => void;
} & {
    resultFunc: (resultFuncArgs_0: ApplicationPermissions, resultFuncArgs_1: ApplicationPermissions) => boolean;
    memoizedResultFunc: ((resultFuncArgs_0: ApplicationPermissions, resultFuncArgs_1: ApplicationPermissions) => boolean) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    };
    lastResult: () => boolean;
    dependencies: [(state: ApplicationPermissionsState) => ApplicationPermissions, (state: ApplicationPermissionsState) => ApplicationPermissions];
    recomputations: () => number;
    resetRecomputations: () => void;
    dependencyRecomputations: () => number;
    resetDependencyRecomputations: () => void;
} & {
    argsMemoize: typeof import("reselect").weakMapMemoize;
    memoize: typeof import("reselect").weakMapMemoize;
};
export declare const getApplicationPermissionEditor: ((state: ApplicationPermissionsState) => {
    filterPlaceholder: string;
    columns: ({
        name: string;
        hint?: undefined;
    } | {
        name: string;
        hint: string;
    })[];
    entities: {
        id: number;
        name: any;
        permissions: {
            permission: ApplicationPermissionKey;
            isDisabled: boolean;
            warning: string | null;
            disabledTooltip: string | null;
            value: any;
            options: {
                label: string;
                value: string;
                icon: string;
                iconColor: string;
            }[];
        }[];
    }[];
} | null) & {
    clearCache: () => void;
    resultsCount: () => number;
    resetResultsCount: () => void;
} & {
    resultFunc: (resultFuncArgs_0: ApplicationPermissions, resultFuncArgs_1: [Group[], Group[]], resultFuncArgs_2: Group | undefined) => {
        filterPlaceholder: string;
        columns: ({
            name: string;
            hint?: undefined;
        } | {
            name: string;
            hint: string;
        })[];
        entities: {
            id: number;
            name: any;
            permissions: {
                permission: ApplicationPermissionKey;
                isDisabled: boolean;
                warning: string | null;
                disabledTooltip: string | null;
                value: any;
                options: {
                    label: string;
                    value: string;
                    icon: string;
                    iconColor: string;
                }[];
            }[];
        }[];
    } | null;
    memoizedResultFunc: ((resultFuncArgs_0: ApplicationPermissions, resultFuncArgs_1: [Group[], Group[]], resultFuncArgs_2: Group | undefined) => {
        filterPlaceholder: string;
        columns: ({
            name: string;
            hint?: undefined;
        } | {
            name: string;
            hint: string;
        })[];
        entities: {
            id: number;
            name: any;
            permissions: {
                permission: ApplicationPermissionKey;
                isDisabled: boolean;
                warning: string | null;
                disabledTooltip: string | null;
                value: any;
                options: {
                    label: string;
                    value: string;
                    icon: string;
                    iconColor: string;
                }[];
            }[];
        }[];
    } | null) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    };
    lastResult: () => {
        filterPlaceholder: string;
        columns: ({
            name: string;
            hint?: undefined;
        } | {
            name: string;
            hint: string;
        })[];
        entities: {
            id: number;
            name: any;
            permissions: {
                permission: ApplicationPermissionKey;
                isDisabled: boolean;
                warning: string | null;
                disabledTooltip: string | null;
                value: any;
                options: {
                    label: string;
                    value: string;
                    icon: string;
                    iconColor: string;
                }[];
            }[];
        }[];
    } | null;
    dependencies: [(state: ApplicationPermissionsState) => ApplicationPermissions, ((state: unknown) => [Group[], Group[]]) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    } & {
        resultFunc: (resultFuncArgs_0: any) => [Group[], Group[]];
        memoizedResultFunc: ((resultFuncArgs_0: any) => [Group[], Group[]]) & {
            clearCache: () => void;
            resultsCount: () => number;
            resetResultsCount: () => void;
        };
        lastResult: () => [Group[], Group[]];
        dependencies: [any];
        recomputations: () => number;
        resetRecomputations: () => void;
        dependencyRecomputations: () => number;
        resetDependencyRecomputations: () => void;
    } & {
        argsMemoize: typeof import("reselect").weakMapMemoize;
        memoize: typeof import("reselect").weakMapMemoize;
    }, ((state: unknown) => Group | undefined) & {
        clearCache: () => void;
        resultsCount: () => number;
        resetResultsCount: () => void;
    } & {
        resultFunc: (resultFuncArgs_0: any) => Group | undefined;
        memoizedResultFunc: ((resultFuncArgs_0: any) => Group | undefined) & {
            clearCache: () => void;
            resultsCount: () => number;
            resetResultsCount: () => void;
        };
        lastResult: () => Group | undefined;
        dependencies: [any];
        recomputations: () => number;
        resetRecomputations: () => void;
        dependencyRecomputations: () => number;
        resetDependencyRecomputations: () => void;
    } & {
        argsMemoize: typeof import("reselect").weakMapMemoize;
        memoize: typeof import("reselect").weakMapMemoize;
    }];
    recomputations: () => number;
    resetRecomputations: () => void;
    dependencyRecomputations: () => number;
    resetDependencyRecomputations: () => void;
} & {
    argsMemoize: typeof import("reselect").weakMapMemoize;
    memoize: typeof import("reselect").weakMapMemoize;
};
