pnpm + TypeScript workspace per design doc §13:
- apps/{web,api,worker} skeletons (Next.js 16, Fastify 5, BullMQ)
- packages/{core,solana,prometheus,db,config} (core has real types/DTOs;
solana/prometheus are stubs)
- programs/pyre-core placeholder (future Anchor, v1.0)
- docs/: PYRE_MVP_DESIGN (canonical), ARCHITECTURE, SECURITY, TOKEN_CLASSIFICATION
- CLAUDE.md, README, .env.example (no private-key var by design)
Skeleton + docs only — no Solana/business logic yet. All workspaces typecheck clean.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
34 lines
1.0 KiB
Markdown
34 lines
1.0 KiB
Markdown
# @pyre/solana
|
|
|
|
Solana transaction helpers for PYRE.
|
|
|
|
## Purpose
|
|
|
|
Token-account reading and **unsigned** transaction construction for the burner
|
|
flow. Per §13 its responsibilities are:
|
|
|
|
- Token-account parsing.
|
|
- Close-account transaction builder.
|
|
- Burn transaction builder.
|
|
- Simulation helpers.
|
|
- Transaction decoder (for preview matching).
|
|
|
|
## Trust rules (load-bearing)
|
|
|
|
- PYRE never holds private keys — this package builds **unsigned** transactions;
|
|
signing happens client-side in the user's wallet.
|
|
- Recovered ATA rent defaults to the user's own wallet.
|
|
- Always simulate, then **decode** and match against the user-facing preview
|
|
before requesting a signature.
|
|
- Classic SPL only in the MVP. Skip Token-2022, NFTs, and unsupported layouts.
|
|
|
|
## Status
|
|
|
|
**Stubs only.** Every exported function throws `Error("not implemented")`.
|
|
|
|
## TODO
|
|
|
|
- Implement `parseTokenAccounts`, `buildCloseEmptyAccountsTx`, `buildBurnTx`,
|
|
`simulateTransaction`, and `decodeTransaction`.
|
|
- Wire classification through `@pyre/core`.
|