"""Auto-generated by bindgen. Do not edit."""
# ruff: noqa: E501, F401, I001
# fmt: off

from __future__ import annotations

from dataclasses import dataclass
from typing import Any, ClassVar, Optional, TYPE_CHECKING, Union

from wasmtime.component import Variant as _WitVariant
from wasmtime.component import VariantCase as _WitVariantCase

from .sessions import Snapshot, SnapshotLocation, SnapshotManifest, StorageError


@dataclass(kw_only=True)
class SaveSnapshotArgs:
    """Arguments for `save-snapshot`."""
    backend_id: str
    location: SnapshotLocation
    snapshot_id: str
    is_latest: bool
    snapshot: Snapshot


@dataclass(kw_only=True)
class LoadSnapshotArgs:
    """Arguments for `load-snapshot`."""
    backend_id: str
    location: SnapshotLocation
    snapshot_id: str | None


@dataclass(kw_only=True)
class ListSnapshotIdsArgs:
    """Arguments for `list-snapshot-ids`."""
    backend_id: str
    location: SnapshotLocation
    limit: int | None
    start_after: str | None


@dataclass(kw_only=True)
class DeleteSessionArgs:
    """Arguments for `delete-session`."""
    backend_id: str
    session_id: str


@dataclass(kw_only=True)
class ManifestArgs:
    """Arguments for `load-manifest` / `save-manifest`."""
    backend_id: str
    location: SnapshotLocation


@dataclass(kw_only=True)
class SaveManifestArgs:
    """Arguments for `save-manifest`."""
    backend_id: str
    location: SnapshotLocation
    manifest: SnapshotManifest
