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

# WIP Client

> DATA Foundation 내에서 WIP(Wrapped IP) 토큰의 래핑/언래핑을 처리하는 데 사용됩니다.

## WipClient

### Methods

* deposit
* withdraw
* approve
* balanceOf
* transfer
* transferFrom

### deposit

선택한 양의 IP를 WIP로 래핑합니다. WIP는 IP를 전송한 지갑에 입금됩니다.

| Method    | Type                        |
| --------- | --------------------------- |
| `deposit` | `(request: DepositRequest)` |

Parameters:

* `request.amount`: 입금할 양입니다.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { parseEther } from "viem";

  const response = await client.wipClient.deposit({
    amount: parseEther("10"), // 10 DATA tokens
  });
  ```

  ```typescript Request Type theme={null}
  export type DepositRequest = {
    amount: TokenAmountInput;
  };
  ```
</CodeGroup>

### withdraw

선택한 양의 WIP를 IP로 언래핑합니다.

| Method     | Type                         |
| ---------- | ---------------------------- |
| `withdraw` | `(request: WithdrawRequest)` |

Parameters:

* `request.amount`: 출금할 양입니다.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { parseEther } from "viem";

  const response = await client.wipClient.withdraw({
    amount: parseEther("5"), // 5 WIP tokens
  });
  ```

  ```typescript Request Type theme={null}
  export type WithdrawRequest = {
    amount: TokenAmountInput;
  };
  ```
</CodeGroup>

### approve

지갑의 WIP 잔액을 사용할 수 있도록 spender를 승인합니다.

| Method    | Type                        |
| --------- | --------------------------- |
| `approve` | `(request: ApproveRequest)` |

Parameters:

* `request.amount`: 승인할 WIP 토큰의 양입니다.
* `request.spender`: WIP 토큰을 사용할 주소입니다.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { parseEther } from "viem";

  const response = await client.wipClient.approve({
    spender: "0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba",
    amount: parseEther("20"), // 20 WIP tokens
  });
  ```

  ```typescript Request Type theme={null}
  export type ApproveRequest = {
    spender: Address;
    amount: TokenAmountInput;
  };
  ```
</CodeGroup>

### balanceOf

주소의 WIP 잔액을 반환합니다.

| Method      | Type                                 |
| ----------- | ------------------------------------ |
| `balanceOf` | `(addr: Address) => Promise<bigint>` |

Parameters:

* `addr`: 잔액을 확인할 주소입니다.

### transfer

수신자 `to`에게 `amount`만큼의 WIP를 전송합니다.

| Method     | Type                         |
| ---------- | ---------------------------- |
| `transfer` | `(request: TransferRequest)` |

Parameters:

* `request.to`: 전송 대상입니다.
* `request.amount`: 전송할 양입니다.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { parseEther } from "viem";

  const response = await client.wipClient.transfer({
    to: "0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba",
    amount: parseEther("3"), // 3 WIP tokens
  });
  ```

  ```typescript Request Type theme={null}
  export type TransferRequest = {
    to: Address;
    amount: TokenAmountInput;
  };
  ```
</CodeGroup>

### transferFrom

`from`에서 수신자 `to`에게 `amount`만큼의 WIP를 전송합니다.

| Method         | Type                             |
| -------------- | -------------------------------- |
| `transferFrom` | `(request: TransferFromRequest)` |

Parameters:

* `request.to`: 전송 대상입니다.
* `request.amount`: 전송할 양입니다.
* `request.from`: 전송 출발 주소입니다.

<CodeGroup>
  ```typescript TypeScript theme={null}
  import { parseEther } from "viem";

  const response = await client.wipClient.transferFrom({
    to: "0xC92EC2f4c86458AFee7DD9EB5d8c57920BfCD0Ba",
    amount: parseEther("2"), // 2 WIP tokens
    from: "0x6B86B39F03558A8a4E9252d73F2bDeBfBedf5b68",
  });
  ```

  ```typescript Request Type theme={null}
  export type TransferFromRequest = {
    to: Address;
    amount: TokenAmountInput;
    from: Address;
  };
  ```
</CodeGroup>
