use serde::{Deserialize, Serialize};
use serde_json::Value;

#[derive(Debug, Clone, Serialize, Deserialize)]
pub enum ErrorCode {
    ValidationError,
    DocNotFound,
    InternalError,
    UnknownTool,
}

#[derive(Debug, Clone)]
pub enum ToolOutcome {
    Ok {
        message: Option<String>,
    },
    Created {
        document_id: String,
        message: Option<String>,
    },
    Text {
        text: String,
    },
    Metadata {
        metadata: Value,
    },
    Documents {
        documents: Value,
    },
    Images {
        images: Vec<String>,
        message: Option<String>,
    },
    Security {
        security: Value,
    },
    Storage {
        storage: Value,
    },
    Statistics {
        statistics: Value,
    },
    Structure {
        structure: Value,
    },
    Error {
        code: ErrorCode,
        error: String,
        hint: Option<String>,
    },
}
