package interfaces import ( "context" "io" "gitea.unprism.ru/KRBL/Agate/store" ) // SnapshotManager defines the interface that the server needs to interact with snapshots type SnapshotManager interface { // GetSnapshotDetails retrieves detailed metadata for a specific snapshot GetSnapshotDetails(ctx context.Context, snapshotID string) (*store.Snapshot, error) // ListSnapshots retrieves a list of all available snapshots ListSnapshots(ctx context.Context) ([]store.SnapshotInfo, error) // OpenFile retrieves and opens a file from the specified snapshot OpenFile(ctx context.Context, snapshotID string, filePath string) (io.ReadCloser, error) // CreateSnapshot creates a new snapshot from the specified source directory CreateSnapshot(ctx context.Context, sourceDir string, name string, parentID string) (*store.Snapshot, error) } // SnapshotServer defines the interface for a server that can share snapshots type SnapshotServer interface { // Start initializes and begins the server's operation Start(ctx context.Context) error // Stop gracefully shuts down the server Stop(ctx context.Context) error } // SnapshotClient defines the interface for a client that can connect to a server and download snapshots type SnapshotClient interface { // ListSnapshots retrieves a list of snapshots from the server ListSnapshots(ctx context.Context) ([]store.SnapshotInfo, error) // FetchSnapshotDetails retrieves detailed information about a specific snapshot FetchSnapshotDetails(ctx context.Context, snapshotID string) (*store.Snapshot, error) // DownloadSnapshot downloads a snapshot from the server DownloadSnapshot(ctx context.Context, snapshotID string, targetDir string, localParentID string) error // Close closes the connection to the server Close() error }