import * as k8s from "@kubernetes/client-node";
import { KubernetesApplication, KubernetesResourceRequest, KubernetesSdm } from "./request";
/**
 * Create or patch role or cluster role.
 *
 * @param req Kubernetes application request
 * @return Kubernetes resource spec used to create/update the resource
 */
export declare function upsertRole(req: KubernetesResourceRequest): Promise<k8s.V1Role | k8s.V1ClusterRole>;
/**
 * Create role spec for a Kubernetes application.  The
 * `req.rbac.roleSpec` is merged into the spec created by this
 * function using `lodash.merge(default, req.rbac.roleSpec)`.
 *
 * It is possible to override the role name using the
 * [[KubernetesApplication.roleSpec]].  If you do this, make sure you
 * know what you are doing and also override it in the
 * [[KubernetesApplication.roleBindingSpec]].
 *
 * @param req application request
 * @return role resource specification
 */
export declare function roleTemplate(req: KubernetesApplication & KubernetesSdm): Promise<k8s.V1Role>;
/**
 * Create role spec for a Kubernetes application.  The
 * `req.rbac.roleSpec` is merged into the spec created by this
 * function using `lodash.merge(default, req.rbac.roleSpec)`.
 *
 * It is possible to override the cluster role name using the
 * [[KubernetesApplication.roleSpec]].  If you do this, make sure you
 * know what you are doing and also override it in the
 * [[KubernetesApplication.roleBindingSpec]].
 *
 * @param req application request
 * @return role resource specification
 */
export declare function clusterRoleTemplate(req: KubernetesApplication & KubernetesSdm): Promise<k8s.V1ClusterRole>;
//# sourceMappingURL=role.d.ts.map