export interface Response<T> {
    status: number;
    remainingReq: {
        group: string;
        min: number;
        sec: number;
    };
    data: T;
}
/**
 * 마켓 코드 조회
 * https://docs.upbit.com/reference#%EB%A7%88%EC%BC%93-%EC%BD%94%EB%93%9C-%EC%A1%B0%ED%9A%8C
**/
export interface MarketType {
    market: string;
    korean_name: string;
    english_name: string;
    market_warning?: string;
}
/**
 * 캔들 타입
 * https://docs.upbit.com/reference#%EC%8B%9C%EC%84%B8-%EC%BA%94%EB%93%A4-%EC%A1%B0%ED%9A%8C
**/
export interface CandleType {
    market: string;
    candle_date_time_utc: string;
    candle_date_time_kst: string;
    opening_price: number;
    high_price: number;
    low_price: number;
    trade_price: number;
    timestamp: number;
    candle_acc_trade_price: number;
    candle_acc_trade_volume: number;
}
export interface CandleMinuteType extends CandleType {
    unit: number;
}
export interface CandleDayType extends CandleType {
    prev_closing_price: number;
    change_price: number;
    change_rate: number;
    converted_trade_price?: number;
}
export interface CandleWeekType extends CandleType {
    first_day_of_period: string;
}
export interface CandleMonthType extends CandleType {
    first_day_of_period: string;
}
export interface TradeTickType {
    market: string;
    trade_date_utc: string;
    trade_time_utc: string;
    timestamp: number;
    trade_price: number;
    trade_volume: number;
    prev_closing_price: number;
    change_price: number;
    ask_bid: 'ASK' | 'BID';
    sequential_id: number;
}
export interface TickerType {
    market: string;
    trade_date: string;
    trade_time: string;
    trade_date_kst: string;
    trade_time_kst: string;
    trade_timestamp: string;
    opening_price: number;
    high_price: number;
    low_price: number;
    trade_price: number;
    prev_closing_price: number;
    change: 'RISE' | 'EVEN' | 'FALL';
    change_price: number;
    change_rate: number;
    signed_change_price: number;
    signed_change_rate: number;
    trade_volume: number;
    acc_trade_price: number;
    acc_trade_price_24h: number;
    acc_trade_volume: number;
    acc_trade_volume_24h: number;
    highest_52_week_price: number;
    highest_52_week_date: string;
    lowest_52_week_price: number;
    lowest_52_week_date: string;
    timestamp: number;
}
export interface OrderbookType {
    market: string;
    timestamp: number;
    total_ask_size: number;
    total_bid_size: number;
    orderbook_units: {
        ask_price: number;
        bid_price: number;
        ask_size: number;
        bid_size: number;
    }[];
}
export interface AccountType {
    currency: string;
    balance: number;
    locked: number;
    avg_buy_price: number;
    avg_buy_price_modified: boolean;
    unit_currency: string;
}
/**
 * {
 *   // 매수 수수료 비율	NumberString
 *   "bid_fee": "0.0005",
 *   // 매도 수수료 비율	NumberString
 *   "ask_fee": "0.0005",
 *   "maker_bid_fee": "0.0005",
 *   "maker_ask_fee": "0.0005",
 *   // 마켓에 대한 정보	Object
 *   "market": {
 *     // 마켓의 유일 키	String
 *     "id": "KRW-BTC",
 *     // 마켓 이름	String
 *     "name": "BTC/KRW",
 *     // 지원 주문 방식	Array[String]
 *     "order_types": [
 *       "limit"
 *     ],
 *     // 지원 주문 종류	Array[String]
 *     "order_sides": [
 *       "ask",
 *       "bid"
 *     ],
 *     // 매수 시 제약사항	Object
 *     "bid": {
 *       // 화폐를 의미하는 영문 대문자 코드	String
 *       "currency": "KRW",
 *       // 주문금액 단위	String
 *       "price_unit": null,
 *       // 최소 매도/매수 금액	Number
 *       "min_total": "5000.0"
 *     },
 *     // 매도 시 제약사항	Object
 *     "ask": {
 *       // 화폐를 의미하는 영문 대문자 코드	String
 *       "currency": "BTC",
 *       // 주문금액 단위	String
 *       "price_unit": null,
 *       // 최소 매도/매수 금액	Number
 *       "min_total": "5000.0"
 *     },
 *     // 최소 매도/매수 금액	Number
 *     "max_total": "1000000000.0",
 *     // 마켓 운영 상태	String
 *     "state": "active"
 *   },
 *   // 매수 시 사용하는 화폐의 계좌 상태	Object
 *   "bid_account": {
 *     // 화폐를 의미하는 영문 대문자 코드	String
 *     "currency": "KRW",
 *     // 주문가능 금액/수량	NumberString
 *     "balance": "132568.11667565",
 *     // 주문 중 묶여있는 금액/수량	NumberString
 *     "locked": "0.0",
 *     // 매수평균가	NumberString
 *     "avg_buy_price": "0",
 *     // 매수평균가 수정 여부	Boolean
 *     "avg_buy_price_modified": true,
 *     // 평단가 기준 화폐	String
 *     "unit_currency": "KRW"
 *   },
 *   // 매도 시 사용하는 화폐의 계좌 상태	Object
 *   "ask_account": {
 *     // 화폐를 의미하는 영문 대문자 코드	String
 *     "currency": "BTC",
 *     // 주문가능 금액/수량	NumberString
 *     "balance": "0.0",
 *     // 주문 중 묶여있는 금액/수량	NumberString
 *     "locked": "0.0",
 *     // 매수평균가	NumberString
 *     "avg_buy_price": "60887000",
 *     // 매수평균가 수정 여부	Boolean
 *     "avg_buy_price_modified": false,
 *     // 평단가 기준 화폐	String
 *     "unit_currency": "KRW"
 *   }
 * }
**/
export interface OrderChanceType {
    bid_fee: number;
    ask_fee: number;
    maker_bid_fee: number;
    maker_ask_fee: number;
    market: {
        id: string;
        name: string;
        order_types: string[];
        order_sides: string[];
        bid: {
            currency: string;
            min_total: number;
        };
        ask: {
            currency: string;
            min_total: number;
        };
        max_total: number;
        state: string;
    };
    bid_account: {
        currency: string;
        balance: number;
        locked: number;
        avg_buy_price: number;
        avg_buy_price_modified: boolean;
        unit_currency: string;
    };
    ask_account: {
        currency: string;
        balance: number;
        locked: number;
        avg_buy_price: number;
        avg_buy_price_modified: boolean;
        unit_currency: string;
    };
}
export interface OrderType {
    uuid: string;
    side: 'bid' | 'ask';
    ord_type: 'limit' | 'price' | 'market';
    price: number;
    state: 'wait' | 'watch' | 'done' | 'cancel';
    market: string;
    created_at: string;
    volume: number;
    remaining_volume: number;
    reserved_fee: number;
    remaining_fee: number;
    paid_fee: number;
    locked: number;
    executed_volume: number;
    trades_count: number;
    identifier?: string;
}
export interface OrderDetailType extends OrderType {
    trades: [
        {
            market: string;
            uuid: string;
            price: number;
            volume: number;
            funds: number;
            trend: 'up' | 'down';
            side: 'bid' | 'ask';
            created_at: string;
        }
    ];
}
/**
 * 캔들 Params
 * https://docs.upbit.com/reference#%EC%8B%9C%EC%84%B8-%EC%BA%94%EB%93%A4-%EC%A1%B0%ED%9A%8C
**/
export interface CandleParam {
    market: string;
    to?: string;
    count?: number;
}
/**
 * 캔들 Params Extensions
 * https://docs.upbit.com/reference#%EC%9D%BCday-%EC%BA%94%EB%93%A4-1
**/
export interface CandleParamEx extends CandleParam {
    convertingPriceUnit?: string;
}
/**
 * 체결 Params
 * https://docs.upbit.com/reference#%EC%B5%9C%EA%B7%BC-%EC%B2%B4%EA%B2%B0-%EB%82%B4%EC%97%AD
**/
export interface TradeTickParam {
    market: string;
    to?: string;
    count?: number;
    cursor?: number;
    daysAgo?: number;
}
export interface OrderDetailParam {
    uuid?: string;
    identifier?: string;
}
export interface OrderListParam {
    market?: string;
    uuids?: string[];
    identifiers?: string[];
    state?: 'wait' | 'watch' | 'done' | 'cancel';
    states?: ['wait' | 'watch' | 'done' | 'cancel'];
    page?: number;
    order_by?: 'desc' | 'asc';
}
export interface OrderLimitParam {
    market: string;
    ord_type: 'limit';
    side: 'bid' | 'ask';
    volume: number;
    price: number;
    identifier?: string;
}
export interface OrderPriceParam {
    market: string;
    ord_type: 'price';
    side: 'bid';
    price: number;
    identifier?: string;
}
export interface OrderMarketParam {
    market: string;
    ord_type: 'market';
    side: 'ask';
    volume: number;
    identifier?: string;
}
export interface CancelParam {
    uuid?: string;
    identifier?: string;
}
