# sendfun-sdk
Rust SDK for the send.fun programs on Solana.
- `launchpad`: token creation, bonding curve trades, migration.
- `dex`: AMM trades after migration.
- `nexus`: staking and partner fees.
- `transfer_hook`: the Token-2022 transfer-hook accounts of a trade. It
resolves them from accounts that you fetch, without RPC.
The SDK builds instructions, decodes accounts and events, and calculates quotes
(`launchpad::quote`, `dex::quote`). It has no RPC client and does not send
transactions.
Fetch accounts with your own client. Compatible: `solana-rpc-client` 3.x and
4.1+, blocking and nonblocking. Not compatible: 4.0.x.
Decode an account with the `from_account` function of its type. `from_account`
checks the owner, then the discriminator:
```rust,ignore
use sendfun_sdk::launchpad::accounts::BondingCurve;
let account = rpc.get_account(&address)?;
let curve = BondingCurve::from_account(&account.owner, &account.data)?;
```
`get_account` fails when the account does not exist. For an account that can
be missing, use `get_account_with_commitment`. Its `value` is `None` for a
missing account. Decode with `from_account_maybe`. It returns `Ok(None)` for an
uncreated PDA that holds lamports.
## Install
```sh
cargo add sendfun-sdk
```
Optional features:
- `serde`: `Serialize` and `Deserialize` on accounts, events and types.
- `anchor`: `anchor-lang` interop for on-chain callers.
## Rules
- For a trade, read `platform_config` from the bonding curve or the pool. Do
not use your own platform key.
- A partner other than `DEFAULT_PARTNER` must sign.
- `constants::find_platform_address(slug)` returns the key of a platform.
- Do not edit the `generated` modules. They come from the program IDLs.
## Jupiter
`jupiter/` holds a separate crate, `sendfun-jupiter`. It implements the
`jupiter-amm-interface` `Amm` trait for the launchpad and the DEX. Its parity
tests run each quote against the deployed program binaries in `LiteSVM`. The
crate has its own workspace and lockfile. Build and test it on its own:
```sh
cd jupiter && cargo test
```
`jupiter/README.md` describes market discovery, the partner schedule, transfer
hooks and the swap account layout.
## Documentation
<https://docs.send.fun>
## License
MIT, see the `LICENSE` file.