The bindings escape hatch
@aephia/sage/bindings re-exports the generated @staratlas/dev-sage client
unchanged. It exists so that a missing feature in this SDK is an inconvenience
rather than a wall.
What you get
Section titled “What you get”The full generated surface: account decoders, instruction builders, PDA helpers, and the types they use — roughly 48 account types and 239 instructions at the pinned version.
What you give up
Section titled “What you give up”Reaching into bindings steps outside every guarantee the rest of the SDK
makes:
- No validation. The SDK checks program ownership, discriminators, data shape, and minimum length before decoding. Generated decoders do not, so a wrong or truncated account decodes into plausible nonsense instead of raising.
- No caching. Reads go straight to your RPC every time, with no shared snapshot and no provenance.
- No stable types. Generated types change when the bindings are regenerated for a new program version. The SDK’s own snapshot types are insulated from that; yours will not be.
- No read-only guarantee. The generated client includes instruction
builders. This SDK never signs or submits, but nothing stops code written
against
bindingsfrom doing so.
When to use it
Section titled “When to use it”When you need an account type or field the SDK has not adapted yet, and you would otherwise be blocked. That is the whole purpose, and using it for that is not a workaround — it is the designed path.
If you find yourself using it repeatedly for the same thing, that is a signal the SDK should adapt it properly. Open an issue describing the account and the read you need.