@ferra-labs/dlmm
v1.0.8
Published
Discrete Liquidity Market Maker SDK
Downloads
560
Readme
A monorepo containing SDKs for CLMM (Concentrated Liquidity Market Maker), DLMM (Discrete Liquidity Market Maker) protocols, and DEX Aggregator.
Packages
@ferra-labs/clmm- Concentrated Liquidity Market Maker SDK@ferra-labs/dlmm- Discrete Liquidity Market Maker SDK@ferra-labs/aggregator- DEX Aggregator SDK
Package Installation
# Install CLMM only
npm install @ferra-labs/clmm
# Install DLMM only
npm install @ferra-labs/dlmm
# Install Aggregator only
npm install @ferra-labs/aggregator
# Install all packages
npm install @ferra-labs/clmm @ferra-labs/dlmm @ferra-labs/aggregatorQuick Start
# Install dependencies
pnpm install
# Build all packages
pnpm build
# Run tests
pnpm test
# Lint code
pnpm lintDevelopment
Prerequisites
- Node.js >= 16
- pnpm >= 8
Setup
git clone <repository-url>
cd ferra-sdks
pnpm install
pnpm prepareAvailable Scripts
pnpm build- Build all packagespnpm dev- Start development mode with watchpnpm lint- Lint all packagespnpm test- Run tests for all packagespnpm clean- Clean build outputspnpm changeset- Create a changeset for releases
Package-Specific Commands
# Build specific package
pnpm --filter @ferra-labs/clmm build
pnpm --filter @ferra-labs/dlmm build
pnpm --filter @ferra-labs/aggregator build
# Run tests for specific package
pnpm --filter @ferra-labs/clmm test
pnpm --filter @ferra-labs/dlmm test
pnpm --filter @ferra-labs/aggregator test
# Start development mode for specific package
pnpm --filter @ferra-labs/clmm dev
pnpm --filter @ferra-labs/dlmm dev
pnpm --filter @ferra-labs/aggregator devPublishing
This project uses Changesets for version management and publishing.
# 1. Create changeset
pnpm changeset
# 2. Version packages
pnpm version-packages
# 3. Publish
pnpm releaseContributing
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
🎯 Key Features of This Setup
✅ Monorepo Benefits
- Shared configuration across packages
- Unified development workflow
- Cross-package dependency management
- Consistent tooling and standards
✅ Independent Publishing
- Each package can be installed separately
- Individual versioning with changesets
- Selective updates for users
- Modular architecture
✅ Developer Experience
- Fast builds with tsup
- Hot reloading in development
- Automated linting and formatting
- Git hooks for quality control
- TypeScript support throughout
✅ Production Ready
- Multiple output formats (CJS + ESM)
- TypeScript declarations
- Source maps for debugging
- Tree shaking support
- Minification for production
✅ Maintenance
- Automated releases with changesets
- Consistent code style with prettier/eslint
- Commit message standards with commitlint
- Pre-commit hooks with husky
🔧 Next Steps
Initialize the repository:
mkdir ferra-sdks cd ferra-sdks git initCreate the structure:
# Create directories mkdir -p packages/clmm/src packages/dlmm/src packages/aggregator/src shared .husky/_ .changeset # Copy all the configuration files aboveSetup and install:
pnpm install pnpm prepareStart developing:
# Add your CLMM logic to packages/clmm/src/ # Add your DLMM logic to packages/dlmm/src/ # Add your Aggregator logic to packages/aggregator/src/Build and test:
pnpm build pnpm test
This setup provides a production-ready monorepo that allows users to install @ferra-labs/clmm, @ferra-labs/dlmm, and @ferra-labs/aggregator independently!
NPM Packages Management
Publishing Workflow
# Create changeset
pnpm changesetVersion packages
pnpm version-packagesPublish to npm
pnpm releasePackage Installation (After Publishing)
# Install CLMM only
npm install @ferra-labs/clmm
# Install DLMM only
npm install @ferra-labs/dlmm
# Install Aggregator only
npm install @ferra-labs/aggregator
# Install specific combination
npm install @ferra-labs/clmm @ferra-labs/aggregator
# Install all packages
npm install @ferra-labs/clmm @ferra-labs/dlmm @ferra-labs/aggregatorPre-release Testing
# Publish beta version
pnpm changeset pre enter beta
pnpm version-packages
pnpm release
# Install beta versions
npm install @ferra-labs/clmm@beta
npm install @ferra-labs/dlmm@beta
npm install @ferra-labs/aggregator@beta
# Exit pre-release mode
pnpm changeset pre exit