import * as k8s from "@kubernetes/client-node";
import { KubernetesApplication, KubernetesResourceRequest, KubernetesSdm } from "./request";
/**
 * If `req.port` is truthy, create a service if it does not exist and
 * patch it if it does.  Any provided `req.serviceSpec` is merged
 * using [[serviceTemplate]] before creating/patching.
 *
 * @param req Kuberenetes application request
 * @return Kubernetes resource spec used to create/patch resource, or undefined if port not defined
 */
export declare function upsertService(req: KubernetesResourceRequest): Promise<k8s.V1Service | undefined>;
/**
 * Create service spec to front a Kubernetes application.  If the
 * request has a `serviceSpec`, it is merged into the spec created
 * by this function using `lodash.merge(default, req.serviceSpec)`.
 *
 * It is possible to override the service name using the
 * [[KubernetesApplication.serviceSpec]].  If you do this, make sure
 * you know what you are doing.
 *
 * @param req service template request
 * @return service resource specification
 */
export declare function serviceTemplate(req: KubernetesApplication & KubernetesSdm): Promise<k8s.V1Service>;
//# sourceMappingURL=service.d.ts.map