import Adapt, { BuildHelpers, DeferredComponent } from "@adpt/core";
import { ServiceProps } from "../Service";
import { DockerContainerProps } from "./types";
/**
 * Props for {@link docker.ServiceContainerSet}
 *
 * @public
 */
export interface ServiceContainerSetProps extends ServiceProps {
    /**
     * Props to apply to all {@link docker.DockerContainer}s within this
     * ServiceContainerSet. If a prop is specified in the source {@link Container}
     * component and in `containerProps`, `containerProps` will take
     * precedence.
     */
    containerProps?: Partial<DockerContainerProps>;
    /**
     * If set, all children of this ServiceContainerSet that support the
     * `dockerHost` prop will get this value, overriding any other value for
     * this prop.
     */
    dockerHost?: string;
}
/**
 * A component for mapping a group of abstract {@link Container}s and
 * {@link NetworkService}s to Docker {@link docker.DockerContainer | DockerContainer}s
 * and {@link docker.NetworkService}s.
 *
 * @remarks
 * This component is intended to be used to replace {@link Container} and
 * {@link NetworkService} components that are grouped together, as the
 * only children of a common parent in a pattern that looks like this:
 * ```tsx
 * <Service>
 *   <Container ... />
 *   <Container ... />
 *   <NetworkService ... />
 * </Service>
 * ```
 * `ServiceContainerSet` maps those abstract components into Docker components
 * like this:
 * ```tsx
 * <Group>
 *   <docker.DockerContainer ... >
 *   <docker.DockerContainer ... >
 *   <docker.NetworkService ... >
 * </Group>
 * ```
 * An example style rule to do this is:
 * ```tsx
 * {Service}
 * {Adapt.rule((matchedProps) => {
 *     const { handle, ...remainingProps } = matchedProps;
 *     return <ServiceContainerSet {...remainingProps} />;
 * })}
 * ```
 *
 * Currently, {@link docker.NetworkService} implements the {@link NetworkServiceInstance}
 * interface, but does not deploy a network proxy component. So the Docker
 * ServiceContainerSet component applies the network port configuration specified by
 * the {@link NetworkService}s to their target
 * {@link docker.DockerContainer | DockerContainer}s.
 *
 * @public
 */
export declare class ServiceContainerSet extends DeferredComponent<ServiceContainerSetProps> {
    build(helpers: BuildHelpers): Adapt.AdaptElement<Adapt.AnyProps>;
}
//# sourceMappingURL=ServiceContainerSet.d.ts.map