use serde::{Deserialize, Serialize};
use thiserror::Error;
#[derive(Debug, Error, Serialize, Deserialize)]
pub enum RegoError {
#[error("Missing policy")]
MissingPolicy,
#[error("Failed to get policy params: {0}")]
FailedToGetPolicyParams(String),
#[error("Failed to validate params schema: {0}")]
FailedToValidateParamsSchema(String),
#[error("Failed to get policy config: {0}")]
FailedToGetPolicyConfig(String),
#[error("Failed to get policy entrypoint: {0}")]
FailedToGetPolicyEntrypoint(String),
#[error("Failed to get policy schema cid: {0}")]
FailedToGetPolicySchemaCid(String),
#[error("Failed to fetch policy schema json: {0}")]
FailedToFetchPolicySchemaJson(String),
#[error("Failed to decode policy schema json: {0}")]
FailedToDecodePolicySchemaJson(String),
#[error("Failed to parse schema: {0}")]
FailedToParseSchema(String),
#[error("Failed to parse intent: {0}")]
FailedToParseIntent(String),
#[error("Failed to parse policy data: {0}")]
FailedToParsePolicyData(String),
#[error("Policy data at address {address} contains invalid UTF-8: {error}")]
InvalidPolicyDataUtf8 {
address: String,
error: String,
},
#[error("Policy data at address {address} contains invalid JSON: {error}")]
InvalidPolicyDataJson {
address: String,
error: String,
},
#[error("Failed to evaluate task: {0}")]
FailedToEvaluateTask(String),
#[error("Failed to get policies: {0}")]
FailedToGetPolicies(String),
#[error("Failed to get policy id: {0}")]
FailedToGetPolicyId(String),
#[error("Failed to get artifact: {0}")]
FailedToGetArtifact(String),
#[error("Failed to fetch rego: {0}")]
FailedToFetchRego(String),
#[error("Rego code hash mismatch for policy {policy}: expected {expected}, computed {computed}")]
RegoCodeHashMismatch {
policy: String,
expected: String,
computed: String,
},
}