import { Effect } from "effect";
import Docker from "dockerode";
import * as DevnetDefault from "./DevnetDefault.js";
declare const CardanoDevNetError_base: new = {}>(args: import("effect/Types").Equals extends true ? void : { readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }) => import("effect/Cause").YieldableError & {
readonly _tag: "CardanoDevNetError";
} & Readonly;
export declare class CardanoDevNetError extends CardanoDevNetError_base<{
reason: "container_not_found" | "container_creation_failed" | "container_start_failed" | "container_stop_failed" | "container_removal_failed" | "container_inspection_failed" | "temp_directory_creation_failed" | "config_file_write_failed" | "file_permissions_failed" | "network_creation_failed" | "kupo_container_creation_failed" | "kupo_container_start_failed" | "kupo_container_stop_failed" | "ogmios_container_creation_failed" | "ogmios_container_start_failed" | "ogmios_container_stop_failed";
message: string;
cause?: unknown;
}> {
}
export interface DevNetContainer {
readonly id: string;
readonly name: string;
}
export interface DevNetCluster {
readonly cardanoNode: DevNetContainer;
readonly kupo?: DevNetContainer;
readonly ogmios?: DevNetContainer;
readonly networkName: string;
}
/**
* Cluster management operations for Cardano DevNet.
*
* @since 2.0.0
* @category cluster
*/
export declare const Cluster: {
/**
* Create a new cardano devnet cluster with optional Kupo and Ogmios containers.
*
* @since 2.0.0
* @category constructors
*/
readonly make: (config?: DevnetDefault.DevNetConfig) => Effect.Effect;
/**
* Create a new cardano devnet cluster, throws on error.
*
* @since 2.0.0
* @category constructors
*/
readonly makeOrThrow: (config?: DevnetDefault.DevNetConfig) => Promise;
/**
* Start a devnet cluster (all containers).
*
* @since 2.0.0
* @category lifecycle
*/
readonly start: (cluster: DevNetCluster) => Effect.Effect;
/**
* Start a devnet cluster, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly startOrThrow: (cluster: DevNetCluster) => Promise;
/**
* Stop a devnet cluster (all containers).
*
* @since 2.0.0
* @category lifecycle
*/
readonly stop: (cluster: DevNetCluster) => Effect.Effect;
/**
* Stop a devnet cluster, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly stopOrThrow: (cluster: DevNetCluster) => Promise;
/**
* Remove a devnet cluster (all containers and network).
*
* @since 2.0.0
* @category lifecycle
*/
readonly remove: (cluster: DevNetCluster) => Effect.Effect;
/**
* Remove a devnet cluster, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly removeOrThrow: (cluster: DevNetCluster) => Promise;
};
/**
* Individual container management operations.
*
* @since 2.0.0
* @category container
*/
export declare const Container: {
/**
* Start a specific devnet container.
*
* @since 2.0.0
* @category lifecycle
*/
readonly start: (container: DevNetContainer) => Effect.Effect;
/**
* Start a specific devnet container, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly startOrThrow: (container: DevNetContainer) => Promise;
/**
* Stop a specific devnet container.
*
* @since 2.0.0
* @category lifecycle
*/
readonly stop: (container: DevNetContainer) => Effect.Effect;
/**
* Stop a specific devnet container, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly stopOrThrow: (container: DevNetContainer) => Promise;
/**
* Remove a specific devnet container.
*
* @since 2.0.0
* @category lifecycle
*/
readonly remove: (container: DevNetContainer) => Effect.Effect;
/**
* Remove a specific devnet container, throws on error.
*
* @since 2.0.0
* @category lifecycle
*/
readonly removeOrThrow: (container: DevNetContainer) => Promise;
/**
* Get container status information.
*
* @since 2.0.0
* @category inspection
*/
readonly getStatus: (container: DevNetContainer) => Effect.Effect;
/**
* Get container status information, throws on error.
*
* @since 2.0.0
* @category inspection
*/
readonly getStatusOrThrow: (container: DevNetContainer) => Promise;
};
export {};
//# sourceMappingURL=Devnet.d.ts.map