light-sdk-macros 0.23.0

Macros for Programs using the Light SDK for ZK Compression
Documentation
# Rent-Free Macros

Procedural macros for generating rent-free account types and their hooks for Solana programs.

## Directory Structure

```
rentfree/
├── mod.rs              # Module declaration
├── README.md           # This file
├── accounts/           # #[derive(LightAccounts)] implementation
│   ├── mod.rs          # Entry point: derive_rentfree()
│   ├── parse.rs        # Parsing #[light_account(init)], #[light_account(init)] attributes
│   └── codegen.rs      # LightPreInit/LightFinalize trait generation
├── program/            # #[light_program] implementation
│   ├── mod.rs          # Entry point: light_program_impl()
│   ├── instructions.rs # Instruction generation and handler wrapping
│   ├── crate_context.rs # Crate scanning for #[derive(Accounts)] structs
│   ├── variant_enum.rs # LightAccountVariant enum generation
│   └── seed_providers.rs # PDA/CToken seed derivation implementations
└── traits/             # Shared trait derive macros
    ├── mod.rs          # Module declaration
    ├── traits.rs       # HasCompressionInfo, CompressAs, Compressible
    ├── pack_unpack.rs  # Pack/Unpack trait implementations
    ├── light_compressible.rs # LightAccount combined derive
    ├── anchor_seeds.rs # Seed extraction from Anchor attributes
    ├── decompress_context.rs # DecompressContext trait generation
    └── utils.rs        # Shared utility functions
```

## Modules

### `accounts/` - RentFree Derive Macro

Implements `#[derive(LightAccounts)]` for Anchor Accounts structs:

- **parse.rs** - Parses `#[light_account(init)]`, `#[light_account(token)]`, `#[light_account(init)]` attributes
- **codegen.rs** - Generates `LightPreInit` and `LightFinalize` trait implementations

### `program/` - RentFree Program Macro

Implements `#[light_program]` attribute macro:

- **instructions.rs** - Main macro logic, generates compress/decompress handlers
- **crate_context.rs** - Scans crate for `#[derive(Accounts)]` structs
- **variant_enum.rs** - Generates `LightAccountVariant` enum with all traits
- **seed_providers.rs** - PDA and CToken seed provider implementations

### `traits/` - Shared Trait Derives

Core trait implementations shared across macros:

- **traits.rs** - `HasCompressionInfo`, `CompressAs`, `Compressible` derives
- **pack_unpack.rs** - Generates `PackedXxx` structs, `Pack`/`Unpack` traits
- **light_compressible.rs** - `LightAccount` combined derive macro
- **anchor_seeds.rs** - Extracts seeds from `#[account(seeds = [...])]`
- **decompress_context.rs** - `DecompressContext` trait generation
- **utils.rs** - Shared utilities (e.g., empty CToken enum generation)