# 거래소 지원
모든 내장 어댑터는 인증 정보 없이 공개 시장 데이터를 제공합니다. 공통 작업은
`Client`, 거래소 전용 작업은 `Client::adapter()`를 통해 호출합니다.
## 지원 상태
- [x] Upbit Spot: 한국, 싱가포르, 인도네시아, 태국
- [x] Bithumb Spot
- [x] Binance Spot
- [x] Binance USD-M 무기한 선물
- [x] Hyperliquid Spot과 무기한 선물
Binance testnet 생성자는 제공하지 않습니다.
## 생성자
- Upbit 한국: `UpbitAdapter::new()`
- Upbit 지역: `UpbitAdapter::with_region(region)`
- Bithumb: `BithumbAdapter::new()`
- Binance Spot: `BinanceAdapter::spot()`
- Binance USD-M: `BinanceAdapter::usd_m_futures()`
- Hyperliquid mainnet: `HyperliquidAdapter::new()`
- Hyperliquid testnet: `HyperliquidAdapter::testnet()`
`Client::new(adapter)` 전에 인증 정보를 추가합니다.
- Upbit, Bithumb: `.with_credentials(access_key, secret_key)`
- Binance: `.with_credentials(api_key, secret_key)`
- Hyperliquid: `.with_wallet(address, private_key)`
`supports(feature) == false`는 인증 정보가 없거나 작업이 구조적으로 미지원이라는
뜻입니다. 호출은 각각 `Error::Auth`, `Error::Unsupported`를 반환합니다.
## 경계
- Upbit 지역은 host, 상장, 호가, 인증 정보가 분리됩니다.
- Bithumb은 `Feature::CandleStream`을 지원하지 않으며 `open_orders()`는 거래소 한 페이지를 읽습니다.
- Binance Spot과 USD-M은 어댑터와 상태가 분리됩니다.
- Binance USD-M `Subscription` 하나가 여러 WebSocket을 병합할 수 있습니다.
- Hyperliquid `positions_on(spot)`은 `Ok(vec![])`를 반환합니다.
## 레퍼런스
- [Upbit](providers/upbit.ko.md) ([English](providers/upbit.md))
- [Bithumb](providers/bithumb.ko.md) ([English](providers/bithumb.md))
- [Binance](providers/binance.ko.md) ([English](providers/binance.md))
- [Hyperliquid](providers/hyperliquid.ko.md) ([English](providers/hyperliquid.md))