1use crate::util::{NotSingleError, RequiredError};
2use thiserror::Error;
3
4pub type DamlJsonResult<T> = Result<T, DamlJsonError>;
6
7#[derive(Error, Debug)]
9pub enum DamlJsonError {
10 #[error("DamlJsonError: codec error: {0}")]
11 CodecError(#[from] DamlJsonCodecError),
12 #[error("DamlJsonError: GRPC error: {0}")]
13 ReqwestError(#[from] reqwest::Error),
14 #[error(transparent)]
15 MissingRequiredField(#[from] RequiredError),
16 #[error("DamlJsonError: error response: {0}, {1}")]
17 ErrorResponse(u16, String),
18 #[error("DamlJsonError: url parse error: {0}")]
19 UrlParseError(#[from] url::ParseError),
20 #[error("DamlJsonError: unhandled http response code: {0}")]
21 UnhandledHttpResponse(String),
22 #[error("DamlJsonError: unexpected GRPC event")]
23 UnexpectedGrpcEvent,
24
25 #[error("DamlJsonError: Transaction tree did not contain an exercised event")]
27 MissingExercisedEvent,
28}
29
30pub type DamlJsonReqConResult<T> = Result<T, DamlJsonReqConError>;
32
33#[derive(Error, Debug)]
35pub enum DamlJsonReqConError {
36 #[error("DamlJsonError: codec error: {0}")]
37 CodecError(#[from] DamlJsonCodecError),
38 #[error("DamlJsonError: GRPC error: {0}")]
39 DamlGrpcError(#[from] daml_grpc::data::DamlError),
40 #[error("DamlJsonError: invalid template id format: {0}")]
41 TemplateIdFormatError(String),
42 #[error("DamlJsonError: unknown template id: {0}")]
43 UnknownTemplateId(String),
44 #[error("DamlJsonError: template {0} exists in multiple packages: {1:#?}")]
45 MultipleMatchingTemplates(String, Vec<String>),
46 #[error("DamlJsonError: Expected a template for: {0}")]
47 ExpectedTemplateError(String),
48 #[error("DamlJsonError: template does not have a contract key: {0}")]
49 TemplateNoKeyError(String),
50 #[error("DamlJsonError: expected exactly 1 GRPC event")]
51 UnexpectedGrpcEvent,
52 #[error("DamlJsonError: Transaction tree did not contain an exercised event")]
53 MissingExercisedEvent,
54}
55
56pub type DamlJsonCodecResult<T> = Result<T, DamlJsonCodecError>;
58
59#[derive(Error, Debug)]
61pub enum DamlJsonCodecError {
62 #[error("failed to process Daml LF: {0}")]
63 DamlLfError(#[from] daml_lf::DamlLfError),
64 #[error("failed to parse numeric from string: {0}")]
65 NumericParseError(#[from] bigdecimal::ParseBigDecimalError),
66 #[error("failed to parse int64 from string: {0}")]
67 Int64ParseError(#[from] std::num::ParseIntError),
68 #[error("failed to parse date or datetime from string: {0}")]
69 DateParseError(#[from] chrono::format::ParseError),
70 #[error(transparent)]
71 MissingRequiredField(#[from] RequiredError),
72 #[error(transparent)]
73 UnexpectedListEntries(#[from] NotSingleError),
74 #[error("expected JSON type {0} but found type {1}")]
75 UnexpectedJsonType(String, String),
76 #[error("record object did not contain expected field {0}")]
77 MissingJsonRecordObjectField(String),
78 #[error("record array did not contain expected field {1} at index {0}")]
79 MissingJsonRecordArrayField(usize, String),
80 #[error("unknown variant constructor {0}")]
81 UnknownVariantConstructor(String),
82 #[error("unknown enum constructor {0}")]
83 UnknownEnumConstructor(String),
84 #[error("expected empty record for Unit type")]
85 UnexpectedUnitData,
86 #[error("expected an array with either zero or one entry")]
87 UnexpectedOptionalArrayLength,
88 #[error("duplicate genmap keys")]
89 DuplicateGenMapKeys,
90 #[error("expected exactly two types for genmap")]
91 UnexpectedGenMapTypes,
92 #[error("unsupported Daml type {0}")]
93 UnsupportedDamlType(String),
94 #[error("Data item {0} not found in archive")]
95 DataNotFound(String),
96}
97
98pub type DamlJsonSchemaCodecResult<T> = Result<T, DamlJsonSchemaCodecError>;
100
101#[derive(Error, Debug)]
103pub enum DamlJsonSchemaCodecError {
104 #[error("failed to process Daml LF: {0}")]
105 DamlLfError(#[from] daml_lf::DamlLfError),
106 #[error(transparent)]
107 MissingRequiredField(#[from] RequiredError),
108 #[error(transparent)]
109 UnexpectedListEntries(#[from] NotSingleError),
110 #[error(transparent)]
111 JsonError(#[from] serde_json::Error),
112 #[error("Data item {0} not found in archive")]
113 DataNotFound(String),
114 #[error("unsupported Daml type {0} in JSON Schema")]
115 UnsupportedDamlType(String),
116 #[error("Daml type {0} in is not serializable")]
117 NotSerializableDamlType(String),
118 #[error("Daml type variable '{0}' not found in type arguments")]
119 TypeVarNotFoundInArgs(String),
120 #[error("Daml type variable '{0}' not found in type parameters")]
121 TypeVarNotFoundInParams(String),
122}