> ## Documentation Index
> Fetch the complete documentation index at: https://docs.meteora.ag/llms.txt
> Use this file to discover all available pages before exploring further.

# DLMM Pro Changelog

> Track DLMM Pro release notes, breaking changes and upgrade guidance for the dlmm_pro program, the TypeScript SDK and the Rust commons crate.

> [!TIP]
>
> Track DLMM Pro releases here.

**dlmm-pro-sdk 0.1.2**

Tick Id Bounds Check

## Release Summary

| Component | Version | PR |
| - | - | - |
| Program | `0.1.0` (unchanged) | - |
| TypeScript SDK | `0.1.2` | [dlmm-pro-sdk #27](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/27) |
| Commons | `0.1.1` (unchanged) | - |

## What We Shipped

* A bounds check in `getSqrtPriceFromTickId`, so a pool cannot be created at the price of the wrong tick by mistake

## What To Do

| Integrators | What To Do |
| - | - |
| Pool creators and launchpads | Upgrade to `0.1.2` if you compute `initialSqrtPrice` with `getSqrtPriceFromTickId`. In `0.1.1` and earlier a tick id beyond 524,287 in either direction returned the price of another tick (524288 gave the price of tick 0), and a pool created from it started at the wrong price. |
| Everyone else | Upgrade when convenient. A call with a tick id inside `MIN_TICK_ID` to `MAX_TICK_ID` returns the same value as before. |

The only behaviour change is that `getSqrtPriceFromTickId` throws `InvalidParameters` for a tick id that is not an integer or lies outside `MIN_TICK_ID` to `MAX_TICK_ID` (-443636 to 443636). No function signatures changed.

## TypeScript SDK: `@meteora-ag/dlmm-pro-sdk` `0.1.2`

[SDK PR #27](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/27)

> [!TIP]
>
> Production: [`@meteora-ag/dlmm-pro-sdk@0.1.2`](https://www.npmjs.com/package/@meteora-ag/dlmm-pro-sdk/v/0.1.2).

### Fixed

* `getSqrtPriceFromTickId` now throws `InvalidParameters` for a tick id outside `MIN_TICK_ID..=MAX_TICK_ID`, instead of returning the sqrt price of a different tick.

**dlmm-pro-sdk 0.1.1**

Quote and Pool Creation Fixes

## Release Summary

| Component | Version | PR |
| - | - | - |
| Program | `0.1.0` (unchanged) | - |
| TypeScript SDK | `0.1.1` | [dlmm-pro-sdk #26](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/26) |
| Commons | `0.1.1` | [dlmm-pro-sdk #26](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/26) |

## What We Shipped

* Swap quotes in the TypeScript SDK and the commons crate that match the program's fee split in every case
* Pool builders that reject an `OnlyY` pool the program would reject, before a transaction is built

## What To Do

| Integrators | What To Do |
| - | - |
| Swap routers | Upgrade to `0.1.1` of the TypeScript SDK or the commons crate. A `0.1.0` quote can differ from `EvtSwap` by a few atoms in the limit order, protocol, host and partner fees when a swap step's limit order fill rounds down to zero output. The quoted input and output amounts are not affected. |
| Launchpads and pool creators | Upgrade to `0.1.1`. On an `OnlyY` pool whose token Y is not wrapped SOL or USDC, pass `tokenBadgeY`; the builders now throw `InvalidTokenBadge` when it is missing. |
| Rust integrators | Pin `dlmm-pro-commons` to commit `6c8ab97c3451f6801bce623a887e9add80b78d4e`. |

No function signatures changed, so `0.1.1` is a drop-in upgrade from `0.1.0`.

## TypeScript SDK: `@meteora-ag/dlmm-pro-sdk` `0.1.1`

[SDK PR #26](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/26)

> [!TIP]
>
> Superseded by [`@meteora-ag/dlmm-pro-sdk@0.1.2`](https://www.npmjs.com/package/@meteora-ag/dlmm-pro-sdk/v/0.1.2). Use the latest release.

### Fixed

* `quoteExactIn` now gives the protocol the whole limit order fee of a swap step whose limit order fill rounds down to zero output, as dlmm-pro 0.1.0 does.
* `initializePoolWithStaticConfig`, `initializePoolWithDynamicConfig` and `initializeLaunchPool` now throw `InvalidTokenBadge` for an `OnlyY` pool when token Y is not wrapped SOL or USDC and no `tokenBadgeY` is passed, instead of building a transaction the program rejects.

### Changed

* Rebuilt the LiteSVM test fixture `tests/fixtures/dlmm_pro.so` from dlmm-pro 0.1.0.

## Commons: `dlmm-pro-commons` `0.1.1`

[Commons PR #26](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/26), commit `6c8ab97c3451f6801bce623a887e9add80b78d4e`

### Fixed

* `quote_exact_in()` now gives the protocol the whole limit order fee of a swap step whose limit order fill rounds down to zero output, as dlmm-pro 0.1.0 does.

### Changed

* Pinned to dlmm-pro 0.1.0, the release deployed on mainnet. `math/` now matches it, which adds a zero check to `down_scale_ceil()`.

**dlmm\_pro 0.1.0**

First release

> [!WARNING]
>
> DLMM Pro is in beta and is subject to breaking changes. Pin the SDK version you integrate against and check this page before upgrading.

## Release Summary

| Component | Version | PR |
| - | - | - |
| Program | `0.1.0` | - |
| TypeScript SDK | `0.1.0` | [dlmm-pro-sdk #16](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/16) |
| Commons | `0.1.0` | [dlmm-pro-sdk #17](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/17) |

## What We Shipped

* The DLMM Pro program on mainnet and devnet
* The TypeScript SDK on npm
* The `dlmm-pro-commons` Rust crate for aggregators

## What To Do

| Integrators | What To Do |
| - | - |
| Swap routers | Quote with `quote_exact_in` and `tick_arrays_for_swap` from `dlmm-pro-commons`, or `quoteExactIn` in the TypeScript SDK. Pass the tick arrays in traversal order, the bitmap extension when the pool has one, and any Token 2022 transfer hook accounts. |
| Trading terminals | Index pools under the program ID. Pool accounts have a dynamic tail, so decode them with `DynamicPool` or `client.state.fetchPoolWithExtensions`, not a plain layout decode. |
| Partners | Install `@meteora-ag/dlmm-pro-sdk` and start from the [getting started guide](https://docs.meteora.ag/developer-guides/dlmm-pro/typescript-sdk/getting-started.md). |

## Program: `dlmm_pro` `0.1.0`

Program ID (mainnet and devnet): `dPro1D5wiqnGMH8vMDG23jh35btTHoWdyqXjqkqxe8n`

* First version

## TypeScript SDK: `@meteora-ag/dlmm-pro-sdk` `0.1.0`

[SDK PR #16](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/16)

> [!TIP]
>
> Superseded by [`@meteora-ag/dlmm-pro-sdk@0.1.2`](https://www.npmjs.com/package/@meteora-ag/dlmm-pro-sdk/v/0.1.2). Use the latest release.

### Added

* Added `DlmmProClient` with `pool`, `position`, `limitOrder`, `reward` and `state` services for DLMM Pro release 0.1.0.
* Added pool functions `swap`, `initializePoolWithStaticConfig`, `initializePoolWithDynamicConfig`, `initializeLaunchPool`, `initializeTickArray`, `initializeTickBitmapExtension`, `increaseOracleLength` and `claimPartnerFee`.
* Added function `quoteExactIn` to quote an exact in swap. It covers dynamic fee, limit order liquidity, collect fee mode and Token 2022 transfer fee, and returns the tick arrays the swap needs.
* Added position functions `openPosition`, `addLiquidity`, `addLiquidityByWeight`, `addLiquidityImbalance`, `removeLiquidity`, `removeLiquidityByBps`, `claimFee`, `expandPosition`, `removePosition`, `closePosition`, `lockPermanentPosition`, `lockVestingPosition`, `refreshFeesAndRewards` and `updatePositionDelegatePermission`.
* Added function `getClaimableFees` to get the fees a position can claim, and `compoundFees` to claim fees and add them back to the position in one transaction.
* Added limit order functions `openLimitOrder`, `cancelLimitOrder`, `closeLimitOrder` and `updateLimitOrderDelegatePermission`.
* Added reward functions `initializeReward`, `updateRewardAuthority`, `setRewardEmission`, `claimReward` and `withdrawIneligibleRewards`.
* Added function `buildLiquidityShape` to build Spot, Curve, BidAsk or custom liquidity shapes, with `multiplierFromAmounts`, `encodeAddLiquidityByWeight`, `limitOrderTicksFromShape` and `relativeTickFromSlippage` to turn a shape into deposit or limit order parameters.
* Added base fee and activation helpers for pool creation: `encodeFixedBaseFeeData`, `encodeTimeSchedulerBaseFeeData`, `encodeMarketCapSchedulerBaseFeeData`, `openActivationParameters`, `bondingCurveActivationParameters` and `timeBasedActivationParameters`.
* Added base fee builders that take fees in basis points: `fixedBaseFeeParameters`, `timeSchedulerBaseFeeParameters` and `marketCapSchedulerBaseFeeParameters`, with `baseFeeParameters` to pick one by `baseFeeMode` and `bpsToFeeNumerator`.
* Added `getDynamicFeeParams` to build a pool's dynamic fee from a base fee in basis points, capping the variable fee at 20% of that fee.
* Added PDA, tick, liquidity and account decoding helpers.
* Builders resolve Token 2022 transfer hook accounts, tick arrays and the tick array bitmap extension when they are not passed in.
* Exported the DLMM Pro and access registry IDLs, also available as `@meteora-ag/dlmm-pro-sdk/idl/dlmm-pro` and `@meteora-ag/dlmm-pro-sdk/idl/access-registry`.

## Commons: `dlmm-pro-commons` `0.1.0`

[Commons PR #17](https://github.com/MeteoraAg/dlmm-pro-sdk/pull/17)

### Added

* Added `dlmm-pro-commons` crate for DLMM Pro release 0.1.0. It is not published to crates.io, depend on it from git.
* Added `declare_program!(dlmm_pro)` types and instruction structs, generated from the same IDL as the TypeScript SDK.
* Added `DynamicPool`, `DynamicTickArray`, `DynamicPositionArray`, `DynamicLimitOrder` and `DynamicOracle` to support parsing on accounts with dynamic data.
* Added `quote_exact_in()` to quote an exact in swap, and `tick_arrays_for_swap()` to get the tick arrays a swap needs.
* Added `tick_arrays_for_tick_ids()` to get the tick arrays for position and limit order instructions.
* Added Token 2022 transfer fee helpers and `get_extra_account_metas_for_transfer_hook()`.
* Added `claimable_fees()` and `claimable_rewards()` to get the fees and rewards a position can claim, and `get_amounts_from_liquidity()` to get position amounts.
* Added PDA helpers, program constants and `PoolError`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.