Skip to main content

toolkit_contract/
lib.rs

1#![cfg_attr(coverage_nightly, feature(coverage_attribute))]
2
3pub mod contract;
4pub mod descriptor;
5pub mod error;
6pub mod grpc_repr;
7pub mod ir;
8pub mod policy;
9pub mod query;
10pub mod runtime;
11pub mod wiring;
12
13#[cfg(feature = "grpc-client")]
14pub mod grpc;
15
16pub use contract::{Contract, ServiceContract};
17pub use descriptor::{ContractDescriptor, ContractKind, MethodDescriptor, ServiceDescriptor};
18pub use error::ContractError;
19pub use grpc_repr::{
20    GrpcRepr, GrpcReprScalar, MissingRequiredMessage, ProtoDecodeError, SecurityContextMarker,
21    TryFromProto, UnknownEnumDiscriminant, ViaStringParseError, assert_security_context,
22};
23pub use ir::{
24    ContractIr, FieldIr, FieldRole, GrpcBindingIr, GrpcIdempotency, GrpcMethodBindingIr,
25    HttpBindingIr, HttpFieldBinding, HttpMethod, HttpMethodBindingIr, Idempotency, InputShape,
26    MethodIr, MethodKind, PrimitiveType, ServiceIr, StreamFraming, TypeRef, ValidationError,
27    validate_contract, validate_grpc_binding, validate_http_binding,
28};
29pub use policy::{Policy, PolicyContext, PolicyStack, TracingPolicy};
30pub use query::{QueryParamSpec, QueryParams, QueryScalar};
31pub use toolkit_contract_macros::{
32    ContractError, ProtoBridge, QueryParams, consumes, contract, grpc_contract, provides,
33    rest_contract,
34};
35pub use wiring::{ClientTuning, ClientWiring, ReconnectSettings, RetrySettings};
36
37/// Re-export of `tracing` for macro-generated client code.
38///
39/// Generated REST/gRPC clients emit per-method spans through this path
40/// (`#support::__tracing::…`) so SDK crates that only depend on
41/// `toolkit-contract` do not need a direct `tracing` dependency. Not part of
42/// the stable public API.
43#[doc(hidden)]
44pub use tracing as __tracing;
45
46// Wire envelope: re-export `Problem` from the canonical-errors leaf so all
47// downstream crates have a single import path to the RFC 9457 envelope.
48#[cfg(feature = "canonical-errors")]
49pub use toolkit_canonical_errors::{Problem, ProblemCategory};