newton-core 0.7.1

newton protocol core sdk
use serde::{Deserialize, Serialize};
use thiserror::Error;

/// Task evaluation error
#[derive(Debug, Error, Serialize, Deserialize)]
pub enum RegoError {
    /// Missing policy
    #[error("Missing policy")]
    MissingPolicy,
    /// Failed to get policy params
    #[error("Failed to get policy params: {0}")]
    FailedToGetPolicyParams(String),
    /// Failed to validate params schema
    #[error("Failed to validate params schema: {0}")]
    FailedToValidateParamsSchema(String),
    /// Failed to get policy config
    #[error("Failed to get policy config: {0}")]
    FailedToGetPolicyConfig(String),
    /// Failed to get policy entrypoint
    #[error("Failed to get policy entrypoint: {0}")]
    FailedToGetPolicyEntrypoint(String),
    /// Failed to get policy schema cid
    #[error("Failed to get policy schema cid: {0}")]
    FailedToGetPolicySchemaCid(String),
    /// Failed to fetch policy schema json
    #[error("Failed to fetch policy schema json: {0}")]
    FailedToFetchPolicySchemaJson(String),
    /// Failed to decode policy schema json
    #[error("Failed to decode policy schema json: {0}")]
    FailedToDecodePolicySchemaJson(String),
    /// Failed to parse schema
    #[error("Failed to parse schema: {0}")]
    FailedToParseSchema(String),
    /// Failed to parse intent
    #[error("Failed to parse intent: {0}")]
    FailedToParseIntent(String),
    /// Failed to parse policy data
    #[error("Failed to parse policy data: {0}")]
    FailedToParsePolicyData(String),
    /// Failed to decode policy data as UTF-8
    #[error("Policy data at address {address} contains invalid UTF-8: {error}")]
    InvalidPolicyDataUtf8 {
        /// The policy data contract address that failed
        address: String,
        /// The UTF-8 decoding error message
        error: String,
    },
    /// Failed to parse policy data as JSON
    #[error("Policy data at address {address} contains invalid JSON: {error}")]
    InvalidPolicyDataJson {
        /// The policy data contract address that failed
        address: String,
        /// The JSON parsing error message
        error: String,
    },
    /// Failed to evaluate task
    #[error("Failed to evaluate task: {0}")]
    FailedToEvaluateTask(String),
    /// Failed to get policies from client
    #[error("Failed to get policies: {0}")]
    FailedToGetPolicies(String),
    /// Failed to get policy id
    #[error("Failed to get policy id: {0}")]
    FailedToGetPolicyId(String),
    /// Failed to get policy artifact
    #[error("Failed to get artifact: {0}")]
    FailedToGetArtifact(String),
    /// Failed to fetch rego module
    #[error("Failed to fetch rego: {0}")]
    FailedToFetchRego(String),
    /// Fetched rego bytes do not hash to the policy's on-chain `policyCodeHash`
    #[error("Rego code hash mismatch for policy {policy}: expected {expected}, computed {computed}")]
    RegoCodeHashMismatch {
        /// The policy contract whose artifact was resolved
        policy: String,
        /// `policyCodeHash` committed on chain
        expected: String,
        /// keccak256 over the fetched rego bytes
        computed: String,
    },
}