Partially addresses #29912. Motivated by #34683, which exports OpenRPC from existing RPCHelpMan metadata. Sample OpenRPC.
Some RPC help definitions rely on RPCResult::Type::ELISION entries whose structure is only described in prose. This keeps human-readable help concise, but leaves parts of the result layout implicit and prevents tools from deriving complete machine-readable schemas from RPCHelpMan metadata.
This PR replaces ELISION-based reuse with shared structured definitions, so result layouts are represented directly in metadata rather than only in text. At the same time, human-readable help remains compact via explicit help-rendering elision using HelpElision, so previously elided sections stay abbreviated without losing schema completeness.
Affected RPCs: getrawtransaction, getblock, listsinceblock, estimaterawfee, getaddressinfo.
RPC return values are unchanged. Human-readable help remains compact, while structured result metadata becomes explicit enough to derive complete machine-readable schemas.
A related RPCResult::Type::ELISION use in importdescriptors was split out into the follow-up PR #34867 because it changes the generated help output, per this review comment.
Changes:
- Introduce
HelpElision(NONE,START,SKIP) andElideGroup(), replacing the tri-stateprint_elision - Add an
RPCResultcopy-with-replacement-options constructor to support applying elision while keepingm_optsconst - Extend
TxDoc()/TxDocOptionsto support reusable transaction layouts with optionalprevout,fee,hex, and elision behavior - Replace ELISION-based reuse in
getrawtransactionandgetblockwith explicit structured definitions - Factor shared result layouts into
GetBlockFields(),ListSinceBlockTxFields(),FeeRateBucketDoc(),GetAddressInfoEmbeddedFields()andFeeEstimateHorizonDoc() - Expand
listsinceblock.removed,estimaterawfeehorizons/buckets andgetaddressinfo.embeddedinto explicit metadata while preserving concise help output