> For the complete documentation index, see [llms.txt](https://pangeaswap.gitbook.io/pangeaswap/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://pangeaswap.gitbook.io/pangeaswap/developers/interacting-with-the-protocol/undefined-3.md).

# 포지션 생성하기 (유동성 추가)

판게아의 풀에 포지션을 새로 생성하거나 이미 존재하는 포지션에 유동성을 추가로 예치하는 예제입니다.

```typescript
import {ethers} from "ethers";
import {BigNumber} from "@ethersproject/bignumber";
import {
  ConcentratedLiquidityPool__factory,
  ConcentratedLiquidityPoolManager__factory,
  ERC20__factory
} from "./types";

/// concentrated Liquidity Pool Manager의 주소 (네트워크 별로 맞추어 지정)
const poolManagerAddress = "0xEd52BD01b0608a6B6d4f4E03aFfCe16c1FF19c23";

/// web3 Provider (metamask provider / jsonRPC provider 등)
const provider = ethers.getDefaultProvider();

// 신규 포지션 생성하기
async function createPosition(
    poolAddress:string,
    lowerTick:number,  // 가격 구간의 하방 선
    upperTick:number,  // 가격 구간의 상방 선
    amount0Desired:BigNumber, // 넣고자 하는 token0 양 (일부 덜 예치될 수 있습니다.)
    amount1Desired:BigNumber  // 넣고자 하는 token1 양 (일부 덜 예치될 수 있습니다.)
) {
  const pool = await ConcentratedLiquidityPool__factory.connect(poolAddress, provider);
  const token0 = await ERC20__factory.connect(await pool.token0(), provider);
  const token1 = await ERC20__factory.connect(await pool.token1(), provider);

  const poolManager = await ConcentratedLiquidityPoolManager__factory.connect(poolManagerAddress, provider);
  // first, approve
  await (await token0.approve(poolManager.address,amount0Desired)).wait();
  await (await token1.approve(poolManager.address, amount1Desired)).wait();

  // second, mint postion
  const tx = await poolManager.mint(
      poolAddress,
      0, // lowerOld를 지정하지 않는 경우, 자동으로 탐색 후 넣습니다.
      lowerTick,
      0, // upperOld를 지정하지 않는 경우, 자동으로 탐색 후 넣습니다.
      upperTick,
      amount0Desired,
      amount1Desired,
      0,
      0 // positionId = 0 이면, 새로 생성, 아니면 해당 positionId에 추가하기
  );
  await tx.wait();
}
```


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://pangeaswap.gitbook.io/pangeaswap/developers/interacting-with-the-protocol/undefined-3.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
