@hammerock/cca-sdk 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +145 -0
- package/dist/chunk-ABCX23D6.js +446 -0
- package/dist/chunk-ABCX23D6.js.map +1 -0
- package/dist/erc20-C3yff839.d.cts +231 -0
- package/dist/erc20-C3yff839.d.ts +231 -0
- package/dist/index.cjs +998 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +2717 -0
- package/dist/index.d.ts +2717 -0
- package/dist/index.js +485 -0
- package/dist/index.js.map +1 -0
- package/dist/node.cjs +448 -0
- package/dist/node.cjs.map +1 -0
- package/dist/node.d.cts +97 -0
- package/dist/node.d.ts +97 -0
- package/dist/node.js +277 -0
- package/dist/node.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/abis/auction.ts","../src/abis/factory.ts","../src/abis/auctionStateLens.ts","../src/abis/index.ts","../src/q96.ts","../src/constants.ts","../src/discover.ts","../src/erc20.ts","../src/read.ts"],"names":[],"mappings":"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","file":"chunk-ABCX23D6.js","sourcesContent":["// GENERATED FILE - DO NOT EDIT.\n// Source: Uniswap/continuous-clearing-auction @ v1.1.0 (a0aabaa45d8677a4944fc04d5dea2c4b499b3d3a)\n// Contract: ContinuousClearingAuction\n// Regenerate with: ./contracts/sync-abis.sh\n\nexport const auctionAbi = [{\"type\":\"constructor\",\"inputs\":[{\"name\":\"_token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_totalSupply\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_parameters\",\"type\":\"tuple\",\"internalType\":\"struct AuctionParameters\",\"components\":[{\"name\":\"currency\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"tokensRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"fundsRecipient\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"startBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"claimBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"tickSpacing\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"validationHook\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"floorPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"requiredCurrencyRaised\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"auctionStepsData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"MAX_BID_PRICE\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_BLOCK_NUMBER\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"MAX_TICK_PTR\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"bids\",\"inputs\":[{\"name\":\"bidId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct Bid\",\"components\":[{\"name\":\"startBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"startCumulativeMps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"exitedBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"maxPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amountQ96\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"tokensFilled\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"checkpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct Checkpoint\",\"components\":[{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyRaisedAtClearingPriceQ96_X7\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"},{\"name\":\"cumulativeMpsPerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cumulativeMps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"prev\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"next\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"checkpoints\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct Checkpoint\",\"components\":[{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyRaisedAtClearingPriceQ96_X7\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"},{\"name\":\"cumulativeMpsPerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cumulativeMps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"prev\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"next\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"claimTokens\",\"inputs\":[{\"name\":\"_bidId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"claimTokensBatch\",\"inputs\":[{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_bidIds\",\"type\":\"uint256[]\",\"internalType\":\"uint256[]\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"clearingPrice\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currency\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currencyRaised\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"currencyRaisedQ96_X7\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"endBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"exitBid\",\"inputs\":[{\"name\":\"_bidId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"exitPartiallyFilledBid\",\"inputs\":[{\"name\":\"_bidId\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_lastFullyFilledCheckpointBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"_outbidBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"floorPrice\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"forceIterateOverTicks\",\"inputs\":[{\"name\":\"_untilTickPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"fundsRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"isGraduated\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lastCheckpointedBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"latestCheckpoint\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct Checkpoint\",\"components\":[{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyRaisedAtClearingPriceQ96_X7\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"},{\"name\":\"cumulativeMpsPerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cumulativeMps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"prev\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"next\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"lbpInitializationParams\",\"inputs\":[],\"outputs\":[{\"name\":\"params\",\"type\":\"tuple\",\"internalType\":\"struct LBPInitializationParams\",\"components\":[{\"name\":\"initialPriceX96\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"tokensSold\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyRaised\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextActiveTickPrice\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"nextBidId\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"onTokensReceived\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"pointer\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"startBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint64\",\"internalType\":\"uint64\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"step\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct AuctionStep\",\"components\":[{\"name\":\"mps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"startBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"endBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"submitBid\",\"inputs\":[{\"name\":\"_maxPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_amount\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_hookData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"submitBid\",\"inputs\":[{\"name\":\"_maxPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_amount\",\"type\":\"uint128\",\"internalType\":\"uint128\"},{\"name\":\"_owner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"_prevTickPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"_hookData\",\"type\":\"bytes\",\"internalType\":\"bytes\"}],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"payable\"},{\"type\":\"function\",\"name\":\"sumCurrencyDemandAboveClearingQ96\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"supportsInterface\",\"inputs\":[{\"name\":\"interfaceId\",\"type\":\"bytes4\",\"internalType\":\"bytes4\"}],\"outputs\":[{\"name\":\"\",\"type\":\"bool\",\"internalType\":\"bool\"}],\"stateMutability\":\"pure\"},{\"type\":\"function\",\"name\":\"sweepCurrency\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sweepCurrencyBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"sweepUnsoldTokens\",\"inputs\":[],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"sweepUnsoldTokensBlock\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tickSpacing\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"ticks\",\"inputs\":[{\"name\":\"price\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct Tick\",\"components\":[{\"name\":\"next\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyDemandQ96\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"token\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"tokensRecipient\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalCleared\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"uint256\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalClearedQ96_X7\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"totalSupply\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"uint128\",\"internalType\":\"uint128\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"validationHook\",\"inputs\":[],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"contract IValidationHook\"}],\"stateMutability\":\"view\"},{\"type\":\"event\",\"name\":\"AuctionStepRecorded\",\"inputs\":[{\"name\":\"startBlock\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"endBlock\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"mps\",\"type\":\"uint24\",\"indexed\":false,\"internalType\":\"uint24\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BidExited\",\"inputs\":[{\"name\":\"bidId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"tokensFilled\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"currencyRefunded\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"BidSubmitted\",\"inputs\":[{\"name\":\"id\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"price\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"amount\",\"type\":\"uint128\",\"indexed\":false,\"internalType\":\"uint128\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CheckpointUpdated\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"cumulativeMps\",\"type\":\"uint24\",\"indexed\":false,\"internalType\":\"uint24\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"ClearingPriceUpdated\",\"inputs\":[{\"name\":\"blockNumber\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"CurrencySwept\",\"inputs\":[{\"name\":\"fundsRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"currencyAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"NextActiveTickUpdated\",\"inputs\":[{\"name\":\"price\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TickInitialized\",\"inputs\":[{\"name\":\"price\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokensClaimed\",\"inputs\":[{\"name\":\"bidId\",\"type\":\"uint256\",\"indexed\":true,\"internalType\":\"uint256\"},{\"name\":\"owner\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"tokensFilled\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokensReceived\",\"inputs\":[{\"name\":\"totalSupply\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"event\",\"name\":\"TokensSwept\",\"inputs\":[{\"name\":\"tokensRecipient\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"tokensAmount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"AuctionIsNotFinalized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AuctionIsNotOver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AuctionIsOver\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AuctionNotStarted\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"AuctionSoldOut\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BatchClaimDifferentOwner\",\"inputs\":[{\"name\":\"expectedOwner\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"receivedOwner\",\"type\":\"address\",\"internalType\":\"address\"}]},{\"type\":\"error\",\"name\":\"BidAlreadyExited\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidAmountTooSmall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidIdDoesNotExist\",\"inputs\":[{\"name\":\"bidId\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"BidMustBeAboveClearingPrice\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidNotExited\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"BidOwnerCannotBeZeroAddress\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotExitBid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotPartiallyExitBidBeforeEndBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotPartiallyExitBidBeforeGraduation\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotSweepCurrency\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotSweepTokens\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CannotUpdateUninitializedTick\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CheckpointBlockNotIncreasing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ClaimBlockIsBeforeEndBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"CurrencyIsNotNative\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ERC20TransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FloorPriceAndTickSpacingGreaterThanMaxBidPrice\",\"inputs\":[{\"name\":\"nextTick\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxBidPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"FloorPriceAndTickSpacingTooLarge\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FloorPriceIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FloorPriceTooLow\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"FundsRecipientIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAmount\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidAuctionDataLength\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidBidPriceTooHigh\",\"inputs\":[{\"name\":\"maxPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"maxBidPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidBidUnableToClear\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEndBlock\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidEndBlockGivenStepData\",\"inputs\":[{\"name\":\"actualEndBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"expectedEndBlock\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"type\":\"error\",\"name\":\"InvalidLastFullyFilledCheckpointHint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidOutbidBlockCheckpointHint\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidStepDataMps\",\"inputs\":[{\"name\":\"actualMps\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"expectedMps\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"InvalidTickPrice\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidTokenAmountReceived\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"MpsRemainingIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NativeTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotClaimable\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"NotGraduated\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"Reentrancy\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StepBlockDeltaCannotBeZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StepLib__InvalidOffsetNotAtStepBoundary\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"StepLib__InvalidOffsetTooLarge\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TickHintMustBeGreaterThanNextActiveTickPrice\",\"inputs\":[{\"name\":\"tickPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"nextActiveTickPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]},{\"type\":\"error\",\"name\":\"TickNotInitialized\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TickPreviousPriceInvalid\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TickPriceNotAtBoundary\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TickPriceNotIncreasing\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TickSpacingTooSmall\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokenAndCurrencyCannotBeTheSame\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokenIsAddressZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokenTransferFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokensNotReceived\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TokensRecipientIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSupplyIsTooLarge\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"TotalSupplyIsZero\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"ValidationHookCallFailed\",\"inputs\":[{\"name\":\"reason\",\"type\":\"bytes\",\"internalType\":\"bytes\"}]}] as const;\n","// GENERATED FILE - DO NOT EDIT.\n// Source: Uniswap/continuous-clearing-auction @ v1.1.0 (a0aabaa45d8677a4944fc04d5dea2c4b499b3d3a)\n// Contract: ContinuousClearingAuctionFactory\n// Regenerate with: ./contracts/sync-abis.sh\n\nexport const factoryAbi = [{\"type\":\"function\",\"name\":\"getAuctionAddress\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"configData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"},{\"name\":\"sender\",\"type\":\"address\",\"internalType\":\"address\"}],\"outputs\":[{\"name\":\"\",\"type\":\"address\",\"internalType\":\"address\"}],\"stateMutability\":\"view\"},{\"type\":\"function\",\"name\":\"initializeDistribution\",\"inputs\":[{\"name\":\"token\",\"type\":\"address\",\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"configData\",\"type\":\"bytes\",\"internalType\":\"bytes\"},{\"name\":\"salt\",\"type\":\"bytes32\",\"internalType\":\"bytes32\"}],\"outputs\":[{\"name\":\"distributionContract\",\"type\":\"address\",\"internalType\":\"contract IDistributionContract\"}],\"stateMutability\":\"nonpayable\"},{\"type\":\"event\",\"name\":\"AuctionCreated\",\"inputs\":[{\"name\":\"auction\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"token\",\"type\":\"address\",\"indexed\":true,\"internalType\":\"address\"},{\"name\":\"amount\",\"type\":\"uint256\",\"indexed\":false,\"internalType\":\"uint256\"},{\"name\":\"configData\",\"type\":\"bytes\",\"indexed\":false,\"internalType\":\"bytes\"}],\"anonymous\":false},{\"type\":\"error\",\"name\":\"InvalidTokenAmount\",\"inputs\":[{\"name\":\"amount\",\"type\":\"uint256\",\"internalType\":\"uint256\"}]}] as const;\n","// GENERATED FILE - DO NOT EDIT.\n// Source: Uniswap/continuous-clearing-auction @ v1.1.0 (a0aabaa45d8677a4944fc04d5dea2c4b499b3d3a)\n// Contract: AuctionStateLens\n// Regenerate with: ./contracts/sync-abis.sh\n\nexport const auctionStateLensAbi = [{\"type\":\"function\",\"name\":\"revertWithState\",\"inputs\":[{\"name\":\"auction\",\"type\":\"address\",\"internalType\":\"contract IContinuousClearingAuction\"}],\"outputs\":[],\"stateMutability\":\"nonpayable\"},{\"type\":\"function\",\"name\":\"state\",\"inputs\":[{\"name\":\"auction\",\"type\":\"address\",\"internalType\":\"contract IContinuousClearingAuction\"}],\"outputs\":[{\"name\":\"\",\"type\":\"tuple\",\"internalType\":\"struct AuctionState\",\"components\":[{\"name\":\"checkpoint\",\"type\":\"tuple\",\"internalType\":\"struct Checkpoint\",\"components\":[{\"name\":\"clearingPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"currencyRaisedAtClearingPriceQ96_X7\",\"type\":\"uint256\",\"internalType\":\"ValueX7\"},{\"name\":\"cumulativeMpsPerPrice\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"cumulativeMps\",\"type\":\"uint24\",\"internalType\":\"uint24\"},{\"name\":\"prev\",\"type\":\"uint64\",\"internalType\":\"uint64\"},{\"name\":\"next\",\"type\":\"uint64\",\"internalType\":\"uint64\"}]},{\"name\":\"currencyRaised\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"totalCleared\",\"type\":\"uint256\",\"internalType\":\"uint256\"},{\"name\":\"isGraduated\",\"type\":\"bool\",\"internalType\":\"bool\"}]}],\"stateMutability\":\"nonpayable\"},{\"type\":\"error\",\"name\":\"CheckpointFailed\",\"inputs\":[]},{\"type\":\"error\",\"name\":\"InvalidRevertReasonLength\",\"inputs\":[]}] as const;\n\n/** Deployed runtime bytecode, for eth_call state-override reads.\n * Lets Beacon run the lens without deploying it. */\nexport const auctionStateLensDeployedBytecode = \"0x608060405234801561000f575f80fd5b5060043610610034575f3560e01c806321a13d371461003857806331e658a51461004d575b5f80fd5b61004b61004636600461048a565b610076565b005b61006061005b36600461048a565b6102c7565b60405161006d91906104bd565b60405180910390f35b8073ffffffffffffffffffffffffffffffffffffffff1663c2c4c5c16040518163ffffffff1660e01b815260040160c0604051808303815f875af19250505080156100fc575060408051601f3d9081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe01682019092526100f991810190610620565b60015b610132576040517fd027b09000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60405180608001604052808381526020018473ffffffffffffffffffffffffffffffffffffffff1663998ba4fc6040518163ffffffff1660e01b8152600401602060405180830381865afa15801561018d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906101b1919061063a565b81526020018473ffffffffffffffffffffffffffffffffffffffff16633e9d91746040518163ffffffff1660e01b8152600401602060405180830381865afa1580156101ff573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610223919061063a565b81526020018473ffffffffffffffffffffffffffffffffffffffff16639e5f26026040518163ffffffff1660e01b8152600401602060405180830381865afa158015610271573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906102959190610660565b151581525090505f816040516020016102ae91906104bd565b6040516020818303038152906040529050805160208201fd5b60408051610140810182525f6080820181815260a0830182905260c0830182905260e083018290526101008301829052610120830182905282526020820181905291810182905260608101919091526040517f21a13d3700000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8316600482015230906321a13d37906024015f604051808303815f87803b15801561037a575f80fd5b505af192505050801561038b575060015b6103ce573d8080156103b8576040519150601f19603f3d011682016040523d82523d5f602084013e6103bd565b606091505b506103c7816103d3565b9392505050565b919050565b60408051610140810182525f6080820181815260a0830182905260c0830182905260e083018290526101008301829052610120830182905282526020820181905291810182905260608101919091528151610120146104705760208251111561043e57815160208301fd5b6040517fa75357f900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818060200190518101906104849190610679565b92915050565b5f6020828403121561049a575f80fd5b813573ffffffffffffffffffffffffffffffffffffffff811681146103c7575f80fd5b5f61012082019050825180518352602081015160208401526040810151604084015262ffffff606082015116606084015267ffffffffffffffff608082015116608084015267ffffffffffffffff60a08201511660a084015250602083015160c0830152604083015160e0830152606083015161053f61010084018215159052565b5092915050565b60405160c0810167ffffffffffffffff8111828210171561058e577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b60405290565b805167ffffffffffffffff811681146103ce575f80fd5b5f60c082840312156105bb575f80fd5b6105c3610546565b825181526020808401519082015260408084015190820152606083015190915062ffffff811681146105f3575f80fd5b606082015261060460808301610594565b608082015261061560a08301610594565b60a082015292915050565b5f60c08284031215610630575f80fd5b6103c783836105ab565b5f6020828403121561064a575f80fd5b5051919050565b805180151581146103ce575f80fd5b5f60208284031215610670575f80fd5b6103c782610651565b5f61012082840312801561068b575f80fd5b506040516080810167ffffffffffffffff811182821017156106d4577f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b6040526106e184846105ab565b815260c0830151602082015260e083015160408201526107046101008401610651565b6060820152939250505056fea164736f6c634300081a000a\" as const;\n","// GENERATED FILE - DO NOT EDIT.\n// Source: Uniswap/continuous-clearing-auction @ v1.1.0 (a0aabaa45d8677a4944fc04d5dea2c4b499b3d3a)\n// Regenerate with: ./contracts/sync-abis.sh\n\n/** Upstream tag these ABIs were compiled from. */\nexport const UPSTREAM_TAG = \"v1.1.0\";\n/** Exact upstream commit these ABIs were compiled from. */\nexport const UPSTREAM_COMMIT = \"a0aabaa45d8677a4944fc04d5dea2c4b499b3d3a\";\n\nexport { auctionAbi } from \"./auction\";\nexport { factoryAbi } from \"./factory\";\nexport { auctionStateLensAbi, auctionStateLensDeployedBytecode } from \"./auctionStateLens\";\n","/**\r\n * Q96 fixed-point helpers.\r\n *\r\n * CCA encodes prices as Q96: a value multiplied by 2^96. This module is the\r\n * ONLY place in Beacon that converts between Q96 and human-readable numbers.\r\n * The web app, widget, bot and agent all import from here rather than\r\n * reimplementing `/ 2 ** 96` with floating point.\r\n *\r\n * Everything here is exact BigInt arithmetic except {@link q96ToNumber}, which\r\n * is explicitly lossy and documented as such.\r\n */\r\n\r\n/** 2^96 - the Q96 fixed-point scaling factor. */\r\nexport const Q96 = 2n ** 96n;\r\n\r\n/**\r\n * MPS (\"milli-bips\", one thousandth of a basis point) = 1e7.\r\n *\r\n * The auction tracks how much of its supply SCHEDULE has been released as a\r\n * `cumulativeMps` out of `MPS`. Note this tracks the schedule, not sales: an\r\n * auction that ends with no bids still reaches `MPS`.\r\n * Mirrors `ConstantsLib.MPS` upstream.\r\n */\r\nexport const MPS = 10_000_000n;\r\n\r\n/** X7 values are scaled by MPS to avoid intermediate division. Mirrors `ValueX7`. */\r\nexport const X7 = MPS;\r\n\r\nconst DECIMAL_PATTERN = /^-?\\d+(\\.\\d+)?$/;\r\n\r\n/**\r\n * Convert a Q96 value to an exact decimal string.\r\n *\r\n * Exact for the requested precision - the fractional part is computed with\r\n * BigInt division and truncated (never rounded up), so the result never\r\n * overstates a price.\r\n *\r\n * @param valueQ96 The Q96-encoded value.\r\n * @param precision Fractional digits to emit. Defaults to 18.\r\n * @param trimTrailingZeros Drop trailing fractional zeros. Defaults to true.\r\n */\r\nexport function q96ToDecimalString(\r\n valueQ96: bigint,\r\n precision = 18,\r\n trimTrailingZeros = true,\r\n): string {\r\n if (precision < 0 || !Number.isInteger(precision)) {\r\n throw new TypeError(\r\n `q96ToDecimalString: precision must be a non-negative integer, got ${precision}`,\r\n );\r\n }\r\n\r\n const negative = valueQ96 < 0n;\r\n const magnitude = negative ? -valueQ96 : valueQ96;\r\n\r\n const whole = magnitude / Q96;\r\n const remainder = magnitude % Q96;\r\n\r\n if (precision === 0) {\r\n return `${negative && whole !== 0n ? \"-\" : \"\"}${whole}`;\r\n }\r\n\r\n const scale = 10n ** BigInt(precision);\r\n // Truncating division: never rounds a price up.\r\n const fractional = (remainder * scale) / Q96;\r\n\r\n let fractionalDigits = fractional.toString().padStart(precision, \"0\");\r\n if (trimTrailingZeros) {\r\n fractionalDigits = fractionalDigits.replace(/0+$/, \"\");\r\n }\r\n\r\n const sign = negative && (whole !== 0n || fractional !== 0n) ? \"-\" : \"\";\r\n return fractionalDigits.length > 0 ? `${sign}${whole}.${fractionalDigits}` : `${sign}${whole}`;\r\n}\r\n\r\n/**\r\n * Convert a Q96 value to a JavaScript number.\r\n *\r\n * LOSSY. `number` is a float64, so values beyond ~2^53 or with more than ~15\r\n * significant digits lose precision. Use for charts, sorting and display only -\r\n * never for anything that gets sent back on-chain. Use\r\n * {@link q96ToDecimalString} when exactness matters.\r\n */\r\nexport function q96ToNumber(valueQ96: bigint): number {\r\n return Number(q96ToDecimalString(valueQ96, 20, false));\r\n}\r\n\r\n/**\r\n * Convert a decimal value to Q96, exactly.\r\n *\r\n * Accepts a string (preferred - no float rounding) or a number. Fractional\r\n * digits beyond what Q96 can represent are truncated.\r\n *\r\n * @throws TypeError on a malformed or non-finite input.\r\n */\r\nexport function decimalToQ96(decimal: string | number): bigint {\r\n const asString = typeof decimal === \"number\" ? numberToDecimalString(decimal) : decimal.trim();\r\n\r\n if (!DECIMAL_PATTERN.test(asString)) {\r\n throw new TypeError(`decimalToQ96: expected a decimal string, got \"${decimal}\"`);\r\n }\r\n\r\n const negative = asString.startsWith(\"-\");\r\n const unsigned = negative ? asString.slice(1) : asString;\r\n const [wholePart = \"0\", fractionalPart = \"\"] = unsigned.split(\".\");\r\n\r\n const scale = 10n ** BigInt(fractionalPart.length);\r\n const scaledValue =\r\n BigInt(wholePart) * scale + (fractionalPart === \"\" ? 0n : BigInt(fractionalPart));\r\n\r\n const result = (scaledValue * Q96) / scale;\r\n return negative ? -result : result;\r\n}\r\n\r\nfunction numberToDecimalString(value: number): string {\r\n if (!Number.isFinite(value)) {\r\n throw new TypeError(`decimalToQ96: expected a finite number, got ${value}`);\r\n }\r\n // Avoid exponential notation (\"1e-7\"), which the decimal parser rejects.\r\n return value.toLocaleString(\"en-US\", { useGrouping: false, maximumFractionDigits: 20 });\r\n}\r\n\r\n/**\r\n * Format a Q96 value for human display.\r\n *\r\n * Unlike {@link q96ToDecimalString}, which truncates for exactness, this ROUNDS\r\n * half-up at the chosen precision. That matters: 0.0001 is not exactly\r\n * representable in Q96, so a truncating formatter renders it as\r\n * \"0.0000999999999999\" - technically accurate and useless in a UI.\r\n *\r\n * For values below 1 the digit budget starts at the first non-zero digit, so\r\n * very small prices stay readable instead of showing a wall of zeros.\r\n *\r\n * @param significantDigits Digits to keep after the first significant one\r\n * (or fractional digits, for values >= 1). Defaults to 6.\r\n */\r\nexport function formatQ96(valueQ96: bigint, significantDigits = 6): string {\r\n if (valueQ96 === 0n) return \"0\";\r\n\r\n const negative = valueQ96 < 0n;\r\n const magnitude = negative ? -valueQ96 : valueQ96;\r\n const sign = negative ? \"-\" : \"\";\r\n\r\n let precision: number;\r\n if (magnitude / Q96 > 0n) {\r\n precision = significantDigits;\r\n } else {\r\n const fractional = q96ToDecimalString(magnitude, 40, false).split(\".\")[1] ?? \"\";\r\n const firstSignificant = fractional.search(/[1-9]/);\r\n if (firstSignificant === -1) return \"0\";\r\n precision = firstSignificant + significantDigits;\r\n }\r\n\r\n const scale = 10n ** BigInt(precision);\r\n // Round half-up: floor(v * scale / Q96 + 1/2), done in integer arithmetic.\r\n const rounded = (magnitude * scale * 2n + Q96) / (Q96 * 2n);\r\n\r\n const wholePart = rounded / scale;\r\n const fractionalPart = (rounded % scale)\r\n .toString()\r\n .padStart(precision, \"0\")\r\n .replace(/0+$/, \"\");\r\n\r\n return fractionalPart.length > 0 ? `${sign}${wholePart}.${fractionalPart}` : `${sign}${wholePart}`;\r\n}\r\n\r\n/**\r\n * Fraction of the supply schedule released so far, from a checkpoint's\r\n * `cumulativeMps`. Returns a value in [0, 1]. Not the fraction sold.\r\n */\r\nexport function mpsToFraction(cumulativeMps: bigint | number): number {\r\n return Number(BigInt(cumulativeMps)) / Number(MPS);\r\n}\r\n\r\n/** Percentage of the supply schedule released so far, e.g. `\"12.34\"`. */\r\nexport function formatMpsPercent(cumulativeMps: bigint | number, fractionDigits = 2): string {\r\n return (mpsToFraction(cumulativeMps) * 100).toFixed(fractionDigits);\r\n}\r\n\r\n/** Unwrap a ValueX7 (a value pre-multiplied by MPS) back to its base units. */\r\nexport function fromValueX7(valueX7: bigint): bigint {\r\n return valueX7 / X7;\r\n}\r\n\n/**\n * Format a Q96 value compactly, switching to scientific notation when a value\n * is too small to read as a decimal.\n *\n * Real CCA clearing prices on Sepolia are around 5.4e-20. Rendered plainly that\n * is \"0.000000000000000000054212\" - 25 characters of mostly zeros, which\n * destroys a table layout and is genuinely hard to compare at a glance. Below\n * 1e-6 this switches to \"5.4212e-20\".\n *\n * Rounding is inherited from {@link formatQ96}, so the compact and plain\n * renderings of the same value never disagree.\n */\nexport function formatQ96Compact(valueQ96: bigint, significantDigits = 6): string {\n if (valueQ96 === 0n) return \"0\";\n\n const negative = valueQ96 < 0n;\n const magnitude = negative ? -valueQ96 : valueQ96;\n const sign = negative ? \"-\" : \"\";\n\n const plain = formatQ96(magnitude, significantDigits);\n const [integerPart = \"0\", fractionalPart = \"\"] = plain.split(\".\");\n\n // Anything at or above 1 already reads fine.\n if (integerPart !== \"0\") return `${sign}${plain}`;\n\n const firstSignificant = fractionalPart.search(/[1-9]/);\n if (firstSignificant === -1) return \"0\";\n\n // Up to 1e-6 the plain form is still comfortable to read.\n if (firstSignificant < 6) return `${sign}${plain}`;\n\n const digits = fractionalPart.slice(firstSignificant).replace(/0+$/, \"\");\n const exponent = -(firstSignificant + 1);\n const mantissa = digits.length > 1 ? `${digits[0]}.${digits.slice(1)}` : digits;\n\n return `${sign}${mantissa}e${exponent}`;\n}\n","/**\r\n * Deployment addresses and chain configuration.\r\n *\r\n * Beacon is testnet-only by design. Mainnet chain ids are deliberately absent\r\n * from {@link SUPPORTED_CHAINS} so that every surface - directory, widget, bot\r\n * and agent - fails closed rather than touching real funds.\r\n */\r\nimport { baseSepolia, sepolia, unichainSepolia } from \"viem/chains\";\r\nimport type { Address } from \"viem\";\r\n\r\n/**\r\n * `ContinuousClearingAuctionFactory` v1.1.0.\r\n *\r\n * Deployed through the deterministic CREATE2 deployer (`0x4e59b448...`), so the\r\n * address is identical on every chain Uniswap has launched CCA on.\r\n *\r\n * VERIFIED on Sepolia: the deployed runtime bytecode is byte-for-byte identical\r\n * to a local `forge build` of upstream tag v1.1.0. Re-check with\r\n * `./contracts/sync-abis.sh` and a bytecode diff before trusting a new chain.\r\n */\r\nexport const FACTORY_ADDRESS: Address = \"0xCCccCcCAE7503Cac057829BF2811De42E16e0bD5\";\r\n\r\n/**\r\n * Block each chain's factory was created at - where auction discovery starts\r\n * scanning. Scanning from 0 instead wastes thousands of RPC calls.\r\n */\r\nexport const FACTORY_DEPLOY_BLOCK: Record<number, bigint> = {\r\n [sepolia.id]: 10130119n,\r\n};\r\n\r\n/**\r\n * Testnets Beacon is allowed to talk to.\r\n *\r\n * Only Sepolia is verified end-to-end today; the other two are listed because\r\n * the factory is a cross-chain singleton, but their deploy blocks are unknown\r\n * (discovery will need an explicit `fromBlock`).\r\n */\r\nexport const SUPPORTED_CHAINS = {\r\n [sepolia.id]: sepolia,\r\n [baseSepolia.id]: baseSepolia,\r\n [unichainSepolia.id]: unichainSepolia,\r\n} as const;\r\n\r\nexport type SupportedChainId = keyof typeof SUPPORTED_CHAINS;\r\n\r\n/**\r\n * Approximate seconds per block, used to turn a block countdown into a human\r\n * \"time remaining\". Estimates - block times drift.\r\n */\r\nexport const BLOCK_TIME_SECONDS: Record<number, number> = {\r\n [sepolia.id]: 12,\r\n [baseSepolia.id]: 2,\r\n [unichainSepolia.id]: 1,\r\n};\r\n\r\n/**\r\n * Maximum block span for a single `eth_getLogs` call.\r\n *\r\n * Public Sepolia RPCs reject anything wider with\r\n * `-32701: exceed maximum block range: 50000`, and some clients surface that as\r\n * an empty result rather than an error - which looks exactly like \"no auctions\r\n * exist\". Discovery always chunks.\r\n */\r\nexport const DEFAULT_LOG_CHUNK_SIZE = 50_000n;\r\n\r\n/** `address(0)` - the currency sentinel meaning native ETH. */\r\nexport const NATIVE_CURRENCY: Address = \"0x0000000000000000000000000000000000000000\";\r\n\r\n/**\r\n * Canonical Permit2, deployed at the same address on every chain.\r\n *\r\n * ERC-20 bids do NOT approve the auction. `ContinuousClearingAuction.submitBid`\r\n * pulls the bid currency with `SafeTransferLib.permit2TransferFrom`, which\r\n * calls Permit2's `transferFrom(from,to,uint160,token)`. A bidder therefore\r\n * needs an ERC-20 approval to THIS address, plus a Permit2 allowance naming the\r\n * auction as spender. Matches solady's `SafeTransferLib.PERMIT2`.\r\n */\r\nexport const PERMIT2_ADDRESS: Address = \"0x000000000022D473030F116dDEE9F6B43aC78BA3\";\r\n","/**\r\n * Auction discovery: finding every CCA auction ever deployed by scanning the\r\n * factory's `AuctionCreated` event.\r\n *\r\n * `eth_getLogs` MUST be chunked. Public Sepolia RPCs reject spans wider than\r\n * 50,000 blocks with `-32701: exceed maximum block range`, and some clients\r\n * report that as an empty result rather than an error, which looks exactly like\r\n * \"this factory has never created an auction\". Everything here chunks, and\r\n * halves the chunk size on failure rather than silently returning a short list.\r\n */\r\nimport { getAbiItem } from \"viem\";\r\nimport type { Address, Log } from \"viem\";\r\nimport { factoryAbi } from \"./abis\";\r\nimport type { BeaconClient } from \"./client\";\r\nimport { DEFAULT_LOG_CHUNK_SIZE } from \"./constants\";\r\nimport type { DiscoveredAuction } from \"./types\";\r\n\r\n/** The factory event that announces every new auction. */\r\nexport const auctionCreatedEvent = getAbiItem({ abi: factoryAbi, name: \"AuctionCreated\" });\r\n\r\nexport interface ScanOptions {\r\n /** First block to scan. Defaults to the factory's deploy block. */\r\n fromBlock?: bigint;\r\n /** Last block to scan. Defaults to the current head. */\r\n toBlock?: bigint;\r\n /** Blocks per `eth_getLogs` request. Defaults to 50,000. */\r\n chunkSize?: bigint;\r\n /**\r\n * Re-query a chunk that came back empty, this many times, before believing it.\r\n *\r\n * Some public RPCs (observed on ethereum-sepolia-rpc.publicnode.com) are load\r\n * balanced across backends with incomplete log indexes and answer an\r\n * identical `eth_getLogs` with either the real logs or an empty array, with no\r\n * error. That silently under-reports auctions. Re-querying an empty chunk\r\n * reduces the chance of believing a false empty, but CANNOT eliminate it -\r\n * the real fix is a reliable RPC endpoint. Defaults to 2.\r\n */\r\n emptyChunkRetries?: number;\r\n /**\r\n * Called when an empty chunk turned out to be a lie on retry. A caller seeing\r\n * these should switch RPC providers rather than trust the scan.\r\n */\r\n onAnomaly?: (anomaly: { fromBlock: bigint; toBlock: bigint; recoveredLogs: number }) => void;\r\n /** Called after each chunk, for progress reporting on long scans. */\r\n onProgress?: (progress: {\r\n fromBlock: bigint;\r\n toBlock: bigint;\r\n scannedTo: bigint;\r\n headBlock: bigint;\r\n found: number;\r\n }) => void;\r\n}\r\n\r\ntype AuctionCreatedLog = Log<bigint, number, false, typeof auctionCreatedEvent>;\r\n\r\nfunction toDiscoveredAuction(log: AuctionCreatedLog): DiscoveredAuction {\r\n const { auction, token, amount, configData } = log.args;\r\n\r\n // Indexed address args are always present on a well-formed log, but viem\r\n // types them optional because a filter could omit them.\r\n if (!auction || !token) {\r\n throw new Error(`Malformed AuctionCreated log in block ${log.blockNumber}: missing auction/token`);\r\n }\r\n\r\n return {\r\n auction,\r\n token,\r\n amount: amount ?? 0n,\r\n configData: configData ?? \"0x\",\r\n blockNumber: log.blockNumber,\r\n transactionHash: log.transactionHash,\r\n logIndex: log.logIndex,\r\n };\r\n}\r\n\r\n/**\r\n * Scan a block range for `AuctionCreated` events, chunked.\r\n *\r\n * Returns auctions in chain order (oldest first). On a chunk failure the chunk\r\n * size is halved and retried, so a stricter-than-expected RPC degrades into a\r\n * slower scan rather than a wrong answer.\r\n */\r\nexport async function scanAuctions(\r\n client: BeaconClient,\r\n options: ScanOptions = {},\r\n): Promise<DiscoveredAuction[]> {\r\n const headBlock = options.toBlock ?? (await client.publicClient.getBlockNumber());\r\n const startBlock = options.fromBlock ?? client.factoryDeployBlock;\r\n const maxChunk = options.chunkSize ?? DEFAULT_LOG_CHUNK_SIZE;\r\n\r\n if (startBlock > headBlock) return [];\r\n\r\n const emptyChunkRetries = options.emptyChunkRetries ?? 2;\r\n const found: DiscoveredAuction[] = [];\r\n let cursor = startBlock;\r\n let chunkSize = maxChunk;\r\n\r\n while (cursor <= headBlock) {\r\n const chunkEnd = min(cursor + chunkSize - 1n, headBlock);\r\n\r\n // Log scanning may use a different provider than state reads.\r\n const fetchChunk = async (from: bigint, to: bigint): Promise<AuctionCreatedLog[]> =>\r\n (await client.logsClient.getLogs({\r\n address: client.factoryAddress,\r\n event: auctionCreatedEvent,\r\n fromBlock: from,\r\n toBlock: to,\r\n })) as AuctionCreatedLog[];\r\n\r\n let logs: AuctionCreatedLog[];\r\n try {\r\n logs = await fetchChunk(cursor, chunkEnd);\r\n\r\n // An empty result from an unreliable endpoint may be a lie. Re-ask.\r\n for (let attempt = 0; logs.length === 0 && attempt < emptyChunkRetries; attempt++) {\r\n const retry = await fetchChunk(cursor, chunkEnd);\r\n if (retry.length > 0) {\r\n options.onAnomaly?.({\r\n fromBlock: cursor,\r\n toBlock: chunkEnd,\r\n recoveredLogs: retry.length,\r\n });\r\n logs = retry;\r\n }\r\n }\r\n } catch (error) {\r\n // Most likely a provider-specific range or response-size cap. Back off and\r\n // retry rather than losing auctions.\r\n if (chunkSize > 1n) {\r\n chunkSize = chunkSize / 2n;\r\n continue;\r\n }\r\n throw new Error(\r\n `eth_getLogs failed for a single block (${cursor}) on ${client.chain.name}: ${\r\n (error as Error).message\r\n }`,\r\n );\r\n }\r\n\r\n for (const log of logs) found.push(toDiscoveredAuction(log));\r\n\r\n options.onProgress?.({\r\n fromBlock: cursor,\r\n toBlock: chunkEnd,\r\n scannedTo: chunkEnd,\r\n headBlock,\r\n found: found.length,\r\n });\r\n\r\n cursor = chunkEnd + 1n;\r\n // Recover toward the configured chunk size after a successful request.\r\n if (chunkSize < maxChunk) chunkSize = min(chunkSize * 2n, maxChunk);\r\n }\r\n\r\n found.sort((a, b) =>\r\n a.blockNumber === b.blockNumber\r\n ? a.logIndex - b.logIndex\r\n : a.blockNumber < b.blockNumber\r\n ? -1\r\n : 1,\r\n );\r\n\r\n return found;\r\n}\r\n\r\n/**\r\n * Watch for auctions created from now on.\r\n *\r\n * Polls rather than subscribing, so it works over plain HTTP RPC with no\r\n * WebSocket endpoint. Returns an unwatch function.\r\n */\r\nexport function watchAuctions(\r\n client: BeaconClient,\r\n onAuction: (auction: DiscoveredAuction) => void,\r\n options: { pollingIntervalMs?: number; onError?: (error: Error) => void } = {},\r\n): () => void {\r\n return client.logsClient.watchEvent({\r\n address: client.factoryAddress,\r\n event: auctionCreatedEvent,\r\n poll: true,\r\n pollingInterval: options.pollingIntervalMs ?? 12_000,\r\n onError: options.onError,\r\n onLogs: (logs) => {\r\n for (const log of logs as AuctionCreatedLog[]) {\r\n try {\r\n onAuction(toDiscoveredAuction(log));\r\n } catch (error) {\r\n options.onError?.(error as Error);\r\n }\r\n }\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * Auctions created for a specific token.\r\n * Uses an indexed-topic filter so the RPC does the work, not the client.\r\n */\r\nexport async function scanAuctionsForToken(\r\n client: BeaconClient,\r\n token: Address,\r\n options: ScanOptions = {},\r\n): Promise<DiscoveredAuction[]> {\r\n const all = await scanAuctions(client, options);\r\n return all.filter((entry) => entry.token.toLowerCase() === token.toLowerCase());\r\n}\r\n\r\nfunction min(a: bigint, b: bigint): bigint {\r\n return a < b ? a : b;\r\n}\r\n","/**\r\n * Minimal ERC-20 metadata reads.\r\n *\r\n * CCA auctions are NOT always denominated in native ETH - the auctions live on\r\n * Sepolia today bid in an ERC-20. Anything that shows an amount to a human has\r\n * to show the real symbol and scale by the real decimals, so this lives in the\r\n * SDK and every surface (bot, widget, directory, agent) uses it.\r\n */\r\nimport { formatUnits } from \"viem\";\r\nimport type { Address } from \"viem\";\r\nimport type { BeaconClient } from \"./client\";\r\nimport { NATIVE_CURRENCY } from \"./constants\";\r\n\r\n/** ERC-20 reads Beacon needs. Hand-written because it is the standard, not a CCA ABI. */\r\nexport const erc20MetadataAbi = [\r\n { type: \"function\", name: \"symbol\", inputs: [], outputs: [{ type: \"string\" }], stateMutability: \"view\" },\r\n { type: \"function\", name: \"name\", inputs: [], outputs: [{ type: \"string\" }], stateMutability: \"view\" },\r\n { type: \"function\", name: \"decimals\", inputs: [], outputs: [{ type: \"uint8\" }], stateMutability: \"view\" },\r\n] as const;\r\n\r\nexport interface TokenMetadata {\r\n address: Address;\r\n symbol: string;\r\n name: string;\r\n decimals: number;\r\n /** True when this is the chain's native currency rather than an ERC-20. */\r\n isNative: boolean;\r\n}\r\n\r\n/**\r\n * Read a currency's symbol, name and decimals.\r\n *\r\n * `address(0)` is the CCA sentinel for native currency, and resolves to the\r\n * chain's own native currency rather than an on-chain call.\r\n *\r\n * Tolerant by design: a token that omits `symbol`/`name` (or returns bytes32\r\n * instead of string) still yields usable metadata rather than throwing, because\r\n * failing to render an alert is worse than rendering a shortened address.\r\n */\r\nexport async function getTokenMetadata(\r\n client: BeaconClient,\r\n address: Address,\r\n): Promise<TokenMetadata> {\r\n if (address === NATIVE_CURRENCY) {\r\n const native = client.chain.nativeCurrency;\r\n return {\r\n address,\r\n symbol: native.symbol,\r\n name: native.name,\r\n decimals: native.decimals,\r\n isNative: true,\r\n };\r\n }\r\n\r\n const contract = { address, abi: erc20MetadataAbi } as const;\r\n const [symbol, name, decimals] = await client.publicClient.multicall({\r\n allowFailure: true,\r\n contracts: [\r\n { ...contract, functionName: \"symbol\" },\r\n { ...contract, functionName: \"name\" },\r\n { ...contract, functionName: \"decimals\" },\r\n ],\r\n });\r\n\r\n return {\r\n address,\r\n symbol: symbol.status === \"success\" ? symbol.result : shortAddress(address),\r\n name: name.status === \"success\" ? name.result : shortAddress(address),\r\n // 18 is the overwhelmingly common default; better than refusing to render.\r\n decimals: decimals.status === \"success\" ? Number(decimals.result) : 18,\r\n isNative: false,\r\n };\r\n}\r\n\r\n/** Read metadata for several currencies at once, de-duplicated by address. */\r\nexport async function getTokenMetadataBatch(\r\n client: BeaconClient,\r\n addresses: readonly Address[],\r\n): Promise<Map<Address, TokenMetadata>> {\r\n const unique = [...new Set(addresses)];\r\n const entries = await Promise.all(\r\n unique.map(async (address) => [address, await getTokenMetadata(client, address)] as const),\r\n );\r\n return new Map(entries);\r\n}\r\n\r\n/**\r\n * Render a raw token amount with its symbol, e.g. `\"1,000 BEACON\"`.\r\n *\r\n * A nonzero amount is NEVER rendered as \"0\". Real CCA test auctions raise\r\n * amounts like 52 wei, and truncating those to \"0 ETH\" makes a live auction\r\n * look dead. When an amount is too small for `maxFractionDigits`, the output\r\n * widens to show four significant digits instead.\r\n *\r\n * @param maxFractionDigits Fractional digits to keep for ordinary amounts.\r\n */\r\nexport function formatTokenAmount(\r\n amount: bigint,\r\n token: Pick<TokenMetadata, \"symbol\" | \"decimals\">,\r\n maxFractionDigits = 4,\r\n): string {\r\n if (amount === 0n) return `0 ${token.symbol}`;\r\n\r\n const negative = amount < 0n;\r\n const whole = formatUnits(negative ? -amount : amount, token.decimals);\r\n const [integerPart = \"0\", fractionalPart = \"\"] = whole.split(\".\");\r\n\r\n const grouped = BigInt(integerPart).toLocaleString(\"en-US\");\r\n let trimmed = fractionalPart.slice(0, maxFractionDigits).replace(/0+$/, \"\");\r\n\r\n // Too small to show at the requested precision: widen rather than say \"0\".\r\n if (integerPart === \"0\" && trimmed.length === 0) {\r\n const firstSignificant = fractionalPart.search(/[1-9]/);\r\n if (firstSignificant !== -1) {\r\n trimmed = fractionalPart.slice(0, firstSignificant + 4).replace(/0+$/, \"\");\r\n }\r\n }\r\n\r\n const sign = negative ? \"-\" : \"\";\r\n return trimmed.length > 0\r\n ? `${sign}${grouped}.${trimmed} ${token.symbol}`\r\n : `${sign}${grouped} ${token.symbol}`;\r\n}\r\n\r\nfunction shortAddress(address: Address): string {\r\n return `${address.slice(0, 6)}...${address.slice(-4)}`;\r\n}\r\n","/**\r\n * Read wrappers around `AuctionStateLens` and the auction's own view functions.\r\n *\r\n * Two things here are non-obvious, and are the reason this lives in the SDK\r\n * rather than being reimplemented per app:\r\n *\r\n * 1. `AuctionStateLens.state()` is NOT a view function. It calls the\r\n * state-mutating `auction.checkpoint()` and returns its result by reverting\r\n * with ABI-encoded data. It therefore has to be invoked with `eth_call`\r\n * semantics; a plain `readContract` fails.\r\n *\r\n * 2. Uniswap publishes no canonical lens address on any network. Rather than\r\n * forcing every user to deploy one, Beacon can inject the lens bytecode into\r\n * a single `eth_call` via a state override, so reads work against a bare RPC\r\n * with no deployment and no funded wallet. Set `lensAddress` on the client\r\n * to use a real deployed lens instead.\r\n */\r\nimport { decodeFunctionResult, encodeFunctionData } from \"viem\";\r\nimport type { Address } from \"viem\";\r\nimport { auctionAbi, auctionStateLensAbi, auctionStateLensDeployedBytecode } from \"./abis\";\r\nimport type { BeaconClient } from \"./client\";\r\nimport { formatQ96, mpsToFraction } from \"./q96\";\r\nimport type { AuctionInfo, AuctionState, AuctionStatus, AuctionSummary, Checkpoint } from \"./types\";\r\n\r\n/**\r\n * Address the lens bytecode is injected at when no deployed lens is configured.\r\n * Arbitrary and unused on-chain: it only has to be an address nothing else\r\n * occupies for the duration of the call. Must be EIP-55 checksummed - viem\r\n * rejects a mixed-case address whose checksum does not validate.\r\n */\r\nexport const LENS_OVERRIDE_ADDRESS: Address = \"0x00000000000000000000000000000000BEAC0E75\";\r\n\r\n/** Shape `decodeFunctionResult` produces for the lens's `AuctionState` tuple. */\r\ntype RawAuctionState = {\r\n checkpoint: {\r\n clearingPrice: bigint;\r\n currencyRaisedAtClearingPriceQ96_X7: bigint;\r\n cumulativeMpsPerPrice: bigint;\r\n cumulativeMps: number;\r\n prev: bigint;\r\n next: bigint;\r\n };\r\n currencyRaised: bigint;\r\n totalCleared: bigint;\r\n isGraduated: boolean;\r\n};\r\n\r\nfunction toCheckpoint(raw: RawAuctionState[\"checkpoint\"]): Checkpoint {\r\n return {\r\n clearingPriceQ96: raw.clearingPrice,\r\n currencyRaisedAtClearingPriceQ96X7: raw.currencyRaisedAtClearingPriceQ96_X7,\r\n cumulativeMpsPerPrice: raw.cumulativeMpsPerPrice,\r\n cumulativeMps: Number(raw.cumulativeMps),\r\n prevBlock: BigInt(raw.prev),\r\n nextBlock: BigInt(raw.next),\r\n };\r\n}\r\n\r\n/**\r\n * Read an auction's live state through `AuctionStateLens.state()`.\r\n *\r\n * This is the freshest possible view: the lens checkpoints the auction inside\r\n * the simulated call, so the clearing price reflects the current block rather\r\n * than the last block someone happened to bid in.\r\n */\r\nexport async function getAuctionState(client: BeaconClient, auction: Address): Promise<AuctionState> {\r\n const data = encodeFunctionData({\r\n abi: auctionStateLensAbi,\r\n functionName: \"state\",\r\n args: [auction],\r\n });\r\n\r\n const useOverride = client.lensAddress === undefined;\r\n const target = client.lensAddress ?? LENS_OVERRIDE_ADDRESS;\r\n\r\n const { data: returnData } = await client.publicClient.call({\r\n to: target,\r\n data,\r\n ...(useOverride\r\n ? {\r\n stateOverride: [\r\n { address: LENS_OVERRIDE_ADDRESS, code: auctionStateLensDeployedBytecode },\r\n ],\r\n }\r\n : {}),\r\n });\r\n\r\n if (!returnData) {\r\n throw new Error(\r\n `AuctionStateLens.state(${auction}) returned no data. ` +\r\n `Is ${auction} really a ContinuousClearingAuction on ${client.chain.name}?`,\r\n );\r\n }\r\n\r\n const raw = decodeFunctionResult({\r\n abi: auctionStateLensAbi,\r\n functionName: \"state\",\r\n data: returnData,\r\n }) as unknown as RawAuctionState;\r\n\r\n return {\r\n checkpoint: toCheckpoint(raw.checkpoint),\r\n currencyRaised: raw.currencyRaised,\r\n totalCleared: raw.totalCleared,\r\n isGraduated: raw.isGraduated,\r\n };\r\n}\r\n\r\n/**\r\n * Read an auction's static configuration in a single multicall.\r\n * These values never change, so callers can cache them freely.\r\n */\r\nexport async function getAuctionInfo(client: BeaconClient, auction: Address): Promise<AuctionInfo> {\r\n const contract = { address: auction, abi: auctionAbi } as const;\r\n\r\n const [token, currency, totalSupply, startBlock, endBlock, floorPrice, tickSpacing] =\r\n await client.publicClient.multicall({\r\n allowFailure: false,\r\n contracts: [\r\n { ...contract, functionName: \"token\" },\r\n { ...contract, functionName: \"currency\" },\r\n { ...contract, functionName: \"totalSupply\" },\r\n { ...contract, functionName: \"startBlock\" },\r\n { ...contract, functionName: \"endBlock\" },\r\n { ...contract, functionName: \"floorPrice\" },\r\n { ...contract, functionName: \"tickSpacing\" },\r\n ],\r\n });\r\n\r\n return {\r\n auction,\r\n token,\r\n currency,\r\n totalSupply,\r\n startBlock: BigInt(startBlock),\r\n endBlock: BigInt(endBlock),\r\n floorPriceQ96: floorPrice,\r\n tickSpacing,\r\n };\r\n}\r\n\r\n/** The auction's current clearing price, Q96-encoded. A cheap `view` read. */\r\nexport async function getClearingPrice(client: BeaconClient, auction: Address): Promise<bigint> {\r\n return client.publicClient.readContract({\r\n address: auction,\r\n abi: auctionAbi,\r\n functionName: \"clearingPrice\",\r\n });\r\n}\r\n\r\n/** Whether the auction has raised enough to seed the pool. */\r\nexport async function isGraduated(client: BeaconClient, auction: Address): Promise<boolean> {\r\n return client.publicClient.readContract({\r\n address: auction,\r\n abi: auctionAbi,\r\n functionName: \"isGraduated\",\r\n });\r\n}\r\n\r\n/** Derive an auction's lifecycle position from the current block. */\r\nexport function deriveStatus(info: AuctionInfo, blockNumber: bigint): AuctionStatus {\r\n if (blockNumber < info.startBlock) return \"pending\";\r\n if (blockNumber <= info.endBlock) return \"live\";\r\n return \"ended\";\r\n}\r\n\r\n/**\r\n * Everything a UI needs about one auction, with the derived values (status,\r\n * progress, time remaining) computed once here instead of in each app.\r\n */\r\nexport async function getAuctionSummary(\r\n client: BeaconClient,\r\n auction: Address,\r\n options: { info?: AuctionInfo; blockNumber?: bigint } = {},\r\n): Promise<AuctionSummary> {\r\n const [info, state, blockNumber] = await Promise.all([\r\n options.info ?? getAuctionInfo(client, auction),\r\n getAuctionState(client, auction),\r\n options.blockNumber ?? client.publicClient.getBlockNumber(),\r\n ]);\r\n\r\n const status = deriveStatus(info, blockNumber);\r\n const blocksRemaining =\r\n status === \"pending\"\r\n ? info.startBlock - blockNumber\r\n : status === \"live\"\r\n ? info.endBlock - blockNumber\r\n : 0n;\r\n\r\n return {\r\n info,\r\n state,\r\n blockNumber,\r\n status,\r\n clearingPrice: formatQ96(state.checkpoint.clearingPriceQ96),\r\n supplyScheduleProgress: mpsToFraction(state.checkpoint.cumulativeMps),\r\n hasClearedSupply: state.totalCleared > 0n,\r\n blocksRemaining,\r\n secondsRemaining: Number(blocksRemaining) * client.blockTimeSeconds,\r\n };\r\n}\r\n\r\n/** A summary that failed to load, so one bad auction cannot blank a directory page. */\r\nexport interface FailedAuctionSummary {\r\n auction: Address;\r\n error: Error;\r\n}\r\n\r\nexport function isFailedSummary(\r\n result: AuctionSummary | FailedAuctionSummary,\r\n): result is FailedAuctionSummary {\r\n return \"error\" in result;\r\n}\r\n\r\n/**\r\n * Summarise many auctions with bounded concurrency, so a directory page listing\r\n * dozens of auctions does not open dozens of simultaneous RPC calls.\r\n */\r\nexport async function getAuctionSummaries(\r\n client: BeaconClient,\r\n auctions: readonly Address[],\r\n options: { concurrency?: number } = {},\r\n): Promise<(AuctionSummary | FailedAuctionSummary)[]> {\r\n const concurrency = options.concurrency ?? 5;\r\n const blockNumber = await client.publicClient.getBlockNumber();\r\n const results: (AuctionSummary | FailedAuctionSummary)[] = [];\r\n\r\n for (let i = 0; i < auctions.length; i += concurrency) {\r\n const batch = auctions.slice(i, i + concurrency);\r\n const settled = await Promise.all(\r\n batch.map(async (auction) => {\r\n try {\r\n return await getAuctionSummary(client, auction, { blockNumber });\r\n } catch (error) {\r\n return { auction, error: error as Error };\r\n }\r\n }),\r\n );\r\n results.push(...settled);\r\n }\r\n\r\n return results;\r\n}\r\n\n/**\n * The cheap, batchable slice of live state used by directory list views.\n *\n * Every field here is a `view` function on the auction, so a whole page of\n * auctions resolves in one multicall - no lens, no per-auction round trips.\n * Use {@link getAuctionState} when you need the freshest checkpointed state.\n */\nexport interface AuctionListState {\n auction: Address;\n clearingPriceQ96: bigint;\n isGraduated: boolean;\n currencyRaised: bigint;\n totalCleared: bigint;\n}\n\n/** Read {@link AuctionListState} for many auctions in a single multicall. */\nexport async function getAuctionListStates(\n client: BeaconClient,\n auctions: readonly Address[],\n): Promise<Map<Address, AuctionListState>> {\n const result = new Map<Address, AuctionListState>();\n if (auctions.length === 0) return result;\n\n const contracts = auctions.flatMap((auction) => {\n const base = { address: auction, abi: auctionAbi } as const;\n return [\n { ...base, functionName: \"clearingPrice\" },\n { ...base, functionName: \"isGraduated\" },\n { ...base, functionName: \"currencyRaised\" },\n { ...base, functionName: \"totalCleared\" },\n ];\n });\n\n // allowFailure: one broken auction must not blank the whole page.\n const responses = await client.publicClient.multicall({ allowFailure: true, contracts });\n\n auctions.forEach((auction, index) => {\n const [price, graduated, raised, cleared] = responses.slice(index * 4, index * 4 + 4);\n if (price?.status !== \"success\") return;\n result.set(auction, {\n auction,\n clearingPriceQ96: price.result as bigint,\n isGraduated: graduated?.status === \"success\" ? (graduated.result as boolean) : false,\n currencyRaised: raised?.status === \"success\" ? (raised.result as bigint) : 0n,\n totalCleared: cleared?.status === \"success\" ? (cleared.result as bigint) : 0n,\n });\n });\n\n return result;\n}\n"]}
|
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
import { PublicClient, Chain, Address, Hex } from 'viem';
|
|
2
|
+
|
|
3
|
+
interface BeaconClientConfig {
|
|
4
|
+
/** JSON-RPC endpoint used for state reads (eth_call, multicall). */
|
|
5
|
+
rpcUrl: string;
|
|
6
|
+
/**
|
|
7
|
+
* Optional separate endpoint for `eth_getLogs`.
|
|
8
|
+
*
|
|
9
|
+
* State reads and log scanning have different provider requirements, and one
|
|
10
|
+
* endpoint is often bad at one of them. Alchemy's free tier serves eth_call
|
|
11
|
+
* beautifully but caps eth_getLogs at a 10-block range, which makes a
|
|
12
|
+
* historical backfill impossible; public wide-range endpoints allow the range
|
|
13
|
+
* but can silently return empty results. Defaults to `rpcUrl`.
|
|
14
|
+
*/
|
|
15
|
+
logsRpcUrl?: string;
|
|
16
|
+
/** Chain id. Must be a supported testnet - mainnet is rejected. */
|
|
17
|
+
chainId: number;
|
|
18
|
+
/** Override the factory address. Defaults to the cross-chain singleton. */
|
|
19
|
+
factoryAddress?: Address;
|
|
20
|
+
/**
|
|
21
|
+
* Address of a deployed `AuctionStateLens`.
|
|
22
|
+
*
|
|
23
|
+
* Optional. When omitted, reads run the lens via an `eth_call` state
|
|
24
|
+
* override instead, so no deployment is required. See `read.ts`.
|
|
25
|
+
*/
|
|
26
|
+
lensAddress?: Address;
|
|
27
|
+
/** Override the block the factory was deployed at. */
|
|
28
|
+
factoryDeployBlock?: bigint;
|
|
29
|
+
}
|
|
30
|
+
interface BeaconClient {
|
|
31
|
+
publicClient: PublicClient;
|
|
32
|
+
/** Client used for `eth_getLogs`. Same as `publicClient` unless overridden. */
|
|
33
|
+
logsClient: PublicClient;
|
|
34
|
+
chain: Chain;
|
|
35
|
+
chainId: number;
|
|
36
|
+
factoryAddress: Address;
|
|
37
|
+
lensAddress?: Address;
|
|
38
|
+
factoryDeployBlock: bigint;
|
|
39
|
+
/** Approximate seconds per block, for time-remaining estimates. */
|
|
40
|
+
blockTimeSeconds: number;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Throw unless `chainId` is a testnet Beacon supports.
|
|
44
|
+
*
|
|
45
|
+
* This is the choke point that keeps every Beacon surface off mainnet. The
|
|
46
|
+
* bidding agent layers its own guard on top before it broadcasts anything.
|
|
47
|
+
*/
|
|
48
|
+
declare function assertSupportedChain(chainId: number): Chain;
|
|
49
|
+
/** Build a Beacon client. Throws immediately on a non-testnet chain id. */
|
|
50
|
+
declare function createBeaconClient(config: BeaconClientConfig): BeaconClient;
|
|
51
|
+
/**
|
|
52
|
+
* Confirm the RPC is actually serving the chain we were configured for.
|
|
53
|
+
*
|
|
54
|
+
* Cheap insurance against a copy-pasted RPC URL silently pointing at the wrong
|
|
55
|
+
* network - which otherwise shows up as "no auctions found".
|
|
56
|
+
*/
|
|
57
|
+
declare function assertChainMatches(client: BeaconClient): Promise<void>;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* Types mirrored from Uniswap/continuous-clearing-auction @ v1.1.0.
|
|
61
|
+
*
|
|
62
|
+
* Field names follow the contracts, with an explicit `Q96` / `X7` suffix added
|
|
63
|
+
* where the contract encodes a fixed-point value, so callers cannot mistake a
|
|
64
|
+
* Q96 price for a plain integer. Use the helpers in `q96.ts` to convert.
|
|
65
|
+
*/
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* A checkpoint of auction state at a given block.
|
|
69
|
+
* Mirrors `struct Checkpoint` in `libraries/CheckpointLib.sol`.
|
|
70
|
+
*/
|
|
71
|
+
interface Checkpoint {
|
|
72
|
+
/** Price the auction is currently clearing at, Q96-encoded. */
|
|
73
|
+
clearingPriceQ96: bigint;
|
|
74
|
+
/** Currency raised so far at the clearing price. Q96, then X7-scaled. */
|
|
75
|
+
currencyRaisedAtClearingPriceQ96X7: bigint;
|
|
76
|
+
/** Running sum of the ratio between mps and price. */
|
|
77
|
+
cumulativeMpsPerPrice: bigint;
|
|
78
|
+
/**
|
|
79
|
+
* How much of the auction's supply SCHEDULE has been released so far, in
|
|
80
|
+
* milli-bips out of `MPS` (1e7).
|
|
81
|
+
*
|
|
82
|
+
* This is emphatically NOT "tokens sold": an auction that ended with zero
|
|
83
|
+
* bids still reports `cumulativeMps == MPS`, because the schedule fully
|
|
84
|
+
* elapsed. Use `totalCleared` / `currencyRaised` for what actually sold.
|
|
85
|
+
*/
|
|
86
|
+
cumulativeMps: number;
|
|
87
|
+
/** Block number of the previous checkpoint. */
|
|
88
|
+
prevBlock: bigint;
|
|
89
|
+
/** Block number of the next checkpoint. */
|
|
90
|
+
nextBlock: bigint;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* The auction's live state.
|
|
94
|
+
* Mirrors `struct AuctionState` returned by `AuctionStateLens.state()`.
|
|
95
|
+
*/
|
|
96
|
+
interface AuctionState {
|
|
97
|
+
checkpoint: Checkpoint;
|
|
98
|
+
/** Total currency raised, in the currency's smallest unit. */
|
|
99
|
+
currencyRaised: bigint;
|
|
100
|
+
/** Total token supply cleared so far, in the token's smallest unit. */
|
|
101
|
+
totalCleared: bigint;
|
|
102
|
+
/** Whether the auction raised enough to seed the pool. */
|
|
103
|
+
isGraduated: boolean;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Immutable-ish configuration of an auction, read once and safe to cache.
|
|
107
|
+
*/
|
|
108
|
+
interface AuctionInfo {
|
|
109
|
+
auction: Address;
|
|
110
|
+
/** The token being sold. */
|
|
111
|
+
token: Address;
|
|
112
|
+
/** The currency bids are denominated in. `address(0)` means native ETH. */
|
|
113
|
+
currency: Address;
|
|
114
|
+
/** Total token supply offered by the auction. */
|
|
115
|
+
totalSupply: bigint;
|
|
116
|
+
/** Block the auction opens for bids. */
|
|
117
|
+
startBlock: bigint;
|
|
118
|
+
/** Block the auction closes. */
|
|
119
|
+
endBlock: bigint;
|
|
120
|
+
/** Lowest price the auction will clear at, Q96-encoded. */
|
|
121
|
+
floorPriceQ96: bigint;
|
|
122
|
+
/** Spacing between initialised price ticks. */
|
|
123
|
+
tickSpacing: bigint;
|
|
124
|
+
}
|
|
125
|
+
/** Lifecycle position of an auction relative to the current block. */
|
|
126
|
+
type AuctionStatus = "pending" | "live" | "ended";
|
|
127
|
+
/**
|
|
128
|
+
* Everything a UI needs about one auction: static config, live state, and the
|
|
129
|
+
* derived values that would otherwise be recomputed in four places.
|
|
130
|
+
*/
|
|
131
|
+
interface AuctionSummary {
|
|
132
|
+
info: AuctionInfo;
|
|
133
|
+
state: AuctionState;
|
|
134
|
+
/** Block this summary was read at. */
|
|
135
|
+
blockNumber: bigint;
|
|
136
|
+
status: AuctionStatus;
|
|
137
|
+
/** Clearing price as a display string. */
|
|
138
|
+
clearingPrice: string;
|
|
139
|
+
/**
|
|
140
|
+
* Fraction of the supply schedule released so far, in [0, 1].
|
|
141
|
+
* Not the fraction sold - see `Checkpoint.cumulativeMps`.
|
|
142
|
+
*/
|
|
143
|
+
supplyScheduleProgress: number;
|
|
144
|
+
/** Whether anything has actually cleared. `totalCleared > 0`. */
|
|
145
|
+
hasClearedSupply: boolean;
|
|
146
|
+
/**
|
|
147
|
+
* Blocks until the auction ends. `0n` once ended, and counts down to the
|
|
148
|
+
* START block while the auction is still pending.
|
|
149
|
+
*/
|
|
150
|
+
blocksRemaining: bigint;
|
|
151
|
+
/** Estimated seconds remaining, from `blocksRemaining` and the chain's block time. */
|
|
152
|
+
secondsRemaining: number;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* One `AuctionCreated` event from the factory.
|
|
156
|
+
* Mirrors `event AuctionCreated(address indexed auction, address indexed token, uint256 amount, bytes configData)`.
|
|
157
|
+
*/
|
|
158
|
+
interface DiscoveredAuction {
|
|
159
|
+
/** The newly created ContinuousClearingAuction. */
|
|
160
|
+
auction: Address;
|
|
161
|
+
/** The token being auctioned. */
|
|
162
|
+
token: Address;
|
|
163
|
+
/** Token amount supplied to the auction. */
|
|
164
|
+
amount: bigint;
|
|
165
|
+
/** ABI-encoded `AuctionParameters` the auction was configured with. */
|
|
166
|
+
configData: Hex;
|
|
167
|
+
blockNumber: bigint;
|
|
168
|
+
transactionHash: Hex;
|
|
169
|
+
logIndex: number;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** ERC-20 reads Beacon needs. Hand-written because it is the standard, not a CCA ABI. */
|
|
173
|
+
declare const erc20MetadataAbi: readonly [{
|
|
174
|
+
readonly type: "function";
|
|
175
|
+
readonly name: "symbol";
|
|
176
|
+
readonly inputs: readonly [];
|
|
177
|
+
readonly outputs: readonly [{
|
|
178
|
+
readonly type: "string";
|
|
179
|
+
}];
|
|
180
|
+
readonly stateMutability: "view";
|
|
181
|
+
}, {
|
|
182
|
+
readonly type: "function";
|
|
183
|
+
readonly name: "name";
|
|
184
|
+
readonly inputs: readonly [];
|
|
185
|
+
readonly outputs: readonly [{
|
|
186
|
+
readonly type: "string";
|
|
187
|
+
}];
|
|
188
|
+
readonly stateMutability: "view";
|
|
189
|
+
}, {
|
|
190
|
+
readonly type: "function";
|
|
191
|
+
readonly name: "decimals";
|
|
192
|
+
readonly inputs: readonly [];
|
|
193
|
+
readonly outputs: readonly [{
|
|
194
|
+
readonly type: "uint8";
|
|
195
|
+
}];
|
|
196
|
+
readonly stateMutability: "view";
|
|
197
|
+
}];
|
|
198
|
+
interface TokenMetadata {
|
|
199
|
+
address: Address;
|
|
200
|
+
symbol: string;
|
|
201
|
+
name: string;
|
|
202
|
+
decimals: number;
|
|
203
|
+
/** True when this is the chain's native currency rather than an ERC-20. */
|
|
204
|
+
isNative: boolean;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* Read a currency's symbol, name and decimals.
|
|
208
|
+
*
|
|
209
|
+
* `address(0)` is the CCA sentinel for native currency, and resolves to the
|
|
210
|
+
* chain's own native currency rather than an on-chain call.
|
|
211
|
+
*
|
|
212
|
+
* Tolerant by design: a token that omits `symbol`/`name` (or returns bytes32
|
|
213
|
+
* instead of string) still yields usable metadata rather than throwing, because
|
|
214
|
+
* failing to render an alert is worse than rendering a shortened address.
|
|
215
|
+
*/
|
|
216
|
+
declare function getTokenMetadata(client: BeaconClient, address: Address): Promise<TokenMetadata>;
|
|
217
|
+
/** Read metadata for several currencies at once, de-duplicated by address. */
|
|
218
|
+
declare function getTokenMetadataBatch(client: BeaconClient, addresses: readonly Address[]): Promise<Map<Address, TokenMetadata>>;
|
|
219
|
+
/**
|
|
220
|
+
* Render a raw token amount with its symbol, e.g. `"1,000 BEACON"`.
|
|
221
|
+
*
|
|
222
|
+
* A nonzero amount is NEVER rendered as "0". Real CCA test auctions raise
|
|
223
|
+
* amounts like 52 wei, and truncating those to "0 ETH" makes a live auction
|
|
224
|
+
* look dead. When an amount is too small for `maxFractionDigits`, the output
|
|
225
|
+
* widens to show four significant digits instead.
|
|
226
|
+
*
|
|
227
|
+
* @param maxFractionDigits Fractional digits to keep for ordinary amounts.
|
|
228
|
+
*/
|
|
229
|
+
declare function formatTokenAmount(amount: bigint, token: Pick<TokenMetadata, "symbol" | "decimals">, maxFractionDigits?: number): string;
|
|
230
|
+
|
|
231
|
+
export { type AuctionInfo as A, type BeaconClient as B, type Checkpoint as C, type DiscoveredAuction as D, type TokenMetadata as T, type AuctionStatus as a, type AuctionState as b, type AuctionSummary as c, type BeaconClientConfig as d, assertChainMatches as e, assertSupportedChain as f, createBeaconClient as g, erc20MetadataAbi as h, formatTokenAmount as i, getTokenMetadata as j, getTokenMetadataBatch as k };
|