Converts percent-offset bands with depth weights into the bps position
plan the add / update instructions expect, deriving baseAmountBps /
quoteAmountBps from the liquidity math instead of asking the caller to
author them.
Each band's target share of the deployed value is its weight times the
value one unit of liquidity holds over its range at the graduation
price, so equal-shaped bands with weights 3:1 target 3:1 in liquidity
and in value. The allocator splits each token's 10_000 bps so the
simulated deployment tracks those targets as closely as the structure
allows, floors every funded share at
MIN_CLMM_POSITION_SHARE_BPS, and attaches the outcome as
projection; it throws when the projected deviation (misplaced value
plus residue) exceeds maxDeviationBps — see ClmmPlanProjection
for the structural constraints behind that. Because bands are relative
to the launch price and the graduated base:quote ratio is the launch
price, the result is scale-free: no raise amount, absolute price, or RPC
is needed, so this runs in a config UI before the launch exists. Verify
a concrete raise scenario with simulateClmmDeployment.
Order bands as they should open; the last position sweeps whatever the
earlier opens left, so a wide or straddling final band absorbs slack
best. For hand-authored token splits use clmmPositionsFromPriceBands.
Converts percent-offset bands with depth weights into the bps position plan the add / update instructions expect, deriving
baseAmountBps/quoteAmountBpsfrom the liquidity math instead of asking the caller to author them.Each band's target share of the deployed value is its weight times the value one unit of liquidity holds over its range at the graduation price, so equal-shaped bands with weights 3:1 target 3:1 in liquidity and in value. The allocator splits each token's 10_000 bps so the simulated deployment tracks those targets as closely as the structure allows, floors every funded share at MIN_CLMM_POSITION_SHARE_BPS, and attaches the outcome as
projection; it throws when the projected deviation (misplaced value plus residue) exceedsmaxDeviationBps— see ClmmPlanProjection for the structural constraints behind that. Because bands are relative to the launch price and the graduated base:quote ratio is the launch price, the result is scale-free: no raise amount, absolute price, or RPC is needed, so this runs in a config UI before the launch exists. Verify a concrete raise scenario withsimulateClmmDeployment.Order bands as they should open; the last position sweeps whatever the earlier opens left, so a wide or straddling final band absorbs slack best. For hand-authored token splits use
clmmPositionsFromPriceBands.