/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import React from "react";
import type { IComputedValue } from "mobx";
import type { NamespaceStore } from "../store";
import type { ActionMeta, MultiValue } from "react-select";
import type { SelectOption } from "../../select";
import type { IsMultiSelectionKey } from "./is-selection-key.injectable";
import type { ClusterContext } from "../../../cluster-frame-context/cluster-frame-context";
interface Dependencies {
    context: ClusterContext;
    namespaceStore: NamespaceStore;
    isMultiSelectionKey: IsMultiSelectionKey;
}
export declare const selectAllNamespaces: unique symbol;
export type SelectAllNamespaces = typeof selectAllNamespaces;
export type NamespaceSelectFilterOption = SelectOption<string | SelectAllNamespaces>;
export interface NamespaceSelectFilterModel {
    readonly options: IComputedValue<readonly NamespaceSelectFilterOption[]>;
    readonly menu: {
        open: () => void;
        close: () => void;
        readonly isOpen: IComputedValue<boolean>;
    };
    onChange: (newValue: MultiValue<NamespaceSelectFilterOption>, actionMeta: ActionMeta<NamespaceSelectFilterOption>) => void;
    onClick: () => void;
    onKeyDown: React.KeyboardEventHandler;
    onKeyUp: React.KeyboardEventHandler;
    reset: () => void;
    isOptionSelected: (option: NamespaceSelectFilterOption) => boolean;
    formatOptionLabel: (option: NamespaceSelectFilterOption) => JSX.Element;
}
export declare function namespaceSelectFilterModelFor(dependencies: Dependencies): NamespaceSelectFilterModel;
export {};
