1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
//! Request-bound response authority.
//!
//! Every decision arm that answers a specific [`super::ClientRequest`] carries
//! one of these bound types instead of a bare [`super::ServerValue`]. Each
//! bound type exposes constructors ONLY for the server values the frozen
//! contract's R-D1 register admits for its request, so pairing a request with
//! an outcome outside its legal set — for example answering a
//! `RecordAdmission` with `EnrollBound` — is a compile error by construction,
//! the same discipline as the four-variant detach cell.
//!
//! The legal request-to-response matrix is transcribed, not invented: it is
//! the R-D1 register of `docs/design/PARTICIPANT-CONTRACT.md` @
//! `55856ae3c53206f9c662e6815650dfc67a89ce85` (the outcome table at lines
//! 5624-5689 and the exhaustive-pair rule at lines 5773-5784). Constructor
//! doc comments cite the exact register rows.
//!
//! Constructor visibility follows one auditable rule:
//!
//! * A constructor whose arguments cannot encode another request's origin —
//! the request's own common envelope plus response-specific suffix fields,
//! or a payload type that exists only for this request — is `pub`.
//! * A constructor accepting a multi-request union payload (for example
//! [`super::Retired`] or [`super::ObserverBackpressure`]) is `pub(crate)`:
//! those values are minted exclusively by this crate's own selectors for
//! the exact request flow that invokes them, and a consuming server can
//! never hand-build a refusal from them.
//!
//! Exactly one wire value stays unbound: `ParticipantTransportRejected`
//! (`0x0100`) is presemantic — the register row at line 5626 and the routing
//! rule at lines 5779-5781 state it has no decodable originating request —
//! so it is deliberately absent from every bound type here.
pub use ;
pub use CredentialAttachResponse;
pub use EnrollmentResponse;
pub use ;
pub use ;