# Grep cheatsheet

> Where to look in the v2-monorepo codebase when you need to find something. Optimized for grep / glob, not for reading.

Where to look in the v2-monorepo codebase when you need to find something. Optimized for grep / glob, not for reading.

## SDK entry points

```bash
# Builder API:
grep -rn "PoolSessionBuilder" packages/sdk/src/services/poolSessions/

# Top-level SDK exports:
cat packages/sdk/src/index.ts
cat packages/sdk/src/external.ts
```

## Type definitions

```bash
# All public types live here:
ls packages/sdk/src/types/

# Schemas (Zod validators):
ls packages/sdk/src/schemas/

# Errors hierarchy:
ls packages/sdk/src/errors/
```

## Constants

```bash
# Tree depths, metadata standard, etc.
cat packages/sdk/src/constant/WitnessPreparationService.ts

# Canonical contract addresses per chainId:
cat packages/sdk/src/constant/deployments.ts

# Auth type constants:
cat packages/sdk/src/constant/KeyDerivation.ts
```

## Circuits

```bash
# Main circuits:
ls packages/circuits/circuits/main/
# → deposit.circom, ragequit.circom, transact.circom, transact/
# NxM variants live in main/transact/ (transact_1x1.circom ... transact_5x5.circom)

# Templates (helpers):
ls packages/circuits/circuits/templates/helpers/
# → KeystoreLeaf.circom, NoteCommitment.circom, ValueConservation.circom, etc.

# Build artifacts (LFS):
ls packages/circuits/build/
```

## Contracts

```bash
# Solidity sources:
ls packages/contracts/src/contracts/
# → PoolVault.sol, Entrypoint.sol, Keystore.sol, ASPRegistry.sol, PrivacyPoolRelay.sol

# Errors (in PoolVault.sol):
grep -nE "error PoolVault" packages/contracts/src/interfaces/IPoolVault.sol
```

## Example integrations

```bash
# Reference SDK consumer (Node/CLI):
ls apps/sample/src/
# → deposit/, transfer/, withdraw/, ragequit/, keystore/, paymentRequest/,
#   noteDiscovery/, asp/, builder/, persistence/, ...

# Per-scenario runners:
ls apps/sample/package.json   # check:* scripts

# Browser-side example:
ls apps/sample-web/src/
# → FetchCircuitArtifacts.ts, deposit.ts, ...
```

## Tech-design specs

```bash
ls docs/tech-design/
# → circuits/, contracts/, sdk/, future-ideas/

# Specific design docs:
cat docs/tech-design/sdk/pool-session.md
cat docs/tech-design/circuits/circuits-tech-design.md
```

## Common grep patterns

```bash
# Find error definitions:
grep -rn "extends.*BaseError" packages/sdk/src/errors/

# Find @throws annotations (interface contracts):
grep -rn "@throws" packages/sdk/src/interfaces/

# Find Poseidon usage:
grep -rnE "Poseidon|hashService\.hash" packages/sdk/src/

# Find on-chain ABI methods used by SDK:
grep -rn "functionName:" packages/sdk/src/services/contractInteractors/
```

## Yield, swaps, batch, stealth, relayer

```bash
# Yield contracts (wrapper, zap, router, factories):
ls packages/contracts/src/contracts/ | grep -E "PPYield|PPRouter"
cat packages/contracts/src/contracts/PPRouter.sol          # NATIVE_MODE, depositExactShares(Native), withdrawToUnderlying

# RelaySwaps lives in its own package (execute / executeUnwrapped, approvedRouters / approvedZaps):
cat packages/swaps/contracts/src/RelaySwaps.sol
cat packages/swaps/contracts/src/generated/RoutingTypehash.sol   # EIP-712 ROUTING_TYPEHASH, generated from the AST

# Relay entry points beyond relay(): relayBatch, relayAndAnnounce, registerAndRelay, MAX_BATCH
grep -n "function " packages/contracts/src/contracts/PrivacyPoolRelay.sol

# SDK yield / batch / swap sessions and their types:
ls packages/sdk/src/services/poolSessions/ | grep -E "Yield|Batch|Swap|Reshield"
cat packages/sdk/src/constant/Yield.ts                     # ABIs, sizing constants, YIELD_DEPLOYMENTS (empty)
cat packages/sdk/src/constant/BatchWithdraw.ts             # MAX_BATCH
cat packages/sdk/src/services/poolSessions/computeBatchFees.ts

# Stealth module (separate subpath @privacy-pools-v2/sdk/stealth):
ls packages/sdk/src/stealth/
cat packages/sdk/src/stealth/index.ts                      # the public surface
cat packages/sdk/src/stealth/constants.ts                  # CANONICAL_ANNOUNCER_ADDRESS

# Relayer routes, processor allowlist, yield discovery:
grep -rn "@Post(" packages/relayer/relayer/src/quote/quote.controller.ts packages/relayer/relayer/src/relay/relay.controller.ts
grep -n "allowed_processors" packages/relayer/relayer/src/config/evm/evm.config.schemas.ts
cat packages/relayer/relayer/src/details/yield-discovery.service.ts

# Per-chain deployments and assets (Sepolia, plus internal staging entries; the mainnet entry reverts until deployed):
cat packages/contracts/script/registries/ChainDeploymentRegistry.sol
cat packages/contracts/script/registries/ChainAssetRegistry.sol

# Design docs for the above:
ls docs/tech-design/contracts/   # yield.md, batch-withdrawal.md
ls docs/tech-design/sdk/         # yield-sessions.md, batch-withdraw.md, withdraw-and-swap.md, stealth.md
```
