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 { SwarmNode, SwarmNodeSpec } from "../generated/index.ts";
import { DockerError } from "./circular.ts";
import { BadRequest, InternalServerError, NotFound, ServiceUnavailable } from "./errors.ts";
/** @since 1.0.0 */
export declare const ListFilters: Schema.fromJsonString<Schema.Struct<{
    readonly id: Schema.optional<Schema.$Array<Schema.String>>;
    readonly label: Schema.optional<Schema.$Array<Schema.String>>;
    readonly membership: Schema.optional<Schema.$Array<Schema.Literals<readonly ["accepted", "pending"]>>>;
    readonly name: Schema.optional<Schema.$Array<Schema.String>>;
    readonly "node.label": Schema.optional<Schema.$Array<Schema.String>>;
    readonly role: Schema.optional<Schema.$Array<Schema.Literals<readonly ["manager", "worker"]>>>;
}>>;
/**
 * @since 1.0.0
 * @category HttpApi
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Node
 */
export declare const NodesApi: HttpApi.HttpApi<"NodesApi", HttpApiGroup.HttpApiGroup<"nodes", HttpApiEndpoint.HttpApiEndpoint<"delete", "DELETE", "/nodes/:id", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, Schema.toCodecStringTree<Schema.Struct<{
    force: Schema.optional<Schema.Boolean>;
}>>, never, never, Schema.toCodecJson<Schema.Void>, Schema.toCodecJson<typeof NotFound | typeof InternalServerError | typeof ServiceUnavailable>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"inspect", "GET", "/nodes/:id", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, never, never, never, Schema.toCodecJson<typeof SwarmNode>, Schema.toCodecJson<typeof NotFound | typeof InternalServerError | typeof ServiceUnavailable>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"list", "GET", "/nodes/", never, Schema.toCodecStringTree<Schema.Struct<{
    filters: Schema.optional<Schema.fromJsonString<Schema.Struct<{
        readonly id: Schema.optional<Schema.$Array<Schema.String>>;
        readonly label: Schema.optional<Schema.$Array<Schema.String>>;
        readonly membership: Schema.optional<Schema.$Array<Schema.Literals<readonly ["accepted", "pending"]>>>;
        readonly name: Schema.optional<Schema.$Array<Schema.String>>;
        readonly "node.label": Schema.optional<Schema.$Array<Schema.String>>;
        readonly role: Schema.optional<Schema.$Array<Schema.Literals<readonly ["manager", "worker"]>>>;
    }>>>;
}>>, never, never, Schema.toCodecJson<Schema.$Array<typeof SwarmNode>>, Schema.toCodecJson<typeof InternalServerError | typeof ServiceUnavailable>, never, never> | HttpApiEndpoint.HttpApiEndpoint<"update", "POST", "/nodes/:id/update", Schema.toCodecStringTree<Schema.Struct<{
    id: Schema.String;
}>>, Schema.toCodecStringTree<Schema.Struct<{
    version: Schema.Number;
}>>, Schema.toCodecJson<typeof SwarmNodeSpec>, never, Schema.toCodecJson<Schema.Void>, Schema.toCodecJson<typeof BadRequest | typeof NotFound | typeof InternalServerError | typeof ServiceUnavailable>, never, never>, false>>;
declare const Nodes_base: Context.ServiceClass<Nodes, "@the-moby-effect/endpoints/Nodes", {
    list: (filters?: Schema.Schema.Type<typeof ListFilters>) => Effect.Effect<readonly SwarmNode[], DockerError, never>;
    inspect: (id: string) => Effect.Effect<SwarmNode, DockerError, never>;
    delete: (id: string, options?: {
        force?: boolean | undefined;
    } | undefined) => Effect.Effect<void, DockerError, never>;
    update: (id: string, version: number, payload: (typeof SwarmNodeSpec)["~type.make.in"]) => Effect.Effect<void, DockerError, never>;
}> & {
    readonly make: Effect.Effect<{
        list: (filters?: Schema.Schema.Type<typeof ListFilters>) => Effect.Effect<readonly SwarmNode[], DockerError, never>;
        inspect: (id: string) => Effect.Effect<SwarmNode, DockerError, never>;
        delete: (id: string, options?: {
            force?: boolean | undefined;
        } | undefined) => Effect.Effect<void, DockerError, never>;
        update: (id: string, version: number, payload: (typeof SwarmNodeSpec)["~type.make.in"]) => Effect.Effect<void, DockerError, never>;
    }, never, HttpClient.HttpClient>;
};
/**
 * @since 1.0.0
 * @category Services
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Node
 */
export declare class Nodes extends Nodes_base {
}
/**
 * @since 1.0.0
 * @category Layers
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Node
 */
export declare const NodesLayer: Layer.Layer<Nodes, never, HttpClient.HttpClient>;
/**
 * @since 1.0.0
 * @category Layers
 * @see https://docs.docker.com/reference/api/engine/latest/#tag/Node
 */
export declare const NodesLayerLocalSocket: Layer.Layer<Nodes, never, HttpClient.HttpClient>;
export {};
//# sourceMappingURL=nodes.d.ts.map