cca-token-launcher-sdk
v0.2.0
Published
TypeScript SDK for Uniswap CCA interactions
Maintainers
Readme
@cca/sdk
TypeScript SDK for interacting with Uniswap Continuous Clearing Auctions (CCA).
Installation
npm install @cca/sdkFeatures
- Core Library: Types, constants, utilities for CCA interactions
- React Hooks: Wagmi-based hooks for React applications
- Full Type Safety: Comprehensive TypeScript types
- Q96 Math: Utilities for Uniswap v4 fixed-point arithmetic
- MPS Calculations: Token release schedule utilities
Usage
Core Library
import {
AuctionConfigBuilder,
ethToQ96,
calculateMPS,
getAuctionState,
submitBid,
Q96,
MPS_TOTAL,
} from '@cca/sdk';
// Create auction config
const config = new AuctionConfigBuilder()
.withToken('0x...')
.withCurrency('0x...')
.withStartingPrice(1.5) // ETH
.withFloorPrice(0.5) // ETH
.withTotalSupply(1_000_000n * 10n ** 18n)
.withDuration(7 * 24 * 60 * 60) // 7 days
.build();
// Price conversions
const priceQ96 = ethToQ96(1.5); // Convert to Q96React Hooks
import { useAuctionStatus, useSubmitBid, useBidData } from '@cca/sdk/react';
function AuctionComponent() {
const { state, status, isLoading } = useAuctionStatus(auctionAddress);
const { submitBid, isLoading: isSubmitting } = useSubmitBid();
const { bids } = useBidData(auctionAddress, userAddress);
// ...
}API Reference
Types
AuctionConfig- Configuration for creating auctionsAuctionState- Current state of an auctionAuctionStatus- Derived status (PENDING, ACTIVE, etc.)BidData- Individual bid informationBidStatus- Bid status relative to clearing price
Constants
Q96- Fixed-point multiplier (2^96)MPS_TOTAL- Total milli-price steps (1,000,000)CCA_FACTORY_ADDRESS- Factory contract addresses by chain
Utilities
ethToQ96(price)- Convert decimal price to Q96q96ToEth(priceQ96)- Convert Q96 to decimalcalculateMPS(...)- Calculate token release at pricealignPrice(price, tickSpacing)- Align price to tickisTickAligned(price, tickSpacing)- Check tick alignment
Builders
AuctionConfigBuilder- Fluent builder for auction configs
Reads
getAuctionState(client, address)- Fetch auction stategetBidData(client, address, bidId)- Fetch bid datacalculateAuctionStatus(state, block)- Derive status
Writes
submitBid(client, params)- Submit a bidexitBid(client, params)- Exit a bidclaimTokens(client, params)- Claim tokenscreateAuction(client, params)- Deploy new auction
React Hooks
useAuctionStatus(address)- Real-time auction statususeSubmitBid()- Bid submission hookuseExitBid()- Bid exit hookuseClaimTokens()- Token claim hookuseBidData(auction, user)- User's bid datauseCreateAuction()- Auction creation hook
Development
# Install dependencies
npm install
# Run tests
npm test
# Run tests in watch mode
npm run test:watch
# Type check
npm run type-checkDirectory Structure
src/
├── lib/
│ ├── builders/ # AuctionConfigBuilder
│ ├── constants/ # Q96, MPS, addresses
│ ├── reads/ # Read functions (getAuctionState, etc.)
│ ├── types/ # TypeScript types
│ ├── utils/ # Q96 math, MPS, tick utilities
│ └── writes/ # Write functions (submitBid, etc.)
└── react/ # React/Wagmi hooks
tests/
└── integration/ # Integration testsLicense
MIT
