/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import "./kube-object-list-layout.scss";
import React from "react";
import type { KubeJsonApiDataFor, KubeObject } from "@openlens/kube-object";
import type { ItemListLayoutProps, ItemListStore } from "../item-object-list/list-layout";
import type { SubscribableStore } from "../../kube-watch-api/kube-watch-api";
import type { KubeApi } from "../../../common/k8s-api/kube-api";
import type { SpecificKubeListLayoutColumn } from "@openlens/list-layout";
export type KubeItemListStore<K extends KubeObject> = ItemListStore<K, false> & SubscribableStore & {
    getByPath: (path: string) => K | undefined;
    readonly contextItems: K[];
};
export interface KubeObjectListLayoutProps<K extends KubeObject, A extends KubeApi<K, D>, D extends KubeJsonApiDataFor<K>> extends Omit<ItemListLayoutProps<K, false>, "getItems" | "dependentStores" | "preloadStores"> {
    items?: K[];
    getItems?: () => K[];
    store: KubeItemListStore<K>;
    dependentStores?: SubscribableStore[];
    subscribeStores?: boolean;
    /**
     * Customize resource name for e.g. search input ("Search <ResourceName>..."")
     * If not provided, ResourceNames is used instead with a fallback to resource kind.
     */
    resourceName?: string;
    columns?: SpecificKubeListLayoutColumn<K>[];
}
export declare const KubeObjectListLayout: <K extends KubeObject<import("@openlens/kube-object").KubeObjectMetadata<import("@openlens/kube-object").KubeObjectScope>, unknown, unknown>, A extends KubeApi<K, D>, D extends KubeJsonApiDataFor<K> = KubeJsonApiDataFor<K>>(props: KubeObjectListLayoutProps<K, A, D>) => React.ReactElement;
