import { Refable, type InputPortMapping } from "@k8ts/instruments";
import { api } from "../../kinds";
import { ManifestResource } from "../../node";
import { Deployment } from "../deployment";
import { Frontend as Frontend_ } from "./frontend";
import { Port as Port_ } from "./service-port";
export type Service<ExposedPorts extends string = string> = Service.Service<ExposedPorts>;
export declare namespace Service {
    export import Port = Port_;
    export import Frontend = Frontend_;
    interface Props<DeployPorts extends string, ExposedPorts extends DeployPorts> {
        $ports: InputPortMapping<ExposedPorts>;
        $backend: Deployment.AbsDeployment<DeployPorts>;
        $frontend: Frontend;
    }
    type AbsService<ExposedPorts extends string> = Refable<api.v1_.Service> & {
        __PORTS__: ExposedPorts;
    };
    class Service<ExposedPorts extends string = string> extends ManifestResource<Props<string, ExposedPorts>> {
        __PORTS__: ExposedPorts;
        kind: import("@k8ts/instruments").Kind.Kind<"Service", import("@k8ts/instruments").Kind.Version<"v1", import("@k8ts/instruments").Kind.Group<"">>>;
        private get backend();
        get ports(): import("@k8ts/instruments").PortMap<ExposedPorts>;
        portRef(name: ExposedPorts): Port.Port<ExposedPorts>;
        get hostname(): string;
        private _getPortoPart;
        address(protocol: "http" | "https", port: ExposedPorts): string;
    }
}
//# sourceMappingURL=service.d.ts.map