import * as Context from "effect/Context";
import * as Effect from "effect/Effect";
import * as Layer from "effect/Layer";
import * as Schema from "effect/Schema";
import * as HttpClient from "effect/unstable/http/HttpClient";
import * as HttpApi from "effect/unstable/httpapi/HttpApi";
import * as HttpApiEndpoint from "effect/unstable/httpapi/HttpApiEndpoint";
import * as HttpApiGroup from "effect/unstable/httpapi/HttpApiGroup";
import * as HttpApiSchema from "effect/unstable/httpapi/HttpApiSchema";
import { NetworkConnectOptions, NetworkCreateRequest, NetworkInspect } from "../generated/index.ts";
import { ContainerIdentifier } from "../schemas/id.ts";
import { DockerError } from "./circular.ts";
import { BadRequest, Forbidden, InternalServerError, NotFound } from "./errors.ts";
/** @since 1.0.0 */
export declare const ListFilters: Schema.fromJsonString<Schema.Struct<{
    readonly dangling: Schema.optional<Schema.decodeTo<Schema.Boolean, Schema.Tuple<readonly [Schema.String]>, never, never>>;
    readonly driver: Schema.optional<Schema.$Array<Schema.String>>;
    readonly id: Schema.optional<Schema.$Array<Schema.String>>;
    readonly label: Schema.optional<Schema.$Array<Schema.String>>;
    readonly name: Schema.optional<Schema.$Array<Schema.String>>;
    readonly scope: Schema.optional<Schema.$Array<Schema.String>>;
    readonly type: Schema.optional<Schema.decodeTo<Schema.Literals<readonly ["custom", "builtin"]>, Schema.Tuple<readonly [Schema.Literals<readonly ["custom", "builtin"]>]>, never, never>>;
}>>;
/** @since 1.0.0 */
export declare const PruneFilters: Schema.fromJsonString<Schema.Struct<{
    readonly label: Schema.optional<Schema.$Array<Schema.String>>;
    readonly until: Schema.optional<Schema.decodeTo<Schema.String, Schema.Tuple<readonly [Schema.String]>, never, never>>;
}>>;
/**
 * @since 1.0.0
 * @category HttpApi
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Network
 */
