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

# 개요

> 적합한 ChainStream SDK를 선택하세요

## 공식 SDK

ChainStream은 여러 언어로 공식 SDK를 제공하며, 일반적인 API 작업을 래핑하여 더 나은 개발 경험을 제공합니다.

<CardGroup cols={2}>
  <Card title="TypeScript" icon="js" href="/ko/sdks/typescript">
    Node.js 및 브라우저 애플리케이션용
  </Card>

  <Card title="Python" icon="python" href="/ko/sdks/python">
    데이터 분석 및 백엔드 서비스용
  </Card>

  <Card title="Go" icon="golang" href="/ko/sdks/go">
    고성능 백엔드 서비스용
  </Card>

  <Card title="Rust" icon="rust" href="/ko/sdks/rust">
    시스템 프로그래밍 및 성능이 중요한 애플리케이션용
  </Card>
</CardGroup>

## SDK 기능

모든 SDK가 제공하는 기능:

* **REST API 클라이언트**: 모든 ChainStream 데이터 API 호출
* **WebSocket 클라이언트**: 실시간 데이터 스트림 구독
* **자동 인증**: 자동 토큰 관리
* **타입 안전성**: 완전한 타입 정의 (TypeScript, Go, Rust)

## 설치

<Tabs>
  <Tab title="TypeScript">
    ```bash theme={null}
    npm install @chainstream-io/sdk
    ```
  </Tab>

  <Tab title="Python">
    ```bash theme={null}
    pip install chainstream-sdk
    ```
  </Tab>

  <Tab title="Go">
    ```bash theme={null}
    go get github.com/chainstream-io/chainstream-go-sdk
    ```
  </Tab>

  <Tab title="Rust">
    ```toml theme={null}
    # Cargo.toml에 추가
    [dependencies]
    chainstream-sdk = "0.1"
    ```
  </Tab>
</Tabs>

## 빠른 비교

<Tabs>
  <Tab title="TypeScript">
    ```typescript theme={null}
    import { ChainStreamClient } from '@chainstream-io/sdk';

    const client = new ChainStreamClient('YOUR_ACCESS_TOKEN');

    // REST API 호출
    const token = await client.token.getToken('sol', 'TOKEN_ADDRESS');

    // WebSocket 구독
    client.stream.subscribeTokenCandles({
      chain: 'sol',
      tokenAddress: 'TOKEN_ADDRESS',
      resolution: Resolution['1s'],
      callback: (data) => console.log(data)
    });
    ```
  </Tab>

  <Tab title="Python">
    ```python theme={null}
    from chainstream import ChainStreamClient
    from chainstream.stream import Resolution

    client = ChainStreamClient(access_token='YOUR_ACCESS_TOKEN')

    # REST API 호출
    token = await client.token.get_metadata('sol', 'TOKEN_ADDRESS')

    # WebSocket 구독
    await client.stream.subscribe_token_candles(
        chain='sol',
        token_address='TOKEN_ADDRESS',
        resolution=Resolution.S1,
        callback=lambda data: print(data)
    )
    ```
  </Tab>

  <Tab title="Go">
    ```go theme={null}
    import chainstream "github.com/chainstream-io/chainstream-go-sdk"

    client, _ := chainstream.NewChainStreamClient(accessToken, &chainstream.ChainStreamClientOptions{})

    // REST API 호출
    resp, _ := client.Token.GetToken(ctx, "sol", "TOKEN_ADDRESS")

    // WebSocket 구독
    client.Stream.SubscribeTokenCandles("sol", "TOKEN_ADDRESS", token.N1s, func(data stream.TokenCandle) {
        fmt.Println(data)
    }, "")
    ```
  </Tab>

  <Tab title="Rust">
    ```rust theme={null}
    use chainstream_sdk::{ChainStreamClient, stream::{Resolution, TokenCandle}};

    let client = ChainStreamClient::new("YOUR_ACCESS_TOKEN", None);

    // WebSocket 구독
    client.stream.subscribe_token_candles(
        "sol",
        "TOKEN_ADDRESS",
        Resolution::X1s,
        |candle: TokenCandle| {
            println!("{:?}", candle);
        },
        None,
    ).await?;
    ```
  </Tab>
</Tabs>

## SDK vs 직접 API

| 기능        | SDK             | 직접 API     |
| --------- | --------------- | ---------- |
| 타입 안전성    | 있음 (TS/Go/Rust) | 없음         |
| 인증 관리     | 자동              | 수동         |
| 에러 핸들링    | 래핑됨             | 원시 HTTP 에러 |
| WebSocket | 내장              | 수동 구현      |
| 코드량       | 적음              | 많음         |
| 유연성       | 보통              | 높음         |

## 다음 단계

<CardGroup cols={2}>
  <Card title="TypeScript SDK" icon="js" href="/ko/sdks/typescript">
    TypeScript 문서 보기
  </Card>

  <Card title="Python SDK" icon="python" href="/ko/sdks/python">
    Python 문서 보기
  </Card>

  <Card title="Go SDK" icon="golang" href="/ko/sdks/go">
    Go 문서 보기
  </Card>

  <Card title="Rust SDK" icon="rust" href="/ko/sdks/rust">
    Rust 문서 보기
  </Card>
</CardGroup>
