use alien_error::AlienErrorData;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, AlienErrorData, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub enum ErrorData {
#[error(
code = "PLATFORM_NOT_SUPPORTED",
message = "Platform '{platform}' is not supported by permission set '{permission_set_id}'",
retryable = "false",
internal = "false"
)]
PlatformNotSupported {
platform: String,
permission_set_id: String,
},
#[error(
code = "BINDING_TARGET_NOT_SUPPORTED",
message = "Binding target '{binding_target}' is not supported by platform '{platform}' in permission set '{permission_set_id}'",
retryable = "false",
internal = "false"
)]
BindingTargetNotSupported {
platform: String,
binding_target: String,
permission_set_id: String,
},
#[error(
code = "VARIABLE_NOT_FOUND",
message = "Variable '{variable}' is not found in permission context",
retryable = "false",
internal = "false"
)]
VariableNotFound {
variable: String,
},
#[error(
code = "INVALID_PERMISSION_SET",
message = "Invalid permission set format: {message}",
retryable = "false",
internal = "true"
)]
InvalidPermissionSet {
message: String,
},
#[error(
code = "GENERATOR_ERROR",
message = "Generator error for platform '{platform}': {message}",
retryable = "false",
internal = "true"
)]
GeneratorError {
platform: String,
message: String,
},
#[error(
code = "SERIALIZATION_ERROR",
message = "Serialization error: {message}",
retryable = "false",
internal = "true"
)]
SerializationError {
message: String,
},
#[error(
code = "PERMISSION_FILE_IO_ERROR",
message = "Permission file I/O operation failed on '{path}': {message}",
retryable = "true",
internal = "false"
)]
PermissionFileIoError {
path: String,
message: String,
},
#[error(
code = "PERMISSION_ERROR",
message = "Permission operation failed: {message}",
retryable = "false",
internal = "true"
)]
Other {
message: String,
},
}
pub type Result<T> = alien_error::Result<T, ErrorData>;