export declare const NetworksApi: HttpApi.HttpApi<"NetworksApi", HttpApiGroup.HttpApiGroup<"networks", HttpApiEndpoint.HttpApiEndpoint<"connect", "POST", "/networks/:id/connect", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, never, Schema.toCodecJson<typeof NetworkConnectOptions>, never, Schema.toCodecJson<Schema.Void>, Schema.toCodecJson<typeof BadRequest | typeof Forbidden | typeof NotFound | typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"create", "POST", "/networks/create", never, never, Schema.toCodecJson<typeof NetworkCreateRequest>, never, Schema.toCodecJson<Schema.Struct<{
    readonly Id: Schema.brand<Schema.String, "NetworkId">;
}>>, Schema.toCodecJson<typeof BadRequest | typeof Forbidden | typeof NotFound | typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"delete", "DELETE", "/networks/:id", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, never, never, never, Schema.toCodecJson<HttpApiSchema.NoContent>, Schema.toCodecJson<typeof Forbidden | typeof NotFound | typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"disconnect", "POST", "/networks/:id/disconnect", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, never, Schema.toCodecJson<Schema.Struct<{
    readonly Container: Schema.brand<Schema.String, "ContainerId">;
    readonly Force: Schema.Boolean;
}>>, never, Schema.toCodecJson<Schema.Void>, Schema.toCodecJson<typeof Forbidden | typeof NotFound | typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"inspect", "GET", "/networks/:id", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, Schema.toCodecStringTree<Schema.Struct<{
    verbose: Schema.optional<Schema.Boolean>;
    scope: Schema.optional<Schema.String>;
}>>, never, never, Schema.toCodecJson<typeof NetworkInspect>, Schema.toCodecJson<typeof NotFound | typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"list", "GET", "/networks/", never, Schema.toCodecStringTree<Schema.Struct<{
    filters: Schema.optional<Schema.fromJsonString<Schema.Struct<{
        readonly dangling: Schema.optional<Schema.decodeTo<Schema.Boolean, Schema.Tuple<readonly [Schema.String]>, never, never>>;
        readonly driver: Schema.optional<Schema.$Array<Schema.String>>;
        readonly id: Schema.optional<Schema.$Array<Schema.String>>;
        readonly label: Schema.optional<Schema.$Array<Schema.String>>;
        readonly name: Schema.optional<Schema.$Array<Schema.String>>;
        readonly scope: Schema.optional<Schema.$Array<Schema.String>>;
        readonly type: Schema.optional<Schema.decodeTo<Schema.Literals<readonly ["custom", "builtin"]>, Schema.Tuple<readonly [Schema.Literals<readonly ["custom", "builtin"]>]>, never, never>>;
    }>>>;
}>>, never, never, Schema.toCodecJson<Schema.$Array<typeof NetworkInspect>>, Schema.toCodecJson<typeof InternalServerError>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"prune", "POST", "/networks/prune", never, Schema.toCodecStringTree<Schema.Struct<{
    filters: Schema.optional<Schema.fromJsonString<Schema.Struct<{
        readonly label: Schema.optional<Schema.$Array<Schema.String>>;
        readonly until: Schema.optional<Schema.decodeTo<Schema.String, Schema.Tuple<readonly [Schema.String]>, never, never>>;
    }>>>;
}>>, never, never, Schema.toCodecJson<Schema.Struct<{
    readonly NetworksDeleted: Schema.NullishOr<Schema.$Array<Schema.String>>;
}>>, Schema.toCodecJson<typeof InternalServerError>, never, never>, false>>;
declare const Networks_base: Context.ServiceClass<Networks, "@the-moby-effect/endpoints/Networks", {
    list: (filters?: Schema.Schema.Type<typeof ListFilters>) => Effect.Effect<readonly NetworkInspect[], DockerError, never>;
    create: (payload: (typeof NetworkCreateRequest)["~type.make.in"]) => Effect.Effect<{
        readonly Id: string & import("effect/Brand").Brand<"NetworkId">;
    }, DockerError, never>;
    inspect: (id: string, options?: {
        readonly verbose?: boolean | undefined;
        readonly scope?: string | undefined;
    }) => Effect.Effect<NetworkInspect, DockerError, never>;
    delete: (id: string) => Effect.Effect<void, DockerError, never>;
    connect: (id: string, payload: (typeof NetworkConnectOptions)["~type.make.in"]) => Effect.Effect<void, DockerError, never>;
    disconnect: (id: string, containerId: ContainerIdentifier, options?: {
        force?: boolean | undefined;
    } | undefined) => Effect.Effect<void, DockerError, never>;
    prune: (filters?: Schema.Schema.Type<typeof PruneFilters>) => Effect.Effect<{
        readonly NetworksDeleted: readonly string[] | null | undefined;
    }, DockerError, never>;
}> & {
    readonly make: Effect.Effect<{
        list: (filters?: Schema.Schema.Type<typeof ListFilters>) => Effect.Effect<readonly NetworkInspect[], DockerError, never>;
        create: (payload: (typeof NetworkCreateRequest)["~type.make.in"]) => Effect.Effect<{
            readonly Id: string & import("effect/Brand").Brand<"NetworkId">;
        }, DockerError, never>;
        inspect: (id: string, options?: {
            readonly verbose?: boolean | undefined;
            readonly scope?: string | undefined;
        }) => Effect.Effect<NetworkInspect, DockerError, never>;
        delete: (id: string) => Effect.Effect<void, DockerError, never>;
        connect: (id: string, payload: (typeof NetworkConnectOptions)["~type.make.in"]) => Effect.Effect<void, DockerError, never>;
        disconnect: (id: string, containerId: ContainerIdentifier, options?: {
            force?: boolean | undefined;
        } | undefined) => Effect.Effect<void, DockerError, never>;
        prune: (filters?: Schema.Schema.Type<typeof PruneFilters>) => Effect.Effect<{
            readonly NetworksDeleted: readonly string[] | null | undefined;
        }, DockerError, never>;
    }, never, HttpClient.HttpClient>;
};
/**
 * @since 1.0.0
 * @category Services
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Network
 */
export declare class Networks extends Networks_base {
}
/**
 * @since 1.0.0
 * @category Layers
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Network
 */
export declare const NetworksLayer: Layer.Layer<Networks, never, HttpClient.HttpClient>;
/**
 * @since 1.0.0
 * @category Layers
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Network
 */
export declare const NetworksLayerLocalSocket: Layer.Layer<Networks, never, HttpClient.HttpClient>;
export {};
//# sourceMappingURL=networks.d.ts.map