import * as z from "zod/v3";
import { ClosedEnum } from "../types/enums.js";
import { Result as SafeParseResult } from "../types/fp.js";
import { SDKValidationError } from "./sdkvalidationerror.js";
/**
 * The status of the current sandbox.
 */
export declare const NamedSandboxStatus: {
    readonly Running: "running";
    readonly Stopped: "stopped";
    readonly Stopping: "stopping";
};
/**
 * The status of the current sandbox.
 */
export type NamedSandboxStatus = ClosedEnum<typeof NamedSandboxStatus>;
/**
 * Keep-last snapshot configuration.
 */
export type KeepLastSnapshots = {
    /**
     * Number of most recent snapshots to keep.
     */
    count: number;
    /**
     * Expiration time in milliseconds for kept snapshots.
     */
    expiration?: number | undefined;
    /**
     * Whether to immediately delete evicted snapshots.
     */
    deleteEvicted: boolean;
};
export declare const NamedSandboxNetworkPolicyMode: {
    readonly AllowAll: "allow-all";
    readonly Custom: "custom";
    readonly DefaultAllow: "default-allow";
    readonly DefaultDeny: "default-deny";
    readonly DenyAll: "deny-all";
};
export type NamedSandboxNetworkPolicyMode = ClosedEnum<typeof NamedSandboxNetworkPolicyMode>;
/**
 * Network policy configuration.
 */
export type NetworkPolicy = {
    mode: NamedSandboxNetworkPolicyMode;
    allowedDomains?: Array<string> | undefined;
    allowedCIDRs?: Array<string> | undefined;
    deniedCIDRs?: Array<string> | undefined;
};
export declare const NamedSandboxMode: {
    readonly ReadOnly: "read-only";
    readonly ReadWrite: "read-write";
};
export type NamedSandboxMode = ClosedEnum<typeof NamedSandboxMode>;
/**
 * Key-value pairs of mount path and drive.
 */
export type Mounts = {
    drive: string;
    mode?: NamedSandboxMode | undefined;
};
/**
 * This object contains information related to a Vercel NamedSandbox.
 */
export type NamedSandbox = {
    /**
     * The unique identifier of the sandbox.
     */
    name: string;
    /**
     * Current snapshot ID that the named sandbox is pointing to.
     */
    currentSnapshotId?: string | undefined;
    /**
     * Current session ID the sandbox is pointing to.
     */
    currentSessionId: string;
    /**
     * The status of the current sandbox.
     */
    status: NamedSandboxStatus;
    /**
     * The time when the sandbox status was last updated, in milliseconds since the epoch.
     */
    statusUpdatedAt: number;
    /**
     * Whether the sandbox persists its state across restarts via automatic snapshots.
     */
    persistent: boolean;
    /**
     * The region the sandbox runs in.
     */
    region?: string | undefined;
    /**
     * Number of virtual CPUs allocated.
     */
    vcpus?: number | undefined;
    /**
     * Memory allocated in MB.
     */
    memory?: number | undefined;
    /**
     * Runtime identifier.
     */
    runtime?: string | undefined;
    /**
     * Timeout in milliseconds.
     */
    timeout?: number | undefined;
    /**
     * Default snapshot expiration time in milliseconds. 0 means no expiration.
     */
    snapshotExpiration?: number | undefined;
    /**
     * Keep-last snapshot configuration.
     */
    keepLastSnapshots?: KeepLastSnapshots | undefined;
    /**
     * Network policy configuration.
     */
    networkPolicy?: NetworkPolicy | undefined;
    /**
     * Cumulative egress bytes across all sandbox runs.
     */
    totalEgressBytes?: number | undefined;
    /**
     * Cumulative ingress bytes across all sandbox runs.
     */
    totalIngressBytes?: number | undefined;
    /**
     * Cumulative active CPU duration in milliseconds across all sandbox runs.
     */
    totalActiveCpuDurationMs?: number | undefined;
    /**
     * Cumulative wall-clock duration in milliseconds across all sandbox runs.
     */
    totalDurationMs?: number | undefined;
    /**
     * The working directory of the sandbox.
     */
    cwd?: string | undefined;
    /**
     * Key-value tags attached to the named sandbox.
     */
    tags?: {
        [k: string]: string;
    } | undefined;
    /**
     * Key-value pairs of mount path and drive.
     */
    mounts?: {
        [k: string]: Mounts;
    } | undefined;
    /**
     * The time when the named sandbox was created, in milliseconds since the epoch.
     */
    createdAt: number;
    /**
     * The time when the named sandbox was last updated, in milliseconds since the epoch.
     */
    updatedAt: number;
};
/** @internal */
export declare const NamedSandboxStatus$inboundSchema: z.ZodNativeEnum<typeof NamedSandboxStatus>;
/** @internal */
export declare const KeepLastSnapshots$inboundSchema: z.ZodType<KeepLastSnapshots, z.ZodTypeDef, unknown>;
export declare function keepLastSnapshotsFromJSON(jsonString: string): SafeParseResult<KeepLastSnapshots, SDKValidationError>;
/** @internal */
export declare const NamedSandboxNetworkPolicyMode$inboundSchema: z.ZodNativeEnum<typeof NamedSandboxNetworkPolicyMode>;
/** @internal */
export declare const NetworkPolicy$inboundSchema: z.ZodType<NetworkPolicy, z.ZodTypeDef, unknown>;
export declare function networkPolicyFromJSON(jsonString: string): SafeParseResult<NetworkPolicy, SDKValidationError>;
/** @internal */
export declare const NamedSandboxMode$inboundSchema: z.ZodNativeEnum<typeof NamedSandboxMode>;
/** @internal */
export declare const Mounts$inboundSchema: z.ZodType<Mounts, z.ZodTypeDef, unknown>;
export declare function mountsFromJSON(jsonString: string): SafeParseResult<Mounts, SDKValidationError>;
/** @internal */
export declare const NamedSandbox$inboundSchema: z.ZodType<NamedSandbox, z.ZodTypeDef, unknown>;
export declare function namedSandboxFromJSON(jsonString: string): SafeParseResult<NamedSandbox, SDKValidationError>;
//# sourceMappingURL=namedsandbox.d.ts.map